From 464ce59843c21b0197b49563a0d857a17e1c3933 Mon Sep 17 00:00:00 2001 From: seawinde Date: Thu, 10 Apr 2025 20:23:44 +0800 Subject: [PATCH 1/3] [fix](mv) Add sync mv test that had been commented --- .../test_dup_mv_div/test_dup_mv_div.groovy | 14 +++++------ .../test_dup_mv_json/test_dup_mv_json.groovy | 24 +++++++++---------- .../suites/mv_p0/test_tcu/test_tcu.groovy | 22 +++++++++++------ 3 files changed, 34 insertions(+), 26 deletions(-) diff --git a/regression-test/suites/mv_p0/test_dup_mv_div/test_dup_mv_div.groovy b/regression-test/suites/mv_p0/test_dup_mv_div/test_dup_mv_div.groovy index 605973f5128a63..eb2b28b9d5ce93 100644 --- a/regression-test/suites/mv_p0/test_dup_mv_div/test_dup_mv_div.groovy +++ b/regression-test/suites/mv_p0/test_dup_mv_div/test_dup_mv_div.groovy @@ -18,6 +18,10 @@ import org.codehaus.groovy.runtime.IOGroovyMethods suite ("test_dup_mv_div") { + + String db = context.config.getDbNameByFile(context.file) + sql "use ${db}" + sql """set enable_nereids_planner=true""" sql """SET enable_fallback_to_original_planner=false""" sql """ DROP TABLE IF EXISTS d_table; """ @@ -38,16 +42,12 @@ suite ("test_dup_mv_div") { sql "insert into d_table select 2,2,2,'b';" sql "insert into d_table select 3,-3,null,'c';" - createMV ("create materialized view kdiv as select k1,k2/1 from d_table;") + create_sync_mv (db, "d_table", "kdiv", "select k1,k2/1 from d_table;") sql "insert into d_table select -4,-4,-4,'4';" qt_select_star "select * from d_table order by k1;" - // TODO reopen it when we could fix it in right way - // explain { - // sql("select k1,k2/1 from d_table order by k1;") - // contains "(kdiv)" - // } + mv_rewrite_success("select k1,k2/1 from d_table order by k1;", "kdiv") qt_select_mv "select k1,k2/1 from d_table order by k1;" -} +} \ No newline at end of file diff --git a/regression-test/suites/mv_p0/test_dup_mv_json/test_dup_mv_json.groovy b/regression-test/suites/mv_p0/test_dup_mv_json/test_dup_mv_json.groovy index da269e56f12088..5cba3c67522fba 100644 --- a/regression-test/suites/mv_p0/test_dup_mv_json/test_dup_mv_json.groovy +++ b/regression-test/suites/mv_p0/test_dup_mv_json/test_dup_mv_json.groovy @@ -18,6 +18,10 @@ import org.codehaus.groovy.runtime.IOGroovyMethods suite ("test_dup_mv_json") { + + String db = context.config.getDbNameByFile(context.file) + sql "use ${db}" + sql """set enable_nereids_planner=true""" sql """SET enable_fallback_to_original_planner=false""" sql """ DROP TABLE IF EXISTS tcu_test; """ @@ -43,27 +47,23 @@ suite ("test_dup_mv_json") { sql """insert into tcu_test values('vin78215KHVB','2023-08-23 06:47:14','2023-08-23 06:47:15','2023-08-23 06:47:15','2023-08-23 00:00:00','MessageName','MessageType','referenceId','activityID','ProtofileVersion','{"k22":{"k221":{"k2211":2023,"k2212":8,"k2213":23,"k2214":6,"k2215":47,"k2216":14},"k222":{"k2221":84,"k2222":43,"k2223":3,"k2224":{"xxxx01_u_actl":4.164,"xxxx02_u_actl":4.163,"xxxx03_u_actl":4.155,"xxxx04_u_actl":4.164,"xxxx05_u_actl":4.162,"xxxx06_u_actl":4.159,"xxxx07_u_actl":4.16,"xxxx08_u_actl":4.162,"xxxx09_u_actl":4.162,"xxxx10_u_actl":4.164,"xxxx11_u_actl":4.161,"xxxx12_u_actl":4.162,"xxxx13_u_actl":4.159,"xxxx14_u_actl":4.159,"xxxx15_u_actl":4.162,"xxxx16_u_actl":4.163,"xxxx17_u_actl":4.163,"xxxx18_u_actl":4.159,"xxxx19_u_actl":4.161,"xxxx20_u_actl":4.159,"xxxx21_u_actl":4.163,"xxxx22_u_actl":4.161,"xxxx23_u_actl":4.164,"xxxx24_u_actl":4.161,"xxxx25_u_actl":4.16,"xxxx26_u_actl":4.161,"xxxx27_u_actl":4.161,"xxxx28_u_actl":4.164,"xxxx29_u_actl":4.162,"xxxx30_u_actl":4.161,"xxxx31_u_actl":4.16,"xxxx32_u_actl":4.162,"xxxx33_u_actl":4.162,"xxxx34_u_actl":4.165,"xxxx35_u_actl":4.16,"xxxx36_u_actl":4.163,"xxxx37_u_actl":4.161,"xxxx38_u_actl":4.165,"xxxx39_u_actl":4.161,"xxxx40_u_actl":4.162,"xxxx41_u_actl":4.162,"xxxx42_u_actl":4.164,"xxxx43_u_actl":4.169,"xxxx44_u_actl":4.167,"xxxx45_u_actl":4.164,"xxxx46_u_actl":4.161,"xxxx47_u_actl":4.164,"xxxx48_u_actl":4.161,"xxxx49_u_actl":4.161,"xxxx50_u_actl":4.164,"xxxx51_u_actl":4.163,"xxxx52_u_actl":4.164,"xxxx53_u_actl":4.167,"xxxx54_u_actl":4.163,"xxxx55_u_actl":4.163,"xxxx56_u_actl":4.165,"xxxx57_u_actl":4.165,"xxxx58_u_actl":4.164,"xxxx59_u_actl":4.163,"xxxx60_u_actl":4.163,"xxxx61_u_actl":4.163,"xxxx62_u_actl":4.163,"xxxx63_u_actl":4.163,"xxxx64_u_actl":4.164,"xxxx65_u_actl":4.163,"xxxx66_u_actl":4.164,"xxxx67_u_actl":4.16,"xxxx68_u_actl":4.163,"xxxx69_u_actl":4.163,"xxxx70_u_actl":4.163,"xxxx71_u_actl":4.162,"xxxx72_u_actl":4.162,"xxxx73_u_actl":4.163,"xxxx74_u_actl":4.162,"xxxx75_u_actl":4.162,"xxxx76_u_actl":4.163,"xxxx77_u_actl":4.163,"xxxx78_u_actl":4.163,"xxxx79_u_actl":4.166,"xxxx80_u_actl":4.164,"xxxx81_u_actl":4.164,"xxxx82_u_actl":4.164,"xxxx83_u_actl":4.167,"xxxx84_u_actl":4.169},"k2225":12,"k2226":7,"k2227":2,"k2228":{"k22281":33,"k22282":32,"k22283":32,"k22284":32,"k22285":34,"k22286":33,"k22287":35,"k22288":34,"k22289":33}},"k223":{"k2231":"Run"}}}');""" - - createMV ("""create materialized view tcu_test_index as - select + create_sync_mv(db, "tcu_test", "tcu_test_index", + """select a ,(json_extract(k, '\$.k22.k222.k2224.xxxx01_u_actl')+json_extract(k, '\$.k22.k222.k2224.xxxx02_u_actl')+json_extract(k, '\$.k22.k222.k2224.xxxx03_u_actl')-greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_u_actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_u_actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_u_actl'))-least(json_extract(k, '\$.k22.k222.k2224.xxxx01_u_actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_u_actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_u_actl')))/1.0 FROM tcu_test; """ - ) + ); sql """insert into tcu_test values('vin78215KHVB','2023-08-23 06:47:14','2023-08-23 06:47:15','2023-08-23 06:47:15','2023-08-23 00:00:00','MessageName','MessageType','referenceId','activityID','ProtofileVersion','{"k22":{"k221":{"k2211":2023,"k2212":8,"k2213":23,"k2214":6,"k2215":47,"k2216":14},"k222":{"k2221":84,"k2222":43,"k2223":3,"k2224":{"xxxx01_u_actl":4.164,"xxxx02_u_actl":4.163,"xxxx03_u_actl":4.155,"xxxx04_u_actl":4.164,"xxxx05_u_actl":4.162,"xxxx06_u_actl":4.159,"xxxx07_u_actl":4.16,"xxxx08_u_actl":4.162,"xxxx09_u_actl":4.162,"xxxx10_u_actl":4.164,"xxxx11_u_actl":4.161,"xxxx12_u_actl":4.162,"xxxx13_u_actl":4.159,"xxxx14_u_actl":4.159,"xxxx15_u_actl":4.162,"xxxx16_u_actl":4.163,"xxxx17_u_actl":4.163,"xxxx18_u_actl":4.159,"xxxx19_u_actl":4.161,"xxxx20_u_actl":4.159,"xxxx21_u_actl":4.163,"xxxx22_u_actl":4.161,"xxxx23_u_actl":4.164,"xxxx24_u_actl":4.161,"xxxx25_u_actl":4.16,"xxxx26_u_actl":4.161,"xxxx27_u_actl":4.161,"xxxx28_u_actl":4.164,"xxxx29_u_actl":4.162,"xxxx30_u_actl":4.161,"xxxx31_u_actl":4.16,"xxxx32_u_actl":4.162,"xxxx33_u_actl":4.162,"xxxx34_u_actl":4.165,"xxxx35_u_actl":4.16,"xxxx36_u_actl":4.163,"xxxx37_u_actl":4.161,"xxxx38_u_actl":4.165,"xxxx39_u_actl":4.161,"xxxx40_u_actl":4.162,"xxxx41_u_actl":4.162,"xxxx42_u_actl":4.164,"xxxx43_u_actl":4.169,"xxxx44_u_actl":4.167,"xxxx45_u_actl":4.164,"xxxx46_u_actl":4.161,"xxxx47_u_actl":4.164,"xxxx48_u_actl":4.161,"xxxx49_u_actl":4.161,"xxxx50_u_actl":4.164,"xxxx51_u_actl":4.163,"xxxx52_u_actl":4.164,"xxxx53_u_actl":4.167,"xxxx54_u_actl":4.163,"xxxx55_u_actl":4.163,"xxxx56_u_actl":4.165,"xxxx57_u_actl":4.165,"xxxx58_u_actl":4.164,"xxxx59_u_actl":4.163,"xxxx60_u_actl":4.163,"xxxx61_u_actl":4.163,"xxxx62_u_actl":4.163,"xxxx63_u_actl":4.163,"xxxx64_u_actl":4.164,"xxxx65_u_actl":4.163,"xxxx66_u_actl":4.164,"xxxx67_u_actl":4.16,"xxxx68_u_actl":4.163,"xxxx69_u_actl":4.163,"xxxx70_u_actl":4.163,"xxxx71_u_actl":4.162,"xxxx72_u_actl":4.162,"xxxx73_u_actl":4.163,"xxxx74_u_actl":4.162,"xxxx75_u_actl":4.162,"xxxx76_u_actl":4.163,"xxxx77_u_actl":4.163,"xxxx78_u_actl":4.163,"xxxx79_u_actl":4.166,"xxxx80_u_actl":4.164,"xxxx81_u_actl":4.164,"xxxx82_u_actl":4.164,"xxxx83_u_actl":4.167,"xxxx84_u_actl":4.169},"k2225":12,"k2226":7,"k2227":2,"k2228":{"k22281":33,"k22282":32,"k22283":32,"k22284":32,"k22285":34,"k22286":33,"k22287":35,"k22288":34,"k22289":33}},"k223":{"k2231":"Run"}}}');""" qt_select_star "select * from tcu_test;" - // TODO reopen it when we could fix it in right way - // explain { - // sql("""select a - // ,(json_extract(k, '\$.k22.k222.k2224.xxxx01_u_actl')+json_extract(k, '\$.k22.k222.k2224.xxxx02_u_actl')+json_extract(k, '\$.k22.k222.k2224.xxxx03_u_actl')-greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_u_actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_u_actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_u_actl'))-least(json_extract(k, '\$.k22.k222.k2224.xxxx01_u_actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_u_actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_u_actl')))/1.0 - // FROM tcu_test;""") - // contains "(tcu_test_index)" - // } + mv_rewrite_success("""select a + ,(json_extract(k, '\$.k22.k222.k2224.xxxx01_u_actl')+json_extract(k, '\$.k22.k222.k2224.xxxx02_u_actl')+json_extract(k, '\$.k22.k222.k2224.xxxx03_u_actl')-greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_u_actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_u_actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_u_actl'))-least(json_extract(k, '\$.k22.k222.k2224.xxxx01_u_actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_u_actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_u_actl')))/1.0 + FROM tcu_test;""", "tcu_test_index") + qt_select_mv """select a ,(json_extract(k, '\$.k22.k222.k2224.xxxx01_u_actl')+json_extract(k, '\$.k22.k222.k2224.xxxx02_u_actl')+json_extract(k, '\$.k22.k222.k2224.xxxx03_u_actl')-greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_u_actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_u_actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_u_actl'))-least(json_extract(k, '\$.k22.k222.k2224.xxxx01_u_actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_u_actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_u_actl')))/1.0 FROM tcu_test ;""" -} +} \ No newline at end of file diff --git a/regression-test/suites/mv_p0/test_tcu/test_tcu.groovy b/regression-test/suites/mv_p0/test_tcu/test_tcu.groovy index bd88c3dbd4cd7f..b02175758b258d 100644 --- a/regression-test/suites/mv_p0/test_tcu/test_tcu.groovy +++ b/regression-test/suites/mv_p0/test_tcu/test_tcu.groovy @@ -22,6 +22,9 @@ suite ("test_tcu") { sql """SET enable_fallback_to_original_planner=false""" sql """ DROP TABLE IF EXISTS tcu_test; """ + String db = context.config.getDbNameByFile(context.file) + sql "use ${db}" + sql """ CREATE TABLE `tcu_test` ( `a` varchar(50) NULL, @@ -52,6 +55,14 @@ suite ("test_tcu") { ,abs((json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')-greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))-least(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')))/1 - least(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))) min_abs ,greatest(abs((json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')-greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))-least(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')))/1 - greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))),abs((json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')-greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))-least(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')))/1 - least(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')))) as rs_abs_max FROM tcu_test ;""") + create_sync_mv(db, "tcu_test", "tcu_test_index", + """select + a as vin + ,(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')-greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))-least(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')))/1 as avg + ,abs((json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')-greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))-least(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')))/1 - greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))) max_abs + ,abs((json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')-greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))-least(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')))/1 - least(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))) min_abs + ,greatest(abs((json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')-greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))-least(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')))/1 - greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))),abs((json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')-greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))-least(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')))/1 - least(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')))) as rs_abs_max FROM tcu_test ;""") + sql """insert into tcu_test values('vin78215KHVB','2023-08-23 06:47:14','2023-08-23 06:47:15','2023-08-23 06:47:15','2023-08-23 00:00:00','MessageName','MessageType','referenceId','ActivityID','ProtofileVersion','{"k22":{"k221":{"k2211":2023,"k2212":8,"k2213":23,"k2214":6,"k2215":47,"k2216":14},"k222":{"k2221":84,"k2222":43,"k2223":3,"k2224":{"xxxx01_U_Actl":4.164,"xxxx02_U_Actl":4.163,"xxxx03_U_Actl":4.155,"xxxx04_U_Actl":4.164,"xxxx05_U_Actl":4.162,"xxxx06_U_Actl":4.159,"xxxx07_U_Actl":4.16,"xxxx08_U_Actl":4.162,"xxxx09_U_Actl":4.162,"xxxx10_U_Actl":4.164,"xxxx11_U_Actl":4.161,"xxxx12_U_Actl":4.162,"xxxx13_U_Actl":4.159,"xxxx14_U_Actl":4.159,"xxxx15_U_Actl":4.162,"xxxx16_U_Actl":4.163,"xxxx17_U_Actl":4.163,"xxxx18_U_Actl":4.159,"xxxx19_U_Actl":4.161,"xxxx20_U_Actl":4.159,"xxxx21_U_Actl":4.163,"xxxx22_U_Actl":4.161,"xxxx23_U_Actl":4.164,"xxxx24_U_Actl":4.161,"xxxx25_U_Actl":4.16,"xxxx26_U_Actl":4.161,"xxxx27_U_Actl":4.161,"xxxx28_U_Actl":4.164,"xxxx29_U_Actl":4.162,"xxxx30_U_Actl":4.161,"xxxx31_U_Actl":4.16,"xxxx32_U_Actl":4.162,"xxxx33_U_Actl":4.162,"xxxx34_U_Actl":4.165,"xxxx35_U_Actl":4.16,"xxxx36_U_Actl":4.163,"xxxx37_U_Actl":4.161,"xxxx38_U_Actl":4.165,"xxxx39_U_Actl":4.161,"xxxx40_U_Actl":4.162,"xxxx41_U_Actl":4.162,"xxxx42_U_Actl":4.164,"xxxx43_U_Actl":4.169,"xxxx44_U_Actl":4.167,"xxxx45_U_Actl":4.164,"xxxx46_U_Actl":4.161,"xxxx47_U_Actl":4.164,"xxxx48_U_Actl":4.161,"xxxx49_U_Actl":4.161,"xxxx50_U_Actl":4.164,"xxxx51_U_Actl":4.163,"xxxx52_U_Actl":4.164,"xxxx53_U_Actl":4.167,"xxxx54_U_Actl":4.163,"xxxx55_U_Actl":4.163,"xxxx56_U_Actl":4.165,"xxxx57_U_Actl":4.165,"xxxx58_U_Actl":4.164,"xxxx59_U_Actl":4.163,"xxxx60_U_Actl":4.163,"xxxx61_U_Actl":4.163,"xxxx62_U_Actl":4.163,"xxxx63_U_Actl":4.163,"xxxx64_U_Actl":4.164,"xxxx65_U_Actl":4.163,"xxxx66_U_Actl":4.164,"xxxx67_U_Actl":4.16,"xxxx68_U_Actl":4.163,"xxxx69_U_Actl":4.163,"xxxx70_U_Actl":4.163,"xxxx71_U_Actl":4.162,"xxxx72_U_Actl":4.162,"xxxx73_U_Actl":4.163,"xxxx74_U_Actl":4.162,"xxxx75_U_Actl":4.162,"xxxx76_U_Actl":4.163,"xxxx77_U_Actl":4.163,"xxxx78_U_Actl":4.163,"xxxx79_U_Actl":4.166,"xxxx80_U_Actl":4.164,"xxxx81_U_Actl":4.164,"xxxx82_U_Actl":4.164,"xxxx83_U_Actl":4.167,"xxxx84_U_Actl":4.169},"k2225":12,"k2226":7,"k2227":2,"k2228":{"k22281":33,"k22282":32,"k22283":32,"k22284":32,"k22285":34,"k22286":33,"k22287":35,"k22288":34,"k22289":33}},"k223":{"k2231":"Run"}}}')""" sql """ drop view IF EXISTS tcu_test_view ; """ @@ -63,12 +74,9 @@ suite ("test_tcu") { ,abs((json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')-greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))-least(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')))/1 - greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))) max_abs ,abs((json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')-greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))-least(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')))/1 - least(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))) min_abs ,greatest(abs((json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')-greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))-least(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')))/1 - greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))),abs((json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')-greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))-least(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')))/1 - least(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')))) as rs_abs_max FROM tcu_test ; - """ + """ + + mv_rewrite_success("select * from tcu_test_view;", "tcu_test_index") - // TODO reopen it when we could fix it in right way - // explain { - // sql("select * from tcu_test_view;") - // contains "(tcu_test_index)" - // } qt_select_mv "select * from tcu_test_view;" -} +} \ No newline at end of file From 06f6357b73acf6f7dbc4c230ee4a9ea57163c46f Mon Sep 17 00:00:00 2001 From: seawinde Date: Fri, 11 Apr 2025 09:25:59 +0800 Subject: [PATCH 2/3] fix test --- regression-test/suites/mv_p0/test_tcu/test_tcu.groovy | 9 --------- 1 file changed, 9 deletions(-) diff --git a/regression-test/suites/mv_p0/test_tcu/test_tcu.groovy b/regression-test/suites/mv_p0/test_tcu/test_tcu.groovy index b02175758b258d..a1f6b395a9176a 100644 --- a/regression-test/suites/mv_p0/test_tcu/test_tcu.groovy +++ b/regression-test/suites/mv_p0/test_tcu/test_tcu.groovy @@ -46,15 +46,6 @@ suite ("test_tcu") { sql """insert into tcu_test values('vin78215KHVB','2023-08-23 06:47:14','2023-08-23 06:47:15','2023-08-23 06:47:15','2023-08-23 00:00:00','MessageName','MessageType','referenceId','ActivityID','ProtofileVersion','{"k22":{"k221":{"k2211":2023,"k2212":8,"k2213":23,"k2214":6,"k2215":47,"k2216":14},"k222":{"k2221":84,"k2222":43,"k2223":3,"k2224":{"xxxx01_U_Actl":4.164,"xxxx02_U_Actl":4.163,"xxxx03_U_Actl":4.155,"xxxx04_U_Actl":4.164,"xxxx05_U_Actl":4.162,"xxxx06_U_Actl":4.159,"xxxx07_U_Actl":4.16,"xxxx08_U_Actl":4.162,"xxxx09_U_Actl":4.162,"xxxx10_U_Actl":4.164,"xxxx11_U_Actl":4.161,"xxxx12_U_Actl":4.162,"xxxx13_U_Actl":4.159,"xxxx14_U_Actl":4.159,"xxxx15_U_Actl":4.162,"xxxx16_U_Actl":4.163,"xxxx17_U_Actl":4.163,"xxxx18_U_Actl":4.159,"xxxx19_U_Actl":4.161,"xxxx20_U_Actl":4.159,"xxxx21_U_Actl":4.163,"xxxx22_U_Actl":4.161,"xxxx23_U_Actl":4.164,"xxxx24_U_Actl":4.161,"xxxx25_U_Actl":4.16,"xxxx26_U_Actl":4.161,"xxxx27_U_Actl":4.161,"xxxx28_U_Actl":4.164,"xxxx29_U_Actl":4.162,"xxxx30_U_Actl":4.161,"xxxx31_U_Actl":4.16,"xxxx32_U_Actl":4.162,"xxxx33_U_Actl":4.162,"xxxx34_U_Actl":4.165,"xxxx35_U_Actl":4.16,"xxxx36_U_Actl":4.163,"xxxx37_U_Actl":4.161,"xxxx38_U_Actl":4.165,"xxxx39_U_Actl":4.161,"xxxx40_U_Actl":4.162,"xxxx41_U_Actl":4.162,"xxxx42_U_Actl":4.164,"xxxx43_U_Actl":4.169,"xxxx44_U_Actl":4.167,"xxxx45_U_Actl":4.164,"xxxx46_U_Actl":4.161,"xxxx47_U_Actl":4.164,"xxxx48_U_Actl":4.161,"xxxx49_U_Actl":4.161,"xxxx50_U_Actl":4.164,"xxxx51_U_Actl":4.163,"xxxx52_U_Actl":4.164,"xxxx53_U_Actl":4.167,"xxxx54_U_Actl":4.163,"xxxx55_U_Actl":4.163,"xxxx56_U_Actl":4.165,"xxxx57_U_Actl":4.165,"xxxx58_U_Actl":4.164,"xxxx59_U_Actl":4.163,"xxxx60_U_Actl":4.163,"xxxx61_U_Actl":4.163,"xxxx62_U_Actl":4.163,"xxxx63_U_Actl":4.163,"xxxx64_U_Actl":4.164,"xxxx65_U_Actl":4.163,"xxxx66_U_Actl":4.164,"xxxx67_U_Actl":4.16,"xxxx68_U_Actl":4.163,"xxxx69_U_Actl":4.163,"xxxx70_U_Actl":4.163,"xxxx71_U_Actl":4.162,"xxxx72_U_Actl":4.162,"xxxx73_U_Actl":4.163,"xxxx74_U_Actl":4.162,"xxxx75_U_Actl":4.162,"xxxx76_U_Actl":4.163,"xxxx77_U_Actl":4.163,"xxxx78_U_Actl":4.163,"xxxx79_U_Actl":4.166,"xxxx80_U_Actl":4.164,"xxxx81_U_Actl":4.164,"xxxx82_U_Actl":4.164,"xxxx83_U_Actl":4.167,"xxxx84_U_Actl":4.169},"k2225":12,"k2226":7,"k2227":2,"k2228":{"k22281":33,"k22282":32,"k22283":32,"k22284":32,"k22285":34,"k22286":33,"k22287":35,"k22288":34,"k22289":33}},"k223":{"k2231":"Run"}}}')""" - createMV (""" - create materialized view tcu_test_index as - select - a as vin - ,(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')-greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))-least(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')))/1 as avg - ,abs((json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')-greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))-least(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')))/1 - greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))) max_abs - ,abs((json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')-greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))-least(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')))/1 - least(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))) min_abs - ,greatest(abs((json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')-greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))-least(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')))/1 - greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))),abs((json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl')+json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')-greatest(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl'))-least(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')))/1 - least(json_extract(k, '\$.k22.k222.k2224.xxxx01_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx02_U_Actl'),json_extract(k, '\$.k22.k222.k2224.xxxx03_U_Actl')))) as rs_abs_max FROM tcu_test ;""") - create_sync_mv(db, "tcu_test", "tcu_test_index", """select a as vin From 90cfd008591f31c83f441c09c9bfd8511866c663 Mon Sep 17 00:00:00 2001 From: seawinde Date: Fri, 11 Apr 2025 16:27:10 +0800 Subject: [PATCH 3/3] opt test case --- .../testAggQuqeryOnAggMV6.out | 14 ++++++++++++++ .../testAggQuqeryOnAggMV6.groovy | 16 +++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/regression-test/data/mv_p0/ut/testAggQuqeryOnAggMV6/testAggQuqeryOnAggMV6.out b/regression-test/data/mv_p0/ut/testAggQuqeryOnAggMV6/testAggQuqeryOnAggMV6.out index b10e432dadb571..b00f8fa104bddc 100644 --- a/regression-test/data/mv_p0/ut/testAggQuqeryOnAggMV6/testAggQuqeryOnAggMV6.out +++ b/regression-test/data/mv_p0/ut/testAggQuqeryOnAggMV6/testAggQuqeryOnAggMV6.out @@ -2,7 +2,21 @@ -- !select_star -- 2020-01-01 1 a 1 1 1 2020-01-01 1 a 1 1 1 +2020-01-01 1 a 1 1 1 +2020-01-01 1 a 1 1 1 +2020-01-01 1 a 1 1 1 +2020-01-01 1 a 1 1 1 +2020-01-01 1 a 1 1 1 +2020-01-01 1 a 1 1 1 +2020-01-02 2 b 2 2 2 2020-01-02 2 b 2 2 2 +2020-01-02 2 b 2 2 2 +2020-01-02 2 b 2 2 2 +2020-01-02 2 b 2 2 2 +2020-01-03 3 c 3 3 3 +2020-01-03 3 c 3 3 3 +2020-01-03 3 c 3 3 3 +2020-01-03 3 c 3 3 3 2020-01-03 3 c 3 3 3 -- !select_mv -- diff --git a/regression-test/suites/mv_p0/ut/testAggQuqeryOnAggMV6/testAggQuqeryOnAggMV6.groovy b/regression-test/suites/mv_p0/ut/testAggQuqeryOnAggMV6/testAggQuqeryOnAggMV6.groovy index cdc3178b63ad2a..710174017f8591 100644 --- a/regression-test/suites/mv_p0/ut/testAggQuqeryOnAggMV6/testAggQuqeryOnAggMV6.groovy +++ b/regression-test/suites/mv_p0/ut/testAggQuqeryOnAggMV6/testAggQuqeryOnAggMV6.groovy @@ -33,15 +33,29 @@ suite ("testAggQuqeryOnAggMV6") { """ sql """insert into emps values("2020-01-01",1,"a",1,1,1);""" + sql """insert into emps values("2020-01-01",1,"a",1,1,1);""" + sql """insert into emps values("2020-01-01",1,"a",1,1,1);""" + sql """insert into emps values("2020-01-01",1,"a",1,1,1);""" + sql """insert into emps values("2020-01-01",1,"a",1,1,1);""" + sql """insert into emps values("2020-01-02",2,"b",2,2,2);""" + sql """insert into emps values("2020-01-02",2,"b",2,2,2);""" + sql """insert into emps values("2020-01-02",2,"b",2,2,2);""" sql """insert into emps values("2020-01-02",2,"b",2,2,2);""" + sql """insert into emps values("2020-01-02",2,"b",2,2,2);""" + sql """insert into emps values("2020-01-03",3,"c",3,3,3);""" + sql """insert into emps values("2020-01-03",3,"c",3,3,3);""" + sql """insert into emps values("2020-01-03",3,"c",3,3,3);""" + sql """insert into emps values("2020-01-03",3,"c",3,3,3);""" sql """insert into emps values("2020-01-03",3,"c",3,3,3);""" createMV("create materialized view emps_mv as select deptno, commission, sum(salary) from emps group by deptno, commission;") + sql """insert into emps values("2020-01-01",1,"a",1,1,1);""" + sql """insert into emps values("2020-01-01",1,"a",1,1,1);""" sql """insert into emps values("2020-01-01",1,"a",1,1,1);""" sql """analyze table emps with sync;""" - sql """alter table emps modify column time_col set stats ('row_count'='4');""" + sql """alter table emps modify column time_col set stats ('row_count'='18');""" sql """set enable_stats=false;"""