Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -177,8 +177,9 @@ private static boolean collectStructInfoFromGraph(HyperGraph hyperGraph,
nodePlan.accept(RELATION_COLLECTOR, nodeRelations);
relationBuilder.addAll(nodeRelations);
// every node should only have one relation, this is for LogicalCompatibilityContext
relationIdStructInfoNodeMap.put(nodeRelations.get(0).getRelationId(), (StructInfoNode) node);

if (!nodeRelations.isEmpty()) {
relationIdStructInfoNodeMap.put(nodeRelations.get(0).getRelationId(), (StructInfoNode) node);
}
// record expressions in node
if (structInfoNode.getExpressions() != null) {
structInfoNode.getExpressions().forEach(expression -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1011,4 +1011,42 @@ class Suite implements GroovyInterceptable {

return result.values().toList()
}

def check_mv_rewrite_success = { db, mv_sql, query_sql, mv_name ->

sql """DROP MATERIALIZED VIEW IF EXISTS ${mv_name}"""
sql"""
CREATE MATERIALIZED VIEW ${mv_name}
BUILD IMMEDIATE REFRESH COMPLETE ON MANUAL
DISTRIBUTED BY RANDOM BUCKETS 2
PROPERTIES ('replication_num' = '1')
AS ${mv_sql}
"""

def job_name = getJobName(db, mv_name);
waitingMTMVTaskFinished(job_name)
explain {
sql("${query_sql}")
contains("${mv_name}(${mv_name})")
}
}

def check_mv_rewrite_fail = { db, mv_sql, query_sql, mv_name ->

sql """DROP MATERIALIZED VIEW IF EXISTS ${mv_name}"""
sql"""
CREATE MATERIALIZED VIEW ${mv_name}
BUILD IMMEDIATE REFRESH COMPLETE ON MANUAL
DISTRIBUTED BY RANDOM BUCKETS 2
PROPERTIES ('replication_num' = '1')
AS ${mv_sql}
"""

def job_name = getJobName(db, mv_name);
waitingMTMVTaskFinished(job_name)
explain {
sql("${query_sql}")
notContains("${mv_name}(${mv_name})")
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -132,25 +132,6 @@ suite("aggregate_with_roll_up") {
(2, 3, 10, 11.01, 'supply2');
"""

def check_rewrite = { mv_sql, query_sql, mv_name ->

sql """DROP MATERIALIZED VIEW IF EXISTS ${mv_name}"""
sql"""
CREATE MATERIALIZED VIEW ${mv_name}
BUILD IMMEDIATE REFRESH COMPLETE ON MANUAL
DISTRIBUTED BY RANDOM BUCKETS 2
PROPERTIES ('replication_num' = '1')
AS ${mv_sql}
"""

def job_name = getJobName(db, mv_name);
waitingMTMVTaskFinished(job_name)
explain {
sql("${query_sql}")
contains("${mv_name}(${mv_name})")
}
}

def check_rewrite_with_mv_partition = { mv_sql, query_sql, mv_name, partition_column ->

sql """DROP MATERIALIZED VIEW IF EXISTS ${mv_name}"""
Expand Down Expand Up @@ -193,25 +174,6 @@ suite("aggregate_with_roll_up") {
}
}

def check_not_match = { mv_sql, query_sql, mv_name ->

sql """DROP MATERIALIZED VIEW IF EXISTS ${mv_name}"""
sql"""
CREATE MATERIALIZED VIEW ${mv_name}
BUILD IMMEDIATE REFRESH COMPLETE ON MANUAL
DISTRIBUTED BY RANDOM BUCKETS 2
PROPERTIES ('replication_num' = '1')
AS ${mv_sql}
"""

def job_name = getJobName(db, mv_name);
waitingMTMVTaskFinished(job_name)
explain {
sql("${query_sql}")
notContains("${mv_name}(${mv_name})")
}
}

// multi table
// filter inside + left + use roll up dimension
def mv13_0 = "select l_shipdate, o_orderdate, l_partkey, l_suppkey, " +
Expand Down Expand Up @@ -240,7 +202,7 @@ suite("aggregate_with_roll_up") {
"l_partkey, " +
"l_suppkey"
order_qt_query13_0_before "${query13_0}"
check_rewrite(mv13_0, query13_0, "mv13_0")
check_mv_rewrite_success(db, mv13_0, query13_0, "mv13_0")
order_qt_query13_0_after "${query13_0}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv13_0"""

Expand Down Expand Up @@ -275,7 +237,7 @@ suite("aggregate_with_roll_up") {
l_suppkey;
"""
order_qt_query13_1_before "${query13_1}"
check_not_match(mv13_1, query13_1, "mv13_1")
check_mv_rewrite_fail(db, mv13_1, query13_1, "mv13_1")
order_qt_query13_1_after "${query13_1}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv13_1"""

Expand Down Expand Up @@ -309,7 +271,7 @@ suite("aggregate_with_roll_up") {
"l_partkey, " +
"l_suppkey"
order_qt_query14_0_before "${query14_0}"
check_rewrite(mv14_0, query14_0, "mv14_0")
check_mv_rewrite_success(db, mv14_0, query14_0, "mv14_0")
order_qt_query14_0_after "${query14_0}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv14_0"""

Expand Down Expand Up @@ -415,7 +377,7 @@ suite("aggregate_with_roll_up") {
"l_partkey, " +
"l_suppkey"
order_qt_query16_0_before "${query16_0}"
check_rewrite(mv16_0, query16_0, "mv16_0")
check_mv_rewrite_success(db, mv16_0, query16_0, "mv16_0")
order_qt_query16_0_after "${query16_0}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv16_0"""

Expand Down Expand Up @@ -450,7 +412,7 @@ suite("aggregate_with_roll_up") {
l_suppkey;
"""
order_qt_query17_0_before "${query17_0}"
check_rewrite(mv17_0, query17_0, "mv17_0")
check_mv_rewrite_success(db, mv17_0, query17_0, "mv17_0")
order_qt_query17_0_after "${query17_0}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv17_0"""

Expand Down Expand Up @@ -481,7 +443,7 @@ suite("aggregate_with_roll_up") {
"l_shipdate, " +
"l_suppkey"
order_qt_query18_0_before "${query18_0}"
check_rewrite(mv18_0, query18_0, "mv18_0")
check_mv_rewrite_success(db, mv18_0, query18_0, "mv18_0")
order_qt_query18_0_after "${query18_0}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv18_0"""

Expand All @@ -503,7 +465,7 @@ suite("aggregate_with_roll_up") {
"l_partkey, " +
"l_suppkey"
order_qt_query19_0_before "${query19_0}"
check_rewrite(mv19_0, query19_0, "mv19_0")
check_mv_rewrite_success(db, mv19_0, query19_0, "mv19_0")
order_qt_query19_0_after "${query19_0}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv19_0"""

Expand Down Expand Up @@ -534,7 +496,7 @@ suite("aggregate_with_roll_up") {
"l_partkey, " +
"l_suppkey"
order_qt_query19_1_before "${query19_1}"
check_rewrite(mv19_1, query19_1, "mv19_1")
check_mv_rewrite_success(db, mv19_1, query19_1, "mv19_1")
order_qt_query19_1_after "${query19_1}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv19_1"""

Expand Down Expand Up @@ -568,7 +530,7 @@ suite("aggregate_with_roll_up") {
"o_orderdate, " +
"l_suppkey"
order_qt_query20_0_before "${query20_0}"
check_rewrite(mv20_0, query20_0, "mv20_0")
check_mv_rewrite_success(db, mv20_0, query20_0, "mv20_0")
order_qt_query20_0_after "${query20_0}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv20_0"""

Expand Down Expand Up @@ -608,7 +570,7 @@ suite("aggregate_with_roll_up") {
l_suppkey;
"""
order_qt_query20_1_before "${query20_1}"
check_rewrite(mv20_1, query20_1, "mv20_1")
check_mv_rewrite_success(db, mv20_1, query20_1, "mv20_1")
order_qt_query20_1_after "${query20_1}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv20_1"""

Expand Down Expand Up @@ -642,7 +604,7 @@ suite("aggregate_with_roll_up") {
"l_partkey, " +
"l_suppkey"
order_qt_query21_0_before "${query21_0}"
check_rewrite(mv21_0, query21_0, "mv21_0")
check_mv_rewrite_success(db, mv21_0, query21_0, "mv21_0")
order_qt_query21_0_after "${query21_0}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv21_0"""

Expand Down Expand Up @@ -675,7 +637,7 @@ suite("aggregate_with_roll_up") {
"l_partkey, " +
"l_suppkey"
order_qt_query22_0_before "${query22_0}"
check_rewrite(mv22_0, query22_0, "mv22_0")
check_mv_rewrite_success(db, mv22_0, query22_0, "mv22_0")
order_qt_query22_0_after "${query22_0}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv22_0"""

Expand Down Expand Up @@ -708,7 +670,7 @@ suite("aggregate_with_roll_up") {
"l_partkey, " +
"l_suppkey"
order_qt_query22_1_before "${query22_1}"
check_rewrite(mv22_1, query22_1, "mv22_1")
check_mv_rewrite_success(db, mv22_1, query22_1, "mv22_1")
order_qt_query22_1_after "${query22_1}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv22_1"""

Expand Down Expand Up @@ -742,7 +704,7 @@ suite("aggregate_with_roll_up") {
"l_partkey, " +
"l_suppkey"
order_qt_query23_0_before "${query23_0}"
check_rewrite(mv23_0, query23_0, "mv23_0")
check_mv_rewrite_success(db, mv23_0, query23_0, "mv23_0")
order_qt_query23_0_after "${query23_0}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv23_0"""

Expand Down Expand Up @@ -774,7 +736,7 @@ suite("aggregate_with_roll_up") {
"l_shipdate, " +
"l_suppkey"
order_qt_query24_0_before "${query24_0}"
check_rewrite(mv24_0, query24_0, "mv24_0")
check_mv_rewrite_success(db, mv24_0, query24_0, "mv24_0")
order_qt_query24_0_after "${query24_0}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv24_0"""

Expand Down Expand Up @@ -805,7 +767,7 @@ suite("aggregate_with_roll_up") {
"l_partkey, " +
"l_suppkey"
order_qt_query25_0_before "${query25_0}"
check_rewrite(mv25_0, query25_0, "mv25_0")
check_mv_rewrite_success(db, mv25_0, query25_0, "mv25_0")
order_qt_query25_0_after "${query25_0}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv25_0"""

Expand Down Expand Up @@ -842,7 +804,7 @@ suite("aggregate_with_roll_up") {
l_suppkey;
"""
order_qt_query25_1_before "${query25_1}"
check_rewrite(mv25_1, query25_1, "mv25_1")
check_mv_rewrite_success(db, mv25_1, query25_1, "mv25_1")
order_qt_query25_1_after "${query25_1}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv25_1"""

Expand Down Expand Up @@ -881,7 +843,7 @@ suite("aggregate_with_roll_up") {
l_suppkey;
"""
order_qt_query25_2_before "${query25_2}"
check_rewrite(mv25_2, query25_2, "mv25_2")
check_mv_rewrite_success(db, mv25_2, query25_2, "mv25_2")
order_qt_query25_2_after "${query25_2}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv25_2"""

Expand Down Expand Up @@ -922,7 +884,7 @@ suite("aggregate_with_roll_up") {
l_suppkey + l_partkey;
"""
order_qt_query25_3_before "${query25_3}"
check_rewrite(mv25_3, query25_3, "mv25_3")
check_mv_rewrite_success(db, mv25_3, query25_3, "mv25_3")
order_qt_query25_3_after "${query25_3}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv25_3"""

Expand Down Expand Up @@ -950,7 +912,7 @@ suite("aggregate_with_roll_up") {
"""

order_qt_query25_4_before "${query25_4}"
check_rewrite(mv25_4, query25_4, "mv25_4")
check_mv_rewrite_success(db, mv25_4, query25_4, "mv25_4")
order_qt_query25_4_after "${query25_4}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv25_4"""

Expand Down Expand Up @@ -1056,7 +1018,7 @@ suite("aggregate_with_roll_up") {
o_shippriority;
"""
order_qt_query26_0_before "${query26_0}"
check_not_match(mv26_0, query26_0, "mv26_0")
check_mv_rewrite_fail(db, mv26_0, query26_0, "mv26_0")
order_qt_query26_0_after "${query26_0}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv26_0"""

Expand Down Expand Up @@ -1090,7 +1052,7 @@ suite("aggregate_with_roll_up") {
o_shippriority;
"""
order_qt_query27_0_before "${query27_0}"
check_not_match(mv27_0, query27_0, "mv27_0")
check_mv_rewrite_fail(db, mv27_0, query27_0, "mv27_0")
order_qt_query27_0_after "${query27_0}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv27_0"""

Expand Down Expand Up @@ -1131,7 +1093,7 @@ suite("aggregate_with_roll_up") {
limit 10;
"""
order_qt_query28_0_before "${query28_0}"
check_rewrite(mv28_0, query28_0, "mv28_0")
check_mv_rewrite_success(db, mv28_0, query28_0, "mv28_0")
order_qt_query28_0_after "${query28_0}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv28_0"""

Expand Down Expand Up @@ -1160,7 +1122,7 @@ suite("aggregate_with_roll_up") {
) as t;
"""
order_qt_query29_0_before "${query29_0}"
check_rewrite(mv29_0, query29_0, "mv29_0")
check_mv_rewrite_success(db, mv29_0, query29_0, "mv29_0")
order_qt_query29_0_after "${query29_0}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv29_0"""

Expand All @@ -1187,7 +1149,7 @@ suite("aggregate_with_roll_up") {
"""

order_qt_query29_1_before "${query29_1}"
check_rewrite(mv29_1, query29_1, "mv29_1")
check_mv_rewrite_success(db, mv29_1, query29_1, "mv29_1")
order_qt_query29_1_after "${query29_1}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv29_1"""

Expand All @@ -1213,7 +1175,7 @@ suite("aggregate_with_roll_up") {
left join orders on l_orderkey = o_orderkey and l_shipdate = o_orderdate;
"""
order_qt_query29_2_before "${query29_2}"
check_rewrite(mv29_2, query29_2, "mv29_2")
check_mv_rewrite_success(db, mv29_2, query29_2, "mv29_2")
order_qt_query29_2_after "${query29_2}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv29_2"""

Expand Down Expand Up @@ -1260,7 +1222,7 @@ suite("aggregate_with_roll_up") {
group by l_linenumber;
"""
order_qt_query30_0_before "${query30_0}"
check_not_match(mv30_0, query30_0, "mv30_0")
check_mv_rewrite_fail(db, mv30_0, query30_0, "mv30_0")
order_qt_query30_0_after "${query30_0}"
sql """ DROP MATERIALIZED VIEW IF EXISTS mv30_0"""
}
Loading