aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/coreSQLiteStudio/completionhelper.cpp
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2025-01-16 01:57:37 -0500
committerLibravatarUnit 193 <unit193@unit193.net>2025-01-16 01:57:37 -0500
commit81a21e6ce040e7740de86340c8ea4dba30e69bc3 (patch)
tree95fc1741b907d5ba6d029a42d80092cb7c056c5e /SQLiteStudio3/coreSQLiteStudio/completionhelper.cpp
parent3565aad630864ecdbe53fdaa501ea708555b3c7c (diff)
New upstream version 3.4.13+dfsg.upstream/3.4.13+dfsgupstream
Diffstat (limited to 'SQLiteStudio3/coreSQLiteStudio/completionhelper.cpp')
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/completionhelper.cpp38
1 files changed, 34 insertions, 4 deletions
diff --git a/SQLiteStudio3/coreSQLiteStudio/completionhelper.cpp b/SQLiteStudio3/coreSQLiteStudio/completionhelper.cpp
index b38e42d..9d5640f 100644
--- a/SQLiteStudio3/coreSQLiteStudio/completionhelper.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/completionhelper.cpp
@@ -257,13 +257,13 @@ QList<ExpectedTokenPtr> CompletionHelper::getExpectedTokens(TokenPtr token)
results += getExpectedToken(ExpectedToken::OTHER, QString(), QString(), tr("Any word"));
break;
case Token::STRING:
- results += getExpectedToken(ExpectedToken::STRING);
+ results += getExpectedToken(ExpectedToken::STRING, "''", QString(), tr("String"));
break;
case Token::FLOAT:
- results += getExpectedToken(ExpectedToken::NUMBER);
+ results += getExpectedToken(ExpectedToken::NUMBER, QString(), QString(), tr("Number"));
break;
case Token::INTEGER:
- results += getExpectedToken(ExpectedToken::NUMBER);
+ results += getExpectedToken(ExpectedToken::NUMBER, QString(), QString(), tr("Number"));
break;
case Token::OPERATOR:
results += getExpectedToken(ExpectedToken::OPERATOR, token->value);
@@ -275,7 +275,7 @@ QList<ExpectedTokenPtr> CompletionHelper::getExpectedTokens(TokenPtr token)
results += getExpectedToken(ExpectedToken::OPERATOR, ")");
break;
case Token::BLOB:
- results += getExpectedToken(ExpectedToken::BLOB);
+ results += getExpectedToken(ExpectedToken::BLOB, "X''", QString(), tr("BLOB literal"));
break;
case Token::KEYWORD:
results += getExpectedToken(ExpectedToken::KEYWORD, token->value);
@@ -634,6 +634,9 @@ QList<ExpectedTokenPtr> CompletionHelper::getColumns(const QString &prefixTable)
label = prefixTable+" = "+table;
}
+ if (!dbName.isNull())
+ dbName = translateDatabase(dbName);
+
// CREATE TRIGGER has a special "old" and "new" keywords as aliases for deleted/inserted/updated rows.
// They should refer to a table that the trigger is created for.
QString tableLower = table;
@@ -1070,6 +1073,10 @@ void CompletionHelper::extractQueryAdditionalInfo()
{
context = Context::EXPR;
}
+ else if (isInInsertColumns())
+ {
+ context = Context::INSERT_COLUMNS;
+ }
else if (isInUpdateReturning())
{
context = Context::UPDATE_RETURNING;
@@ -1179,6 +1186,29 @@ bool CompletionHelper::isInInsertReturning()
return isIn(SqliteQueryType::Insert, "returning", "RETURNING");
}
+bool CompletionHelper::isInInsertColumns()
+{
+ if (isIn(SqliteQueryType::Insert, "idlist_opt", QString()))
+ return true;
+
+ if (!parsedQuery)
+ return false;
+
+ if (parsedQuery->queryType != SqliteQueryType::Insert)
+ return false;
+
+ if (parsedQuery->tokensMap.contains("rp_opt"))
+ {
+ TokenList rpTokens = parsedQuery->tokensMap["rp_opt"];
+ if (rpTokens.isEmpty())
+ return parsedQuery->tokensMap["LP"][0]->start <= cursorPosition;
+ else
+ return rpTokens[0]->start >= cursorPosition;
+ }
+
+ return false;
+}
+
bool CompletionHelper::isIn(SqliteQueryType queryType, const QString &tokenMapKey, const QString &prefixKeyword)
{
if (!parsedQuery)