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_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_LOAD_EXTENSION SQLITE_OMIT_UTF16
OTHER_FILES += README.md

View File

@@ -147,17 +147,6 @@ int BaseStatement::columnCount() const
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)
{
int resultCode = sqlite3_bind_null(m_compiledStatement.get(), index);
@@ -259,11 +248,6 @@ sqlite3 *BaseStatement::sqliteDatabaseHandle() const
return m_database.backend().sqliteDatabaseHandle();
}
TextEncoding BaseStatement::databaseTextEncoding()
{
return m_database.backend().textEncoding();
}
void BaseStatement::checkForStepError(int resultCode) const
{
switch (resultCode) {

View File

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

View File

@@ -40,9 +40,8 @@
namespace Sqlite {
DatabaseBackend::DatabaseBackend(Database &database)
: m_database(database),
m_databaseHandle(nullptr),
m_cachedTextEncoding(Utf8)
: m_database(database)
, m_databaseHandle(nullptr)
{
}
@@ -102,8 +101,6 @@ void DatabaseBackend::open(Utils::SmallStringView databaseFilePath, OpenMode mod
nullptr);
checkDatabaseCouldBeOpened(resultCode);
cacheTextEncoding();
}
sqlite3 *DatabaseBackend::sqliteDatabaseHandle() const
@@ -135,24 +132,6 @@ JournalMode DatabaseBackend::journalMode()
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
{
return sqlite3_changes(sqliteDatabaseHandle());
@@ -232,11 +211,6 @@ int DatabaseBackend::busyHandlerCallback(void *, int counter)
return true;
}
void DatabaseBackend::cacheTextEncoding()
{
m_cachedTextEncoding = pragmaToTextEncoding(pragmaValue("encoding"));
}
void DatabaseBackend::checkForOpenDatabaseWhichCanBeClosed()
{
if (m_databaseHandle == nullptr)
@@ -365,23 +339,6 @@ JournalMode DatabaseBackend::pragmaToJournalMode(Utils::SmallStringView pragma)
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 sqliteMode = SQLITE_OPEN_CREATE;

View File

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

View File

@@ -71,19 +71,6 @@ enum class OpenMode : char
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 };
} // namespace Sqlite

View File

@@ -42,7 +42,6 @@ using Sqlite::ColumnType;
using Sqlite::ConstraintType;
using Sqlite::JournalMode;
using Sqlite::OpenMode;
using Sqlite::TextEncoding;
using Sqlite::Exception;
using Sqlite::WriteStatement;
@@ -111,49 +110,6 @@ TEST_F(SqliteDatabaseBackend, PersistJournalMode)
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)
{
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");
}
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)
{
database.execute("INSERT INTO test VALUES (NULL, 323, 344)");