diff options
| author | 2025-01-16 01:58:22 -0500 | |
|---|---|---|
| committer | 2025-01-16 01:58:22 -0500 | |
| commit | a5ae79be08125b31bb6b8d9703090a98c6fd2e30 (patch) | |
| tree | 569ee612c9de85b2bb423efa485688ef1d43852e /SQLiteStudio3/coreSQLiteStudio/completionhelper.cpp | |
| parent | 21966b4f924b0a1933d9662e75ff253bd154fdb7 (diff) | |
| parent | 81a21e6ce040e7740de86340c8ea4dba30e69bc3 (diff) | |
Update upstream source from tag 'upstream/3.4.13+dfsg'
Update to upstream version '3.4.13+dfsg'
with Debian dir bf81ee0219cb8e4562a4751df17d75814772d2d6
Diffstat (limited to 'SQLiteStudio3/coreSQLiteStudio/completionhelper.cpp')
| -rw-r--r-- | SQLiteStudio3/coreSQLiteStudio/completionhelper.cpp | 38 |
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) |
