Files
zeekayandGitHub 940df58087 debrand: rename physical ClickHouse signoz_* schema -> o11y_* (writer side) (#7)
Rename ONLY the physical ClickHouse DATABASE/TABLE identifiers the
schema-migrator CREATEs and the exporters WRITE, matching the o11y read
plane + the data-preserving RENAME migration (hanzoai/o11y#28):

  databases: signoz_{traces,metrics,logs,metadata,analytics,meter}
             -> o11y_{traces,metrics,logs,metadata,analytics,meter}
  tables:    (distributed_)signoz_{index_v3,index_v2,error_index_v2,spans}
             -> (distributed_)o11y_{index_v3,index_v2,error_index_v2,spans}

Word-boundary anchored (\bsignoz_<db>\b) so wire contracts are untouched:
spanmetrics/usage METRIC names (signoz_calls_total, signoz_latency,
signoz_*_count/_bytes, signoz_metadata_exporter_json_logs_processed,
signoz_normalize_operator_logs_processed), signoz.* resource ATTRIBUTES
(signoz.gen_ai.*), OTel component TYPE strings (signozclickhousemetrics,
signozclickhousemeter, signozlogspipeline, signozllmpricing), and all
github.com/SigNoz/* deps + LICENSE/NOTICE attribution all preserved.

Coordinated cutover: deploy this collector, run o11y#28 RENAME migration,
then deploy o11y + cloud readers — together, or telemetry blackholes.

go build ./... = 0. schema-migrator tests green. Two pre-existing test
failures (flaky TestExporterPushTracesData usage-collector timing;
o11ydatastoremeter go.signoz.io scope-name debrand) reproduce identically
on unmodified v0.144.7.
2026-07-09 13:08:10 -07:00

979 lines
29 KiB
Go

package schemamigrator
var MetricsMigrations = []SchemaMigrationRecord{
{
MigrationID: 1000,
UpItems: []Operation{
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "time_series_v4",
Column: Column{
Name: "attrs",
Type: MapColumnType{
KeyType: LowCardinalityColumnType{ColumnTypeString},
ValueType: ColumnTypeString,
},
Codec: "ZSTD(1)",
Default: "map()",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "time_series_v4",
Column: Column{
Name: "scope_attrs",
Type: MapColumnType{
KeyType: LowCardinalityColumnType{ColumnTypeString},
ValueType: ColumnTypeString,
},
Codec: "ZSTD(1)",
Default: "map()",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "time_series_v4",
Column: Column{
Name: "resource_attrs",
Type: MapColumnType{
KeyType: LowCardinalityColumnType{ColumnTypeString},
ValueType: ColumnTypeString,
},
Codec: "ZSTD(1)",
Default: "map()",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "distributed_time_series_v4",
Column: Column{
Name: "attrs",
Type: MapColumnType{
KeyType: LowCardinalityColumnType{ColumnTypeString},
ValueType: ColumnTypeString,
},
Codec: "ZSTD(1)",
Default: "map()",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "distributed_time_series_v4",
Column: Column{
Name: "scope_attrs",
Type: MapColumnType{
KeyType: LowCardinalityColumnType{ColumnTypeString},
ValueType: ColumnTypeString,
},
Codec: "ZSTD(1)",
Default: "map()",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "distributed_time_series_v4",
Column: Column{
Name: "resource_attrs",
Type: MapColumnType{
KeyType: LowCardinalityColumnType{ColumnTypeString},
ValueType: ColumnTypeString,
},
Codec: "ZSTD(1)",
Default: "map()",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "time_series_v4_6hrs",
Column: Column{
Name: "attrs",
Type: MapColumnType{
KeyType: LowCardinalityColumnType{ColumnTypeString},
ValueType: ColumnTypeString,
},
Codec: "ZSTD(1)",
Default: "map()",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "time_series_v4_6hrs",
Column: Column{
Name: "scope_attrs",
Type: MapColumnType{
KeyType: LowCardinalityColumnType{ColumnTypeString},
ValueType: ColumnTypeString,
},
Codec: "ZSTD(1)",
Default: "map()",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "time_series_v4_6hrs",
Column: Column{
Name: "resource_attrs",
Type: MapColumnType{
KeyType: LowCardinalityColumnType{ColumnTypeString},
ValueType: ColumnTypeString,
},
Codec: "ZSTD(1)",
Default: "map()",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "distributed_time_series_v4_6hrs",
Column: Column{
Name: "attrs",
Type: MapColumnType{
KeyType: LowCardinalityColumnType{ColumnTypeString},
ValueType: ColumnTypeString,
},
Codec: "ZSTD(1)",
Default: "map()",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "distributed_time_series_v4_6hrs",
Column: Column{
Name: "scope_attrs",
Type: MapColumnType{
KeyType: LowCardinalityColumnType{ColumnTypeString},
ValueType: ColumnTypeString,
},
Codec: "ZSTD(1)",
Default: "map()",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "distributed_time_series_v4_6hrs",
Column: Column{
Name: "resource_attrs",
Type: MapColumnType{
KeyType: LowCardinalityColumnType{ColumnTypeString},
ValueType: ColumnTypeString,
},
Codec: "ZSTD(1)",
Default: "map()",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "time_series_v4_1day",
Column: Column{
Name: "attrs",
Type: MapColumnType{
KeyType: LowCardinalityColumnType{ColumnTypeString},
ValueType: ColumnTypeString,
},
Codec: "ZSTD(1)",
Default: "map()",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "time_series_v4_1day",
Column: Column{
Name: "scope_attrs",
Type: MapColumnType{
KeyType: LowCardinalityColumnType{ColumnTypeString},
ValueType: ColumnTypeString,
},
Codec: "ZSTD(1)",
Default: "map()",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "time_series_v4_1day",
Column: Column{
Name: "resource_attrs",
Type: MapColumnType{
KeyType: LowCardinalityColumnType{ColumnTypeString},
ValueType: ColumnTypeString,
},
Codec: "ZSTD(1)",
Default: "map()",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "distributed_time_series_v4_1day",
Column: Column{
Name: "attrs",
Type: MapColumnType{
KeyType: LowCardinalityColumnType{ColumnTypeString},
ValueType: ColumnTypeString,
},
Codec: "ZSTD(1)",
Default: "map()",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "distributed_time_series_v4_1day",
Column: Column{
Name: "scope_attrs",
Type: MapColumnType{
KeyType: LowCardinalityColumnType{ColumnTypeString},
ValueType: ColumnTypeString,
},
Codec: "ZSTD(1)",
Default: "map()",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "distributed_time_series_v4_1day",
Column: Column{
Name: "resource_attrs",
Type: MapColumnType{
KeyType: LowCardinalityColumnType{ColumnTypeString},
ValueType: ColumnTypeString,
},
Codec: "ZSTD(1)",
Default: "map()",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "time_series_v4_1week",
Column: Column{
Name: "attrs",
Type: MapColumnType{
KeyType: LowCardinalityColumnType{ColumnTypeString},
ValueType: ColumnTypeString,
},
Codec: "ZSTD(1)",
Default: "map()",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "time_series_v4_1week",
Column: Column{
Name: "scope_attrs",
Type: MapColumnType{
KeyType: LowCardinalityColumnType{ColumnTypeString},
ValueType: ColumnTypeString,
},
Codec: "ZSTD(1)",
Default: "map()",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "time_series_v4_1week",
Column: Column{
Name: "resource_attrs",
Type: MapColumnType{
KeyType: LowCardinalityColumnType{ColumnTypeString},
ValueType: ColumnTypeString,
},
Codec: "ZSTD(1)",
Default: "map()",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "distributed_time_series_v4_1week",
Column: Column{
Name: "attrs",
Type: MapColumnType{
KeyType: LowCardinalityColumnType{ColumnTypeString},
ValueType: ColumnTypeString,
},
Codec: "ZSTD(1)",
Default: "map()",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "distributed_time_series_v4_1week",
Column: Column{
Name: "scope_attrs",
Type: MapColumnType{
KeyType: LowCardinalityColumnType{ColumnTypeString},
ValueType: ColumnTypeString,
},
Codec: "ZSTD(1)",
Default: "map()",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "distributed_time_series_v4_1week",
Column: Column{
Name: "resource_attrs",
Type: MapColumnType{
KeyType: LowCardinalityColumnType{ColumnTypeString},
ValueType: ColumnTypeString,
},
Codec: "ZSTD(1)",
Default: "map()",
},
},
CreateTableOperation{
Database: "o11y_metrics",
Table: "metadata",
Columns: []Column{
{Name: "temporality", Type: LowCardinalityColumnType{ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "metric_name", Type: LowCardinalityColumnType{ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "description", Type: ColumnTypeString, Codec: "ZSTD(1)"},
{Name: "unit", Type: LowCardinalityColumnType{ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "type", Type: LowCardinalityColumnType{ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "is_monotonic", Type: ColumnTypeBool, Codec: "ZSTD(1)"},
{Name: "attr_name", Type: LowCardinalityColumnType{ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "attr_type", Type: LowCardinalityColumnType{ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "attr_datatype", Type: LowCardinalityColumnType{ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "attr_string_value", Type: ColumnTypeString, Codec: "ZSTD(1)"},
{Name: "first_reported_unix_milli", Type: SimpleAggregateFunction{FunctionName: "min", Arguments: []ColumnType{ColumnTypeUInt64}}, Codec: "ZSTD(1)"},
{Name: "last_reported_unix_milli", Type: SimpleAggregateFunction{FunctionName: "max", Arguments: []ColumnType{ColumnTypeUInt64}}, Codec: "ZSTD(1)"},
},
Engine: AggregatingMergeTree{
MergeTree: MergeTree{
OrderBy: "(temporality, metric_name, attr_name, attr_type, attr_datatype, attr_string_value)",
PartitionBy: "toDate(last_reported_unix_milli / 1000)",
TTL: "toDateTime(last_reported_unix_milli / 1000) + toIntervalSecond(2592000)",
Settings: []TableSetting{
{Name: "ttl_only_drop_parts", Value: "1"},
},
},
},
},
CreateTableOperation{
Database: "o11y_metrics",
Table: "distributed_metadata",
Columns: []Column{
{Name: "temporality", Type: LowCardinalityColumnType{ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "metric_name", Type: LowCardinalityColumnType{ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "description", Type: ColumnTypeString, Codec: "ZSTD(1)"},
{Name: "unit", Type: LowCardinalityColumnType{ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "type", Type: LowCardinalityColumnType{ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "is_monotonic", Type: ColumnTypeBool, Codec: "ZSTD(1)"},
{Name: "attr_name", Type: LowCardinalityColumnType{ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "attr_type", Type: LowCardinalityColumnType{ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "attr_datatype", Type: LowCardinalityColumnType{ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "attr_string_value", Type: ColumnTypeString, Codec: "ZSTD(1)"},
{Name: "first_reported_unix_milli", Type: SimpleAggregateFunction{FunctionName: "min", Arguments: []ColumnType{ColumnTypeUInt64}}, Codec: "ZSTD(1)"},
{Name: "last_reported_unix_milli", Type: SimpleAggregateFunction{FunctionName: "max", Arguments: []ColumnType{ColumnTypeUInt64}}, Codec: "ZSTD(1)"},
},
Engine: Distributed{
Database: "o11y_metrics",
Table: "metadata",
ShardingKey: "rand()",
},
},
CreateMaterializedViewOperation{
Database: "o11y_metrics",
ViewName: "time_series_v4_6hrs_mv_separate_attrs",
DestTable: "time_series_v4_6hrs",
Columns: []Column{
{Name: "env", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "'default'"},
{Name: "temporality", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "'Unspecified'"},
{Name: "metric_name", Type: LowCardinalityColumnType{ColumnTypeString}},
{Name: "description", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "''", Codec: "ZSTD(1)"},
{Name: "unit", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "''", Codec: "ZSTD(1)"},
{Name: "type", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "''", Codec: "ZSTD(1)"},
{Name: "is_monotonic", Type: ColumnTypeBool, Default: "false", Codec: "ZSTD(1)"},
{Name: "fingerprint", Type: ColumnTypeUInt64, Codec: "Delta(8), ZSTD(1)"},
{Name: "unix_milli", Type: ColumnTypeInt64, Codec: "Delta(8), ZSTD(1)"},
{Name: "labels", Type: ColumnTypeString, Codec: "ZSTD(5)"},
{Name: "attrs", Type: MapColumnType{KeyType: LowCardinalityColumnType{ColumnTypeString}, ValueType: ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "scope_attrs", Type: MapColumnType{KeyType: LowCardinalityColumnType{ColumnTypeString}, ValueType: ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "resource_attrs", Type: MapColumnType{KeyType: LowCardinalityColumnType{ColumnTypeString}, ValueType: ColumnTypeString}, Codec: "ZSTD(1)"},
},
Query: `SELECT
env,
temporality,
metric_name,
description,
unit,
type,
is_monotonic,
fingerprint,
floor(unix_milli / 21600000) * 21600000 AS unix_milli,
labels,
attrs,
scope_attrs,
resource_attrs
FROM o11y_metrics.time_series_v4`,
},
CreateMaterializedViewOperation{
Database: "o11y_metrics",
ViewName: "time_series_v4_1day_mv_separate_attrs",
DestTable: "time_series_v4_1day",
Columns: []Column{
{Name: "env", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "'default'"},
{Name: "temporality", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "'Unspecified'"},
{Name: "metric_name", Type: LowCardinalityColumnType{ColumnTypeString}},
{Name: "description", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "''", Codec: "ZSTD(1)"},
{Name: "unit", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "''", Codec: "ZSTD(1)"},
{Name: "type", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "''", Codec: "ZSTD(1)"},
{Name: "is_monotonic", Type: ColumnTypeBool, Default: "false", Codec: "ZSTD(1)"},
{Name: "fingerprint", Type: ColumnTypeUInt64, Codec: "Delta(8), ZSTD(1)"},
{Name: "unix_milli", Type: ColumnTypeInt64, Codec: "Delta(8), ZSTD(1)"},
{Name: "labels", Type: ColumnTypeString, Codec: "ZSTD(5)"},
{Name: "attrs", Type: MapColumnType{KeyType: LowCardinalityColumnType{ColumnTypeString}, ValueType: ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "scope_attrs", Type: MapColumnType{KeyType: LowCardinalityColumnType{ColumnTypeString}, ValueType: ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "resource_attrs", Type: MapColumnType{KeyType: LowCardinalityColumnType{ColumnTypeString}, ValueType: ColumnTypeString}, Codec: "ZSTD(1)"},
},
Query: `SELECT
env,
temporality,
metric_name,
description,
unit,
type,
is_monotonic,
fingerprint,
floor(unix_milli / 86400000) * 86400000 AS unix_milli,
labels,
attrs,
scope_attrs,
resource_attrs
FROM o11y_metrics.time_series_v4_6hrs`,
},
CreateMaterializedViewOperation{
Database: "o11y_metrics",
ViewName: "time_series_v4_1week_mv_separate_attrs",
DestTable: "time_series_v4_1week",
Columns: []Column{
{Name: "env", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "'default'"},
{Name: "temporality", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "'Unspecified'"},
{Name: "metric_name", Type: LowCardinalityColumnType{ColumnTypeString}},
{Name: "description", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "''", Codec: "ZSTD(1)"},
{Name: "unit", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "''", Codec: "ZSTD(1)"},
{Name: "type", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "''", Codec: "ZSTD(1)"},
{Name: "is_monotonic", Type: ColumnTypeBool, Default: "false", Codec: "ZSTD(1)"},
{Name: "fingerprint", Type: ColumnTypeUInt64, Codec: "Delta(8), ZSTD(1)"},
{Name: "unix_milli", Type: ColumnTypeInt64, Codec: "Delta(8), ZSTD(1)"},
{Name: "labels", Type: ColumnTypeString, Codec: "ZSTD(5)"},
{Name: "attrs", Type: MapColumnType{KeyType: LowCardinalityColumnType{ColumnTypeString}, ValueType: ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "scope_attrs", Type: MapColumnType{KeyType: LowCardinalityColumnType{ColumnTypeString}, ValueType: ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "resource_attrs", Type: MapColumnType{KeyType: LowCardinalityColumnType{ColumnTypeString}, ValueType: ColumnTypeString}, Codec: "ZSTD(1)"},
},
Query: `SELECT
env,
temporality,
metric_name,
description,
unit,
type,
is_monotonic,
fingerprint,
floor(unix_milli / 604800000) * 604800000 AS unix_milli,
labels,
attrs,
scope_attrs,
resource_attrs
FROM o11y_metrics.time_series_v4_1day`,
},
},
},
{
MigrationID: 1001,
UpItems: []Operation{
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "time_series_v4",
Column: Column{
Name: "__normalized",
Type: ColumnTypeBool,
Codec: "ZSTD(1)",
Default: "true",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "distributed_time_series_v4",
Column: Column{
Name: "__normalized",
Type: ColumnTypeBool,
Codec: "ZSTD(1)",
Default: "true",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "time_series_v4_6hrs",
Column: Column{
Name: "__normalized",
Type: ColumnTypeBool,
Codec: "ZSTD(1)",
Default: "true",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "distributed_time_series_v4_6hrs",
Column: Column{
Name: "__normalized",
Type: ColumnTypeBool,
Codec: "ZSTD(1)",
Default: "true",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "time_series_v4_1day",
Column: Column{
Name: "__normalized",
Type: ColumnTypeBool,
Codec: "ZSTD(1)",
Default: "true",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "distributed_time_series_v4_1day",
Column: Column{
Name: "__normalized",
Type: ColumnTypeBool,
Codec: "ZSTD(1)",
Default: "true",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "time_series_v4_1week",
Column: Column{
Name: "__normalized",
Type: ColumnTypeBool,
Codec: "ZSTD(1)",
Default: "true",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "distributed_time_series_v4_1week",
Column: Column{
Name: "__normalized",
Type: ColumnTypeBool,
Codec: "ZSTD(1)",
Default: "true",
},
},
ModifyQueryMaterializedViewOperation{
Database: "o11y_metrics",
ViewName: "time_series_v4_6hrs_mv",
Query: `SELECT
env,
temporality,
metric_name,
description,
unit,
type,
is_monotonic,
fingerprint,
floor(unix_milli / 21600000) * 21600000 AS unix_milli,
labels,
__normalized
FROM o11y_metrics.time_series_v4`,
},
ModifyQueryMaterializedViewOperation{
Database: "o11y_metrics",
ViewName: "time_series_v4_1day_mv",
Query: `SELECT
env,
temporality,
metric_name,
description,
unit,
type,
is_monotonic,
fingerprint,
floor(unix_milli / 86400000) * 86400000 AS unix_milli,
labels,
__normalized
FROM o11y_metrics.time_series_v4_6hrs`,
},
ModifyQueryMaterializedViewOperation{
Database: "o11y_metrics",
ViewName: "time_series_v4_1week_mv",
Query: `SELECT
env,
temporality,
metric_name,
description,
unit,
type,
is_monotonic,
fingerprint,
floor(unix_milli / 604800000) * 604800000 AS unix_milli,
labels,
__normalized
FROM o11y_metrics.time_series_v4_1day`,
},
ModifyQueryMaterializedViewOperation{
Database: "o11y_metrics",
ViewName: "time_series_v4_6hrs_mv_separate_attrs",
Query: `SELECT
env,
temporality,
metric_name,
description,
unit,
type,
is_monotonic,
fingerprint,
floor(unix_milli / 21600000) * 21600000 AS unix_milli,
labels,
attrs,
scope_attrs,
resource_attrs,
__normalized
FROM o11y_metrics.time_series_v4`,
},
ModifyQueryMaterializedViewOperation{
Database: "o11y_metrics",
ViewName: "time_series_v4_1day_mv_separate_attrs",
Query: `SELECT
env,
temporality,
metric_name,
description,
unit,
type,
is_monotonic,
fingerprint,
floor(unix_milli / 86400000) * 86400000 AS unix_milli,
labels,
attrs,
scope_attrs,
resource_attrs,
__normalized
FROM o11y_metrics.time_series_v4_6hrs`,
},
ModifyQueryMaterializedViewOperation{
Database: "o11y_metrics",
ViewName: "time_series_v4_1week_mv_separate_attrs",
Query: `SELECT
env,
temporality,
metric_name,
description,
unit,
type,
is_monotonic,
fingerprint,
floor(unix_milli / 604800000) * 604800000 AS unix_milli,
labels,
attrs,
scope_attrs,
resource_attrs,
__normalized
FROM o11y_metrics.time_series_v4_1day`,
},
},
// no need for down items, and there is a default value for the column
// so it's a safe migration without any down migration
},
{
MigrationID: 1002,
UpItems: []Operation{
CreateTableOperation{
Database: "o11y_metrics",
Table: "updated_metadata",
Columns: []Column{
{Name: "metric_name", Type: LowCardinalityColumnType{ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "temporality", Type: LowCardinalityColumnType{ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "is_monotonic", Type: ColumnTypeBool, Codec: "ZSTD(1)"},
{Name: "type", Type: LowCardinalityColumnType{ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "description", Type: LowCardinalityColumnType{ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "unit", Type: LowCardinalityColumnType{ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "created_at", Type: ColumnTypeInt64, Codec: "ZSTD(1)"},
},
Engine: MergeTree{
OrderBy: "(metric_name)",
},
},
CreateTableOperation{
Database: "o11y_metrics",
Table: "distributed_updated_metadata",
Columns: []Column{
{Name: "metric_name", Type: LowCardinalityColumnType{ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "temporality", Type: LowCardinalityColumnType{ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "is_monotonic", Type: ColumnTypeBool, Codec: "ZSTD(1)"},
{Name: "type", Type: LowCardinalityColumnType{ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "description", Type: LowCardinalityColumnType{ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "unit", Type: LowCardinalityColumnType{ColumnTypeString}, Codec: "ZSTD(1)"},
{Name: "created_at", Type: ColumnTypeInt64, Codec: "ZSTD(1)"},
},
Engine: Distributed{
Database: "o11y_metrics",
Table: "updated_metadata",
ShardingKey: "cityHash64(metric_name)",
},
},
},
},
{
MigrationID: 1003,
UpItems: []Operation{
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "samples_v4",
Column: Column{
Name: "flags",
Type: ColumnTypeUInt32,
Codec: "ZSTD(1)",
Default: "0",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "distributed_samples_v4",
Column: Column{
Name: "flags",
Type: ColumnTypeUInt32,
Codec: "ZSTD(1)",
Default: "0",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "exp_hist",
Column: Column{
Name: "flags",
Type: ColumnTypeUInt32,
Codec: "ZSTD(1)",
Default: "0",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "distributed_exp_hist",
Column: Column{
Name: "flags",
Type: ColumnTypeUInt32,
Codec: "ZSTD(1)",
Default: "0",
},
},
ModifyQueryMaterializedViewOperation{
Database: "o11y_metrics",
ViewName: "samples_v4_agg_5m_mv",
Query: `SELECT
env,
temporality,
metric_name,
fingerprint,
intDiv(unix_milli, 300000) * 300000 as unix_milli,
anyLast(value) as last,
min(value) as min,
max(value) as max,
sum(value) as sum,
count(*) as count
FROM o11y_metrics.samples_v4
WHERE bitAnd(flags, 1) = 0
GROUP BY
env,
temporality,
metric_name,
fingerprint,
unix_milli;`,
},
ModifyQueryMaterializedViewOperation{
Database: "o11y_metrics",
ViewName: "samples_v4_agg_30m_mv",
Query: `SELECT
env,
temporality,
metric_name,
fingerprint,
intDiv(unix_milli, 1800000) * 1800000 AS unix_milli,
anyLast(last) AS last,
min(min) AS min,
max(max) AS max,
sum(sum) AS sum,
sum(count) AS count
FROM o11y_metrics.samples_v4_agg_5m
GROUP BY
env,
temporality,
metric_name,
fingerprint,
unix_milli;`,
},
},
},
{
MigrationID: 1004,
UpItems: []Operation{
ModifyQueryMaterializedViewOperation{
Database: "o11y_metrics",
ViewName: "time_series_v4_6hrs_mv",
Query: `SELECT
env,
temporality,
metric_name,
description,
unit,
type,
is_monotonic,
fingerprint,
floor(unix_milli / 21600000) * 21600000 AS unix_milli,
labels,
attrs,
scope_attrs,
resource_attrs,
__normalized
FROM o11y_metrics.time_series_v4`,
},
ModifyQueryMaterializedViewOperation{
Database: "o11y_metrics",
ViewName: "time_series_v4_1day_mv",
Query: `SELECT
env,
temporality,
metric_name,
description,
unit,
type,
is_monotonic,
fingerprint,
floor(unix_milli / 86400000) * 86400000 AS unix_milli,
labels,
attrs,
scope_attrs,
resource_attrs,
__normalized
FROM o11y_metrics.time_series_v4_6hrs`,
},
ModifyQueryMaterializedViewOperation{
Database: "o11y_metrics",
ViewName: "time_series_v4_1week_mv",
Query: `SELECT
env,
temporality,
metric_name,
description,
unit,
type,
is_monotonic,
fingerprint,
floor(unix_milli / 604800000) * 604800000 AS unix_milli,
labels,
attrs,
scope_attrs,
resource_attrs,
__normalized
FROM o11y_metrics.time_series_v4_1day`,
},
},
},
{
MigrationID: 1005,
UpItems: []Operation{
DropTableOperation{
Database: "o11y_metrics",
Table: "time_series_v4_6hrs_mv_separate_attrs",
},
DropTableOperation{
Database: "o11y_metrics",
Table: "time_series_v4_1day_mv_separate_attrs",
},
DropTableOperation{
Database: "o11y_metrics",
Table: "time_series_v4_1week_mv_separate_attrs",
},
},
},
{
MigrationID: 1006,
UpItems: []Operation{
AlterTableDropIndex{
Database: "o11y_metrics",
Table: "time_series_v4",
Index: Index{
Name: "idx_labels",
},
},
AlterTableDropIndex{
Database: "o11y_metrics",
Table: "time_series_v4_6hrs",
Index: Index{
Name: "idx_labels",
},
},
AlterTableDropIndex{
Database: "o11y_metrics",
Table: "time_series_v4_1day",
Index: Index{
Name: "idx_labels",
},
},
AlterTableDropIndex{
Database: "o11y_metrics",
Table: "time_series_v4_1week",
Index: Index{
Name: "idx_labels",
},
},
},
},
{
MigrationID: 1007,
UpItems: []Operation{
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "samples_v4",
Column: Column{
Name: "inserted_at_unix_milli",
Type: ColumnTypeInt64,
Codec: "ZSTD(1)",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "distributed_samples_v4",
Column: Column{
Name: "inserted_at_unix_milli",
Type: ColumnTypeInt64,
Codec: "ZSTD(1)",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "time_series_v4",
Column: Column{
Name: "inserted_at_unix_milli",
Type: ColumnTypeInt64,
Codec: "ZSTD(1)",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "distributed_time_series_v4",
Column: Column{
Name: "inserted_at_unix_milli",
Type: ColumnTypeInt64,
Codec: "ZSTD(1)",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "exp_hist",
Column: Column{
Name: "inserted_at_unix_milli",
Type: ColumnTypeInt64,
Codec: "ZSTD(1)",
},
},
AlterTableAddColumn{
Database: "o11y_metrics",
Table: "distributed_exp_hist",
Column: Column{
Name: "inserted_at_unix_milli",
Type: ColumnTypeInt64,
Codec: "ZSTD(1)",
},
},
},
},
}