diff options
author | Tamas Bunth <tamas.bunth@collabora.co.uk> | 2018-06-26 12:27:57 +0200 |
---|---|---|
committer | Tamás Bunth <btomi96@gmail.com> | 2018-07-06 10:33:48 +0200 |
commit | 8f3d6e67b08ed1bce9bc989e5e3df92c4d9d95d3 (patch) | |
tree | 090693bcf6074ace894d37a6b40c0dab01706c6f /dbaccess/qa | |
parent | 2b0a7c346f8e3c5823a9e032a4501f20bc712914 (diff) |
tdf#117867 dbahsql: Migrate default values
Default Value "NOW" is a special case, because Firebird likes it with
single quotes. In contrast, HSQLDB uses the keyword without quotes.
Add unit test for parsing default value "NOW"
Change-Id: I34886f8ae53e98addb52bf5e85030a03721d6a45
Reviewed-on: https://gerrit.libreoffice.org/56454
Tested-by: Jenkins
Reviewed-by: Tamás Bunth <btomi96@gmail.com>
Diffstat (limited to 'dbaccess/qa')
-rw-r--r-- | dbaccess/qa/extras/hsql_schema_import.cxx | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/dbaccess/qa/extras/hsql_schema_import.cxx b/dbaccess/qa/extras/hsql_schema_import.cxx index a04e3697ecfb..892be33d15e7 100644 --- a/dbaccess/qa/extras/hsql_schema_import.cxx +++ b/dbaccess/qa/extras/hsql_schema_import.cxx @@ -41,6 +41,7 @@ public: void testNumericWithTwoParam(); void testIntegerAutoincremental(); void testTimestampWithParam(); + void testDefaultValueNow(); // TODO testForeign, testDecomposer CPPUNIT_TEST_SUITE(HsqlSchemaImportTest); @@ -51,6 +52,7 @@ public: CPPUNIT_TEST(testNumericWithTwoParam); CPPUNIT_TEST(testIntegerAutoincremental); CPPUNIT_TEST(testTimestampWithParam); + CPPUNIT_TEST(testDefaultValueNow); CPPUNIT_TEST_SUITE_END(); }; @@ -174,6 +176,27 @@ void HsqlSchemaImportTest::testTimestampWithParam() CPPUNIT_ASSERT(fbSql.indexOf("0") < 0); //does not contain } +/** + * Special case: + * HSQLDB uses keyword NOW without quotes. Firebird uses single quotes 'NOW' + */ +void HsqlSchemaImportTest::testDefaultValueNow() +{ + OUString sql{ "CREATE CACHED TABLE \"myTable\"(\"id\" INTEGER NOT NULL PRIMARY KEY, \"myDate\" " + "TIMESTAMP DEFAULT NOW)" }; + + FbCreateStmtParser aCreateParser; + aCreateParser.parse(sql); + + const auto& columns = aCreateParser.getColumnDef(); + const ColumnDefinition* colTimeStamp = lcl_findByType(columns, css::sdbc::DataType::TIMESTAMP); + + CPPUNIT_ASSERT(colTimeStamp != nullptr); + CPPUNIT_ASSERT_EQUAL(OUString{ "NOW" }, colTimeStamp->getDefault()); // parsed NOW + OUString fbSql = aCreateParser.compose(); + CPPUNIT_ASSERT(fbSql.indexOf("\'NOW\'") > 0); // composed 'NOW' +} + CPPUNIT_TEST_SUITE_REGISTRATION(HsqlSchemaImportTest); CPPUNIT_PLUGIN_IMPLEMENT(); |