Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
c546f85
parser: support recursive parentheses in LEADING hint
guo-shaoge Jun 2, 2026
8f597b5
fix
guo-shaoge Jun 2, 2026
36b2bf6
planner: pre-refactor for join reorder conflict detection algorithm
guo-shaoge Jun 2, 2026
31d66f0
Merge branch 'cp_recursive_join_hint' of github.com:guo-shaoge/tidb i…
guo-shaoge Jun 2, 2026
e0485fa
fix
guo-shaoge Jun 2, 2026
153d1cc
Merge branch 'cp_recursive_join_hint' of github.com:guo-shaoge/tidb i…
guo-shaoge Jun 2, 2026
e76f723
planner: fix join reorder correctness with conflict detection algorithm
guo-shaoge Jun 2, 2026
7bd27fc
update
guo-shaoge Jun 2, 2026
894989a
Merge branch 'release-8.5' of github.com:pingcap/tidb into cp_cdc_impl
guo-shaoge Jun 5, 2026
33dbf96
fmt
guo-shaoge Jun 5, 2026
ce4ce41
Merge branch 'cp_cdc_impl' of github.com:guo-shaoge/tidb into cp_cdc_…
guo-shaoge Jun 5, 2026
0669e00
bazel
guo-shaoge Jun 5, 2026
9ef21cc
sync with master branch
guo-shaoge Jun 5, 2026
fdb0eae
base.xxx -> logicalop.xxx
guo-shaoge Jun 5, 2026
d7e9e06
Merge branch 'cp_cdc_impl' of github.com:guo-shaoge/tidb into cp_cdc_…
guo-shaoge Jun 5, 2026
7697f92
bazel
guo-shaoge Jun 5, 2026
04cd6df
fix
guo-shaoge Jun 5, 2026
43ba56d
Merge branch 'cp_cdc_impl' of github.com:guo-shaoge/tidb into cp_cdc_…
guo-shaoge Jun 5, 2026
c6f0148
fix case
guo-shaoge Jun 5, 2026
3bb7542
Merge branch 'cp_cdc_impl' of github.com:guo-shaoge/tidb into cp_cdc_…
guo-shaoge Jun 5, 2026
a7a758e
update case
guo-shaoge Jun 6, 2026
5b2b20e
fix
guo-shaoge Jun 6, 2026
e01d619
update
guo-shaoge Jun 6, 2026
3f2a5c6
update
guo-shaoge Jun 6, 2026
e931165
update
guo-shaoge Jun 6, 2026
4c94c2c
case
guo-shaoge Jun 6, 2026
af69c63
executor case
guo-shaoge Jun 6, 2026
a8dbbfb
Merge branch 'cp_cdc_impl' of github.com:guo-shaoge/tidb into cp_post…
guo-shaoge Jun 6, 2026
ebe9e55
case
guo-shaoge Jun 6, 2026
638554b
integration test
guo-shaoge Jun 6, 2026
d9a708f
unit test
guo-shaoge Jun 6, 2026
f4f4580
unittest
guo-shaoge Jun 6, 2026
397660a
case
guo-shaoge Jun 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions pkg/executor/explainfor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -296,11 +296,11 @@ func TestPointGetUserVarPlanCache(t *testing.T) {
ps := []*util.ProcessInfo{tkProcess}
tk.Session().SetSessionManager(&testkit.MockSessionManager{PS: ps})
tk.MustQuery(fmt.Sprintf("explain for connection %d", tkProcess.ID)).Check(testkit.Rows( // can use idx_a
`Projection_9 10.00 root test.t1.a, test.t1.b, test.t2.a, test.t2.b`,
`└─HashJoin_11 10.00 root CARTESIAN inner join`,
` ├─Point_Get_12(Build) 1.00 root table:t2, index:idx_a(a) `, // use idx_a
` └─TableReader_14(Probe) 10.00 root data:TableRangeScan_13`,
` └─TableRangeScan_13 10.00 cop[tikv] table:t1 range:[1,1], keep order:false, stats:pseudo`))
`Projection_10 10.00 root test.t1.a, test.t1.b, test.t2.a, test.t2.b`,
`└─HashJoin_12 10.00 root CARTESIAN inner join`,
` ├─Point_Get_13(Build) 1.00 root table:t2, index:idx_a(a) `,
` └─TableReader_15(Probe) 10.00 root data:TableRangeScan_14`,
` └─TableRangeScan_14 10.00 cop[tikv] table:t1 range:[1,1], keep order:false, stats:pseudo`))

tk.MustExec("set @a=2")
tk.MustQuery("execute stmt using @a").Check(testkit.Rows(
Expand All @@ -310,11 +310,11 @@ func TestPointGetUserVarPlanCache(t *testing.T) {
ps = []*util.ProcessInfo{tkProcess}
tk.Session().SetSessionManager(&testkit.MockSessionManager{PS: ps})
tk.MustQuery(fmt.Sprintf("explain for connection %d", tkProcess.ID)).Check(testkit.Rows( // can use idx_a
`Projection_9 10.00 root test.t1.a, test.t1.b, test.t2.a, test.t2.b`,
`└─HashJoin_11 10.00 root CARTESIAN inner join`,
` ├─Point_Get_12(Build) 1.00 root table:t2, index:idx_a(a) `,
` └─TableReader_14(Probe) 10.00 root data:TableRangeScan_13`,
` └─TableRangeScan_13 10.00 cop[tikv] table:t1 range:[2,2], keep order:false, stats:pseudo`))
`Projection_10 10.00 root test.t1.a, test.t1.b, test.t2.a, test.t2.b`,
`└─HashJoin_12 10.00 root CARTESIAN inner join`,
` ├─Point_Get_13(Build) 1.00 root table:t2, index:idx_a(a) `,
` └─TableReader_15(Probe) 10.00 root data:TableRangeScan_14`,
` └─TableRangeScan_14 10.00 cop[tikv] table:t1 range:[2,2], keep order:false, stats:pseudo`))
tk.MustQuery("execute stmt using @a").Check(testkit.Rows(
"2 4 2 2",
))
Expand Down
8 changes: 4 additions & 4 deletions pkg/executor/prepared_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,10 @@ func TestIssue29850(t *testing.T) {
ps := []*util.ProcessInfo{tkProcess}
tk.Session().SetSessionManager(&testkit.MockSessionManager{PS: ps})
tk.MustQuery(fmt.Sprintf("explain for connection %d", tkProcess.ID)).Check(testkit.Rows( // can use PointGet
`Projection_7 0.00 root test.customer.c_discount, test.customer.c_last, test.customer.c_credit, test.warehouse.w_tax`,
`└─HashJoin_8 0.00 root CARTESIAN inner join`,
` ├─Point_Get_11(Build) 1.00 root table:warehouse handle:1262`,
` └─Point_Get_10(Probe) 1.00 root table:customer, clustered index:PRIMARY(c_w_id, c_d_id, c_id) `))
`Projection_8 0.00 root test.customer.c_discount, test.customer.c_last, test.customer.c_credit, test.warehouse.w_tax`,
`└─HashJoin_9 0.00 root CARTESIAN inner join`,
` ├─Point_Get_12(Build) 1.00 root table:warehouse handle:1262`,
` └─Point_Get_11(Probe) 1.00 root table:customer, clustered index:PRIMARY(c_w_id, c_d_id, c_id) `))
tk.MustQuery(`execute stmt using @w_id, @c_d_id, @c_id`).Check(testkit.Rows())
tk.MustQuery(`select @@last_plan_from_cache`).Check(testkit.Rows("1")) // can use the cached plan

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,19 +68,19 @@
"SQL": "explain analyze format = 'binary' select sum(t.a) from t join t2",
"BinaryPlan": {
"main": {
"name": "HashAgg_8",
"name": "HashAgg_9",
"children": [
{
"name": "Projection_20",
"name": "Projection_21",
"children": [
{
"name": "HashJoin_10",
"name": "HashJoin_11",
"children": [
{
"name": "IndexReader_15",
"name": "IndexReader_16",
"children": [
{
"name": "IndexFullScan_14",
"name": "IndexFullScan_15",
"cost": 1628000,
"est_rows": 10000,
"act_rows": 2,
Expand All @@ -97,13 +97,13 @@
"act_rows": 2,
"task_type": 1,
"store_type": 1,
"operator_info": "index:IndexFullScan_14"
"operator_info": "index:IndexFullScan_15"
},
{
"name": "TableReader_17",
"name": "TableReader_18",
"children": [
{
"name": "TableFullScan_16",
"name": "TableFullScan_17",
"cost": 4546159.475587022,
"est_rows": 10000,
"act_rows": 4,
Expand All @@ -120,7 +120,7 @@
"act_rows": 4,
"task_type": 1,
"store_type": 1,
"operator_info": "data:TableFullScan_16"
"operator_info": "data:TableFullScan_17"
}
],
"cost": 1128387.6317058015,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,7 @@
"│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo",
"└─IndexReader(Probe) 12475.01 root index:Selection",
" └─Selection 12475.01 cop[tikv] not(isnull(test.t2.a)), not(isnull(test.t2.c))",
" └─IndexRangeScan 12500.00 cop[tikv] table:t2, index:idx(a, b, c) range: decided by [eq(test.t2.a, test.t1.a) lt(test.t2.b, plus(test.t1.b, 1)) gt(test.t2.b, minus(test.t1.b, 1))], keep order:false, stats:pseudo"
" └─IndexRangeScan 12500.00 cop[tikv] table:t2, index:idx(a, b, c) range: decided by [eq(test.t2.a, test.t1.a) gt(test.t2.b, minus(test.t1.b, 1)) lt(test.t2.b, plus(test.t1.b, 1))], keep order:false, stats:pseudo"
]
},
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -541,13 +541,13 @@
{
"SQL": "EXPLAIN SELECT * from t join s; -- 5. cartesian join, cartesian banned.",
"Plan": [
"HashJoin_8 100000000.00 root CARTESIAN inner join",
"├─TableReader_19(Build) 10000.00 root MppVersion: 2, data:ExchangeSender_18",
"│ └─ExchangeSender_18 10000.00 mpp[tiflash] ExchangeType: PassThrough",
"│ └─TableFullScan_17 10000.00 mpp[tiflash] table:s keep order:false, stats:pseudo",
"└─TableReader_14(Probe) 10000.00 root MppVersion: 2, data:ExchangeSender_13",
" └─ExchangeSender_13 10000.00 mpp[tiflash] ExchangeType: PassThrough",
" └─TableFullScan_12 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo"
"HashJoin_9 100000000.00 root CARTESIAN inner join",
"├─TableReader_20(Build) 10000.00 root MppVersion: 2, data:ExchangeSender_19",
"│ └─ExchangeSender_19 10000.00 mpp[tiflash] ExchangeType: PassThrough",
"│ └─TableFullScan_18 10000.00 mpp[tiflash] table:s keep order:false, stats:pseudo",
"└─TableReader_15(Probe) 10000.00 root MppVersion: 2, data:ExchangeSender_14",
" └─ExchangeSender_14 10000.00 mpp[tiflash] ExchangeType: PassThrough",
" └─TableFullScan_13 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo"
],
"Warn": [
"MPP mode may be blocked because `Cartesian Product` is only supported by broadcast join, check value and documents of variable `tidb_opt_broadcast_cartesian_join`.",
Expand All @@ -562,13 +562,13 @@
{
"SQL": "EXPLAIN SELECT * from t join s; -- 6. cartesian join, broadcast banned.",
"Plan": [
"HashJoin_8 100000000.00 root CARTESIAN inner join",
"├─TableReader_19(Build) 10000.00 root MppVersion: 2, data:ExchangeSender_18",
"│ └─ExchangeSender_18 10000.00 mpp[tiflash] ExchangeType: PassThrough",
"│ └─TableFullScan_17 10000.00 mpp[tiflash] table:s keep order:false, stats:pseudo",
"└─TableReader_14(Probe) 10000.00 root MppVersion: 2, data:ExchangeSender_13",
" └─ExchangeSender_13 10000.00 mpp[tiflash] ExchangeType: PassThrough",
" └─TableFullScan_12 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo"
"HashJoin_9 100000000.00 root CARTESIAN inner join",
"├─TableReader_20(Build) 10000.00 root MppVersion: 2, data:ExchangeSender_19",
"│ └─ExchangeSender_19 10000.00 mpp[tiflash] ExchangeType: PassThrough",
"│ └─TableFullScan_18 10000.00 mpp[tiflash] table:s keep order:false, stats:pseudo",
"└─TableReader_15(Probe) 10000.00 root MppVersion: 2, data:ExchangeSender_14",
" └─ExchangeSender_14 10000.00 mpp[tiflash] ExchangeType: PassThrough",
" └─TableFullScan_13 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo"
],
"Warn": [
"MPP mode may be blocked because `Cartesian Product` is only supported by broadcast join, check value and documents of variables `tidb_broadcast_join_threshold_size` and `tidb_broadcast_join_threshold_count`.",
Expand All @@ -583,13 +583,13 @@
{
"SQL": "EXPLAIN SELECT * from t join s; -- can use mpp",
"Plan": [
"TableReader_29 100000000.00 root MppVersion: 2, data:ExchangeSender_28",
"└─ExchangeSender_28 100000000.00 mpp[tiflash] ExchangeType: PassThrough",
" └─HashJoin_27 100000000.00 mpp[tiflash] CARTESIAN inner join",
" ├─ExchangeReceiver_13(Build) 10000.00 mpp[tiflash] ",
" │ └─ExchangeSender_12 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST",
" │ └─TableFullScan_11 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo",
" └─TableFullScan_14(Probe) 10000.00 mpp[tiflash] table:s keep order:false, stats:pseudo"
"TableReader_30 100000000.00 root MppVersion: 2, data:ExchangeSender_29",
"└─ExchangeSender_29 100000000.00 mpp[tiflash] ExchangeType: PassThrough",
" └─HashJoin_28 100000000.00 mpp[tiflash] CARTESIAN inner join",
" ├─ExchangeReceiver_14(Build) 10000.00 mpp[tiflash] ",
" │ └─ExchangeSender_13 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST",
" │ └─TableFullScan_12 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo",
" └─TableFullScan_15(Probe) 10000.00 mpp[tiflash] table:s keep order:false, stats:pseudo"
],
"Warn": null
},
Expand All @@ -601,13 +601,13 @@
{
"SQL": "EXPLAIN SELECT * from t join s; -- can use mpp",
"Plan": [
"TableReader_29 100000000.00 root MppVersion: 2, data:ExchangeSender_28",
"└─ExchangeSender_28 100000000.00 mpp[tiflash] ExchangeType: PassThrough",
" └─HashJoin_27 100000000.00 mpp[tiflash] CARTESIAN inner join",
" ├─ExchangeReceiver_13(Build) 10000.00 mpp[tiflash] ",
" │ └─ExchangeSender_12 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST",
" │ └─TableFullScan_11 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo",
" └─TableFullScan_14(Probe) 10000.00 mpp[tiflash] table:s keep order:false, stats:pseudo"
"TableReader_30 100000000.00 root MppVersion: 2, data:ExchangeSender_29",
"└─ExchangeSender_29 100000000.00 mpp[tiflash] ExchangeType: PassThrough",
" └─HashJoin_28 100000000.00 mpp[tiflash] CARTESIAN inner join",
" ├─ExchangeReceiver_14(Build) 10000.00 mpp[tiflash] ",
" │ └─ExchangeSender_13 10000.00 mpp[tiflash] ExchangeType: Broadcast, Compression: FAST",
" │ └─TableFullScan_12 10000.00 mpp[tiflash] table:t keep order:false, stats:pseudo",
" └─TableFullScan_15(Probe) 10000.00 mpp[tiflash] table:s keep order:false, stats:pseudo"
],
"Warn": null
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1927,9 +1927,7 @@
" └─TableReader(Probe) 10000.00 root data:TableFullScan",
" └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo"
],
"Warn": [
"Warning 1815 leading hint is inapplicable, check if the leading hint table has join conditions with other tables"
]
"Warn": null
}
]
}
Expand Down
33 changes: 16 additions & 17 deletions pkg/planner/core/casetest/mpp/testdata/integration_suite_out.json
Original file line number Diff line number Diff line change
Expand Up @@ -1713,23 +1713,22 @@
" │ └─Projection 10000.00 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, cast(test.t.c4, decimal(40,20))->Column#29",
" │ └─TableFullScan 10000.00 mpp[tiflash] table:t4 keep order:false, stats:pseudo",
" └─Projection(Probe) 15593.77 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5",
" └─Projection 15593.77 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5",
" └─HashJoin 15593.77 mpp[tiflash] inner join, equal:[eq(test.t.c5, test.t.c3)]",
" ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ",
" │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#25, collate: binary]",
" │ └─Projection 10000.00 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, cast(test.t.c3, decimal(40,20))->Column#25",
" │ └─TableFullScan 10000.00 mpp[tiflash] table:t3 keep order:false, stats:pseudo",
" └─ExchangeReceiver(Probe) 12475.01 mpp[tiflash] ",
" └─ExchangeSender 12475.01 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c5, collate: binary]",
" └─HashJoin 12475.01 mpp[tiflash] inner join, equal:[eq(test.t.c2, test.t.c1)]",
" ├─ExchangeReceiver(Build) 9980.01 mpp[tiflash] ",
" │ └─ExchangeSender 9980.01 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c2, collate: binary]",
" │ └─Selection 9980.01 mpp[tiflash] not(isnull(test.t.c2)), not(isnull(test.t.c5))",
" │ └─TableFullScan 10000.00 mpp[tiflash] table:t2 pushed down filter:empty, keep order:false, stats:pseudo",
" └─ExchangeReceiver(Probe) 9990.00 mpp[tiflash] ",
" └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c1, collate: binary]",
" └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.c1))",
" └─TableFullScan 10000.00 mpp[tiflash] table:t1 pushed down filter:empty, keep order:false, stats:pseudo"
" └─HashJoin 15593.77 mpp[tiflash] inner join, equal:[eq(test.t.c5, test.t.c3)]",
" ├─ExchangeReceiver(Build) 10000.00 mpp[tiflash] ",
" │ └─ExchangeSender 10000.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#25, collate: binary]",
" │ └─Projection 10000.00 mpp[tiflash] test.t.c1, test.t.c2, test.t.c3, test.t.c4, test.t.c5, cast(test.t.c3, decimal(40,20))->Column#25",
" │ └─TableFullScan 10000.00 mpp[tiflash] table:t3 keep order:false, stats:pseudo",
" └─ExchangeReceiver(Probe) 12475.01 mpp[tiflash] ",
" └─ExchangeSender 12475.01 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c5, collate: binary]",
" └─HashJoin 12475.01 mpp[tiflash] inner join, equal:[eq(test.t.c2, test.t.c1)]",
" ├─ExchangeReceiver(Build) 9980.01 mpp[tiflash] ",
" │ └─ExchangeSender 9980.01 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c2, collate: binary]",
" │ └─Selection 9980.01 mpp[tiflash] not(isnull(test.t.c2)), not(isnull(test.t.c5))",
" │ └─TableFullScan 10000.00 mpp[tiflash] table:t2 pushed down filter:empty, keep order:false, stats:pseudo",
" └─ExchangeReceiver(Probe) 9990.00 mpp[tiflash] ",
" └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: test.t.c1, collate: binary]",
" └─Selection 9990.00 mpp[tiflash] not(isnull(test.t.c1))",
" └─TableFullScan 10000.00 mpp[tiflash] table:t1 pushed down filter:empty, keep order:false, stats:pseudo"
]
},
{
Expand Down
4 changes: 3 additions & 1 deletion pkg/planner/core/casetest/rule/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ go_test(
timeout = "short",
srcs = [
"main_test.go",
"rule_cdc_join_reorder_test.go",
"rule_derive_topn_from_window_test.go",
"rule_eliminate_projection_test.go",
"rule_inject_extra_projection_test.go",
Expand All @@ -15,7 +16,7 @@ go_test(
],
data = glob(["testdata/**"]),
flaky = True,
shard_count = 12,
shard_count = 13,
deps = [
"//pkg/config",
"//pkg/domain",
Expand All @@ -27,6 +28,7 @@ go_test(
"//pkg/planner/util/coreusage",
"//pkg/testkit",
"//pkg/testkit/testdata",
"//pkg/testkit/testfailpoint",
"//pkg/testkit/testmain",
"//pkg/testkit/testsetup",
"//pkg/types",
Expand Down
5 changes: 5 additions & 0 deletions pkg/planner/core/casetest/rule/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ func TestMain(m *testing.M) {
testDataMap.LoadTestSuiteData("testdata", "join_reorder_suite")
testDataMap.LoadTestSuiteData("testdata", "predicate_pushdown_suite")
testDataMap.LoadTestSuiteData("testdata", "predicate_simplification")
testDataMap.LoadTestSuiteData("testdata", "cdc_join_reorder_suite")
opts := []goleak.Option{
goleak.IgnoreTopFunction("github.com/golang/glog.(*fileSink).flushDaemon"),
goleak.IgnoreTopFunction("github.com/bazelbuild/rules_go/go/tools/bzltestutil.RegisterTimeoutHandler.func1"),
Expand Down Expand Up @@ -71,3 +72,7 @@ func GetPredicatePushdownSuiteData() testdata.TestData {
func GetPredicateSimplificationSuiteData() testdata.TestData {
return testDataMap["predicate_simplification"]
}

func GetCDCJoinReorderSuiteData() testdata.TestData {
return testDataMap["cdc_join_reorder_suite"]
}
Loading