diff options
| author | 2018-07-27 23:54:15 -0400 | |
|---|---|---|
| committer | 2018-07-27 23:54:15 -0400 | |
| commit | 6d3d39356473078c6b47e03b8a7616e4b34de928 (patch) | |
| tree | fe5be2e6a08e4cfc73207746aba4c9fccfecfa10 /SQLiteStudio3/Tests/SelectResolverTest | |
| parent | f98e49169a40876bcf1df832de6e908d1b350193 (diff) | |
| parent | feda8a7db8d1d7c5439aa8f8feef7cc0dd2b59a0 (diff) | |
Update upstream source from tag 'upstream/3.2.1+dfsg1'
Update to upstream version '3.2.1+dfsg1'
with Debian dir 5ea0333565de4dc898c062cc0ff4ba1153e2c1e4
Diffstat (limited to 'SQLiteStudio3/Tests/SelectResolverTest')
| -rw-r--r-- | SQLiteStudio3/Tests/SelectResolverTest/tst_selectresolvertest.cpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/SQLiteStudio3/Tests/SelectResolverTest/tst_selectresolvertest.cpp b/SQLiteStudio3/Tests/SelectResolverTest/tst_selectresolvertest.cpp index 2d6762e..13a30a9 100644 --- a/SQLiteStudio3/Tests/SelectResolverTest/tst_selectresolvertest.cpp +++ b/SQLiteStudio3/Tests/SelectResolverTest/tst_selectresolvertest.cpp @@ -27,7 +27,9 @@ class SelectResolverTest : public QObject void testTableHash(); void testColumnHash(); void testWithCommonTableExpression(); + void testWithCte2(); void testStarWithJoinAndError(); + void testTableFunction(); void test1(); void testSubselectWithAlias(); }; @@ -196,6 +198,26 @@ void SelectResolverTest::testWithCommonTableExpression() QVERIFY(coreColumns[0].flags & SelectResolver::Flag::FROM_CTE_SELECT); } +void SelectResolverTest::testWithCte2() +{ + QString sql = "with m(c1, c2) as (" + " values (1, 'a'), (2, 'b'), (3, 'c')" + ")" + "select * from m"; + + SelectResolver resolver(db, sql); + Parser parser(db->getDialect()); + QVERIFY(parser.parse(sql)); + + QList<QList<SelectResolver::Column>> columns = resolver.resolve(parser.getQueries().first().dynamicCast<SqliteSelect>().data()); + QList<SelectResolver::Column> coreColumns = columns.first(); + QVERIFY(coreColumns.size() == 2); + QVERIFY(coreColumns[0].type == SelectResolver::Column::COLUMN); + QVERIFY(coreColumns[0].flags & SelectResolver::Flag::FROM_CTE_SELECT); + QVERIFY(coreColumns[1].type == SelectResolver::Column::COLUMN); + QVERIFY(coreColumns[1].flags & SelectResolver::Flag::FROM_CTE_SELECT); +} + void SelectResolverTest::testStarWithJoinAndError() { QString sql = "SELECT t1.*, t2.* FROM test t1 JOIN test2 USING (col1)"; @@ -208,6 +230,27 @@ void SelectResolverTest::testStarWithJoinAndError() QVERIFY(resolver.hasErrors()); } +void SelectResolverTest::testTableFunction() +{ + QString sql = "select * from json_tree(json_array(1, 2, 3))"; + SelectResolver resolver(db, sql); + Parser parser(db->getDialect()); + QVERIFY(parser.parse(sql)); + + SqlQueryPtr versionResult = db->exec("select sqlite_version()"); + qDebug() << "SQLite3 version:" << versionResult->getSingleCell().toString(); + + SqliteSelectPtr select = parser.getQueries().first().dynamicCast<SqliteSelect>(); + QList<QList<SelectResolver::Column> > columns = resolver.resolve(select.data()); + if (resolver.hasErrors()) { + for (const QString& err : resolver.getErrors()) + qWarning() << err; + } + QVERIFY(!resolver.hasErrors()); + QVERIFY(columns.first().size() == 8); + QVERIFY(columns.first().first().type == SelectResolver::Column::OTHER); +} + void SelectResolverTest::test1() { QString sql = "SELECT * FROM (SELECT count(col1), col2 FROM test)"; |
