diff --git a/src/sqlitetypes.cpp b/src/sqlitetypes.cpp index 8441dbc0..1cc251f0 100644 --- a/src/sqlitetypes.cpp +++ b/src/sqlitetypes.cpp @@ -243,15 +243,15 @@ QString identifier(antlr::RefAST ident) return sident; } -QString concatTextAST(antlr::RefAST t) +QString concatTextAST(antlr::RefAST t, bool withspace = false) { - QString stext; + QStringList stext; while(t != antlr::nullAST) { stext.append(t->getText().c_str()); t = t->getNextSibling(); } - return stext; + return stext.join(withspace ? " " : ""); } } @@ -388,10 +388,11 @@ void CreateTableWalker::parsecolumn(FieldPtr& f, antlr::RefAST c) case sqlite3TokenTypes::CHECK: { con = con->getNextSibling(); //LPAREN - check = concatTextAST(con); + check = concatTextAST(con, true); // remove parenthesis check.remove(check.length()-1, 1); check.remove(0,1); + check = check.trimmed(); } break; case sqlite3TokenTypes::DEFAULT: diff --git a/src/tests/testsqlobjects.cpp b/src/tests/testsqlobjects.cpp index 0c6176a3..211c44f2 100644 --- a/src/tests/testsqlobjects.cpp +++ b/src/tests/testsqlobjects.cpp @@ -218,7 +218,7 @@ void TestTable::createTableWithIn() Table tab = Table::parseSQL(sSQL); QVERIFY(tab.name() == "not_working"); - QVERIFY(tab.fields().at(1)->check() == "value IN ('a', 'b', 'c')"); + QVERIFY(tab.fields().at(1)->check() == "value IN ( 'a' , 'b' , 'c' )"); } QTEST_MAIN(TestTable)