diff --git a/src/main/java/com/google/cloud/solutions/spannerddl/parser/ASTcolumn_type.java b/src/main/java/com/google/cloud/solutions/spannerddl/parser/ASTcolumn_type.java index 7b8fb9e..4386e13 100644 --- a/src/main/java/com/google/cloud/solutions/spannerddl/parser/ASTcolumn_type.java +++ b/src/main/java/com/google/cloud/solutions/spannerddl/parser/ASTcolumn_type.java @@ -55,6 +55,7 @@ public String toString() { case "DATE": case "NUMERIC": case "JSON": + case "UUID": case "TOKENLIST": return typeName; case "STRING": diff --git a/src/test/java/com/google/cloud/solutions/spannerddl/diff/DdlDiffTest.java b/src/test/java/com/google/cloud/solutions/spannerddl/diff/DdlDiffTest.java index 803ab86..1daa4b0 100644 --- a/src/test/java/com/google/cloud/solutions/spannerddl/diff/DdlDiffTest.java +++ b/src/test/java/com/google/cloud/solutions/spannerddl/diff/DdlDiffTest.java @@ -267,6 +267,20 @@ public void generateAlterTable_incompatibleTypeChange() { "create table test1 (col1 float64) primary key (col1);", true, "Cannot change type of table test1 column col1"); + + // change type to UUID + getDiffCheckDdlDiffException( + "create table test1 (col1 int64, col2 int64) primary key (col1);", + "create table test1 (col1 int64, col2 uuid) primary key (col1);", + true, + "Cannot change type of table test1 column col2"); + + // change STRING(36) to UUID + getDiffCheckDdlDiffException( + "create table test1 (col1 int64, col2 string(36)) primary key (col1);", + "create table test1 (col1 int64, col2 uuid) primary key (col1);", + true, + "Cannot change type of table test1 column col2"); } @Test diff --git a/src/test/java/com/google/cloud/solutions/spannerddl/parser/DDLParserTest.java b/src/test/java/com/google/cloud/solutions/spannerddl/parser/DDLParserTest.java index b64539f..be1e845 100644 --- a/src/test/java/com/google/cloud/solutions/spannerddl/parser/DDLParserTest.java +++ b/src/test/java/com/google/cloud/solutions/spannerddl/parser/DDLParserTest.java @@ -36,7 +36,7 @@ public void parseCreateTable() throws ParseException { + " (\"prefix\" || sizedstring || \"suffix\"), sizedbytes bytes(55)," + " maxbytes bytes(max), datecol date, timestampcol timestamp options" + " (allow_commit_timestamp = true), intarray array, numericcol" - + " numeric,jsoncol json, pgcolumn pg.something, generatedcol string(max)" + + " numeric,jsoncol json, uuidcol uuid, pgcolumn pg.something, generatedcol string(max)" + " as (sizedstring+" + " strstr(maxstring,strpos(maxstring,'xxx'),length(maxstring)) +2.0)" + " STORED, constraint fk_col_remote FOREIGN KEY(col1, col2) REFERENCES" @@ -68,6 +68,7 @@ public void parseCreateTable() throws ParseException { + " intarray ARRAY, \n" + " numericcol NUMERIC, \n" + " jsoncol JSON, \n" + + " uuidcol UUID, \n" + " pgcolumn PG.SOMETHING, \n" + " generatedcol STRING(MAX) AS ( sizedstring + strstr ( maxstring, strpos (\n" + " maxstring, 'xxx' ), length ( maxstring ) ) + 2.0 ) STORED, \n" diff --git a/src/test/resources/ddlParserValidation.txt b/src/test/resources/ddlParserValidation.txt index 3461bd1..43ddfd9 100644 --- a/src/test/resources/ddlParserValidation.txt +++ b/src/test/resources/ddlParserValidation.txt @@ -63,6 +63,7 @@ CREATE TABLE test.test ( intarray ARRAY, numericcol NUMERIC, jsoncol JSON, + uuidcol UUID, pgcolumn PG.SOMETHING, generatedcol STRING(MAX) AS ( sizedstring + strstr ( maxstring, strpos ( maxstring, 'xxx' ), length ( maxstring ) ) + 2.0 ) STORED, tokenlistCol TOKENLIST AS ( TOKENIZE_FULLTEXT ( maxstring ) ) HIDDEN, diff --git a/src/test/resources/expectedDdlDiff.txt b/src/test/resources/expectedDdlDiff.txt index 3e4d663..7de8af4 100644 --- a/src/test/resources/expectedDdlDiff.txt +++ b/src/test/resources/expectedDdlDiff.txt @@ -380,6 +380,7 @@ ALTER TABLE mytable SET OPTIONS (locality_group='lg2') ALTER TABLE mytable SET OPTIONS (droppedKey=NULL,newKey='value2') == test 75 column changing not null with default value + ALTER TABLE test ALTER COLUMN add_nn BOOL NOT NULL DEFAULT (FALSE) ALTER TABLE test ALTER COLUMN add_both BOOL NOT NULL DEFAULT (FALSE) ALTER TABLE test ALTER COLUMN remove_NN BOOL DEFAULT (FALSE) @@ -388,5 +389,9 @@ ALTER TABLE test ALTER COLUMN remove_both BOOL ALTER TABLE test ALTER COLUMN change_both BOOL NOT NULL DEFAULT (TRUE) ALTER TABLE test ALTER COLUMN change_def SET DEFAULT (TRUE) +== test 76 add UUID column + +ALTER TABLE test1 ADD COLUMN col3 UUID + == diff --git a/src/test/resources/newDdl.txt b/src/test/resources/newDdl.txt index b977317..5794bab 100644 --- a/src/test/resources/newDdl.txt +++ b/src/test/resources/newDdl.txt @@ -605,5 +605,12 @@ CREATE TABLE test ( change_both BOOL NOT NULL DEFAULT (TRUE), ) PRIMARY KEY (id) +== test 76 add UUID column + +create table test1 ( + col1 int64, + col2 string(max), + col3 uuid +) primary key (col1); == diff --git a/src/test/resources/originalDdl.txt b/src/test/resources/originalDdl.txt index a5dced5..ba77cdb 100644 --- a/src/test/resources/originalDdl.txt +++ b/src/test/resources/originalDdl.txt @@ -604,5 +604,12 @@ CREATE TABLE test ( change_def BOOL NOT NULL DEFAULT (FALSE), ) PRIMARY KEY (id) +== test 76 add UUID column + +create table test1 ( + col1 int64, + col2 string(max) +) primary key (col1); + ==