Sqlite: Dont compile Utf-16 support

We don't support it anyway.

Change-Id: I35fa859f3c9d7389e3d00d584832a814acb39c80
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Marco Bubke
2020-05-16 01:29:22 +02:00
committed by Tim Jenssen
parent 30d5684ac2
commit dc2192ef8a
8 changed files with 3 additions and 139 deletions

View File

@@ -53,7 +53,7 @@ DEFINES += SQLITE_THREADSAFE=2 SQLITE_ENABLE_FTS5 \
SQLITE_OMIT_DEPRECATED SQLITE_OMIT_DECLTYPE \ SQLITE_OMIT_DEPRECATED SQLITE_OMIT_DECLTYPE \
SQLITE_MAX_EXPR_DEPTH=0 SQLITE_OMIT_SHARED_CACHE SQLITE_USE_ALLOCA \ SQLITE_MAX_EXPR_DEPTH=0 SQLITE_OMIT_SHARED_CACHE SQLITE_USE_ALLOCA \
SQLITE_ENABLE_MEMORY_MANAGEMENT SQLITE_ENABLE_NULL_TRIM SQLITE_OMIT_EXPLAIN \ SQLITE_ENABLE_MEMORY_MANAGEMENT SQLITE_ENABLE_NULL_TRIM SQLITE_OMIT_EXPLAIN \
SQLITE_OMIT_LOAD_EXTENSION SQLITE_OMIT_LOAD_EXTENSION SQLITE_OMIT_UTF16
OTHER_FILES += README.md OTHER_FILES += README.md

View File

@@ -147,17 +147,6 @@ int BaseStatement::columnCount() const
return m_columnCount; return m_columnCount;
} }
Utils::SmallStringVector BaseStatement::columnNames() const
{
Utils::SmallStringVector columnNames;
int columnCount = BaseStatement::columnCount();
columnNames.reserve(std::size_t(columnCount));
for (int columnIndex = 0; columnIndex < columnCount; columnIndex++)
columnNames.emplace_back(sqlite3_column_origin_name(m_compiledStatement.get(), columnIndex));
return columnNames;
}
void BaseStatement::bind(int index, NullValue) void BaseStatement::bind(int index, NullValue)
{ {
int resultCode = sqlite3_bind_null(m_compiledStatement.get(), index); int resultCode = sqlite3_bind_null(m_compiledStatement.get(), index);
@@ -259,11 +248,6 @@ sqlite3 *BaseStatement::sqliteDatabaseHandle() const
return m_database.backend().sqliteDatabaseHandle(); return m_database.backend().sqliteDatabaseHandle();
} }
TextEncoding BaseStatement::databaseTextEncoding()
{
return m_database.backend().textEncoding();
}
void BaseStatement::checkForStepError(int resultCode) const void BaseStatement::checkForStepError(int resultCode) const
{ {
switch (resultCode) { switch (resultCode) {

View File

@@ -72,7 +72,6 @@ public:
template<typename Type> template<typename Type>
Type fetchValue(int column) const; Type fetchValue(int column) const;
int columnCount() const; int columnCount() const;
Utils::SmallStringVector columnNames() const;
void bind(int index, NullValue); void bind(int index, NullValue);
void bind(int index, int fetchValue); void bind(int index, int fetchValue);
@@ -97,7 +96,6 @@ public:
void waitForUnlockNotify() const; void waitForUnlockNotify() const;
sqlite3 *sqliteDatabaseHandle() const; sqlite3 *sqliteDatabaseHandle() const;
TextEncoding databaseTextEncoding();
[[noreturn]] void checkForStepError(int resultCode) const; [[noreturn]] void checkForStepError(int resultCode) const;
[[noreturn]] void checkForResetError(int resultCode) const; [[noreturn]] void checkForResetError(int resultCode) const;

View File

@@ -40,9 +40,8 @@
namespace Sqlite { namespace Sqlite {
DatabaseBackend::DatabaseBackend(Database &database) DatabaseBackend::DatabaseBackend(Database &database)
: m_database(database), : m_database(database)
m_databaseHandle(nullptr), , m_databaseHandle(nullptr)
m_cachedTextEncoding(Utf8)
{ {
} }
@@ -102,8 +101,6 @@ void DatabaseBackend::open(Utils::SmallStringView databaseFilePath, OpenMode mod
nullptr); nullptr);
checkDatabaseCouldBeOpened(resultCode); checkDatabaseCouldBeOpened(resultCode);
cacheTextEncoding();
} }
sqlite3 *DatabaseBackend::sqliteDatabaseHandle() const sqlite3 *DatabaseBackend::sqliteDatabaseHandle() const
@@ -135,24 +132,6 @@ JournalMode DatabaseBackend::journalMode()
return pragmaToJournalMode(pragmaValue("journal_mode")); return pragmaToJournalMode(pragmaValue("journal_mode"));
} }
void DatabaseBackend::setTextEncoding(TextEncoding textEncoding)
{
setPragmaValue("encoding", textEncodingToPragma(textEncoding));
cacheTextEncoding();
}
TextEncoding DatabaseBackend::textEncoding()
{
return m_cachedTextEncoding;
}
Utils::SmallStringVector DatabaseBackend::columnNames(Utils::SmallStringView tableName)
{
ReadWriteStatement statement("SELECT * FROM " + tableName, m_database);
return statement.columnNames();
}
int DatabaseBackend::changesCount() const int DatabaseBackend::changesCount() const
{ {
return sqlite3_changes(sqliteDatabaseHandle()); return sqlite3_changes(sqliteDatabaseHandle());
@@ -232,11 +211,6 @@ int DatabaseBackend::busyHandlerCallback(void *, int counter)
return true; return true;
} }
void DatabaseBackend::cacheTextEncoding()
{
m_cachedTextEncoding = pragmaToTextEncoding(pragmaValue("encoding"));
}
void DatabaseBackend::checkForOpenDatabaseWhichCanBeClosed() void DatabaseBackend::checkForOpenDatabaseWhichCanBeClosed()
{ {
if (m_databaseHandle == nullptr) if (m_databaseHandle == nullptr)
@@ -365,23 +339,6 @@ JournalMode DatabaseBackend::pragmaToJournalMode(Utils::SmallStringView pragma)
return static_cast<JournalMode>(index); return static_cast<JournalMode>(index);
} }
const Utils::SmallStringView textEncodingStrings[] = {"UTF-8", "UTF-16le", "UTF-16be"};
Utils::SmallStringView DatabaseBackend::textEncodingToPragma(TextEncoding textEncoding)
{
return textEncodingStrings[textEncoding];
}
TextEncoding DatabaseBackend::pragmaToTextEncoding(Utils::SmallStringView pragma)
{
int index = indexOfPragma(pragma, textEncodingStrings);
if (index < 0)
throwExceptionStatic("SqliteDatabaseBackend::pragmaToTextEncoding: pragma can't be transformed in a text encoding enumeration!");
return static_cast<TextEncoding>(index);
}
int DatabaseBackend::openMode(OpenMode mode) int DatabaseBackend::openMode(OpenMode mode)
{ {
int sqliteMode = SQLITE_OPEN_CREATE; int sqliteMode = SQLITE_OPEN_CREATE;

View File

@@ -68,9 +68,6 @@ public:
void setJournalMode(JournalMode journalMode); void setJournalMode(JournalMode journalMode);
JournalMode journalMode(); JournalMode journalMode();
void setTextEncoding(TextEncoding textEncoding);
TextEncoding textEncoding();
Utils::SmallStringVector columnNames(Utils::SmallStringView tableName); Utils::SmallStringVector columnNames(Utils::SmallStringView tableName);
int changesCount() const; int changesCount() const;
@@ -103,8 +100,6 @@ protected:
void registerRankingFunction(); void registerRankingFunction();
static int busyHandlerCallback(void*, int counter); static int busyHandlerCallback(void*, int counter);
void cacheTextEncoding();
void checkForOpenDatabaseWhichCanBeClosed(); void checkForOpenDatabaseWhichCanBeClosed();
void checkDatabaseClosing(int resultCode); void checkDatabaseClosing(int resultCode);
void checkCanOpenDatabase(Utils::SmallStringView databaseFilePath); void checkCanOpenDatabase(Utils::SmallStringView databaseFilePath);
@@ -121,9 +116,6 @@ protected:
static Utils::SmallStringView journalModeToPragma(JournalMode journalMode); static Utils::SmallStringView journalModeToPragma(JournalMode journalMode);
static JournalMode pragmaToJournalMode(Utils::SmallStringView pragma); static JournalMode pragmaToJournalMode(Utils::SmallStringView pragma);
Utils::SmallStringView textEncodingToPragma(TextEncoding textEncoding);
static TextEncoding pragmaToTextEncoding(Utils::SmallStringView pragma);
Q_NORETURN static void throwExceptionStatic(const char *whatHasHappens); Q_NORETURN static void throwExceptionStatic(const char *whatHasHappens);
[[noreturn]] void throwException(const char *whatHasHappens) const; [[noreturn]] void throwException(const char *whatHasHappens) const;
@@ -133,7 +125,6 @@ protected:
private: private:
Database &m_database; Database &m_database;
sqlite3 *m_databaseHandle; sqlite3 *m_databaseHandle;
TextEncoding m_cachedTextEncoding;
}; };
} // namespace Sqlite } // namespace Sqlite

View File

@@ -71,19 +71,6 @@ enum class OpenMode : char
ReadWrite ReadWrite
}; };
enum TextEncoding : char
{
Utf8,
Utf16le,
Utf16be,
#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
Utf16 = Utf16le
#else
Utf16 = Utf16be
#endif
};
enum class ChangeType : int { Delete = 9, Insert = 18, Update = 23 }; enum class ChangeType : int { Delete = 9, Insert = 18, Update = 23 };
} // namespace Sqlite } // namespace Sqlite

View File

@@ -42,7 +42,6 @@ using Sqlite::ColumnType;
using Sqlite::ConstraintType; using Sqlite::ConstraintType;
using Sqlite::JournalMode; using Sqlite::JournalMode;
using Sqlite::OpenMode; using Sqlite::OpenMode;
using Sqlite::TextEncoding;
using Sqlite::Exception; using Sqlite::Exception;
using Sqlite::WriteStatement; using Sqlite::WriteStatement;
@@ -111,49 +110,6 @@ TEST_F(SqliteDatabaseBackend, PersistJournalMode)
ASSERT_THAT(databaseBackend.journalMode(), JournalMode::Persist); ASSERT_THAT(databaseBackend.journalMode(), JournalMode::Persist);
} }
TEST_F(SqliteDatabaseBackend, DefaultTextEncoding)
{
ASSERT_THAT(databaseBackend.textEncoding(), TextEncoding::Utf8);
}
TEST_F(SqliteDatabaseBackend, Utf16TextEncoding)
{
databaseBackend.setTextEncoding(TextEncoding::Utf16);
ASSERT_THAT(databaseBackend.textEncoding(), TextEncoding::Utf16);
}
TEST_F(SqliteDatabaseBackend, Utf16beTextEncoding)
{
databaseBackend.setTextEncoding(TextEncoding::Utf16be);
ASSERT_THAT(databaseBackend.textEncoding(),TextEncoding::Utf16be);
}
TEST_F(SqliteDatabaseBackend, Utf16leTextEncoding)
{
databaseBackend.setTextEncoding(TextEncoding::Utf16le);
ASSERT_THAT(databaseBackend.textEncoding(), TextEncoding::Utf16le);
}
TEST_F(SqliteDatabaseBackend, Utf8TextEncoding)
{
databaseBackend.setTextEncoding(TextEncoding::Utf8);
ASSERT_THAT(databaseBackend.textEncoding(), TextEncoding::Utf8);
}
TEST_F(SqliteDatabaseBackend, TextEncodingCannotBeChangedAfterTouchingDatabase)
{
databaseBackend.setJournalMode(JournalMode::Memory);
databaseBackend.execute("CREATE TABLE text(name, number)");
ASSERT_THROW(databaseBackend.setTextEncoding(TextEncoding::Utf16),
Sqlite::PragmaValueNotSet);
}
TEST_F(SqliteDatabaseBackend, OpenModeReadOnly) TEST_F(SqliteDatabaseBackend, OpenModeReadOnly)
{ {
auto mode = Backend::openMode(OpenMode::ReadOnly); auto mode = Backend::openMode(OpenMode::ReadOnly);

View File

@@ -223,15 +223,6 @@ TEST_F(SqliteStatement, ToStringValue)
ASSERT_THAT(ReadStatement::toValue<Utils::SmallString>("SELECT name FROM test WHERE name='foo'", database), "foo"); ASSERT_THAT(ReadStatement::toValue<Utils::SmallString>("SELECT name FROM test WHERE name='foo'", database), "foo");
} }
TEST_F(SqliteStatement, ColumnNames)
{
SqliteTestStatement statement("SELECT name, number FROM test", database);
auto columnNames = statement.columnNames();
ASSERT_THAT(columnNames, ElementsAre("name", "number"));
}
TEST_F(SqliteStatement, BindNull) TEST_F(SqliteStatement, BindNull)
{ {
database.execute("INSERT INTO test VALUES (NULL, 323, 344)"); database.execute("INSERT INTO test VALUES (NULL, 323, 344)");