diff options
| author | Marco Bubke <[email protected]> | 2021-05-06 15:27:51 +0000 |
|---|---|---|
| committer | Tim Jenssen <[email protected]> | 2021-05-06 15:30:02 +0000 |
| commit | f0a86d45104f585b7aeef07fcc68cea24061aedb (patch) | |
| tree | 6f2bb2de1ed9a81b420c20198c7c629a6f69a802 /src/libs/sqlite | |
| parent | 53c0b82a93df3e79ae1f8f896e9cd164148bebf8 (diff) | |
Revert "Merge remote-tracking branch 'origin/4.15'"
This reverts commit 888ca0dd20ff647970fc85340e108cfa34d78c3a.
Reason for revert: wrong patchset
Change-Id: I1291789938601aaf606c59917ff938e3c24c78dd
Reviewed-by: Tim Jenssen <[email protected]>
Diffstat (limited to 'src/libs/sqlite')
| -rw-r--r-- | src/libs/sqlite/CMakeLists.txt | 22 | ||||
| -rw-r--r-- | src/libs/sqlite/createtablesqlstatementbuilder.cpp | 4 | ||||
| -rw-r--r-- | src/libs/sqlite/sqlite-lib.pri | 13 | ||||
| -rw-r--r-- | src/libs/sqlite/sqlitebasestatement.cpp | 2 | ||||
| -rw-r--r-- | src/libs/sqlite/sqlitebasestatement.h | 230 | ||||
| -rw-r--r-- | src/libs/sqlite/sqlitecolumn.h | 2 | ||||
| -rw-r--r-- | src/libs/sqlite/sqlitedatabasebackend.cpp | 2 | ||||
| -rw-r--r-- | src/libs/sqlite/sqliteglobal.h | 2 | ||||
| -rw-r--r-- | src/libs/sqlite/sqlitelibraryinitializer.cpp | 47 | ||||
| -rw-r--r-- | src/libs/sqlite/sqlitelibraryinitializer.h | 42 | ||||
| -rw-r--r-- | src/libs/sqlite/sqlitesessionchangeset.cpp | 2 | ||||
| -rw-r--r-- | src/libs/sqlite/sqlitesessions.cpp | 2 | ||||
| -rw-r--r-- | src/libs/sqlite/sqlitetable.h | 2 | ||||
| -rw-r--r-- | src/libs/sqlite/sqlstatementbuilder.cpp | 18 |
14 files changed, 239 insertions, 151 deletions
diff --git a/src/libs/sqlite/CMakeLists.txt b/src/libs/sqlite/CMakeLists.txt index 42de2ce9e99..4bf3ae91df0 100644 --- a/src/libs/sqlite/CMakeLists.txt +++ b/src/libs/sqlite/CMakeLists.txt @@ -1,7 +1,16 @@ add_qtc_library(Sqlite PUBLIC_DEFINES BUILD_SQLITE_LIBRARY - SQLITE_CORE + SQLITE_THREADSAFE=2 SQLITE_ENABLE_FTS5 SQLITE_ENABLE_UNLOCK_NOTIFY + SQLITE_ENABLE_JSON1 SQLITE_DEFAULT_FOREIGN_KEYS=1 SQLITE_TEMP_STORE=2 + SQLITE_DEFAULT_WAL_SYNCHRONOUS=1 SQLITE_MAX_WORKER_THREADS SQLITE_DEFAULT_MEMSTATUS=0 + SQLITE_OMIT_DEPRECATED SQLITE_OMIT_DECLTYPE + SQLITE_MAX_EXPR_DEPTH=0 SQLITE_OMIT_SHARED_CACHE SQLITE_USE_ALLOCA + SQLITE_ENABLE_MEMORY_MANAGEMENT SQLITE_ENABLE_NULL_TRIM SQLITE_OMIT_EXPLAIN + SQLITE_OMIT_LOAD_EXTENSION SQLITE_OMIT_UTF16 SQLITE_DQS=0 + SQLITE_ENABLE_STAT4 HAVE_ISNAN HAVE_FDATASYNC HAVE_MALLOC_USABLE_SIZE + SQLITE_DEFAULT_MMAP_SIZE=268435456 SQLITE_CORE SQLITE_ENABLE_SESSION SQLITE_ENABLE_PREUPDATE_HOOK + SQLITE_LIKE_DOESNT_MATCH_BLOBS DEPENDS Qt5::Core Threads::Threads ${CMAKE_DL_LIBS} PUBLIC_INCLUDES "${CMAKE_CURRENT_LIST_DIR}" @@ -10,8 +19,6 @@ add_qtc_library(Sqlite ../3rdparty/sqlite/sqlite3.c ../3rdparty/sqlite/sqlite3.h ../3rdparty/sqlite/carray.c - ../3rdparty/sqlite/config.h - ../3rdparty/sqlite/sqlite.h constraints.h createtablesqlstatementbuilder.cpp createtablesqlstatementbuilder.h lastchangedrowid.h @@ -39,13 +46,4 @@ add_qtc_library(Sqlite utf8stringvector.cpp utf8stringvector.h sqliteblob.h sqlitetimestamp.h - sqlitelibraryinitializer.cpp sqlitelibraryinitializer.h ) - -extend_qtc_library(Sqlite DEFINES _HAVE_SQLITE_CONFIG_H) - -if (APPLE) -extend_qtc_library(Sqlite DEFINES _BSD_SOURCE) -elseif (UNIX) -extend_qtc_library(Sqlite DEFINES _POSIX_C_SOURCE=200809L _GNU_SOURCE _DEFAULT_SOURCE) -endif() diff --git a/src/libs/sqlite/createtablesqlstatementbuilder.cpp b/src/libs/sqlite/createtablesqlstatementbuilder.cpp index de77eec5769..07008a9a1da 100644 --- a/src/libs/sqlite/createtablesqlstatementbuilder.cpp +++ b/src/libs/sqlite/createtablesqlstatementbuilder.cpp @@ -248,9 +248,7 @@ void CreateTableSqlStatementBuilder::bindColumnDefinitionsAndTableConstraints() columnDefinitionStrings.reserve(m_columns.size()); for (const Column &column : m_columns) { - Utils::SmallString columnDefinitionString = {column.name, - SqlStatementBuilder::columnTypeToString( - column.type)}; + Utils::SmallString columnDefinitionString = {column.name, " ", column.typeString()}; ContraintsVisiter visiter{columnDefinitionString}; diff --git a/src/libs/sqlite/sqlite-lib.pri b/src/libs/sqlite/sqlite-lib.pri index 59d34a61c2f..87b63eb388e 100644 --- a/src/libs/sqlite/sqlite-lib.pri +++ b/src/libs/sqlite/sqlite-lib.pri @@ -15,7 +15,6 @@ SOURCES += \ $$PWD/sqlitedatabasebackend.cpp \ $$PWD/sqliteexception.cpp \ $$PWD/sqliteglobal.cpp \ - $$PWD/sqlitelibraryinitializer.cpp \ $$PWD/sqlitesessionchangeset.cpp \ $$PWD/sqlitesessions.cpp \ $$PWD/sqlstatementbuilder.cpp \ @@ -26,7 +25,6 @@ SOURCES += \ HEADERS += \ $$PWD/constraints.h \ $$PWD/sqliteblob.h \ - $$PWD/sqlitelibraryinitializer.h \ $$PWD/sqlitetimestamp.h \ $$PWD/tableconstraints.h \ $$PWD/createtablesqlstatementbuilder.h \ @@ -52,7 +50,16 @@ HEADERS += \ $$PWD/sqliteindex.h \ $$PWD/sqlitebasestatement.h -DEFINES += _HAVE_SQLITE_CONFIG_H SQLITE_CORE +DEFINES += SQLITE_THREADSAFE=2 SQLITE_ENABLE_FTS5 SQLITE_ENABLE_UNLOCK_NOTIFY \ + SQLITE_ENABLE_JSON1 SQLITE_DEFAULT_FOREIGN_KEYS=1 SQLITE_TEMP_STORE=2 \ + SQLITE_DEFAULT_WAL_SYNCHRONOUS=1 SQLITE_MAX_WORKER_THREADS SQLITE_DEFAULT_MEMSTATUS=0 \ + SQLITE_OMIT_DEPRECATED SQLITE_OMIT_DECLTYPE \ + SQLITE_MAX_EXPR_DEPTH=0 SQLITE_OMIT_SHARED_CACHE SQLITE_USE_ALLOCA \ + SQLITE_ENABLE_MEMORY_MANAGEMENT SQLITE_ENABLE_NULL_TRIM SQLITE_OMIT_EXPLAIN \ + SQLITE_OMIT_LOAD_EXTENSION SQLITE_OMIT_UTF16 SQLITE_DQS=0 \ + SQLITE_ENABLE_STAT4 HAVE_ISNAN HAVE_FDATASYNC HAVE_MALLOC_USABLE_SIZE \ + SQLITE_DEFAULT_MMAP_SIZE=268435456 SQLITE_CORE SQLITE_ENABLE_SESSION SQLITE_ENABLE_PREUPDATE_HOOK \ + SQLITE_LIKE_DOESNT_MATCH_BLOBS CONFIG(debug, debug|release): DEFINES += SQLITE_ENABLE_API_ARMOR diff --git a/src/libs/sqlite/sqlitebasestatement.cpp b/src/libs/sqlite/sqlitebasestatement.cpp index 28ebbb8d2ea..6e60133511a 100644 --- a/src/libs/sqlite/sqlitebasestatement.cpp +++ b/src/libs/sqlite/sqlitebasestatement.cpp @@ -29,7 +29,7 @@ #include "sqlitedatabasebackend.h" #include "sqliteexception.h" -#include "sqlite.h" +#include "sqlite3.h" #include <condition_variable> #include <mutex> diff --git a/src/libs/sqlite/sqlitebasestatement.h b/src/libs/sqlite/sqlitebasestatement.h index c96fb3faded..019a7a44f3e 100644 --- a/src/libs/sqlite/sqlitebasestatement.h +++ b/src/libs/sqlite/sqlitebasestatement.h @@ -29,6 +29,7 @@ #include "sqliteblob.h" #include "sqliteexception.h" +#include "sqlitetransaction.h" #include "sqlitevalue.h" #include <utils/smallstringvector.h> @@ -37,6 +38,7 @@ #include <utils/span.h> #include <cstdint> +#include <exception> #include <functional> #include <memory> #include <tuple> @@ -91,6 +93,7 @@ public: void bind(int index, Utils::span<const char *> values); void bind(int index, Utils::SmallStringView value); void bind(int index, const Value &value); + void bind(int index, ValueView value); void bind(int index, BlobView blobView); void bind(int index, uint value) { bind(index, static_cast<long long>(value)); } @@ -162,13 +165,14 @@ extern template SQLITE_EXPORT Utils::PathString BaseStatement::fetchValue<Utils: template<typename BaseStatement, int ResultCount> class StatementImplementation : public BaseStatement { + struct Resetter; public: using BaseStatement::BaseStatement; void execute() { - Resetter resetter{*this}; + Resetter resetter{this}; BaseStatement::next(); resetter.reset(); } @@ -178,15 +182,14 @@ public: template<typename... ValueType> void bindValues(const ValueType&... values) { - int index = 0; - (BaseStatement::bind(++index, values), ...); + bindValuesByIndex(1, values...); } template<typename... ValueType> void write(const ValueType&... values) { - Resetter resetter{*this}; - bindValues(values...); + Resetter resetter{this}; + bindValuesByIndex(1, values...); BaseStatement::next(); resetter.reset(); } @@ -194,7 +197,7 @@ public: template<typename ResultType> std::vector<ResultType> values(std::size_t reserveSize) { - Resetter resetter{*this}; + Resetter resetter{this}; std::vector<ResultType> resultValues; resultValues.reserve(std::max(reserveSize, m_maximumResultCount)); @@ -211,7 +214,7 @@ public: template<typename ResultType, typename... QueryTypes> auto values(std::size_t reserveSize, const QueryTypes &...queryValues) { - Resetter resetter{*this}; + Resetter resetter{this}; std::vector<ResultType> resultValues; resultValues.reserve(std::max(reserveSize, m_maximumResultCount)); @@ -230,13 +233,13 @@ public: template<typename ResultType, typename... QueryTypes> auto value(const QueryTypes &...queryValues) { - Resetter resetter{*this}; + Resetter resetter{this}; Utils::optional<ResultType> resultValue; bindValues(queryValues...); if (BaseStatement::next()) - resultValue = assignValue<Utils::optional<ResultType>>(); + resultValue = createOptionalValue<Utils::optional<ResultType>>(); resetter.reset(); @@ -258,7 +261,7 @@ public: template<typename Callable, typename... QueryTypes> void readCallback(Callable &&callable, const QueryTypes &...queryValues) { - Resetter resetter{*this}; + Resetter resetter{this}; bindValues(queryValues...); @@ -272,10 +275,10 @@ public: resetter.reset(); } - template<int ResultTypeCount = 1, typename Container, typename... QueryTypes> + template<typename Container, typename... QueryTypes> void readTo(Container &container, const QueryTypes &...queryValues) { - Resetter resetter{*this}; + Resetter resetter{this}; bindValues(queryValues...); @@ -285,39 +288,187 @@ public: resetter.reset(); } + template<typename ResultType, typename... QueryTypes> + auto range(const QueryTypes &...queryValues) + { + return SqliteResultRange<ResultType>{*this, queryValues...}; + } + + template<typename ResultType, typename... QueryTypes> + auto rangeWithTransaction(const QueryTypes &...queryValues) + { + return SqliteResultRangeWithTransaction<ResultType>{*this, queryValues...}; + } + + template<typename ResultType> + class BaseSqliteResultRange + { + public: + class SqliteResultIteratator + { + public: + using iterator_category = std::input_iterator_tag; + using difference_type = int; + using value_type = ResultType; + using pointer = ResultType *; + using reference = ResultType &; + + SqliteResultIteratator(StatementImplementation &statement) + : m_statement{statement} + , m_hasNext{m_statement.next()} + {} + + SqliteResultIteratator(StatementImplementation &statement, bool hasNext) + : m_statement{statement} + , m_hasNext{hasNext} + {} + + SqliteResultIteratator &operator++() + { + m_hasNext = m_statement.next(); + return *this; + } + + void operator++(int) { m_hasNext = m_statement.next(); } + + friend bool operator==(const SqliteResultIteratator &first, + const SqliteResultIteratator &second) + { + return first.m_hasNext == second.m_hasNext; + } + + friend bool operator!=(const SqliteResultIteratator &first, + const SqliteResultIteratator &second) + { + return !(first == second); + } + + value_type operator*() const { return m_statement.createValue<ResultType>(); } + + private: + StatementImplementation &m_statement; + bool m_hasNext = false; + }; + + using value_type = ResultType; + using iterator = SqliteResultIteratator; + using const_iterator = iterator; + + template<typename... QueryTypes> + BaseSqliteResultRange(StatementImplementation &statement, const QueryTypes &...queryValues) + : m_statement{statement} + { + statement.bindValues(queryValues...); + } + + BaseSqliteResultRange(BaseSqliteResultRange &) = delete; + BaseSqliteResultRange &operator=(BaseSqliteResultRange &) = delete; + + BaseSqliteResultRange(BaseSqliteResultRange &&other) + : m_statement{std::move(other.resetter)} + {} + BaseSqliteResultRange &operator=(BaseSqliteResultRange &&) = delete; + + iterator begin() & { return iterator{m_statement}; } + iterator end() & { return iterator{m_statement, false}; } + + const_iterator begin() const & { return iterator{m_statement}; } + const_iterator end() const & { return iterator{m_statement, false}; } + + private: + StatementImplementation &m_statement; + }; + + template<typename ResultType> + class SqliteResultRange : public BaseSqliteResultRange<ResultType> + { + public: + template<typename... QueryTypes> + SqliteResultRange(StatementImplementation &statement, const QueryTypes &...queryValues) + : BaseSqliteResultRange<ResultType>{statement} + , resetter{&statement} + + { + statement.bindValues(queryValues...); + } + + ~SqliteResultRange() + { + if (!std::uncaught_exceptions()) + resetter.reset(); + } + + private: + Resetter resetter; + }; + + template<typename ResultType> + class SqliteResultRangeWithTransaction : public BaseSqliteResultRange<ResultType> + { + public: + template<typename... QueryTypes> + SqliteResultRangeWithTransaction(StatementImplementation &statement, + const QueryTypes &...queryValues) + : BaseSqliteResultRange<ResultType>{statement} + , m_transaction{statement.database()} + , resetter{&statement} + { + statement.bindValues(queryValues...); + } + + ~SqliteResultRangeWithTransaction() + { + if (!std::uncaught_exceptions()) { + resetter.reset(); + m_transaction.commit(); + } + } + + private: + DeferredTransaction m_transaction; + Resetter resetter; + }; + protected: ~StatementImplementation() = default; private: struct Resetter { - Resetter(StatementImplementation &statement) + Resetter(StatementImplementation *statement) : statement(statement) {} + Resetter(Resetter &) = delete; + Resetter &operator=(Resetter &) = delete; + + Resetter(Resetter &&other) + : statement{std::exchange(other.statement, nullptr)} + {} + void reset() { try { - statement.reset(); + if (statement) + statement->reset(); } catch (...) { - shouldReset = false; + statement = nullptr; throw; } - shouldReset = false; + statement = nullptr; } ~Resetter() noexcept { try { - if (shouldReset) - statement.reset(); + if (statement) + statement->reset(); } catch (...) { } } - StatementImplementation &statement; - bool shouldReset = true; + StatementImplementation *statement; }; struct ValueGetter @@ -339,6 +490,11 @@ private: int column; }; + constexpr int resultCount(int localResultCount) const + { + return ResultCount < 0 ? localResultCount : ResultCount; + } + template<typename ContainerType, int... ColumnIndices> void emplaceBackValues(ContainerType &container, std::integer_sequence<int, ColumnIndices...>) { @@ -351,17 +507,28 @@ private: emplaceBackValues(container, std::make_integer_sequence<int, ResultCount>{}); } - template <typename ResultOptionalType, - int... ColumnIndices> - ResultOptionalType assignValue(std::integer_sequence<int, ColumnIndices...>) + template<typename ResultOptionalType, int... ColumnIndices> + ResultOptionalType createOptionalValue(std::integer_sequence<int, ColumnIndices...>) { return ResultOptionalType(Utils::in_place, ValueGetter(*this, ColumnIndices)...); } template<typename ResultOptionalType> - ResultOptionalType assignValue() + ResultOptionalType createOptionalValue() + { + return createOptionalValue<ResultOptionalType>(std::make_integer_sequence<int, ResultCount>{}); + } + + template<typename ResultType, int... ColumnIndices> + ResultType createValue(std::integer_sequence<int, ColumnIndices...>) + { + return ResultType{ValueGetter(*this, ColumnIndices)...}; + } + + template<typename ResultType> + ResultType createValue() { - return assignValue<ResultOptionalType>(std::make_integer_sequence<int, ResultCount>{}); + return createValue<ResultType>(std::make_integer_sequence<int, ResultCount>{}); } template<typename Callable, int... ColumnIndices> @@ -376,6 +543,19 @@ private: return callCallable(callable, std::make_integer_sequence<int, ResultCount>{}); } + template<typename ValueType> + void bindValuesByIndex(int index, const ValueType &value) + { + BaseStatement::bind(index, value); + } + + template<typename ValueType, typename... ValueTypes> + void bindValuesByIndex(int index, const ValueType &value, const ValueTypes &...values) + { + BaseStatement::bind(index, value); + bindValuesByIndex(index + 1, values...); + } + void setMaximumResultCount(std::size_t count) { m_maximumResultCount = std::max(m_maximumResultCount, count); diff --git a/src/libs/sqlite/sqlitecolumn.h b/src/libs/sqlite/sqlitecolumn.h index 35a5e0f25c9..1775a683075 100644 --- a/src/libs/sqlite/sqlitecolumn.h +++ b/src/libs/sqlite/sqlitecolumn.h @@ -39,7 +39,7 @@ public: Column(Utils::SmallStringView tableName, Utils::SmallStringView name, - ColumnType type = ColumnType::None, + ColumnType type, Constraints &&constraints = {}) : constraints(std::move(constraints)) , name(name) diff --git a/src/libs/sqlite/sqlitedatabasebackend.cpp b/src/libs/sqlite/sqlitedatabasebackend.cpp index 9c096364cb5..0101e826260 100644 --- a/src/libs/sqlite/sqlitedatabasebackend.cpp +++ b/src/libs/sqlite/sqlitedatabasebackend.cpp @@ -35,7 +35,7 @@ #include <QThread> #include <QDebug> -#include "sqlite.h" +#include "sqlite3.h" #include <chrono> #include <thread> diff --git a/src/libs/sqlite/sqliteglobal.h b/src/libs/sqlite/sqliteglobal.h index cefdebd8d01..0bdb3c2aef9 100644 --- a/src/libs/sqlite/sqliteglobal.h +++ b/src/libs/sqlite/sqliteglobal.h @@ -39,7 +39,7 @@ namespace Sqlite { -enum class ColumnType : char { None, Numeric, Integer, Real, Text, Blob }; +enum class ColumnType : char { Numeric, Integer, Real, Text, Blob, None }; enum class ConstraintType : char { NoConstraint, PrimaryKey, Unique, ForeignKey }; diff --git a/src/libs/sqlite/sqlitelibraryinitializer.cpp b/src/libs/sqlite/sqlitelibraryinitializer.cpp deleted file mode 100644 index c42d1269661..00000000000 --- a/src/libs/sqlite/sqlitelibraryinitializer.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#include "sqlitelibraryinitializer.h" - -#include "sqlitedatabasebackend.h" - -namespace Sqlite { - -void LibraryInitializer::initialize() -{ - static LibraryInitializer initializer; -} - -LibraryInitializer::LibraryInitializer() -{ - DatabaseBackend::initializeSqliteLibrary(); -} - -LibraryInitializer::~LibraryInitializer() -{ - DatabaseBackend::shutdownSqliteLibrary(); -} - -} // namespace Sqlite diff --git a/src/libs/sqlite/sqlitelibraryinitializer.h b/src/libs/sqlite/sqlitelibraryinitializer.h deleted file mode 100644 index 6df8b19a22e..00000000000 --- a/src/libs/sqlite/sqlitelibraryinitializer.h +++ /dev/null @@ -1,42 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#pragma once - -#include "sqliteglobal.h" - -namespace Sqlite { - -class LibraryInitializer -{ -public: - SQLITE_EXPORT static void initialize(); - -private: - LibraryInitializer(); - ~LibraryInitializer(); -}; - -} // namespace Sqlite diff --git a/src/libs/sqlite/sqlitesessionchangeset.cpp b/src/libs/sqlite/sqlitesessionchangeset.cpp index eef98bc5d57..76fc088f92f 100644 --- a/src/libs/sqlite/sqlitesessionchangeset.cpp +++ b/src/libs/sqlite/sqlitesessionchangeset.cpp @@ -29,7 +29,7 @@ #include <utils/smallstringio.h> -#include <sqlite.h> +#include <sqlite3ext.h> namespace Sqlite { diff --git a/src/libs/sqlite/sqlitesessions.cpp b/src/libs/sqlite/sqlitesessions.cpp index 5162a9fa593..df668fdc593 100644 --- a/src/libs/sqlite/sqlitesessions.cpp +++ b/src/libs/sqlite/sqlitesessions.cpp @@ -28,7 +28,7 @@ #include "sqlitesessionchangeset.h" #include "sqlitetable.h" -#include <sqlite.h> +#include <sqlite3ext.h> #include <memory> diff --git a/src/libs/sqlite/sqlitetable.h b/src/libs/sqlite/sqlitetable.h index 35453945f21..9883415a9f6 100644 --- a/src/libs/sqlite/sqlitetable.h +++ b/src/libs/sqlite/sqlitetable.h @@ -72,7 +72,7 @@ public: } Column &addColumn(Utils::SmallStringView name, - ColumnType type = ColumnType::None, + ColumnType type = ColumnType::Numeric, Constraints &&constraints = {}) { m_sqliteColumns.emplace_back(m_tableName, name, type, std::move(constraints)); diff --git a/src/libs/sqlite/sqlstatementbuilder.cpp b/src/libs/sqlite/sqlstatementbuilder.cpp index 7a6cc1a81a3..ecef170a346 100644 --- a/src/libs/sqlite/sqlstatementbuilder.cpp +++ b/src/libs/sqlite/sqlstatementbuilder.cpp @@ -179,18 +179,12 @@ bool SqlStatementBuilder::isBuild() const Utils::SmallString SqlStatementBuilder::columnTypeToString(ColumnType columnType) { switch (columnType) { - case ColumnType::Numeric: - return " NUMERIC"; - case ColumnType::Integer: - return " INTEGER"; - case ColumnType::Real: - return " REAL"; - case ColumnType::Text: - return " TEXT"; - case ColumnType::Blob: - return " BLOB"; - case ColumnType::None: - return {}; + case ColumnType::Numeric: return "NUMERIC"; + case ColumnType::Integer: return "INTEGER"; + case ColumnType::Real: return "REAL"; + case ColumnType::Text: return "TEXT"; + case ColumnType::Blob: return "BLOB"; + case ColumnType::None: return {}; } Q_UNREACHABLE(); |
