@@ -1868,3 +1868,57 @@ func TestIndexMergeCarePreferTiflash(t *testing.T) {
1868
1868
" └─Selection 0.00 mpp[tiflash] ge(test.t.m, 1726910326), le(test.t.m, 1726910391), not(in(test.t.a, -1, 0)), or(eq(test.t.w, \" 1123\" ), eq(test.t.l, \" 1123\" ))" ,
1869
1869
" └─TableFullScan 10.00 mpp[tiflash] table:a pushed down filter:eq(test.t.s, 0), keep order:false, stats:pseudo" ))
1870
1870
}
1871
+
1872
+ func TestIssue59877 (t * testing.T ) {
1873
+ store := testkit .CreateMockStore (t , withMockTiFlash (1 ))
1874
+ tk := testkit .NewTestKit (t , store )
1875
+ tk .MustExec ("use test" )
1876
+ tk .MustExec ("drop table if exists t1, t2, t3" )
1877
+ tk .MustExec ("create table t1(id bigint, v1 int)" )
1878
+ tk .MustExec ("alter table t1 set tiflash replica 1" )
1879
+ tb := external .GetTableByName (t , tk , "test" , "t1" )
1880
+ err := domain .GetDomain (tk .Session ()).DDL ().UpdateTableReplicaInfo (tk .Session (), tb .Meta ().ID , true )
1881
+ require .NoError (t , err )
1882
+ tk .MustExec ("create table t2(id bigint unsigned, v1 int)" )
1883
+ tk .MustExec ("alter table t2 set tiflash replica 1" )
1884
+ tb = external .GetTableByName (t , tk , "test" , "t2" )
1885
+ err = domain .GetDomain (tk .Session ()).DDL ().UpdateTableReplicaInfo (tk .Session (), tb .Meta ().ID , true )
1886
+ require .NoError (t , err )
1887
+ tk .MustExec ("create table t3(id bigint, v1 int)" )
1888
+ tk .MustExec ("alter table t3 set tiflash replica 1" )
1889
+ tb = external .GetTableByName (t , tk , "test" , "t3" )
1890
+ err = domain .GetDomain (tk .Session ()).DDL ().UpdateTableReplicaInfo (tk .Session (), tb .Meta ().ID , true )
1891
+ require .NoError (t , err )
1892
+
1893
+ tk .MustExec ("set @@session.tidb_isolation_read_engines=\" tiflash\" " )
1894
+ // unistore does not support later materialization
1895
+ tk .MustExec ("set tidb_opt_enable_late_materialization=0" )
1896
+ tk .MustExec ("set @@session.tidb_allow_mpp=ON" )
1897
+ tk .MustExec ("set @@session.tidb_enforce_mpp=ON" )
1898
+ tk .MustExec ("set tidb_broadcast_join_threshold_size=0" )
1899
+ tk .MustExec ("set tidb_broadcast_join_threshold_count=0" )
1900
+ tk .MustExec ("set tiflash_fine_grained_shuffle_stream_count=8" )
1901
+ tk .MustExec ("set tidb_enforce_mpp=1" )
1902
+ tk .MustQuery ("explain format=\" brief\" select /*+ hash_join_build(t3) */ count(*) from t1 straight_join t2 on t1.id = t2.id straight_join t3 on t1.id = t3.id" ).Check (
1903
+ testkit .Rows ("HashAgg 1.00 root funcs:count(Column#18)->Column#10" ,
1904
+ "└─TableReader 1.00 root MppVersion: 2, data:ExchangeSender" ,
1905
+ " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough" ,
1906
+ " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#18" ,
1907
+ " └─HashJoin 15609.38 mpp[tiflash] inner join, equal:[eq(test.t1.id, test.t3.id)]" ,
1908
+ " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] " ,
1909
+ " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#17, collate: binary]" ,
1910
+ " │ └─Projection 9990.00 mpp[tiflash] test.t3.id, cast(test.t3.id, decimal(20,0))->Column#17" ,
1911
+ " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t3.id))" ,
1912
+ " │ └─TableFullScan 10000.00 mpp[tiflash] table:t3 keep order:false, stats:pseudo" ,
1913
+ " └─HashJoin(Probe) 12487.50 mpp[tiflash] inner join, equal:[eq(test.t1.id, test.t2.id)]" ,
1914
+ " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] " ,
1915
+ " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#13, collate: binary]" ,
1916
+ " │ └─Projection 9990.00 mpp[tiflash] test.t1.id, cast(test.t1.id, decimal(20,0))->Column#13" ,
1917
+ " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t1.id))" ,
1918
+ " │ └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ,
1919
+ " └─ExchangeReceiver(Probe) 9990.00 mpp[tiflash] " ,
1920
+ " └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#14, collate: binary]" ,
1921
+ " └─Projection 9990.00 mpp[tiflash] test.t2.id, cast(test.t2.id, decimal(20,0) UNSIGNED)->Column#14" ,
1922
+ " └─Selection 9990.00 mpp[tiflash] not(isnull(test.t2.id))" ,
1923
+ " └─TableFullScan 10000.00 mpp[tiflash] table:t2 keep order:false, stats:pseudo" ))
1924
+ }
0 commit comments