You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-11-21 09:20:51 +03:00
chore(QA,rules): Added sign-aware getters for min/max PK statistics values and a test for QA with PK-only statistics.
This commit is contained in:
106
mysql-test/columnstore/future/rbo_parallel_ces_using_pk.result
Normal file
106
mysql-test/columnstore/future/rbo_parallel_ces_using_pk.result
Normal file
@@ -0,0 +1,106 @@
|
||||
DROP DATABASE IF EXISTS rbo_parallel_ces_using_pk;
|
||||
CREATE DATABASE rbo_parallel_ces_using_pk;
|
||||
USE rbo_parallel_ces_using_pk;
|
||||
SELECT calsettrace(1);
|
||||
calsettrace(1)
|
||||
0
|
||||
CREATE TABLE `lineitem` (
|
||||
`L_ORDERKEY` int(11) NOT NULL,
|
||||
`L_PARTKEY` int(11) NOT NULL,
|
||||
`L_SUPPKEY` int(11) NOT NULL,
|
||||
`L_LINENUMBER` int(11) NOT NULL,
|
||||
`L_QUANTITY` decimal(15,2) NOT NULL,
|
||||
`L_EXTENDEDPRICE` decimal(15,2) NOT NULL,
|
||||
`L_DISCOUNT` decimal(15,2) NOT NULL,
|
||||
`L_TAX` decimal(15,2) NOT NULL,
|
||||
`L_RETURNFLAG` char(1) NOT NULL,
|
||||
`L_LINESTATUS` char(1) NOT NULL,
|
||||
`L_SHIPDATE` date NOT NULL,
|
||||
`L_COMMITDATE` date NOT NULL,
|
||||
`L_RECEIPTDATE` date NOT NULL,
|
||||
`L_SHIPINSTRUCT` char(25) NOT NULL,
|
||||
`L_SHIPMODE` char(10) NOT NULL,
|
||||
`L_COMMENT` varchar(44) NOT NULL,
|
||||
`recdate_gt_commitdate` tinyint(4) NOT NULL DEFAULT 0,
|
||||
KEY `L_ORDERKEY` (`L_ORDERKEY`,`L_SUPPKEY`,`recdate_gt_commitdate`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
INSERT INTO `lineitem` (
|
||||
`L_ORDERKEY`, `L_PARTKEY`, `L_SUPPKEY`, `L_LINENUMBER`,
|
||||
`L_QUANTITY`, `L_EXTENDEDPRICE`, `L_DISCOUNT`, `L_TAX`,
|
||||
`L_RETURNFLAG`, `L_LINESTATUS`, `L_SHIPDATE`, `L_COMMITDATE`, `L_RECEIPTDATE`,
|
||||
`L_SHIPINSTRUCT`, `L_SHIPMODE`, `L_COMMENT`, `recdate_gt_commitdate`
|
||||
) VALUES
|
||||
(32, 197921, 441, 2, 32.00, 64605.44, 0.02, 0.00, 'N', 'O', '1995-08-14', '1995-10-07', '1995-08-27', 'COLLECT COD', 'AIR', 'lithely regular deposits. fluffily', 0),
|
||||
(3, 128449, 3474, 3, 27.00, 39890.88, 0.06, 0.07, 'A', 'F', '1994-01-16', '1993-11-22', '1994-01-23', 'DELIVER IN PERSON', 'SHIP', 'nal foxes wake. ', 1),
|
||||
(4, 88035, 5560, 1, 30.00, 30690.90, 0.03, 0.08, 'N', 'O', '1996-01-10', '1995-12-14', '1996-01-18', 'DELIVER IN PERSON', 'REG AIR', '- quickly regular packages sleep. idly', 1),
|
||||
(5, 123927, 3928, 2, 26.00, 50723.92, 0.07, 0.08, 'R', 'F', '1994-10-16', '1994-09-25', '1994-10-19', 'NONE', 'FOB', 'sts use slyly quickly special instruc', 1),
|
||||
(7, 182052, 9607, 1, 12.00, 13608.60, 0.07, 0.03, 'N', 'O', '1996-05-07', '1996-03-13', '1996-06-03', 'TAKE BACK RETURN', 'FOB', 'ss pinto beans wake against th', 1),
|
||||
(34, 88362, 871, 1, 13.00, 17554.68, 0.00, 0.07, 'N', 'O', '1998-10-23', '1998-09-14', '1998-11-06', 'NONE', 'REG AIR', 'nic accounts. deposits are alon', 1),
|
||||
(1, 155190, 7706, 1, 17.00, 21168.23, 0.04, 0.02, 'N', 'O', '1996-03-13', '1996-02-12', '1996-03-22', 'DELIVER IN PERSON', 'TRUCK', 'egular courts above the', 1),
|
||||
(33, 137469, 9983, 3, 5.00, 7532.30, 0.05, 0.03, 'A', 'F', '1993-12-09', '1993-12-25', '1993-12-23', 'TAKE BACK RETURN', 'AIR', '. stealthily bold exc', 0),
|
||||
(151872, 939, 940, 2, 42.00, 77277.06, 0.01, 0.00, 'N', 'O', '1995-09-30', '1995-09-28', '1995-10-27', 'TAKE BACK RETURN', 'TRUCK', 'ly slyly fina', 1),
|
||||
(77632, 966, 967, 4, 11.00, 20536.56, 0.04, 0.03, 'N', 'O', '1995-09-28', '1995-09-22', '1995-10-24', 'NONE', 'FOB', 'nts was furi', 1),
|
||||
(26439, 1085, 1086, 3, 3.00, 2958.24, 0.03, 0.00, 'N', 'O', '1995-09-30', '1995-12-04', '1995-10-22', 'DELIVER IN PERSON', 'TRUCK', 'ackages wake slyly a', 0),
|
||||
(98599, 1239, 8740, 2, 48.00, 54731.04, 0.09, 0.06, 'N', 'O', '1995-09-24', '1995-08-26', '1995-10-02', 'TAKE BACK RETURN', 'TRUCK', 'ake always p', 1),
|
||||
(95301, 1343, 8844, 2, 33.00, 41063.22, 0.00, 0.01, 'N', 'O', '1995-09-09', '1995-11-01', '1995-09-28', 'TAKE BACK RETURN', 'FOB', 'carefully regular requests. requests', 0),
|
||||
(83008, 2988, 2989, 2, 12.00, 22691.76, 0.06, 0.07, 'N', 'O', '1995-09-15', '1995-09-24', '1995-10-09', 'NONE', 'RAIL', 'into beans do', 1),
|
||||
(117665, 3024, 3025, 4, 10.00, 9270.20, 0.02, 0.01, 'N', 'O', '1995-09-17', '1995-08-26', '1995-10-12', 'COLLECT COD', 'AIR', 'about the slyly even req', 1),
|
||||
(163746, 3126, 8127, 4, 45.00, 46310.40, 0.02, 0.00, 'N', 'O', '1995-09-21', '1995-09-17', '1995-10-01', 'DELIVER IN PERSON', 'RAIL', 'ggle. regular de', 1),
|
||||
(161669, 3142, 8143, 3, 42.00, 43895.88, 0.06, 0.06, 'N', 'O', '1995-09-29', '1995-09-09', '1995-10-29', 'COLLECT COD', 'RAIL', 'ts. unusual accounts gro', 1),
|
||||
(81826, 3357, 8358, 5, 5.00, 6301.75, 0.05, 0.04, 'N', 'O', '1995-09-06', '1995-06-14', '1995-09-19', 'TAKE BACK RETURN', 'FOB', 'y final pains x-ray blithely. pen', 1),
|
||||
(118849, 3625, 6126, 5, 24.00, 36686.88, 0.09, 0.01, 'N', 'O', '1995-09-24', '1995-09-23', '1995-09-27', 'COLLECT COD', 'RAIL', 'c requests. furiously stealthy theodoli', 1),
|
||||
(135239, 4119, 1620, 5, 36.00, 36831.96, 0.05, 0.03, 'N', 'O', '1995-09-06', '1995-07-16', '1995-09-09', 'COLLECT COD', 'AIR', ' after the accounts. qu', 1),
|
||||
(30944, 4466, 9467, 1, 47.00, 64411.62, 0.02, 0.02, 'N', 'O', '1995-09-27', '1995-08-03', '1995-10-11', 'COLLECT COD', 'FOB', 'k platelets nag. slyly regular instructio', 1),
|
||||
(1001, 2217, 2218, 1, 500.00, 5000.00, 0.05, 0.02, 'A', 'F', '1994-03-15', '1994-02-10', '1994-03-20', 'DELIVER IN PERSON', 'TRUCK', 'forest part delivery', 0),
|
||||
(1002, 2217, 2218, 2, 500.00, 5000.00, 0.05, 0.02, 'A', 'F', '1994-06-15', '1994-05-10', '1994-06-20', 'DELIVER IN PERSON', 'TRUCK', 'forest part delivery', 0),
|
||||
(1003, 2217, 9718, 1, 100.00, 1000.00, 0.05, 0.02, 'A', 'F', '1994-04-15', '1994-03-10', '1994-04-20', 'DELIVER IN PERSON', 'TRUCK', 'forest part delivery', 0),
|
||||
(1004, 2217, 9718, 2, 100.00, 1000.00, 0.05, 0.02, 'A', 'F', '1994-07-15', '1994-06-10', '1994-07-20', 'DELIVER IN PERSON', 'TRUCK', 'forest part delivery', 0),
|
||||
(1005, 4668, 7169, 1, 750.00, 7500.00, 0.05, 0.02, 'A', 'F', '1994-05-15', '1994-04-10', '1994-05-20', 'DELIVER IN PERSON', 'TRUCK', 'forest part delivery', 0),
|
||||
(1006, 4668, 7169, 2, 750.00, 7500.00, 0.05, 0.02, 'A', 'F', '1994-08-15', '1994-07-10', '1994-08-20', 'DELIVER IN PERSON', 'TRUCK', 'forest part delivery', 0),
|
||||
(1007, 4918, 2419, 1, 400.00, 4000.00, 0.05, 0.02, 'A', 'F', '1994-09-15', '1994-08-10', '1994-09-20', 'DELIVER IN PERSON', 'TRUCK', 'forest part delivery', 0),
|
||||
(1008, 4918, 2419, 2, 400.00, 4000.00, 0.05, 0.02, 'A', 'F', '1994-10-15', '1994-09-10', '1994-10-20', 'DELIVER IN PERSON', 'TRUCK', 'forest part delivery', 0),
|
||||
(1009, 6092, 6093, 1, 600.00, 6000.00, 0.05, 0.02, 'A', 'F', '1994-11-15', '1994-10-10', '1994-11-20', 'DELIVER IN PERSON', 'TRUCK', 'forest part delivery', 0),
|
||||
(1010, 6092, 6093, 2, 600.00, 6000.00, 0.05, 0.02, 'A', 'F', '1994-12-15', '1994-11-10', '1994-12-20', 'DELIVER IN PERSON', 'TRUCK', 'forest part delivery', 0),
|
||||
(1011, 7281, 2282, 1, 140.00, 1400.00, 0.05, 0.02, 'A', 'F', '1994-01-15', '1994-01-10', '1994-01-20', 'DELIVER IN PERSON', 'TRUCK', 'forest part delivery', 0),
|
||||
(1012, 7281, 2282, 2, 140.00, 1400.00, 0.05, 0.02, 'A', 'F', '1994-02-15', '1994-02-10', '1994-02-20', 'DELIVER IN PERSON', 'TRUCK', 'forest part delivery', 0),
|
||||
(1013, 8184, 3185, 1, 500.00, 5000.00, 0.05, 0.02, 'A', 'F', '1994-03-15', '1994-02-10', '1994-03-20', 'DELIVER IN PERSON', 'TRUCK', 'forest part delivery', 0),
|
||||
(1014, 8184, 3185, 2, 500.00, 5000.00, 0.05, 0.02, 'A', 'F', '1994-04-15', '1994-03-10', '1994-04-20', 'DELIVER IN PERSON', 'TRUCK', 'forest part delivery', 0),
|
||||
(1015, 9703, 2204, 1, 550.00, 5500.00, 0.05, 0.02, 'A', 'F', '1994-05-15', '1994-04-10', '1994-05-20', 'DELIVER IN PERSON', 'TRUCK', 'forest part delivery', 0),
|
||||
(1016, 9703, 2204, 2, 550.00, 5500.00, 0.05, 0.02, 'A', 'F', '1994-06-15', '1994-05-10', '1994-06-20', 'DELIVER IN PERSON', 'TRUCK', 'forest part delivery', 0),
|
||||
(1017, 10297, 2799, 1, 250.00, 2500.00, 0.05, 0.02, 'A', 'F', '1994-07-15', '1994-06-10', '1994-07-20', 'DELIVER IN PERSON', 'TRUCK', 'forest part delivery', 0),
|
||||
(1018, 10297, 2799, 2, 250.00, 2500.00, 0.05, 0.02, 'A', 'F', '1994-08-15', '1994-07-10', '1994-08-20', 'DELIVER IN PERSON', 'TRUCK', 'forest part delivery', 0),
|
||||
(1019, 10297, 5300, 1, 35.00, 350.00, 0.05, 0.02, 'A', 'F', '1994-09-15', '1994-08-10', '1994-09-20', 'DELIVER IN PERSON', 'TRUCK', 'forest part delivery', 0),
|
||||
(1020, 10297, 5300, 2, 35.00, 350.00, 0.05, 0.02, 'A', 'F', '1994-10-15', '1994-09-10', '1994-10-20', 'DELIVER IN PERSON', 'TRUCK', 'forest part delivery', 0);
|
||||
ALTER TABLE lineitem DROP INDEX `L_ORDERKEY`;
|
||||
ALTER TABLE lineitem ADD PRIMARY KEY (`l_orderkey`);
|
||||
set histogram_size=4;
|
||||
ANALYZE TABLE lineitem PERSISTENT FOR ALL;
|
||||
Table Op Msg_type Msg_text
|
||||
rbo_parallel_ces_using_pk.lineitem analyze status Engine-independent statistics collected
|
||||
rbo_parallel_ces_using_pk.lineitem analyze status OK
|
||||
set columnstore_unstable_optimizer=on;
|
||||
set optimizer_switch="index_merge=off,index_merge_union=off,index_merge_sort_union=off,index_merge_intersection=off,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=off,loosescan=off,materialization=on,in_to_exists=off,semijoin=off,partial_match_rowid_merge=off,partial_match_table_scan=off,subquery_cache=off,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=off,join_cache_hashed=off,join_cache_bka=off,optimize_join_buffer_size=off,table_elimination=off,extended_keys=off,exists_to_in=off,orderby_uses_equalities=off,condition_pushdown_for_derived=on,split_materialized=off,condition_pushdown_for_subquery=off,rowid_filter=off,condition_pushdown_from_having=on,not_null_range_scan=off,hash_join_cardinality=off,cset_narrowing=off,sargable_casefold=off";
|
||||
set columnstore_query_accel_parallel_factor=2;
|
||||
select count(*) from lineitem ;
|
||||
count(*)
|
||||
41
|
||||
SET @opt_plan := mcs_get_plan('optimized');
|
||||
SET @rbo_rules := mcs_get_plan('rules');
|
||||
SELECT @rbo_rules LIKE '%parallel_ces%' AS rule_parallel_ces_applied;
|
||||
rule_parallel_ces_applied
|
||||
1
|
||||
SET @opt_plan := mcs_get_plan('optimized');
|
||||
set @rewritten_derived_name = 'derived table - $added_sub_rbo_parallel_ces_using_pk_lineitem_0';
|
||||
set @original_table_name = '.lineitem(lineitem/) engineType=ForeignEngine';
|
||||
SELECT (CHAR_LENGTH(@opt_plan) - CHAR_LENGTH(REPLACE(@opt_plan, @rewritten_derived_name, ''))) / CHAR_LENGTH(@rewritten_derived_name) AS rewritten_derived_table_count;
|
||||
rewritten_derived_table_count
|
||||
1.0000
|
||||
SELECT (CHAR_LENGTH(@opt_plan) - CHAR_LENGTH(REPLACE(@opt_plan, @original_table_name, ''))) / CHAR_LENGTH(@original_table_name) AS original_table_count;
|
||||
original_table_count
|
||||
3.0000
|
||||
SELECT calsettrace(0);
|
||||
calsettrace(0)
|
||||
1
|
||||
DROP DATABASE rbo_parallel_ces_using_pk;
|
||||
set columnstore_unstable_optimizer=off;
|
||||
set optimizer_switch=default;
|
||||
48
mysql-test/columnstore/future/rbo_parallel_ces_using_pk.test
Normal file
48
mysql-test/columnstore/future/rbo_parallel_ces_using_pk.test
Normal file
@@ -0,0 +1,48 @@
|
||||
--source ../include/have_columnstore.inc
|
||||
--source include/have_innodb.inc
|
||||
--source ../include/functions.inc
|
||||
--source ../include/cross_engine.inc
|
||||
|
||||
--disable_warnings
|
||||
DROP DATABASE IF EXISTS rbo_parallel_ces_using_pk;
|
||||
--enable_warnings
|
||||
|
||||
CREATE DATABASE rbo_parallel_ces_using_pk;
|
||||
USE rbo_parallel_ces_using_pk;
|
||||
|
||||
# Turn on plan logging to capture CSEP strings
|
||||
SELECT calsettrace(1);
|
||||
|
||||
--source ../include/create_tpch_lineitem.inc
|
||||
|
||||
ALTER TABLE lineitem DROP INDEX `L_ORDERKEY`;
|
||||
ALTER TABLE lineitem ADD PRIMARY KEY (`l_orderkey`);
|
||||
|
||||
set histogram_size=4;
|
||||
ANALYZE TABLE lineitem PERSISTENT FOR ALL;
|
||||
|
||||
--source ../include/enable_rbo_parallel_ces.inc
|
||||
|
||||
set columnstore_query_accel_parallel_factor=2;
|
||||
select count(*) from lineitem ;
|
||||
|
||||
# Snapshot plans into variables for readability
|
||||
SET @opt_plan := mcs_get_plan('optimized');
|
||||
SET @rbo_rules := mcs_get_plan('rules');
|
||||
|
||||
# Ensure rule was applied
|
||||
SELECT @rbo_rules LIKE '%parallel_ces%' AS rule_parallel_ces_applied;
|
||||
|
||||
SET @opt_plan := mcs_get_plan('optimized');
|
||||
set @rewritten_derived_name = 'derived table - $added_sub_rbo_parallel_ces_using_pk_lineitem_0';
|
||||
set @original_table_name = '.lineitem(lineitem/) engineType=ForeignEngine';
|
||||
SELECT (CHAR_LENGTH(@opt_plan) - CHAR_LENGTH(REPLACE(@opt_plan, @rewritten_derived_name, ''))) / CHAR_LENGTH(@rewritten_derived_name) AS rewritten_derived_table_count;
|
||||
SELECT (CHAR_LENGTH(@opt_plan) - CHAR_LENGTH(REPLACE(@opt_plan, @original_table_name, ''))) / CHAR_LENGTH(@original_table_name) AS original_table_count;
|
||||
|
||||
# Cleanup
|
||||
SELECT calsettrace(0);
|
||||
DROP DATABASE rbo_parallel_ces_using_pk;
|
||||
|
||||
--source ../include/disable_rbo_parallel_ces.inc
|
||||
--source ../include/drop_functions.inc
|
||||
--source ../include/drop_cross_engine.inc
|
||||
Reference in New Issue
Block a user