Size: a a a

ClickHouse не тормозит

2020 June 04

АК

Александр Курченков... in ClickHouse не тормозит
Если есть проверка типов почему она не работает? Если работает то почему произошла смена типа?
источник

DT

Dmitry Titov in ClickHouse не тормозит
UInt64 - UIn64 какой будет результирующий тип?
источник

АК

Александр Курченков... in ClickHouse не тормозит
Я ожидаю UInt64
источник

АК

Александр Курченков... in ClickHouse не тормозит
ПОчему тип должен смениться?
источник

DT

Dmitry Titov in ClickHouse не тормозит
первый UInt64 = 10
второй UInt64 = 10000000
источник

АК

Александр Курченков... in ClickHouse не тормозит
В зависимости от языка, может быть переход к MAX для типа, или 0 или выброс исключения арифметики...
источник

АК

Александр Курченков... in ClickHouse не тормозит
Если язык строго типизированный, то и тип не должен меняться.
В лучшем случае, должно быть приведение типа результата к типу однооо из аргументов.
источник

DT

Dmitry Titov in ClickHouse не тормозит
Александр Курченков
В зависимости от языка, может быть переход к MAX для типа, или 0 или выброс исключения арифметики...
но мы же обсуждаем не язык программирования а субд.
источник

DT

Dmitry Titov in ClickHouse не тормозит
если ты знаешь какой должен быть тип в результате. ты можешь явно приводить к нему
источник

АК

Александр Курченков... in ClickHouse не тормозит
Да. Но СУБД написана на языке и опирается на его возможности.
Если язык СУБД заявляет о необходимости совпадении типов, значит проверки достаточно строгие и учитывают проверки на тип.
Я ожидаю, что при достаточно строгих проверках не должна возникать чехарда со сменой типа после выполнения арифметическх действий над значениями одного типа.
В противном случае, если двиг БД допускает возможность смены типа после арифметических преобразований, я ожидаю что и проверки будут более лояльными.
источник

АК

Александр Курченков... in ClickHouse не тормозит
Я не прав?
источник

AK

Andrew Kochen in ClickHouse не тормозит
Я правильно понимаю, что DateTime64 еще не подъехал? https://clickhouse.tech/docs/ru/sql-reference/data-types/datetime64/
источник

DT

Dmitry Titov in ClickHouse не тормозит
СУБД предоставляет только те возможности, что в ней реализованы.
Скорее выглядит так, что
UInt64 это довольно редко используемый тип,
поэтому поведение по дефолту сделано такое, что бы в 90% случаев работало само и не было необходимости приводить типы
источник

DT

Dmitry Titov in ClickHouse не тормозит
подъехал, в 20 + версиях
источник

АК

Александр Курченков... in ClickHouse не тормозит
Dmitry Titov
СУБД предоставляет только те возможности, что в ней реализованы.
Скорее выглядит так, что
UInt64 это довольно редко используемый тип,
поэтому поведение по дефолту сделано такое, что бы в 90% случаев работало само и не было необходимости приводить типы
Что-то мой внутренний дотошный зануда негодует против вот такой вот "нечёткой" логики.
источник

АК

Александр Курченков... in ClickHouse не тормозит
Хорошо, допустим арифметика, по какой-то причине, меняет тип.
источник

АК

Александр Курченков... in ClickHouse не тормозит
Но.
разве MIN(A) по типу не совпадает с MAX(A) ?
источник

DT

Dmitry Titov in ClickHouse не тормозит
Александр Курченков
Что-то мой внутренний дотошный зануда негодует против вот такой вот "нечёткой" логики.
скажу больше, клик не проверяет при вставке нет будет ли переполнение типа. ты можешь вставить 10000 в UInt8 и получить там 153
источник

DT

Dmitry Titov in ClickHouse не тормозит
Александр Курченков
Но.
разве MIN(A) по типу не совпадает с MAX(A) ?
совпадает
источник

АК

Александр Курченков... in ClickHouse не тормозит
Если совпадает, то почему результат
toUInt64(MAX(A))-toUInt64(MIN(A)) в IF-е не вызывает вопроса с типами, а MAX(A)-MIN(A) вызывает?
MIN/MAX меняют тип?
источник