Allowlist the expected 04510 mutation error in the upgrade check
`04510_mutation_query_plan_only_virtual_columns` asserts that `ALTER TABLE ... DELETE WHERE _table != ''` fails: `_table` comes from the local storage id, which a mutation cannot materialize, so the per-part read reaches `getFieldForConstVirtualColumn` and throws `NO_SUCH_COLUMN_IN_TABLE`. The throw happens in a background `MutatePlainMergeTreeTask`, so the client receives only the asserted `UNFINISHED` and the functional test passes, while `Code: 16` is written to the server log at `<Error>` level. The upgrade job replays it. `upgrade_runner.sh` runs the previous release's test tree, and `--upgrade-check` implies `--fake-drop`, so the table and its failed mutation survive the test's own `DROP`. The new server loads the pending mutation and retries it, 84 times inside the 60 second observation window, three `<Error>` lines each. All 252 lines reach `upgrade_error_messages.txt` and fail the job on a by-design test error. This is the `FIXME #39174` class the surrounding comment block already documents. The entry names the column and the `MergeTreeSequentialSource` read path rather than the emitting component, for two reasons. The error leaks in three shapes (`MutatePlainMergeTreeTask:`, the `executeStep()` line, and the wrapping `MergeTreeBackgroundExecutor:` line, 84 each), which only the shared message substring covers in one entry; and both qualifiers carry signal. Dropping the column name would also mask `Unexpected const virtual column: _sample_factor`, which from a mutation is #78465, the bug 04510 exists to guard. Dropping the read-path phrase would mask a regression on the query read path, which fills `_table` today. `_database` is left unmasked deliberately: no test mutates on it, so a first occurrence should be reviewed rather than pre-suppressed. Validated by replaying the failing run's 140435-line pre-filter log through the scan pipeline. The unmodified filter reproduces the job's own `upgrade_error_messages.txt` byte for byte (252 lines); with the entry no line survives and the job reports `No Error messages after server upgrade`. Exactly those 252 lines are removed. Twelve control lines, built from the real ones by substituting a single field, all still surface: `_sample_factor`, `_database`, a `LOGICAL_ERROR` from the same task, and the query-path variant.
G
Groene AI committed
16058d92c542de9ae7214ea00268898a859813c4
Parent: bb113c3