diff options
| author | 2017-02-09 04:36:04 -0500 | |
|---|---|---|
| committer | 2017-02-09 04:36:04 -0500 | |
| commit | d9aa870e5d509cc7309ab82dd102a937ab58613a (patch) | |
| tree | d92d03d76b5c390b335f1cfd761f1a0b59ec8496 /SQLiteStudio3/coreSQLiteStudio/parser/ast | |
| parent | 68ee4cbcbe424b95969c70346283a9f217f63825 (diff) | |
Imported Upstream version 3.1.1+dfsg1upstream/3.1.1+dfsg1
Diffstat (limited to 'SQLiteStudio3/coreSQLiteStudio/parser/ast')
3 files changed, 23 insertions, 3 deletions
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecolumntype.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecolumntype.cpp index cc773bb..2c48119 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecolumntype.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecolumntype.cpp @@ -60,7 +60,7 @@ TokenList SqliteColumnType::rebuildTokensFromContents() else if (scale.userType() == QVariant::LongLong) builder.withInteger(scale.toLongLong()); else if (scale.userType() == QVariant::Double) - builder.withFloat(scale.toDouble()); + builder.withFloat(scale); else builder.withOther(scale.toString()); @@ -72,7 +72,7 @@ TokenList SqliteColumnType::rebuildTokensFromContents() else if (precision.userType() == QVariant::LongLong) builder.withInteger(precision.toLongLong()); else if (precision.userType() == QVariant::Double) - builder.withFloat(precision.toDouble()); + builder.withFloat(precision); else builder.withOther(precision.toString()); } diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp index 3009b4b..5dc830b 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp @@ -124,6 +124,21 @@ void SqliteExpr::initSubExpr(SqliteExpr *expr) expr->setParent(this); } +void SqliteExpr::initRowValue(const QList<SqliteExpr*> &exprList) +{ + if (exprList.size() == 1) + { + initSubExpr(exprList.first()); + return; + } + + mode = SqliteExpr::Mode::ROW_VALUE; + this->exprList = exprList; + + for (SqliteExpr* expr : exprList) + expr->setParent(this); +} + void SqliteExpr::initBindParam(const QString& value) { mode = SqliteExpr::Mode::BIND_PARAM; @@ -158,7 +173,7 @@ void SqliteExpr::initFunction(const QString& fnName, int distinct, const QList<S else if (distinct == 2) allKw = true; - foreach (SqliteExpr* expr, exprList) + for (SqliteExpr* expr : exprList) expr->setParent(this); } @@ -496,6 +511,9 @@ TokenList SqliteExpr::rebuildTokensFromContents() case SqliteExpr::Mode::IN: builder.withTokens(rebuildIn()); break; + case SqliteExpr::Mode::ROW_VALUE: + builder.withParLeft().withStatementList(exprList).withParRight(); + break; case SqliteExpr::Mode::EXISTS: builder.withKeyword("EXISTS").withParLeft().withStatement(select).withParRight(); break; diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.h index f57004f..4d5bb03 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.h +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.h @@ -24,6 +24,7 @@ class API_EXPORT SqliteExpr : public SqliteStatement BINARY_OP, FUNCTION, SUB_EXPR, + ROW_VALUE, CAST, COLLATE, // in Sqlite2 exists only in expr of sortlist LIKE, @@ -69,6 +70,7 @@ class API_EXPORT SqliteExpr : public SqliteStatement void initNull(); void initCTime(const QString& name); void initSubExpr(SqliteExpr* expr); + void initRowValue(const QList<SqliteExpr*>& exprList); void initId(const QString& db, const QString& table, const QString& column); void initId(const QString& table, const QString& column); void initId(const QString& column); |
