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/common | |
| 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/common')
| -rw-r--r-- | SQLiteStudio3/coreSQLiteStudio/common/utils_sql.cpp | 62 | ||||
| -rw-r--r-- | SQLiteStudio3/coreSQLiteStudio/common/utils_sql.h | 2 |
2 files changed, 36 insertions, 28 deletions
diff --git a/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.cpp b/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.cpp index 0122352..4b54090 100644 --- a/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.cpp @@ -14,6 +14,7 @@ QString invalidIdCharacters = "[](){}\"'@*.,+-=/#$%&|:; \t\n<>"; QHash<NameWrapper,QPair<QChar,QChar>> wrapperChars; QHash<NameWrapper,QPair<QChar,bool>> wrapperEscapedEnding; QList<NameWrapper> sqlite3Wrappers; +QSet<QString> sqlite3ReservedLiterals = {"true", "false"}; // true/false as column names - #5065 void initUtilsSql() { @@ -58,9 +59,17 @@ bool doesObjectNeedWrapping(const QString& str) if (str[0].isDigit()) return true; + if (isReservedLiteral(str)) + return true; + return false; } +bool isReservedLiteral(const QString& str) +{ + return sqlite3ReservedLiterals.contains(str.toLower()); +} + bool doesObjectNeedWrapping(const QChar& c) { return invalidIdCharacters.indexOf(c) >= 0; @@ -822,38 +831,35 @@ QStringList valueListToSqlList(const QVariantList& values) { QStringList argList; for (const QVariant& value : values) - { - if (!value.isValid() || value.isNull()) - { - argList << "NULL"; - continue; - } + argList << valueToSqlLiteral(value); - switch (value.userType()) - { - case QVariant::Int: - case QVariant::UInt: - case QVariant::LongLong: - case QVariant::ULongLong: - argList << value.toString(); - break; - case QVariant::Double: - argList << doubleToString(value); - break; - case QVariant::Bool: - argList << QString::number(value.toInt()); - break; - case QVariant::ByteArray: - argList << "X'" + value.toByteArray().toHex().toUpper() + "'"; - break; - default: - argList << wrapString(escapeString(value.toString())); - break; - } - } return argList; } +QString valueToSqlLiteral(const QVariant& value) +{ + if (!value.isValid() || value.isNull()) + return "NULL"; + + switch (value.userType()) + { + case QVariant::Int: + case QVariant::UInt: + case QVariant::LongLong: + case QVariant::ULongLong: + return value.toString(); + case QVariant::Double: + return doubleToString(value); + case QVariant::Bool: + return QString::number(value.toInt()); + case QVariant::ByteArray: + return "X'" + value.toByteArray().toHex().toUpper() + "'"; + default: + break; + } + return wrapString(escapeString(value.toString())); +} + QStringList wrapStrings(const QStringList& strList) { QStringList list; diff --git a/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.h b/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.h index 353faf3..0c201e3 100644 --- a/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.h +++ b/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.h @@ -44,6 +44,7 @@ API_EXPORT bool doesObjectNeedWrapping(const QChar& c); API_EXPORT bool isObjectWrapped(const QChar& c); API_EXPORT bool doesStringNeedWrapping(const QString& str); API_EXPORT bool isStringWrapped(const QString& str); +API_EXPORT bool isReservedLiteral(const QString& str); API_EXPORT QString wrapObjIfNeeded(const QString& obj, NameWrapper favWrapper = NameWrapper::null); API_EXPORT QString wrapObjIfNeeded(const QString& obj, bool useDoubleQuoteForEmptyValue, NameWrapper favWrapper = NameWrapper::null); API_EXPORT QString wrapObjName(const QString& obj, NameWrapper favWrapper = NameWrapper::null); @@ -88,6 +89,7 @@ API_EXPORT QString commentAllSqlLines(const QString& sql); API_EXPORT QString getBindTokenName(const TokenPtr& token); API_EXPORT QueryAccessMode getQueryAccessMode(const QString& query, bool* isSelect = nullptr); API_EXPORT QStringList valueListToSqlList(const QList<QVariant>& values); +API_EXPORT QString valueToSqlLiteral(const QVariant& value); API_EXPORT QString trimQueryEnd(const QString& query); API_EXPORT QByteArray blobFromLiteral(const QString& value); |
