From 7f0e4fd1e51953c1b5f5500b2004a8cb17dc5bae Mon Sep 17 00:00:00 2001 From: Vitalii Makarchenkov Date: Thu, 29 Aug 2024 12:24:50 +0300 Subject: [PATCH 1/4] Add databricks:clusterColumns element --- .../databricks/liquibase-databricks-1.0.xsd | 3 +++ .../liquibase-databricks-latest.xsd | 3 +++ .../databricks/createClusteredTableNew.xml | 25 +++++++++++++++++++ .../databricks/createClusteredTableNew.json | 2 ++ .../databricks/createClusteredTableNew.sql | 1 + 5 files changed, 34 insertions(+) create mode 100644 src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.xml create mode 100644 src/test/resources/liquibase/harness/change/expectedSnapshot/databricks/createClusteredTableNew.json create mode 100644 src/test/resources/liquibase/harness/change/expectedSql/databricks/createClusteredTableNew.sql diff --git a/src/main/resources/www.liquibase.org/xml/ns/databricks/liquibase-databricks-1.0.xsd b/src/main/resources/www.liquibase.org/xml/ns/databricks/liquibase-databricks-1.0.xsd index 415abea9..ae5234e7 100644 --- a/src/main/resources/www.liquibase.org/xml/ns/databricks/liquibase-databricks-1.0.xsd +++ b/src/main/resources/www.liquibase.org/xml/ns/databricks/liquibase-databricks-1.0.xsd @@ -81,4 +81,7 @@ + + + diff --git a/src/main/resources/www.liquibase.org/xml/ns/databricks/liquibase-databricks-latest.xsd b/src/main/resources/www.liquibase.org/xml/ns/databricks/liquibase-databricks-latest.xsd index 415abea9..ae5234e7 100644 --- a/src/main/resources/www.liquibase.org/xml/ns/databricks/liquibase-databricks-latest.xsd +++ b/src/main/resources/www.liquibase.org/xml/ns/databricks/liquibase-databricks-latest.xsd @@ -81,4 +81,7 @@ + + + diff --git a/src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.xml b/src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.xml new file mode 100644 index 00000000..ffbd71a1 --- /dev/null +++ b/src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + test_id + + + + + + \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSnapshot/databricks/createClusteredTableNew.json b/src/test/resources/liquibase/harness/change/expectedSnapshot/databricks/createClusteredTableNew.json new file mode 100644 index 00000000..7a73a41b --- /dev/null +++ b/src/test/resources/liquibase/harness/change/expectedSnapshot/databricks/createClusteredTableNew.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/databricks/createClusteredTableNew.sql b/src/test/resources/liquibase/harness/change/expectedSql/databricks/createClusteredTableNew.sql new file mode 100644 index 00000000..80f16f34 --- /dev/null +++ b/src/test/resources/liquibase/harness/change/expectedSql/databricks/createClusteredTableNew.sql @@ -0,0 +1 @@ +CREATE TABLE main.liquibase_harness_test_ds.test_table_clustered_new (test_id INT NOT NULL, test_new INT, CONSTRAINT PK_TEST_TABLE_CLUSTERED_NEW PRIMARY KEY (test_id)) USING delta TBLPROPERTIES('delta.feature.allowColumnDefaults' = 'supported', 'delta.columnMapping.mode' = 'name', 'delta.enableDeletionVectors' = true) CLUSTER BY (test_id) \ No newline at end of file From 51477e987c501c5f32e2f6cec4213666de07973e Mon Sep 17 00:00:00 2001 From: Vitalii Makarchenkov Date: Thu, 29 Aug 2024 12:35:40 +0300 Subject: [PATCH 2/4] Add YAML and JSON cluster columns examples --- .../databricks/createClusteredTableNew.json | 32 +++++++++++++++++++ .../databricks/createClusteredTableNew.yaml | 15 +++++++++ 2 files changed, 47 insertions(+) create mode 100644 src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.json create mode 100644 src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.yaml diff --git a/src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.json b/src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.json new file mode 100644 index 00000000..1bcd2320 --- /dev/null +++ b/src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.json @@ -0,0 +1,32 @@ +{ + "databaseChangeLog": [ + { + "changeSet": { + "id": "1", + "author": "your.name", + "changes": [ + { + "createTable": { + "tableName": "test_table_clustered_new", + "columns": [ + { + "column": { + "name": "test_id", + "type": "int" + } + }, + { + "column": { + "name": "test_new", + "type": "int" + } + } + ], + "clusterColumns": "test_id,test_new" + } + } + ] + } + } + ] +} diff --git a/src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.yaml b/src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.yaml new file mode 100644 index 00000000..ef99e540 --- /dev/null +++ b/src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.yaml @@ -0,0 +1,15 @@ +databaseChangeLog: + - changeSet: + id: 1 + author: your.name + changes: + - createTable: + tableName: test_table_clustered_new + columns: + - column: + name: test_id + type: int + - column: + name: test_new + type: int + clusterColumns: test_id, test_new From e7a39267d266c523393aaf8efe5f630ab92424c6 Mon Sep 17 00:00:00 2001 From: Vitalii Makarchenkov Date: Thu, 29 Aug 2024 12:52:10 +0300 Subject: [PATCH 3/4] Add drop clustered column example --- .../databricks/createClusteredTableNew.json | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.json b/src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.json index 1bcd2320..8e3cb195 100644 --- a/src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.json +++ b/src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.json @@ -27,6 +27,40 @@ } ] } + }, + { + "changeSet":{ + "id": 2, + "author":"your.name", + "changes":[ + { + "alterCluster": { + "tableName": "test_table_clustered_new", + "columns": [ + { + "column": { + "name": "test_id" + } + } + ] + } + } + ] + } + }, + { + "changeSet": { + "id": 3, + "author": "your.name", + "changes": [ + { + "dropColumn": { + "columnName": "test_new", + "tableName": "test_table_clustered_new" + } + } + ] + } } ] } From 7ab307ec112b99eb859edb8a939b1e88279c116a Mon Sep 17 00:00:00 2001 From: Vitalii Makarchenkov Date: Thu, 29 Aug 2024 16:09:22 +0300 Subject: [PATCH 4/4] Update changelogs to be identical to XML --- .../databricks/createClusteredTableNew.json | 19 +++++++++++++++ .../databricks/createClusteredTableNew.xml | 21 ++++++++++++----- .../databricks/createClusteredTableNew.yaml | 23 +++++++++++++++++++ .../databricks/createClusteredTableNew.sql | 4 +++- 4 files changed, 60 insertions(+), 7 deletions(-) diff --git a/src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.json b/src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.json index 8e3cb195..87d853ee 100644 --- a/src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.json +++ b/src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.json @@ -25,6 +25,13 @@ "clusterColumns": "test_id,test_new" } } + ], + "rollback": [ + { + "dropTable": { + "tableName": "test_table_clustered_new" + } + } ] } }, @@ -45,6 +52,12 @@ ] } } + ], + "rollback": [ + { + "empty": { + } + } ] } }, @@ -59,6 +72,12 @@ "tableName": "test_table_clustered_new" } } + ], + "rollback": [ + { + "empty": { + } + } ] } } diff --git a/src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.xml b/src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.xml index ffbd71a1..69d0008c 100644 --- a/src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.xml +++ b/src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.xml @@ -11,15 +11,24 @@ - - - - - - test_id + + + test_id,test_new + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.yaml b/src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.yaml index ef99e540..714e4493 100644 --- a/src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.yaml +++ b/src/test/resources/liquibase/harness/change/changelogs/databricks/createClusteredTableNew.yaml @@ -13,3 +13,26 @@ databaseChangeLog: name: test_new type: int clusterColumns: test_id, test_new + rollback: + dropTable: + tableName: test_table_clustered_new + - changeSet: + id: 2 + author: your.name + changes: + - alterCluster: + tableName: test_table_clustered_new + columns: + - column: + name: test_id + rollback: + empty + - changeSet: + id: 3 + author: your.name + changes: + - dropColumn: + columnName: test_new + tableName: test_table_clustered_new + rollback: + empty diff --git a/src/test/resources/liquibase/harness/change/expectedSql/databricks/createClusteredTableNew.sql b/src/test/resources/liquibase/harness/change/expectedSql/databricks/createClusteredTableNew.sql index 80f16f34..898576e5 100644 --- a/src/test/resources/liquibase/harness/change/expectedSql/databricks/createClusteredTableNew.sql +++ b/src/test/resources/liquibase/harness/change/expectedSql/databricks/createClusteredTableNew.sql @@ -1 +1,3 @@ -CREATE TABLE main.liquibase_harness_test_ds.test_table_clustered_new (test_id INT NOT NULL, test_new INT, CONSTRAINT PK_TEST_TABLE_CLUSTERED_NEW PRIMARY KEY (test_id)) USING delta TBLPROPERTIES('delta.feature.allowColumnDefaults' = 'supported', 'delta.columnMapping.mode' = 'name', 'delta.enableDeletionVectors' = true) CLUSTER BY (test_id) \ No newline at end of file +CREATE TABLE main.liquibase_harness_test_ds.test_table_clustered_new (test_id INT, test_new INT) USING delta TBLPROPERTIES('delta.feature.allowColumnDefaults' = 'supported', 'delta.columnMapping.mode' = 'name', 'delta.enableDeletionVectors' = true) CLUSTER BY (test_id, test_new) +ALTER TABLE main.liquibase_harness_test_ds.test_table_clustered_new CLUSTER BY (test_id) +ALTER TABLE main.liquibase_harness_test_ds.test_table_clustered_new DROP COLUMN test_new \ No newline at end of file