From a1d21aa71dc477b3f0bbf87254184158397e8ee1 Mon Sep 17 00:00:00 2001 From: rodrigozhou Date: Wed, 5 Jun 2024 11:02:55 -0500 Subject: [PATCH] Fix SQL visibility root workflow fields in schema --- schema/mysql/v8/version.go | 2 +- schema/mysql/v8/visibility/schema.sql | 4 ++-- .../visibility/versioned/v1.6/fix_root_workflow_info.sql | 9 +++++++++ schema/mysql/v8/visibility/versioned/v1.6/manifest.json | 8 ++++++++ schema/postgresql/v12/version.go | 2 +- schema/postgresql/v12/visibility/schema.sql | 4 ++-- .../visibility/versioned/v1.6/fix_root_workflow_info.sql | 9 +++++++++ .../v12/visibility/versioned/v1.6/manifest.json | 8 ++++++++ schema/sqlite/v3/visibility/schema.sql | 4 ++-- 9 files changed, 42 insertions(+), 8 deletions(-) create mode 100644 schema/mysql/v8/visibility/versioned/v1.6/fix_root_workflow_info.sql create mode 100644 schema/mysql/v8/visibility/versioned/v1.6/manifest.json create mode 100644 schema/postgresql/v12/visibility/versioned/v1.6/fix_root_workflow_info.sql create mode 100644 schema/postgresql/v12/visibility/versioned/v1.6/manifest.json diff --git a/schema/mysql/v8/version.go b/schema/mysql/v8/version.go index 8d5c0f786e5..21ca36f6aec 100644 --- a/schema/mysql/v8/version.go +++ b/schema/mysql/v8/version.go @@ -30,4 +30,4 @@ package v8 const Version = "1.12" // VisibilityVersion is the MySQL visibility database release version -const VisibilityVersion = "1.5" +const VisibilityVersion = "1.6" diff --git a/schema/mysql/v8/visibility/schema.sql b/schema/mysql/v8/visibility/schema.sql index afb4274e6e4..0454b6f2c8b 100644 --- a/schema/mysql/v8/visibility/schema.sql +++ b/schema/mysql/v8/visibility/schema.sql @@ -17,8 +17,8 @@ CREATE TABLE executions_visibility ( search_attributes JSON NULL, parent_workflow_id VARCHAR(255) NULL, parent_run_id VARCHAR(255) NULL, - root_workflow_id VARCHAR(255) NULL, - root_run_id VARCHAR(255) NULL, + root_workflow_id VARCHAR(255) NOT NULL DEFAULT '', + root_run_id VARCHAR(255) NOT NULL DEFAULT '', -- Each search attribute has its own generated column. -- For string types (keyword and text), we need to unquote the json string, diff --git a/schema/mysql/v8/visibility/versioned/v1.6/fix_root_workflow_info.sql b/schema/mysql/v8/visibility/versioned/v1.6/fix_root_workflow_info.sql new file mode 100644 index 00000000000..68a853eb58e --- /dev/null +++ b/schema/mysql/v8/visibility/versioned/v1.6/fix_root_workflow_info.sql @@ -0,0 +1,9 @@ +DROP INDEX by_root_workflow_id ON executions_visibility; +DROP INDEX by_root_run_id ON executions_visibility; +ALTER TABLE executions_visibility DROP COLUMN root_workflow_id; +ALTER TABLE executions_visibility DROP COLUMN root_run_id; + +ALTER TABLE executions_visibility ADD COLUMN root_workflow_id VARCHAR(255) NOT NULL DEFAULT ''; +ALTER TABLE executions_visibility ADD COLUMN root_run_id VARCHAR(255) NOT NULL DEFAULT ''; +CREATE INDEX by_root_workflow_id ON executions_visibility (namespace_id, root_workflow_id, (COALESCE(close_time, CAST('9999-12-31 23:59:59' AS DATETIME))) DESC, start_time DESC, run_id); +CREATE INDEX by_root_run_id ON executions_visibility (namespace_id, root_run_id, (COALESCE(close_time, CAST('9999-12-31 23:59:59' AS DATETIME))) DESC, start_time DESC, run_id); diff --git a/schema/mysql/v8/visibility/versioned/v1.6/manifest.json b/schema/mysql/v8/visibility/versioned/v1.6/manifest.json new file mode 100644 index 00000000000..43e52bc1a5e --- /dev/null +++ b/schema/mysql/v8/visibility/versioned/v1.6/manifest.json @@ -0,0 +1,8 @@ +{ + "CurrVersion": "1.6", + "MinCompatibleVersion": "0.1", + "Description": "fix root workflow info columns", + "SchemaUpdateCqlFiles": [ + "fix_root_workflow_info.sql" + ] +} diff --git a/schema/postgresql/v12/version.go b/schema/postgresql/v12/version.go index 5079ca04889..db2b070cd2e 100644 --- a/schema/postgresql/v12/version.go +++ b/schema/postgresql/v12/version.go @@ -32,4 +32,4 @@ const Version = "1.12" // VisibilityVersion is the Postgres visibility database release version // Temporal supports both MySQL and Postgres officially, so upgrade should be performed for both MySQL and Postgres -const VisibilityVersion = "1.5" +const VisibilityVersion = "1.6" diff --git a/schema/postgresql/v12/visibility/schema.sql b/schema/postgresql/v12/visibility/schema.sql index 60a31db4cbf..b8623bf7e2d 100644 --- a/schema/postgresql/v12/visibility/schema.sql +++ b/schema/postgresql/v12/visibility/schema.sql @@ -26,8 +26,8 @@ CREATE TABLE executions_visibility ( search_attributes JSONB NULL, parent_workflow_id VARCHAR(255) NULL, parent_run_id VARCHAR(255) NULL, - root_workflow_id VARCHAR(255) NULL, - root_run_id VARCHAR(255) NULL, + root_workflow_id VARCHAR(255) NOT NULL DEFAULT '', + root_run_id VARCHAR(255) NOT NULL DEFAULT '', -- Each search attribute has its own generated column. -- Since PostgreSQL doesn't support virtual columns, all columns are stored. diff --git a/schema/postgresql/v12/visibility/versioned/v1.6/fix_root_workflow_info.sql b/schema/postgresql/v12/visibility/versioned/v1.6/fix_root_workflow_info.sql new file mode 100644 index 00000000000..e9c92f1f52b --- /dev/null +++ b/schema/postgresql/v12/visibility/versioned/v1.6/fix_root_workflow_info.sql @@ -0,0 +1,9 @@ +DROP INDEX by_root_workflow_id; +DROP INDEX by_root_run_id; +ALTER TABLE executions_visibility DROP COLUMN root_workflow_id; +ALTER TABLE executions_visibility DROP COLUMN root_run_id; + +ALTER TABLE executions_visibility ADD COLUMN root_workflow_id VARCHAR(255) NOT NULL DEFAULT ''; +ALTER TABLE executions_visibility ADD COLUMN root_run_id VARCHAR(255) NOT NULL DEFAULT ''; +CREATE INDEX by_root_workflow_id ON executions_visibility (namespace_id, root_workflow_id, (COALESCE(close_time, '9999-12-31 23:59:59')) DESC, start_time DESC, run_id); +CREATE INDEX by_root_run_id ON executions_visibility (namespace_id, root_run_id, (COALESCE(close_time, '9999-12-31 23:59:59')) DESC, start_time DESC, run_id); diff --git a/schema/postgresql/v12/visibility/versioned/v1.6/manifest.json b/schema/postgresql/v12/visibility/versioned/v1.6/manifest.json new file mode 100644 index 00000000000..43e52bc1a5e --- /dev/null +++ b/schema/postgresql/v12/visibility/versioned/v1.6/manifest.json @@ -0,0 +1,8 @@ +{ + "CurrVersion": "1.6", + "MinCompatibleVersion": "0.1", + "Description": "fix root workflow info columns", + "SchemaUpdateCqlFiles": [ + "fix_root_workflow_info.sql" + ] +} diff --git a/schema/sqlite/v3/visibility/schema.sql b/schema/sqlite/v3/visibility/schema.sql index ab5a8b810eb..5ce712cf8ee 100644 --- a/schema/sqlite/v3/visibility/schema.sql +++ b/schema/sqlite/v3/visibility/schema.sql @@ -17,8 +17,8 @@ CREATE TABLE executions_visibility ( search_attributes TEXT NULL, parent_workflow_id VARCHAR(255) NULL, parent_run_id VARCHAR(255) NULL, - root_workflow_id VARCHAR(255) NULL, - root_run_id VARCHAR(255) NULL, + root_workflow_id VARCHAR(255) NOT NULL DEFAULT '', + root_run_id VARCHAR(255) NOT NULL DEFAULT '', -- Predefined search attributes TemporalChangeVersion TEXT GENERATED ALWAYS AS (JSON_EXTRACT(search_attributes, "$.TemporalChangeVersion")) STORED,