Null supports no settings

This commit is contained in:
Yatsishin Ilya 2024-09-04 11:48:22 +00:00
parent 17baa4f51b
commit dff153b59e
2 changed files with 25 additions and 0 deletions

View File

@ -1074,6 +1074,7 @@ namespace
engine_ast->name = "Null"; engine_ast->name = "Null";
engine_ast->no_empty_args = true; engine_ast->no_empty_args = true;
storage.set(storage.engine, engine_ast); storage.set(storage.engine, engine_ast);
storage.settings = nullptr;
} }
} }
@ -1156,7 +1157,9 @@ void InterpreterCreateQuery::setEngine(ASTCreateQuery & create) const
else if (getContext()->getSettingsRef().restore_replace_external_engines_to_null) else if (getContext()->getSettingsRef().restore_replace_external_engines_to_null)
{ {
if (StorageFactory::instance().getStorageFeatures(create.storage->engine->name).source_access_type != AccessType::NONE) if (StorageFactory::instance().getStorageFeatures(create.storage->engine->name).source_access_type != AccessType::NONE)
{
setNullTableEngine(*create.storage); setNullTableEngine(*create.storage);
}
} }
return; return;
} }

View File

@ -70,6 +70,12 @@ def get_mysql_conn(cluster):
def fill_tables(cluster, dbname): def fill_tables(cluster, dbname):
fill_nodes(nodes, dbname) fill_nodes(nodes, dbname)
node1.query(
f"""CREATE TABLE {dbname}.example_s3_engine_table (name String, value UInt32)
ENGINE = S3('https://clickhouse-public-datasets.s3.amazonaws.com/my-test-bucket-768/test-data.csv.gz', 'CSV', 'gzip')
SETTINGS input_format_with_names_use_header = 0"""
)
conn = get_mysql_conn(cluster) conn = get_mysql_conn(cluster)
with conn.cursor() as cursor: with conn.cursor() as cursor:
@ -136,6 +142,7 @@ def test_restore_table(start_cluster):
node2.query(f"BACKUP DATABASE replicated TO {backup_name}") node2.query(f"BACKUP DATABASE replicated TO {backup_name}")
node2.query("DROP TABLE replicated.example_s3_engine_table")
node2.query("DROP TABLE replicated.mysql_schema_inference_engine") node2.query("DROP TABLE replicated.mysql_schema_inference_engine")
node2.query("DROP TABLE replicated.mysql_schema_inference_function") node2.query("DROP TABLE replicated.mysql_schema_inference_function")
@ -149,6 +156,13 @@ def test_restore_table(start_cluster):
) )
node1.query(f"SYSTEM SYNC DATABASE REPLICA replicated") node1.query(f"SYSTEM SYNC DATABASE REPLICA replicated")
assert (
node1.query(
"SELECT engine FROM system.tables where database = 'replicated' and name = 'example_s3_engine_table'"
)
== "S3\n"
)
assert ( assert (
node1.query( node1.query(
"SELECT count(), sum(id) FROM replicated.mysql_schema_inference_engine" "SELECT count(), sum(id) FROM replicated.mysql_schema_inference_engine"
@ -175,6 +189,7 @@ def test_restore_table_null(start_cluster):
node2.query(f"BACKUP DATABASE replicated2 TO {backup_name}") node2.query(f"BACKUP DATABASE replicated2 TO {backup_name}")
node2.query("DROP TABLE replicated2.example_s3_engine_table")
node2.query("DROP TABLE replicated2.mysql_schema_inference_engine") node2.query("DROP TABLE replicated2.mysql_schema_inference_engine")
node2.query("DROP TABLE replicated2.mysql_schema_inference_function") node2.query("DROP TABLE replicated2.mysql_schema_inference_function")
@ -188,6 +203,13 @@ def test_restore_table_null(start_cluster):
) )
node1.query(f"SYSTEM SYNC DATABASE REPLICA replicated2") node1.query(f"SYSTEM SYNC DATABASE REPLICA replicated2")
assert (
node1.query(
"SELECT engine FROM system.tables where database = 'replicated2' and name = 'example_s3_engine_table'"
)
== "Null\n"
)
assert ( assert (
node1.query( node1.query(
"SELECT count(), sum(id) FROM replicated2.mysql_schema_inference_engine" "SELECT count(), sum(id) FROM replicated2.mysql_schema_inference_engine"