Repository navigation
Stable 25.8 Backport of #102156 - Fix Nullable(X)->Y cross-type ALTER MODIFY COLUMN - #2709
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)
Adapted the fix by using `std::make_shared` instead of `make_intrusive`; dropped test Case 9 because `Nullable(Tuple)` and `allow_experimental_nullable_tuple_type` don't exist in stable-25.8
|
Backporter: cherry-pick conflicts resolved by AI Conflicted files:
Commits:
|
CI triage for #2709 (head
|
| Check | Failure | Classification |
|---|---|---|
| Stateless tests (amd_asan, distributed plan, sequential) | 02789_filesystem_cache_alignment |
❌ Not PR-related: outbound network timeout to GitHub |
| DCO | Missing Signed-off-by |
❌ Not PR-related: process check, fails on sibling backports too |
1. Stateless tests (amd_asan, distributed plan, sequential): 02789_filesystem_cache_alignment
Taken from the praktika report (Failed: 1, Passed: 653):
Code: 1000. DB::Exception: Timeout: connect timed out: 185.199.109.133:443. (POCO_EXCEPTION)
...
18. DB::WebObjectStorage::loadFiles(...)
19. DB::WebObjectStorage::tryGetFileInfo(...)
20. DB::MetadataStorageFromStaticFilesWebServer::existsFile(...)
21. DB::SystemRemoteDataPathsSource::nextFile()
- The test's own checks produced the expected output (
OK/0lines in stdout). It failed only because the query onsystem.remote_data_pathswalks every disk the server knows about. That includes the ad-hoctype = webdisk that03355_mergetree_table_disk.sqlregisters earlier in the same server lifetime (endpoint = 'https://raw.githubusercontent.com/ClickHouse/web-tables-demo/...'). The connect to GitHub's IP (185.199.109.133) timed out from the runner. - This PR only touches
src/Interpreters/inplaceBlockConversions.cpp(the Nullable→non-NullableDEFAULTconversion duringALTER MODIFY COLUMN). Neither the web object storage, the filesystem cache norsystem.remote_data_pathsis involved. - Next step: safe to re-run. If you want to harden this, 02789 could filter
system.remote_data_pathsbydisk_name, so a leftover web disk from another test can't be reached. That would go in a separate PR, not this one.
2. DCO
Neither commit (bfa54d5038 upstream merge, 635a666cb3 conflict resolution) has a Signed-off-by: trailer. The same check fails on other stable-25.8 backports, e.g. #2694, so it's the usual non-blocking state for these PRs. Next step: ignore, or have a maintainer set DCO to pass, following the usual process for backports.
Health check of the PR's own change
- The new test
03575_modify_column_null_to_default_cross_typepassedStateless tests (amd_asan, flaky check): 50/50 runs. - Every other stateless suite that ran is green: Fast test, debug/ubsan/asan parallel+sequential, old analyzer + DatabaseReplicated, ParallelReplicas, AsyncInsert, distributed plan s3.
- tsan/msan/arm jobs were skipped on purpose by the CI options in the PR body (job reasons:
job name includes excluded tag 'tsan'/'msan'/'arm'). So this PR has no TSAN/MSAN coverage. That's acceptable for a change limited toinplaceBlockConversions.cpp, but you should know it. - The conflict resolution (
std::make_sharedinstead ofmake_intrusive, dropping theNullable(Tuple)case 9 that 25.8 can't express) matches the 25.8 APIs, and every build that ran succeeded.
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: