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/odbc.cmake)
include (cmake/find/nanodbc.cmake)
include (cmake/find/sqlite.cmake)
include (cmake/find/rocksdb.cmake)
include (cmake/find/libpqxx.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(sqlite-cmake)
include_directories(sqlite-cmake)
if (USE_SQLITE)
add_subdirectory(sqlite-cmake)
endif()

View File

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

View File

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

View File

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

View File

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

View File

@ -6,7 +6,6 @@
#include <Databases/DatabaseMemory.h>
#include <Databases/DatabaseOrdinary.h>
#include <Databases/DatabaseReplicated.h>
#include <Databases/SQLite/DatabaseSQLite.h>
#include <Interpreters/Context.h>
#include <Parsers/ASTCreateQuery.h>
#include <Parsers/ASTFunction.h>
@ -43,6 +42,10 @@
#include <Storages/PostgreSQL/MaterializedPostgreSQLSettings.h>
#endif
#if USE_SQLITE
#include <Databases/SQLite/DatabaseSQLite.h>
#endif
namespace fs = std::filesystem;
namespace DB
@ -225,20 +228,6 @@ DatabasePtr DatabaseFactory::getImpl(const ASTCreateQuery & create, const String
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
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
throw Exception("Unknown database engine: " + engine_name, ErrorCodes::UNKNOWN_DATABASE_ENGINE);

View File

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

View File

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

View File

@ -1,5 +1,7 @@
#include <Databases/SQLite/fetchSQLiteTableStructure.h>
#if USE_SQLITE
#include <Common/quoteString.h>
#include <DataTypes/DataTypeArray.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
#if !defined(ARCADIA_BUILD)
#include "config_core.h"
#endif
#if USE_SQLITE
#include <sqlite3.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 */);
}
#endif

View File

@ -1,5 +1,6 @@
#include "StorageSQLite.h"
#if USE_SQLITE
#include <DataStreams/SQLiteBlockInputStream.h>
#include <DataTypes/DataTypeString.h>
#include <Interpreters/Context.h>
@ -38,6 +39,8 @@ StorageSQLite::StorageSQLite(
storage_metadata.setConstraints(constraints_);
setInMemoryMetadata(storage_metadata);
}
Pipe StorageSQLite::read(
const Names & column_names,
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)));
}
class SQLiteBlockOutputStream : public IBlockOutputStream
{
public:
@ -131,6 +135,7 @@ private:
std::string remote_table_name;
};
BlockOutputStreamPtr StorageSQLite::write(const ASTPtr & /* query */, const StorageMetadataPtr & metadata_snapshot, ContextPtr)
{
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
#if !defined(ARCADIA_BUILD)
#include "config_core.h"
#endif
#if USE_SQLITE
#include <sqlite3.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);
#endif
#if USE_SQLITE
registerStorageSQLite(factory);
#endif
void registerStorages()
{
auto & factory = StorageFactory::instance();
@ -90,7 +94,6 @@ void registerStorages()
registerStorageMaterializedView(factory);
registerStorageLiveView(factory);
registerStorageGenerateRandom(factory);
registerStorageSQLite(factory);
#if USE_AWS_S3
registerStorageS3(factory);