184 похожих чатов

При наличии колонки типа Enum в ключе сортировки ReplicatedMergeTree невозможно

сделать alter и убрать значение из множества значений Enum'a.
Подскажите, пожалуйста, это корректное поведение?
пример
CREATE TABLE t ON CLUSTER replicated
(
`a` UInt64,
`b` Enum8('a' = 1, 'b' = 2)
)
ENGINE = ReplicatedMergeTree('/clickhouse/tables/default/{shard}/t', '{replica}')
ORDER BY (b, a)

insert into t values (1,1),(2,2)
Далее запрос на кластере ALTER TABLE t ON CLUSTER replicated MODIFY COLUMN `b Enum8('a' = 1)` падает с ошибкой Cannot execute replicated DDL query, maximum retires exceeded
если делать на одном хосте, то ошибка следующая:
Received exception from server (version 20.8.12):
Code: 524. DB::Exception: Received from localhost:9100. DB::Exception: ALTER of key column b from type Enum8('a' = 1, 'b' = 2) to type Enum8('a' = 1) must be metadata-only.


Версия КХ 20.8.12.2

14 ответов

17 просмотров

А зачем вообще убирать из enum значение?

Andrei-K Автор вопроса
Vitaly
А зачем вообще убирать из enum значение?

К сути дела не относится, но так работают миграции, чтобы базу можно было привести к предыдущему состоянию

Andrei-K Автор вопроса

мне кажется что это логично - что делать если уже записал данные с новым значением?

Andrei-K Автор вопроса
Ivan Kalinin
мне кажется что это логично - что делать если уже ...

Енам хранится просто как UInt8, конкретно в данных ничего не меняется при изменении его

Andrei K
Енам хранится просто как UInt8, конкретно в данных...

кликхаус же должен мапить ваше значение в какой то стринг

Andrei-K Автор вопроса
Dmitry [Altinity] Titov
кликхаус же должен мапить ваше значение в какой то...

если при выборке значение не присутствует для маппинга, то КХ кидает ошибку

Andrei K
если при выборке значение не присутствует для мапп...

это только при инсерте. а что делать, если данные уже на диске?

Andrei K
если при выборке значение не присутствует для мапп...

Лучше получить ошибку во время неразрешенной операции, чем уже постфактум.

Andrei-K Автор вопроса
Dmitry [Altinity] Titov
Лучше получить ошибку во время неразрешенной опера...

Возможно, но речь не об этом) Указано, что из енама можно убирать значения

Andrei K
Возможно, но речь не об этом) Указано, что из енам...

Скорее всего это не относится к enum которые учувствуют в ORDER BY и PARTITION KEY. Раньше туда в них даже добавлять значения было нельзя. Впрочем вы можете сделать feature request на гитхабе

Andrei-K Автор вопроса
Dmitry [Altinity] Titov
Скорее всего это не относится к enum которые учувс...

На гитхабе видел несколько багов, по поводу того, что нельзя альтерить Enum'ы, которые участвуют в Partition by. Их исправляли

чаще всего в таком случае: просто забыли разрешить такую операцию, потому что никто не просил, и внутри яндекса это не нужно

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта