diff --git a/pkg/ccl/testccl/sqlccl/explain_test.go b/pkg/ccl/testccl/sqlccl/explain_test.go index 87aaf389216f..e997ecd2723a 100644 --- a/pkg/ccl/testccl/sqlccl/explain_test.go +++ b/pkg/ccl/testccl/sqlccl/explain_test.go @@ -191,6 +191,7 @@ func TestExplainGist(t *testing.T) { for _, knownErr := range []string{ "invalid datum type given: RECORD, expected RECORD", // #117101 "expected equivalence dependants to be its closure", // #119045 + "not in index", // #133129 } { if strings.Contains(err.Error(), knownErr) { // Don't fail the test on a set of known errors. diff --git a/pkg/sql/schemachanger/dml_injection_test.go b/pkg/sql/schemachanger/dml_injection_test.go index 2c21ff74d285..7abd66441520 100644 --- a/pkg/sql/schemachanger/dml_injection_test.go +++ b/pkg/sql/schemachanger/dml_injection_test.go @@ -116,6 +116,9 @@ type testCase struct { schemaChange string expectedErr string skipIssue int + // Optional: If you want a query to run at each stage, you can include it here. + // We don't evaluate the results; we simply assert that the query executes without errors. + query string } // Captures testCase before t.Parallel is called. @@ -299,6 +302,17 @@ func TestAlterTableDMLInjection(t *testing.T) { }, schemaChange: "ALTER TABLE tbl ALTER PRIMARY KEY USING COLUMNS (insert_phase_ordinal, operation_phase_ordinal, operation)", }, + { + desc: "alter primary key and replace rowid in PK", + createTable: createTableNoPK, + setup: []string{ + "CREATE INDEX i1 ON tbl (val)", + }, + // Run a query against the secondary index at each stage. + query: "SELECT operation FROM tbl@i1", + schemaChange: "ALTER TABLE tbl ALTER PRIMARY KEY USING COLUMNS (insert_phase_ordinal, operation_phase_ordinal, operation)", + skipIssue: 133129, + }, { desc: "alter primary key using columns using hash", createTable: createTableNoPK, @@ -523,6 +537,12 @@ func TestAlterTableDMLInjection(t *testing.T) { require.Subset(t, expectedResults, actualResults, errorMessage) require.Subset(t, actualResults, expectedResults, errorMessage) + // If a query is provided, run it without checking the results—just + // ensure it doesn't fail. + if tc.query != "" { + _ = sqlDB.QueryStr(t, tc.query) + } + for i := 0; i < poIdx; i++ { insertPO := poSlice[i] // Verify 1 row is correctly deleted.