aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/sqlite
diff options
context:
space:
mode:
authorMarco Bubke <[email protected]>2021-05-06 15:27:51 +0000
committerTim Jenssen <[email protected]>2021-05-06 15:30:02 +0000
commitf0a86d45104f585b7aeef07fcc68cea24061aedb (patch)
tree6f2bb2de1ed9a81b420c20198c7c629a6f69a802 /src/libs/sqlite
parent53c0b82a93df3e79ae1f8f896e9cd164148bebf8 (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.txt22
-rw-r--r--src/libs/sqlite/createtablesqlstatementbuilder.cpp4
-rw-r--r--src/libs/sqlite/sqlite-lib.pri13
-rw-r--r--src/libs/sqlite/sqlitebasestatement.cpp2
-rw-r--r--src/libs/sqlite/sqlitebasestatement.h230
-rw-r--r--src/libs/sqlite/sqlitecolumn.h2
-rw-r--r--src/libs/sqlite/sqlitedatabasebackend.cpp2
-rw-r--r--src/libs/sqlite/sqliteglobal.h2
-rw-r--r--src/libs/sqlite/sqlitelibraryinitializer.cpp47
-rw-r--r--src/libs/sqlite/sqlitelibraryinitializer.h42
-rw-r--r--src/libs/sqlite/sqlitesessionchangeset.cpp2
-rw-r--r--src/libs/sqlite/sqlitesessions.cpp2
-rw-r--r--src/libs/sqlite/sqlitetable.h2
-rw-r--r--src/libs/sqlite/sqlstatementbuilder.cpp18
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();