mirror of
https://github.com/Security-Onion-Solutions/securityonion.git
synced 2026-06-14 14:18:40 +02:00
Mark time column NOT NULL before partman.create_parent
pg_partman 5.x requires the control column to be NOT NULL; Telegraf's generated columns are nullable by default.
This commit is contained in:
@@ -110,13 +110,13 @@
|
||||
# Every metric table is a daily time-range partitioned parent managed by
|
||||
# pg_partman. Retention drops old partitions instead of row-by-row DELETEs.
|
||||
{% raw %}
|
||||
# pg_partman.create_parent() splits p_parent_table on '.' and looks the
|
||||
# parts up as raw identifiers, so the string literal must be
|
||||
# 'schema.name', NOT '"schema"."name"'. {{ .table|quoteLiteral }} would
|
||||
# emit the double-quoted form and partman fails with "Unable to find
|
||||
# given parent table in system catalogs."
|
||||
# pg_partman 5.x requires the control column (time) to be NOT NULL, so
|
||||
# ALTER it before create_parent(). And create_parent() splits
|
||||
# p_parent_table on '.' to look up raw identifiers, so the literal must
|
||||
# be 'schema.name' (not '"schema"."name"' as .table|quoteLiteral emits).
|
||||
create_templates = [
|
||||
'''CREATE TABLE {{ .table }} ({{ .columns }}) PARTITION BY RANGE ("time")''',
|
||||
'''ALTER TABLE {{ .table }} ALTER COLUMN "time" SET NOT NULL''',
|
||||
'''SELECT partman.create_parent(p_parent_table := {{ printf "%s.%s" .table.Schema .table.Name | quoteLiteral }}, p_control := 'time', p_type := 'range', p_interval := '1 day', p_premake := 3)'''
|
||||
]
|
||||
{% endraw %}
|
||||
|
||||
Reference in New Issue
Block a user