Repository navigation
Antalya 25.8 Backport of #102156 - Fix Nullable(X)->Y cross-type ALTER MODIFY COLUMN - #2710
Conversation
…pe-modify-upstream Fix Nullable(X)->Y cross-type ALTER MODIFY COLUMN Conflicts committed as-is; the next commit resolves them: - src/Interpreters/inplaceBlockConversions.cpp (both modified)
Resolved the inplaceBlockConversions.cpp conflict (antalya-25.8 uses std::make_shared) and dropped test Case 9, which needs Nullable(Tuple) support antalya-25.8 lacks.
|
Backporter: cherry-pick conflicts resolved by AI Conflicted files:
Commits:
|
CI triage for
|
| Check | Classification | PR-caused? |
|---|---|---|
| Stateless tests (amd_debug, AsyncInsert, s3 storage, sequential) | Known upstream crash in the mutation path (ClickHouse#102153) | ❌ No |
| DCO | No Signed-off-by on the backport commits. Fails the same way on other backports |
❌ No |
All other checks that ran passed, including the regression suites. The new test 03575_modify_column_null_to_default_cross_type passed in every stateless job.
1. Stateless tests (amd_debug, AsyncInsert, s3 storage, sequential): server abort
The test that failed is 00992_system_parts_race_condition_zookeeper_long. It failed with server died. The server hit a logical error in a background mutation on a replicated table:
<Fatal> : Logical error: 'Part 2_0_117_1_115 with metadata version 14 contains column h that is absent in table test_8izlr8bw.alter_table1 (...) with metadata version 12'.
5. src/Storages/MergeTree/MutateTask.cpp:368: DB::MutationHelpers::splitAndModifyMutationCommands
6. src/Storages/MergeTree/MutateTask.cpp:2616: DB::MutateTask::prepare
7. src/Storages/MergeTree/MutateTask.cpp:2358: DB::MutateTask::execute
The follow-up results (Killed by signal, Fatal messages, Logical error thrown) come from this same abort.
Why this is not the PR:
- The PR only changes the
Nullable(X) -> Ybranch ofconvertRequiredExpressionsinsrc/Interpreters/inplaceBlockConversions.cpp. That code runs when a part is read, to convert old column data to a new type. - The crash happens earlier, in a check in
splitAndModifyMutationCommands. It compares the part's metadata version with the table's metadata version, and it fails before any column conversion runs. - The test does
ADD COLUMN h String→MODIFY COLUMN h UInt64→DROP COLUMN hwhile replicas run concurrently. That is a String → UInt64 change and never reaches the Nullable branch the PR touches. The race is between replicas applying metadata versions. - Upstream has the same stack frames
splitAndModifyMutationCommands→MutateTask::prepare→ReplicatedMergeMutateTaskBase::executeImplas an open CI crash, [CI crash] Mutation command splitting failed during alter operation ClickHouse/ClickHouse#102153. There it showed up in upstream master CI and in an unrelated upstream PR.
Next step: safe to re-run this job. If it keeps showing up on antalya-25.8, the upstream fix for ClickHouse#102153 is the thing to backport, not a change to this PR.
2. DCO
Neither commit has a Signed-off-by line: 5cf44271cb is the upstream merge commit and 1dd1eb6183 is the conflict resolution. DCO fails the same way on the sibling backport #2709 and on the already-merged backports #2695 and #2673. Nothing needs fixing. If you do want it green, it needs git commit --amend -s plus a force-push, and I can't do force-pushes.
Overall: nothing in CI points at the backport itself, so I suggest no code changes to this PR.
Changelog category (leave one):
Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md):
Fixed
ALTER MODIFY COLUMNfailing when converting aNullablecolumn to a different type with aDEFAULT(e.g.Nullable(UInt8)→String,LowCardinality(String), orArray(UInt8)). (ClickHouse#102156 by @il9ue)Documentation entry for user-facing changes
...
CI/CD Options
Exclude tests:
Regression jobs to run: