From e3b5ddd96cb4e275db78c3f8fc3e5be08156a02b Mon Sep 17 00:00:00 2001 From: Weizhen Wang Date: Tue, 20 May 2025 15:07:47 +0800 Subject: [PATCH 1/5] executor: ignore ExplainID with cost_trace Signed-off-by: Weizhen Wang --- pkg/executor/select.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkg/executor/select.go b/pkg/executor/select.go index 52c616fa9f7a5..56f4b12eacc00 100644 --- a/pkg/executor/select.go +++ b/pkg/executor/select.go @@ -1027,8 +1027,10 @@ func ResetContextOfStmt(ctx sessionctx.Context, s ast.StmtNode) (err error) { sc.InExplainStmt = true sc.ExplainFormat = explainStmt.Format sc.InExplainAnalyzeStmt = explainStmt.Analyze - sc.IgnoreExplainIDSuffix = strings.ToLower(explainStmt.Format) == types.ExplainFormatBrief - sc.InVerboseExplain = strings.ToLower(explainStmt.Format) == types.ExplainFormatVerbose + sc.IgnoreExplainIDSuffix = + strings.EqualFold(explainStmt.Format, types.ExplainFormatBrief) || + strings.EqualFold(explainStmt.Format, types.ExplainFormatCostTrace) + sc.InVerboseExplain = strings.EqualFold(explainStmt.Format, types.ExplainFormatVerbose) s = explainStmt.Stmt } else { sc.ExplainFormat = "" From 19e9130d461aa7867f985eecc70d2980808d82d3 Mon Sep 17 00:00:00 2001 From: Weizhen Wang Date: Tue, 20 May 2025 15:32:11 +0800 Subject: [PATCH 2/5] executor: ignore ExplainID with cost_trace Signed-off-by: Weizhen Wang --- tests/integrationtest/r/tpch.result | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/tests/integrationtest/r/tpch.result b/tests/integrationtest/r/tpch.result index 0024fd3ff1edd..f7cf6c60b8b13 100644 --- a/tests/integrationtest/r/tpch.result +++ b/tests/integrationtest/r/tpch.result @@ -323,17 +323,17 @@ o_orderpriority order by o_orderpriority; id estRows estCost costFormula task access object operator info -Sort_10 1.00 4563806614.32 (((((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + (((((cpu(7.5e+07*filters(2)*tikv_cpu_factor(49.9))) + ((scan(7.5e+07*logrowsize(207.54)*tikv_scan_factor(40.7)))*1.00)) + (net(2.8192973999999985e+06*rowsize(46.17)*tidb_kv_net_factor(3.96))))/15.00)*1.00) + (cpu(2.8192973999999985e+06*filters(0)*tidb_cpu_factor(49.9))) + (cpu(2.8192973999999985e+06*10*tidb_cpu_factor(49.9))) + (((((((((net(5.073958532003148*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((scan(5.073958532003148*logrowsize(48)*tikv_scan_factor(40.7)))*1.00))/15.00) + (((((net(4.05916682560252*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((cpu(5.073958532003148*filters(1)*tikv_cpu_factor(49.9))) + ((scan(5.073958532003148*logrowsize(397.15)*tikv_scan_factor(40.7)))*1.00)))/15.00) + ((double-read-cpu(5.073958532003148*tidb_cpu_factor(49.9))) + (doubleRead(tasks(0.008118333651205038)*tidb_request_factor(6e+06)))))/5.00))*1.00)*2819297.40)/6.00) + (cpu(1.1443998477587432e+07*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(2.8192973999999985e+06*0*tidb_cpu_factor(49.9))) + (hashmem(2.8192973999999985e+06*46.17*tidb_mem_factor(0.2))) + (hashbuild(2.8192973999999985e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(2.255437919999999e+06*aggs(2)*tidb_cpu_factor(49.9))) + (group(2.255437919999999e+06*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(1*1*tidb_cpu_factor(49.9))) + (hashmem(1*23*tidb_mem_factor(0.2))) + (hashbuild(1*tidb_cpu_factor(49.9)))) + ((hashkey(2.255437919999999e+06*1*tidb_cpu_factor(49.9))) + (hashprobe(2.255437919999999e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(1*filters(0.02)*tidb_cpu_factor(49.9)))/5.00)) + ((exprCPU(1*0*tidb_cpu_factor(49.9))) + (orderCPU(1*log(1)*tidb_cpu_factor(49.9)))) + (sortMem(1*23*tidb_mem_factor(0.2))))*1.00 root tpch50.orders.o_orderpriority -└─Projection_12 1.00 4563806609.72 (((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + (((((cpu(7.5e+07*filters(2)*tikv_cpu_factor(49.9))) + ((scan(7.5e+07*logrowsize(207.54)*tikv_scan_factor(40.7)))*1.00)) + (net(2.8192973999999985e+06*rowsize(46.17)*tidb_kv_net_factor(3.96))))/15.00)*1.00) + (cpu(2.8192973999999985e+06*filters(0)*tidb_cpu_factor(49.9))) + (cpu(2.8192973999999985e+06*10*tidb_cpu_factor(49.9))) + (((((((((net(5.073958532003148*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((scan(5.073958532003148*logrowsize(48)*tikv_scan_factor(40.7)))*1.00))/15.00) + (((((net(4.05916682560252*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((cpu(5.073958532003148*filters(1)*tikv_cpu_factor(49.9))) + ((scan(5.073958532003148*logrowsize(397.15)*tikv_scan_factor(40.7)))*1.00)))/15.00) + ((double-read-cpu(5.073958532003148*tidb_cpu_factor(49.9))) + (doubleRead(tasks(0.008118333651205038)*tidb_request_factor(6e+06)))))/5.00))*1.00)*2819297.40)/6.00) + (cpu(1.1443998477587432e+07*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(2.8192973999999985e+06*0*tidb_cpu_factor(49.9))) + (hashmem(2.8192973999999985e+06*46.17*tidb_mem_factor(0.2))) + (hashbuild(2.8192973999999985e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(2.255437919999999e+06*aggs(2)*tidb_cpu_factor(49.9))) + (group(2.255437919999999e+06*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(1*1*tidb_cpu_factor(49.9))) + (hashmem(1*23*tidb_mem_factor(0.2))) + (hashbuild(1*tidb_cpu_factor(49.9)))) + ((hashkey(2.255437919999999e+06*1*tidb_cpu_factor(49.9))) + (hashprobe(2.255437919999999e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(1*filters(0.02)*tidb_cpu_factor(49.9)))/5.00) root tpch50.orders.o_orderpriority, Column#27 - └─HashAgg_13 1.00 4563806609.52 ((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + (((((cpu(7.5e+07*filters(2)*tikv_cpu_factor(49.9))) + ((scan(7.5e+07*logrowsize(207.54)*tikv_scan_factor(40.7)))*1.00)) + (net(2.8192973999999985e+06*rowsize(46.17)*tidb_kv_net_factor(3.96))))/15.00)*1.00) + (cpu(2.8192973999999985e+06*filters(0)*tidb_cpu_factor(49.9))) + (cpu(2.8192973999999985e+06*10*tidb_cpu_factor(49.9))) + (((((((((net(5.073958532003148*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((scan(5.073958532003148*logrowsize(48)*tikv_scan_factor(40.7)))*1.00))/15.00) + (((((net(4.05916682560252*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((cpu(5.073958532003148*filters(1)*tikv_cpu_factor(49.9))) + ((scan(5.073958532003148*logrowsize(397.15)*tikv_scan_factor(40.7)))*1.00)))/15.00) + ((double-read-cpu(5.073958532003148*tidb_cpu_factor(49.9))) + (doubleRead(tasks(0.008118333651205038)*tidb_request_factor(6e+06)))))/5.00))*1.00)*2819297.40)/6.00) + (cpu(1.1443998477587432e+07*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(2.8192973999999985e+06*0*tidb_cpu_factor(49.9))) + (hashmem(2.8192973999999985e+06*46.17*tidb_mem_factor(0.2))) + (hashbuild(2.8192973999999985e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(2.255437919999999e+06*aggs(2)*tidb_cpu_factor(49.9))) + (group(2.255437919999999e+06*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(1*1*tidb_cpu_factor(49.9))) + (hashmem(1*23*tidb_mem_factor(0.2))) + (hashbuild(1*tidb_cpu_factor(49.9)))) + ((hashkey(2.255437919999999e+06*1*tidb_cpu_factor(49.9))) + (hashprobe(2.255437919999999e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00 root group by:tpch50.orders.o_orderpriority, funcs:count(1)->Column#27, funcs:firstrow(tpch50.orders.o_orderpriority)->tpch50.orders.o_orderpriority - └─IndexHashJoin_21 2255437.92 4473542917.17 ((cpu(10*3*tidb_cpu_factor(49.9))) + (((((cpu(7.5e+07*filters(2)*tikv_cpu_factor(49.9))) + ((scan(7.5e+07*logrowsize(207.54)*tikv_scan_factor(40.7)))*1.00)) + (net(2.8192973999999985e+06*rowsize(46.17)*tidb_kv_net_factor(3.96))))/15.00)*1.00) + (cpu(2.8192973999999985e+06*filters(0)*tidb_cpu_factor(49.9))) + (cpu(2.8192973999999985e+06*10*tidb_cpu_factor(49.9))) + (((((((((net(5.073958532003148*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((scan(5.073958532003148*logrowsize(48)*tikv_scan_factor(40.7)))*1.00))/15.00) + (((((net(4.05916682560252*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((cpu(5.073958532003148*filters(1)*tikv_cpu_factor(49.9))) + ((scan(5.073958532003148*logrowsize(397.15)*tikv_scan_factor(40.7)))*1.00)))/15.00) + ((double-read-cpu(5.073958532003148*tidb_cpu_factor(49.9))) + (doubleRead(tasks(0.008118333651205038)*tidb_request_factor(6e+06)))))/5.00))*1.00)*2819297.40)/6.00) + (cpu(1.1443998477587432e+07*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(2.8192973999999985e+06*0*tidb_cpu_factor(49.9))) + (hashmem(2.8192973999999985e+06*46.17*tidb_mem_factor(0.2))) + (hashbuild(2.8192973999999985e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00 root semi join, inner:IndexLookUp_18, left side:TableReader_41, outer key:tpch50.orders.o_orderkey, inner key:tpch50.lineitem.l_orderkey, equal cond:eq(tpch50.orders.o_orderkey, tpch50.lineitem.l_orderkey) - ├─TableReader_41(Build) 2819297.40 2099753559.19 ((((cpu(7.5e+07*filters(2)*tikv_cpu_factor(49.9))) + ((scan(7.5e+07*logrowsize(207.54)*tikv_scan_factor(40.7)))*1.00)) + (net(2.8192973999999985e+06*rowsize(46.17)*tidb_kv_net_factor(3.96))))/15.00)*1.00 root data:Selection_40 - │ └─Selection_40 2819297.40 30980842222.45 (cpu(7.5e+07*filters(2)*tikv_cpu_factor(49.9))) + ((scan(7.5e+07*logrowsize(207.54)*tikv_scan_factor(40.7)))*1.00) cop[tikv] ge(tpch50.orders.o_orderdate, 1995-01-01 00:00:00.000000), lt(tpch50.orders.o_orderdate, 1995-04-01 00:00:00.000000) - │ └─TableFullScan_39 75000000.00 23495842222.45 (scan(7.5e+07*logrowsize(207.54)*tikv_scan_factor(40.7)))*1.00 cop[tikv] table:orders keep order:false - └─IndexLookUp_18(Probe) 11443998.48 9934.55 ((((net(5.073958532003148*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((scan(5.073958532003148*logrowsize(48)*tikv_scan_factor(40.7)))*1.00))/15.00) + (((((net(4.05916682560252*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((cpu(5.073958532003148*filters(1)*tikv_cpu_factor(49.9))) + ((scan(5.073958532003148*logrowsize(397.15)*tikv_scan_factor(40.7)))*1.00)))/15.00) + ((double-read-cpu(5.073958532003148*tidb_cpu_factor(49.9))) + (doubleRead(tasks(0.008118333651205038)*tidb_request_factor(6e+06)))))/5.00))*1.00 root - ├─IndexRangeScan_15(Build) 14304998.10 1153.35 (scan(5.073958532003148*logrowsize(48)*tikv_scan_factor(40.7)))*1.00 cop[tikv] table:lineitem, index:PRIMARY(L_ORDERKEY, L_LINENUMBER) range: decided by [eq(tpch50.lineitem.l_orderkey, tpch50.orders.o_orderkey)], keep order:false - └─Selection_17(Probe) 11443998.48 2036.10 (cpu(5.073958532003148*filters(1)*tikv_cpu_factor(49.9))) + ((scan(5.073958532003148*logrowsize(397.15)*tikv_scan_factor(40.7)))*1.00) cop[tikv] lt(tpch50.lineitem.l_commitdate, tpch50.lineitem.l_receiptdate) - └─TableRowIDScan_16 14304998.10 1782.91 (scan(5.073958532003148*logrowsize(397.15)*tikv_scan_factor(40.7)))*1.00 cop[tikv] table:lineitem keep order:false +Sort 1.00 4563806614.32 (((((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + (((((cpu(7.5e+07*filters(2)*tikv_cpu_factor(49.9))) + ((scan(7.5e+07*logrowsize(207.54)*tikv_scan_factor(40.7)))*1.00)) + (net(2.8192973999999985e+06*rowsize(46.17)*tidb_kv_net_factor(3.96))))/15.00)*1.00) + (cpu(2.8192973999999985e+06*filters(0)*tidb_cpu_factor(49.9))) + (cpu(2.8192973999999985e+06*10*tidb_cpu_factor(49.9))) + (((((((((net(5.073958532003148*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((scan(5.073958532003148*logrowsize(48)*tikv_scan_factor(40.7)))*1.00))/15.00) + (((((net(4.05916682560252*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((cpu(5.073958532003148*filters(1)*tikv_cpu_factor(49.9))) + ((scan(5.073958532003148*logrowsize(397.15)*tikv_scan_factor(40.7)))*1.00)))/15.00) + ((double-read-cpu(5.073958532003148*tidb_cpu_factor(49.9))) + (doubleRead(tasks(0.008118333651205038)*tidb_request_factor(6e+06)))))/5.00))*1.00)*2819297.40)/6.00) + (cpu(1.1443998477587432e+07*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(2.8192973999999985e+06*0*tidb_cpu_factor(49.9))) + (hashmem(2.8192973999999985e+06*46.17*tidb_mem_factor(0.2))) + (hashbuild(2.8192973999999985e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(2.255437919999999e+06*aggs(2)*tidb_cpu_factor(49.9))) + (group(2.255437919999999e+06*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(1*1*tidb_cpu_factor(49.9))) + (hashmem(1*23*tidb_mem_factor(0.2))) + (hashbuild(1*tidb_cpu_factor(49.9)))) + ((hashkey(2.255437919999999e+06*1*tidb_cpu_factor(49.9))) + (hashprobe(2.255437919999999e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(1*filters(0.02)*tidb_cpu_factor(49.9)))/5.00)) + ((exprCPU(1*0*tidb_cpu_factor(49.9))) + (orderCPU(1*log(1)*tidb_cpu_factor(49.9)))) + (sortMem(1*23*tidb_mem_factor(0.2))))*1.00 root tpch50.orders.o_orderpriority +└─Projection 1.00 4563806609.72 (((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + (((((cpu(7.5e+07*filters(2)*tikv_cpu_factor(49.9))) + ((scan(7.5e+07*logrowsize(207.54)*tikv_scan_factor(40.7)))*1.00)) + (net(2.8192973999999985e+06*rowsize(46.17)*tidb_kv_net_factor(3.96))))/15.00)*1.00) + (cpu(2.8192973999999985e+06*filters(0)*tidb_cpu_factor(49.9))) + (cpu(2.8192973999999985e+06*10*tidb_cpu_factor(49.9))) + (((((((((net(5.073958532003148*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((scan(5.073958532003148*logrowsize(48)*tikv_scan_factor(40.7)))*1.00))/15.00) + (((((net(4.05916682560252*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((cpu(5.073958532003148*filters(1)*tikv_cpu_factor(49.9))) + ((scan(5.073958532003148*logrowsize(397.15)*tikv_scan_factor(40.7)))*1.00)))/15.00) + ((double-read-cpu(5.073958532003148*tidb_cpu_factor(49.9))) + (doubleRead(tasks(0.008118333651205038)*tidb_request_factor(6e+06)))))/5.00))*1.00)*2819297.40)/6.00) + (cpu(1.1443998477587432e+07*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(2.8192973999999985e+06*0*tidb_cpu_factor(49.9))) + (hashmem(2.8192973999999985e+06*46.17*tidb_mem_factor(0.2))) + (hashbuild(2.8192973999999985e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(2.255437919999999e+06*aggs(2)*tidb_cpu_factor(49.9))) + (group(2.255437919999999e+06*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(1*1*tidb_cpu_factor(49.9))) + (hashmem(1*23*tidb_mem_factor(0.2))) + (hashbuild(1*tidb_cpu_factor(49.9)))) + ((hashkey(2.255437919999999e+06*1*tidb_cpu_factor(49.9))) + (hashprobe(2.255437919999999e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + ((cpu(1*filters(0.02)*tidb_cpu_factor(49.9)))/5.00) root tpch50.orders.o_orderpriority, Column#27 + └─HashAgg 1.00 4563806609.52 ((cpu(10*3*tidb_cpu_factor(49.9))) + (((cpu(10*3*tidb_cpu_factor(49.9))) + (((((cpu(7.5e+07*filters(2)*tikv_cpu_factor(49.9))) + ((scan(7.5e+07*logrowsize(207.54)*tikv_scan_factor(40.7)))*1.00)) + (net(2.8192973999999985e+06*rowsize(46.17)*tidb_kv_net_factor(3.96))))/15.00)*1.00) + (cpu(2.8192973999999985e+06*filters(0)*tidb_cpu_factor(49.9))) + (cpu(2.8192973999999985e+06*10*tidb_cpu_factor(49.9))) + (((((((((net(5.073958532003148*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((scan(5.073958532003148*logrowsize(48)*tikv_scan_factor(40.7)))*1.00))/15.00) + (((((net(4.05916682560252*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((cpu(5.073958532003148*filters(1)*tikv_cpu_factor(49.9))) + ((scan(5.073958532003148*logrowsize(397.15)*tikv_scan_factor(40.7)))*1.00)))/15.00) + ((double-read-cpu(5.073958532003148*tidb_cpu_factor(49.9))) + (doubleRead(tasks(0.008118333651205038)*tidb_request_factor(6e+06)))))/5.00))*1.00)*2819297.40)/6.00) + (cpu(1.1443998477587432e+07*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(2.8192973999999985e+06*0*tidb_cpu_factor(49.9))) + (hashmem(2.8192973999999985e+06*46.17*tidb_mem_factor(0.2))) + (hashbuild(2.8192973999999985e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00) + (((agg(2.255437919999999e+06*aggs(2)*tidb_cpu_factor(49.9))) + (group(2.255437919999999e+06*cols(0.01)*tidb_cpu_factor(49.9))) + ((hashkey(1*1*tidb_cpu_factor(49.9))) + (hashmem(1*23*tidb_mem_factor(0.2))) + (hashbuild(1*tidb_cpu_factor(49.9)))) + ((hashkey(2.255437919999999e+06*1*tidb_cpu_factor(49.9))) + (hashprobe(2.255437919999999e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00 root group by:tpch50.orders.o_orderpriority, funcs:count(1)->Column#27, funcs:firstrow(tpch50.orders.o_orderpriority)->tpch50.orders.o_orderpriority + └─IndexHashJoin 2255437.92 4473542917.17 ((cpu(10*3*tidb_cpu_factor(49.9))) + (((((cpu(7.5e+07*filters(2)*tikv_cpu_factor(49.9))) + ((scan(7.5e+07*logrowsize(207.54)*tikv_scan_factor(40.7)))*1.00)) + (net(2.8192973999999985e+06*rowsize(46.17)*tidb_kv_net_factor(3.96))))/15.00)*1.00) + (cpu(2.8192973999999985e+06*filters(0)*tidb_cpu_factor(49.9))) + (cpu(2.8192973999999985e+06*10*tidb_cpu_factor(49.9))) + (((((((((net(5.073958532003148*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((scan(5.073958532003148*logrowsize(48)*tikv_scan_factor(40.7)))*1.00))/15.00) + (((((net(4.05916682560252*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((cpu(5.073958532003148*filters(1)*tikv_cpu_factor(49.9))) + ((scan(5.073958532003148*logrowsize(397.15)*tikv_scan_factor(40.7)))*1.00)))/15.00) + ((double-read-cpu(5.073958532003148*tidb_cpu_factor(49.9))) + (doubleRead(tasks(0.008118333651205038)*tidb_request_factor(6e+06)))))/5.00))*1.00)*2819297.40)/6.00) + (cpu(1.1443998477587432e+07*filters(0)*tidb_cpu_factor(49.9))) + ((hashkey(2.8192973999999985e+06*0*tidb_cpu_factor(49.9))) + (hashmem(2.8192973999999985e+06*46.17*tidb_mem_factor(0.2))) + (hashbuild(2.8192973999999985e+06*tidb_cpu_factor(49.9)))))/5.00))*1.00 root semi join, inner:IndexLookUp, left side:TableReader, outer key:tpch50.orders.o_orderkey, inner key:tpch50.lineitem.l_orderkey, equal cond:eq(tpch50.orders.o_orderkey, tpch50.lineitem.l_orderkey) + ├─TableReader(Build) 2819297.40 2099753559.19 ((((cpu(7.5e+07*filters(2)*tikv_cpu_factor(49.9))) + ((scan(7.5e+07*logrowsize(207.54)*tikv_scan_factor(40.7)))*1.00)) + (net(2.8192973999999985e+06*rowsize(46.17)*tidb_kv_net_factor(3.96))))/15.00)*1.00 root data:Selection + │ └─Selection 2819297.40 30980842222.45 (cpu(7.5e+07*filters(2)*tikv_cpu_factor(49.9))) + ((scan(7.5e+07*logrowsize(207.54)*tikv_scan_factor(40.7)))*1.00) cop[tikv] ge(tpch50.orders.o_orderdate, 1995-01-01 00:00:00.000000), lt(tpch50.orders.o_orderdate, 1995-04-01 00:00:00.000000) + │ └─TableFullScan 75000000.00 23495842222.45 (scan(7.5e+07*logrowsize(207.54)*tikv_scan_factor(40.7)))*1.00 cop[tikv] table:orders keep order:false + └─IndexLookUp(Probe) 11443998.48 9934.55 ((((net(5.073958532003148*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((scan(5.073958532003148*logrowsize(48)*tikv_scan_factor(40.7)))*1.00))/15.00) + (((((net(4.05916682560252*rowsize(24.375)*tidb_kv_net_factor(3.96))) + ((cpu(5.073958532003148*filters(1)*tikv_cpu_factor(49.9))) + ((scan(5.073958532003148*logrowsize(397.15)*tikv_scan_factor(40.7)))*1.00)))/15.00) + ((double-read-cpu(5.073958532003148*tidb_cpu_factor(49.9))) + (doubleRead(tasks(0.008118333651205038)*tidb_request_factor(6e+06)))))/5.00))*1.00 root + ├─IndexRangeScan(Build) 14304998.10 1153.35 (scan(5.073958532003148*logrowsize(48)*tikv_scan_factor(40.7)))*1.00 cop[tikv] table:lineitem, index:PRIMARY(L_ORDERKEY, L_LINENUMBER) range: decided by [eq(tpch50.lineitem.l_orderkey, tpch50.orders.o_orderkey)], keep order:false + └─Selection(Probe) 11443998.48 2036.10 (cpu(5.073958532003148*filters(1)*tikv_cpu_factor(49.9))) + ((scan(5.073958532003148*logrowsize(397.15)*tikv_scan_factor(40.7)))*1.00) cop[tikv] lt(tpch50.lineitem.l_commitdate, tpch50.lineitem.l_receiptdate) + └─TableRowIDScan 14304998.10 1782.91 (scan(5.073958532003148*logrowsize(397.15)*tikv_scan_factor(40.7)))*1.00 cop[tikv] table:lineitem keep order:false /* Q5 Local Supplier Volume Query This query lists the revenue volume done through local suppliers. From e799f7d698b728b522450093b94cd08efcac2fbc Mon Sep 17 00:00:00 2001 From: Weizhen Wang Date: Tue, 20 May 2025 15:44:34 +0800 Subject: [PATCH 3/5] executor: ignore ExplainID with cost_trace Signed-off-by: Weizhen Wang --- pkg/planner/core/casetest/tpch/tpch_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/planner/core/casetest/tpch/tpch_test.go b/pkg/planner/core/casetest/tpch/tpch_test.go index 12ca269f7040d..38a36a812c83f 100644 --- a/pkg/planner/core/casetest/tpch/tpch_test.go +++ b/pkg/planner/core/casetest/tpch/tpch_test.go @@ -252,7 +252,7 @@ func checkCost(t *testing.T, tk *testkit.TestKit, q4 string) { require.Equal(t, len(costTraceRows.Rows()), len(verboseRows.Rows())) for i := 0; i < len(costTraceRows.Rows()); i++ { // check id / estRows / estCost. they should be the same one - require.Equal(t, costTraceRows.Rows()[i][:3], verboseRows.Rows()[i][:3]) + require.Equal(t, costTraceRows.Rows()[i][1:3], verboseRows.Rows()[i][1:3]) } } From 0d36dedcc709d51ca2074861981de8c338477212 Mon Sep 17 00:00:00 2001 From: Weizhen Wang Date: Tue, 20 May 2025 15:49:15 +0800 Subject: [PATCH 4/5] executor: ignore ExplainID with cost_trace Signed-off-by: Weizhen Wang --- tests/integrationtest/r/planner/core/cbo.result | 16 ++++++++-------- .../r/planner/core/plan_cache.result | 12 ++++++------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/tests/integrationtest/r/planner/core/cbo.result b/tests/integrationtest/r/planner/core/cbo.result index ba536398f96bc..c6313bf55ba3b 100644 --- a/tests/integrationtest/r/planner/core/cbo.result +++ b/tests/integrationtest/r/planner/core/cbo.result @@ -43,21 +43,21 @@ insert into t values (1); set tidb_cost_model_version=2; explain format='cost_trace' select * from t; id estRows estCost costFormula task access object operator info -TableReader_5 10000.00 313573.33 (((((scan(10000*logrowsize(32)*tikv_scan_factor(40.7))) + (scan(10000*logrowsize(32)*tikv_scan_factor(40.7))))*1.00) + (net(10000*rowsize(16)*tidb_kv_net_factor(3.96))))/15.00)*1.00 root data:TableFullScan_4 -└─TableFullScan_4 10000.00 4070000.00 ((scan(10000*logrowsize(32)*tikv_scan_factor(40.7))) + (scan(10000*logrowsize(32)*tikv_scan_factor(40.7))))*1.00 cop[tikv] table:t keep order:false, stats:pseudo +TableReader 10000.00 313573.33 (((((scan(10000*logrowsize(32)*tikv_scan_factor(40.7))) + (scan(10000*logrowsize(32)*tikv_scan_factor(40.7))))*1.00) + (net(10000*rowsize(16)*tidb_kv_net_factor(3.96))))/15.00)*1.00 root data:TableFullScan +└─TableFullScan 10000.00 4070000.00 ((scan(10000*logrowsize(32)*tikv_scan_factor(40.7))) + (scan(10000*logrowsize(32)*tikv_scan_factor(40.7))))*1.00 cop[tikv] table:t keep order:false, stats:pseudo explain analyze format='cost_trace' select * from t; id estRows estCost costFormula actRows task access object execution info operator info memory disk -TableReader_5 10000.00 313573.33 (((((scan(10000*logrowsize(32)*tikv_scan_factor(40.7))) + (scan(10000*logrowsize(32)*tikv_scan_factor(40.7))))*1.00) + (net(10000*rowsize(16)*tidb_kv_net_factor(3.96))))/15.00)*1.00 1 root -└─TableFullScan_4 10000.00 4070000.00 ((scan(10000*logrowsize(32)*tikv_scan_factor(40.7))) + (scan(10000*logrowsize(32)*tikv_scan_factor(40.7))))*1.00 1 cop[tikv] table:t +TableReader 10000.00 313573.33 (((((scan(10000*logrowsize(32)*tikv_scan_factor(40.7))) + (scan(10000*logrowsize(32)*tikv_scan_factor(40.7))))*1.00) + (net(10000*rowsize(16)*tidb_kv_net_factor(3.96))))/15.00)*1.00 1 root +└─TableFullScan 10000.00 4070000.00 ((scan(10000*logrowsize(32)*tikv_scan_factor(40.7))) + (scan(10000*logrowsize(32)*tikv_scan_factor(40.7))))*1.00 1 cop[tikv] table:t set tidb_cost_model_version=1; explain format='cost_trace' select * from t; id estRows estCost costFormula task access object operator info -TableReader_5 10000.00 34418.00 N/A root data:TableFullScan_4 -└─TableFullScan_4 10000.00 435000.00 N/A cop[tikv] table:t keep order:false, stats:pseudo +TableReader 10000.00 34418.00 N/A root data:TableFullScan +└─TableFullScan 10000.00 435000.00 N/A cop[tikv] table:t keep order:false, stats:pseudo explain analyze format='cost_trace' select * from t; id estRows estCost costFormula actRows task access object execution info operator info memory disk -TableReader_5 10000.00 34418.00 N/A 1 root -└─TableFullScan_4 10000.00 435000.00 N/A 1 cop[tikv] table:t +TableReader 10000.00 34418.00 N/A 1 root +└─TableFullScan 10000.00 435000.00 N/A 1 cop[tikv] table:t set tidb_cost_model_version=default; drop table if exists t1, t2; set sql_mode='STRICT_TRANS_TABLES'; diff --git a/tests/integrationtest/r/planner/core/plan_cache.result b/tests/integrationtest/r/planner/core/plan_cache.result index d1233af2f0f7b..82298c2e7db11 100644 --- a/tests/integrationtest/r/planner/core/plan_cache.result +++ b/tests/integrationtest/r/planner/core/plan_cache.result @@ -1636,8 +1636,8 @@ select @@last_plan_from_cache; 0 explain format = 'cost_trace' select * from t; id estRows estCost costFormula task access object operator info -IndexReader_7 10000.00 150773.33 ((((scan(10000*logrowsize(16)*tikv_scan_factor(40.7)))*1.00) + (net(10000*rowsize(16)*tidb_kv_net_factor(3.96))))/15.00)*1.00 root index:IndexFullScan_6 -└─IndexFullScan_6 10000.00 1628000.00 (scan(10000*logrowsize(16)*tikv_scan_factor(40.7)))*1.00 cop[tikv] table:t, index:a(a) keep order:false, stats:pseudo +IndexReader 10000.00 150773.33 ((((scan(10000*logrowsize(16)*tikv_scan_factor(40.7)))*1.00) + (net(10000*rowsize(16)*tidb_kv_net_factor(3.96))))/15.00)*1.00 root index:IndexFullScan +└─IndexFullScan 10000.00 1628000.00 (scan(10000*logrowsize(16)*tikv_scan_factor(40.7)))*1.00 cop[tikv] table:t, index:a(a) keep order:false, stats:pseudo select @@last_plan_from_cache; @@last_plan_from_cache 0 @@ -1716,10 +1716,10 @@ Limit_7 1.00 12.97 root offset:0, count:1 └─IndexFullScan_10 1.00 162.80 cop[tikv] table:t, index:a(a) keep order:false, stats:pseudo explain format = 'cost_trace' select * from t limit 1; id estRows estCost costFormula task access object operator info -Limit_7 1.00 12.97 ((((((scan(1*logrowsize(16)*tikv_scan_factor(40.7)))*1.00)) + (net(1*rowsize(8)*tidb_kv_net_factor(3.96))))/15.00)*1.00) root offset:0, count:1 -└─IndexReader_12 1.00 12.97 (((((scan(1*logrowsize(16)*tikv_scan_factor(40.7)))*1.00)) + (net(1*rowsize(8)*tidb_kv_net_factor(3.96))))/15.00)*1.00 root index:Limit_11 - └─Limit_11 1.00 162.80 ((scan(1*logrowsize(16)*tikv_scan_factor(40.7)))*1.00) cop[tikv] offset:0, count:1 - └─IndexFullScan_10 1.00 162.80 (scan(1*logrowsize(16)*tikv_scan_factor(40.7)))*1.00 cop[tikv] table:t, index:a(a) keep order:false, stats:pseudo +Limit 1.00 12.97 ((((((scan(1*logrowsize(16)*tikv_scan_factor(40.7)))*1.00)) + (net(1*rowsize(8)*tidb_kv_net_factor(3.96))))/15.00)*1.00) root offset:0, count:1 +└─IndexReader 1.00 12.97 (((((scan(1*logrowsize(16)*tikv_scan_factor(40.7)))*1.00)) + (net(1*rowsize(8)*tidb_kv_net_factor(3.96))))/15.00)*1.00 root index:Limit + └─Limit 1.00 162.80 ((scan(1*logrowsize(16)*tikv_scan_factor(40.7)))*1.00) cop[tikv] offset:0, count:1 + └─IndexFullScan 1.00 162.80 (scan(1*logrowsize(16)*tikv_scan_factor(40.7)))*1.00 cop[tikv] table:t, index:a(a) keep order:false, stats:pseudo set tidb_enable_non_prepared_plan_cache=DEFAULT; drop table if exists t, t1, t2; CREATE TABLE `t1` (`c_int` int(11) NOT NULL, `c_str` varchar(40) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, `c_datetime` datetime DEFAULT NULL, `c_timestamp` timestamp NULL DEFAULT NULL, `c_double` double DEFAULT NULL, `c_decimal` decimal(12,6) DEFAULT NULL, `c_enum` enum('blue','green','red','yellow','white','orange','purple') NOT NULL, PRIMARY KEY (`c_int`,`c_enum`) /*T![clustered_index] CLUSTERED */, KEY `c_decimal` (`c_decimal`), UNIQUE KEY `c_datetime` (`c_datetime`), UNIQUE KEY `c_timestamp` (`c_timestamp`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; From b042cc8790c03a224dbcde5defbd83d0e8ee884b Mon Sep 17 00:00:00 2001 From: Weizhen Wang Date: Tue, 20 May 2025 16:55:02 +0800 Subject: [PATCH 5/5] executor: ignore ExplainID with cost_trace Signed-off-by: Weizhen Wang --- tests/integrationtest/r/executor/explain.result | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/integrationtest/r/executor/explain.result b/tests/integrationtest/r/executor/explain.result index 567fd7822e93a..fc9f9d202d4f1 100644 --- a/tests/integrationtest/r/executor/explain.result +++ b/tests/integrationtest/r/executor/explain.result @@ -248,8 +248,8 @@ select @@last_plan_from_cache; 0 explain format = 'cost_trace' select * from t; id estRows estCost costFormula task access object operator info -TableReader_5 10000.00 313573.33 (((((scan(10000*logrowsize(32)*tikv_scan_factor(40.7))) + (scan(10000*logrowsize(32)*tikv_scan_factor(40.7))))*1.00) + (net(10000*rowsize(16)*tidb_kv_net_factor(3.96))))/15.00)*1.00 root data:TableFullScan_4 -└─TableFullScan_4 10000.00 4070000.00 ((scan(10000*logrowsize(32)*tikv_scan_factor(40.7))) + (scan(10000*logrowsize(32)*tikv_scan_factor(40.7))))*1.00 cop[tikv] table:t keep order:false, stats:pseudo +TableReader 10000.00 313573.33 (((((scan(10000*logrowsize(32)*tikv_scan_factor(40.7))) + (scan(10000*logrowsize(32)*tikv_scan_factor(40.7))))*1.00) + (net(10000*rowsize(16)*tidb_kv_net_factor(3.96))))/15.00)*1.00 root data:TableFullScan +└─TableFullScan 10000.00 4070000.00 ((scan(10000*logrowsize(32)*tikv_scan_factor(40.7))) + (scan(10000*logrowsize(32)*tikv_scan_factor(40.7))))*1.00 cop[tikv] table:t keep order:false, stats:pseudo select @@last_plan_from_cache; @@last_plan_from_cache 0