mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-24 08:32:02 +00:00
Fixed integration tests
This commit is contained in:
parent
0c012d4288
commit
375b77dbcb
@ -21,6 +21,7 @@ namespace ErrorCodes
|
||||
extern const int NUMBER_OF_ARGUMENTS_DOESNT_MATCH;
|
||||
extern const int THERE_IS_NO_COLUMN;
|
||||
extern const int CANNOT_DETACH_DICTIONARY_AS_TABLE;
|
||||
extern const int DICTIONARY_ALREADY_EXISTS;
|
||||
}
|
||||
|
||||
namespace
|
||||
@ -241,9 +242,27 @@ void registerStorageDictionary(StorageFactory & factory)
|
||||
|
||||
if (query.is_dictionary)
|
||||
{
|
||||
auto dictionary_id = args.table_id;
|
||||
auto & external_dictionaries_loader = local_context->getExternalDictionariesLoader();
|
||||
|
||||
/// A dictionary with the same full name could be defined in *.xml config files.
|
||||
if (external_dictionaries_loader.getCurrentStatus(dictionary_id.getFullNameNotQuoted()) != ExternalLoader::Status::NOT_EXIST)
|
||||
throw Exception(ErrorCodes::DICTIONARY_ALREADY_EXISTS,
|
||||
"Dictionary {} already exists.", dictionary_id.getFullNameNotQuoted());
|
||||
|
||||
/// Create dictionary storage that owns underlying dictionary
|
||||
auto abstract_dictionary_configuration = getDictionaryConfigurationFromAST(args.query, local_context, args.table_id.database_name);
|
||||
return StorageDictionary::create(args.table_id, abstract_dictionary_configuration, local_context);
|
||||
auto abstract_dictionary_configuration = getDictionaryConfigurationFromAST(args.query, local_context, dictionary_id.database_name);
|
||||
auto result_storage = StorageDictionary::create(dictionary_id, abstract_dictionary_configuration, local_context);
|
||||
|
||||
bool lazy_load = local_context->getConfigRef().getBool("dictionaries_lazy_load", true);
|
||||
if (!lazy_load)
|
||||
{
|
||||
/// load() is called here to force loading the dictionary, wait until the loading is finished,
|
||||
/// and throw an exception if the loading is failed.
|
||||
external_dictionaries_loader.load(result_storage->getStorageID().getInternalDictionaryName());
|
||||
}
|
||||
|
||||
return result_storage;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -205,7 +205,7 @@ StoragePtr StorageFactory::get(
|
||||
assert(arguments.getContext() == arguments.getContext()->getGlobalContext());
|
||||
|
||||
auto res = storages.at(name).creator_fn(arguments);
|
||||
if (!empty_engine_args.empty()) //-v547
|
||||
if (!empty_engine_args.empty()) //-V547
|
||||
{
|
||||
/// Storage creator modified empty arguments list, so we should modify the query
|
||||
assert(storage_def && storage_def->engine && !storage_def->engine->arguments);
|
||||
|
@ -288,6 +288,23 @@ def test_clickhouse_remote(started_cluster):
|
||||
time.sleep(0.5)
|
||||
|
||||
node3.query("detach dictionary if exists test.clickhouse_remote")
|
||||
|
||||
with pytest.raises(QueryRuntimeException):
|
||||
node3.query("""
|
||||
CREATE DICTIONARY test.clickhouse_remote(
|
||||
id UInt64,
|
||||
SomeValue1 UInt8,
|
||||
SomeValue2 String
|
||||
)
|
||||
PRIMARY KEY id
|
||||
LAYOUT(FLAT())
|
||||
SOURCE(CLICKHOUSE(HOST 'node4' PORT 9000 USER 'default' PASSWORD 'default' TABLE 'xml_dictionary_table' DB 'test'))
|
||||
LIFETIME(MIN 1 MAX 10)
|
||||
""")
|
||||
|
||||
node3.query("attach dictionary test.clickhouse_remote")
|
||||
node3.query("drop dictionary test.clickhouse_remote")
|
||||
|
||||
node3.query("""
|
||||
CREATE DICTIONARY test.clickhouse_remote(
|
||||
id UInt64,
|
||||
|
Loading…
Reference in New Issue
Block a user