diff --git a/dbms/src/Core/SortCursor.h b/dbms/src/Core/SortCursor.h index b8b1e57f6a1..607c3c96f3f 100644 --- a/dbms/src/Core/SortCursor.h +++ b/dbms/src/Core/SortCursor.h @@ -1,5 +1,6 @@ #pragma once +#include #include #include #include @@ -72,7 +73,7 @@ struct SortCursorImpl sort_columns.push_back(block.safeGetByPosition(column_number).column.get()); - need_collation[j] = desc[j].collator != nullptr && typeid_cast(sort_columns.back()); /// TODO Nullable(String) + need_collation[j] = desc[j].collator != nullptr && typeid_cast(std::get<0>(removeNullable(sort_columns.back()))); has_collation |= need_collation[j]; } diff --git a/tests/fullstack-test/mpp/issue_1962.test b/tests/fullstack-test/issues/issue_1962.test similarity index 100% rename from tests/fullstack-test/mpp/issue_1962.test rename to tests/fullstack-test/issues/issue_1962.test diff --git a/tests/fullstack-test/mpp/issue_2471.test b/tests/fullstack-test/issues/issue_2471.test similarity index 100% rename from tests/fullstack-test/mpp/issue_2471.test rename to tests/fullstack-test/issues/issue_2471.test diff --git a/tests/fullstack-test/issues/issue_4519.test b/tests/fullstack-test/issues/issue_4519.test new file mode 100644 index 00000000000..1ec87c59af4 --- /dev/null +++ b/tests/fullstack-test/issues/issue_4519.test @@ -0,0 +1,45 @@ +# Copyright 2022 PingCAP, Ltd. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Preparation. +=> DBGInvoke __init_fail_point() + +mysql> drop table if exists test.test +mysql> create table test.test (col1 decimal(65, 10), col2 decimal(20, 20), col3 decimal(65, 0)) +mysql> insert into test.test values(0.1,0.1,1),(1.0,0.1,1),(0,0,0),(null,null,null),(99.9,0.99,99) + +mysql> alter table test.test set tiflash replica 1 + +func> wait_table test test + +mysql> use test; set tidb_allow_mpp=1;set tidb_enforce_mpp=1; set tidb_isolation_read_engines='tiflash'; select t1.col1, t2.col2 from test t1 join test t2 on t1.col1 = t2.col2; ++--------------+------------------------+ +| col1 | col2 | ++--------------+------------------------+ +| 0.1000000000 | 0.10000000000000000000 | +| 0.1000000000 | 0.10000000000000000000 | +| 0.0000000000 | 0.00000000000000000000 | ++--------------+------------------------+ + +mysql> use test; set tidb_allow_mpp=1;set tidb_enforce_mpp=1; set tidb_isolation_read_engines='tiflash'; select t1.col1, t2.col3 from test t1 join test t2 on t1.col1 = t2.col3; ++--------------+------+ +| col1 | col3 | ++--------------+------+ +| 1.0000000000 | 1 | +| 1.0000000000 | 1 | +| 0.0000000000 | 0 | ++--------------+------+ + +# Clean up. +mysql> drop table if exists test.test diff --git a/tests/tidb-ci/new_collation_fullstack/issue_6807.test b/tests/tidb-ci/new_collation_fullstack/issue_6807.test new file mode 100644 index 00000000000..7c836c0d154 --- /dev/null +++ b/tests/tidb-ci/new_collation_fullstack/issue_6807.test @@ -0,0 +1,39 @@ +# Copyright 2023 PingCAP, Ltd. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Preparation. +mysql> drop table if exists test.t1 +mysql> CREATE TABLE test.t1 (a varchar(20) COLLATE utf8mb4_general_ci DEFAULT NULL,id int(11) NOT NULL,PRIMARY KEY (id) /*T![clustered_index] CLUSTERED */) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; +mysql> insert into test.t1(a ,id) values('jlsf',1),(null,2),('YmkS',3),('0',4); +mysql> drop table if exists test.t2 +mysql> CREATE TABLE test.t2 (a varchar(20) COLLATE utf8mb4_general_ci DEFAULT NULL,b char(20) COLLATE utf8mb4_general_ci DEFAULT NULL,id int(11) NOT NULL,PRIMARY KEY (id) /*T![clustered_index] CLUSTERED */) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; +mysql> insert into test.t2(a,b,id) values('yMKs','jlsf',1),('yyds','YmkS',2),('cc',4,3),(null,null,4),('abc',null,5),(null,'df',6); + +mysql> alter table test.t1 set tiflash replica 1 +mysql> alter table test.t2 set tiflash replica 1 + +func> wait_table test t1 +func> wait_table test t2 + + +mysql> use test; set @@tidb_isolation_read_engines='tiflash'; set @@tidb_enforce_mpp=1; select max(a) from t1 where a in ( select b from t2 where a>b); ++--------+ +| max(a) | ++--------+ +| YmkS | ++--------+ + +# Clean up. +# mysql> drop table if exists test.t1 +# mysql> drop table if exists test.t2