diff --git a/README.md b/README.md index 3beb42c0..ac692c09 100644 --- a/README.md +++ b/README.md @@ -47,15 +47,15 @@ CREATE TABLE authors ( ); INSERT INTO authors(id, first_name, last_name, email, birthdate, added) VALUES -(1,'Courtney','Hodkiewicz','borer.edison@example.org','1986-01-22','1983-08-23 14:55:09'); +(1,'Eileen','Lubowitz','ppaucek@example.org','1991-03-04','2004-05-30 02:08:25'); INSERT INTO authors(id, first_name, last_name, email, birthdate, added) VALUES -(2,'Marielle','Kuhlman','llakin@example.org','1995-08-08','1984-03-05 01:25:02'); +(2,'Tamia','Mayert','shansen@example.org','2016-03-27','2014-03-21 02:52:00'); INSERT INTO authors(id, first_name, last_name, email, birthdate, added) VALUES -(3,'Emmanuel','Gleichner','jean.zemlak@example.net','1997-05-09','1977-08-09 10:28:04'); +(3,'Cyril','Funk','reynolds.godfrey@example.com','1988-04-21','2011-06-24 18:17:48'); INSERT INTO authors(id, first_name, last_name, email, birthdate, added) VALUES -(4,'Hertha','Goodwin','hollis.gusikowski@example.org','2014-08-21','2009-01-28 11:02:56'); +(4,'Nicolas','Buckridge','xhoeger@example.net','2017-02-03','2019-04-22 02:04:41'); INSERT INTO authors(id, first_name, last_name, email, birthdate, added) VALUES -(5,'Ewald','Sauer','juvenal35@example.com','1988-10-10','2000-11-02 00:37:53'); +(5,'Jayden','Walter','lillian66@example.com','2010-02-27','1990-02-04 02:32:00'); DROP TABLE IF EXISTS posts; @@ -70,15 +70,15 @@ CREATE TABLE posts ( ); INSERT INTO posts(id, author_id, title, description, content, inserted_date) VALUES -(1,1,'sit','in','At corporis est sint beatae beatae.','1996-05-04'); +(1,1,'temporibus','voluptatum','Fugit non et doloribus repudiandae.','2015-11-18'); INSERT INTO posts(id, author_id, title, description, content, inserted_date) VALUES -(2,2,'nisi','et','Sunt nemo magni et tenetur debitis blanditiis.','2000-05-25'); +(2,2,'ea','aut','Tempora molestias maiores provident molestiae sint possimus quasi.','1975-06-08'); INSERT INTO posts(id, author_id, title, description, content, inserted_date) VALUES -(3,3,'ratione','blanditiis','Ipsa distinctio doloremque et ut.','1997-09-22'); +(3,3,'illum','rerum','Delectus recusandae sit officiis dolor.','1975-02-25'); INSERT INTO posts(id, author_id, title, description, content, inserted_date) VALUES -(4,4,'ad','et','Repudiandae porro explicabo officiis sed quis voluptate et.','1978-12-13'); +(4,4,'itaque','deleniti','Magni nam optio id recusandae.','2010-07-28'); INSERT INTO posts(id, author_id, title, description, content, inserted_date) VALUES -(5,5,'deserunt','temporibus','Mollitia reiciendis debitis est voluptatem est neque.','1979-12-06'); +(5,5,'ad','similique','Rerum tempore quis ut nesciunt qui excepturi est.','2006-10-09');; ``` ## Contributing diff --git a/pom.xml b/pom.xml index 0645b957..c5e0ca9f 100644 --- a/pom.xml +++ b/pom.xml @@ -1,5 +1,6 @@ - + 4.0.0 org.liquibase.ext @@ -86,9 +87,14 @@ org.liquibase liquibase-test-harness - 1.0.2 + 1.0.6 test + + org.skyscreamer + jsonassert + 1.5.0 + com.h2database h2 diff --git a/src/main/java/liquibase/ext/cassandra/database/CassandraDatabase.java b/src/main/java/liquibase/ext/cassandra/database/CassandraDatabase.java index 18904b7b..85f58719 100644 --- a/src/main/java/liquibase/ext/cassandra/database/CassandraDatabase.java +++ b/src/main/java/liquibase/ext/cassandra/database/CassandraDatabase.java @@ -7,6 +7,7 @@ import liquibase.database.DatabaseConnection; import liquibase.database.jvm.JdbcConnection; import liquibase.exception.DatabaseException; +import liquibase.structure.core.Index; import java.sql.Statement; @@ -151,4 +152,12 @@ public boolean supportsNotNullConstraintNames() { public boolean supportsPrimaryKeyNames() { return false; } + + /** + * there shouldn't be keyspace name before the index name, queries fail otherwise + */ + @Override + public String escapeIndexName(String catalogName, String schemaName, String indexName) { + return this.escapeObjectName(indexName, Index.class); + } } diff --git a/src/main/java/liquibase/ext/cassandra/sqlgenerator/SetTableRemarksGeneratorCassandra.java b/src/main/java/liquibase/ext/cassandra/sqlgenerator/SetTableRemarksGeneratorCassandra.java new file mode 100644 index 00000000..02b4b364 --- /dev/null +++ b/src/main/java/liquibase/ext/cassandra/sqlgenerator/SetTableRemarksGeneratorCassandra.java @@ -0,0 +1,31 @@ +package liquibase.ext.cassandra.sqlgenerator; + +import liquibase.database.Database; +import liquibase.database.core.MSSQLDatabase; +import liquibase.database.core.MySQLDatabase; +import liquibase.ext.cassandra.database.CassandraDatabase; +import liquibase.sql.Sql; +import liquibase.sql.UnparsedSql; +import liquibase.sqlgenerator.SqlGeneratorChain; +import liquibase.sqlgenerator.core.SetTableRemarksGenerator; +import liquibase.statement.core.SetTableRemarksStatement; +import liquibase.structure.DatabaseObject; +import liquibase.util.StringUtil; + +public class SetTableRemarksGeneratorCassandra extends SetTableRemarksGenerator { + @Override + public int getPriority() { + return PRIORITY_DATABASE; + } + + @Override + public boolean supports(SetTableRemarksStatement statement, Database database) { + return database instanceof CassandraDatabase; + } + + public Sql[] generateSql(SetTableRemarksStatement statement, Database database, SqlGeneratorChain sqlGeneratorChain) { + String remarksEscaped = database.escapeStringForDatabase(StringUtil.trimToEmpty(statement.getRemarks())); + String sql = "ALTER TABLE " + database.escapeTableName(statement.getCatalogName(), statement.getSchemaName(), statement.getTableName()) + " WITH comment = '" + remarksEscaped + "'"; + return new Sql[]{new UnparsedSql(sql, this.getAffectedTable(statement))}; + } +} diff --git a/src/main/resources/META-INF/services/liquibase.sqlgenerator.SqlGenerator b/src/main/resources/META-INF/services/liquibase.sqlgenerator.SqlGenerator index 3e8eb5f3..547a1fc5 100644 --- a/src/main/resources/META-INF/services/liquibase.sqlgenerator.SqlGenerator +++ b/src/main/resources/META-INF/services/liquibase.sqlgenerator.SqlGenerator @@ -8,4 +8,5 @@ liquibase.ext.cassandra.sqlgenerator.InitializeDatabaseChangeLogLockTableGenerat liquibase.ext.cassandra.sqlgenerator.CreateTableGeneratorCassandra liquibase.ext.cassandra.sqlgenerator.DropColumnGeneratorCassandra liquibase.ext.cassandra.sqlgenerator.RenameColumnGeneratorCassandra -liquibase.ext.cassandra.sqlgenerator.TagDatabaseGeneratorCassandra \ No newline at end of file +liquibase.ext.cassandra.sqlgenerator.TagDatabaseGeneratorCassandra +liquibase.ext.cassandra.sqlgenerator.SetTableRemarksGeneratorCassandra \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/changelogs/cassandra/addColumn.xml b/src/test/resources/liquibase/harness/change/changelogs/cassandra/addColumn.xml index 88d38628..37b5c3be 100644 --- a/src/test/resources/liquibase/harness/change/changelogs/cassandra/addColumn.xml +++ b/src/test/resources/liquibase/harness/change/changelogs/cassandra/addColumn.xml @@ -4,6 +4,8 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd"> + + diff --git a/src/test/resources/liquibase/harness/change/changelogs/cassandra/createTable.xml b/src/test/resources/liquibase/harness/change/changelogs/cassandra/createTable.xml index 1436527c..61ddd989 100644 --- a/src/test/resources/liquibase/harness/change/changelogs/cassandra/createTable.xml +++ b/src/test/resources/liquibase/harness/change/changelogs/cassandra/createTable.xml @@ -4,6 +4,8 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd"> + + diff --git a/src/test/resources/liquibase/harness/change/changelogs/cassandra/createTableDataTypeText.xml b/src/test/resources/liquibase/harness/change/changelogs/cassandra/createTableDataTypeText.xml index 406b1703..c2000fa1 100644 --- a/src/test/resources/liquibase/harness/change/changelogs/cassandra/createTableDataTypeText.xml +++ b/src/test/resources/liquibase/harness/change/changelogs/cassandra/createTableDataTypeText.xml @@ -4,6 +4,8 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd"> + + diff --git a/src/test/resources/liquibase/harness/change/changelogs/cassandra/createTableTimestamp.xml b/src/test/resources/liquibase/harness/change/changelogs/cassandra/createTableTimestamp.xml index 356d2a77..ba343458 100644 --- a/src/test/resources/liquibase/harness/change/changelogs/cassandra/createTableTimestamp.xml +++ b/src/test/resources/liquibase/harness/change/changelogs/cassandra/createTableTimestamp.xml @@ -4,6 +4,8 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd"> + + diff --git a/src/test/resources/liquibase/harness/change/changelogs/cassandra/dropColumn.xml b/src/test/resources/liquibase/harness/change/changelogs/cassandra/dropColumn.xml index f052acbf..2ae82934 100644 --- a/src/test/resources/liquibase/harness/change/changelogs/cassandra/dropColumn.xml +++ b/src/test/resources/liquibase/harness/change/changelogs/cassandra/dropColumn.xml @@ -4,8 +4,9 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd"> - - + + + diff --git a/src/test/resources/liquibase/harness/change/changelogs/cassandra/dropTable.xml b/src/test/resources/liquibase/harness/change/changelogs/cassandra/dropTable.xml index 2489ab0c..9c29bbde 100644 --- a/src/test/resources/liquibase/harness/change/changelogs/cassandra/dropTable.xml +++ b/src/test/resources/liquibase/harness/change/changelogs/cassandra/dropTable.xml @@ -4,7 +4,8 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd"> - + + diff --git a/src/test/resources/liquibase/harness/change/changelogs/cassandra/mergeColumns.xml b/src/test/resources/liquibase/harness/change/changelogs/cassandra/mergeColumns.xml new file mode 100644 index 00000000..695861a3 --- /dev/null +++ b/src/test/resources/liquibase/harness/change/changelogs/cassandra/mergeColumns.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/changelogs/cassandra/renameColumn.xml b/src/test/resources/liquibase/harness/change/changelogs/cassandra/renameColumn.xml index 631bb158..2054348c 100644 --- a/src/test/resources/liquibase/harness/change/changelogs/cassandra/renameColumn.xml +++ b/src/test/resources/liquibase/harness/change/changelogs/cassandra/renameColumn.xml @@ -4,8 +4,10 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd"> + + - diff --git a/src/test/resources/liquibase/harness/change/changelogs/cassandra/setTableRemarks.xml b/src/test/resources/liquibase/harness/change/changelogs/cassandra/setTableRemarks.xml new file mode 100644 index 00000000..ace95ede --- /dev/null +++ b/src/test/resources/liquibase/harness/change/changelogs/cassandra/setTableRemarks.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/changelogs/cassandra/sqlFile.txt b/src/test/resources/liquibase/harness/change/changelogs/cassandra/sqlFile.txt new file mode 100644 index 00000000..acc11422 --- /dev/null +++ b/src/test/resources/liquibase/harness/change/changelogs/cassandra/sqlFile.txt @@ -0,0 +1,3 @@ +insert into sqltest (id) values (1); +insert into sqltest (id) values (2); +insert into sqltest (id) values (3); \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/changelogs/cassandra/sqlFile.xml b/src/test/resources/liquibase/harness/change/changelogs/cassandra/sqlFile.xml new file mode 100644 index 00000000..2c0d7338 --- /dev/null +++ b/src/test/resources/liquibase/harness/change/changelogs/cassandra/sqlFile.xml @@ -0,0 +1,24 @@ + + + + Creates a table and inserts values into the table with actual SQL + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSnapshot/cassandra/mergeColumns.json b/src/test/resources/liquibase/harness/change/expectedSnapshot/cassandra/mergeColumns.json new file mode 100644 index 00000000..054d7cc1 --- /dev/null +++ b/src/test/resources/liquibase/harness/change/expectedSnapshot/cassandra/mergeColumns.json @@ -0,0 +1,21 @@ +{ + "snapshot": { + "objects": { + "liquibase.structure.core.Table": [ + { + + "table": { + "name": "full_name_table" + } + } + ], + "liquibase.structure.core.Column": [ + { + "column": { + "name": "full_name" + } + } + ] + } + } +} \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/addAutoIncrement.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/addAutoIncrement.sql new file mode 100644 index 00000000..45a1be8d --- /dev/null +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/addAutoIncrement.sql @@ -0,0 +1,2 @@ +INVALID TEST +Cassandra doesn't support auto increment as it is decentralized DB and managing autoincrement require cental place and synch \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/addCheckConstraint.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/addCheckConstraint.sql new file mode 100644 index 00000000..ed8f2636 --- /dev/null +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/addCheckConstraint.sql @@ -0,0 +1,2 @@ +INVALID TEST +Cassandra doesn't support check constraint \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/addColumn.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/addColumn.sql index 939aeeb2..ca04b164 100644 --- a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/addColumn.sql +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/addColumn.sql @@ -1,3 +1,3 @@ -ALTER TABLE authors ADD varcharColumn VARCHAR -ALTER TABLE authors ADD intColumn INT -ALTER TABLE authors ADD dateColumn date \ No newline at end of file +ALTER TABLE betterbotz.authors ADD varcharColumn VARCHAR +ALTER TABLE betterbotz.authors ADD intColumn INT +ALTER TABLE betterbotz.authors ADD dateColumn date \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/alterSequence.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/alterSequence.sql new file mode 100644 index 00000000..76f0cc0d --- /dev/null +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/alterSequence.sql @@ -0,0 +1,2 @@ +INVALID TEST +--Cassandra doesn't support sequences \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createFunction.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createFunction.sql new file mode 100644 index 00000000..dfa38726 --- /dev/null +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createFunction.sql @@ -0,0 +1,2 @@ +INVALID TEST +Cassandra isn't among PRO supported databases \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createIndex.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createIndex.sql index f4793050..39b2b0a0 100644 --- a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createIndex.sql +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createIndex.sql @@ -1,2 +1,2 @@ -CREATE INDEX idx_first_name ON authors(first_name) -CREATE INDEX idx_last_name ON authors(last_name) \ No newline at end of file +CREATE INDEX idx_first_name ON betterbotz.authors(first_name) +CREATE INDEX idx_last_name ON betterbotz.authors(last_name) \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createPackage.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createPackage.sql new file mode 100644 index 00000000..dfa38726 --- /dev/null +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createPackage.sql @@ -0,0 +1,2 @@ +INVALID TEST +Cassandra isn't among PRO supported databases \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createPackageBody.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createPackageBody.sql new file mode 100644 index 00000000..dfa38726 --- /dev/null +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createPackageBody.sql @@ -0,0 +1,2 @@ +INVALID TEST +Cassandra isn't among PRO supported databases \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createTable.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createTable.sql index ba5049a7..9e26c09e 100644 --- a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createTable.sql +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createTable.sql @@ -1 +1 @@ -CREATE TABLE test_table (test_id INT, test_column VARCHAR, PRIMARY KEY (test_id)) \ No newline at end of file +CREATE TABLE betterbotz.test_table (test_id INT, test_column VARCHAR, PRIMARY KEY (test_id)) \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createTableDataTypeText.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createTableDataTypeText.sql index 4b6d0ace..be3113b1 100644 --- a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createTableDataTypeText.sql +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createTableDataTypeText.sql @@ -1 +1 @@ -CREATE TABLE createTableDataTypeText (textCol TEXT, PRIMARY KEY (textCol)) \ No newline at end of file +CREATE TABLE betterbotz.createTableDataTypeText (textCol TEXT, PRIMARY KEY (textCol)) \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createTableTimestamp.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createTableTimestamp.sql index bba1e250..3254e8f0 100644 --- a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createTableTimestamp.sql +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createTableTimestamp.sql @@ -1 +1 @@ -CREATE TABLE test_table_timestamp (test_id INT, test_column timestamp, PRIMARY KEY (test_id)) \ No newline at end of file +CREATE TABLE betterbotz.test_table_timestamp (test_id INT, test_column timestamp, PRIMARY KEY (test_id)) \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createTrigger.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createTrigger.sql new file mode 100644 index 00000000..dfa38726 --- /dev/null +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/createTrigger.sql @@ -0,0 +1,2 @@ +INVALID TEST +Cassandra isn't among PRO supported databases \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/disableCheckConstraint.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/disableCheckConstraint.sql new file mode 100644 index 00000000..ed8f2636 --- /dev/null +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/disableCheckConstraint.sql @@ -0,0 +1,2 @@ +INVALID TEST +Cassandra doesn't support check constraint \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/disableTrigger.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/disableTrigger.sql new file mode 100644 index 00000000..dfa38726 --- /dev/null +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/disableTrigger.sql @@ -0,0 +1,2 @@ +INVALID TEST +Cassandra isn't among PRO supported databases \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/dropCheckConstraint.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/dropCheckConstraint.sql new file mode 100644 index 00000000..ed8f2636 --- /dev/null +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/dropCheckConstraint.sql @@ -0,0 +1,2 @@ +INVALID TEST +Cassandra doesn't support check constraint \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/dropColumn.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/dropColumn.sql index 20d649f0..548de1cb 100644 --- a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/dropColumn.sql +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/dropColumn.sql @@ -1,2 +1,2 @@ -ALTER TABLE posts ADD varcharColumn VARCHAR -ALTER TABLE posts DROP varcharColumn \ No newline at end of file +ALTER TABLE betterbotz.posts ADD varcharColumn VARCHAR +ALTER TABLE betterbotz.posts DROP varcharColumn \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/dropFunction.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/dropFunction.sql new file mode 100644 index 00000000..dfa38726 --- /dev/null +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/dropFunction.sql @@ -0,0 +1,2 @@ +INVALID TEST +Cassandra isn't among PRO supported databases \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/dropIndex.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/dropIndex.sql index 3df9b91b..91043b03 100644 --- a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/dropIndex.sql +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/dropIndex.sql @@ -1,2 +1,2 @@ -CREATE INDEX idx_first_name ON authors(first_name) +CREATE INDEX idx_first_name ON betterbotz.authors(first_name) DROP INDEX idx_first_name \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/dropTable.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/dropTable.sql index 014813d3..26f35b09 100644 --- a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/dropTable.sql +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/dropTable.sql @@ -1,2 +1,2 @@ -CREATE TABLE test_table (test_id INT, test_column VARCHAR, PRIMARY KEY (test_id)) -DROP TABLE test_table \ No newline at end of file +CREATE TABLE betterbotz.test_table (test_id INT, test_column VARCHAR, PRIMARY KEY (test_id)) +DROP TABLE betterbotz.test_table \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/dropTrigger.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/dropTrigger.sql new file mode 100644 index 00000000..dfa38726 --- /dev/null +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/dropTrigger.sql @@ -0,0 +1,2 @@ +INVALID TEST +Cassandra isn't among PRO supported databases \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/enableCheckConstraint.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/enableCheckConstraint.sql new file mode 100644 index 00000000..ed8f2636 --- /dev/null +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/enableCheckConstraint.sql @@ -0,0 +1,2 @@ +INVALID TEST +Cassandra doesn't support check constraint \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/enableTrigger.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/enableTrigger.sql new file mode 100644 index 00000000..dfa38726 --- /dev/null +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/enableTrigger.sql @@ -0,0 +1,2 @@ +INVALID TEST +Cassandra isn't among PRO supported databases \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/mergeColumns.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/mergeColumns.sql new file mode 100644 index 00000000..d14300dc --- /dev/null +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/mergeColumns.sql @@ -0,0 +1,7 @@ +CREATE TABLE betterbotz.full_name_table (id INT, first_name VARCHAR, last_name VARCHAR, PRIMARY KEY (id)) +INSERT INTO betterbotz.full_name_table (id, first_name, last_name) VALUES ('1', 'John', 'Doe') +INSERT INTO betterbotz.full_name_table (id, first_name, last_name) VALUES ('2', 'Jane', 'Doe') +ALTER TABLE betterbotz.full_name_table ADD full_name VARCHAR +UPDATE betterbotz.full_name_table SET full_name = first_name || ' ' || last_name +ALTER TABLE betterbotz.full_name_table DROP first_name +ALTER TABLE betterbotz.full_name_table DROP last_name \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/modifyDataType.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/modifyDataType.sql new file mode 100644 index 00000000..161d0d4b --- /dev/null +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/modifyDataType.sql @@ -0,0 +1,3 @@ +INVALID TEST +Ability to alter datatype for Cassandra was removed in 3.0.11 and later +https://issues.apache.org/jira/browse/CASSANDRA-12443 \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/renameColumn.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/renameColumn.sql index 88244dca..390dd37f 100644 --- a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/renameColumn.sql +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/renameColumn.sql @@ -1 +1 @@ -ALTER TABLE authors RENAME id TO id_renameColumn_test \ No newline at end of file +ALTER TABLE betterbotz.authors RENAME id TO id_renameColumn_test \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/renameTrigger.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/renameTrigger.sql new file mode 100644 index 00000000..dfa38726 --- /dev/null +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/renameTrigger.sql @@ -0,0 +1,2 @@ +INVALID TEST +Cassandra isn't among PRO supported databases \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/setColumnRemarks.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/setColumnRemarks.sql new file mode 100644 index 00000000..56a9d463 --- /dev/null +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/setColumnRemarks.sql @@ -0,0 +1,2 @@ +INVALID TEST +Cassandra doesn't support comments on columns \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/setTableRemarks.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/setTableRemarks.sql new file mode 100644 index 00000000..fcc1d5c3 --- /dev/null +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/setTableRemarks.sql @@ -0,0 +1 @@ +ALTER TABLE betterbotz.authors WITH comment = 'A Test Remark' \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/change/expectedSql/cassandra/sqlFile.sql b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/sqlFile.sql new file mode 100644 index 00000000..1f98b918 --- /dev/null +++ b/src/test/resources/liquibase/harness/change/expectedSql/cassandra/sqlFile.sql @@ -0,0 +1,4 @@ +CREATE TABLE betterbotz.sqltest (id INT, PRIMARY KEY (id)) +insert into sqltest (id) values (1) +insert into sqltest (id) values (2) +insert into sqltest (id) values (3) \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/data/changelogs/cassandra/loadUpdateData.csv b/src/test/resources/liquibase/harness/data/changelogs/cassandra/loadUpdateData.csv new file mode 100644 index 00000000..3fec2c40 --- /dev/null +++ b/src/test/resources/liquibase/harness/data/changelogs/cassandra/loadUpdateData.csv @@ -0,0 +1,4 @@ +id;first_name;last_name;email;birthdate;added +1;Adam;Gods;test1@example.com;1000-02-27;2000-02-04T02:32:00 +7;Noah;Lamekhs;test2@example.com;2000-02-27;1994-12-10T01:00:00 +8;Muhammad;Ibn Abdullah;test3@example.com;3000-02-27;2000-12-10T01:00:00 diff --git a/src/test/resources/liquibase/harness/data/changelogs/cassandra/loadUpdateData.xml b/src/test/resources/liquibase/harness/data/changelogs/cassandra/loadUpdateData.xml new file mode 100644 index 00000000..be5a48e5 --- /dev/null +++ b/src/test/resources/liquibase/harness/data/changelogs/cassandra/loadUpdateData.xml @@ -0,0 +1,25 @@ + + + + + + + + DELETE FROM authors WHERE id = 1; + INSERT INTO authors(id, first_name, last_name, email, birthdate, added) VALUES + (1,'Eileen','Lubowitz','ppaucek@example.org','1991-03-04','2004-05-30 02:08:25'); + DELETE FROM authors WHERE id = 7; + DELETE FROM authors WHERE id = 8; + + + + diff --git a/src/test/resources/liquibase/harness/data/expectedSql/cassandra/delete.sql b/src/test/resources/liquibase/harness/data/expectedSql/cassandra/delete.sql new file mode 100644 index 00000000..e78aef57 --- /dev/null +++ b/src/test/resources/liquibase/harness/data/expectedSql/cassandra/delete.sql @@ -0,0 +1,2 @@ +INSERT INTO betterbotz.posts (id, author_id, title, description, content, inserted_date) VALUES ('100', '6', 'value', 'value', 'value', '2006-10-09') +DELETE FROM betterbotz.posts WHERE id=100 \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/data/expectedSql/cassandra/insert.sql b/src/test/resources/liquibase/harness/data/expectedSql/cassandra/insert.sql new file mode 100644 index 00000000..08f9d686 --- /dev/null +++ b/src/test/resources/liquibase/harness/data/expectedSql/cassandra/insert.sql @@ -0,0 +1 @@ +INSERT INTO betterbotz.posts (id, author_id, title, description, content, inserted_date) VALUES ('100', '6', 'value', 'value', 'value', '2006-10-09') \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/data/expectedSql/cassandra/loadData.sql b/src/test/resources/liquibase/harness/data/expectedSql/cassandra/loadData.sql new file mode 100644 index 00000000..26c3669d --- /dev/null +++ b/src/test/resources/liquibase/harness/data/expectedSql/cassandra/loadData.sql @@ -0,0 +1,3 @@ +INSERT INTO betterbotz.posts (id, author_id, title, description, content, inserted_date) VALUES (6, 1, 'Title1', 'test1@example.com', 'Content1', '2000-01-01') +INSERT INTO betterbotz.posts (id, author_id, title, description, content, inserted_date) VALUES (7, 2, 'Title2', 'test2@example.com', 'Content2', '2000-01-01') +INSERT INTO betterbotz.posts (id, author_id, title, description, content, inserted_date) VALUES (8, 3, 'Title3', 'test3@example.com', 'Content3', '2000-01-01') \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/snapshot/cassandra/column.groovy b/src/test/resources/liquibase/harness/snapshot/cassandra/column.groovy deleted file mode 100644 index e64d14d3..00000000 --- a/src/test/resources/liquibase/harness/snapshot/cassandra/column.groovy +++ /dev/null @@ -1,37 +0,0 @@ -package liquibase.harness.snapshot.cassandra - -import liquibase.harness.snapshot.SnapshotTest -import liquibase.snapshot.DatabaseSnapshot -import liquibase.structure.core.Column -import liquibase.structure.core.Table - -[ - [ - setup : "create table test_table (test_col int PRIMARY KEY)", - verify: { - DatabaseSnapshot snapshot -> - snapshot.get(new Column(Table.class, null, null, "test_table", "test_col")).with { - assert type.typeName.toLowerCase().startsWith("int") - } - - } - ], - [ - setup : "create table test_table (test_col varchar PRIMARY KEY)", - verify: { - DatabaseSnapshot snapshot -> - snapshot.get(new Column(Table.class, null, null, "test_table", "test_col")).with { - assert type.typeName.toLowerCase() == "text" - } - } - ], - [ - setup : "create table test_table (test_col int PRIMARY KEY)", - verify: { DatabaseSnapshot snapshot -> - snapshot.get(new Column(Table.class, null, null, "test_table", "test_col")).with { - assert !nullable - } - } - ], -] as SnapshotTest.TestConfig[] - diff --git a/src/test/resources/liquibase/harness/snapshot/cassandra/table.groovy b/src/test/resources/liquibase/harness/snapshot/cassandra/table.groovy deleted file mode 100644 index 3b04ca78..00000000 --- a/src/test/resources/liquibase/harness/snapshot/cassandra/table.groovy +++ /dev/null @@ -1,18 +0,0 @@ -package liquibase.harness.snapshot.cassandra - -import liquibase.harness.snapshot.SnapshotTest -import liquibase.snapshot.DatabaseSnapshot -import liquibase.structure.core.Table - -[ - [ - setup : "create table test_table (test_col int PRIMARY KEY, col2 varchar)", - verify: { - DatabaseSnapshot snapshot -> - snapshot.get(new Table(name: "test_table")).with { - assert name.equalsIgnoreCase("test_table") - assert columns*.name.containsAll(["test_col", "col2"]) - } - } - ], -] as SnapshotTest.TestConfig[] \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/snapshot/inputSql/column.sql b/src/test/resources/liquibase/harness/snapshot/inputSql/column.sql new file mode 100644 index 00000000..f854c883 --- /dev/null +++ b/src/test/resources/liquibase/harness/snapshot/inputSql/column.sql @@ -0,0 +1 @@ +create table snapshot_test_column (snapshot_column_test_int int, snapshot_column_test_varchar varchar, PRIMARY KEY (snapshot_column_test_int)) \ No newline at end of file diff --git a/src/test/resources/liquibase/harness/snapshot/inputSql/table.sql b/src/test/resources/liquibase/harness/snapshot/inputSql/table.sql new file mode 100644 index 00000000..a566336e --- /dev/null +++ b/src/test/resources/liquibase/harness/snapshot/inputSql/table.sql @@ -0,0 +1 @@ +create table snapshot_test_table (snapshot_table_test_int int, snapshot_table_test_varchar varchar, PRIMARY KEY (snapshot_table_test_int )) \ No newline at end of file diff --git a/test.cql b/test.cql index e4bca2d6..6aca2cc1 100644 --- a/test.cql +++ b/test.cql @@ -16,15 +16,15 @@ CREATE TABLE authors ( ); INSERT INTO authors(id, first_name, last_name, email, birthdate, added) VALUES -(1,'Courtney','Hodkiewicz','borer.edison@example.org','1986-01-22','1983-08-23 14:55:09'); +(1,'Eileen','Lubowitz','ppaucek@example.org','1991-03-04','2004-05-30 02:08:25'); INSERT INTO authors(id, first_name, last_name, email, birthdate, added) VALUES -(2,'Marielle','Kuhlman','llakin@example.org','1995-08-08','1984-03-05 01:25:02'); +(2,'Tamia','Mayert','shansen@example.org','2016-03-27','2014-03-21 02:52:00'); INSERT INTO authors(id, first_name, last_name, email, birthdate, added) VALUES -(3,'Emmanuel','Gleichner','jean.zemlak@example.net','1997-05-09','1977-08-09 10:28:04'); +(3,'Cyril','Funk','reynolds.godfrey@example.com','1988-04-21','2011-06-24 18:17:48'); INSERT INTO authors(id, first_name, last_name, email, birthdate, added) VALUES -(4,'Hertha','Goodwin','hollis.gusikowski@example.org','2014-08-21','2009-01-28 11:02:56'); +(4,'Nicolas','Buckridge','xhoeger@example.net','2017-02-03','2019-04-22 02:04:41'); INSERT INTO authors(id, first_name, last_name, email, birthdate, added) VALUES -(5,'Ewald','Sauer','juvenal35@example.com','1988-10-10','2000-11-02 00:37:53'); +(5,'Jayden','Walter','lillian66@example.com','2010-02-27','1990-02-04 02:32:00'); DROP TABLE IF EXISTS posts; @@ -39,12 +39,12 @@ CREATE TABLE posts ( ); INSERT INTO posts(id, author_id, title, description, content, inserted_date) VALUES -(1,1,'sit','in','At corporis est sint beatae beatae.','1996-05-04'); +(1,1,'temporibus','voluptatum','Fugit non et doloribus repudiandae.','2015-11-18'); INSERT INTO posts(id, author_id, title, description, content, inserted_date) VALUES -(2,2,'nisi','et','Sunt nemo magni et tenetur debitis blanditiis.','2000-05-25'); +(2,2,'ea','aut','Tempora molestias maiores provident molestiae sint possimus quasi.','1975-06-08'); INSERT INTO posts(id, author_id, title, description, content, inserted_date) VALUES -(3,3,'ratione','blanditiis','Ipsa distinctio doloremque et ut.','1997-09-22'); +(3,3,'illum','rerum','Delectus recusandae sit officiis dolor.','1975-02-25'); INSERT INTO posts(id, author_id, title, description, content, inserted_date) VALUES -(4,4,'ad','et','Repudiandae porro explicabo officiis sed quis voluptate et.','1978-12-13'); +(4,4,'itaque','deleniti','Magni nam optio id recusandae.','2010-07-28'); INSERT INTO posts(id, author_id, title, description, content, inserted_date) VALUES -(5,5,'deserunt','temporibus','Mollitia reiciendis debitis est voluptatem est neque.','1979-12-06'); +(5,5,'ad','similique','Rerum tempore quis ut nesciunt qui excepturi est.','2006-10-09');