Add .cmake

This commit is contained in:
kssenii 2021-07-08 13:27:30 +00:00
parent b7f3d16c5f
commit 1bf9a9f29f
15 changed files with 94 additions and 19 deletions

View File

@ -536,6 +536,7 @@ include (cmake/find/rapidjson.cmake)
include (cmake/find/fastops.cmake) include (cmake/find/fastops.cmake)
include (cmake/find/odbc.cmake) include (cmake/find/odbc.cmake)
include (cmake/find/nanodbc.cmake) include (cmake/find/nanodbc.cmake)
include (cmake/find/sqlite.cmake)
include (cmake/find/rocksdb.cmake) include (cmake/find/rocksdb.cmake)
include (cmake/find/libpqxx.cmake) include (cmake/find/libpqxx.cmake)
include (cmake/find/nuraft.cmake) include (cmake/find/nuraft.cmake)

16
cmake/find/sqlite.cmake Normal file
View File

@ -0,0 +1,16 @@
option(ENABLE_SQLITE "Enalbe sqlite" ${ENABLE_LIBRARIES})
if (NOT ENABLE_SQLITE)
return()
endif()
if (NOT EXISTS "${ClickHouse_SOURCE_DIR}/contrib/sqlite-amalgamation/sqlite3.c")
message (WARNING "submodule contrib/sqlite3-amalgamation is missing. to fix try run: \n git submodule update --init --recursive")
message (${RECONFIGURE_MESSAGE_LEVEL} "Can't find internal sqlite library")
set (USE_SQLITE 0)
return()
endif()
set (USE_SQLITE 1)
set (SQLITE_LIBRARY sqlite)
message (STATUS "Using sqlite=${USE_SQLITE}")

View File

@ -329,6 +329,7 @@ endif()
add_subdirectory(fast_float) add_subdirectory(fast_float)
if (USE_SQLITE)
add_subdirectory(sqlite-cmake) add_subdirectory(sqlite-cmake)
include_directories(sqlite-cmake) endif()

View File

@ -2,5 +2,5 @@ set (LIBRARY_DIR "${ClickHouse_SOURCE_DIR}/contrib/sqlite-amalgamation")
set(SRCS ${LIBRARY_DIR}/sqlite3.c) set(SRCS ${LIBRARY_DIR}/sqlite3.c)
add_library(sqlite STATIC ${SRCS}) add_library(sqlite ${SRCS})
target_include_directories(sqlite SYSTEM PUBLIC "${LIBRARY_DIR}") target_include_directories(sqlite SYSTEM PUBLIC "${LIBRARY_DIR}")

View File

@ -13,5 +13,6 @@
#cmakedefine01 USE_LDAP #cmakedefine01 USE_LDAP
#cmakedefine01 USE_ROCKSDB #cmakedefine01 USE_ROCKSDB
#cmakedefine01 USE_LIBPQXX #cmakedefine01 USE_LIBPQXX
#cmakedefine01 USE_SQLITE
#cmakedefine01 USE_NURAFT #cmakedefine01 USE_NURAFT
#cmakedefine01 USE_KRB5 #cmakedefine01 USE_KRB5

View File

@ -1,5 +1,7 @@
#include "SQLiteBlockInputStream.h" #include "SQLiteBlockInputStream.h"
#if USE_SQLITE
#include <Columns/ColumnArray.h> #include <Columns/ColumnArray.h>
#include <Columns/ColumnDecimal.h> #include <Columns/ColumnDecimal.h>
#include <Columns/ColumnNullable.h> #include <Columns/ColumnNullable.h>
@ -128,3 +130,5 @@ void SQLiteBlockInputStream::insertValue(
} }
} }
#endif

View File

@ -1,5 +1,11 @@
#pragma once #pragma once
#if !defined(ARCADIA_BUILD)
#include "config_core.h"
#endif
#if USE_SQLITE
#include <sqlite3.h> #include <sqlite3.h>
#include <Core/ExternalResultDescription.h> #include <Core/ExternalResultDescription.h>
@ -41,3 +47,5 @@ private:
}; };
} }
#endif

View File

@ -6,7 +6,6 @@
#include <Databases/DatabaseMemory.h> #include <Databases/DatabaseMemory.h>
#include <Databases/DatabaseOrdinary.h> #include <Databases/DatabaseOrdinary.h>
#include <Databases/DatabaseReplicated.h> #include <Databases/DatabaseReplicated.h>
#include <Databases/SQLite/DatabaseSQLite.h>
#include <Interpreters/Context.h> #include <Interpreters/Context.h>
#include <Parsers/ASTCreateQuery.h> #include <Parsers/ASTCreateQuery.h>
#include <Parsers/ASTFunction.h> #include <Parsers/ASTFunction.h>
@ -43,6 +42,10 @@
#include <Storages/PostgreSQL/MaterializedPostgreSQLSettings.h> #include <Storages/PostgreSQL/MaterializedPostgreSQLSettings.h>
#endif #endif
#if USE_SQLITE
#include <Databases/SQLite/DatabaseSQLite.h>
#endif
namespace fs = std::filesystem; namespace fs = std::filesystem;
namespace DB namespace DB
@ -225,20 +228,6 @@ DatabasePtr DatabaseFactory::getImpl(const ASTCreateQuery & create, const String
std::move(database_replicated_settings), context); std::move(database_replicated_settings), context);
} }
else if (engine_name == "SQLite")
{
const ASTFunction * engine = engine_define->engine;
if (!engine->arguments || engine->arguments->children.size() != 1)
throw Exception("SQLite database requires 1 argument: database path", ErrorCodes::BAD_ARGUMENTS);
const auto & arguments = engine->arguments->children;
String database_path = safeGetLiteralValue<String>(arguments[0], "SQLite");
return std::make_shared<DatabaseSQLite>(context, engine_define, database_path);
}
#if USE_LIBPQXX #if USE_LIBPQXX
else if (engine_name == "PostgreSQL") else if (engine_name == "PostgreSQL")
@ -316,6 +305,22 @@ DatabasePtr DatabaseFactory::getImpl(const ASTCreateQuery & create, const String
} }
#endif
#if USE_SQLITE
else if (engine_name == "SQLite")
{
const ASTFunction * engine = engine_define->engine;
if (!engine->arguments || engine->arguments->children.size() != 1)
throw Exception("SQLite database requires 1 argument: database path", ErrorCodes::BAD_ARGUMENTS);
const auto & arguments = engine->arguments->children;
String database_path = safeGetLiteralValue<String>(arguments[0], "SQLite");
return std::make_shared<DatabaseSQLite>(context, engine_define, database_path);
}
#endif #endif
throw Exception("Unknown database engine: " + engine_name, ErrorCodes::UNKNOWN_DATABASE_ENGINE); throw Exception("Unknown database engine: " + engine_name, ErrorCodes::UNKNOWN_DATABASE_ENGINE);

View File

@ -1,5 +1,7 @@
#include "DatabaseSQLite.h" #include "DatabaseSQLite.h"
#if USE_SQLITE
#include <DataTypes/DataTypesNumber.h> #include <DataTypes/DataTypesNumber.h>
#include <Databases/SQLite/fetchSQLiteTableStructure.h> #include <Databases/SQLite/fetchSQLiteTableStructure.h>
#include <Interpreters/Context.h> #include <Interpreters/Context.h>
@ -149,3 +151,5 @@ void DatabaseSQLite::shutdown()
} }
} }
#endif

View File

@ -1,5 +1,10 @@
#pragma once #pragma once
#if !defined(ARCADIA_BUILD)
#include "config_core.h"
#endif
#if USE_SQLITE
#include <sqlite3.h> #include <sqlite3.h>
#include <Databases/DatabasesCommon.h> #include <Databases/DatabasesCommon.h>
@ -38,3 +43,5 @@ private:
}; };
} }
#endif

View File

@ -1,5 +1,7 @@
#include <Databases/SQLite/fetchSQLiteTableStructure.h> #include <Databases/SQLite/fetchSQLiteTableStructure.h>
#if USE_SQLITE
#include <Common/quoteString.h> #include <Common/quoteString.h>
#include <DataTypes/DataTypeArray.h> #include <DataTypes/DataTypeArray.h>
#include <DataTypes/DataTypeDate.h> #include <DataTypes/DataTypeDate.h>
@ -86,3 +88,5 @@ std::shared_ptr<NamesAndTypesList> fetchSQLiteTableStructure(sqlite3 * connectio
} }
} }
#endif

View File

@ -1,5 +1,10 @@
#pragma once #pragma once
#if !defined(ARCADIA_BUILD)
#include "config_core.h"
#endif
#if USE_SQLITE
#include <sqlite3.h> #include <sqlite3.h>
#include <Storages/StorageSQLite.h> #include <Storages/StorageSQLite.h>
@ -9,3 +14,5 @@ namespace DB
std::shared_ptr<NamesAndTypesList> fetchSQLiteTableStructure(sqlite3 * connection, const String & sqlite_table_name /* , bool use_nulls */); std::shared_ptr<NamesAndTypesList> fetchSQLiteTableStructure(sqlite3 * connection, const String & sqlite_table_name /* , bool use_nulls */);
} }
#endif

View File

@ -1,5 +1,6 @@
#include "StorageSQLite.h" #include "StorageSQLite.h"
#if USE_SQLITE
#include <DataStreams/SQLiteBlockInputStream.h> #include <DataStreams/SQLiteBlockInputStream.h>
#include <DataTypes/DataTypeString.h> #include <DataTypes/DataTypeString.h>
#include <Interpreters/Context.h> #include <Interpreters/Context.h>
@ -38,6 +39,8 @@ StorageSQLite::StorageSQLite(
storage_metadata.setConstraints(constraints_); storage_metadata.setConstraints(constraints_);
setInMemoryMetadata(storage_metadata); setInMemoryMetadata(storage_metadata);
} }
Pipe StorageSQLite::read( Pipe StorageSQLite::read(
const Names & column_names, const Names & column_names,
const StorageMetadataPtr & metadata_snapshot, const StorageMetadataPtr & metadata_snapshot,
@ -68,6 +71,7 @@ Pipe StorageSQLite::read(
std::make_shared<SourceFromInputStream>(std::make_shared<SQLiteBlockInputStream>(db_ptr, query, sample_block, max_block_size))); std::make_shared<SourceFromInputStream>(std::make_shared<SQLiteBlockInputStream>(db_ptr, query, sample_block, max_block_size)));
} }
class SQLiteBlockOutputStream : public IBlockOutputStream class SQLiteBlockOutputStream : public IBlockOutputStream
{ {
public: public:
@ -131,6 +135,7 @@ private:
std::string remote_table_name; std::string remote_table_name;
}; };
BlockOutputStreamPtr StorageSQLite::write(const ASTPtr & /* query */, const StorageMetadataPtr & metadata_snapshot, ContextPtr) BlockOutputStreamPtr StorageSQLite::write(const ASTPtr & /* query */, const StorageMetadataPtr & metadata_snapshot, ContextPtr)
{ {
return std::make_shared<SQLiteBlockOutputStream>(*this, metadata_snapshot, db_ptr, remote_table_name); return std::make_shared<SQLiteBlockOutputStream>(*this, metadata_snapshot, db_ptr, remote_table_name);
@ -174,3 +179,5 @@ void registerStorageSQLite(StorageFactory & factory)
} }
} }
#endif

View File

@ -1,5 +1,10 @@
#pragma once #pragma once
#if !defined(ARCADIA_BUILD)
#include "config_core.h"
#endif
#if USE_SQLITE
#include <sqlite3.h> #include <sqlite3.h>
#include <Storages/IStorage.h> #include <Storages/IStorage.h>
@ -42,3 +47,5 @@ private:
}; };
} }
#endif

View File

@ -68,6 +68,10 @@ void registerStorageMaterializedPostgreSQL(StorageFactory & factory);
void registerStorageExternalDistributed(StorageFactory & factory); void registerStorageExternalDistributed(StorageFactory & factory);
#endif #endif
#if USE_SQLITE
registerStorageSQLite(factory);
#endif
void registerStorages() void registerStorages()
{ {
auto & factory = StorageFactory::instance(); auto & factory = StorageFactory::instance();
@ -90,7 +94,6 @@ void registerStorages()
registerStorageMaterializedView(factory); registerStorageMaterializedView(factory);
registerStorageLiveView(factory); registerStorageLiveView(factory);
registerStorageGenerateRandom(factory); registerStorageGenerateRandom(factory);
registerStorageSQLite(factory);
#if USE_AWS_S3 #if USE_AWS_S3
registerStorageS3(factory); registerStorageS3(factory);