Make the Alias table engine non-experimental#103488
Conversation
The `Alias` table engine is now production-ready. The setting `allow_experimental_alias_table_engine` is moved to `OBSOLETE_SETTINGS` so existing profiles and queries that set it continue to parse without error. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Blocked by #103118 |
…ttings The setting is now obsolete, not removed — it still parses and is a no-op. `enableAllExperimentalSettings` is used by `DatabaseReplicated::recoverLostReplica` to re-create tables when the original CREATE settings are unavailable, so it should also set obsolete experimental gates (matching `allow_experimental_window_functions`, `allow_experimental_map_type`, `allow_experimental_vector_similarity_index`, etc.). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…le_engine` The setting is now obsolete and no longer consulted at runtime, so the `compatibility` setting cannot restore the pre-26.5 behavior of requiring `allow_experimental_alias_table_engine = 1`. The history entry was operationally a no-op. Set the obsolete default back to `false` so the default value matches the 26.4 baseline and no transition is required in `SettingsChangesHistory.cpp`. Addresses review feedback on #103488
…perimental # Conflicts: # src/Storages/StorageAlias.cpp
…as_table_engine` Addresses review feedback on #103488: the existing `03636_storage_alias_*` tests still set `allow_experimental_alias_table_engine = 1` first, so the new default path (where the setting is no longer required) was untested. The test creates an `Alias` table without the flag, then verifies that the obsolete setting still parses as a no-op for both `1` and `0`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Master has three other tests with the `04141_` prefix (`04141_array_lowcard_arithmetic_monotonicity`, `04141_divide_by_zero_constant_monotonicity`, `04141_windowID_with_timezone_string`) added concurrently. Bump our new test to the next available number for clarity. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Master has two more tests with the `04145_` prefix added concurrently (`04145_h3_polygon_to_cells_invalid_type`, `04145_url_glob_parallelize_output`). Bump our new test to the next available number for clarity. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The entry recorded `allow_experimental_alias_table_engine` as a no-op change (`false -> false`) for `26.5`, but with the runtime check now removed from `StorageAlias`, the `compatibility` setting can no longer restore pre-`26.5` behavior anyway. Drop the entry to avoid implying a compatibility guarantee that the code does not provide. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…perimental # Conflicts: # src/Core/Settings.cpp
|
@groeneai, investigate the failure: https://s3.amazonaws.com/clickhouse-test-reports/json.html?PR=103488&sha=e19f797220055d6bf832847454ee60c545557f20&name_0=PR&name_1=Unit%20tests%20%28tsan%2C%20function_prop_fuzzer%29 and provide a fix in a separate PR. The |
|
@groeneai, the remaining CI failures look unrelated to this PR:
|
| @@ -330,11 +328,6 @@ void registerStorageAlias(StorageFactory & factory) | |||
|
|
|||
There was a problem hiding this comment.
This hunk makes CREATE TABLE ... ENGINE = Alias(...) generally available, but AliasSink::consume still creates a fresh InterpreterInsertQuery per chunk. With insert_deduplication_token, multi-block inserts through Alias can still deduplicate away blocks 2..N (silent row loss).
That issue is tracked in #103118, and the fix PR #103246 is still open/draft.
Please keep Alias behind the experimental gate until that write-path fix lands, or merge the onStart/single-pipeline fix with its regression test in this PR.
|
@alexey-milovidov — confirmed, both items are tracked under in‑flight fixes: 1. The umbrella covers two distinct code paths, each fixed by a separate PR:
Both PRs target the same root pattern (FixedString NUL‑padding handling differs across const-vs-non-const dispatch and across the 2. This belongs to the chronic No follow‑up action requested on the |
LLVM Coverage ReportChanged lines: 100.00% (22/22) · Uncovered code |

The
Aliastable engine is now production-ready, so drop theallow_experimental_alias_table_enginegate onCREATE TABLE ... ENGINE = Alias(...). The setting itself is moved toOBSOLETE_SETTINGSso existing profiles and queries that set it continue to parse without error.Changelog category (leave one):
Changelog entry (a user-readable short description of the changes that goes into CHANGELOG.md):
The
Aliastable engine is now non-experimental and available without theallow_experimental_alias_table_enginesetting.Documentation entry for user-facing changes
Version info
26.5.1.833