From 8b2404e2b22dcc88b20d2df8ea4c3d70d2315b76 Mon Sep 17 00:00:00 2001 From: Duc Canh Le Date: Mon, 16 Sep 2024 13:48:47 +0000 Subject: [PATCH] fix coredump when remove column settings on special columns Signed-off-by: Duc Canh Le --- src/Storages/AlterCommands.cpp | 5 +++++ tests/queries/0_stateless/02870_per_column_settings.sql | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/Storages/AlterCommands.cpp b/src/Storages/AlterCommands.cpp index ef76bc691ec..bb2fb6482e9 100644 --- a/src/Storages/AlterCommands.cpp +++ b/src/Storages/AlterCommands.cpp @@ -1478,6 +1478,11 @@ void AlterCommands::validate(const StoragePtr & table, ContextPtr context) const ErrorCodes::BAD_ARGUMENTS, "Column {} doesn't have COMMENT, cannot remove it", backQuote(column_name)); + if (command.to_remove == AlterCommand::RemoveProperty::SETTINGS && column_from_table.settings.empty()) + throw Exception( + ErrorCodes::BAD_ARGUMENTS, + "Column {} doesn't have SETTINGS, cannot remove it", + backQuote(column_name)); } modified_columns.emplace(column_name); diff --git a/tests/queries/0_stateless/02870_per_column_settings.sql b/tests/queries/0_stateless/02870_per_column_settings.sql index c3050222bc8..db76f3f5814 100644 --- a/tests/queries/0_stateless/02870_per_column_settings.sql +++ b/tests/queries/0_stateless/02870_per_column_settings.sql @@ -71,3 +71,8 @@ CREATE TABLE tab ENGINE = MergeTree ORDER BY id SETTINGS min_bytes_for_wide_part = 1; -- {serverError UNKNOWN_SETTING} + +-- https://github.com/ClickHouse/ClickHouse/issues/69634 +CREATE TABLE t0 (c0 Int8) ENGINE = CollapsingMergeTree(c0) ORDER BY tuple(); +ALTER TABLE t0 MODIFY COLUMN c0 REMOVE SETTINGS; -- {serverError BAD_ARGUMENTS} +DROP TABLE t0;