[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:
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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();
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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"));
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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 "
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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" + ");",
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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 ";
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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"
|
||||
+ "("
|
||||
|
||||
@ -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 "
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -74,6 +74,7 @@ class InferPredicatesTest extends TestWithFeService implements MemoPatternMatchS
|
||||
+ "properties('replication_num' = '1');");
|
||||
|
||||
connectContext.setDatabase("test");
|
||||
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -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 "
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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 "
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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 "
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -92,6 +92,7 @@ public class ExpressionUtilsTest extends TestWithFeService {
|
||||
+ "PROPERTIES (\n"
|
||||
+ " \"replication_num\" = \"1\"\n"
|
||||
+ ")");
|
||||
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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{
|
||||
|
||||
@ -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 """
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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"
|
||||
|
||||
}
|
||||
@ -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 """
|
||||
|
||||
@ -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}"
|
||||
|
||||
@ -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 """
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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%'"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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 """
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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 """
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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 """
|
||||
|
||||
@ -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 """
|
||||
|
||||
@ -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"""
|
||||
|
||||
@ -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
Reference in New Issue
Block a user