diff options
| author | 2017-02-09 04:37:26 -0500 | |
|---|---|---|
| committer | 2017-02-09 04:37:26 -0500 | |
| commit | c9d6debf9015b7853c3e061bbc64a555d85e2fcd (patch) | |
| tree | 53341bc57ae9fbad2beb5b6c08d97a68bee0ec8e /SQLiteStudio3/coreSQLiteStudio/parser/ast | |
| parent | d5caba2b1f36dc3b92fa705a06097d0597fa2ddd (diff) | |
| parent | d9aa870e5d509cc7309ab82dd102a937ab58613a (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/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); |
