mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-30 03:22:14 +00:00
Merge branch 'master' into pretty-print-tuples-in-create-table-statements
This commit is contained in:
commit
25fe87dfc4
@ -8,6 +8,8 @@ endif ()
|
|||||||
# when instantiated from JSON.cpp. Try again when libcxx(abi) and Clang are upgraded to 16.
|
# when instantiated from JSON.cpp. Try again when libcxx(abi) and Clang are upgraded to 16.
|
||||||
set (CMAKE_CXX_STANDARD 20)
|
set (CMAKE_CXX_STANDARD 20)
|
||||||
|
|
||||||
|
configure_file(GitHash.cpp.in GitHash.generated.cpp)
|
||||||
|
|
||||||
set (SRCS
|
set (SRCS
|
||||||
argsToConfig.cpp
|
argsToConfig.cpp
|
||||||
cgroupsv2.cpp
|
cgroupsv2.cpp
|
||||||
@ -33,6 +35,7 @@ set (SRCS
|
|||||||
safeExit.cpp
|
safeExit.cpp
|
||||||
throwError.cpp
|
throwError.cpp
|
||||||
Numa.cpp
|
Numa.cpp
|
||||||
|
GitHash.generated.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
add_library (common ${SRCS})
|
add_library (common ${SRCS})
|
||||||
|
@ -16,39 +16,29 @@
|
|||||||
#include <sys/resource.h>
|
#include <sys/resource.h>
|
||||||
|
|
||||||
#if defined(OS_LINUX)
|
#if defined(OS_LINUX)
|
||||||
#include <sys/prctl.h>
|
#include <sys/prctl.h>
|
||||||
#endif
|
#endif
|
||||||
#include <cerrno>
|
#include <cerrno>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <typeinfo>
|
#include <typeinfo>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <fstream>
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <base/scope_guard.h>
|
|
||||||
|
|
||||||
#include <Poco/Message.h>
|
#include <Poco/Message.h>
|
||||||
#include <Poco/Util/Application.h>
|
#include <Poco/Util/Application.h>
|
||||||
#include <Poco/Exception.h>
|
#include <Poco/Exception.h>
|
||||||
#include <Poco/ErrorHandler.h>
|
#include <Poco/ErrorHandler.h>
|
||||||
#include <Poco/Pipe.h>
|
#include <Poco/Pipe.h>
|
||||||
|
|
||||||
#include <Common/ErrorHandlers.h>
|
#include <Common/ErrorHandlers.h>
|
||||||
#include <Common/SignalHandlers.h>
|
#include <Common/SignalHandlers.h>
|
||||||
#include <base/argsToConfig.h>
|
#include <base/argsToConfig.h>
|
||||||
#include <base/getThreadId.h>
|
|
||||||
#include <base/coverage.h>
|
#include <base/coverage.h>
|
||||||
#include <base/sleep.h>
|
|
||||||
|
|
||||||
#include <IO/WriteBufferFromFileDescriptorDiscardOnFailure.h>
|
#include <IO/WriteBufferFromFileDescriptorDiscardOnFailure.h>
|
||||||
#include <IO/ReadBufferFromFileDescriptor.h>
|
|
||||||
#include <IO/ReadHelpers.h>
|
#include <IO/ReadHelpers.h>
|
||||||
#include <IO/WriteHelpers.h>
|
|
||||||
#include <Common/Exception.h>
|
#include <Common/Exception.h>
|
||||||
#include <Common/PipeFDs.h>
|
|
||||||
#include <Common/StackTrace.h>
|
|
||||||
#include <Common/getMultipleKeysFromConfig.h>
|
#include <Common/getMultipleKeysFromConfig.h>
|
||||||
#include <Common/ClickHouseRevision.h>
|
#include <Common/ClickHouseRevision.h>
|
||||||
#include <Common/Config/ConfigProcessor.h>
|
#include <Common/Config/ConfigProcessor.h>
|
||||||
@ -459,13 +449,7 @@ void BaseDaemon::initializeTerminationAndSignalProcessing()
|
|||||||
signal_listener_thread.start(*signal_listener);
|
signal_listener_thread.start(*signal_listener);
|
||||||
|
|
||||||
#if defined(__ELF__) && !defined(OS_FREEBSD)
|
#if defined(__ELF__) && !defined(OS_FREEBSD)
|
||||||
String build_id_hex = SymbolIndex::instance().getBuildIDHex();
|
build_id = SymbolIndex::instance().getBuildIDHex();
|
||||||
if (build_id_hex.empty())
|
|
||||||
build_id = "";
|
|
||||||
else
|
|
||||||
build_id = build_id_hex;
|
|
||||||
#else
|
|
||||||
build_id = "";
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
git_hash = GIT_HASH;
|
git_hash = GIT_HASH;
|
||||||
|
@ -1,10 +1,7 @@
|
|||||||
configure_file(GitHash.cpp.in GitHash.generated.cpp)
|
|
||||||
|
|
||||||
add_library (daemon
|
add_library (daemon
|
||||||
BaseDaemon.cpp
|
BaseDaemon.cpp
|
||||||
GraphiteWriter.cpp
|
GraphiteWriter.cpp
|
||||||
SentryWriter.cpp
|
SentryWriter.cpp
|
||||||
GitHash.generated.cpp
|
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries (daemon PUBLIC loggers common PRIVATE clickhouse_parsers clickhouse_common_io clickhouse_common_config)
|
target_link_libraries (daemon PUBLIC loggers common PRIVATE clickhouse_parsers clickhouse_common_io clickhouse_common_config)
|
||||||
|
@ -14,6 +14,8 @@ namespace ErrorCodes
|
|||||||
{
|
{
|
||||||
extern const int LOGICAL_ERROR;
|
extern const int LOGICAL_ERROR;
|
||||||
extern const int CANNOT_GET_CREATE_TABLE_QUERY;
|
extern const int CANNOT_GET_CREATE_TABLE_QUERY;
|
||||||
|
extern const int BAD_ARGUMENTS;
|
||||||
|
extern const int UNKNOWN_TABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
DatabasesOverlay::DatabasesOverlay(const String & name_, ContextPtr context_)
|
DatabasesOverlay::DatabasesOverlay(const String & name_, ContextPtr context_)
|
||||||
@ -124,6 +126,39 @@ StoragePtr DatabasesOverlay::detachTable(ContextPtr context_, const String & tab
|
|||||||
getEngineName());
|
getEngineName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DatabasesOverlay::renameTable(
|
||||||
|
ContextPtr current_context,
|
||||||
|
const String & name,
|
||||||
|
IDatabase & to_database,
|
||||||
|
const String & to_name,
|
||||||
|
bool exchange,
|
||||||
|
bool dictionary)
|
||||||
|
{
|
||||||
|
for (auto & db : databases)
|
||||||
|
{
|
||||||
|
if (db->isTableExist(name, current_context))
|
||||||
|
{
|
||||||
|
if (DatabasesOverlay * to_overlay_database = typeid_cast<DatabasesOverlay *>(&to_database))
|
||||||
|
{
|
||||||
|
/// Renaming from Overlay database inside itself or into another Overlay database.
|
||||||
|
/// Just use the first database in the overlay as a destination.
|
||||||
|
if (to_overlay_database->databases.empty())
|
||||||
|
throw Exception(ErrorCodes::BAD_ARGUMENTS, "The destination Overlay database {} does not have any members", to_database.getDatabaseName());
|
||||||
|
|
||||||
|
db->renameTable(current_context, name, *to_overlay_database->databases[0], to_name, exchange, dictionary);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/// Renaming into a different type of database. E.g. from Overlay on top of Atomic database into just Atomic database.
|
||||||
|
db->renameTable(current_context, name, to_database, to_name, exchange, dictionary);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
throw Exception(ErrorCodes::UNKNOWN_TABLE, "Table {}.{} doesn't exist", backQuote(getDatabaseName()), backQuote(name));
|
||||||
|
}
|
||||||
|
|
||||||
ASTPtr DatabasesOverlay::getCreateTableQueryImpl(const String & name, ContextPtr context_, bool throw_on_error) const
|
ASTPtr DatabasesOverlay::getCreateTableQueryImpl(const String & name, ContextPtr context_, bool throw_on_error) const
|
||||||
{
|
{
|
||||||
ASTPtr result = nullptr;
|
ASTPtr result = nullptr;
|
||||||
@ -178,6 +213,18 @@ String DatabasesOverlay::getTableDataPath(const ASTCreateQuery & query) const
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UUID DatabasesOverlay::getUUID() const
|
||||||
|
{
|
||||||
|
UUID result = UUIDHelpers::Nil;
|
||||||
|
for (const auto & db : databases)
|
||||||
|
{
|
||||||
|
result = db->getUUID();
|
||||||
|
if (result != UUIDHelpers::Nil)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
UUID DatabasesOverlay::tryGetTableUUID(const String & table_name) const
|
UUID DatabasesOverlay::tryGetTableUUID(const String & table_name) const
|
||||||
{
|
{
|
||||||
UUID result = UUIDHelpers::Nil;
|
UUID result = UUIDHelpers::Nil;
|
||||||
|
@ -35,12 +35,21 @@ public:
|
|||||||
|
|
||||||
StoragePtr detachTable(ContextPtr context, const String & table_name) override;
|
StoragePtr detachTable(ContextPtr context, const String & table_name) override;
|
||||||
|
|
||||||
|
void renameTable(
|
||||||
|
ContextPtr current_context,
|
||||||
|
const String & name,
|
||||||
|
IDatabase & to_database,
|
||||||
|
const String & to_name,
|
||||||
|
bool exchange,
|
||||||
|
bool dictionary) override;
|
||||||
|
|
||||||
ASTPtr getCreateTableQueryImpl(const String & name, ContextPtr context, bool throw_on_error) const override;
|
ASTPtr getCreateTableQueryImpl(const String & name, ContextPtr context, bool throw_on_error) const override;
|
||||||
ASTPtr getCreateDatabaseQuery() const override;
|
ASTPtr getCreateDatabaseQuery() const override;
|
||||||
|
|
||||||
String getTableDataPath(const String & table_name) const override;
|
String getTableDataPath(const String & table_name) const override;
|
||||||
String getTableDataPath(const ASTCreateQuery & query) const override;
|
String getTableDataPath(const ASTCreateQuery & query) const override;
|
||||||
|
|
||||||
|
UUID getUUID() const override;
|
||||||
UUID tryGetTableUUID(const String & table_name) const override;
|
UUID tryGetTableUUID(const String & table_name) const override;
|
||||||
|
|
||||||
void drop(ContextPtr context) override;
|
void drop(ContextPtr context) override;
|
||||||
|
@ -27,7 +27,6 @@ class ASTQueryWithTableAndOutput;
|
|||||||
class ASTTableIdentifier;
|
class ASTTableIdentifier;
|
||||||
class Context;
|
class Context;
|
||||||
|
|
||||||
// TODO(ilezhankin): refactor and merge |ASTTableIdentifier|
|
|
||||||
struct StorageID
|
struct StorageID
|
||||||
{
|
{
|
||||||
String database_name;
|
String database_name;
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
# shellcheck disable=SC2266
|
||||||
|
|
||||||
CUR_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
CUR_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
||||||
# shellcheck source=../shell_config.sh
|
# shellcheck source=../shell_config.sh
|
||||||
. "$CUR_DIR"/../shell_config.sh
|
. "$CUR_DIR"/../shell_config.sh
|
||||||
|
|
||||||
$CLICKHOUSE_CLIENT -q "SELECT count(*) FROM numbers(10) AS a, numbers(11) AS b, numbers(12) AS c SETTINGS max_block_size = 0" 2>&1 | grep -q "Sanity check: 'max_block_size' cannot be 0. Set to default value" && echo "OK" || echo "FAIL"
|
$CLICKHOUSE_CLIENT -q "SELECT count(*) FROM numbers(10) AS a, numbers(11) AS b, numbers(12) AS c SETTINGS max_block_size = 0" 2>&1 |
|
||||||
|
[ "$(grep -c "Sanity check: 'max_block_size' cannot be 0. Set to default value")" -gt 0 ] && echo "OK" || echo "FAIL"
|
||||||
|
Loading…
Reference in New Issue
Block a user