aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/Tests/SelectResolverTest/tst_selectresolvertest.cpp
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@ubuntu.com>2017-02-09 04:37:26 -0500
committerLibravatarUnit 193 <unit193@ubuntu.com>2017-02-09 04:37:26 -0500
commitc9d6debf9015b7853c3e061bbc64a555d85e2fcd (patch)
tree53341bc57ae9fbad2beb5b6c08d97a68bee0ec8e /SQLiteStudio3/Tests/SelectResolverTest/tst_selectresolvertest.cpp
parentd5caba2b1f36dc3b92fa705a06097d0597fa2ddd (diff)
parentd9aa870e5d509cc7309ab82dd102a937ab58613a (diff)
Merge tag 'upstream/3.1.1+dfsg1'
Upstream version 3.1.1+dfsg1 # gpg: Signature made Thu 09 Feb 2017 04:37:24 AM EST # gpg: using RSA key 5001E1B09AA3744B # gpg: issuer "unit193@ubuntu.com" # gpg: Good signature from "Unit 193 <unit193@ubuntu.com>" [unknown] # gpg: aka "Unit 193 <unit193@gmail.com>" [unknown] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 8DB3 E586 865D 2B4A 2B18 5A5C 5001 E1B0 9AA3 744B
Diffstat (limited to 'SQLiteStudio3/Tests/SelectResolverTest/tst_selectresolvertest.cpp')
-rw-r--r--SQLiteStudio3/Tests/SelectResolverTest/tst_selectresolvertest.cpp35
1 files changed, 28 insertions, 7 deletions
diff --git a/SQLiteStudio3/Tests/SelectResolverTest/tst_selectresolvertest.cpp b/SQLiteStudio3/Tests/SelectResolverTest/tst_selectresolvertest.cpp
index 969ebad..2d6762e 100644
--- a/SQLiteStudio3/Tests/SelectResolverTest/tst_selectresolvertest.cpp
+++ b/SQLiteStudio3/Tests/SelectResolverTest/tst_selectresolvertest.cpp
@@ -29,6 +29,7 @@ class SelectResolverTest : public QObject
void testWithCommonTableExpression();
void testStarWithJoinAndError();
void test1();
+ void testSubselectWithAlias();
};
SelectResolverTest::SelectResolverTest()
@@ -42,28 +43,28 @@ void SelectResolverTest::testTableHash()
SelectResolver::Table t1;
t1.database = "d1";
t1.table = "t1";
- t1.alias = "a1";
+ t1.tableAlias = "a1";
tables << t1;
// different alias and database
SelectResolver::Table t2;
t2.database = "d2";
t2.table = "t1";
- t2.alias = QString::null;
+ t2.tableAlias = QString::null;
tables << t2;
// different database
SelectResolver::Table t3;
t3.database = "d2";
t3.table = "t1";
- t3.alias = "a1";
+ t3.tableAlias = "a1";
tables << t3;
// same as t3
SelectResolver::Table t4;
t4.database = "d2";
t4.table = "t1";
- t4.alias = "a1";
+ t4.tableAlias = "a1";
tables << t4;
// all null
@@ -78,21 +79,21 @@ void SelectResolverTest::testTableHash()
SelectResolver::Table t7;
t7.database = "x";
t7.table = "t1";
- t7.alias = "a1";
+ t7.tableAlias = "a1";
tables << t7;
// similar to t1, but different table
SelectResolver::Table t8;
t8.database = "d1";
t8.table = "x";
- t8.alias = "a1";
+ t8.tableAlias = "a1";
tables << t8;
// similar to t1, but different alias
SelectResolver::Table t9;
t9.database = "d1";
t9.table = "t1";
- t9.alias = "x";
+ t9.tableAlias = "x";
tables << t9;
QVERIFY(tables.size() == 7);
@@ -222,6 +223,26 @@ void SelectResolverTest::test1()
QVERIFY(coreColumns[1].column == "col2");
}
+void SelectResolverTest::testSubselectWithAlias()
+{
+ QString sql = "SELECT * FROM (SELECT m.col1, m.col2, secm.col3 FROM test AS m LEFT OUTER JOIN test AS secm ON secm.col1 = m.col2) alias3;";
+ 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[0].tableAlias == "alias3");
+ QVERIFY(coreColumns[1].tableAlias == "alias3");
+ QVERIFY(coreColumns[2].tableAlias == "alias3");
+ QVERIFY(coreColumns[0].oldTableAliases.size() == 1);
+ QVERIFY(coreColumns[1].oldTableAliases.size() == 1);
+ QVERIFY(coreColumns[2].oldTableAliases.size() == 1);
+ QVERIFY(coreColumns[0].oldTableAliases.first() == "m");
+ QVERIFY(coreColumns[1].oldTableAliases.first() == "m");
+ QVERIFY(coreColumns[2].oldTableAliases.first() == "secm");
+}
+
void SelectResolverTest::initTestCase()
{
initKeywords();