aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/Tests/SelectResolverTest
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@ubuntu.com>2018-07-27 23:54:15 -0400
committerLibravatarUnit 193 <unit193@ubuntu.com>2018-07-27 23:54:15 -0400
commit6d3d39356473078c6b47e03b8a7616e4b34de928 (patch)
treefe5be2e6a08e4cfc73207746aba4c9fccfecfa10 /SQLiteStudio3/Tests/SelectResolverTest
parentf98e49169a40876bcf1df832de6e908d1b350193 (diff)
parentfeda8a7db8d1d7c5439aa8f8feef7cc0dd2b59a0 (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.cpp43
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)";