Skip to content

Commit

Permalink
planner: apply rule_partition_pruning when optimizing CTE under stati…
Browse files Browse the repository at this point in the history
…c mode (#51903)

close #51873
  • Loading branch information
qw4990 authored Mar 19, 2024
1 parent 62fa6d1 commit f4e366e
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 2 deletions.
2 changes: 1 addition & 1 deletion pkg/planner/core/casetest/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ go_test(
],
data = glob(["testdata/**"]),
flaky = True,
shard_count = 19,
shard_count = 20,
deps = [
"//pkg/domain",
"//pkg/parser",
Expand Down
32 changes: 32 additions & 0 deletions pkg/planner/core/casetest/integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,38 @@ func TestTiFlashFineGrainedShuffle(t *testing.T) {
}
}

func TestIssue51873(t *testing.T) {
store := testkit.CreateMockStore(t)
tk := testkit.NewTestKit(t, store)
tk.MustExec(`use test`)
tk.MustExec(`CREATE TABLE h1 (
id bigint(20) NOT NULL AUTO_INCREMENT,
position_date date NOT NULL,
asset_id varchar(32) DEFAULT NULL,
portfolio_code varchar(50) DEFAULT NULL,
PRIMARY KEY (id,position_date) /*T![clustered_index] NONCLUSTERED */,
UNIQUE KEY uidx_posi_asset_balance_key (position_date,portfolio_code,asset_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin AUTO_INCREMENT=30002
PARTITION BY RANGE COLUMNS(position_date)
(PARTITION p202401 VALUES LESS THAN ('2024-02-01'))`)
tk.MustExec(`create table h2 like h1`)
tk.MustExec(`insert into h1 values(1,'2024-01-01',1,1)`)
tk.MustExec(`insert into h2 values(1,'2024-01-01',1,1)`)
tk.MustExec(`analyze table h1`)
tk.MustExec(`set @@tidb_skip_missing_partition_stats=0`)
tk.MustQuery(`with assetBalance AS
(SELECT asset_id, portfolio_code FROM h1 pab WHERE pab.position_date = '2024-01-01' ),
cashBalance AS (SELECT portfolio_code, asset_id
FROM h2 pcb WHERE pcb.position_date = '2024-01-01' ),
assetIdList AS (SELECT DISTINCT asset_id AS assetId
FROM assetBalance )
SELECT main.portfolioCode
FROM (SELECT DISTINCT balance.portfolio_code AS portfolioCode
FROM assetBalance balance
LEFT JOIN assetIdList
ON balance.asset_id = assetIdList.assetId ) main`).Check(testkit.Rows("1"))
}

func TestIssue50926(t *testing.T) {
store := testkit.CreateMockStore(t)
tk := testkit.NewTestKit(t, store)
Expand Down
4 changes: 3 additions & 1 deletion pkg/planner/core/optimizer.go
Original file line number Diff line number Diff line change
Expand Up @@ -362,7 +362,9 @@ func adjustOptimizationFlags(flag uint64, logic LogicalPlan) uint64 {
}
flag |= flagCollectPredicateColumnsPoint
flag |= flagSyncWaitStatsLoadPoint

if !logic.SCtx().GetSessionVars().StmtCtx.UseDynamicPruneMode {
flag |= flagPartitionProcessor // apply partition pruning under static mode
}
return flag
}

Expand Down

0 comments on commit f4e366e

Please sign in to comment.