diff --git a/dbms/src/Flash/Coprocessor/RemoteRequest.cpp b/dbms/src/Flash/Coprocessor/RemoteRequest.cpp index 7354b85c521..eb1c5de9abf 100644 --- a/dbms/src/Flash/Coprocessor/RemoteRequest.cpp +++ b/dbms/src/Flash/Coprocessor/RemoteRequest.cpp @@ -69,8 +69,11 @@ RemoteRequest RemoteRequest::build( } else { - const auto & col_info = table_info.getColumnInfo(col_id); - schema.emplace_back(std::make_pair(col_info.name, col_info)); + // https://github.com/pingcap/tiflash/issues/8601 + // If the precision of the `TIME`(which is MyDuration in TiFlash) type is modified, + // TiFlash storage layer may not trigger `sync_schema` and update table info. + // Therefore, the column info in the TiDB request will be used in this case. + schema.emplace_back(std::make_pair(table_info.getColumnInfo(col_id).name, col)); } dag_req.add_output_offsets(i); } diff --git a/tests/fullstack-test/expr/issue_1796.test b/tests/fullstack-test/issues/issue_1796.test similarity index 100% rename from tests/fullstack-test/expr/issue_1796.test rename to tests/fullstack-test/issues/issue_1796.test diff --git a/tests/fullstack-test/expr/issue_3333.test b/tests/fullstack-test/issues/issue_3333.test similarity index 100% rename from tests/fullstack-test/expr/issue_3333.test rename to tests/fullstack-test/issues/issue_3333.test diff --git a/tests/fullstack-test/expr/issue_3373.test b/tests/fullstack-test/issues/issue_3373.test similarity index 100% rename from tests/fullstack-test/expr/issue_3373.test rename to tests/fullstack-test/issues/issue_3373.test diff --git a/tests/fullstack-test/expr/issue_3447.test b/tests/fullstack-test/issues/issue_3447.test similarity index 100% rename from tests/fullstack-test/expr/issue_3447.test rename to tests/fullstack-test/issues/issue_3447.test diff --git a/tests/fullstack-test/expr/issue_7695.test b/tests/fullstack-test/issues/issue_7695.test similarity index 100% rename from tests/fullstack-test/expr/issue_7695.test rename to tests/fullstack-test/issues/issue_7695.test diff --git a/tests/fullstack-test/expr/issue_8113.test b/tests/fullstack-test/issues/issue_8113.test similarity index 100% rename from tests/fullstack-test/expr/issue_8113.test rename to tests/fullstack-test/issues/issue_8113.test diff --git a/tests/fullstack-test/expr/issue_8482.test b/tests/fullstack-test/issues/issue_8482.test similarity index 100% rename from tests/fullstack-test/expr/issue_8482.test rename to tests/fullstack-test/issues/issue_8482.test diff --git a/tests/fullstack-test/issues/issue_8601.test b/tests/fullstack-test/issues/issue_8601.test new file mode 100644 index 00000000000..78a31eb5095 --- /dev/null +++ b/tests/fullstack-test/issues/issue_8601.test @@ -0,0 +1,72 @@ +# Copyright 2024 PingCAP, Inc. +# +# 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() +=> DBGInvoke __enable_schema_sync_service('false') + +mysql> drop table if exists test.t; +mysql> create table if not exists test.t(a time(4)); + +mysql> insert into test.t values('700:10:10.123456'); +mysql> insert into test.t values('-700:10:10.123456'); +mysql> alter table test.t set tiflash replica 1; +func> wait_table test t + +## time(4) to time(6) +mysql> alter table test.t modify column a time(6); + +mysql> use test; set tidb_enforce_mpp=1; set tidb_isolation_read_engines='tiflash'; select a from test.t; ++-------------------+ +| a | ++-------------------+ +| 700:10:10.123500 | +| -700:10:10.123500 | ++-------------------+ + +=> DBGInvoke __enable_fail_point(force_remote_read_for_batch_cop) +mysql> use test; set tidb_enforce_mpp=1; set tidb_isolation_read_engines='tiflash'; select a from test.t; ++-------------------+ +| a | ++-------------------+ +| 700:10:10.123500 | +| -700:10:10.123500 | ++-------------------+ +=> DBGInvoke __disable_fail_point(force_remote_read_for_batch_cop) + +## time(6) to time(2) +mysql> alter table test.t modify column a time(2); + +mysql> use test; set tidb_enforce_mpp=1; set tidb_isolation_read_engines='tiflash'; select a from test.t; ++---------------+ +| a | ++---------------+ +| 700:10:10.12 | +| -700:10:10.12 | ++---------------+ + +=> DBGInvoke __enable_fail_point(force_remote_read_for_batch_cop) +mysql> use test; set tidb_enforce_mpp=1; set tidb_isolation_read_engines='tiflash'; select a from test.t; ++---------------+ +| a | ++---------------+ +| 700:10:10.12 | +| -700:10:10.12 | ++---------------+ +=> DBGInvoke __disable_fail_point(force_remote_read_for_batch_cop) + +# Clean up. +mysql> drop table if exists test.t + +=> DBGInvoke __enable_schema_sync_service('true')