aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/coreSQLiteStudio/parser/ast
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/coreSQLiteStudio/parser/ast
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/coreSQLiteStudio/parser/ast')
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecolumntype.cpp4
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.cpp20
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteexpr.h2
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);