diff --git a/tests/performance/hasAll_simd_int16.xml b/tests/performance/hasAll_simd_int16.xml
deleted file mode 100644
index c2ce4eec77f..00000000000
--- a/tests/performance/hasAll_simd_int16.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-
- CREATE TABLE test_table_small (`set` Array(Int16), `subset` Array (Int16)) ENGINE = MergeTree ORDER BY set
- CREATE TABLE test_table_small2 (`set` Array(Int16), `subset` Array (Int16)) ENGINE = MergeTree ORDER BY set
- CREATE TABLE test_table_smallf (`set` Array(Int16), `subset` Array (Int16)) ENGINE = MergeTree ORDER BY set
-
- CREATE TABLE test_table_medium (`set` Array(Int16), `subset` Array (Int16)) ENGINE = MergeTree ORDER BY set
- CREATE TABLE test_table_medium2 (`set` Array(Int16), `subset` Array (Int16)) ENGINE = MergeTree ORDER BY set
- CREATE TABLE test_table_mediumf (`set` Array(Int16), `subset` Array (Int16)) ENGINE = MergeTree ORDER BY set
-
- CREATE TABLE test_table_large (`set` Array(Int16), `subset` Array (Int16)) ENGINE = MergeTree ORDER BY set
- CREATE TABLE test_table_large2 (`set` Array(Int16), `subset` Array (Int16)) ENGINE = MergeTree ORDER BY set
- CREATE TABLE test_table_largef (`set` Array(Int16), `subset` Array (Int16)) ENGINE = MergeTree ORDER BY set
-
-
- INSERT INTO test_table_small SELECT groupArraySample(500)(number) AS set, groupArraySample(10)(number) AS subset FROM (SELECT * FROM numbers(500))
- INSERT INTO test_table_small2 SELECT groupArraySample(500)(number) AS set, groupArraySample(400)(number) AS subset FROM (SELECT * FROM numbers(500))
- INSERT INTO test_table_smallf SELECT groupArraySample(500)(number) AS set, groupArraySample(10)(number) AS subset FROM (SELECT * FROM numbers(5000000))
-
-
- INSERT INTO test_table_medium SELECT groupArraySample(1000000)(number) AS set, groupArraySample(10)(number) AS subset FROM (SELECT * FROM numbers(1000000))
- INSERT INTO test_table_medium2 SELECT groupArraySample(1000000)(number) AS set, groupArraySample(4000)(number) AS subset FROM (SELECT * FROM numbers(1000000))
- INSERT INTO test_table_mediumf SELECT groupArraySample(1000000)(number) AS set, groupArraySample(10)(number) AS subset FROM (SELECT * FROM numbers(100000000))
-
-
- INSERT INTO test_table_large SELECT groupArraySample(50000000)(number) AS set, groupArraySample(10)(number) AS subset FROM (SELECT * FROM numbers(50000000))
- INSERT INTO test_table_large2 SELECT groupArraySample(50000000)(number) AS set, groupArraySample(8000)(number) AS subset FROM (SELECT * FROM numbers(50000000))
- INSERT INTO test_table_largef SELECT groupArraySample(50000000)(number) AS set, groupArraySample(10)(number) AS subset FROM (SELECT * FROM numbers(1000000000))
-
- select hasAll(set, subset) from test_table_small
- select hasAll(set, subset) from test_table_small2
- select hasAll(set, subset) from test_table_smallf
-
- select hasAll(set, subset) from test_table_medium
- select hasAll(set, subset) from test_table_medium2
- select hasAll(set, subset) from test_table_mediumf
-
- select hasAll(set, subset) from test_table_large
- select hasAll(set, subset) from test_table_large2 Settings max_execution_time=300
- select hasAll(set, subset) from test_table_largef
-
- DROP TABLE IF EXISTS test_table_small
- DROP TABLE IF EXISTS test_table_small2
- DROP TABLE IF EXISTS test_table_smallf
-
- DROP TABLE IF EXISTS test_table_medium
- DROP TABLE IF EXISTS test_table_medium2
- DROP TABLE IF EXISTS test_table_mediumf
-
- DROP TABLE IF EXISTS test_table_large
- DROP TABLE IF EXISTS test_table_large2
- DROP TABLE IF EXISTS test_table_largef
-
diff --git a/tests/performance/hasAll_simd_int32.xml b/tests/performance/hasAll_simd_int32.xml
deleted file mode 100644
index 4543dea161b..00000000000
--- a/tests/performance/hasAll_simd_int32.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-
- CREATE TABLE test_table_small (`set` Array(Int32), `subset` Array (Int32)) ENGINE = MergeTree ORDER BY set
- CREATE TABLE test_table_small2 (`set` Array(Int32), `subset` Array (Int32)) ENGINE = MergeTree ORDER BY set
- CREATE TABLE test_table_smallf (`set` Array(Int32), `subset` Array (Int32)) ENGINE = MergeTree ORDER BY set
-
- CREATE TABLE test_table_medium (`set` Array(Int32), `subset` Array (Int32)) ENGINE = MergeTree ORDER BY set
- CREATE TABLE test_table_medium2 (`set` Array(Int32), `subset` Array (Int32)) ENGINE = MergeTree ORDER BY set
- CREATE TABLE test_table_mediumf (`set` Array(Int32), `subset` Array (Int32)) ENGINE = MergeTree ORDER BY set
-
- CREATE TABLE test_table_large (`set` Array(Int32), `subset` Array (Int32)) ENGINE = MergeTree ORDER BY set
- CREATE TABLE test_table_large2 (`set` Array(Int32), `subset` Array (Int32)) ENGINE = MergeTree ORDER BY set
- CREATE TABLE test_table_largef (`set` Array(Int32), `subset` Array (Int32)) ENGINE = MergeTree ORDER BY set
-
-
- INSERT INTO test_table_small SELECT groupArraySample(500)(number) AS set, groupArraySample(10)(number) AS subset FROM (SELECT * FROM numbers(500))
- INSERT INTO test_table_small2 SELECT groupArraySample(500)(number) AS set, groupArraySample(400)(number) AS subset FROM (SELECT * FROM numbers(500))
- INSERT INTO test_table_smallf SELECT groupArraySample(500)(number) AS set, groupArraySample(10)(number) AS subset FROM (SELECT * FROM numbers(5000000))
-
-
- INSERT INTO test_table_medium SELECT groupArraySample(1000000)(number) AS set, groupArraySample(10)(number) AS subset FROM (SELECT * FROM numbers(1000000))
- INSERT INTO test_table_medium2 SELECT groupArraySample(1000000)(number) AS set, groupArraySample(4000)(number) AS subset FROM (SELECT * FROM numbers(1000000))
- INSERT INTO test_table_mediumf SELECT groupArraySample(1000000)(number) AS set, groupArraySample(10)(number) AS subset FROM (SELECT * FROM numbers(100000000))
-
-
- INSERT INTO test_table_large SELECT groupArraySample(50000000)(number) AS set, groupArraySample(10)(number) AS subset FROM (SELECT * FROM numbers(50000000))
- INSERT INTO test_table_large2 SELECT groupArraySample(50000000)(number) AS set, groupArraySample(4000)(number) AS subset FROM (SELECT * FROM numbers(50000000)) Settings max_execution_time=30
- INSERT INTO test_table_largef SELECT groupArraySample(50000000)(number) AS set, groupArraySample(10)(number) AS subset FROM (SELECT * FROM numbers(1000000000))
-
- select hasAll(set, subset) from test_table_small
- select hasAll(set, subset) from test_table_small2
- select hasAll(set, subset) from test_table_smallf
-
- select hasAll(set, subset) from test_table_medium
- select hasAll(set, subset) from test_table_medium2
- select hasAll(set, subset) from test_table_mediumf
-
- select hasAll(set, subset) from test_table_large
- select hasAll(set, subset) from test_table_large2 Settings max_execution_time=300
- select hasAll(set, subset) from test_table_largef
-
- DROP TABLE IF EXISTS test_table_small
- DROP TABLE IF EXISTS test_table_small2
- DROP TABLE IF EXISTS test_table_smallf
-
- DROP TABLE IF EXISTS test_table_medium
- DROP TABLE IF EXISTS test_table_medium2
- DROP TABLE IF EXISTS test_table_mediumf
-
- DROP TABLE IF EXISTS test_table_large
- DROP TABLE IF EXISTS test_table_large2
- DROP TABLE IF EXISTS test_table_largef
-
diff --git a/tests/performance/hasAll_simd_int64.xml b/tests/performance/hasAll_simd_int64.xml
deleted file mode 100644
index 07e52483bb1..00000000000
--- a/tests/performance/hasAll_simd_int64.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-
- CREATE TABLE test_table_small (`set` Array(Int64), `subset` Array (Int64)) ENGINE = MergeTree ORDER BY set
- CREATE TABLE test_table_small2 (`set` Array(Int64), `subset` Array (Int64)) ENGINE = MergeTree ORDER BY set
- CREATE TABLE test_table_smallf (`set` Array(Int64), `subset` Array (Int64)) ENGINE = MergeTree ORDER BY set
-
- CREATE TABLE test_table_medium (`set` Array(Int64), `subset` Array (Int64)) ENGINE = MergeTree ORDER BY set
- CREATE TABLE test_table_medium2 (`set` Array(Int64), `subset` Array (Int64)) ENGINE = MergeTree ORDER BY set
- CREATE TABLE test_table_mediumf (`set` Array(Int64), `subset` Array (Int64)) ENGINE = MergeTree ORDER BY set
-
- CREATE TABLE test_table_large (`set` Array(Int64), `subset` Array (Int64)) ENGINE = MergeTree ORDER BY set
- CREATE TABLE test_table_large2 (`set` Array(Int64), `subset` Array (Int64)) ENGINE = MergeTree ORDER BY set
- CREATE TABLE test_table_largef (`set` Array(Int64), `subset` Array (Int64)) ENGINE = MergeTree ORDER BY set
-
-
- INSERT INTO test_table_small SELECT groupArraySample(500)(number) AS set, groupArraySample(10)(number) AS subset FROM (SELECT * FROM numbers(500))
- INSERT INTO test_table_small2 SELECT groupArraySample(500)(number) AS set, groupArraySample(400)(number) AS subset FROM (SELECT * FROM numbers(500))
- INSERT INTO test_table_smallf SELECT groupArraySample(500)(number) AS set, groupArraySample(10)(number) AS subset FROM (SELECT * FROM numbers(5000000))
-
-
- INSERT INTO test_table_medium SELECT groupArraySample(1000000)(number) AS set, groupArraySample(10)(number) AS subset FROM (SELECT * FROM numbers(1000000))
- INSERT INTO test_table_medium2 SELECT groupArraySample(1000000)(number) AS set, groupArraySample(4000)(number) AS subset FROM (SELECT * FROM numbers(1000000))
- INSERT INTO test_table_mediumf SELECT groupArraySample(1000000)(number) AS set, groupArraySample(10)(number) AS subset FROM (SELECT * FROM numbers(100000000))
-
-
- INSERT INTO test_table_large SELECT groupArraySample(50000000)(number) AS set, groupArraySample(10)(number) AS subset FROM (SELECT * FROM numbers(50000000))
- INSERT INTO test_table_large2 SELECT groupArraySample(50000000)(number) AS set, groupArraySample(2000)(number) AS subset FROM (SELECT * FROM numbers(50000000)) Settings max_execution_time=30
- INSERT INTO test_table_largef SELECT groupArraySample(50000000)(number) AS set, groupArraySample(10)(number) AS subset FROM (SELECT * FROM numbers(1000000000))
-
- select hasAll(set, subset) from test_table_small
- select hasAll(set, subset) from test_table_small2
- select hasAll(set, subset) from test_table_smallf
-
- select hasAll(set, subset) from test_table_medium
- select hasAll(set, subset) from test_table_medium2
- select hasAll(set, subset) from test_table_mediumf
-
- select hasAll(set, subset) from test_table_large
- select hasAll(set, subset) from test_table_large2 Settings max_execution_time=300
- select hasAll(set, subset) from test_table_largef
-
- DROP TABLE IF EXISTS test_table_small
- DROP TABLE IF EXISTS test_table_small2
- DROP TABLE IF EXISTS test_table_smallf
-
- DROP TABLE IF EXISTS test_table_medium
- DROP TABLE IF EXISTS test_table_medium2
- DROP TABLE IF EXISTS test_table_mediumf
-
- DROP TABLE IF EXISTS test_table_large
- DROP TABLE IF EXISTS test_table_large2
- DROP TABLE IF EXISTS test_table_largef
-
diff --git a/tests/performance/hasAll_simd_int8.xml b/tests/performance/hasAll_simd_int8.xml
deleted file mode 100644
index 5ddc84aa5bd..00000000000
--- a/tests/performance/hasAll_simd_int8.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-
- CREATE TABLE test_table_small (`set` Array(Int8), `subset` Array (Int8)) ENGINE = MergeTree ORDER BY set
- CREATE TABLE test_table_small2 (`set` Array(Int8), `subset` Array (Int8)) ENGINE = MergeTree ORDER BY set
- CREATE TABLE test_table_smallf (`set` Array(Int8), `subset` Array (Int8)) ENGINE = MergeTree ORDER BY set
-
- CREATE TABLE test_table_medium (`set` Array(Int8), `subset` Array (Int8)) ENGINE = MergeTree ORDER BY set
- CREATE TABLE test_table_medium2 (`set` Array(Int8), `subset` Array (Int8)) ENGINE = MergeTree ORDER BY set
- CREATE TABLE test_table_mediumf (`set` Array(Int8), `subset` Array (Int8)) ENGINE = MergeTree ORDER BY set
-
- CREATE TABLE test_table_large (`set` Array(Int8), `subset` Array (Int8)) ENGINE = MergeTree ORDER BY set
- CREATE TABLE test_table_large2 (`set` Array(Int8), `subset` Array (Int8)) ENGINE = MergeTree ORDER BY set
- CREATE TABLE test_table_largef (`set` Array(Int8), `subset` Array (Int8)) ENGINE = MergeTree ORDER BY set
-
-
- INSERT INTO test_table_small SELECT groupArraySample(500)(number) AS set, groupArraySample(10)(number) AS subset FROM (SELECT * FROM numbers(500))
- INSERT INTO test_table_small2 SELECT groupArraySample(500)(number) AS set, groupArraySample(400)(number) AS subset FROM (SELECT * FROM numbers(500))
- INSERT INTO test_table_smallf SELECT groupArraySample(500)(number) AS set, groupArraySample(10)(number) AS subset FROM (SELECT * FROM numbers(5000000))
-
-
- INSERT INTO test_table_medium SELECT groupArraySample(1000000)(number) AS set, groupArraySample(10)(number) AS subset FROM (SELECT * FROM numbers(1000000))
- INSERT INTO test_table_medium2 SELECT groupArraySample(1000000)(number) AS set, groupArraySample(4000)(number) AS subset FROM (SELECT * FROM numbers(1000000))
- INSERT INTO test_table_mediumf SELECT groupArraySample(1000000)(number) AS set, groupArraySample(10)(number) AS subset FROM (SELECT * FROM numbers(100000000))
-
-
- INSERT INTO test_table_large SELECT groupArraySample(50000000)(number) AS set, groupArraySample(10)(number) AS subset FROM (SELECT * FROM numbers(50000000))
- INSERT INTO test_table_large2 SELECT groupArraySample(50000000)(number) AS set, groupArraySample(4000)(number) AS subset FROM (SELECT * FROM numbers(50000000))
- INSERT INTO test_table_largef SELECT groupArraySample(50000000)(number) AS set, groupArraySample(10)(number) AS subset FROM (SELECT * FROM numbers(1000000000))
-
- select hasAll(set, subset) from test_table_small
- select hasAll(set, subset) from test_table_small2
- select hasAll(set, subset) from test_table_smallf
-
- select hasAll(set, subset) from test_table_medium
- select hasAll(set, subset) from test_table_medium2
- select hasAll(set, subset) from test_table_mediumf
-
- select hasAll(set, subset) from test_table_large
- select hasAll(set, subset) from test_table_large2 Settings max_execution_time=300
- select hasAll(set, subset) from test_table_largef
-
- DROP TABLE IF EXISTS test_table_small
- DROP TABLE IF EXISTS test_table_small2
- DROP TABLE IF EXISTS test_table_smallf
-
- DROP TABLE IF EXISTS test_table_medium
- DROP TABLE IF EXISTS test_table_medium2
- DROP TABLE IF EXISTS test_table_mediumf
-
- DROP TABLE IF EXISTS test_table_large
- DROP TABLE IF EXISTS test_table_large2
- DROP TABLE IF EXISTS test_table_largef
-
diff --git a/tests/performance/has_all.xml b/tests/performance/has_all.xml
new file mode 100644
index 00000000000..331442cbfee
--- /dev/null
+++ b/tests/performance/has_all.xml
@@ -0,0 +1,53 @@
+
+
+
+ array_type
+
+ Int8
+ Int16
+ Int32
+ Int64
+
+
+
+
+
+ CREATE TABLE test_table_small_{array_type}
+ (
+ `set` Array({array_type}),
+ `subset` Array ({array_type})
+ )
+ ENGINE = MergeTree ORDER BY set;
+
+
+
+ CREATE TABLE test_table_medium_{array_type}
+ (
+ `set` Array({array_type}),
+ `subset` Array ({array_type})
+ )
+ ENGINE = MergeTree ORDER BY set;
+
+
+
+ CREATE TABLE test_table_large_{array_type}
+ (
+ `set` Array({array_type}),
+ `subset` Array ({array_type})
+ )
+ ENGINE = MergeTree ORDER BY set;
+
+
+
+ INSERT INTO test_table_small_{array_type} SELECT groupArraySample(5000)(rand64()) AS set, groupArraySample(500)(rand64()) AS subset FROM numbers(10000000) GROUP BY number % 5000;
+ INSERT INTO test_table_medium_{array_type} SELECT groupArraySample(50000)(rand64()) AS set, groupArraySample(5000)(rand64()) AS subset FROM numbers(25000000) GROUP BY number % 50000;
+ INSERT INTO test_table_large_{array_type} SELECT groupArraySample(500000)(rand64()) AS set, groupArraySample(500000)(rand64()) AS subset FROM numbers(50000000) GROUP BY number % 500000;
+
+ SELECT hasAll(set, subset) FROM test_table_small_{array_type} FORMAT Null
+ SELECT hasAll(set, subset) FROM test_table_medium_{array_type} FORMAT Null
+ SELECT hasAll(set, subset) FROM test_table_large_{array_type} FORMAT Null
+
+ DROP TABLE IF EXISTS test_table_small_{array_type}
+ DROP TABLE IF EXISTS test_table_medium_{array_type}
+ DROP TABLE IF EXISTS test_table_large_{array_type}
+