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

Всем привет! Появилась нужда поменять тип колонки с UInt32 на

UInt64, документация по ALTER по этому поводу какая-то неоднозначная, вроде написано

When changing the type, values are converted as if the toType functions were applied to them. If only the default expression is changed, the query does not do anything complex, and is completed almost instantly.

при этом написано

Changing the column type is the only complex action – it changes the contents of files with data. For large tables, this may take a long time.

Подскажите как оно на самом деле происходит?

10 ответов

22 просмотра

а где тут противоречие? если меняете только значение DEFAULT — будет быстро, есть меняете значения в колонках — к ним применяется toType и файл колонки переписывается

Anton-Mikhalev Автор вопроса
ivan
а где тут противоречие? если меняете только значен...

По диагонали прочитал. Понял, спасибо. А если поменять тип то вставляемые новые данные во время конвертирования старых уже будут ложиться в UInt64 ?

Anton Mikhalev
По диагонали прочитал. Понял, спасибо. А если поме...

я бы не рисковал вставлять новые данные, пока мутация во всех партах не отработает

Anton-Mikhalev Автор вопроса
ivan
я бы не рисковал вставлять новые данные, пока мута...

Да вроде бы делаем так, но в случае с MATERIALIZE COLUMN

Anton Mikhalev
Да вроде бы делаем так, но в случае с MATERIALIZE ...

не понял при чем тут Materialize проблемы при modify column будут скорее с select, чем с insert

Anton-Mikhalev Автор вопроса
Denny [Altinity]
не понял при чем тут Materialize проблемы при mod...

там сказали про мутации, materialize тоже мутация

Anton Mikhalev
там сказали про мутации, materialize тоже мутация

ну modify column будет ждать на каждом парте пока он обработается предыдущей мутацией.

Anton-Mikhalev Автор вопроса
Denny [Altinity]
ну modify column будет ждать на каждом парте пока ...

я правильно понимаю что если не останавливать инсерты то изменение типа может себя непредсказуемо вести на селектах из этой таблицы?

Anton Mikhalev
я правильно понимаю что если не останавливать инсе...

Нет, инсерты тут ни при чем. Некоторые селекты упадут потому что типы этой колонки в партах отличаются

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
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
Карта сайта