From feda8a7db8d1d7c5439aa8f8feef7cc0dd2b59a0 Mon Sep 17 00:00:00 2001 From: Unit 193 Date: Fri, 27 Jul 2018 23:51:12 -0400 Subject: New upstream version 3.2.1+dfsg1 --- .../SelectResolverTest/tst_selectresolvertest.cpp | 43 ++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'SQLiteStudio3/Tests/SelectResolverTest') 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> columns = resolver.resolve(parser.getQueries().first().dynamicCast().data()); + QList 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(); + QList > 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)"; -- cgit v1.2.3