This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 41672f2b92b [Feature](materialized-view) support some case unmached to
materialized-view (#30036)
41672f2b92b is described below
commit 41672f2b92bf999fbf9e177cee6e979d9af2f102
Author: Pxl <[email protected]>
AuthorDate: Thu Jan 18 10:40:13 2024 +0800
[Feature](materialized-view) support some case unmached to
materialized-view (#30036)
same column appears in key and value like select id,count(id) group by id;
complex expr in sum select sum(if(xxx));
---
fe/fe-core/src/main/cup/sql_parser.cup | 5 ++
.../org/apache/doris/analysis/BinaryPredicate.java | 4 ++
.../mv/SelectMaterializedIndexWithAggregate.java | 9 +--
.../doris/analysis/CancelExportStmtTest.java | 10 +--
.../apache/doris/analysis/CancelLoadStmtTest.java | 10 +--
.../apache/doris/analysis/DataDescriptionTest.java | 16 ++---
.../org/apache/doris/analysis/DeleteStmtTest.java | 4 +-
.../org/apache/doris/analysis/SelectStmtTest.java | 36 +++++------
.../apache/doris/analysis/ShowAlterStmtTest.java | 4 +-
.../apache/doris/analysis/ShowBackupStmtTest.java | 2 +-
.../apache/doris/analysis/ShowExportStmtTest.java | 4 +-
.../apache/doris/analysis/ShowLoadStmtTest.java | 4 +-
.../doris/analysis/ShowPartitionsStmtTest.java | 4 +-
.../doris/analysis/ShowResourcesStmtTest.java | 2 +-
.../org/apache/doris/analysis/SqlModeTest.java | 4 +-
.../org/apache/doris/catalog/CreateViewTest.java | 2 +-
.../java/org/apache/doris/planner/PlannerTest.java | 6 +-
.../org/apache/doris/planner/QueryPlanTest.java | 74 +++++++++++-----------
.../org/apache/doris/planner/RepeatNodeTest.java | 2 +-
.../doris/planner/TableFunctionPlanTest.java | 8 +--
.../java/org/apache/doris/policy/PolicyTest.java | 20 +++---
.../org/apache/doris/qe/OlapQueryCacheTest.java | 46 +++++++-------
.../ExtractCommonFactorsRuleFunctionTest.java | 6 +-
regression-test/data/ddl_p0/test_create_view.out | 2 +-
.../testAggQueryOnAggMV1/testAggQueryOnAggMV1.out | 10 +++
.../data/performance_p0/redundant_conjuncts.out | 4 +-
.../show_p0/test_show_create_table_and_views.out | 2 +-
.../jdbc/test_clickhouse_jdbc_catalog.groovy | 4 +-
.../jdbc/test_mysql_jdbc_catalog.groovy | 6 +-
.../jdbc/test_mysql_jdbc_catalog_nereids.groovy | 2 +-
.../jdbc/test_oracle_jdbc_catalog.groovy | 2 +-
.../testAggQueryOnAggMV1.groovy | 14 ++++
.../infer_predicate/infer_predicate.groovy | 12 ++--
33 files changed, 187 insertions(+), 153 deletions(-)
diff --git a/fe/fe-core/src/main/cup/sql_parser.cup
b/fe/fe-core/src/main/cup/sql_parser.cup
index aaadfb4f563..a782100ef23 100644
--- a/fe/fe-core/src/main/cup/sql_parser.cup
+++ b/fe/fe-core/src/main/cup/sql_parser.cup
@@ -1066,6 +1066,11 @@ import_column_descs ::=
columns.add(column);
RESULT = columns;
:}
+ | import_column_descs:columns COMMA LPAREN import_column_desc:column RPAREN
+ {:
+ columns.add(column);
+ RESULT = columns;
+ :}
;
import_column_desc ::=
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/BinaryPredicate.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/BinaryPredicate.java
index 74f3035285c..bb30a46b3e9 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/BinaryPredicate.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/BinaryPredicate.java
@@ -159,6 +159,7 @@ public class BinaryPredicate extends Predicate implements
Writable {
// for restoring
public BinaryPredicate() {
super();
+ printSqlInParens = true;
}
public BinaryPredicate(Operator op, Expr e1, Expr e2) {
@@ -169,6 +170,7 @@ public class BinaryPredicate extends Predicate implements
Writable {
children.add(e1);
Preconditions.checkNotNull(e2);
children.add(e2);
+ printSqlInParens = true;
}
public BinaryPredicate(Operator op, Expr e1, Expr e2, Type retType,
NullableMode nullableMode) {
@@ -181,6 +183,7 @@ public class BinaryPredicate extends Predicate implements
Writable {
children.add(e2);
fn = new Function(new FunctionName(op.name),
Lists.newArrayList(e1.getType(), e2.getType()), retType,
false, true, nullableMode);
+ printSqlInParens = true;
}
protected BinaryPredicate(BinaryPredicate other) {
@@ -188,6 +191,7 @@ public class BinaryPredicate extends Predicate implements
Writable {
op = other.op;
slotIsleft = other.slotIsleft;
isInferred = other.isInferred;
+ printSqlInParens = true;
}
public boolean isInferred() {
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/mv/SelectMaterializedIndexWithAggregate.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/mv/SelectMaterializedIndexWithAggregate.java
index ae627523e36..c0f70caf851 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/mv/SelectMaterializedIndexWithAggregate.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/mv/SelectMaterializedIndexWithAggregate.java
@@ -1103,7 +1103,7 @@ public class SelectMaterializedIndexWithAggregate extends
AbstractSelectMaterial
}
if (isInputSlotsContainsNone(
predicates.stream().filter(e ->
!indexConjuncts.contains(e.toSql())).collect(Collectors.toList()),
- slotsToReplace) && isInputSlotsContainsNone(groupingExprs,
slotsToReplace)) {
+ slotsToReplace)) {
ImmutableSet<Slot> newRequiredSlots = requiredScanOutput.stream()
.map(slot -> (Slot) ExpressionUtils.replace(slot,
slotMap)).collect(ImmutableSet.toImmutableSet());
return new AggRewriteResult(index, true, newRequiredSlots,
exprRewriteMap);
@@ -1522,8 +1522,7 @@ public class SelectMaterializedIndexWithAggregate extends
AbstractSelectMaterial
if (result != sum) {
return result;
}
- Optional<Slot> slotOpt =
ExpressionUtils.extractSlotOrCastOnSlot(sum.child(0));
- if (!sum.isDistinct() && slotOpt.isPresent()) {
+ if (!sum.isDistinct()) {
Expression expr = castIfNeed(sum.child(), BigIntType.INSTANCE);
String sumColumn =
normalizeName(CreateMaterializedViewStmt.mvColumnBuilder(AggregateType.SUM,
CreateMaterializedViewStmt.mvColumnBuilder(expr.toSql())));
@@ -1532,7 +1531,9 @@ public class SelectMaterializedIndexWithAggregate extends
AbstractSelectMaterial
Slot sumSlot =
context.checkContext.scan.getOutputByIndex(context.checkContext.index).stream()
.filter(s ->
sumColumn.equalsIgnoreCase(normalizeName(s.getName()))).findFirst()
.orElseThrow(() -> new AnalysisException("cannot
find sum slot when select mv"));
- context.exprRewriteMap.slotMap.put(slotOpt.get(), sumSlot);
+ for (Slot slot : sum.child().getInputSlots()) {
+ context.exprRewriteMap.slotMap.put(slot, sumSlot);
+ }
context.exprRewriteMap.projectExprMap.put(sum.child(),
sumSlot);
Sum newSum = new Sum(sumSlot);
context.exprRewriteMap.aggFuncMap.put(sum, newSum);
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/analysis/CancelExportStmtTest.java
b/fe/fe-core/src/test/java/org/apache/doris/analysis/CancelExportStmtTest.java
index c814630d830..f2cf3537600 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/analysis/CancelExportStmtTest.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/analysis/CancelExportStmtTest.java
@@ -63,7 +63,7 @@ public class CancelExportStmtTest extends TestWithFeService {
labelStringLiteral);
CancelExportStmt stmt = new CancelExportStmt(null,
labelBinaryPredicate);
stmt.analyze(analyzer);
- Assertions.assertEquals("CANCEL EXPORT FROM testDb WHERE `label` =
'doris_test_label'",
+ Assertions.assertEquals("CANCEL EXPORT FROM testDb WHERE (`label` =
'doris_test_label')",
stmt.toString());
SlotRef labelSlotRefUpper = new SlotRef(null, "LABEL");
@@ -71,7 +71,7 @@ public class CancelExportStmtTest extends TestWithFeService {
labelStringLiteral);
CancelExportStmt stmtUpper = new CancelExportStmt(null,
labelBinaryPredicateUpper);
stmtUpper.analyze(analyzer);
- Assertions.assertEquals("CANCEL EXPORT FROM testDb WHERE `LABEL` =
'doris_test_label'",
+ Assertions.assertEquals("CANCEL EXPORT FROM testDb WHERE (`LABEL` =
'doris_test_label')",
stmtUpper.toString());
StringLiteral stateStringLiteral = new StringLiteral("PENDING");
@@ -79,7 +79,7 @@ public class CancelExportStmtTest extends TestWithFeService {
stateStringLiteral);
stmt = new CancelExportStmt(null, stateBinaryPredicate);
stmt.analyze(analyzer);
- Assertions.assertEquals("CANCEL EXPORT FROM testDb WHERE `state` =
'PENDING'", stmt.toString());
+ Assertions.assertEquals("CANCEL EXPORT FROM testDb WHERE (`state` =
'PENDING')", stmt.toString());
LikePredicate labelLikePredicate = new
LikePredicate(LikePredicate.Operator.LIKE, labelSlotRef,
labelStringLiteral);
@@ -93,7 +93,7 @@ public class CancelExportStmtTest extends TestWithFeService {
stmt = new CancelExportStmt(null, compoundAndPredicate);
stmt.analyze(analyzer);
Assertions.assertEquals(
- "CANCEL EXPORT FROM testDb WHERE `label` = 'doris_test_label'
AND `state` = 'PENDING'",
+ "CANCEL EXPORT FROM testDb WHERE (`label` =
'doris_test_label') AND (`state` = 'PENDING')",
stmt.toString());
CompoundPredicate compoundOrPredicate = new
CompoundPredicate(Operator.OR, labelBinaryPredicate,
@@ -101,7 +101,7 @@ public class CancelExportStmtTest extends TestWithFeService
{
stmt = new CancelExportStmt(null, compoundOrPredicate);
stmt.analyze(analyzer);
Assertions.assertEquals(
- "CANCEL EXPORT FROM testDb WHERE `label` = 'doris_test_label'
OR `state` = 'PENDING'",
+ "CANCEL EXPORT FROM testDb WHERE (`label` =
'doris_test_label') OR (`state` = 'PENDING')",
stmt.toString());
}
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/analysis/CancelLoadStmtTest.java
b/fe/fe-core/src/test/java/org/apache/doris/analysis/CancelLoadStmtTest.java
index d9758ab07bf..f51ac74c342 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/analysis/CancelLoadStmtTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/CancelLoadStmtTest.java
@@ -64,7 +64,7 @@ public class CancelLoadStmtTest extends TestWithFeService {
labelStringLiteral);
CancelLoadStmt stmt = new CancelLoadStmt(null, labelBinaryPredicate);
stmt.analyze(analyzer);
- Assertions.assertEquals("CANCEL LOAD FROM testDb WHERE `label` =
'doris_test_label'",
+ Assertions.assertEquals("CANCEL LOAD FROM testDb WHERE (`label` =
'doris_test_label')",
stmt.toString());
SlotRef labelSlotRefUpper = new SlotRef(null, "LABEL");
@@ -72,7 +72,7 @@ public class CancelLoadStmtTest extends TestWithFeService {
labelStringLiteral);
CancelLoadStmt stmtUpper = new CancelLoadStmt(null,
labelBinaryPredicateUpper);
stmtUpper.analyze(analyzer);
- Assertions.assertEquals("CANCEL LOAD FROM testDb WHERE `LABEL` =
'doris_test_label'",
+ Assertions.assertEquals("CANCEL LOAD FROM testDb WHERE (`LABEL` =
'doris_test_label')",
stmtUpper.toString());
StringLiteral stateStringLiteral = new StringLiteral("LOADING");
@@ -80,7 +80,7 @@ public class CancelLoadStmtTest extends TestWithFeService {
stateStringLiteral);
stmt = new CancelLoadStmt(null, stateBinaryPredicate);
stmt.analyze(analyzer);
- Assertions.assertEquals("CANCEL LOAD FROM testDb WHERE `state` =
'LOADING'", stmt.toString());
+ Assertions.assertEquals("CANCEL LOAD FROM testDb WHERE (`state` =
'LOADING')", stmt.toString());
LikePredicate labelLikePredicate = new
LikePredicate(LikePredicate.Operator.LIKE, labelSlotRef,
labelStringLiteral);
@@ -94,7 +94,7 @@ public class CancelLoadStmtTest extends TestWithFeService {
stmt = new CancelLoadStmt(null, compoundAndPredicate);
stmt.analyze(analyzer);
Assertions.assertEquals(
- "CANCEL LOAD FROM testDb WHERE `label` = 'doris_test_label'
AND `state` = 'LOADING'",
+ "CANCEL LOAD FROM testDb WHERE (`label` = 'doris_test_label')
AND (`state` = 'LOADING')",
stmt.toString());
CompoundPredicate compoundOrPredicate = new
CompoundPredicate(Operator.OR, labelBinaryPredicate,
@@ -102,7 +102,7 @@ public class CancelLoadStmtTest extends TestWithFeService {
stmt = new CancelLoadStmt(null, compoundOrPredicate);
stmt.analyze(analyzer);
Assertions.assertEquals(
- "CANCEL LOAD FROM testDb WHERE `label` = 'doris_test_label' OR
`state` = 'LOADING'",
+ "CANCEL LOAD FROM testDb WHERE (`label` = 'doris_test_label')
OR (`state` = 'LOADING')",
stmt.toString());
// test match
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/analysis/DataDescriptionTest.java
b/fe/fe-core/src/test/java/org/apache/doris/analysis/DataDescriptionTest.java
index c5a56a96c68..b6a0aa2233c 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/analysis/DataDescriptionTest.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/analysis/DataDescriptionTest.java
@@ -127,9 +127,9 @@ public class DataDescriptionTest {
desc = new DataDescription("testTable", null,
Lists.newArrayList("abc.txt"),
Lists.newArrayList("col1", "col2"), new Separator(","), "csv",
null, false, null, null, whereExpr, LoadTask.MergeType.MERGE, whereExpr, null,
null);
desc.analyze("testDb");
- Assert.assertEquals("MERGE DATA INFILE ('abc.txt') INTO TABLE
testTable COLUMNS TERMINATED BY ',' FORMAT AS 'csv' (col1, col2) WHERE 1 = 1
DELETE ON 1 = 1", desc.toString());
- Assert.assertEquals("1 = 1", desc.getWhereExpr().toSql());
- Assert.assertEquals("1 = 1", desc.getDeleteCondition().toSql());
+ Assert.assertEquals("MERGE DATA INFILE ('abc.txt') INTO TABLE
testTable COLUMNS TERMINATED BY ',' FORMAT AS 'csv' (col1, col2) WHERE (1 = 1)
DELETE ON (1 = 1)", desc.toString());
+ Assert.assertEquals("(1 = 1)", desc.getWhereExpr().toSql());
+ Assert.assertEquals("(1 = 1)", desc.getDeleteCondition().toSql());
Assert.assertEquals(",", desc.getColumnSeparator());
desc = new DataDescription("testTable", null,
Lists.newArrayList("abc.txt", "bcd.txt"),
@@ -168,7 +168,7 @@ public class DataDescriptionTest {
.newArrayList((Expr)
predicate));
desc.analyze("testDb");
String sql = "APPEND DATA INFILE ('abc.txt') INTO TABLE testTable
PARTITIONS (p1, p2) (k2, k3)"
- + " SET (`k1` = alignment_timestamp('day', `k2`))";
+ + " SET ((`k1` = alignment_timestamp('day', `k2`)))";
Assert.assertEquals(sql, desc.toString());
// replace_value func
@@ -183,7 +183,7 @@ public class DataDescriptionTest {
false,
Lists.newArrayList((Expr) predicate));
desc.analyze("testDb");
sql = "APPEND DATA INFILE ('abc.txt') INTO TABLE testTable PARTITIONS
(p1, p2) (k2, k3)"
- + " SET (`k1` = replace_value('-', '10'))";
+ + " SET ((`k1` = replace_value('-', '10')))";
Assert.assertEquals(sql, desc.toString());
// replace_value null
@@ -198,7 +198,7 @@ public class DataDescriptionTest {
.newArrayList((Expr)
predicate));
desc.analyze("testDb");
sql = "APPEND DATA INFILE ('abc.txt') INTO TABLE testTable PARTITIONS
(p1, p2) (k2, k3)"
- + " SET (`k1` = replace_value('', NULL))";
+ + " SET ((`k1` = replace_value('', NULL)))";
Assert.assertEquals(sql, desc.toString());
// data from table and set bitmap_dict
@@ -210,7 +210,7 @@ public class DataDescriptionTest {
"testHiveTable", false,
Lists.newArrayList(predicate),
null, LoadTask.MergeType.APPEND, null, null);
desc.analyze("testDb");
- sql = "APPEND DATA FROM TABLE testHiveTable INTO TABLE testTable
PARTITIONS (p1, p2) SET (`k1` = bitmap_dict(`k2`))";
+ sql = "APPEND DATA FROM TABLE testHiveTable INTO TABLE testTable
PARTITIONS (p1, p2) SET ((`k1` = bitmap_dict(`k2`)))";
Assert.assertEquals(sql, desc.toSql());
Map<String, String> properties = Maps.newHashMap();
@@ -409,7 +409,7 @@ public class DataDescriptionTest {
+ "COLUMNS TERMINATED BY '010203' "
+ "LINES TERMINATED BY '040506' "
+ "(k1, k2, v1) "
- + "SET (`k1` = bitmap_dict('day', `k2`))";
+ + "SET ((`k1` = bitmap_dict('day', `k2`)))";
Assert.assertEquals(sql, desc.toSql());
}
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/analysis/DeleteStmtTest.java
b/fe/fe-core/src/test/java/org/apache/doris/analysis/DeleteStmtTest.java
index 2bd53e8d3e6..809ead85fe4 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/analysis/DeleteStmtTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/DeleteStmtTest.java
@@ -60,11 +60,11 @@ public class DeleteStmtTest {
Assert.assertEquals("testDb", deleteStmt.getDbName());
Assert.assertEquals("testTbl", deleteStmt.getTableName());
Assert.assertEquals(Lists.newArrayList("partition"),
deleteStmt.getPartitionNames());
- Assert.assertEquals("DELETE FROM `testDb`.`testTbl` PARTITION
(partition) WHERE `k1` = 'abc'",
+ Assert.assertEquals("DELETE FROM `testDb`.`testTbl` PARTITION
(partition) WHERE (`k1` = 'abc')",
deleteStmt.toSql());
deleteStmt = new DeleteStmt(new TableName(internalCtl, "testDb",
"testTbl"), null, wherePredicate);
- Assert.assertEquals("DELETE FROM `testDb`.`testTbl` WHERE `k1` =
'abc'",
+ Assert.assertEquals("DELETE FROM `testDb`.`testTbl` WHERE (`k1` =
'abc')",
deleteStmt.toSql());
}
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/analysis/SelectStmtTest.java
b/fe/fe-core/src/test/java/org/apache/doris/analysis/SelectStmtTest.java
index 331ee4eb060..76bbdec5fdb 100755
--- a/fe/fe-core/src/test/java/org/apache/doris/analysis/SelectStmtTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/SelectStmtTest.java
@@ -301,9 +301,9 @@ public class SelectStmtTest {
String commonExpr2 = "`t3`.`k3` = `t1`.`k3`";
String commonExpr3 = "`t1`.`k1` = `t5`.`k1`";
String commonExpr4 = "t5`.`k2` = 'United States'";
- String betweenExpanded1 = "CAST(CAST(`t1`.`k4` AS DECIMALV3(12, 2)) AS
INT) >= 100 AND CAST(CAST(`t1`.`k4` AS DECIMALV3(12, 2)) AS INT) <= 150";
- String betweenExpanded2 = "CAST(CAST(`t1`.`k4` AS DECIMALV3(12, 2)) AS
INT) >= 50 AND CAST(CAST(`t1`.`k4` AS DECIMALV3(12, 2)) AS INT) <= 100";
- String betweenExpanded3 = "`t1`.`k4` >= 50 AND `t1`.`k4` <= 250";
+ String betweenExpanded1 = "(CAST(CAST(`t1`.`k4` AS DECIMALV3(12, 2))
AS INT) >= 100) AND (CAST(CAST(`t1`.`k4` AS DECIMALV3(12, 2)) AS INT) <= 150)";
+ String betweenExpanded2 = "(CAST(CAST(`t1`.`k4` AS DECIMALV3(12, 2))
AS INT) >= 50) AND (CAST(CAST(`t1`.`k4` AS DECIMALV3(12, 2)) AS INT) <= 100)";
+ String betweenExpanded3 = "(`t1`.`k4` >= 50) AND (`t1`.`k4` <= 250)";
String rewrittenSql = stmt.toSql();
Assert.assertTrue(rewrittenSql.contains(commonExpr1));
@@ -347,17 +347,17 @@ public class SelectStmtTest {
SelectStmt stmt2 = (SelectStmt) UtFrameUtils.parseAndAnalyzeStmt(sql2,
ctx);
stmt2.rewriteExprs(new Analyzer(ctx.getEnv(), ctx).getExprRewriter());
String fragment3 =
- "(((`t1`.`k4` >= 50 AND `t1`.`k4` <= 300) AND `t2`.`k2` IN
('United States', 'United States1') "
+ "((((`t1`.`k4` >= 50) AND (`t1`.`k4` <= 300)) AND `t2`.`k2` IN
('United States', 'United States1') "
+ "AND `t2`.`k3` IN ('CO', 'IL', 'MN', 'OH', 'MT',
'NM', 'TX', 'MO', 'MI')) "
- + "AND `t1`.`k1` = `t2`.`k3` AND `t2`.`k2` = 'United
States' "
- + "AND `t2`.`k3` IN ('CO', 'IL', 'MN') AND `t1`.`k4`
>= 100 AND `t1`.`k4` <= 200 "
+ + "AND (`t1`.`k1` = `t2`.`k3`) AND (`t2`.`k2` =
'United States') "
+ + "AND `t2`.`k3` IN ('CO', 'IL', 'MN') AND (`t1`.`k4`
>= 100) AND (`t1`.`k4` <= 200) "
+ "OR "
- + "`t1`.`k1` = `t2`.`k1` AND `t2`.`k2` = 'United
States1' "
- + "AND `t2`.`k3` IN ('OH', 'MT', 'NM') AND `t1`.`k4`
>= 150 AND `t1`.`k4` <= 300 "
+ + "(`t1`.`k1` = `t2`.`k1`) AND (`t2`.`k2` = 'United
States1') "
+ + "AND `t2`.`k3` IN ('OH', 'MT', 'NM') AND (`t1`.`k4`
>= 150) AND (`t1`.`k4` <= 300) "
+ "OR "
- + "`t1`.`k1` = `t2`.`k1` AND `t2`.`k2` = 'United
States' "
+ + "(`t1`.`k1` = `t2`.`k1`) AND (`t2`.`k2` = 'United
States') "
+ "AND `t2`.`k3` IN ('TX', 'MO', 'MI') "
- + "AND `t1`.`k4` >= 50 AND `t1`.`k4` <= 250)";
+ + "AND (`t1`.`k4` >= 50) AND (`t1`.`k4` <= 250))";
Assert.assertTrue(stmt2.toSql().contains(fragment3));
String sql3 = "select\n"
@@ -370,7 +370,7 @@ public class SelectStmtTest {
SelectStmt stmt3 = (SelectStmt) UtFrameUtils.parseAndAnalyzeStmt(sql3,
ctx);
stmt3.rewriteExprs(new Analyzer(ctx.getEnv(), ctx).getExprRewriter());
Assert.assertFalse(
- stmt3.toSql().contains("`t1`.`k1` = `t2`.`k3` OR `t1`.`k1` =
`t2`.`k3` OR" + " `t1`.`k1` = `t2`.`k3`"));
+ stmt3.toSql().contains("(`t1`.`k1` = `t2`.`k3`) OR (`t1`.`k1`
= `t2`.`k3`) OR" + " (`t1`.`k1` = `t2`.`k3`)"));
String sql4 = "select\n"
+ " avg(t1.k4)\n"
@@ -381,7 +381,7 @@ public class SelectStmtTest {
+ " t1.k1 = t2.k2 or t1.k1 = t2.k3 or t1.k1 = t2.k3";
SelectStmt stmt4 = (SelectStmt) UtFrameUtils.parseAndAnalyzeStmt(sql4,
ctx);
stmt4.rewriteExprs(new Analyzer(ctx.getEnv(), ctx).getExprRewriter());
- Assert.assertTrue(stmt4.toSql().contains("`t1`.`k1` = `t2`.`k2` OR
`t1`.`k1` = `t2`.`k3`"));
+ Assert.assertTrue(stmt4.toSql().contains("(`t1`.`k1` = `t2`.`k2`) OR
(`t1`.`k1` = `t2`.`k3`)"));
String sql5 = "select\n"
+ " avg(t1.k4)\n"
@@ -435,7 +435,7 @@ public class SelectStmtTest {
SelectStmt stmt9 = (SelectStmt) UtFrameUtils.parseAndAnalyzeStmt(sql9,
ctx);
stmt9.rewriteExprs(new Analyzer(ctx.getEnv(), ctx).getExprRewriter());
Assert.assertTrue(
- stmt9.toSql().contains("`k1` = 'shutdown' AND `k4` < 1 OR `k1`
= 'switchOff' AND `k4` >= 1"));
+ stmt9.toSql().contains("(`k1` = 'shutdown') AND (`k4` < 1) OR
(`k1` = 'switchOff') AND (`k4` >= 1)"));
}
@Test
@@ -528,21 +528,21 @@ public class SelectStmtTest {
String sql1 = "SELECT /*+ SET_VAR(enable_nereids_planner=true,
ENABLE_FALLBACK_TO_ORIGINAL_PLANNER=false) */ * FROM db1.table1 LEFT ANTI JOIN
db1.table2 ON db1.table1.siteid = db1.table2.siteid;";
String explain = dorisAssert.query(sql1).explainQuery();
Assert.assertTrue(explain
- .contains("PREDICATES: __DORIS_DELETE_SIGN__ = 0"));
+ .contains("__DORIS_DELETE_SIGN__ = 0"));
Assert.assertFalse(explain.contains("other predicates:"));
String sql2 = "SELECT /*+ SET_VAR(enable_nereids_planner=false) */ *
FROM db1.table1 JOIN db1.table2 ON db1.table1.siteid = db1.table2.siteid;";
explain = dorisAssert.query(sql2).explainQuery();
Assert.assertTrue(explain
- .contains("PREDICATES: `db1`.`table1`.`__DORIS_DELETE_SIGN__`
= 0"));
+ .contains("`db1`.`table1`.`__DORIS_DELETE_SIGN__` = 0"));
Assert.assertTrue(explain
- .contains("PREDICATES: `db1`.`table2`.`__DORIS_DELETE_SIGN__`
= 0"));
+ .contains("`db1`.`table2`.`__DORIS_DELETE_SIGN__` = 0"));
Assert.assertFalse(explain.contains("other predicates:"));
String sql3 = "SELECT /*+ SET_VAR(enable_nereids_planner=false) */ *
FROM db1.table1";
Assert.assertTrue(dorisAssert.query(sql3).explainQuery()
- .contains("PREDICATES: `db1`.`table1`.`__DORIS_DELETE_SIGN__`
= 0"));
+ .contains("`db1`.`table1`.`__DORIS_DELETE_SIGN__` = 0"));
String sql4 = " SELECT /*+ SET_VAR(enable_nereids_planner=false) */ *
FROM db1.table1 table2";
Assert.assertTrue(dorisAssert.query(sql4).explainQuery()
- .contains("PREDICATES: `table2`.`__DORIS_DELETE_SIGN__` = 0"));
+ .contains("`table2`.`__DORIS_DELETE_SIGN__` = 0"));
new MockUp<Util>() {
@Mock
public boolean showHiddenColumns() {
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowAlterStmtTest.java
b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowAlterStmtTest.java
index 8d0050b3a72..4bcefd6b3f1 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowAlterStmtTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowAlterStmtTest.java
@@ -78,7 +78,7 @@ public class ShowAlterStmtTest {
ShowAlterStmt stmt = new ShowAlterStmt(ShowAlterStmt.AlterType.COLUMN,
null, binaryPredicate, null,
new LimitElement(1, 2));
stmt.analyzeSyntax(analyzer);
- Assert.assertEquals("SHOW ALTER TABLE COLUMN FROM `testDb` WHERE
`TableName` = \'abc\' LIMIT 1, 2",
+ Assert.assertEquals("SHOW ALTER TABLE COLUMN FROM `testDb` WHERE
(`TableName` = \'abc\') LIMIT 1, 2",
stmt.toString());
}
@@ -89,7 +89,7 @@ public class ShowAlterStmtTest {
BinaryPredicate binaryPredicate = new BinaryPredicate(Operator.EQ,
slotRef, stringLiteral);
ShowAlterStmt stmt = new ShowAlterStmt(ShowAlterStmt.AlterType.COLUMN,
null, binaryPredicate, null, null);
stmt.analyzeSyntax(analyzer);
- Assert.assertEquals("SHOW ALTER TABLE COLUMN FROM `testDb` WHERE
`CreateTime` = \'2019-12-04 00:00:00\'",
+ Assert.assertEquals("SHOW ALTER TABLE COLUMN FROM `testDb` WHERE
(`CreateTime` = \'2019-12-04 00:00:00\')",
stmt.toString());
}
}
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowBackupStmtTest.java
b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowBackupStmtTest.java
index 6d340e5d6f1..d3bf61a307e 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowBackupStmtTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowBackupStmtTest.java
@@ -78,7 +78,7 @@ public class ShowBackupStmtTest {
new BinaryPredicate(BinaryPredicate.Operator.EQ, new
SlotRef(new TableName("a.b.c"), "snapshotname"),
new StringLiteral("FINISHED")));
stmt.analyze(analyzer);
- Assertions.assertEquals(stmt.toSql(), "SHOW BACKUP WHERE
`a`.`b`.`c`.`snapshotname` = 'FINISHED'");
+ Assertions.assertEquals(stmt.toSql(), "SHOW BACKUP WHERE
(`a`.`b`.`c`.`snapshotname` = 'FINISHED')");
stmt = new ShowBackupStmt("",
new LikePredicate(Operator.LIKE, new SlotRef(new
TableName("a.b.c"), "snapshotname"),
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowExportStmtTest.java
b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowExportStmtTest.java
index a3a9fc72207..ed8c33fb9e4 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowExportStmtTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowExportStmtTest.java
@@ -53,7 +53,7 @@ public class ShowExportStmtTest {
stmt = new ShowExportStmt(null, binaryPredicate, null, new
LimitElement(10));
stmt.analyze(analyzer);
- Assert.assertEquals("SHOW EXPORT FROM `testDb` WHERE `label` = 'abc'
LIMIT 10", stmt.toString());
+ Assert.assertEquals("SHOW EXPORT FROM `testDb` WHERE (`label` = 'abc')
LIMIT 10", stmt.toString());
Assert.assertFalse(stmt.isLabelUseLike());
StringLiteral stringLiteralLike = new StringLiteral("ab%");
@@ -67,7 +67,7 @@ public class ShowExportStmtTest {
BinaryPredicate statePredicate = new BinaryPredicate(Operator.EQ, new
SlotRef(null, "state"), new StringLiteral("PENDING"));
stmt = new ShowExportStmt(null, statePredicate, null, new
LimitElement(10));
stmt.analyze(analyzer);
- Assert.assertEquals("SHOW EXPORT FROM `testDb` WHERE `state` =
'PENDING' LIMIT 10", stmt.toString());
+ Assert.assertEquals("SHOW EXPORT FROM `testDb` WHERE (`state` =
'PENDING') LIMIT 10", stmt.toString());
}
@Test
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowLoadStmtTest.java
b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowLoadStmtTest.java
index c943dcf5736..df90d1df712 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowLoadStmtTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowLoadStmtTest.java
@@ -99,7 +99,7 @@ public class ShowLoadStmtTest {
BinaryPredicate binaryPredicate = new BinaryPredicate(Operator.EQ,
slotRef, stringLiteral);
stmt = new ShowLoadStmt(null, binaryPredicate, null, new
LimitElement(10));
stmt.analyze(analyzer);
- Assert.assertEquals("SHOW LOAD FROM `testDb` WHERE `label` = \'abc\'
LIMIT 10", stmt.toString());
+ Assert.assertEquals("SHOW LOAD FROM `testDb` WHERE (`label` = \'abc\')
LIMIT 10", stmt.toString());
StringLiteral stringLiteralLike = new StringLiteral("ab%");
LikePredicate likePredicate = new
LikePredicate(LikePredicate.Operator.LIKE, slotRef, stringLiteralLike);
@@ -111,7 +111,7 @@ public class ShowLoadStmtTest {
BinaryPredicate statePredicate = new BinaryPredicate(Operator.EQ, new
SlotRef(null, "state"), new StringLiteral("PENDING"));
stmt = new ShowLoadStmt(null, statePredicate, null, new
LimitElement(10));
stmt.analyze(analyzer);
- Assert.assertEquals("SHOW LOAD FROM `testDb` WHERE `state` =
\'PENDING\' LIMIT 10", stmt.toString());
+ Assert.assertEquals("SHOW LOAD FROM `testDb` WHERE (`state` =
\'PENDING\') LIMIT 10", stmt.toString());
}
@Test
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowPartitionsStmtTest.java
b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowPartitionsStmtTest.java
index 8dd0221e00a..0a25b2dde35 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowPartitionsStmtTest.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowPartitionsStmtTest.java
@@ -100,7 +100,7 @@ public class ShowPartitionsStmtTest {
BinaryPredicate binaryPredicate = new
BinaryPredicate(BinaryPredicate.Operator.GT, slotRef, stringLiteral);
ShowPartitionsStmt stmt = new ShowPartitionsStmt(new
TableName(internalCtl, "testDb", "testTable"), binaryPredicate, null, null,
false);
stmt.analyzeImpl(analyzer);
- Assert.assertEquals("SHOW PARTITIONS FROM `testDb`.`testTable` WHERE
`LastConsistencyCheckTime` > '2019-12-22 10:22:11'", stmt.toString());
+ Assert.assertEquals("SHOW PARTITIONS FROM `testDb`.`testTable` WHERE
(`LastConsistencyCheckTime` > '2019-12-22 10:22:11')", stmt.toString());
}
@Test
@@ -259,7 +259,7 @@ public class ShowPartitionsStmtTest {
ShowPartitionsStmt stmt = new ShowPartitionsStmt(new
TableName("hms", "hms", "testTable"),
binaryPredicate, null, null, false);
Assertions.assertEquals(stmt.toSql(), "SHOW PARTITIONS FROM
`hms`.`testTable` "
- + "WHERE `PartitionName` = 'part=part1'");
+ + "WHERE (`PartitionName` = 'part=part1')");
}
}
}
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowResourcesStmtTest.java
b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowResourcesStmtTest.java
index 16315614066..50cf5505ef7 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowResourcesStmtTest.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowResourcesStmtTest.java
@@ -67,7 +67,7 @@ public class ShowResourcesStmtTest {
BinaryPredicate binaryPredicate = new BinaryPredicate(Operator.EQ,
slotRef, stringLiteral);
stmt = new ShowResourcesStmt(binaryPredicate, null, new
LimitElement(10));
stmt.analyze(analyzer);
- Assert.assertEquals("SHOW RESOURCES WHERE `name` = \'abc\' LIMIT 10",
stmt.toString());
+ Assert.assertEquals("SHOW RESOURCES WHERE (`name` = \'abc\') LIMIT
10", stmt.toString());
LikePredicate likePredicate = new
LikePredicate(org.apache.doris.analysis.LikePredicate.Operator.LIKE,
slotRef, stringLiteral);
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/analysis/SqlModeTest.java
b/fe/fe-core/src/test/java/org/apache/doris/analysis/SqlModeTest.java
index 9e0b8c2a460..d70dfc826f0 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/analysis/SqlModeTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/SqlModeTest.java
@@ -41,7 +41,7 @@ public class SqlModeTest {
} catch (Exception e) {
Assert.fail(e.getMessage());
}
- Assert.assertEquals("SELECT * FROM `db1`.`tbl1` WHERE `name` = 'BILL
GATES'", selectStmt.toSql());
+ Assert.assertEquals("SELECT * FROM `db1`.`tbl1` WHERE (`name` = 'BILL
GATES')", selectStmt.toSql());
parser = new SqlParser(new SqlScanner(new StringReader(stmt),
SqlModeHelper.MODE_DEFAULT));
try {
@@ -49,7 +49,7 @@ public class SqlModeTest {
} catch (Exception e) {
Assert.fail(e.getMessage());
}
- Assert.assertEquals("SELECT * FROM `db1`.`tbl1` WHERE `name` = 'BILL
GATES'", selectStmt.toSql());
+ Assert.assertEquals("SELECT * FROM `db1`.`tbl1` WHERE (`name` = 'BILL
GATES')", selectStmt.toSql());
}
@Test
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/catalog/CreateViewTest.java
b/fe/fe-core/src/test/java/org/apache/doris/catalog/CreateViewTest.java
index b7945e0b6de..14acbcb0d23 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/catalog/CreateViewTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/catalog/CreateViewTest.java
@@ -185,7 +185,7 @@ public class CreateViewTest {
alter1 = (View) db.getTableOrDdlException("alter1");
Assert.assertEquals(
"WITH test1_cte(w1, w2) AS (SELECT `k1`, `k2` FROM
`test`.`tbl1`) "
- + "SELECT `w1` AS `c1`, sum(`w2`) AS `c2` FROM
`test1_cte` WHERE `w1` > 10 GROUP BY `w1` "
+ + "SELECT `w1` AS `c1`, sum(`w2`) AS `c2` FROM
`test1_cte` WHERE (`w1` > 10) GROUP BY `w1` "
+ "ORDER BY `w1` ASC NULLS FIRST",
alter1.getInlineViewDef());
}
diff --git a/fe/fe-core/src/test/java/org/apache/doris/planner/PlannerTest.java
b/fe/fe-core/src/test/java/org/apache/doris/planner/PlannerTest.java
index 493053b3b1c..41f21110330 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/planner/PlannerTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/planner/PlannerTest.java
@@ -437,7 +437,7 @@ public class PlannerTest extends TestWithFeService {
stmtExecutor.execute();
Planner planner = stmtExecutor.planner();
String plan = planner.getExplainString(new ExplainOptions(false,
false, false));
- Assertions.assertTrue(plan.contains("PREDICATES: `k1` = 1\n"));
+ Assertions.assertTrue(plan.contains("`k1` = 1"));
}
@Test
@@ -459,7 +459,7 @@ public class PlannerTest extends TestWithFeService {
stmtExecutor.execute();
Planner planner = stmtExecutor.planner();
String plan = planner.getExplainString(new ExplainOptions(false,
false, false));
- Assertions.assertTrue(plan.contains("PREDICATES: `k1` = 1 AND `k2` =
1\n"));
+ Assertions.assertTrue(plan.contains("(`k1` = 1) AND (`k2` = 1)"));
}
@Test
@@ -471,7 +471,7 @@ public class PlannerTest extends TestWithFeService {
stmtExecutor.execute();
Planner planner = stmtExecutor.planner();
String plan = planner.getExplainString(new ExplainOptions(false,
false, false));
- Assertions.assertTrue(plan.contains("PREDICATES: `k1` = 1\n"));
+ Assertions.assertTrue(plan.contains("`k1` = 1"));
}
@Test
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/planner/QueryPlanTest.java
b/fe/fe-core/src/test/java/org/apache/doris/planner/QueryPlanTest.java
index 3f7aaa70991..c36622268ba 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/planner/QueryPlanTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/planner/QueryPlanTest.java
@@ -493,7 +493,7 @@ public class QueryPlanTest extends TestWithFeService {
assertSQLPlanOrErrorMsgContains(
"select count(*) from test.bitmap_table where id2 = 1;",
- "Unsupported bitmap type in expression: `id2` = 1"
+ "Unsupported bitmap type in expression: (`id2` = 1)"
);
}
@@ -547,7 +547,7 @@ public class QueryPlanTest extends TestWithFeService {
assertSQLPlanOrErrorMsgContains(
"select count(*) from test.hll_table where id2 = 1",
- "Hll type dose not support operand: `id2` = 1"
+ "Hll type dose not support operand: (`id2` = 1)"
);
}
@@ -732,8 +732,8 @@ public class QueryPlanTest extends TestWithFeService {
+ "left join join2 on join1.id = join2.id\n"
+ "and join1.id > 1;";
String explainString = getSQLPlanOrErrorMsg("explain " + sql);
- Assert.assertTrue(explainString.contains("other join predicates: <slot
12> <slot 0> > 1"));
- Assert.assertFalse(explainString.contains("PREDICATES: `join1`.`id` >
1"));
+ Assert.assertTrue(explainString.contains("<slot 12> <slot 0> > 1"));
+ Assert.assertFalse(explainString.contains("`join1`.`id` > 1"));
/*
// test left join: right table where predicate.
@@ -752,8 +752,8 @@ public class QueryPlanTest extends TestWithFeService {
+ "left join join2 on join1.id = join2.id\n"
+ "and join2.id > 1;";
explainString = getSQLPlanOrErrorMsg("explain " + sql);
- Assert.assertTrue(explainString.contains("PREDICATES: `join2`.`id` >
1"));
- Assert.assertFalse(explainString.contains("PREDICATES: `join1`.`id` >
1"));
+ Assert.assertTrue(explainString.contains("`join2`.`id` > 1"));
+ Assert.assertFalse(explainString.contains("`join1`.`id` > 1"));
/*
// test inner join: left table where predicate, both push down left
table and right table
@@ -770,8 +770,8 @@ public class QueryPlanTest extends TestWithFeService {
+ "join join2 on join1.id = join2.id\n"
+ "and join1.id > 1;";
explainString = getSQLPlanOrErrorMsg("explain " + sql);
- Assert.assertTrue(explainString.contains("PREDICATES: `join1`.`id` >
1"));
- Assert.assertTrue(explainString.contains("PREDICATES: `join2`.`id` >
1"));
+ Assert.assertTrue(explainString.contains("`join1`.`id` > 1"));
+ Assert.assertTrue(explainString.contains("`join2`.`id` > 1"));
/*
// test inner join: right table where predicate, both push down left
table and right table
@@ -788,8 +788,8 @@ public class QueryPlanTest extends TestWithFeService {
+ "join join2 on join1.id = join2.id\n" + "and 1 < join2.id;";
explainString = getSQLPlanOrErrorMsg("explain " + sql);
- Assert.assertTrue(explainString.contains("PREDICATES: `join1`.`id` >
1"));
- Assert.assertTrue(explainString.contains("PREDICATES: `join2`.`id` >
1"));
+ Assert.assertTrue(explainString.contains("`join1`.`id` > 1"));
+ Assert.assertTrue(explainString.contains("`join2`.`id` > 1"));
sql = "select /*+ SET_VAR(enable_nereids_planner=false) */ *\n from
join1\n"
+ "join join2 on join1.id = join2.value\n"
@@ -803,31 +803,31 @@ public class QueryPlanTest extends TestWithFeService {
+ "left anti join join2 on join1.id = join2.id\n"
+ "and join2.id > 1;";
explainString = getSQLPlanOrErrorMsg("explain " + sql);
- Assert.assertTrue(explainString.contains("PREDICATES: `join2`.`id` >
1"));
- Assert.assertFalse(explainString.contains("PREDICATES: `join1`.`id` >
1"));
+ Assert.assertTrue(explainString.contains("`join2`.`id` > 1"));
+ Assert.assertFalse(explainString.contains("`join1`.`id` > 1"));
// test semi join, right table join predicate, only push to right table
sql = "select /*+ SET_VAR(enable_nereids_planner=false) */ *\n from
join1\n"
+ "left semi join join2 on join1.id = join2.id\n"
+ "and join2.id > 1;";
explainString = getSQLPlanOrErrorMsg("explain " + sql);
- Assert.assertTrue(explainString.contains("PREDICATES: `join2`.`id` >
1"));
- Assert.assertTrue(explainString.contains("PREDICATES: `join1`.`id` >
1"));
+ Assert.assertTrue(explainString.contains("`join2`.`id` > 1"));
+ Assert.assertTrue(explainString.contains("`join1`.`id` > 1"));
// test anti join, left table join predicate, left table couldn't push
down
sql = "select /*+ SET_VAR(enable_nereids_planner=false) */ *\n from
join1\n"
+ "left anti join join2 on join1.id = join2.id\n"
+ "and join1.id > 1;";
explainString = getSQLPlanOrErrorMsg("explain " + sql);
- Assert.assertTrue(explainString.contains("other join predicates: <slot
7> <slot 0> > 1"));
- Assert.assertFalse(explainString.contains("PREDICATES: `join1`.`id` >
1"));
+ Assert.assertTrue(explainString.contains("<slot 7> <slot 0> > 1"));
+ Assert.assertFalse(explainString.contains("`join1`.`id` > 1"));
// test semi join, left table join predicate, only push to left table
sql = "select /*+ SET_VAR(enable_nereids_planner=false) */ *\n from
join1\n"
+ "left semi join join2 on join1.id = join2.id\n"
+ "and join1.id > 1;";
explainString = getSQLPlanOrErrorMsg("explain " + sql);
- Assert.assertTrue(explainString.contains("PREDICATES: `join1`.`id` >
1"));
+ Assert.assertTrue(explainString.contains("`join1`.`id` > 1"));
/*
// test anti join, left table where predicate, only push to left table
@@ -1036,15 +1036,15 @@ public class QueryPlanTest extends TestWithFeService {
public void testOrCompoundPredicateFold() throws Exception {
String queryStr = "explain select /*+
SET_VAR(enable_nereids_planner=false) */ * from baseall where (k1 > 1) or (k1 >
1 and k2 < 1)";
String explainString = getSQLPlanOrErrorMsg(queryStr);
- Assert.assertTrue(explainString.contains("PREDICATES: (`k1` > 1)\n"));
+ Assert.assertTrue(explainString.contains("`k1` > 1"));
queryStr = "explain select /*+ SET_VAR(enable_nereids_planner=false)
*/ * from baseall where (k1 > 1 and k2 < 1) or (k1 > 1)";
explainString = getSQLPlanOrErrorMsg(queryStr);
- Assert.assertTrue(explainString.contains("PREDICATES: `k1` > 1\n"));
+ Assert.assertTrue(explainString.contains("`k1` > 1"));
queryStr = "explain select /*+ SET_VAR(enable_nereids_planner=false)
*/ * from baseall where (k1 > 1) or (k1 > 1)";
explainString = getSQLPlanOrErrorMsg(queryStr);
- Assert.assertTrue(explainString.contains("PREDICATES: (`k1` > 1)\n"));
+ Assert.assertTrue(explainString.contains("`k1` > 1"));
}
@Test
@@ -1677,7 +1677,7 @@ public class QueryPlanTest extends TestWithFeService {
//default format
String sql = "select /*+ SET_VAR(enable_nereids_planner=false) */ *
from test1 where from_unixtime(query_time) > '2021-03-02 10:01:28'";
String explainString = getSQLPlanOrErrorMsg("EXPLAIN " + sql);
- Assert.assertTrue(explainString.contains("PREDICATES: `query_time` <=
253402271999 AND `query_time` > 1614650488"));
+ Assert.assertTrue(explainString.contains("(`query_time` <=
253402271999) AND (`query_time` > 1614650488)"));
}
@Disabled
@@ -1811,7 +1811,7 @@ public class QueryPlanTest extends TestWithFeService {
// false or e ==> e
String sql1 = "select /*+ SET_VAR(enable_nereids_planner=false) */ *
from test.test1 where 2=-2 OR query_time=0;";
String explainString1 = getSQLPlanOrErrorMsg("EXPLAIN " + sql1);
- Assert.assertTrue(explainString1.contains("PREDICATES: `query_time` =
0"));
+ Assert.assertTrue(explainString1.contains("`query_time` = 0"));
//true or e ==> true
String sql2 = "select /*+ SET_VAR(enable_nereids_planner=false) */ *
from test.test1 where -5=-5 OR query_time=0;";
@@ -1826,18 +1826,18 @@ public class QueryPlanTest extends TestWithFeService {
//e or false ==> e
String sql4 = "select /*+ SET_VAR(enable_nereids_planner=false) */ *
from test.test1 where -5!=-5 OR query_time=0;";
String explainString4 = getSQLPlanOrErrorMsg("EXPLAIN " + sql4);
- Assert.assertTrue(explainString4.contains("PREDICATES: `query_time` =
0"));
+ Assert.assertTrue(explainString4.contains("`query_time` = 0"));
// true and e ==> e
String sql5 = "select /*+ SET_VAR(enable_nereids_planner=false) */ *
from test.test1 where -5=-5 AND query_time=0;";
String explainString5 = getSQLPlanOrErrorMsg("EXPLAIN " + sql5);
- Assert.assertTrue(explainString5.contains("PREDICATES: `query_time` =
0"));
+ Assert.assertTrue(explainString5.contains("`query_time` = 0"));
// e and true ==> e
String sql6 = "select /*+ SET_VAR(enable_nereids_planner=false) */ *
from test.test1 where query_time=0 AND -5=-5;";
String explainString6 = getSQLPlanOrErrorMsg("EXPLAIN " + sql6);
- Assert.assertTrue(explainString6.contains("PREDICATES: `query_time` =
0"));
+ Assert.assertTrue(explainString6.contains("`query_time` = 0"));
// false and e ==> false
String sql7 = "select /*+ SET_VAR(enable_nereids_planner=false) */ *
from test.test1 where -5!=-5 AND query_time=0;";
@@ -1852,12 +1852,12 @@ public class QueryPlanTest extends TestWithFeService {
// (false or expr1) and (false or expr2) ==> expr1 and expr2
String sql9 = "select /*+ SET_VAR(enable_nereids_planner=false) */ *
from test.test1 where (-2=2 or query_time=2) and (-2=2 or stmt_id=2);";
String explainString9 = getSQLPlanOrErrorMsg("EXPLAIN " + sql9);
- Assert.assertTrue(explainString9.contains("PREDICATES: `query_time` =
2 AND `stmt_id` = 2"));
+ Assert.assertTrue(explainString9.contains("(`query_time` = 2) AND
(`stmt_id` = 2)"));
// false or (expr and true) ==> expr
String sql10 = "select /*+ SET_VAR(enable_nereids_planner=false) */ *
from test.test1 where (2=-2) OR (query_time=0 AND 1=1);";
String explainString10 = getSQLPlanOrErrorMsg("EXPLAIN " + sql10);
- Assert.assertTrue(explainString10.contains("PREDICATES: `query_time` =
0"));
+ Assert.assertTrue(explainString10.contains("`query_time` = 0"));
}
@Test
@@ -1885,11 +1885,11 @@ public class QueryPlanTest extends TestWithFeService {
+ " \"max_file_size\" = \"500MB\" );";
String explainStr = getSQLPlanOrErrorMsg("EXPLAIN " + sql);
if (Config.enable_date_conversion) {
- Assert.assertTrue(explainStr.contains("PREDICATES: `date` >=
'2021-10-07' AND"
- + " `date` <= '2021-10-11'"));
+ Assert.assertTrue(explainStr.contains("(`date` >= '2021-10-07')
AND"
+ + " (`date` <= '2021-10-11')"));
} else {
- Assert.assertTrue(explainStr.contains("PREDICATES: `date` >=
'2021-10-07 00:00:00' AND"
- + " `date` <= '2021-10-11 00:00:00'"));
+ Assert.assertTrue(explainStr.contains("(`date` >= '2021-10-07
00:00:00') AND"
+ + " (`date` <= '2021-10-11 00:00:00')"));
}
}
@@ -2237,7 +2237,7 @@ public class QueryPlanTest extends TestWithFeService {
sql = "SELECT /*+ SET_VAR(enable_nereids_planner=false) */ * from
test1 where (query_time = 1 or query_time = 2 or scan_bytes = 2) and scan_bytes
in (2, 3)";
explainString = UtFrameUtils.getSQLPlanOrErrorMsg(connectContext,
"EXPLAIN " + sql);
- Assert.assertTrue(explainString.contains("PREDICATES: `query_time` IN
(1, 2) OR `scan_bytes` = 2 AND `scan_bytes` IN (2, 3)\n"));
+ Assert.assertTrue(explainString.contains("PREDICATES: `query_time` IN
(1, 2) OR (`scan_bytes` = 2) AND `scan_bytes` IN (2, 3)\n"));
sql = "SELECT /*+ SET_VAR(enable_nereids_planner=false) */ * from
test1 where (query_time = 1 or query_time = 2) and (scan_bytes = 2 or
scan_bytes = 3)";
explainString = UtFrameUtils.getSQLPlanOrErrorMsg(connectContext,
"EXPLAIN " + sql);
@@ -2254,7 +2254,7 @@ public class QueryPlanTest extends TestWithFeService {
connectContext.getSessionVariable().setRewriteOrToInPredicateThreshold(100);
sql = "SELECT /*+ SET_VAR(enable_nereids_planner=false) */ * from
test1 where query_time = 1 or query_time = 2 or query_time in (3, 4)";
explainString = UtFrameUtils.getSQLPlanOrErrorMsg(connectContext,
"EXPLAIN " + sql);
- Assert.assertTrue(explainString.contains("PREDICATES: `query_time` = 1
OR `query_time` = 2 OR `query_time` IN (3, 4)\n"));
+ Assert.assertTrue(explainString.contains("PREDICATES: (`query_time` =
1) OR (`query_time` = 2) OR `query_time` IN (3, 4)\n"));
connectContext.getSessionVariable().setRewriteOrToInPredicateThreshold(2);
sql = "SELECT /*+ SET_VAR(enable_nereids_planner=false) */ * from
test1 where (query_time = 1 or query_time = 2) and query_time in (3, 4)";
@@ -2264,7 +2264,7 @@ public class QueryPlanTest extends TestWithFeService {
//test we can handle `!=` and `not in`
sql = "select /*+ SET_VAR(enable_nereids_planner=false) */ * from
test1 where (query_time = 1 or query_time = 2 or query_time!= 3 or query_time
not in (5, 6))";
explainString = UtFrameUtils.getSQLPlanOrErrorMsg(connectContext,
"EXPLAIN " + sql);
- Assert.assertTrue(explainString.contains("PREDICATES: `query_time` IN
(1, 2) OR `query_time` != 3 OR `query_time` NOT IN (5, 6)\n"));
+ Assert.assertTrue(explainString.contains("PREDICATES: `query_time` IN
(1, 2) OR (`query_time` != 3) OR `query_time` NOT IN (5, 6)\n"));
//test we can handle merge 2 or more columns
sql = "select /*+ SET_VAR(enable_nereids_planner=false) */ * from
test1 where (query_time = 1 or query_time = 2 or scan_rows = 3 or scan_rows =
4)";
@@ -2284,8 +2284,8 @@ public class QueryPlanTest extends TestWithFeService {
+ " or (db not in ('x', 'y')) ";
explainString = UtFrameUtils.getSQLPlanOrErrorMsg(connectContext,
"EXPLAIN " + sql);
Assert.assertTrue(explainString.contains(
- "PREDICATES: `query_id` = `client_ip` "
- + "AND (`stmt_id` IN (1, 2, 3) OR `user` = 'abc' AND
`state` IN ('a', 'b', 'c', 'd')) "
+ "PREDICATES: (`query_id` = `client_ip`) "
+ + "AND (`stmt_id` IN (1, 2, 3) OR (`user` = 'abc') AND
`state` IN ('a', 'b', 'c', 'd')) "
+ "OR (`db` NOT IN ('x', 'y'))\n"));
//ExtractCommonFactorsRule may generate more expr, test the
rewriteOrToIn applied on generated exprs
@@ -2293,7 +2293,7 @@ public class QueryPlanTest extends TestWithFeService {
explainString = UtFrameUtils.getSQLPlanOrErrorMsg(connectContext,
"EXPLAIN " + sql);
Assert.assertTrue(explainString.contains(
"PREDICATES: `state` IN ('a', 'b') AND `stmt_id` IN (1, 2) AND"
- + " `stmt_id` = 1 AND `state` = 'a' OR `stmt_id` = 2
AND `state` = 'b'\n"
+ + " (`stmt_id` = 1) AND (`state` = 'a') OR (`stmt_id`
= 2) AND (`state` = 'b')\n"
));
}
}
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/planner/RepeatNodeTest.java
b/fe/fe-core/src/test/java/org/apache/doris/planner/RepeatNodeTest.java
index a4a09d0870d..9a9b1a3b8c5 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/planner/RepeatNodeTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/planner/RepeatNodeTest.java
@@ -62,7 +62,7 @@ public class RepeatNodeTest extends TestWithFeService {
String explainString1 = getSQLPlanOrErrorMsg("explain " + sql1);
System.out.println(explainString1);
Assertions.assertTrue(explainString1.contains(
- "output slots: `if(`c`.`id` > 0, 1, 0)`, ``p`.`name``,
``c`.`cost``, ``GROUPING_ID``"));
+ "output slots: `if((`c`.`id` > 0), 1, 0)`, ``p`.`name``,
``c`.`cost``, ``GROUPING_ID``"));
String sql2 = "select /*+ SET_VAR(enable_nereids_planner=false) */ (id
+ 1) id_, name, sum(cost) from mycost group by grouping sets((id_, name),());";
String explainString2 = getSQLPlanOrErrorMsg("explain " + sql2);
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/planner/TableFunctionPlanTest.java
b/fe/fe-core/src/test/java/org/apache/doris/planner/TableFunctionPlanTest.java
index 2c39a09390b..a9698080219 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/planner/TableFunctionPlanTest.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/planner/TableFunctionPlanTest.java
@@ -132,7 +132,7 @@ public class TableFunctionPlanTest {
Assert.assertTrue(UtFrameUtils.checkPlanResultContainsNode(explainString, 1,
"TABLE FUNCTION NODE"));
Assert.assertTrue(
explainString.contains("table function:
explode_split(`db1`.`tbl1`.`k2`, ',')"));
- Assert.assertTrue(explainString.contains("PREDICATES: `e1` = '1'"));
+ Assert.assertTrue(explainString.contains("`e1` = '1'"));
Assert.assertTrue(explainString.contains("tuple ids: 0 1"));
Assert.assertTrue(explainString.contains("TupleDescriptor{id=1,
tbl=tmp, byteSize=32}"));
Assert.assertTrue(explainString.contains("SlotDescriptor{id=1, col=e1,
colUniqueId=-1, type=VARCHAR"));
@@ -153,7 +153,7 @@ public class TableFunctionPlanTest {
Assert.assertTrue(explainString.contains("TupleDescriptor{id=1,
tbl=tmp, byteSize=32}"));
Assert.assertTrue(explainString.contains("SlotDescriptor{id=1, col=e1,
colUniqueId=-1, type=VARCHAR"));
Assert.assertTrue(UtFrameUtils.checkPlanResultContainsNode(explainString, 0,
"OlapScanNode"));
- Assert.assertTrue(explainString.contains("PREDICATES: `k1` = 1"));
+ Assert.assertTrue(explainString.contains("`k1` = 1"));
}
/* Case6 multi lateral view
@@ -508,8 +508,8 @@ public class TableFunctionPlanTest {
+ " where k1 in (select k2 from db1.table_for_view);";
String explainString = UtFrameUtils.getSQLPlanOrErrorMsg(ctx, sql,
true);
Assert.assertTrue(explainString.contains("join op: LEFT SEMI
JOIN(BROADCAST)"));
- Assert.assertTrue(explainString.contains("equal join conjunct: `k1` =
`k2`"));
- Assert.assertTrue(!explainString.contains("equal join conjunct: `k2` =
`k2`"));
+ Assert.assertTrue(explainString.contains("`k1` = `k2`"));
+ Assert.assertTrue(!explainString.contains("`k2` = `k2`"));
}
@Test
diff --git a/fe/fe-core/src/test/java/org/apache/doris/policy/PolicyTest.java
b/fe/fe-core/src/test/java/org/apache/doris/policy/PolicyTest.java
index 6c1b24d531e..3169a57159f 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/policy/PolicyTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/policy/PolicyTest.java
@@ -269,7 +269,7 @@ public class PolicyTest extends TestWithFeService {
createPolicy("CREATE ROW POLICY test_row_policy4 ON test.table1 AS
PERMISSIVE TO test_policy USING (k2 = 1)");
String queryStr = "EXPLAIN select /*+
SET_VAR(enable_nereids_planner=false) */ * from test.table1";
String explainString = getSQLPlanOrErrorMsg(queryStr);
- Assertions.assertTrue(explainString.contains("`k1` = 1 AND `k2` = 1
AND `k2` = 2 OR `k2` = 1"));
+ Assertions.assertTrue(explainString.contains("(`k1` = 1) AND (`k2` =
1) AND (`k2` = 2) OR (`k2` = 1)"));
dropPolicy("DROP ROW POLICY test_row_policy1 ON test.table1");
dropPolicy("DROP ROW POLICY test_row_policy2 ON test.table1");
dropPolicy("DROP ROW POLICY test_row_policy3 ON test.table1");
@@ -283,7 +283,7 @@ public class PolicyTest extends TestWithFeService {
createPolicy("CREATE ROW POLICY test_row_policy4 ON test.table1 AS
PERMISSIVE TO test_policy USING (k2 = 1)");
String queryStr = "EXPLAIN select * from test.table1";
String explainString = getSQLPlanOrErrorMsg(queryStr);
- Assertions.assertTrue(explainString.contains("k2[#1] IN (1, 2) AND
k1[#0] = 1"));
+ Assertions.assertTrue(explainString.contains("k2[#1] IN (1, 2) AND
(k1[#0] = 1)"));
dropPolicy("DROP ROW POLICY test_row_policy1 ON test.table1");
dropPolicy("DROP ROW POLICY test_row_policy3 ON test.table1");
dropPolicy("DROP ROW POLICY test_row_policy4 ON test.table1");
@@ -295,16 +295,16 @@ public class PolicyTest extends TestWithFeService {
createPolicy("CREATE ROW POLICY test_row_policy2 ON test.table1 AS
RESTRICTIVE TO test_policy USING (k2 = 1)");
String joinSql
= "select /*+ SET_VAR(enable_nereids_planner=false) */ * from
table1 join table2 on table1.k1=table2.k1";
-
Assertions.assertTrue(getSQLPlanOrErrorMsg(joinSql).contains("PREDICATES: `k1`
= 1 AND `k2` = 1"));
+ Assertions.assertTrue(getSQLPlanOrErrorMsg(joinSql).contains("(`k1` =
1) AND (`k2` = 1)"));
String unionSql
= "select /*+ SET_VAR(enable_nereids_planner=false) */ * from
table1 union select * from table2";
-
Assertions.assertTrue(getSQLPlanOrErrorMsg(unionSql).contains("PREDICATES: `k1`
= 1 AND `k2` = 1"));
+ Assertions.assertTrue(getSQLPlanOrErrorMsg(unionSql).contains("(`k1` =
1) AND (`k2` = 1)"));
String subQuerySql
= "select /*+ SET_VAR(enable_nereids_planner=false) */ * from
table2 where k1 in (select k1 from table1)";
-
Assertions.assertTrue(getSQLPlanOrErrorMsg(subQuerySql).contains("PREDICATES:
`k1` = 1 AND `k2` = 1"));
+
Assertions.assertTrue(getSQLPlanOrErrorMsg(subQuerySql).contains("(`k1` = 1)
AND (`k2` = 1)"));
String aliasSql
= "select /*+ SET_VAR(enable_nereids_planner=false) */ * from
table1 t1 join table2 t2 on t1.k1=t2.k1";
-
Assertions.assertTrue(getSQLPlanOrErrorMsg(aliasSql).contains("PREDICATES:
`t1`.`k1` = 1 AND `t1`.`k2` = 1"));
+
Assertions.assertTrue(getSQLPlanOrErrorMsg(aliasSql).contains("(`t1`.`k1` = 1)
AND (`t1`.`k2` = 1)"));
dropPolicy("DROP ROW POLICY test_row_policy1 ON test.table1");
dropPolicy("DROP ROW POLICY test_row_policy2 ON test.table1");
}
@@ -314,13 +314,13 @@ public class PolicyTest extends TestWithFeService {
createPolicy("CREATE ROW POLICY test_row_policy1 ON test.table1 AS
RESTRICTIVE TO test_policy USING (k1 = 1)");
createPolicy("CREATE ROW POLICY test_row_policy2 ON test.table1 AS
RESTRICTIVE TO test_policy USING (k2 = 1)");
String joinSql = "select * from table1 join table2 on
table1.k1=table2.k1";
-
Assertions.assertTrue(getSQLPlanOrErrorMsg(joinSql).contains("PREDICATES: k1 =
1 AND k2 = 1"));
+
Assertions.assertTrue(getSQLPlanOrErrorMsg(joinSql).contains("PREDICATES: (k1 =
1) AND (k2 = 1)"));
String unionSql = "select * from table1 union select * from table2";
-
Assertions.assertTrue(getSQLPlanOrErrorMsg(unionSql).contains("PREDICATES: k1 =
1 AND k2 = 1"));
+
Assertions.assertTrue(getSQLPlanOrErrorMsg(unionSql).contains("PREDICATES: (k1
= 1) AND (k2 = 1)"));
String subQuerySql = "select * from table2 where k1 in (select k1 from
table1)";
-
Assertions.assertTrue(getSQLPlanOrErrorMsg(subQuerySql).contains("PREDICATES:
k1 = 1 AND k2 = 1"));
+
Assertions.assertTrue(getSQLPlanOrErrorMsg(subQuerySql).contains("PREDICATES:
(k1 = 1) AND (k2 = 1)"));
String aliasSql = "select * from table1 t1 join table2 t2 on
t1.k1=t2.k1";
-
Assertions.assertTrue(getSQLPlanOrErrorMsg(aliasSql).contains("PREDICATES: k1 =
1 AND k2 = 1"));
+
Assertions.assertTrue(getSQLPlanOrErrorMsg(aliasSql).contains("PREDICATES: (k1
= 1) AND (k2 = 1)"));
dropPolicy("DROP ROW POLICY test_row_policy1 ON test.table1");
dropPolicy("DROP ROW POLICY test_row_policy2 ON test.table1");
}
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/qe/OlapQueryCacheTest.java
b/fe/fe-core/src/test/java/org/apache/doris/qe/OlapQueryCacheTest.java
index 2b0d7162fed..182596c3b63 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/qe/OlapQueryCacheTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/qe/OlapQueryCacheTest.java
@@ -671,7 +671,7 @@ public class OlapQueryCacheTest {
cache.rewriteSelectStmt(newRangeList);
sql = ca.getRewriteStmt().getWhereClause().toSql();
- Assert.assertEquals(sql, "`date` >= 20200114 AND `date` <=
20200115");
+ Assert.assertEquals(sql, "(`date` >= 20200114) AND (`date` <=
20200115)");
} catch (Exception e) {
LOG.warn("ex={}", e);
Assert.fail(e.getMessage());
@@ -713,7 +713,7 @@ public class OlapQueryCacheTest {
hitRange = range.buildDiskPartitionRange(newRangeList);
cache.rewriteSelectStmt(newRangeList);
sql = ca.getRewriteStmt().getWhereClause().toSql();
- Assert.assertEquals(sql, "`eventdate` >= '2020-01-14' AND
`eventdate` <= '2020-01-15'");
+ Assert.assertEquals(sql, "(`eventdate` >= '2020-01-14') AND
(`eventdate` <= '2020-01-15')");
} catch (Exception e) {
LOG.warn("ex={}", e);
Assert.fail(e.getMessage());
@@ -856,7 +856,7 @@ public class OlapQueryCacheTest {
cache.rewriteSelectStmt(newRangeList);
sql = ca.getRewriteStmt().getWhereClause().toSql();
- Assert.assertEquals(sql, "`eventdate` >= '2020-01-13' AND
`eventdate` <= '2020-01-15'");
+ Assert.assertEquals(sql, "(`eventdate` >= '2020-01-13') AND
(`eventdate` <= '2020-01-15')");
List<PartitionRange.PartitionSingle> updateRangeList =
range.buildUpdatePartitionRange();
Assert.assertEquals(updateRangeList.size(), 2);
@@ -886,7 +886,7 @@ public class OlapQueryCacheTest {
cache.rewriteSelectStmt(null);
LOG.warn("Nokey multi={}",
cache.getNokeyStmt().getWhereClause().toSql());
- Assert.assertEquals(cache.getNokeyStmt().getWhereClause().toSql(),
"`eventid` = 1");
+ Assert.assertEquals(cache.getNokeyStmt().getWhereClause().toSql(),
"(`eventid` = 1)");
PartitionRange range = cache.getPartitionRange();
boolean flag = range.analytics();
@@ -904,7 +904,7 @@ public class OlapQueryCacheTest {
cache.rewriteSelectStmt(newRangeList);
sql = ca.getRewriteStmt().getWhereClause().toSql();
LOG.warn("MultiPredicate={}", sql);
- Assert.assertEquals(sql, "`eventdate` > '2020-01-13' AND
`eventdate` < '2020-01-16' AND `eventid` = 1");
+ Assert.assertEquals(sql, "(`eventdate` > '2020-01-13') AND
(`eventdate` < '2020-01-16') AND (`eventid` = 1)");
} catch (Exception e) {
LOG.warn("multi ex={}", e);
Assert.fail(e.getMessage());
@@ -929,7 +929,7 @@ public class OlapQueryCacheTest {
PartitionCache cache = (PartitionCache) ca.getCache();
cache.rewriteSelectStmt(null);
LOG.warn("Join nokey={}",
cache.getNokeyStmt().getWhereClause().toSql());
- Assert.assertEquals(cache.getNokeyStmt().getWhereClause().toSql(),
"`eventid` = 1");
+ Assert.assertEquals(cache.getNokeyStmt().getWhereClause().toSql(),
"(`eventid` = 1)");
PartitionRange range = cache.getPartitionRange();
boolean flag = range.analytics();
@@ -947,8 +947,8 @@ public class OlapQueryCacheTest {
cache.rewriteSelectStmt(newRangeList);
sql = ca.getRewriteStmt().getWhereClause().toSql();
LOG.warn("Join rewrite={}", sql);
- Assert.assertEquals(sql, "`appevent`.`eventdate` >= '2020-01-14'"
- + " AND `appevent`.`eventdate` <= '2020-01-15' AND
`eventid` = 1");
+ Assert.assertEquals(sql, "(`appevent`.`eventdate` >= '2020-01-14')"
+ + " AND (`appevent`.`eventdate` <= '2020-01-15') AND
(`eventid` = 1)");
} catch (Exception e) {
LOG.warn("Join ex={}", e);
Assert.fail(e.getMessage());
@@ -976,7 +976,7 @@ public class OlapQueryCacheTest {
Assert.assertEquals(cache.getNokeyStmt().toSql(),
"SELECT <slot 7> `eventdate` AS `eventdate`, <slot 8>
sum(`pv`) AS `sum(``pv``)` "
+ "FROM (SELECT <slot 3> `eventdate` AS
`eventdate`, <slot 4> count(`userid`) AS `pv` "
- + "FROM `testDb`.`appevent` WHERE `eventid` = 1
GROUP BY `eventdate`) tbl "
+ + "FROM `testDb`.`appevent` WHERE (`eventid` = 1)
GROUP BY `eventdate`) tbl "
+ "GROUP BY `eventdate`");
PartitionRange range = cache.getPartitionRange();
@@ -998,8 +998,8 @@ public class OlapQueryCacheTest {
Assert.assertEquals(sql,
"SELECT <slot 7> `eventdate` AS `eventdate`, <slot 8>
sum(`pv`) AS `sum(``pv``)` "
+ "FROM (SELECT <slot 3> `eventdate` AS
`eventdate`, <slot 4> count(`userid`) AS `pv` "
- + "FROM `testDb`.`appevent` WHERE `eventdate` >
'2020-01-13' "
- + "AND `eventdate` < '2020-01-16' AND `eventid` =
1 GROUP BY `eventdate`) tbl "
+ + "FROM `testDb`.`appevent` WHERE (`eventdate` >
'2020-01-13') "
+ + "AND (`eventdate` < '2020-01-16') AND (`eventid`
= 1) GROUP BY `eventdate`) tbl "
+ "GROUP BY `eventdate`");
} catch (Exception e) {
LOG.warn("sub ex={}", e);
@@ -1051,8 +1051,8 @@ public class OlapQueryCacheTest {
SqlCache sqlCache = (SqlCache) ca.getCache();
String cacheKey = sqlCache.getSqlWithViewStmt();
Assert.assertEquals(cacheKey, "SELECT <slot 2> `eventdate` AS
`eventdate`, <slot 3> count(`userid`) "
- + "AS `count(``userid``)` FROM `testDb`.`appevent` WHERE
`eventdate` >= '2020-01-12' "
- + "AND `eventdate` <= '2020-01-14' GROUP BY `eventdate`|");
+ + "AS `count(``userid``)` FROM `testDb`.`appevent` WHERE
(`eventdate` >= '2020-01-12') "
+ + "AND (`eventdate` <= '2020-01-14') GROUP BY `eventdate`|");
Assert.assertEquals(selectedPartitionIds.size(),
sqlCache.getSumOfPartitionNum());
}
@@ -1090,8 +1090,8 @@ public class OlapQueryCacheTest {
Assert.assertEquals(cacheKey, "SELECT `testDb`.`view1`.`eventdate` AS
`eventdate`, "
+ "`testDb`.`view1`.`__count_1` AS `__count_1` FROM
`testDb`.`view1`|"
+ "SELECT `eventdate` AS `eventdate`, count(`userid`) AS
`__count_1` FROM "
- + "`testDb`.`appevent` WHERE `eventdate` >= '2020-01-12' AND "
- + "`eventdate` <= '2020-01-14' GROUP BY `eventdate`");
+ + "`testDb`.`appevent` WHERE (`eventdate` >= '2020-01-12') AND
"
+ + "(`eventdate` <= '2020-01-14') GROUP BY `eventdate`");
Assert.assertEquals(selectedPartitionIds.size(),
sqlCache.getSumOfPartitionNum());
}
@@ -1109,7 +1109,7 @@ public class OlapQueryCacheTest {
String cacheKey = sqlCache.getSqlWithViewStmt();
Assert.assertEquals(cacheKey, "SELECT * from testDb.view1|SELECT
`eventdate` AS `eventdate`, "
+ "count(`userid`) AS `__count_1` FROM `testDb`.`appevent` "
- + "WHERE `eventdate` >= '2020-01-12' AND `eventdate` <=
'2020-01-14' GROUP BY `eventdate`");
+ + "WHERE (`eventdate` >= '2020-01-12') AND (`eventdate` <=
'2020-01-14') GROUP BY `eventdate`");
Assert.assertEquals(selectedPartitionIds.size(),
sqlCache.getSumOfPartitionNum());
}
@@ -1135,7 +1135,7 @@ public class OlapQueryCacheTest {
Assert.assertEquals(cacheKey, "SELECT `origin`.`eventdate` AS
`eventdate`, "
+ "`origin`.`userid` AS `userid` FROM (SELECT
`view2`.`eventdate` AS `eventdate`, "
+ "`view2`.`userid` AS `userid` FROM `testDb`.`view2` view2 "
- + "WHERE `view2`.`eventdate` >= '2020-01-12' AND
`view2`.`eventdate` <= '2020-01-14') origin|"
+ + "WHERE (`view2`.`eventdate` >= '2020-01-12') AND
(`view2`.`eventdate` <= '2020-01-14')) origin|"
+ "SELECT `eventdate` AS `eventdate`, `userid` AS `userid`
FROM `testDb`.`appevent`");
Assert.assertEquals(selectedPartitionIds.size(),
sqlCache.getSumOfPartitionNum());
}
@@ -1187,8 +1187,8 @@ public class OlapQueryCacheTest {
Assert.assertEquals(cache.getSqlWithViewStmt(), "SELECT
`testDb`.`view3`.`eventdate` "
+ "AS `eventdate`, `testDb`.`view3`.`__count_1` AS
`__count_1` "
+ "FROM `testDb`.`view3`|SELECT `eventdate` AS
`eventdate`, count(`userid`) "
- + "AS `__count_1` FROM `testDb`.`appevent` WHERE
`eventdate` >= '2020-01-12' "
- + "AND `eventdate` <= '2020-01-15' GROUP BY `eventdate`");
+ + "AS `__count_1` FROM `testDb`.`appevent` WHERE
(`eventdate` >= '2020-01-12') "
+ + "AND (`eventdate` <= '2020-01-15') GROUP BY
`eventdate`");
} catch (Exception e) {
LOG.warn("ex={}", e);
Assert.fail(e.getMessage());
@@ -1243,7 +1243,7 @@ public class OlapQueryCacheTest {
Assert.assertEquals(cacheKey, "SELECT `testDb`.`view4`.`eventdate` AS
`eventdate`, "
+ "`testDb`.`view4`.`__count_1` AS `__count_1` FROM
`testDb`.`view4`|"
+ "SELECT `eventdate` AS `eventdate`, count(`userid`) AS
`__count_1` FROM `testDb`.`view2` "
- + "WHERE `eventdate` >= '2020-01-12' AND `eventdate` <=
'2020-01-14' GROUP BY `eventdate`|"
+ + "WHERE (`eventdate` >= '2020-01-12') AND (`eventdate` <=
'2020-01-14') GROUP BY `eventdate`|"
+ "SELECT `eventdate` AS `eventdate`, `userid` AS `userid`
FROM `testDb`.`appevent`");
Assert.assertEquals(selectedPartitionIds.size(),
sqlCache.getSumOfPartitionNum());
}
@@ -1261,8 +1261,8 @@ public class OlapQueryCacheTest {
SqlCache sqlCache = (SqlCache) ca.getCache();
String cacheKey = sqlCache.getSqlWithViewStmt();
Assert.assertEquals(cacheKey, "SELECT * from testDb.view4|SELECT
`eventdate` AS `eventdate`, "
- + "count(`userid`) AS `__count_1` FROM `testDb`.`view2` WHERE
`eventdate` >= '2020-01-12' "
- + "AND `eventdate` <= '2020-01-14' GROUP BY `eventdate`|SELECT
`eventdate` AS `eventdate`, "
+ + "count(`userid`) AS `__count_1` FROM `testDb`.`view2` WHERE
(`eventdate` >= '2020-01-12') "
+ + "AND (`eventdate` <= '2020-01-14') GROUP BY
`eventdate`|SELECT `eventdate` AS `eventdate`, "
+ "`userid` AS `userid` FROM `testDb`.`appevent`");
Assert.assertEquals(selectedPartitionIds.size(),
sqlCache.getSumOfPartitionNum());
}
@@ -1326,7 +1326,7 @@ public class OlapQueryCacheTest {
cache.rewriteSelectStmt(newRangeList);
sql = ca.getRewriteStmt().getWhereClause().toSql();
- Assert.assertEquals(sql, "`date` >= 20200114 AND `date` <=
20200115");
+ Assert.assertEquals(sql, "(`date` >= 20200114) AND (`date` <=
20200115)");
} catch (Exception e) {
LOG.warn("ex={}", e);
Assert.fail(e.getMessage());
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/rewrite/ExtractCommonFactorsRuleFunctionTest.java
b/fe/fe-core/src/test/java/org/apache/doris/rewrite/ExtractCommonFactorsRuleFunctionTest.java
index 1fcffc4fa5c..c2f31ab90a3 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/rewrite/ExtractCommonFactorsRuleFunctionTest.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/rewrite/ExtractCommonFactorsRuleFunctionTest.java
@@ -100,7 +100,7 @@ public class ExtractCommonFactorsRuleFunctionTest {
public void testWideCommonFactorsWithOrPredicate() throws Exception {
String query = "select /*+ SET_VAR(enable_nereids_planner=false) */ *
from tb1 where tb1.k1 > 1000 or tb1.k1 < 200 or tb1.k1 = 300";
String planString = dorisAssert.query(query).explainQuery();
- Assert.assertTrue(planString.contains("PREDICATES: `tb1`.`k1` = 300 OR
`tb1`.`k1` > 1000 OR `tb1`.`k1` < 200"));
+ Assert.assertTrue(planString.contains("(`tb1`.`k1` = 300) OR
(`tb1`.`k1` > 1000) OR (`tb1`.`k1` < 200)"));
}
@Test
@@ -259,8 +259,8 @@ public class ExtractCommonFactorsRuleFunctionTest {
Assert.assertTrue(planString.contains("`l_partkey` = `p_partkey`"));
Assert.assertTrue(planString.contains("`l_shipmode` IN ('AIR', 'AIR
REG')"));
Assert.assertTrue(planString.contains("`l_shipinstruct` = 'DELIVER IN
PERSON'"));
- Assert.assertTrue(planString.contains("`l_quantity` >= 9 AND
`l_quantity` <= 19 "
- + "OR `l_quantity` >= 20 AND `l_quantity` <= 36"));
+ Assert.assertTrue(planString.contains("(`l_quantity` >= 9) AND
(`l_quantity` <= 19) "
+ + "OR (`l_quantity` >= 20) AND (`l_quantity` <= 36)"));
Assert.assertTrue(planString.contains("`p_size` >= 1"));
Assert.assertTrue(planString.contains("`p_brand` IN ('Brand#11',
'Brand#21', 'Brand#32')"));
Assert.assertTrue(planString.contains("`p_size` <= 15"));
diff --git a/regression-test/data/ddl_p0/test_create_view.out
b/regression-test/data/ddl_p0/test_create_view.out
index 239fafc025e..7ee1123fd46 100644
--- a/regression-test/data/ddl_p0/test_create_view.out
+++ b/regression-test/data/ddl_p0/test_create_view.out
@@ -25,5 +25,5 @@
3 [-1, 20, 0] [0, 1, 0]
-- !test_view_6 --
-v1 CREATE VIEW `v1` COMMENT 'VIEW' AS SELECT `error_code` AS `error_code`,
1 AS `__literal_1`, 'string' AS `__literal_2`, now() AS `__now_3`,
dayofyear(`op_time`) AS `__dayofyear_4`, CAST(`source` AS BIGINT) AS
`__cast_expr_5`, min(`timestamp`) OVER (ORDER BY `op_time` DESC NULLS LAST ROWS
BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS `__min_6`, 1 > 2 AS
`__binary_predicate_7`, (2 + 3) AS `__arithmetic_expr_8`, 1 IN (1, 2, 3, 4) AS
`__in_predicate_9`, `remark` LIKE '%like' AS `__like_p [...]
+v1 CREATE VIEW `v1` COMMENT 'VIEW' AS SELECT `error_code` AS `error_code`,
1 AS `__literal_1`, 'string' AS `__literal_2`, now() AS `__now_3`,
dayofyear(`op_time`) AS `__dayofyear_4`, CAST(`source` AS BIGINT) AS
`__cast_expr_5`, min(`timestamp`) OVER (ORDER BY `op_time` DESC NULLS LAST ROWS
BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS `__min_6`, (1 > 2) AS
`__binary_predicate_7`, (2 + 3) AS `__arithmetic_expr_8`, 1 IN (1, 2, 3, 4) AS
`__in_predicate_9`, `remark` LIKE '%like' AS `__like [...]
diff --git
a/regression-test/data/mv_p0/ut/testAggQueryOnAggMV1/testAggQueryOnAggMV1.out
b/regression-test/data/mv_p0/ut/testAggQueryOnAggMV1/testAggQueryOnAggMV1.out
index e64409afb21..cd7da97e1a7 100644
---
a/regression-test/data/mv_p0/ut/testAggQueryOnAggMV1/testAggQueryOnAggMV1.out
+++
b/regression-test/data/mv_p0/ut/testAggQueryOnAggMV1/testAggQueryOnAggMV1.out
@@ -13,3 +13,13 @@
-- !select_mv --
7
+-- !select_mv --
+1 2
+2 1
+3 1
+
+-- !select_mv --
+1 2
+2 2
+3 3
+
diff --git a/regression-test/data/performance_p0/redundant_conjuncts.out
b/regression-test/data/performance_p0/redundant_conjuncts.out
index 9df35ef6b2d..e4cd154e44e 100644
--- a/regression-test/data/performance_p0/redundant_conjuncts.out
+++ b/regression-test/data/performance_p0/redundant_conjuncts.out
@@ -12,7 +12,7 @@ PLAN FRAGMENT 0
0:VOlapScanNode
TABLE:
regression_test_performance_p0.redundant_conjuncts(redundant_conjuncts),
PREAGGREGATION: OFF. Reason: No AggregateInfo
- PREDICATES: `k1` = 1
+ PREDICATES: (`k1` = 1)
partitions=0/1 (), tablets=0/0, tabletList=
cardinality=0, avgRowSize=8.0, numNodes=1
pushAggOp=NONE
@@ -30,7 +30,7 @@ PLAN FRAGMENT 0
0:VOlapScanNode
TABLE:
regression_test_performance_p0.redundant_conjuncts(redundant_conjuncts),
PREAGGREGATION: OFF. Reason: No AggregateInfo
- PREDICATES: `k1` = 1 OR `k1` = 2
+ PREDICATES: (`k1` = 1) OR (`k1` = 2)
partitions=0/1 (), tablets=0/0, tabletList=
cardinality=0, avgRowSize=8.0, numNodes=1
pushAggOp=NONE
diff --git a/regression-test/data/show_p0/test_show_create_table_and_views.out
b/regression-test/data/show_p0/test_show_create_table_and_views.out
index 95af034fcc4..2df41e35d23 100644
--- a/regression-test/data/show_p0/test_show_create_table_and_views.out
+++ b/regression-test/data/show_p0/test_show_create_table_and_views.out
@@ -24,7 +24,7 @@ show_create_table_and_views_table CREATE TABLE
`show_create_table_and_views_tabl
3 1
-- !show --
-show_create_table_and_views_view CREATE VIEW
`show_create_table_and_views_view` COMMENT 'VIEW' AS SELECT `user_id` AS
`user_id`, `cost` AS `cost` FROM
`show_create_table_and_views_db`.`show_create_table_and_views_table` WHERE
`good_id` = 2; utf8 utf8_general_ci
+show_create_table_and_views_view CREATE VIEW
`show_create_table_and_views_view` COMMENT 'VIEW' AS SELECT `user_id` AS
`user_id`, `cost` AS `cost` FROM
`show_create_table_and_views_db`.`show_create_table_and_views_table` WHERE
(`good_id` = 2); utf8 utf8_general_ci
-- !select --
1 47
diff --git
a/regression-test/suites/external_table_p0/jdbc/test_clickhouse_jdbc_catalog.groovy
b/regression-test/suites/external_table_p0/jdbc/test_clickhouse_jdbc_catalog.groovy
index 9948c49d24a..4b8aee3abe7 100644
---
a/regression-test/suites/external_table_p0/jdbc/test_clickhouse_jdbc_catalog.groovy
+++
b/regression-test/suites/external_table_p0/jdbc/test_clickhouse_jdbc_catalog.groovy
@@ -87,7 +87,7 @@ suite("test_clickhouse_jdbc_catalog",
"p0,external,clickhouse,external_docker,ex
order_qt_func_push """select * from ts where
from_unixtime(ts,'yyyyMMdd') >= '2022-01-01';"""
explain {
sql("select * from ts where from_unixtime(ts,'yyyyMMdd') >=
'2022-01-01';")
- contains """QUERY: SELECT "id", "ts" FROM "doris_test"."ts"
WHERE (FROM_UNIXTIME("ts", '%Y%m%d') >= '2022-01-01')"""
+ contains """QUERY: SELECT "id", "ts" FROM "doris_test"."ts"
WHERE ((FROM_UNIXTIME("ts", '%Y%m%d') >= '2022-01-01'))"""
}
explain {
sql("select * from ts where nvl(ts,null) >= '2022-01-01';")
@@ -96,7 +96,7 @@ suite("test_clickhouse_jdbc_catalog",
"p0,external,clickhouse,external_docker,ex
order_qt_func_push2 """select * from ts where ts <=
unix_timestamp(from_unixtime(ts,'yyyyMMdd'));"""
explain {
sql("select * from ts where ts <=
unix_timestamp(from_unixtime(ts,'yyyy-MM-dd'));")
- contains """QUERY: SELECT "id", "ts" FROM "doris_test"."ts"
WHERE ("ts" <= toUnixTimestamp(FROM_UNIXTIME("ts", '%Y-%m-%d')))"""
+ contains """QUERY: SELECT "id", "ts" FROM "doris_test"."ts"
WHERE (("ts" <= toUnixTimestamp(FROM_UNIXTIME("ts", '%Y-%m-%d'))))"""
}
order_qt_dt_with_tz """ select * from dt_with_tz order by id; """
diff --git
a/regression-test/suites/external_table_p0/jdbc/test_mysql_jdbc_catalog.groovy
b/regression-test/suites/external_table_p0/jdbc/test_mysql_jdbc_catalog.groovy
index 86afd749e56..3457ae2f6f8 100644
---
a/regression-test/suites/external_table_p0/jdbc/test_mysql_jdbc_catalog.groovy
+++
b/regression-test/suites/external_table_p0/jdbc/test_mysql_jdbc_catalog.groovy
@@ -407,18 +407,18 @@ suite("test_mysql_jdbc_catalog",
"p0,external,mysql,external_docker,external_doc
explain {
sql ("select k6, k8 from test1 where nvl(k6, null) = 1;")
- contains "QUERY: SELECT `k6`, `k8` FROM `doris_test`.`test1`
WHERE (ifnull(`k6`, NULL) = 1)"
+ contains "QUERY: SELECT `k6`, `k8` FROM `doris_test`.`test1`
WHERE ((ifnull(`k6`, NULL) = 1))"
}
explain {
sql ("select k6, k8 from test1 where nvl(nvl(k6, null),null) =
1;")
- contains "QUERY: SELECT `k6`, `k8` FROM `doris_test`.`test1`
WHERE (ifnull(ifnull(`k6`, NULL), NULL) = 1)"
+ contains "QUERY: SELECT `k6`, `k8` FROM `doris_test`.`test1`
WHERE ((ifnull(ifnull(`k6`, NULL), NULL) = 1))"
}
sql """ set enable_ext_func_pred_pushdown = "false"; """
explain {
sql ("select k6, k8 from test1 where nvl(k6, null) = 1 and k8
= 1;")
- contains "QUERY: SELECT `k6`, `k8` FROM `doris_test`.`test1`
WHERE (`k8` = 1)"
+ contains "QUERY: SELECT `k6`, `k8` FROM `doris_test`.`test1`
WHERE ((`k8` = 1))"
}
sql """ set enable_ext_func_pred_pushdown = "true"; """
} finally {
diff --git
a/regression-test/suites/external_table_p0/jdbc/test_mysql_jdbc_catalog_nereids.groovy
b/regression-test/suites/external_table_p0/jdbc/test_mysql_jdbc_catalog_nereids.groovy
index c63314b186f..24aac183eb8 100644
---
a/regression-test/suites/external_table_p0/jdbc/test_mysql_jdbc_catalog_nereids.groovy
+++
b/regression-test/suites/external_table_p0/jdbc/test_mysql_jdbc_catalog_nereids.groovy
@@ -82,7 +82,7 @@ suite("test_mysql_jdbc_catalog_nereids",
"p0,external,mysql,external_docker,exte
explain {
sql("""select id from ${ex_tb0} where id = 111;""")
- contains "WHERE (`id` = 111)"
+ contains "WHERE ((`id` = 111))"
}
qt_ex_tb0_where """select id from ${ex_tb0} where id = 111;"""
order_qt_ex_tb0 """ select id, name from ${ex_tb0} order by id; """
diff --git
a/regression-test/suites/external_table_p0/jdbc/test_oracle_jdbc_catalog.groovy
b/regression-test/suites/external_table_p0/jdbc/test_oracle_jdbc_catalog.groovy
index 75ce7175df5..59e4a506d81 100644
---
a/regression-test/suites/external_table_p0/jdbc/test_oracle_jdbc_catalog.groovy
+++
b/regression-test/suites/external_table_p0/jdbc/test_oracle_jdbc_catalog.groovy
@@ -137,7 +137,7 @@ suite("test_oracle_jdbc_catalog",
"p0,external,oracle,external_docker,external_d
// test nvl
explain {
sql("SELECT * FROM STUDENT WHERE nvl(score, 0) < 95;")
- contains """SELECT "ID", "NAME", "AGE", "SCORE" FROM
"DORIS_TEST"."STUDENT" WHERE (nvl("SCORE", 0.0) < 95.0)"""
+ contains """SELECT "ID", "NAME", "AGE", "SCORE" FROM
"DORIS_TEST"."STUDENT" WHERE ((nvl("SCORE", 0.0) < 95.0))"""
}
// for old planner
diff --git
a/regression-test/suites/mv_p0/ut/testAggQueryOnAggMV1/testAggQueryOnAggMV1.groovy
b/regression-test/suites/mv_p0/ut/testAggQueryOnAggMV1/testAggQueryOnAggMV1.groovy
index 044b92425ec..1b7bc10a39c 100644
---
a/regression-test/suites/mv_p0/ut/testAggQueryOnAggMV1/testAggQueryOnAggMV1.groovy
+++
b/regression-test/suites/mv_p0/ut/testAggQueryOnAggMV1/testAggQueryOnAggMV1.groovy
@@ -38,6 +38,8 @@ suite ("testAggQueryOnAggMV1") {
createMV("create materialized view emps_mv as select deptno, sum(salary),
max(commission) from emps group by deptno ;")
+ createMV("create materialized view emps_mv_count_key as select deptno,
count(deptno) from emps group by deptno;")
+ createMV("create materialized view emps_mv_if as select deptno,
sum(if(empid = 1, empid, salary)) from emps group by deptno;")
sql """insert into emps values("2020-01-01",1,"a",1,1,1);"""
@@ -59,4 +61,16 @@ suite ("testAggQueryOnAggMV1") {
contains "(emps_mv)"
}
qt_select_mv "select sum(salary) as salary from emps;"
+
+ explain {
+ sql("select deptno, count(deptno) from emps group by deptno order by
deptno;")
+ contains "(emps_mv_count_key)"
+ }
+ qt_select_mv "select deptno, count(deptno) from emps group by deptno order
by deptno;"
+
+ explain {
+ sql("select deptno, sum(if(empid = 1, empid, salary)) from emps group
by deptno;")
+ contains "(emps_mv_if)"
+ }
+ qt_select_mv "select deptno, sum(if(empid = 1, empid, salary)) from emps
group by deptno order by deptno;"
}
\ No newline at end of file
diff --git
a/regression-test/suites/nereids_p0/infer_predicate/infer_predicate.groovy
b/regression-test/suites/nereids_p0/infer_predicate/infer_predicate.groovy
index 55645ed8ea0..afa32371937 100644
--- a/regression-test/suites/nereids_p0/infer_predicate/infer_predicate.groovy
+++ b/regression-test/suites/nereids_p0/infer_predicate/infer_predicate.groovy
@@ -31,28 +31,28 @@ suite("test_infer_predicate") {
explain {
sql "select * from infer_tb1 inner join infer_tb2 where infer_tb2.k1 =
infer_tb1.k2 and infer_tb2.k1 = 1;"
- contains "PREDICATES: k2"
+ contains "PREDICATES: (k2"
}
explain {
sql "select * from infer_tb1 inner join infer_tb2 where infer_tb1.k2 =
infer_tb2.k1 and infer_tb2.k1 = 1;"
- contains "PREDICATES: k2"
+ contains "PREDICATES: (k2"
}
explain {
sql "select * from infer_tb1 inner join infer_tb2 where
cast(infer_tb2.k4 as int) = infer_tb1.k2 and infer_tb2.k4 = 1;"
- contains "PREDICATES: CAST(k2"
+ contains "PREDICATES: (CAST(k2"
}
explain {
sql "select * from infer_tb1 inner join infer_tb3 where infer_tb3.k1 =
infer_tb1.k2 and infer_tb3.k1 = '123';"
- notContains "PREDICATES: k2"
+ notContains "PREDICATES: (k2"
}
explain {
sql "select * from infer_tb1 left join infer_tb2 on infer_tb1.k1 =
infer_tb2.k3 left join infer_tb3 on " +
"infer_tb2.k3 = infer_tb3.k2 where infer_tb1.k1 = 1;"
- contains "PREDICATES: k3"
- contains "PREDICATES: k2"
+ contains "PREDICATES: (k3"
+ contains "PREDICATES: (k2"
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]