@@ -1868,3 +1868,87 @@ 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
+ << << << < HEAD
1872
+ == == == =
1873
+
1874
+ func TestIssue59703 (t * testing.T ) {
1875
+ store := testkit .CreateMockStore (t , withMockTiFlash (1 ))
1876
+ tk := testkit .NewTestKit (t , store )
1877
+ tk .MustExec ("use test" )
1878
+ tk .MustExec ("drop table if exists t" )
1879
+ tk .MustExec ("create table t(a int not null primary key, b int not null)" )
1880
+ tk .MustExec ("alter table t set tiflash replica 1" )
1881
+ tb := external .GetTableByName (t , tk , "test" , "t" )
1882
+ err := domain .GetDomain (tk .Session ()).DDLExecutor ().UpdateTableReplicaInfo (tk .Session (), tb .Meta ().ID , true )
1883
+ require .NoError (t , err )
1884
+ tk .MustExec ("insert into t values(1,0)" )
1885
+ tk .MustExec ("insert into t values(2,0)" )
1886
+ tk .MustExec ("set @@session.tidb_isolation_read_engines=\" tiflash\" " )
1887
+ // unistore does not support later materialization
1888
+ tk .MustExec ("set tidb_opt_enable_late_materialization=0" )
1889
+ tk .MustExec ("set @@session.tidb_allow_mpp=ON" )
1890
+
1891
+ failpoint .Enable ("github.com/pingcap/tidb/pkg/executor/internal/mpp/mpp_coordinator_execute_err" , "return()" )
1892
+ defer failpoint .Disable ("github.com/pingcap/tidb/pkg/executor/internal/mpp/mpp_coordinator_execute_err" )
1893
+
1894
+ err = tk .ExecToErr ("select count(*) from t" )
1895
+ require .Contains (t , err .Error (), "mock mpp error" )
1896
+ require .Equal (t , mppcoordmanager .InstanceMPPCoordinatorManager .GetCoordCount (), 0 )
1897
+ }
1898
+
1899
+ func TestIssue59877 (t * testing.T ) {
1900
+ store := testkit .CreateMockStore (t , withMockTiFlash (1 ))
1901
+ tk := testkit .NewTestKit (t , store )
1902
+ tk .MustExec ("use test" )
1903
+ tk .MustExec ("drop table if exists t1, t2, t3" )
1904
+ tk .MustExec ("create table t1(id bigint, v1 int)" )
1905
+ tk .MustExec ("alter table t1 set tiflash replica 1" )
1906
+ tb := external .GetTableByName (t , tk , "test" , "t1" )
1907
+ err := domain .GetDomain (tk .Session ()).DDLExecutor ().UpdateTableReplicaInfo (tk .Session (), tb .Meta ().ID , true )
1908
+ require .NoError (t , err )
1909
+ tk .MustExec ("create table t2(id bigint unsigned, v1 int)" )
1910
+ tk .MustExec ("alter table t2 set tiflash replica 1" )
1911
+ tb = external .GetTableByName (t , tk , "test" , "t2" )
1912
+ err = domain .GetDomain (tk .Session ()).DDLExecutor ().UpdateTableReplicaInfo (tk .Session (), tb .Meta ().ID , true )
1913
+ require .NoError (t , err )
1914
+ tk .MustExec ("create table t3(id bigint, v1 int)" )
1915
+ tk .MustExec ("alter table t3 set tiflash replica 1" )
1916
+ tb = external .GetTableByName (t , tk , "test" , "t3" )
1917
+ err = domain .GetDomain (tk .Session ()).DDLExecutor ().UpdateTableReplicaInfo (tk .Session (), tb .Meta ().ID , true )
1918
+ require .NoError (t , err )
1919
+
1920
+ tk .MustExec ("set @@session.tidb_isolation_read_engines=\" tiflash\" " )
1921
+ // unistore does not support later materialization
1922
+ tk .MustExec ("set tidb_opt_enable_late_materialization=0" )
1923
+ tk .MustExec ("set @@session.tidb_allow_mpp=ON" )
1924
+ tk .MustExec ("set @@session.tidb_enforce_mpp=ON" )
1925
+ tk .MustExec ("set tidb_broadcast_join_threshold_size=0" )
1926
+ tk .MustExec ("set tidb_broadcast_join_threshold_count=0" )
1927
+ tk .MustExec ("set tiflash_fine_grained_shuffle_stream_count=8" )
1928
+ tk .MustExec ("set tidb_enforce_mpp=1" )
1929
+ 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 (
1930
+ testkit .Rows ("HashAgg 1.00 root funcs:count(Column#18)->Column#10" ,
1931
+ "└─TableReader 1.00 root MppVersion: 3, data:ExchangeSender" ,
1932
+ " └─ExchangeSender 1.00 mpp[tiflash] ExchangeType: PassThrough" ,
1933
+ " └─HashAgg 1.00 mpp[tiflash] funcs:count(1)->Column#18" ,
1934
+ " └─Projection 15609.38 mpp[tiflash] test.t1.id, Column#14" ,
1935
+ " └─HashJoin 15609.38 mpp[tiflash] inner join, equal:[eq(test.t1.id, test.t3.id)]" ,
1936
+ " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] " ,
1937
+ " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#17, collate: binary]" ,
1938
+ " │ └─Projection 9990.00 mpp[tiflash] test.t3.id, cast(test.t3.id, decimal(20,0))->Column#17" ,
1939
+ " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t3.id))" ,
1940
+ " │ └─TableFullScan 10000.00 mpp[tiflash] table:t3 keep order:false, stats:pseudo" ,
1941
+ " └─Projection(Probe) 12487.50 mpp[tiflash] test.t1.id, Column#14" ,
1942
+ " └─HashJoin 12487.50 mpp[tiflash] inner join, equal:[eq(test.t1.id, test.t2.id)]" ,
1943
+ " ├─ExchangeReceiver(Build) 9990.00 mpp[tiflash] " ,
1944
+ " │ └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#13, collate: binary]" ,
1945
+ " │ └─Projection 9990.00 mpp[tiflash] test.t1.id, cast(test.t1.id, decimal(20,0))->Column#13" ,
1946
+ " │ └─Selection 9990.00 mpp[tiflash] not(isnull(test.t1.id))" ,
1947
+ " │ └─TableFullScan 10000.00 mpp[tiflash] table:t1 keep order:false, stats:pseudo" ,
1948
+ " └─ExchangeReceiver(Probe) 9990.00 mpp[tiflash] " ,
1949
+ " └─ExchangeSender 9990.00 mpp[tiflash] ExchangeType: HashPartition, Compression: FAST, Hash Cols: [name: Column#14, collate: binary]" ,
1950
+ " └─Projection 9990.00 mpp[tiflash] test.t2.id, cast(test.t2.id, decimal(20,0) UNSIGNED)->Column#14" ,
1951
+ " └─Selection 9990.00 mpp[tiflash] not(isnull(test.t2.id))" ,
1952
+ " └─TableFullScan 10000.00 mpp[tiflash] table:t2 keep order:false, stats:pseudo" ))
1953
+ }
1954
+ >> >> >> > b2a9059b5e1 (planner : Limit fine grained shuffle usage for mpp join operators to ensure shuffle keys are the same with actual join keys (#59884 ))
0 commit comments