From 46d88aa9f18766f6d2414e2a8c5d7462c4188d92 Mon Sep 17 00:00:00 2001 From: Jianjun Liao Date: Wed, 12 Nov 2025 13:56:28 +0800 Subject: [PATCH] add integration test for ingest coner case test Signed-off-by: Jianjun Liao --- br/pkg/restore/log_client/client.go | 5 +++++ br/tests/br_pitr/check/check_ingest_repair.sh | 8 ++++++++ br/tests/br_pitr/incremental_data/ingest_repair.sql | 4 ++++ br/tests/br_pitr/prepare_data/ingest_repair.sql | 4 ++++ 4 files changed, 21 insertions(+) diff --git a/br/pkg/restore/log_client/client.go b/br/pkg/restore/log_client/client.go index a7b4b400de195..0f030d458e559 100644 --- a/br/pkg/restore/log_client/client.go +++ b/br/pkg/restore/log_client/client.go @@ -1648,6 +1648,11 @@ func (rc *LogClient) generateRepairIngestIndexSQLs( addArgs = append(addArgs, info.SchemaName.O, info.TableName.O, info.IndexInfo.Name.O) addArgs = append(addArgs, info.ColumnArgs...) } + // WHERE CONDITION + if len(info.IndexInfo.ConditionExprString) > 0 { + addSQL.WriteString(" WHERE ") + addSQL.WriteString(info.IndexInfo.ConditionExprString) + } // USING BTREE/HASH/RTREE indexTypeStr := info.IndexInfo.Tp.String() if len(indexTypeStr) > 0 { diff --git a/br/tests/br_pitr/check/check_ingest_repair.sh b/br/tests/br_pitr/check/check_ingest_repair.sh index 1fd252547da8a..c3ab132b92c2d 100644 --- a/br/tests/br_pitr/check/check_ingest_repair.sh +++ b/br/tests/br_pitr/check/check_ingest_repair.sh @@ -140,6 +140,10 @@ check_contains "ON DELETE SET NULL ON UPDATE CASCADE" run_sql "SELECT count(*) AS RESCNT FROM INFORMATION_SCHEMA.TIDB_INDEXES WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'pairs19' AND INDEX_ID = 2 AND IS_GLOBAL = 1;" check_contains "RESCNT: 1" +## check table test.pairs20 +run_sql "SELECT COUNT(*) AS RESCNT FROM INFORMATION_SCHEMA.TIDB_INDEXES WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'pairs20' AND INDEX_ID > 2 AND PREDICATE = '\`id\` > 5'" +check_contains "RESCNT: 2" + # adjust some index to be visible run_sql "ALTER TABLE test.pairs ALTER INDEX i1 VISIBLE;" @@ -198,3 +202,7 @@ run_sql "select count(*) AS RESCNT from test.pairs19 use index(i1) where pid = 1 check_not_contains "RESCNT: 0" run_sql "select count(*) AS RESCNT from test.pairs19 use index(i1) where pid = 10;" check_not_contains "RESCNT: 0" +run_sql "select count(*) AS RESCNT from test.pairs20 use index(i1) where pid1 = 10"; +check_not_contains "RESCNT: 0" +run_sql "select count(*) AS RESCNT from test.pairs20 use index(i2) where pid2 = 10"; +check_not_contains "RESCNT: 0" diff --git a/br/tests/br_pitr/incremental_data/ingest_repair.sql b/br/tests/br_pitr/incremental_data/ingest_repair.sql index b1c847d0b154c..3f576ed1d645e 100644 --- a/br/tests/br_pitr/incremental_data/ingest_repair.sql +++ b/br/tests/br_pitr/incremental_data/ingest_repair.sql @@ -81,3 +81,7 @@ ALTER TABLE test2.pairs18_child ADD CONSTRAINT fk_0 FOREIGN KEY (pid) REFERENCES -- test global index alter table test.pairs19 add unique index i1(pid) global; + +-- test patial index +ALTER TABLE test.pairs20 ADD INDEX i1(pid1) WHERE id > 5; +ALTER TABLE test.pairs20 ADD UNIQUE INDEX i2(pid2) WHERE id > 5; diff --git a/br/tests/br_pitr/prepare_data/ingest_repair.sql b/br/tests/br_pitr/prepare_data/ingest_repair.sql index b193c9ba58f56..b38df433fef8e 100644 --- a/br/tests/br_pitr/prepare_data/ingest_repair.sql +++ b/br/tests/br_pitr/prepare_data/ingest_repair.sql @@ -93,3 +93,7 @@ INSERT INTO test2.pairs18_child VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5); -- test global index CREATE TABLE test.pairs19 (id int, pid int) partition by range(id) (partition p0 values less than (6), partition p1 values less than (11)); INSERT INTO test.pairs19 values (1, 1), (10, 10); + +-- test partial index +CREATE TABLE test.pairs20 (id int PRIMARY KEY, pid1 int, pid2 int); +INSERT INTO test.pairs20 values (1, 1, 1), (10, 10, 10);