[Feat](nereids)when dealing insert into stmt with empty table source, fe returns directly (#35333)

* [Feat](nereids) when dealing insert into stmt with empty table source, fe returns directly (#34418)

When a LogicalOlapScan has no partitions, transform it to a LogicalEmptyRelation.
When dealing insert into stmt with empty table source, fe returns directly.

* [Fix](nereids) fix when insert into select empty table

---------

Co-authored-by: feiniaofeiafei <moailing@selectdb.com>
This commit is contained in:
feiniaofeiafei
2024-05-24 16:25:00 +08:00
committed by GitHub
parent bfe293c725
commit 1e07971a98
774 changed files with 1445 additions and 176 deletions

View File

@ -20,7 +20,11 @@ package org.apache.doris.nereids.rules.rewrite;
import org.apache.doris.catalog.OlapTable;
import org.apache.doris.nereids.rules.Rule;
import org.apache.doris.nereids.rules.RuleType;
import org.apache.doris.nereids.trees.plans.logical.LogicalEmptyRelation;
import org.apache.doris.nereids.trees.plans.logical.LogicalOlapScan;
import org.apache.doris.qe.ConnectContext;
import java.util.List;
/**
* Used to prune empty partition.
@ -32,7 +36,12 @@ public class PruneEmptyPartition extends OneRewriteRuleFactory {
return logicalOlapScan().thenApply(ctx -> {
LogicalOlapScan scan = ctx.root;
OlapTable table = scan.getTable();
return scan.withSelectedPartitionIds(table.selectNonEmptyPartitionIds(scan.getSelectedPartitionIds()));
List<Long> ids = table.selectNonEmptyPartitionIds(scan.getSelectedPartitionIds());
if (ids.isEmpty()) {
return new LogicalEmptyRelation(ConnectContext.get().getStatementContext().getNextRelationId(),
scan.getOutput());
}
return scan.withSelectedPartitionIds(ids);
}).toRule(RuleType.PRUNE_EMPTY_PARTITION);
}
}

View File

@ -86,7 +86,7 @@ import java.util.stream.Collectors;
*/
public class CreateMTMVInfo {
public static final Logger LOG = LogManager.getLogger(CreateMTMVInfo.class);
public static final String MTMV_PLANER_DISABLE_RULES = "OLAP_SCAN_PARTITION_PRUNE";
public static final String MTMV_PLANER_DISABLE_RULES = "OLAP_SCAN_PARTITION_PRUNE,PRUNE_EMPTY_PARTITION";
private final boolean ifNotExists;
private final TableNameInfo mvName;
private List<String> keys;

View File

@ -58,18 +58,20 @@ public abstract class AbstractInsertExecutor {
protected String errMsg = "";
protected Optional<InsertCommandContext> insertCtx;
protected final boolean emptyInsert;
/**
* Constructor
*/
public AbstractInsertExecutor(ConnectContext ctx, TableIf table, String labelName, NereidsPlanner planner,
Optional<InsertCommandContext> insertCtx) {
Optional<InsertCommandContext> insertCtx, boolean emptyInsert) {
this.ctx = ctx;
this.coordinator = new Coordinator(ctx, null, planner, ctx.getStatsErrorEstimator());
this.labelName = labelName;
this.table = table;
this.database = table.getDatabase();
this.insertCtx = insertCtx;
this.emptyInsert = emptyInsert;
}
public Coordinator getCoordinator() {
@ -189,4 +191,8 @@ public abstract class AbstractInsertExecutor {
}
afterExec(executor);
}
public boolean isEmptyInsert() {
return emptyInsert;
}
}

View File

@ -59,8 +59,9 @@ public abstract class BaseExternalTableInsertExecutor extends AbstractInsertExec
*/
public BaseExternalTableInsertExecutor(ConnectContext ctx, ExternalTable table,
String labelName, NereidsPlanner planner,
Optional<InsertCommandContext> insertCtx) {
super(ctx, table, labelName, planner, insertCtx);
Optional<InsertCommandContext> insertCtx,
boolean emptyInsert) {
super(ctx, table, labelName, planner, insertCtx, emptyInsert);
catalogName = table.getCatalog().getName();
transactionManager = table.getCatalog().getTransactionManager();

View File

@ -43,8 +43,8 @@ public class HiveInsertExecutor extends BaseExternalTableInsertExecutor {
*/
public HiveInsertExecutor(ConnectContext ctx, HMSExternalTable table,
String labelName, NereidsPlanner planner,
Optional<InsertCommandContext> insertCtx) {
super(ctx, table, labelName, planner, insertCtx);
Optional<InsertCommandContext> insertCtx, boolean emptyInsert) {
super(ctx, table, labelName, planner, insertCtx, emptyInsert);
}
@Override

View File

@ -40,8 +40,9 @@ public class IcebergInsertExecutor extends BaseExternalTableInsertExecutor {
*/
public IcebergInsertExecutor(ConnectContext ctx, IcebergExternalTable table,
String labelName, NereidsPlanner planner,
Optional<InsertCommandContext> insertCtx) {
super(ctx, table, labelName, planner, insertCtx);
Optional<InsertCommandContext> insertCtx,
boolean emptyInsert) {
super(ctx, table, labelName, planner, insertCtx, emptyInsert);
}
@Override

View File

@ -37,6 +37,7 @@ import org.apache.doris.nereids.trees.plans.PlanType;
import org.apache.doris.nereids.trees.plans.commands.Command;
import org.apache.doris.nereids.trees.plans.commands.ForwardWithSync;
import org.apache.doris.nereids.trees.plans.logical.LogicalPlan;
import org.apache.doris.nereids.trees.plans.physical.PhysicalEmptyRelation;
import org.apache.doris.nereids.trees.plans.physical.PhysicalHiveTableSink;
import org.apache.doris.nereids.trees.plans.physical.PhysicalIcebergTableSink;
import org.apache.doris.nereids.trees.plans.physical.PhysicalOlapTableSink;
@ -165,9 +166,11 @@ public class InsertIntoTableCommand extends Command implements ForwardWithSync,
// return;
throw new AnalysisException("group commit is not supported in Nereids now");
}
boolean emptyInsert = childIsEmptyRelation(physicalSink);
OlapTable olapTable = (OlapTable) targetTableIf;
// the insertCtx contains some variables to adjust SinkNode
insertExecutor = new OlapInsertExecutor(ctx, olapTable, label, planner, insertCtx);
insertExecutor = new OlapInsertExecutor(ctx, olapTable, label, planner, insertCtx, emptyInsert);
boolean isEnableMemtableOnSinkNode =
olapTable.getTableProperty().getUseSchemaLightChange()
? insertExecutor.getCoordinator().getQueryOptions().isEnableMemtableOnSinkNode()
@ -175,14 +178,16 @@ public class InsertIntoTableCommand extends Command implements ForwardWithSync,
insertExecutor.getCoordinator().getQueryOptions()
.setEnableMemtableOnSinkNode(isEnableMemtableOnSinkNode);
} else if (physicalSink instanceof PhysicalHiveTableSink) {
boolean emptyInsert = childIsEmptyRelation(physicalSink);
HMSExternalTable hiveExternalTable = (HMSExternalTable) targetTableIf;
insertExecutor = new HiveInsertExecutor(ctx, hiveExternalTable, label, planner,
Optional.of(insertCtx.orElse((new HiveInsertCommandContext()))));
Optional.of(insertCtx.orElse((new HiveInsertCommandContext()))), emptyInsert);
// set hive query options
} else if (physicalSink instanceof PhysicalIcebergTableSink) {
boolean emptyInsert = childIsEmptyRelation(physicalSink);
IcebergExternalTable icebergExternalTable = (IcebergExternalTable) targetTableIf;
insertExecutor = new IcebergInsertExecutor(ctx, icebergExternalTable, label, planner,
Optional.of(insertCtx.orElse((new BaseExternalTableInsertCommandContext()))));
Optional.of(insertCtx.orElse((new BaseExternalTableInsertCommandContext()))), emptyInsert);
} else {
// TODO: support other table types
throw new AnalysisException("insert into command only support [olap, hive, iceberg] table");
@ -203,6 +208,10 @@ public class InsertIntoTableCommand extends Command implements ForwardWithSync,
private void runInternal(ConnectContext ctx, StmtExecutor executor) throws Exception {
AbstractInsertExecutor insertExecutor = initPlan(ctx, executor);
// if the insert stmt data source is empty, directly return, no need to be executed.
if (insertExecutor.isEmptyInsert()) {
return;
}
insertExecutor.executeSingleInsert(executor, jobId);
}
@ -219,4 +228,12 @@ public class InsertIntoTableCommand extends Command implements ForwardWithSync,
public <R, C> R accept(PlanVisitor<R, C> visitor, C context) {
return visitor.visitInsertIntoTableCommand(this, context);
}
private boolean childIsEmptyRelation(PhysicalSink sink) {
if (sink.children() != null && sink.children().size() == 1
&& sink.child(0) instanceof PhysicalEmptyRelation) {
return true;
}
return false;
}
}

View File

@ -76,8 +76,8 @@ public class OlapInsertExecutor extends AbstractInsertExecutor {
* constructor
*/
public OlapInsertExecutor(ConnectContext ctx, Table table,
String labelName, NereidsPlanner planner, Optional<InsertCommandContext> insertCtx) {
super(ctx, table, labelName, planner, insertCtx);
String labelName, NereidsPlanner planner, Optional<InsertCommandContext> insertCtx, boolean emptyInsert) {
super(ctx, table, labelName, planner, insertCtx, emptyInsert);
}
public long getTxnId() {

View File

@ -525,7 +525,7 @@ public class SelectStmtTest {
@Test
public void testDeleteSign() throws Exception {
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 sql1 = "SELECT /*+ SET_VAR(enable_nereids_planner=true, ENABLE_FALLBACK_TO_ORIGINAL_PLANNER=false, DISABLE_NEREIDS_RULES=PRUNE_EMPTY_PARTITION) */ * 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("__DORIS_DELETE_SIGN__ = 0"));

View File

@ -45,6 +45,7 @@ public class CreateViewTest {
UtFrameUtils.createDorisCluster(runningDir);
// create connect context
connectContext = UtFrameUtils.createDefaultCtx();
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
// create database
String createDbStmtStr = "create database test;";
CreateDbStmt createDbStmt = (CreateDbStmt) UtFrameUtils.parseAndAnalyzeStmt(createDbStmtStr, connectContext);

View File

@ -44,6 +44,7 @@ class DistributeHintTest extends TestWithFeService implements MemoPatternMatchSu
protected void runBeforeAll() throws Exception {
createDatabase("test");
useDatabase("test");
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
createTable("CREATE TABLE `t1` (\n"
+ " `a` int(11) NULL,\n"

View File

@ -43,6 +43,7 @@ import java.util.List;
class CompareOuterJoinTest extends SqlTestBase {
@Test
void testStarGraphWithInnerJoin() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
// t2
// |
//t3-- t1 -- t4
@ -72,6 +73,7 @@ class CompareOuterJoinTest extends SqlTestBase {
@Test
void testRandomQuery() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
Plan p1 = new HyperGraphBuilder(Sets.newHashSet(JoinType.INNER_JOIN))
.randomBuildPlanWith(3, 3);
p1 = PlanChecker.from(connectContext, p1)
@ -91,7 +93,7 @@ class CompareOuterJoinTest extends SqlTestBase {
@Test
void testInnerJoinWithFilter() {
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES");
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES,PRUNE_EMPTY_PARTITION");
CascadesContext c1 = createCascadesContext(
"select * from T1 inner join T2 on T1.id = T2.id where T1.id = 0",
connectContext
@ -118,7 +120,7 @@ class CompareOuterJoinTest extends SqlTestBase {
@Test
void testInnerJoinWithFilter2() {
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES");
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES,PRUNE_EMPTY_PARTITION");
CascadesContext c1 = createCascadesContext(
"select * from T1 inner join T2 on T1.id = T2.id where T1.id = 0",
connectContext
@ -144,12 +146,11 @@ class CompareOuterJoinTest extends SqlTestBase {
@Test
void testLeftOuterJoinWithLeftFilter() {
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES");
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES,PRUNE_EMPTY_PARTITION");
CascadesContext c1 = createCascadesContext(
"select * from ( select * from T1 where T1.id = 0) T1 left outer join T2 on T1.id = T2.id",
connectContext
);
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES");
Plan p1 = PlanChecker.from(c1)
.analyze()
.rewrite()
@ -172,12 +173,11 @@ class CompareOuterJoinTest extends SqlTestBase {
@Test
void testLeftOuterJoinWithRightFilter() {
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES");
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES,PRUNE_EMPTY_PARTITION");
CascadesContext c1 = createCascadesContext(
"select * from T1 left outer join ( select * from T2 where T2.id = 0) T2 on T1.id = T2.id",
connectContext
);
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES");
Plan p1 = PlanChecker.from(c1)
.analyze()
.rewrite()

View File

@ -41,7 +41,7 @@ import java.util.stream.Collectors;
class InferJoinTest extends SqlTestBase {
@Test
void testInnerInferLeft() {
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES");
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES,PRUNE_EMPTY_PARTITION");
CascadesContext c1 = createCascadesContext(
"select * from T1 inner join T2 on T1.id = T2.id where T1.id = 0",
connectContext
@ -70,7 +70,7 @@ class InferJoinTest extends SqlTestBase {
@Test
void testInnerInferLeftWithFilter() {
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES");
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES,PRUNE_EMPTY_PARTITION");
CascadesContext c1 = createCascadesContext(
"select * from T1 inner join T2 on T1.id = T2.id where T1.id = 0",
connectContext
@ -103,7 +103,7 @@ class InferJoinTest extends SqlTestBase {
@Disabled
@Test
void testInnerInferLeftWithJoinCond() {
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES");
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES,PRUNE_EMPTY_PARTITION");
CascadesContext c1 = createCascadesContext(
"select * from T1 inner join "
+ "(select T2.id from T2 inner join T3 on T2.id = T3.id) T2 "
@ -137,12 +137,11 @@ class InferJoinTest extends SqlTestBase {
@Test
void testLeftOuterJoinWithRightFilter() {
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES");
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES,PRUNE_EMPTY_PARTITION");
CascadesContext c1 = createCascadesContext(
"select * from T1 left outer join ( select * from T2 where T2.id = 0) T2 on T1.id = T2.id",
connectContext
);
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES");
Plan p1 = PlanChecker.from(c1)
.analyze()
.rewrite()

View File

@ -38,6 +38,7 @@ import java.util.BitSet;
class InferPredicateTest extends SqlTestBase {
@Test
void testPullUpQueryFilter() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
CascadesContext c1 = createCascadesContext(
"select * from T1 left join T2 on T1.id = T2.id where T1.id = 1",
connectContext

View File

@ -38,6 +38,7 @@ import java.util.BitSet;
class PullupExpressionTest extends SqlTestBase {
@Test
void testPullUpQueryFilter() {
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES,PRUNE_EMPTY_PARTITION");
CascadesContext c1 = createCascadesContext(
"select * from T1 join T2 on T1.id = T2.id where T1.id = 1",
connectContext
@ -64,6 +65,7 @@ class PullupExpressionTest extends SqlTestBase {
@Test
void testPullUpQueryJoinCondition() {
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES,PRUNE_EMPTY_PARTITION");
CascadesContext c1 = createCascadesContext(
"select * from T1 join T2 on T1.id = T2.id and T1.score = T2.score",
connectContext
@ -90,6 +92,7 @@ class PullupExpressionTest extends SqlTestBase {
@Test
void testPullUpViewFilter() {
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES,PRUNE_EMPTY_PARTITION");
CascadesContext c1 = createCascadesContext(
"select * from T1 join T2 on T1.id = T2.id",
connectContext
@ -117,6 +120,7 @@ class PullupExpressionTest extends SqlTestBase {
@Test
void testPullUpViewJoinCondition() {
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES,PRUNE_EMPTY_PARTITION");
CascadesContext c1 = createCascadesContext(
"select * from T1 join T2 on T1.id = T2.id ",
connectContext

View File

@ -24,6 +24,7 @@ import org.apache.doris.nereids.rules.exploration.mv.StructInfo;
import org.apache.doris.nereids.sqltest.SqlTestBase;
import org.apache.doris.nereids.util.PlanChecker;
import org.apache.doris.qe.ConnectContext;
import org.apache.doris.qe.SessionVariable;
import mockit.Mock;
import mockit.MockUp;
@ -37,6 +38,14 @@ import java.util.stream.Collectors;
class StructInfoMapTest extends SqlTestBase {
@Test
void testTableMap() throws Exception {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
BitSet disableNereidsRules = connectContext.getSessionVariable().getDisableNereidsRules();
new MockUp<SessionVariable>() {
@Mock
public BitSet getDisableNereidsRules() {
return disableNereidsRules;
}
};
CascadesContext c1 = createCascadesContext(
"select T1.id from T1 inner join T2 "
+ "on T1.id = T2.id "
@ -60,6 +69,7 @@ class StructInfoMapTest extends SqlTestBase {
};
connectContext.getSessionVariable().enableMaterializedViewRewrite = true;
connectContext.getSessionVariable().enableMaterializedViewNestRewrite = true;
createMvByNereids("create materialized view mv1 BUILD IMMEDIATE REFRESH COMPLETE ON MANUAL\n"
+ " DISTRIBUTED BY RANDOM BUCKETS 1\n"
+ " PROPERTIES ('replication_num' = '1') \n"
@ -85,6 +95,14 @@ class StructInfoMapTest extends SqlTestBase {
@Test
void testLazyRefresh() throws Exception {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
BitSet disableNereidsRules = connectContext.getSessionVariable().getDisableNereidsRules();
new MockUp<SessionVariable>() {
@Mock
public BitSet getDisableNereidsRules() {
return disableNereidsRules;
}
};
CascadesContext c1 = createCascadesContext(
"select T1.id from T1 inner join T2 "
+ "on T1.id = T2.id "
@ -135,6 +153,14 @@ class StructInfoMapTest extends SqlTestBase {
@Test
void testTableChild() throws Exception {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
BitSet disableNereidsRules = connectContext.getSessionVariable().getDisableNereidsRules();
new MockUp<SessionVariable>() {
@Mock
public BitSet getDisableNereidsRules() {
return disableNereidsRules;
}
};
CascadesContext c1 = createCascadesContext(
"select T1.id from T1 inner join T2 "
+ "on T1.id = T2.id "

View File

@ -51,6 +51,7 @@ class EqualSetTest extends TestWithFeService {
+ "distributed by hash(id) buckets 10\n"
+ "properties('replication_num' = '1');");
connectContext.setDatabase("test");
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
}
@Test

View File

@ -53,6 +53,7 @@ class FunctionalDependenciesTest extends TestWithFeService {
+ "distributed by hash(id) buckets 10\n"
+ "properties('replication_num' = '1');");
connectContext.setDatabase("test");
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
}
@Test

View File

@ -49,6 +49,7 @@ class UniformTest extends TestWithFeService {
+ "distributed by hash(id) buckets 10\n"
+ "properties('replication_num' = '1');");
connectContext.setDatabase("test");
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
}
@Test

View File

@ -49,6 +49,7 @@ class UniqueTest extends TestWithFeService {
+ "distributed by hash(id) buckets 10\n"
+ "properties('replication_num' = '1');");
connectContext.setDatabase("test");
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
}
@Test

View File

@ -94,6 +94,7 @@ public class AnalyzeWhereSubqueryTest extends TestWithFeService implements MemoP
protected void runBeforeAll() throws Exception {
createDatabase("test");
connectContext.setDatabase("test");
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
createTables(
"create table test.t6\n"

View File

@ -35,6 +35,7 @@ public class BindFunctionTest extends TestWithFeService implements MemoPatternMa
protected void runBeforeAll() throws Exception {
createDatabase("test");
connectContext.setDatabase("test");
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
createTables(
"CREATE TABLE t1 (col1 date, col2 int) DISTRIBUTED BY HASH(col2)\n" + "BUCKETS 1\n" + "PROPERTIES(\n"
+ " \"replication_num\"=\"1\"\n" + ");",

View File

@ -54,6 +54,7 @@ class BindRelationTest extends TestWithFeService implements GeneratedPlanPattern
+ ")ENGINE=OLAP\n"
+ "DISTRIBUTED BY HASH(`a`) BUCKETS 3\n"
+ "PROPERTIES (\"replication_num\"= \"1\");");
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
}
@Test

View File

@ -28,6 +28,7 @@ import org.junit.jupiter.api.Test;
class BuildStructInfoTest extends SqlTestBase {
@Test
void testSimpleSQL() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
String sql = "select * from T1, T2, T3, T4 "
+ "where "
+ "T1.id = T2.id and "
@ -47,6 +48,7 @@ class BuildStructInfoTest extends SqlTestBase {
@Test
void testStructInfoNode() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
String sql = "select * from T1 inner join "
+ "(select sum(id) as id from T2 where id = 1) T2 "
+ "on T1.id = T2.id";
@ -67,6 +69,7 @@ class BuildStructInfoTest extends SqlTestBase {
@Test
void testFilter() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
String sql = "select * from T1 left outer join "
+ " (select id from T2 where id = 1) T2 "
+ "on T1.id = T2.id ";

View File

@ -35,7 +35,7 @@ import java.util.BitSet;
class EliminateJoinTest extends SqlTestBase {
@Test
void testLOJWithGroupBy() {
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES");
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES,PRUNE_EMPTY_PARTITION");
CascadesContext c1 = createCascadesContext(
"select * from T1",
connectContext
@ -75,7 +75,7 @@ class EliminateJoinTest extends SqlTestBase {
@Test
void testLOJWithUK() throws Exception {
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES");
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES,PRUNE_EMPTY_PARTITION");
CascadesContext c1 = createCascadesContext(
"select * from T1",
connectContext
@ -105,7 +105,7 @@ class EliminateJoinTest extends SqlTestBase {
@Test
void testLOJWithPKFK() throws Exception {
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES");
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES,PRUNE_EMPTY_PARTITION");
CascadesContext c1 = createCascadesContext(
"select * from T1",
connectContext
@ -149,7 +149,7 @@ class EliminateJoinTest extends SqlTestBase {
@Disabled
@Test
void testLOJWithPKFKAndUK1() throws Exception {
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES");
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES,PRUNE_EMPTY_PARTITION");
CascadesContext c1 = createCascadesContext(
"select * from T1",
connectContext
@ -182,7 +182,7 @@ class EliminateJoinTest extends SqlTestBase {
@Test
void testLOJWithPKFKAndUK2() throws Exception {
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES");
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES,PRUNE_EMPTY_PARTITION");
CascadesContext c1 = createCascadesContext(
"select * from T1",
connectContext

View File

@ -37,6 +37,7 @@ import java.util.Objects;
class HyperGraphAggTest extends SqlTestBase {
@Test
void testJoinWithAgg() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
CascadesContext c2 = createCascadesContext(
"select * from T1 inner join"
+ "("

View File

@ -35,7 +35,7 @@ import java.util.BitSet;
class HyperGraphComparatorTest extends SqlTestBase {
@Test
void testInnerJoinAndLOJ() {
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES");
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES,PRUNE_EMPTY_PARTITION");
CascadesContext c1 = createCascadesContext(
"select * from T1 inner join T2 "
+ "on T1.id = T2.id "
@ -66,7 +66,7 @@ class HyperGraphComparatorTest extends SqlTestBase {
@Test
void testIJAndLojAssoc() {
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES");
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES,PRUNE_EMPTY_PARTITION");
CascadesContext c1 = createCascadesContext(
"select * from T1 inner join T3 "
+ "on T1.id = T3.id "
@ -97,7 +97,7 @@ class HyperGraphComparatorTest extends SqlTestBase {
@Test
void testIJAndLojAssocWithFilter() {
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES");
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES,PRUNE_EMPTY_PARTITION");
CascadesContext c1 = createCascadesContext(
"select * from T1 inner join T3 "
+ "on T1.id = T3.id "
@ -130,7 +130,7 @@ class HyperGraphComparatorTest extends SqlTestBase {
@Disabled
@Test
void testIJAndLojAssocWithJoinCond() {
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES");
connectContext.getSessionVariable().setDisableNereidsRules("INFER_PREDICATES,PRUNE_EMPTY_PARTITION");
CascadesContext c1 = createCascadesContext(
"select * from T1 inner join T3 "
+ "on T1.id = T3.id "

View File

@ -201,7 +201,7 @@ public class MaterializedViewUtilsTest extends TestWithFeService {
+ " );\n"
+ "\n");
// Should not make scan to empty relation when the table used by materialized view has no data
connectContext.getSessionVariable().setDisableNereidsRules("OLAP_SCAN_PARTITION_PRUNE");
connectContext.getSessionVariable().setDisableNereidsRules("OLAP_SCAN_PARTITION_PRUNE,PRUNE_EMPTY_PARTITION");
}
@Test

View File

@ -33,6 +33,7 @@ class SimplifyComparisonPredicateSqlTest extends TestWithFeService implements Me
protected void runBeforeAll() throws Exception {
createDatabase("test");
connectContext.setDatabase("test");
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
createTables(
"CREATE TABLE IF NOT EXISTS `log_items_test` (\n"
+ " a DATETIME(0) NOT NULL,\n"

View File

@ -37,6 +37,7 @@ class CountLiteralRewriteTest extends TestWithFeService implements MemoPatternMa
+ "age int, sex int)\n" + "distributed by hash(id) buckets 10\n"
+ "properties('replication_num' = '1');");
connectContext.setDatabase("test");
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
}
@Test

View File

@ -54,6 +54,7 @@ class EliminateJoinByFkTest extends TestWithFeService implements MemoPatternMatc
+ "references pri(id1)");
addConstraint("Alter table foreign_null add constraint f_not_null foreign key (id3)\n"
+ "references pri(id1)");
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
}
@Test

View File

@ -28,6 +28,7 @@ class EliminateJoinByUniqueTest extends TestWithFeService implements MemoPattern
protected void runBeforeAll() throws Exception {
createDatabase("test");
connectContext.setDatabase("default_cluster:test");
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
createTables(
"CREATE TABLE IF NOT EXISTS t1 (\n"
+ " id1 int not null,\n"

View File

@ -74,6 +74,7 @@ class InferPredicatesTest extends TestWithFeService implements MemoPatternMatchS
+ "properties('replication_num' = '1');");
connectContext.setDatabase("test");
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
}
@Test

View File

@ -39,6 +39,7 @@ class PushDownLimitDistinctThroughJoinTest extends TestWithFeService implements
createDatabase("test");
connectContext.setDatabase("test");
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
createTable("CREATE TABLE `t1` (\n"
+ " `k1` int(11) NULL,\n"

View File

@ -72,6 +72,7 @@ class PushDownLimitTest extends TestWithFeService implements MemoPatternMatchSup
createDatabase("test");
connectContext.setDatabase("test");
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
createTable("CREATE TABLE `t1` (\n"
+ " `k1` int(11) NULL,\n"
@ -267,6 +268,7 @@ class PushDownLimitTest extends TestWithFeService implements MemoPatternMatchSup
void testLimitPushWindow() {
ConnectContext context = MemoTestUtils.createConnectContext();
context.getSessionVariable().setEnablePartitionTopN(true);
context.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
NamedExpression grade = scanScore.getOutput().get(2).toSlot();
List<Expression> partitionKeyList = ImmutableList.of();
@ -309,6 +311,7 @@ class PushDownLimitTest extends TestWithFeService implements MemoPatternMatchSup
void testTopNPushWindow() {
ConnectContext context = MemoTestUtils.createConnectContext();
context.getSessionVariable().setEnablePartitionTopN(true);
context.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
NamedExpression grade = scanScore.getOutput().get(2).toSlot();
List<Expression> partitionKeyList = ImmutableList.of();

View File

@ -45,6 +45,7 @@ class PushDownTopNThroughJoinTest extends TestWithFeService implements MemoPatte
createDatabase("test");
connectContext.setDatabase("test");
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
createTable("CREATE TABLE `t1` (\n"
+ " `k1` int(11) NOT NULL,\n"

View File

@ -27,6 +27,7 @@ import org.apache.doris.nereids.util.MemoPatternMatchSupported;
import org.apache.doris.nereids.util.MemoTestUtils;
import org.apache.doris.nereids.util.PlanChecker;
import org.apache.doris.nereids.util.PlanConstructor;
import org.apache.doris.qe.ConnectContext;
import com.google.common.collect.ImmutableList;
import org.junit.jupiter.api.Test;
@ -92,8 +93,9 @@ class ReorderJoinTest implements MemoPatternMatchSupported {
.join(scan2, JoinType.LEFT_SEMI_JOIN, Pair.of(0, 0))
.filter(new EqualTo(scan3.getOutput().get(0), scan1.getOutput().get(0)))
.build();
PlanChecker.from(MemoTestUtils.createConnectContext(), plan2)
ConnectContext connectContext = MemoTestUtils.createConnectContext();
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
PlanChecker.from(connectContext, plan2)
.rewrite()
.matchesFromRoot(
logicalJoin(
@ -121,7 +123,9 @@ class ReorderJoinTest implements MemoPatternMatchSupported {
)
.filter(new EqualTo(scan3.getOutput().get(0), scan1.getOutput().get(0)))
.build();
PlanChecker.from(MemoTestUtils.createConnectContext(), plan2)
ConnectContext connectContext = MemoTestUtils.createConnectContext();
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
PlanChecker.from(connectContext, plan2)
.applyBottomUp(new SemiJoinCommute())
.rewrite()
.matchesFromRoot(
@ -167,7 +171,9 @@ class ReorderJoinTest implements MemoPatternMatchSupported {
);
for (LogicalPlan plan : plans) {
PlanChecker.from(MemoTestUtils.createConnectContext(), plan)
ConnectContext connectContext = MemoTestUtils.createConnectContext();
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
PlanChecker.from(connectContext, plan)
.applyBottomUp(new ReorderJoin())
.matchesFromRoot(
logicalJoin(
@ -180,7 +186,9 @@ class ReorderJoinTest implements MemoPatternMatchSupported {
public void check(List<LogicalPlan> plans) {
for (LogicalPlan plan : plans) {
PlanChecker.from(MemoTestUtils.createConnectContext(), plan)
ConnectContext connectContext = MemoTestUtils.createConnectContext();
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
PlanChecker.from(connectContext, plan)
.rewrite()
.printlnTree()
.matchesFromRoot(
@ -214,8 +222,9 @@ class ReorderJoinTest implements MemoPatternMatchSupported {
.joinEmptyOn(rightJoin, JoinType.CROSS_JOIN)
.filter(new EqualTo(scan1.getOutput().get(0), scan3.getOutput().get(0)))
.build();
PlanChecker.from(MemoTestUtils.createConnectContext(), plan)
ConnectContext connectContext = MemoTestUtils.createConnectContext();
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
PlanChecker.from(connectContext, plan)
.applyBottomUp(new ReorderJoin())
.matchesFromRoot(
logicalJoin(

View File

@ -36,6 +36,7 @@ import org.junit.jupiter.api.Test;
class CascadesJoinReorderTest extends SqlTestBase {
@Test
void testStartThreeJoin() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
// Three join
// (n-1)! * 2^(n-1) = 8
String sql = "SELECT * FROM T1 "
@ -56,6 +57,7 @@ class CascadesJoinReorderTest extends SqlTestBase {
@Test
void testStarFourJoinZigzag() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
// Four join
// (n-1)! * 2^(n-1) = 48
String sql = "SELECT * FROM T1 "
@ -81,6 +83,7 @@ class CascadesJoinReorderTest extends SqlTestBase {
@Test
void testStarFourJoinBushy() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
// Four join
// (n-1)! * 2^(n-1) = 48
String sql = "SELECT * FROM T1 "
@ -106,6 +109,7 @@ class CascadesJoinReorderTest extends SqlTestBase {
@Test
void testChainFourJoinBushy() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
// Four join
// 2^(n-1) * C(n-1) = 40
String sql = "SELECT * FROM T1 "
@ -131,6 +135,7 @@ class CascadesJoinReorderTest extends SqlTestBase {
@Test
void testChainFiveJoinBushy() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
// Five join
// 2^(n-1) * C(n-1) = 224
String sql = "SELECT * FROM T1 "

View File

@ -24,6 +24,7 @@ import org.junit.jupiter.api.Test;
public class InferTest extends SqlTestBase {
@Test
void testInferNotNullAndInferPredicates() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
// Test InferNotNull, EliminateOuter, InferPredicate together
String sql = "select * from T1 left outer join T2 on T1.id = T2.id where T2.id = 4";
PlanChecker.from(connectContext)
@ -39,6 +40,7 @@ public class InferTest extends SqlTestBase {
@Test
void testInferNotNullFromFilterAndEliminateOuter2() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
String sql
= "select * from T1 right outer join T2 on T1.id = T2.id where T1.id = 4 OR (T1.id > 4 AND T2.score IS NULL)";
PlanChecker.from(connectContext)
@ -58,6 +60,7 @@ public class InferTest extends SqlTestBase {
@Test
void testInferNotNullFromFilterAndEliminateOuter3() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
String sql
= "select * from T1 full outer join T2 on T1.id = T2.id where T1.id = 4 OR (T1.id > 4 AND T2.score IS NULL)";
PlanChecker.from(connectContext)
@ -77,6 +80,7 @@ public class InferTest extends SqlTestBase {
@Test
void testInferNotNullFromJoinAndEliminateOuter() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
// Is Not Null will infer from semi join, so right outer join can be eliminated.
String sql
= "select * from (select T1.id from T1 right outer join T2 on T1.id = T2.id) T1 left semi join T3 on T1.id = T3.id";
@ -93,6 +97,7 @@ public class InferTest extends SqlTestBase {
@Test
void aggEliminateOuterJoin() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
String sql = "select count(T2.score) from T1 left Join T2 on T1.id = T2.id";
PlanChecker.from(connectContext)

View File

@ -111,6 +111,7 @@ public class JoinOrderJobTest extends SqlTestBase {
@Test
protected void testCountJoin() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
String sql = "select count(*) \n"
+ "from \n"
+ "T1, \n"

View File

@ -31,6 +31,7 @@ import org.junit.jupiter.api.Test;
public class JoinTest extends SqlTestBase {
@Test
void testJoinUsing() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
String sql = "SELECT * FROM T1 JOIN T2 using (id)";
PlanChecker.from(connectContext)
.analyze(sql)
@ -42,6 +43,7 @@ public class JoinTest extends SqlTestBase {
@Test
void testColocatedJoin() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
String sql = "select * from T2 join T2 b on T2.id = b.id and T2.id = b.id;";
PhysicalPlan plan = PlanChecker.from(connectContext)
.analyze(sql)
@ -65,6 +67,7 @@ public class JoinTest extends SqlTestBase {
@Test
void testDedupConjuncts() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
String sql = "select * from T1 join T2 on T1.id = T2.id and T1.id = T2.id;";
PlanChecker.from(connectContext)
.analyze(sql)
@ -84,6 +87,7 @@ public class JoinTest extends SqlTestBase {
@Test
void testBucketJoinWithAgg() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
String sql = "select * from "
+ "(select distinct id as cnt from T2) T1 inner join"
+ "(select distinct id as cnt from T2) T2 "

View File

@ -29,6 +29,7 @@ import java.util.List;
public class MultiJoinTest extends SqlTestBase {
@Test
void testMultiJoinEliminateCross() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
List<String> sqls = ImmutableList.<String>builder()
.add("SELECT * FROM T2 LEFT JOIN T3 ON T2.id = T3.id, T1 WHERE T1.id = T2.id")
.add("SELECT * FROM T2 LEFT JOIN T3 ON T2.id = T3.id, T1 WHERE T1.id = T2.id AND T1.score > 0")
@ -52,6 +53,7 @@ public class MultiJoinTest extends SqlTestBase {
@Test
@Disabled
void testEliminateBelowOuter() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
// FIXME: MultiJoin And EliminateOuter
String sql = "SELECT * FROM T1, T2 LEFT JOIN T3 ON T2.id = T3.id WHERE T1.id = T2.id";
PlanChecker.from(connectContext)
@ -62,6 +64,7 @@ public class MultiJoinTest extends SqlTestBase {
@Test
void testPushdownAndEliminateOuter() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
String sql = "SELECT * FROM T1 LEFT JOIN T2 ON T1.id = T2.id WHERE T2.score > 0";
PlanChecker.from(connectContext)
.analyze(sql)
@ -86,6 +89,7 @@ public class MultiJoinTest extends SqlTestBase {
@Test
void testMultiJoinExistCross() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
List<String> sqls = ImmutableList.<String>builder()
.add("SELECT * FROM T2 LEFT SEMI JOIN T3 ON T2.id = T3.id, T1 WHERE T1.id > T2.id")
.build();
@ -107,6 +111,7 @@ public class MultiJoinTest extends SqlTestBase {
@Test
void testOuterJoin() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
String sql = "SELECT * FROM T1 LEFT OUTER JOIN T2 ON T1.id = T2.id, T3 WHERE T2.score > 0";
PlanChecker.from(connectContext)
.analyze(sql)
@ -124,6 +129,7 @@ public class MultiJoinTest extends SqlTestBase {
@Test
@Disabled
void testNoFilter() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
String sql = "Select * FROM T1 INNER JOIN T2 On true";
PlanChecker.from(connectContext)
.analyze(sql)
@ -135,6 +141,7 @@ public class MultiJoinTest extends SqlTestBase {
@Test
void test() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
String sql = "select T1.score, T2.score from T1 inner join T2 on T1.id = T2.id where T1.score - 2 > T2.score";
PlanChecker.from(connectContext)
.analyze(sql)

View File

@ -28,6 +28,7 @@ import org.junit.jupiter.api.Test;
public class SortTest extends SqlTestBase {
@Test
public void testTwoPhaseSort() {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
String sql = "select * from\n"
+ "(select score from T1 order by id) as t order by score\n";
PhysicalPlan plan = PlanChecker.from(connectContext)

View File

@ -33,6 +33,7 @@ public class DeleteFromUsingCommandTest extends TestWithFeService implements Pla
protected void runBeforeAll() throws Exception {
createDatabase("test");
connectContext.setDatabase("test");
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
createTable("create table t1 (\n"
+ " k1 int,\n"
+ " k2 int,\n"

View File

@ -30,13 +30,17 @@ import org.apache.doris.nereids.trees.plans.visitor.NondeterministicFunctionColl
import org.apache.doris.nereids.trees.plans.visitor.TableCollector;
import org.apache.doris.nereids.trees.plans.visitor.TableCollector.TableCollectorContext;
import org.apache.doris.nereids.util.PlanChecker;
import org.apache.doris.qe.SessionVariable;
import org.apache.doris.utframe.TestWithFeService;
import com.google.common.collect.Sets;
import mockit.Mock;
import mockit.MockUp;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.BitSet;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@ -51,6 +55,7 @@ public class PlanVisitorTest extends TestWithFeService {
protected void runBeforeAll() throws Exception {
createDatabase("visitor_test");
useDatabase("visitor_test");
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
createTable("CREATE TABLE `table1` (\n"
+ " `c1` varchar(20) NULL,\n"
@ -166,6 +171,14 @@ public class PlanVisitorTest extends TestWithFeService {
@Test
public void test3() throws Exception {
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
BitSet disableNereidsRules = connectContext.getSessionVariable().getDisableNereidsRules();
new MockUp<SessionVariable>() {
@Mock
public BitSet getDisableNereidsRules() {
return disableNereidsRules;
}
};
PlanChecker.from(connectContext)
.checkPlannerResult("SELECT mv1.*, uuid() FROM mv1 "
+ "INNER JOIN view1 on mv1.c1 = view1.c2 "

View File

@ -32,6 +32,7 @@ public class UpdateCommandTest extends TestWithFeService implements PlanPatternM
public void runBeforeAll() throws Exception {
createDatabase("test");
connectContext.setDatabase("test");
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
createTable("create table t1 (\n"
+ " k1 int,\n"
+ " k2 int,\n"

View File

@ -92,6 +92,7 @@ public class ExpressionUtilsTest extends TestWithFeService {
+ "PROPERTIES (\n"
+ " \"replication_num\" = \"1\"\n"
+ ")");
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
}
@Test

View File

@ -31,6 +31,7 @@ public class StatisticDeriveTest extends TestWithFeService {
Config.enable_odbc_mysql_broker_table = true;
// create database
createDatabase("test");
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
createTable(
"CREATE TABLE test.join1 (\n"

View File

@ -26,6 +26,7 @@ public class TpchTest extends TestWithFeService {
@Override
protected void runBeforeAll() throws Exception {
createDatabase("db1");
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
// Create tables.
String lineitem = "CREATE TABLE db1.lineitem (\n"

View File

@ -128,6 +128,7 @@ public class OlapQueryCacheTest {
Config.cache_enable_partition_mode = true;
context.getSessionVariable().setEnableSqlCache(true);
context.getSessionVariable().setEnablePartitionCache(true);
Config.cache_last_version_interval_second = 7200;
} catch (UnknownHostException e) {
e.printStackTrace();
@ -510,6 +511,7 @@ public class OlapQueryCacheTest {
LogicalPlan plan = new NereidsParser().parseSingle(sql);
OriginStatement originStatement = new OriginStatement(sql, 0);
StatementContext statementContext = new StatementContext(ctx, originStatement);
ctx.setStatementContext(statementContext);
NereidsPlanner nereidsPlanner = new NereidsPlanner(statementContext);
LogicalPlanAdapter adapter = new LogicalPlanAdapter(plan, statementContext);
nereidsPlanner.plan(adapter);

View File

@ -0,0 +1,26 @@
-- This file is automatically generated. You should know what you did if you want to edit this
-- !test_shape --
PhysicalOlapTableSink
--PhysicalEmptyRelation
-- !test_shape_union --
PhysicalOlapTableSink
--PhysicalEmptyRelation
-- !test_shape_join --
PhysicalOlapTableSink
--PhysicalProject
----PhysicalEmptyRelation
-- !test_shape_agg_filter_limit --
PhysicalOlapTableSink
--PhysicalLimit[GLOBAL]
----PhysicalLimit[LOCAL]
------PhysicalEmptyRelation
-- !test_insert_empty_agg --
1
-- !test_insert_empty_agg_select --
\N 0 \N

View File

@ -1,36 +1 @@
-- This file is automatically generated. You should know what you did if you want to edit this
-- !redundant_conjuncts --
PLAN FRAGMENT 0
OUTPUT EXPRS:
v1[#2]
PARTITION: UNPARTITIONED
HAS_COLO_PLAN_NODE: false
VRESULT SINK
MYSQL_PROTOCAL
1:VEXCHANGE
offset: 0
distribute expr lists:
PLAN FRAGMENT 1
PARTITION: HASH_PARTITIONED: k1[#0]
HAS_COLO_PLAN_NODE: false
STREAM DATA SINK
EXCHANGE ID: 01
UNPARTITIONED
0:VOlapScanNode(90)
TABLE: regression_test_performance_p0.redundant_conjuncts(redundant_conjuncts), PREAGGREGATION: ON
PREDICATES: (k1[#0] = 1)
partitions=0/1 (), tablets=0/0, tabletList=
cardinality=0, avgRowSize=0.0, numNodes=1
pushAggOp=NONE
final projections: v1[#1]
final project output tuple id: 1
planed with unknown column statistics

View File

@ -60,6 +60,7 @@ suite("test_runtime_filter") {
sql "set enable_nereids_planner=true"
sql "set enable_fallback_to_original_planner=false"
sql "set disable_join_reorder=true"
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql "set ignore_storage_data_distribution=false"
explain{

View File

@ -19,6 +19,8 @@ suite("test_runtimefilter_with_window") {
sql """ set enable_nereids_planner=true"""
sql """ set disable_join_reorder=true"""
sql """ set enable_runtime_filter_prune=false"""
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql """ DROP TABLE IF EXISTS `test_runtimefilter_with_window_table1` """
sql """ DROP TABLE IF EXISTS `test_runtimefilter_with_window_table2` """
sql """

View File

@ -18,6 +18,8 @@
suite("test_create_table_like_nereids") {
sql "SET enable_nereids_planner=true;"
sql "SET enable_fallback_to_original_planner=false;"
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql "drop table if exists mal_test_create_table_like"
sql """create table mal_test_create_table_like(pk int, a int, b int) distributed by hash(pk) buckets 10

View File

@ -0,0 +1,60 @@
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
suite("insert_select_empty_table") {
sql "SET enable_nereids_planner=true"
sql "SET enable_fallback_to_original_planner=false"
sql """
DROP TABLE IF EXISTS insert_select_empty_table1
"""
sql """
create table insert_select_empty_table1(pk int, a int, b int) distributed by hash(pk) buckets 10
properties('replication_num' = '1');
"""
sql """
DROP TABLE IF EXISTS insert_select_empty_table2
"""
sql """
create table insert_select_empty_table2(pk int, a int, b int) distributed by hash(pk) buckets 10
properties('replication_num' = '1');
"""
sql "insert into insert_select_empty_table1 select * from insert_select_empty_table2;"
qt_test_shape "explain shape plan insert into insert_select_empty_table1 select * from insert_select_empty_table2;"
sql """insert into insert_select_empty_table1 select * from insert_select_empty_table2
union all select * from insert_select_empty_table2"""
qt_test_shape_union """explain shape plan insert into insert_select_empty_table1 select * from insert_select_empty_table2
union all select * from insert_select_empty_table2 """
sql """insert into insert_select_empty_table1 select t1.* from insert_select_empty_table2 t1
inner join insert_select_empty_table2 t2 on t1.a=t2.a"""
qt_test_shape_join """explain shape plan insert into insert_select_empty_table1 select t1.* from insert_select_empty_table2 t1
inner join insert_select_empty_table2 t2 on t1.a=t2.a"""
sql """
insert into insert_select_empty_table1 select pk,a,b from insert_select_empty_table2 where a > 10 group by pk,a,b limit 10;
"""
qt_test_shape_agg_filter_limit """ explain shape plan
insert into insert_select_empty_table1 select pk,a,b from insert_select_empty_table2 where a > 10 group by pk,a,b limit 10;
"""
qt_test_insert_empty_agg "insert into insert_select_empty_table1(a) select count(*) from insert_select_empty_table1"
qt_test_insert_empty_agg_select "select * from insert_select_empty_table1"
}

View File

@ -19,6 +19,8 @@ import org.codehaus.groovy.runtime.IOGroovyMethods
suite ("testSubQuery") {
sql """set enable_nereids_planner=true;"""
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql """ DROP TABLE IF EXISTS emps; """
sql """

View File

@ -16,6 +16,7 @@
// under the License.
suite("broadcastJoin") {
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
String database = context.config.getDbNameByFile(context.file)
sql "drop database if exists ${database}"
sql "create database ${database}"

View File

@ -20,6 +20,7 @@
suite("query1") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT COUNT(*) FROM hits"""
qt_ckbench_shape_1 """

View File

@ -20,6 +20,7 @@
suite("query10") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT RegionID, SUM(AdvEngineID), COUNT(*) AS c, AVG(ResolutionWidth), COUNT(DISTINCT UserID) FROM hits GROUP BY RegionID ORDER BY c DESC LIMIT 10"""

View File

@ -21,6 +21,7 @@ suite("query11") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhoneModel ORDER BY u DESC LIMIT 10"""

View File

@ -21,6 +21,7 @@ suite("query12") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT MobilePhone, MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhone, MobilePhoneModel ORDER BY u DESC LIMIT 10"""

View File

@ -21,6 +21,7 @@ suite("query13") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT SearchPhrase, COUNT(*) AS c FROM hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10"""

View File

@ -21,6 +21,7 @@ suite("query14") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT SearchPhrase, COUNT(DISTINCT UserID) AS u FROM hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY u DESC LIMIT 10"""

View File

@ -21,6 +21,7 @@ suite("query15") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT SearchEngineID, SearchPhrase, COUNT(*) AS c FROM hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, SearchPhrase ORDER BY c DESC LIMIT 10"""

View File

@ -21,6 +21,7 @@ suite("query16") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT UserID, COUNT(*) FROM hits GROUP BY UserID ORDER BY COUNT(*) DESC LIMIT 10"""

View File

@ -21,6 +21,7 @@ suite("query17") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT UserID, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, SearchPhrase ORDER BY COUNT(*) DESC LIMIT 10"""

View File

@ -21,6 +21,7 @@ suite("query18") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT UserID, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, SearchPhrase LIMIT 10"""

View File

@ -21,6 +21,7 @@ suite("query19") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT UserID, extract(minute FROM EventTime) AS m, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, m, SearchPhrase ORDER BY COUNT(*) DESC LIMIT 10"""

View File

@ -20,6 +20,7 @@
suite("query2") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """
SELECT COUNT(*) FROM hits WHERE AdvEngineID <> 0

View File

@ -21,6 +21,7 @@ suite("query20") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT UserID FROM hits WHERE UserID = 435090932899640449"""

View File

@ -21,6 +21,7 @@ suite("query21") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT COUNT(*) FROM hits WHERE URL LIKE '%google%'"""

View File

@ -21,6 +21,7 @@ suite("query22") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT SearchPhrase, MIN(URL), COUNT(*) AS c FROM hits WHERE URL LIKE '%google%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10"""

View File

@ -21,6 +21,7 @@ suite("query23") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT SearchPhrase, MIN(URL), MIN(Title), COUNT(*) AS c, COUNT(DISTINCT UserID) FROM hits WHERE Title LIKE '%Google%' AND URL NOT LIKE '%.google.%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10"""

View File

@ -21,6 +21,7 @@ suite("query24") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT * FROM hits WHERE URL LIKE '%google%' ORDER BY EventTime LIMIT 10"""

View File

@ -21,6 +21,7 @@ suite("query25") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY EventTime LIMIT 10"""

View File

@ -21,6 +21,7 @@ suite("query26") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY SearchPhrase LIMIT 10"""

View File

@ -21,6 +21,7 @@ suite("query27") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY EventTime, SearchPhrase LIMIT 10"""

View File

@ -21,6 +21,7 @@ suite("query28") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT CounterID, AVG(length(URL)) AS l, COUNT(*) AS c FROM hits WHERE URL <> '' GROUP BY CounterID HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25"""

View File

@ -21,6 +21,7 @@ suite("query29") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT REGEXP_REPLACE(Referer, '^https?://(?:www\\.)?([^/]+)/.*\$', '\\\\1') AS k, AVG(length(Referer)) AS l, COUNT(*) AS c, MIN(Referer) FROM hits WHERE Referer <> '' GROUP BY k HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25"""

View File

@ -20,6 +20,7 @@
suite("query3") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT SUM(AdvEngineID), COUNT(*), AVG(ResolutionWidth) FROM hits"""
qt_ckbench_shape_3 """

View File

@ -21,6 +21,7 @@ suite("query30") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT SUM(ResolutionWidth), SUM(ResolutionWidth + 1), SUM(ResolutionWidth + 2), SUM(ResolutionWidth + 3), SUM(ResolutionWidth + 4), SUM(ResolutionWidth + 5), SUM(ResolutionWidth + 6), SUM(ResolutionWidth + 7), SUM(ResolutionWidth + 8), SUM(ResolutionWidth + 9), SUM(ResolutionWidth + 10), SUM(ResolutionWidth + 11), SUM(ResolutionWidth + 12), SUM(ResolutionWidth + 13), SUM(ResolutionWidth + 14), SUM(ResolutionWidth + 15), SUM(ResolutionWidth + 16), SUM(ResolutionWidth + 17), SUM(ResolutionWidth + 18), SUM(ResolutionWidth + 19), SUM(ResolutionWidth + 20), SUM(ResolutionWidth + 21), SUM(ResolutionWidth + 22), SUM(ResolutionWidth + 23), SUM(ResolutionWidth + 24), SUM(ResolutionWidth + 25), SUM(ResolutionWidth + 26), SUM(ResolutionWidth + 27), SUM(ResolutionWidth + 28), SUM(ResolutionWidth + 29), SUM(ResolutionWidth + 30), SUM(ResolutionWidth + 31), SUM(ResolutionWidth + 32), SUM(ResolutionWidth + 33), SUM(ResolutionWidth + 34), SUM(ResolutionWidth + 35), SUM(ResolutionWidth + 36), SUM(ResolutionWidth + 37), SUM(ResolutionWidth + 38), SUM(ResolutionWidth + 39), SUM(ResolutionWidth + 40), SUM(ResolutionWidth + 41), SUM(ResolutionWidth + 42), SUM(ResolutionWidth + 43), SUM(ResolutionWidth + 44), SUM(ResolutionWidth + 45), SUM(ResolutionWidth + 46), SUM(ResolutionWidth + 47), SUM(ResolutionWidth + 48), SUM(ResolutionWidth + 49), SUM(ResolutionWidth + 50), SUM(ResolutionWidth + 51), SUM(ResolutionWidth + 52), SUM(ResolutionWidth + 53), SUM(ResolutionWidth + 54), SUM(ResolutionWidth + 55), SUM(ResolutionWidth + 56), SUM(ResolutionWidth + 57), SUM(ResolutionWidth + 58), SUM(ResolutionWidth + 59), SUM(ResolutionWidth + 60), SUM(ResolutionWidth + 61), SUM(ResolutionWidth + 62), SUM(ResolutionWidth + 63), SUM(ResolutionWidth + 64), SUM(ResolutionWidth + 65), SUM(ResolutionWidth + 66), SUM(ResolutionWidth + 67), SUM(ResolutionWidth + 68), SUM(ResolutionWidth + 69), SUM(ResolutionWidth + 70), SUM(ResolutionWidth + 71), SUM(ResolutionWidth + 72), SUM(ResolutionWidth + 73), SUM(ResolutionWidth + 74), SUM(ResolutionWidth + 75), SUM(ResolutionWidth + 76), SUM(ResolutionWidth + 77), SUM(ResolutionWidth + 78), SUM(ResolutionWidth + 79), SUM(ResolutionWidth + 80), SUM(ResolutionWidth + 81), SUM(ResolutionWidth + 82), SUM(ResolutionWidth + 83), SUM(ResolutionWidth + 84), SUM(ResolutionWidth + 85), SUM(ResolutionWidth + 86), SUM(ResolutionWidth + 87), SUM(ResolutionWidth + 88), SUM(ResolutionWidth + 89) FROM hits"""

View File

@ -21,6 +21,7 @@ suite("query31") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT SearchEngineID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, ClientIP ORDER BY c DESC LIMIT 10"""

View File

@ -21,6 +21,7 @@ suite("query32") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits WHERE SearchPhrase <> '' GROUP BY WatchID, ClientIP ORDER BY c DESC LIMIT 10"""

View File

@ -21,6 +21,7 @@ suite("query33") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits GROUP BY WatchID, ClientIP ORDER BY c DESC LIMIT 10"""

View File

@ -21,6 +21,7 @@ suite("query34") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT URL, COUNT(*) AS c FROM hits GROUP BY URL ORDER BY c DESC LIMIT 10"""

View File

@ -21,6 +21,7 @@ suite("query35") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT 1, URL, COUNT(*) AS c FROM hits GROUP BY 1, URL ORDER BY c DESC LIMIT 10"""

View File

@ -21,6 +21,7 @@ suite("query36") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3, COUNT(*) AS c FROM hits GROUP BY ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3 ORDER BY c DESC LIMIT 10"""

View File

@ -21,6 +21,7 @@ suite("query37") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT URL, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND DontCountHits = 0 AND IsRefresh = 0 AND URL <> '' GROUP BY URL ORDER BY PageViews DESC LIMIT 10"""

View File

@ -21,6 +21,7 @@ suite("query38") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT Title, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND DontCountHits = 0 AND IsRefresh = 0 AND Title <> '' GROUP BY Title ORDER BY PageViews DESC LIMIT 10"""

View File

@ -21,6 +21,7 @@ suite("query39") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT URL, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 AND IsLink <> 0 AND IsDownload = 0 GROUP BY URL ORDER BY PageViews DESC LIMIT 10 OFFSET 1000"""

View File

@ -20,6 +20,7 @@
suite("query4") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT AVG(UserID) FROM hits"""
qt_ckbench_shape_4 """

View File

@ -21,6 +21,7 @@ suite("query40") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT TraficSourceID, SearchEngineID, AdvEngineID, CASE WHEN (SearchEngineID = 0 AND AdvEngineID = 0) THEN Referer ELSE '' END AS Src, URL AS Dst, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 GROUP BY TraficSourceID, SearchEngineID, AdvEngineID, Src, Dst ORDER BY PageViews DESC LIMIT 10 OFFSET 1000"""

View File

@ -21,6 +21,7 @@ suite("query41") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT URLHash, EventDate, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 AND TraficSourceID IN (-1, 6) AND RefererHash = 3594120000172545465 GROUP BY URLHash, EventDate ORDER BY PageViews DESC LIMIT 10 OFFSET 100"""

View File

@ -21,6 +21,7 @@ suite("query42") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT WindowClientWidth, WindowClientHeight, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '2013-07-01' AND EventDate <= '2013-07-31' AND IsRefresh = 0 AND DontCountHits = 0 AND URLHash = 2868770270353813622 GROUP BY WindowClientWidth, WindowClientHeight ORDER BY PageViews DESC LIMIT 10 OFFSET 10000"""

View File

@ -20,6 +20,7 @@
suite("query43") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT DATE_FORMAT(EventTime, '%Y-%m-%d %H:%i:00') AS M, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= '2013-07-14' AND EventDate <= '2013-07-15' AND IsRefresh = 0 AND DontCountHits = 0 GROUP BY DATE_FORMAT(EventTime, '%Y-%m-%d %H:%i:00') ORDER BY DATE_FORMAT(EventTime, '%Y-%m-%d %H:%i:00') LIMIT 10 OFFSET 1000"""

View File

@ -20,6 +20,7 @@
suite("query5") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT COUNT(DISTINCT UserID) FROM hits"""
qt_ckbench_shape_5 """

View File

@ -20,6 +20,7 @@
suite("query6") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT COUNT(DISTINCT SearchPhrase) FROM hits"""
qt_ckbench_shape_6 """

View File

@ -20,6 +20,7 @@
suite("query7") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT MIN(EventDate), MAX(EventDate) FROM hits"""

View File

@ -20,6 +20,7 @@
suite("query8") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql "set disable_nereids_rules=PRUNE_EMPTY_PARTITION"
sql 'set topn_opt_limit_threshold = 1024'
def ckBench = """SELECT AdvEngineID, COUNT(*) FROM hits WHERE AdvEngineID <> 0 GROUP BY AdvEngineID ORDER BY COUNT(*) DESC"""

Some files were not shown because too many files have changed in this diff Show More