Merge pull request #53381 from bakwc/bakwc-patch-2

Fixed system.data_skipping_indices for MaterializedMySQL
This commit is contained in:
Alexander Tokmakov 2023-08-18 14:22:40 +03:00 committed by GitHub
commit 0bd378afd9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 45 additions and 0 deletions

View File

@ -43,6 +43,11 @@ public:
bool supportsTrivialCountOptimization() const override { return false; }
IndexSizeByName getSecondaryIndexSizes() const override
{
return nested_storage->getSecondaryIndexSizes();
}
private:
[[noreturn]] static void throwNotAllowed()
{

View File

@ -2637,3 +2637,37 @@ def create_table_as_select(clickhouse_node, mysql_node, service_name):
clickhouse_node.query(f"DROP DATABASE IF EXISTS {db}")
mysql_node.query(f"DROP DATABASE IF EXISTS {db}")
def table_with_indexes(clickhouse_node, mysql_node, service_name):
db = "table_with_indexes"
mysql_node.query(f"DROP DATABASE IF EXISTS {db}")
clickhouse_node.query(f"DROP DATABASE IF EXISTS {db}")
mysql_node.query(f"CREATE DATABASE {db}")
mysql_node.query(
f"CREATE TABLE {db}.t1(id INT NOT NULL PRIMARY KEY,"
f"data varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL) ENGINE = InnoDB"
)
mysql_node.query(f"INSERT INTO {db}.t1 VALUES(1, 'some test string 1')")
mysql_node.query(f"INSERT INTO {db}.t1 VALUES(2, 'some test string 2')")
clickhouse_node.query(
f"""
CREATE DATABASE {db} ENGINE = MaterializeMySQL('{service_name}:3306', '{db}', 'root', 'clickhouse')
TABLE OVERRIDE t1 (COLUMNS (
INDEX data_idx data TYPE ngrambf_v1(5, 65536, 4, 0) GRANULARITY 1
))
"""
)
check_query(
clickhouse_node,
"SELECT data_uncompressed_bytes FROM system.data_skipping_indices WHERE "
"database = 'table_with_indexes' and table = 't1' and name = 'data_idx'",
"65536\n",
)
mysql_node.query(f"DROP DATABASE IF EXISTS {db}")
clickhouse_node.query(f"DROP DATABASE IF EXISTS {db}")

View File

@ -546,3 +546,9 @@ def test_create_table_as_select(started_cluster, started_mysql_8_0, clickhouse_n
materialized_with_ddl.create_table_as_select(
clickhouse_node, started_mysql_8_0, "mysql80"
)
def test_table_with_indexes(started_cluster, started_mysql_8_0, clickhouse_node):
materialized_with_ddl.table_with_indexes(
clickhouse_node, started_mysql_8_0, "mysql80"
)