Skip to content

Commit

Permalink
fix unit-test and explain test
Browse files Browse the repository at this point in the history
  • Loading branch information
winoros committed Dec 13, 2018
1 parent 16196a1 commit d9d51d8
Show file tree
Hide file tree
Showing 7 changed files with 23 additions and 24 deletions.
6 changes: 3 additions & 3 deletions cmd/explaintest/r/explain_complex.result
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ Projection_13 1.00 root gad.id, test.dd.id, gad.aid, gad.cm, test.dd.dic, test.d
│ └─Selection_32 0.00 cop eq(gad.bm, 0), eq(gad.pt, "android")
│ └─TableScan_31 3333.33 cop table:st, keep order:false, stats:pseudo
└─IndexLookUp_23 0.00 root
├─IndexScan_20 10.00 cop table:dd, index:aid, dic, range: decided by [gad.aid gad.ip], keep order:false, stats:pseudo
├─IndexScan_20 10.00 cop table:dd, index:aid, dic, range: decided by [ eq(test.dd.aid, gad.aid) ], keep order:false, stats:pseudo
└─Selection_22 0.00 cop eq(test.dd.bm, 0), eq(test.dd.pt, "android"), gt(test.dd.t, 1478143908)
└─TableScan_21 10.00 cop table:dd, keep order:false, stats:pseudo
explain select gad.id as gid,sdk.id as sid,gad.aid as aid,gad.cm as cm,sdk.dic as dic,sdk.ip as ip, sdk.t as t, gad.p1 as p1, gad.p2 as p2, gad.p3 as p3, gad.p4 as p4, gad.p5 as p5, gad.p6_md5 as p6, gad.p7_md5 as p7, gad.ext as ext from st gad join dd sdk on gad.aid = sdk.aid and gad.dic = sdk.mac and gad.t < sdk.t where gad.t > 1477971479 and gad.bm = 0 and gad.pt = 'ios' and gad.dit = 'mac' and sdk.t > 1477971479 and sdk.bm = 0 and sdk.pt = 'ios' limit 3000;
Expand All @@ -137,7 +137,7 @@ Projection_10 0.00 root gad.id, sdk.id, gad.aid, gad.cm, sdk.dic, sdk.ip, sdk.t,
│ └─Selection_26 0.00 cop eq(gad.bm, 0), eq(gad.dit, "mac"), eq(gad.pt, "ios")
│ └─TableScan_25 3333.33 cop table:st, keep order:false, stats:pseudo
└─IndexLookUp_17 0.00 root
├─IndexScan_14 10.00 cop table:sdk, index:aid, dic, range: decided by [gad.aid gad.dic], keep order:false, stats:pseudo
├─IndexScan_14 10.00 cop table:sdk, index:aid, dic, range: decided by [ eq(sdk.aid, gad.aid) ], keep order:false, stats:pseudo
└─Selection_16 0.00 cop eq(sdk.bm, 0), eq(sdk.pt, "ios"), gt(sdk.t, 1477971479)
└─TableScan_15 10.00 cop table:dd, keep order:false, stats:pseudo
explain SELECT cm, p1, p2, p3, p4, p5, p6_md5, p7_md5, count(1) as click_pv, count(DISTINCT ip) as click_ip FROM st WHERE (t between 1478188800 and 1478275200) and aid='cn.sbkcq' and pt='android' GROUP BY cm, p1, p2, p3, p4, p5, p6_md5, p7_md5;
Expand All @@ -157,7 +157,7 @@ Projection_10 0.00 root dt.id, dt.aid, dt.pt, dt.dic, dt.cm, rr.gid, rr.acd, rr.
│ └─Selection_42 0.00 cop eq(dt.bm, 0), eq(dt.pt, "ios"), gt(dt.t, 1478185592)
│ └─TableScan_41 10000.00 cop table:dt, range:[0,+inf], keep order:false, stats:pseudo
└─IndexLookUp_18 3.33 root
├─IndexScan_15 10.00 cop table:rr, index:aid, dic, range: decided by [dt.aid dt.dic], keep order:false, stats:pseudo
├─IndexScan_15 10.00 cop table:rr, index:aid, dic, range: decided by [ eq(rr.aid, dt.aid) eq(rr.dic, dt.dic) ], keep order:false, stats:pseudo
└─Selection_17 3.33 cop eq(rr.pt, "ios"), gt(rr.t, 1478185592)
└─TableScan_16 10.00 cop table:rr, keep order:false, stats:pseudo
explain select pc,cr,count(DISTINCT uid) as pay_users,count(oid) as pay_times,sum(am) as am from pp where ps=2 and ppt>=1478188800 and ppt<1478275200 and pi in ('510017','520017') and uid in ('18089709','18090780') group by pc,cr;
Expand Down
6 changes: 3 additions & 3 deletions cmd/explaintest/r/explain_complex_stats.result
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ Projection_13 424.00 root gad.id, test.dd.id, gad.aid, gad.cm, test.dd.dic, test
│ └─Selection_28 424.00 cop eq(gad.bm, 0), eq(gad.pt, "android"), gt(gad.t, 1478143908)
│ └─TableScan_27 1999.00 cop table:gad, range:[0,+inf], keep order:false
└─IndexLookUp_23 455.80 root
├─IndexScan_20 1.00 cop table:dd, index:aid, dic, range: decided by [gad.aid gad.ip], keep order:false
├─IndexScan_20 1.00 cop table:dd, index:aid, dic, range: decided by [ eq(test.dd.aid, gad.aid) ], keep order:false
└─Selection_22 455.80 cop eq(test.dd.bm, 0), eq(test.dd.pt, "android"), gt(test.dd.t, 1478143908)
└─TableScan_21 1.00 cop table:dd, keep order:false
explain select gad.id as gid,sdk.id as sid,gad.aid as aid,gad.cm as cm,sdk.dic as dic,sdk.ip as ip, sdk.t as t, gad.p1 as p1, gad.p2 as p2, gad.p3 as p3, gad.p4 as p4, gad.p5 as p5, gad.p6_md5 as p6, gad.p7_md5 as p7, gad.ext as ext from st gad join dd sdk on gad.aid = sdk.aid and gad.dic = sdk.mac and gad.t < sdk.t where gad.t > 1477971479 and gad.bm = 0 and gad.pt = 'ios' and gad.dit = 'mac' and sdk.t > 1477971479 and sdk.bm = 0 and sdk.pt = 'ios' limit 3000;
Expand All @@ -145,7 +145,7 @@ Projection_10 170.34 root gad.id, sdk.id, gad.aid, gad.cm, sdk.dic, sdk.ip, sdk.
│ └─Selection_22 170.34 cop eq(gad.bm, 0), eq(gad.dit, "mac"), eq(gad.pt, "ios"), gt(gad.t, 1477971479)
│ └─TableScan_21 1999.00 cop table:gad, range:[0,+inf], keep order:false
└─IndexLookUp_17 509.04 root
├─IndexScan_14 1.00 cop table:sdk, index:aid, dic, range: decided by [gad.aid gad.dic], keep order:false
├─IndexScan_14 1.00 cop table:sdk, index:aid, dic, range: decided by [ eq(sdk.aid, gad.aid) ], keep order:false
└─Selection_16 509.04 cop eq(sdk.bm, 0), eq(sdk.pt, "ios"), gt(sdk.t, 1477971479)
└─TableScan_15 1.00 cop table:dd, keep order:false
explain SELECT cm, p1, p2, p3, p4, p5, p6_md5, p7_md5, count(1) as click_pv, count(DISTINCT ip) as click_ip FROM st WHERE (t between 1478188800 and 1478275200) and aid='cn.sbkcq' and pt='android' GROUP BY cm, p1, p2, p3, p4, p5, p6_md5, p7_md5;
Expand All @@ -165,7 +165,7 @@ Projection_10 428.32 root dt.id, dt.aid, dt.pt, dt.dic, dt.cm, rr.gid, rr.acd, r
│ └─Selection_42 428.32 cop eq(dt.bm, 0), eq(dt.pt, "ios"), gt(dt.t, 1478185592)
│ └─TableScan_41 2000.00 cop table:dt, range:[0,+inf], keep order:false
└─IndexLookUp_18 970.00 root
├─IndexScan_15 1.00 cop table:rr, index:aid, dic, range: decided by [dt.aid dt.dic], keep order:false
├─IndexScan_15 1.00 cop table:rr, index:aid, dic, range: decided by [ eq(rr.aid, dt.aid) eq(rr.dic, dt.dic) ], keep order:false
└─Selection_17 970.00 cop eq(rr.pt, "ios"), gt(rr.t, 1478185592)
└─TableScan_16 1.00 cop table:rr, keep order:false
explain select pc,cr,count(DISTINCT uid) as pay_users,count(oid) as pay_times,sum(am) as am from pp where ps=2 and ppt>=1478188800 and ppt<1478275200 and pi in ('510017','520017') and uid in ('18089709','18090780') group by pc,cr;
Expand Down
2 changes: 1 addition & 1 deletion cmd/explaintest/r/explain_easy.result
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ IndexJoin_11 4166.67 root left outer join, inner:IndexLookUp_10, outer key:test.
├─TableReader_23 3333.33 root data:TableScan_22
│ └─TableScan_22 3333.33 cop table:t1, range:(1,+inf], keep order:false, stats:pseudo
└─IndexLookUp_10 10.00 root
├─IndexScan_8 10.00 cop table:t2, index:c1, range: decided by [test.t1.c2], keep order:false, stats:pseudo
├─IndexScan_8 10.00 cop table:t2, index:c1, range: decided by [ eq(test.t2.c1, test.t1.c2) ], keep order:false, stats:pseudo
└─TableScan_9 10.00 cop table:t2, keep order:false, stats:pseudo
explain update t1 set t1.c2 = 2 where t1.c1 = 1;
id count task operator info
Expand Down
4 changes: 2 additions & 2 deletions cmd/explaintest/r/topn_push_down.result
Original file line number Diff line number Diff line change
Expand Up @@ -178,8 +178,8 @@ Projection_13 0.00 root te.expect_time
│ │ └─Selection_104 0.00 cop eq(tr.brand_identy, 32314), eq(tr.domain_type, 2)
│ │ └─TableScan_102 0.00 cop table:tr, keep order:false
│ └─IndexLookUp_34 250.00 root
│ ├─IndexScan_31 10.00 cop table:te, index:trade_id, range: decided by [tr.id], keep order:false, stats:pseudo
│ ├─IndexScan_31 10.00 cop table:te, index:trade_id, range: decided by [ eq(te.trade_id, tr.id) ], keep order:false, stats:pseudo
│ └─Selection_33 250.00 cop ge(te.expect_time, 2018-04-23 00:00:00.000000), le(te.expect_time, 2018-04-23 23:59:59.000000)
│ └─TableScan_32 10.00 cop table:te, keep order:false, stats:pseudo
└─IndexReader_136 10.00 root index:IndexScan_135
└─IndexScan_135 10.00 cop table:p, index:relate_id, range: decided by [tr.id], keep order:false, stats:pseudo
└─IndexScan_135 10.00 cop table:p, index:relate_id, range: decided by [ eq(p.relate_id, tr.id) ], keep order:false, stats:pseudo
20 changes: 10 additions & 10 deletions cmd/explaintest/r/tpch.result
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,7 @@ Projection_14 10.00 root tpch.lineitem.l_orderkey, 7_col_0, tpch.orders.o_orderd
│ └─Selection_48 36870000.00 cop lt(tpch.orders.o_orderdate, 1995-03-13 00:00:00.000000)
│ └─TableScan_47 75000000.00 cop table:orders, range:[-inf,+inf], keep order:false
└─IndexLookUp_25 162945114.27 root
├─IndexScan_22 1.00 cop table:lineitem, index:L_ORDERKEY, L_LINENUMBER, range: decided by [tpch.orders.o_orderkey], keep order:false
├─IndexScan_22 1.00 cop table:lineitem, index:L_ORDERKEY, L_LINENUMBER, range: decided by [ eq(tpch.lineitem.l_orderkey, tpch.orders.o_orderkey) ], keep order:false
└─Selection_24 162945114.27 cop gt(tpch.lineitem.l_shipdate, 1995-03-13 00:00:00.000000)
└─TableScan_23 1.00 cop table:lineitem, keep order:false
/*
Expand Down Expand Up @@ -301,7 +301,7 @@ Sort_10 1.00 root tpch.orders.o_orderpriority:asc
│ └─Selection_32 2925937.50 cop ge(tpch.orders.o_orderdate, 1995-01-01 00:00:00.000000), lt(tpch.orders.o_orderdate, 1995-04-01)
│ └─TableScan_31 75000000.00 cop table:orders, range:[-inf,+inf], keep order:false
└─IndexLookUp_20 240004648.80 root
├─IndexScan_17 1.00 cop table:lineitem, index:L_ORDERKEY, L_LINENUMBER, range: decided by [tpch.orders.o_orderkey], keep order:false
├─IndexScan_17 1.00 cop table:lineitem, index:L_ORDERKEY, L_LINENUMBER, range: decided by [ eq(tpch.lineitem.l_orderkey, tpch.orders.o_orderkey) ], keep order:false
└─Selection_19 240004648.80 cop lt(tpch.lineitem.l_commitdate, tpch.lineitem.l_receiptdate)
└─TableScan_18 1.00 cop table:lineitem, keep order:false
/*
Expand Down Expand Up @@ -535,7 +535,7 @@ Sort_29 718.01 root all_nations.o_year:asc
│ │ │ │ └─Selection_77 22382008.93 cop ge(tpch.orders.o_orderdate, 1995-01-01 00:00:00.000000), le(tpch.orders.o_orderdate, 1996-12-31 00:00:00.000000)
│ │ │ │ └─TableScan_76 75000000.00 cop table:orders, range:[-inf,+inf], keep order:false
│ │ │ └─IndexLookUp_55 1.00 root
│ │ │ ├─IndexScan_53 1.00 cop table:lineitem, index:L_ORDERKEY, L_LINENUMBER, range: decided by [tpch.orders.o_orderkey], keep order:false
│ │ │ ├─IndexScan_53 1.00 cop table:lineitem, index:L_ORDERKEY, L_LINENUMBER, range: decided by [ eq(tpch.lineitem.l_orderkey, tpch.orders.o_orderkey) ], keep order:false
│ │ │ └─TableScan_54 1.00 cop table:lineitem, keep order:false
│ │ └─TableReader_83 61674.00 root data:Selection_82
│ │ └─Selection_82 61674.00 cop eq(tpch.part.p_type, "SMALL PLATED COPPER")
Expand Down Expand Up @@ -609,7 +609,7 @@ Sort_25 2406.00 root profit.nation:asc, profit.o_year:desc
│ └─TableReader_39 1.00 root data:TableScan_38
│ └─TableScan_38 1.00 cop table:orders, range: decided by [tpch.lineitem.l_orderkey], keep order:false
└─IndexLookUp_33 1.00 root
├─IndexScan_31 1.00 cop table:partsupp, index:PS_PARTKEY, PS_SUPPKEY, range: decided by [tpch.lineitem.l_suppkey tpch.lineitem.l_partkey], keep order:false
├─IndexScan_31 1.00 cop table:partsupp, index:PS_PARTKEY, PS_SUPPKEY, range: decided by [ eq(tpch.partsupp.ps_partkey, tpch.lineitem.l_partkey) eq(tpch.partsupp.ps_suppkey, tpch.lineitem.l_suppkey) ], keep order:false
└─TableScan_32 1.00 cop table:partsupp, keep order:false
/*
Q10 Returned Item Reporting Query
Expand Down Expand Up @@ -669,7 +669,7 @@ Projection_17 20.00 root tpch.customer.c_custkey, tpch.customer.c_name, 9_col_0,
│ └─Selection_47 3017307.69 cop ge(tpch.orders.o_orderdate, 1993-08-01 00:00:00.000000), lt(tpch.orders.o_orderdate, 1993-11-01)
│ └─TableScan_46 75000000.00 cop table:orders, range:[-inf,+inf], keep order:false
└─IndexLookUp_31 73916005.00 root
├─IndexScan_28 1.00 cop table:lineitem, index:L_ORDERKEY, L_LINENUMBER, range: decided by [tpch.orders.o_orderkey], keep order:false
├─IndexScan_28 1.00 cop table:lineitem, index:L_ORDERKEY, L_LINENUMBER, range: decided by [ eq(tpch.lineitem.l_orderkey, tpch.orders.o_orderkey) ], keep order:false
└─Selection_30 73916005.00 cop eq(tpch.lineitem.l_returnflag, "R")
└─TableScan_29 1.00 cop table:lineitem, keep order:false
/*
Expand Down Expand Up @@ -929,7 +929,7 @@ Sort_13 3863988.24 root supplier_cnt:desc, tpch.part.p_brand:asc, tpch.part.p_ty
│ │ └─Selection_40 1200618.43 cop in(tpch.part.p_size, 48, 19, 12, 4, 41, 7, 21, 39), ne(tpch.part.p_brand, "Brand#34"), not(like(tpch.part.p_type, "LARGE BRUSHED%", 92))
│ │ └─TableScan_39 10000000.00 cop table:part, range:[-inf,+inf], keep order:false
│ └─IndexReader_25 1.00 root index:IndexScan_24
│ └─IndexScan_24 1.00 cop table:partsupp, index:PS_PARTKEY, PS_SUPPKEY, range: decided by [tpch.part.p_partkey], keep order:false
│ └─IndexScan_24 1.00 cop table:partsupp, index:PS_PARTKEY, PS_SUPPKEY, range: decided by [ eq(tpch.partsupp.ps_partkey, tpch.part.p_partkey) ], keep order:false
└─TableReader_46 400000.00 root data:Selection_45
└─Selection_45 400000.00 cop like(tpch.supplier.s_comment, "%Customer%Complaints%", 92)
└─TableScan_44 500000.00 cop table:supplier, range:[-inf,+inf], keep order:false
Expand Down Expand Up @@ -1035,7 +1035,7 @@ Projection_24 100.00 root tpch.customer.c_name, tpch.customer.c_custkey, tpch.or
│ └─HashAgg_50 74063872.00 cop group by:tpch.lineitem.l_orderkey, funcs:sum(tpch.lineitem.l_quantity), firstrow(tpch.lineitem.l_orderkey)
│ └─TableScan_55 300005811.00 cop table:lineitem, range:[-inf,+inf], keep order:false
└─IndexLookUp_34 1.00 root
├─IndexScan_32 1.00 cop table:lineitem, index:L_ORDERKEY, L_LINENUMBER, range: decided by [tpch.orders.o_orderkey], keep order:false
├─IndexScan_32 1.00 cop table:lineitem, index:L_ORDERKEY, L_LINENUMBER, range: decided by [ eq(tpch.lineitem.l_orderkey, tpch.orders.o_orderkey) ], keep order:false
└─TableScan_33 1.00 cop table:lineitem, keep order:false
/*
Q19 Discounted Revenue Query
Expand Down Expand Up @@ -1157,7 +1157,7 @@ Sort_28 20000.00 root tpch.supplier.s_name:asc
│ │ └─Selection_74 80007.93 cop like(tpch.part.p_name, "green%", 92)
│ │ └─TableScan_73 10000000.00 cop table:part, range:[-inf,+inf], keep order:false
│ └─IndexLookUp_58 1.00 root
│ ├─IndexScan_56 1.00 cop table:partsupp, index:PS_PARTKEY, PS_SUPPKEY, range: decided by [tpch.part.p_partkey], keep order:false
│ ├─IndexScan_56 1.00 cop table:partsupp, index:PS_PARTKEY, PS_SUPPKEY, range: decided by [ eq(tpch.partsupp.ps_partkey, tpch.part.p_partkey) ], keep order:false
│ └─TableScan_57 1.00 cop table:partsupp, keep order:false
└─TableReader_80 44189356.65 root data:Selection_79
└─Selection_79 44189356.65 cop ge(tpch.lineitem.l_shipdate, 1993-01-01 00:00:00.000000), lt(tpch.lineitem.l_shipdate, 1994-01-01)
Expand Down Expand Up @@ -1231,10 +1231,10 @@ Projection_25 1.00 root tpch.supplier.s_name, 17_col_0
│ │ └─Selection_57 36517371.00 cop eq(tpch.orders.o_orderstatus, "F")
│ │ └─TableScan_56 1.00 cop table:orders, range: decided by [l1.l_orderkey], keep order:false
│ └─IndexLookUp_52 1.00 root
│ ├─IndexScan_50 1.00 cop table:l2, index:L_ORDERKEY, L_LINENUMBER, range: decided by [l1.l_orderkey], keep order:false
│ ├─IndexScan_50 1.00 cop table:l2, index:L_ORDERKEY, L_LINENUMBER, range: decided by [ eq(l2.l_orderkey, l1.l_orderkey) ], keep order:false
│ └─TableScan_51 1.00 cop table:lineitem, keep order:false
└─IndexLookUp_36 240004648.80 root
├─IndexScan_33 1.00 cop table:l3, index:L_ORDERKEY, L_LINENUMBER, range: decided by [l1.l_orderkey], keep order:false
├─IndexScan_33 1.00 cop table:l3, index:L_ORDERKEY, L_LINENUMBER, range: decided by [ eq(l3.l_orderkey, l1.l_orderkey) ], keep order:false
└─Selection_35 240004648.80 cop gt(l3.l_receiptdate, l3.l_commitdate)
└─TableScan_34 1.00 cop table:lineitem, keep order:false
/*
Expand Down
6 changes: 3 additions & 3 deletions executor/index_lookup_join_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ func (s *testSuite) TestIndexJoinUnionScan(c *C) {
"│ └─TableScan_14 10000.00 cop table:t1, range:[-inf,+inf], keep order:false, stats:pseudo",
"└─UnionScan_11 10.00 root ",
" └─IndexLookUp_10 10.00 root ",
" ├─IndexScan_8 10.00 cop table:t2, index:a, range: decided by [test.t1.a], keep order:false, stats:pseudo",
" ├─IndexScan_8 10.00 cop table:t2, index:a, range: decided by [ eq(test.t2.a, test.t1.a) ], keep order:false, stats:pseudo",
" └─TableScan_9 10.00 cop table:t2, keep order:false, stats:pseudo",
))
tk.MustQuery("select /*+ TIDB_INLJ(t1, t2)*/ * from t1 join t2 on t1.a = t2.a").Check(testkit.Rows(
Expand All @@ -83,7 +83,7 @@ func (s *testSuite) TestIndexJoinUnionScan(c *C) {
" │ └─TableScan_13 10000.00 cop table:t1, range:[-inf,+inf], keep order:false, stats:pseudo",
" └─UnionScan_10 10.00 root ",
" └─IndexReader_9 10.00 root index:IndexScan_8",
" └─IndexScan_8 10.00 cop table:t2, index:a, range: decided by [test.t1.a], keep order:false, stats:pseudo",
" └─IndexScan_8 10.00 cop table:t2, index:a, range: decided by [ eq(test.t2.a, test.t1.a) ], keep order:false, stats:pseudo",
))
tk.MustQuery("select /*+ TIDB_INLJ(t1, t2)*/ t1.a, t2.a from t1 join t2 on t1.a = t2.a").Check(testkit.Rows(
"2 2",
Expand All @@ -110,7 +110,7 @@ func (s *testSuite) TestBatchIndexJoinUnionScan(c *C) {
" │ └─TableScan_26 10000.00 cop table:t1, range:[-inf,+inf], keep order:false, stats:pseudo",
" └─UnionScan_23 10.00 root ",
" └─IndexReader_22 10.00 root index:IndexScan_21",
" └─IndexScan_21 10.00 cop table:t2, index:a, range: decided by [test.t1.a], keep order:false, stats:pseudo",
" └─IndexScan_21 10.00 cop table:t2, index:a, range: decided by [ eq(test.t2.a, test.t1.a) ], keep order:false, stats:pseudo",
))
tk.MustQuery("select /*+ TIDB_INLJ(t1, t2)*/ count(*) from t1 join t2 on t1.a = t2.id").Check(testkit.Rows(
"4",
Expand Down
3 changes: 1 addition & 2 deletions planner/core/exhaust_physical_plans.go
Original file line number Diff line number Diff line change
Expand Up @@ -457,8 +457,7 @@ func (p *LogicalJoin) getIndexJoinByOuterIdx(prop *property.PhysicalProperty, ou

func (p *LogicalJoin) buildRangeDecidedByInformation(idxCols []*expression.Column, idxOff2KeyOff []int,
outerJoinKeys []*expression.Column, accesses []expression.Expression) string {
buffer := bytes.NewBufferString("")
buffer.WriteString("range decided by:[")
buffer := bytes.NewBufferString("[")
for idxOff, keyOff := range idxOff2KeyOff {
if keyOff == -1 {
continue
Expand Down

0 comments on commit d9d51d8

Please sign in to comment.