mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-21 15:12:02 +00:00
Merge branch 'master' into null-as-default-default
This commit is contained in:
commit
0b6cf00b59
@ -50,7 +50,7 @@ services:
|
||||
- label:disable
|
||||
|
||||
kafka_kerberos:
|
||||
image: yandex/clickhouse-kerberos-kdc:${DOCKER_KERBEROS_KDC_TAG}
|
||||
image: yandex/clickhouse-kerberos-kdc:${DOCKER_KERBEROS_KDC_TAG:-latest}
|
||||
hostname: kafka_kerberos
|
||||
volumes:
|
||||
- ${KERBERIZED_KAFKA_DIR}/secrets:/tmp/keytab
|
||||
|
@ -1,6 +1,6 @@
|
||||
version: '2.3'
|
||||
services:
|
||||
golang1:
|
||||
image: yandex/clickhouse-mysql-golang-client:${DOCKER_MYSQL_GOLANG_CLIENT_TAG}
|
||||
image: yandex/clickhouse-mysql-golang-client:${DOCKER_MYSQL_GOLANG_CLIENT_TAG:-latest}
|
||||
# to keep container running
|
||||
command: sleep infinity
|
||||
|
@ -1,6 +1,6 @@
|
||||
version: '2.3'
|
||||
services:
|
||||
java1:
|
||||
image: yandex/clickhouse-mysql-java-client:${DOCKER_MYSQL_JAVA_CLIENT_TAG}
|
||||
image: yandex/clickhouse-mysql-java-client:${DOCKER_MYSQL_JAVA_CLIENT_TAG:-latest}
|
||||
# to keep container running
|
||||
command: sleep infinity
|
||||
|
@ -1,6 +1,6 @@
|
||||
version: '2.3'
|
||||
services:
|
||||
mysqljs1:
|
||||
image: yandex/clickhouse-mysql-js-client:${DOCKER_MYSQL_JS_CLIENT_TAG}
|
||||
image: yandex/clickhouse-mysql-js-client:${DOCKER_MYSQL_JS_CLIENT_TAG:-latest}
|
||||
# to keep container running
|
||||
command: sleep infinity
|
||||
|
@ -1,6 +1,6 @@
|
||||
version: '2.3'
|
||||
services:
|
||||
php1:
|
||||
image: yandex/clickhouse-mysql-php-client:${DOCKER_MYSQL_PHP_CLIENT_TAG}
|
||||
image: yandex/clickhouse-mysql-php-client:${DOCKER_MYSQL_PHP_CLIENT_TAG:-latest}
|
||||
# to keep container running
|
||||
command: sleep infinity
|
||||
|
@ -1,6 +1,6 @@
|
||||
version: '2.2'
|
||||
services:
|
||||
java:
|
||||
image: yandex/clickhouse-postgresql-java-client:${DOCKER_POSTGRESQL_JAVA_CLIENT_TAG}
|
||||
image: yandex/clickhouse-postgresql-java-client:${DOCKER_POSTGRESQL_JAVA_CLIENT_TAG:-latest}
|
||||
# to keep container running
|
||||
command: sleep infinity
|
||||
|
@ -9,24 +9,4 @@ toc_title: IN Operator
|
||||
|
||||
See the section [IN operators](../../sql-reference/operators/in.md#select-in-operators).
|
||||
|
||||
## tuple(x, y, …), operator (x, y, …) {#tuplex-y-operator-x-y}
|
||||
|
||||
A function that allows grouping multiple columns.
|
||||
For columns with the types T1, T2, …, it returns a Tuple(T1, T2, …) type tuple containing these columns. There is no cost to execute the function.
|
||||
Tuples are normally used as intermediate values for an argument of IN operators, or for creating a list of formal parameters of lambda functions. Tuples can’t be written to a table.
|
||||
|
||||
**See Also**
|
||||
|
||||
- [Tuple](../../sql-reference/functions/tuple-functions.md#tuple)
|
||||
|
||||
## tupleElement(tuple, n), operator x.N {#tupleelementtuple-n-operator-x-n}
|
||||
|
||||
A function that allows getting a column from a tuple.
|
||||
‘N’ is the column index, starting from 1. N must be a constant. ‘N’ must be a constant. ‘N’ must be a strict postive integer no greater than the size of the tuple.
|
||||
There is no cost to execute the function.
|
||||
|
||||
**See Also**
|
||||
|
||||
- [TupleElement](../../sql-reference/functions/tuple-functions.md#tupleelement)
|
||||
|
||||
[Original article](https://clickhouse.tech/docs/en/query_language/functions/in_functions/) <!--hide-->
|
||||
|
@ -5,39 +5,35 @@ toc_title: Tuples
|
||||
|
||||
# Functions for Working with Tuples {#tuple-functions}
|
||||
|
||||
## Tuple {#tuple}
|
||||
## tuple {#tuple}
|
||||
|
||||
A function that allows grouping multiple columns.
|
||||
For columns with the types T1, T2, …, it returns a Tuple(T1, T2, …) type tuple containing these columns. There is no cost to execute the function.
|
||||
Tuples are normally used as intermediate values for an argument of IN operators, or for creating a list of formal parameters of lambda functions. Tuples can’t be written to a table.
|
||||
|
||||
The function implements the operator `(x, y, …)`.
|
||||
|
||||
**Syntax**
|
||||
|
||||
``` sql
|
||||
tuple(x, y, …)
|
||||
```
|
||||
|
||||
**See Also**
|
||||
|
||||
- [Operator (x, y, …)](../../sql-reference/functions/in-functions.md#tuplex-y-operator-x-y)
|
||||
|
||||
## TupleElement {#tupleelement}
|
||||
## tupleElement {#tupleelement}
|
||||
|
||||
A function that allows getting a column from a tuple.
|
||||
‘N’ is the column index, starting from 1. N must be a constant. ‘N’ must be a constant. ‘N’ must be a strict postive integer no greater than the size of the tuple.
|
||||
There is no cost to execute the function.
|
||||
|
||||
The function implements the operator `x.N`.
|
||||
|
||||
**Syntax**
|
||||
|
||||
``` sql
|
||||
tupleElement(tuple, n)
|
||||
```
|
||||
|
||||
**See Also**
|
||||
|
||||
- [Operator x.N](../../sql-reference/functions/in-functions.md#tupleelementtuple-n-operator-x-n)
|
||||
|
||||
## Untuple {#untuple}
|
||||
## untuple {#untuple}
|
||||
|
||||
Performs syntactic substitution of [tuple](../../sql-reference/data-types/tuple.md#tuplet1-t2) elements in the call location.
|
||||
|
||||
|
@ -21,10 +21,10 @@ The following operations with [partitions](../../../engines/table-engines/merget
|
||||
|
||||
<!-- -->
|
||||
|
||||
## DETACH PARTITION {#alter_detach-partition}
|
||||
## DETACH PARTITION\|PART {#alter_detach-partition}
|
||||
|
||||
``` sql
|
||||
ALTER TABLE table_name DETACH PARTITION partition_expr
|
||||
ALTER TABLE table_name DETACH PARTITION|PART partition_expr
|
||||
```
|
||||
|
||||
Moves all data for the specified partition to the `detached` directory. The server forgets about the detached data partition as if it does not exist. The server will not know about this data until you make the [ATTACH](#alter_attach-partition) query.
|
||||
@ -32,7 +32,8 @@ Moves all data for the specified partition to the `detached` directory. The serv
|
||||
Example:
|
||||
|
||||
``` sql
|
||||
ALTER TABLE visits DETACH PARTITION 201901
|
||||
ALTER TABLE mt DETACH PARTITION '2020-11-21';
|
||||
ALTER TABLE mt DETACH PART 'all_2_2_0';
|
||||
```
|
||||
|
||||
Read about setting the partition expression in a section [How to specify the partition expression](#alter-how-to-specify-part-expr).
|
||||
@ -41,10 +42,10 @@ After the query is executed, you can do whatever you want with the data in the `
|
||||
|
||||
This query is replicated – it moves the data to the `detached` directory on all replicas. Note that you can execute this query only on a leader replica. To find out if a replica is a leader, perform the `SELECT` query to the [system.replicas](../../../operations/system-tables/replicas.md#system_tables-replicas) table. Alternatively, it is easier to make a `DETACH` query on all replicas - all the replicas throw an exception, except the leader replica.
|
||||
|
||||
## DROP PARTITION {#alter_drop-partition}
|
||||
## DROP PARTITION\|PART {#alter_drop-partition}
|
||||
|
||||
``` sql
|
||||
ALTER TABLE table_name DROP PARTITION partition_expr
|
||||
ALTER TABLE table_name DROP PARTITION|PART partition_expr
|
||||
```
|
||||
|
||||
Deletes the specified partition from the table. This query tags the partition as inactive and deletes data completely, approximately in 10 minutes.
|
||||
@ -53,6 +54,13 @@ Read about setting the partition expression in a section [How to specify the par
|
||||
|
||||
The query is replicated – it deletes data on all replicas.
|
||||
|
||||
Example:
|
||||
|
||||
``` sql
|
||||
ALTER TABLE mt DROP PARTITION '2020-11-21';
|
||||
ALTER TABLE mt DROP PART 'all_4_4_0';
|
||||
```
|
||||
|
||||
## DROP DETACHED PARTITION\|PART {#alter_drop-detached}
|
||||
|
||||
``` sql
|
||||
|
@ -9,24 +9,4 @@ toc_title: "\u0424\u0443\u043d\u043a\u0446\u0438\u0438\u0020\u0434\u043b\u044f\u
|
||||
|
||||
Смотрите раздел [Операторы IN](../operators/in.md#select-in-operators).
|
||||
|
||||
## tuple(x, y, …), оператор (x, y, …) {#tuplex-y-operator-x-y}
|
||||
|
||||
Функция, позволяющая сгруппировать несколько столбцов.
|
||||
Для столбцов, имеющих типы T1, T2, … возвращает кортеж типа Tuple(T1, T2, …), содержащий эти столбцы. Выполнение функции ничего не стоит.
|
||||
Кортежи обычно используются как промежуточное значение в качестве аргумента операторов IN, или для создания списка формальных параметров лямбда-функций. Кортежи не могут быть записаны в таблицу.
|
||||
|
||||
**Смотрите также**
|
||||
|
||||
- [Tuple](../../sql-reference/functions/tuple-functions.md#tuple)
|
||||
|
||||
## tupleElement(tuple, n), оператор x.N {#tupleelementtuple-n-operator-x-n}
|
||||
|
||||
Функция, позволяющая достать столбец из кортежа.
|
||||
N - индекс столбца начиная с 1. N должно быть константой. N должно быть целым строго положительным числом не большим размера кортежа.
|
||||
Выполнение функции ничего не стоит.
|
||||
|
||||
**Смотрите также**
|
||||
|
||||
- [TupleElement](../../sql-reference/functions/tuple-functions.md#tupleelement)
|
||||
|
||||
[Оригинальная статья](https://clickhouse.tech/docs/ru/query_language/functions/in_functions/) <!--hide-->
|
||||
|
@ -5,39 +5,35 @@ toc_title: Функции для работы с кортежами
|
||||
|
||||
# Функции для работы с кортежами {#tuple-functions}
|
||||
|
||||
## Tuple {#tuple}
|
||||
## tuple {#tuple}
|
||||
|
||||
Функция, позволяющая сгруппировать несколько столбцов.
|
||||
Для столбцов, имеющих типы T1, T2, … возвращает кортеж типа Tuple(T1, T2, …), содержащий эти столбцы. Выполнение функции ничего не стоит.
|
||||
Кортежи обычно используются как промежуточное значение в качестве аргумента операторов IN, или для создания списка формальных параметров лямбда-функций. Кортежи не могут быть записаны в таблицу.
|
||||
|
||||
С помощью функции реализуется оператор `(x, y, …)`.
|
||||
|
||||
**Синтаксис**
|
||||
|
||||
``` sql
|
||||
tuple(x, y, …)
|
||||
```
|
||||
|
||||
**Смотрите также**
|
||||
|
||||
- [Оператор (x, y, …)](../../sql-reference/functions/in-functions.md#tuplex-y-operator-x-y)
|
||||
|
||||
## TupleElement {#tupleelement}
|
||||
## tupleElement {#tupleelement}
|
||||
|
||||
Функция, позволяющая достать столбец из кортежа.
|
||||
N - индекс столбца начиная с 1. N должно быть константой. N должно быть целым строго положительным числом не большим размера кортежа.
|
||||
Выполнение функции ничего не стоит.
|
||||
|
||||
С помощью функции реализуется оператор `x.N`.
|
||||
|
||||
**Синтаксис**
|
||||
|
||||
``` sql
|
||||
tupleElement(tuple, n)
|
||||
```
|
||||
|
||||
**Смотрите также**
|
||||
|
||||
- [Оператор x.N](../../sql-reference/functions/in-functions.md#tupleelementtuple-n-operator-x-n)
|
||||
|
||||
## Untuple {#untuple}
|
||||
## untuple {#untuple}
|
||||
|
||||
Выполняет синтаксическую подстановку элементов [кортежа](../../sql-reference/data-types/tuple.md#tuplet1-t2) в место вызова.
|
||||
|
||||
|
@ -19,10 +19,10 @@ toc_title: PARTITION
|
||||
- [FETCH PARTITION](#alter_fetch-partition) — скачать партицию с другого сервера;
|
||||
- [MOVE PARTITION\|PART](#alter_move-partition) — переместить партицию/кускок на другой диск или том.
|
||||
|
||||
## DETACH PARTITION {#alter_detach-partition}
|
||||
## DETACH PARTITION\|PART {#alter_detach-partition}
|
||||
|
||||
``` sql
|
||||
ALTER TABLE table_name DETACH PARTITION partition_expr
|
||||
ALTER TABLE table_name DETACH PARTITION|PART partition_expr
|
||||
```
|
||||
|
||||
Перемещает заданную партицию в директорию `detached`. Сервер не будет знать об этой партиции до тех пор, пока вы не выполните запрос [ATTACH](#alter_attach-partition).
|
||||
@ -30,7 +30,8 @@ ALTER TABLE table_name DETACH PARTITION partition_expr
|
||||
Пример:
|
||||
|
||||
``` sql
|
||||
ALTER TABLE visits DETACH PARTITION 201901
|
||||
ALTER TABLE mt DETACH PARTITION '2020-11-21';
|
||||
ALTER TABLE mt DETACH PART 'all_2_2_0';
|
||||
```
|
||||
|
||||
Подробнее о том, как корректно задать имя партиции, см. в разделе [Как задавать имя партиции в запросах ALTER](#alter-how-to-specify-part-expr).
|
||||
@ -39,10 +40,10 @@ ALTER TABLE visits DETACH PARTITION 201901
|
||||
|
||||
Запрос реплицируется — данные будут перенесены в директорию `detached` и забыты на всех репликах. Обратите внимание, запрос может быть отправлен только на реплику-лидер. Чтобы узнать, является ли реплика лидером, выполните запрос `SELECT` к системной таблице [system.replicas](../../../operations/system-tables/replicas.md#system_tables-replicas). Либо можно выполнить запрос `DETACH` на всех репликах — тогда на всех репликах, кроме реплики-лидера, запрос вернет ошибку.
|
||||
|
||||
## DROP PARTITION {#alter_drop-partition}
|
||||
## DROP PARTITION\|PART {#alter_drop-partition}
|
||||
|
||||
``` sql
|
||||
ALTER TABLE table_name DROP PARTITION partition_expr
|
||||
ALTER TABLE table_name DROP PARTITION|PART partition_expr
|
||||
```
|
||||
|
||||
Удаляет партицию. Партиция помечается как неактивная и будет полностью удалена примерно через 10 минут.
|
||||
@ -51,6 +52,13 @@ ALTER TABLE table_name DROP PARTITION partition_expr
|
||||
|
||||
Запрос реплицируется — данные будут удалены на всех репликах.
|
||||
|
||||
Пример:
|
||||
|
||||
``` sql
|
||||
ALTER TABLE mt DROP PARTITION '2020-11-21';
|
||||
ALTER TABLE mt DROP PART 'all_4_4_0';
|
||||
```
|
||||
|
||||
## DROP DETACHED PARTITION\|PART {#alter_drop-detached}
|
||||
|
||||
``` sql
|
||||
|
@ -15,8 +15,6 @@
|
||||
Задача «normalized z-Order curve» в перспективе может быть полезна для БК и Метрики, так как позволяет смешивать OrderID и PageID и избежать дублирования данных.
|
||||
В задаче также вводится способ индексации путём обращения функции нескольких аргументов на интервале, что имеет смысл для дальнейшего развития.
|
||||
|
||||
[Андрей Чулков](https://github.com/achulkov2), ВШЭ.
|
||||
|
||||
### 1.2. + Wait-free каталог баз данных {#wait-free-katalog-baz-dannykh}
|
||||
|
||||
Q2. Делает [Александр Токмаков](https://github.com/tavplubix), первый рабочий вариант в декабре 2019. Нужно для DataLens и Яндекс.Метрики.
|
||||
@ -292,7 +290,8 @@ Upd. Иван Блинков сделал эту задачу путём зам
|
||||
|
||||
### 4.1. Уменьшение числа потоков при распределённых запросах {#umenshenie-chisla-potokov-pri-raspredelionnykh-zaprosakh}
|
||||
|
||||
Весна 2020. Upd. Есть прототип. Upd. Он не работает. Upd. Человек отказался от задачи, теперь сроки не определены.
|
||||
Upd. Есть прототип. Upd. Он не работает. Upd. Человек отказался от задачи, теперь сроки не определены.
|
||||
Upd. Павел Круглов, весна 2021.
|
||||
|
||||
### 4.2. Спекулятивное выполнение запросов на нескольких репликах {#spekuliativnoe-vypolnenie-zaprosov-na-neskolkikh-replikakh}
|
||||
|
||||
@ -306,6 +305,8 @@ Upd. Иван Блинков сделал эту задачу путём зам
|
||||
|
||||
Upd. Сейчас обсуждается, как сделать другую задачу вместо этой.
|
||||
|
||||
Павел Круглов, весна 2021.
|
||||
|
||||
### 4.3. Ограничение числа одновременных скачиваний с реплик {#ogranichenie-chisla-odnovremennykh-skachivanii-s-replik}
|
||||
|
||||
Изначально делал Олег Алексеенков, но пока решение не готово, хотя там не так уж много доделывать.
|
||||
@ -320,9 +321,10 @@ Upd. Сейчас обсуждается, как сделать другую з
|
||||
|
||||
### 4.7. Ленивая загрузка множеств для IN и JOIN с помощью k/v запросов {#lenivaia-zagruzka-mnozhestv-dlia-in-i-join-s-pomoshchiu-kv-zaprosov}
|
||||
|
||||
### 4.8. Разделить background pool для fetch и merge {#razdelit-background-pool-dlia-fetch-i-merge}
|
||||
### 4.8. + Разделить background pool для fetch и merge {#razdelit-background-pool-dlia-fetch-i-merge}
|
||||
|
||||
В очереди. Исправить проблему, что восстанавливающаяся реплика перестаёт мержить. Частично компенсируется 4.3.
|
||||
Исправить проблему, что восстанавливающаяся реплика перестаёт мержить. Частично компенсируется 4.3.
|
||||
Ура, готово! Сделал Александр Сапин.
|
||||
|
||||
|
||||
## 5. Операции {#operatsii}
|
||||
@ -381,6 +383,7 @@ Upd. Появилась вторая версия LTS - 20.3.
|
||||
### 6.5. Эксперименты с LLVM X-Ray {#eksperimenty-s-llvm-x-ray}
|
||||
|
||||
Требует 2.2.
|
||||
Перенос на 2021 или отмена.
|
||||
|
||||
### 6.6. + Стек трейс для любых исключений {#stek-treis-dlia-liubykh-iskliuchenii}
|
||||
|
||||
@ -401,6 +404,8 @@ Upd. В разработке.
|
||||
|
||||
### 6.10. Сбор общих системных метрик {#sbor-obshchikh-sistemnykh-metrik}
|
||||
|
||||
Перенос на весну 2021.
|
||||
|
||||
|
||||
## 7. Сопровождение разработки {#soprovozhdenie-razrabotki}
|
||||
|
||||
@ -461,7 +466,7 @@ UBSan включен в функциональных тестах, но не в
|
||||
### 7.12. Показывать тестовое покрытие нового кода в PR {#pokazyvat-testovoe-pokrytie-novogo-koda-v-pr}
|
||||
|
||||
Пока есть просто показ тестового покрытия всего кода.
|
||||
Отложено.
|
||||
Отложено на весну 2021.
|
||||
|
||||
### 7.13. + Включение аналога -Weverything в gcc {#vkliuchenie-analoga-weverything-v-gcc}
|
||||
|
||||
@ -512,6 +517,7 @@ Upd. Минимальная подсветка добавлена, а все о
|
||||
Поводом использования libressl послужило желание нашего хорошего друга из известной компании несколько лет назад. Но сейчас ситуация состоит в том, что openssl продолжает развиваться, а libressl не особо, и можно спокойно менять обратно.
|
||||
|
||||
Нужно для Яндекс.Облака для поддержки TLS 1.3.
|
||||
Теперь нужно заменить OpenSSL на BoringSSL.
|
||||
|
||||
### 7.16. + tzdata внутри бинарника {#tzdata-vnutri-binarnika}
|
||||
|
||||
@ -612,7 +618,7 @@ Upd. Эльдар Заитов добавляет OSS Fuzz.
|
||||
Upd. Сделаны randomString, randomFixedString.
|
||||
Upd. Сделаны fuzzBits.
|
||||
|
||||
### 7.24. Fuzzing лексера и парсера запросов; кодеков и форматов {#fuzzing-leksera-i-parsera-zaprosov-kodekov-i-formatov}
|
||||
### 7.24. + Fuzzing лексера и парсера запросов; кодеков и форматов {#fuzzing-leksera-i-parsera-zaprosov-kodekov-i-formatov}
|
||||
|
||||
Продолжение 7.23.
|
||||
|
||||
@ -656,6 +662,7 @@ Upd. В Аркадии частично работает небольшая ча
|
||||
### 7.30. Возможность переключения бинарных файлов на продакшене без выкладки пакетов {#vozmozhnost-perekliucheniia-binarnykh-failov-na-prodakshene-bez-vykladki-paketov}
|
||||
|
||||
Низкий приоритет.
|
||||
Сделали файл clickhouse.old.
|
||||
|
||||
### 7.31. Зеркалирование нагрузки между серверами {#zerkalirovanie-nagruzki-mezhdu-serverami}
|
||||
|
||||
@ -737,7 +744,7 @@ Upd. Задача взята в работу.
|
||||
### 8.6. Kerberos аутентификация для HDFS и Kafka {#kerberos-autentifikatsiia-dlia-hdfs-i-kafka}
|
||||
|
||||
Андрей Коняев, ArenaData. Он куда-то пропал.
|
||||
Upd. В процессе работа для Kafka.
|
||||
Для Kafka готово, для HDFS в процессе.
|
||||
|
||||
### 8.7. + Исправление мелочи HDFS на очень старых ядрах Linux {#ispravlenie-melochi-hdfs-na-ochen-starykh-iadrakh-linux}
|
||||
|
||||
@ -1024,14 +1031,14 @@ Upd. Сделано хранение прав. До готового к испо
|
||||
[Виталий Баранов](https://github.com/vitlibar). Финальная стадия разработки, рабочая версия в декабре 2019.
|
||||
Q1. Сделано управление правами полностью, но не реализовано их хранение, см. 12.1.
|
||||
|
||||
### 12.3. Подключение справочника пользователей и прав доступа из LDAP {#podkliuchenie-spravochnika-polzovatelei-i-prav-dostupa-iz-ldap}
|
||||
### 12.3. + Подключение справочника пользователей и прав доступа из LDAP {#podkliuchenie-spravochnika-polzovatelei-i-prav-dostupa-iz-ldap}
|
||||
|
||||
Аутентификация через LDAP - Денис Глазачев.
|
||||
[Виталий Баранов](https://github.com/vitlibar) и Денис Глазачев, Altinity. Требует 12.1.
|
||||
Q3.
|
||||
Upd. Pull request на финальной стадии.
|
||||
|
||||
### 12.4. Подключение IDM системы Яндекса как справочника пользователей и прав доступа {#podkliuchenie-idm-sistemy-iandeksa-kak-spravochnika-polzovatelei-i-prav-dostupa}
|
||||
### 12.4. - Подключение IDM системы Яндекса как справочника пользователей и прав доступа {#podkliuchenie-idm-sistemy-iandeksa-kak-spravochnika-polzovatelei-i-prav-dostupa}
|
||||
|
||||
Пока низкий приоритет. Нужно для Метрики. Требует 12.3.
|
||||
Отложено.
|
||||
@ -1051,7 +1058,7 @@ Upd. Есть pull request.
|
||||
|
||||
### 13.1. Overcommit запросов по памяти и вытеснение {#overcommit-zaprosov-po-pamiati-i-vytesnenie}
|
||||
|
||||
Требует 2.1. Способ реализации обсуждается. Александр Казаков.
|
||||
Требует 2.1. Способ реализации обсуждается.
|
||||
|
||||
### 13.2. Общий конвейер выполнения на сервер {#obshchii-konveier-vypolneniia-na-server}
|
||||
|
||||
@ -1059,8 +1066,6 @@ Upd. Есть pull request.
|
||||
|
||||
### 13.3. Пулы ресурсов {#puly-resursov}
|
||||
|
||||
Александр Казаков.
|
||||
|
||||
Требует 13.2 или сможем сделать более неудобную реализацию раньше.
|
||||
Обсуждается вариант неудобной реализации. Пока средний приоритет, целимся на Q1/Q2.
|
||||
Вариант реализации выбрал Александр Казаков.
|
||||
@ -1068,6 +1073,7 @@ Upd. Не уследили, и задачу стали обсуждать мен
|
||||
Upd. Задачу смотрит Александр Казаков.
|
||||
Upd. Задача взята в работу.
|
||||
Upd. Задача как будто взята в работу.
|
||||
Upd. Задачу не сделал.
|
||||
|
||||
|
||||
## 14. Диалект SQL {#dialekt-sql}
|
||||
@ -1082,19 +1088,18 @@ Upd. Задача как будто взята в работу.
|
||||
|
||||
### 14.3. Поддержка подстановок для множеств в правой части IN {#podderzhka-podstanovok-dlia-mnozhestv-v-pravoi-chasti-in}
|
||||
|
||||
### 14.4. Поддержка подстановок для идентификаторов (имён) в SQL запросе {#podderzhka-podstanovok-dlia-identifikatorov-imion-v-sql-zaprose}
|
||||
### 14.4. + Поддержка подстановок для идентификаторов (имён) в SQL запросе {#podderzhka-podstanovok-dlia-identifikatorov-imion-v-sql-zaprose}
|
||||
|
||||
zhang2014
|
||||
Задача на паузе.
|
||||
Amos Bird сделал.
|
||||
|
||||
### 14.5. + Поддержка задания множества как массива в правой части секции IN {#podderzhka-zadaniia-mnozhestva-kak-massiva-v-pravoi-chasti-sektsii-in}
|
||||
|
||||
Василий Немков, Altinity, делал эту задачу, но забросил её в пользу других задач.
|
||||
В результате, сейчас доделывает Антон Попов.
|
||||
|
||||
### 14.6. Глобальный scope для WITH {#globalnyi-scope-dlia-with}
|
||||
### 14.6. + Глобальный scope для WITH {#globalnyi-scope-dlia-with}
|
||||
|
||||
В обсуждении. Amos Bird.
|
||||
Amos Bird сделал.
|
||||
|
||||
### 14.7. Nullable для WITH ROLLUP, WITH CUBE, WITH TOTALS {#nullable-dlia-with-rollup-with-cube-with-totals}
|
||||
|
||||
@ -1148,13 +1153,13 @@ Upd. Есть pull request. Готово.
|
||||
|
||||
### 14.17. + Ввести понятие stateful функций {#vvesti-poniatie-stateful-funktsii}
|
||||
|
||||
zhang2014.
|
||||
Для runningDifference, neighbour - их учёт в оптимизаторе запросов.
|
||||
В интерфейсе уже сделано. Надо проверить, что учитывается в нужных местах (например, что работает predicate pushdown сквозь ORDER BY, если таких функций нет).
|
||||
Александр Кузьменков.
|
||||
|
||||
### 14.18. UNION DISTINCT и возможность включить его по-умолчанию {#union-distinct-i-vozmozhnost-vkliuchit-ego-po-umolchaniiu}
|
||||
### 14.18. + UNION DISTINCT и возможность включить его по-умолчанию {#union-distinct-i-vozmozhnost-vkliuchit-ego-po-umolchaniiu}
|
||||
|
||||
Для BI систем.
|
||||
Для BI систем. flynn ucasFL.
|
||||
|
||||
### 14.19. + Совместимость парсера типов данных с SQL {#sovmestimost-parsera-tipov-dannykh-s-sql}
|
||||
|
||||
@ -1278,7 +1283,7 @@ Upd. Есть pull request.
|
||||
Исправление фундаментальной проблемы - есть PR.
|
||||
Фундаментальная проблема решена.
|
||||
|
||||
### 18.2. Агрегатные функции для статистических тестов {#agregatnye-funktsii-dlia-statisticheskikh-testov}
|
||||
### 18.2. + Агрегатные функции для статистических тестов {#agregatnye-funktsii-dlia-statisticheskikh-testov}
|
||||
|
||||
Артём Цыганов, Руденский Константин Игоревич, Семёнов Денис, ВШЭ.
|
||||
|
||||
@ -1286,6 +1291,7 @@ Upd. Есть pull request.
|
||||
|
||||
Сделали прототип двух тестов, есть pull request. Также есть pull request для корелляции рангов.
|
||||
Upd. Помержили корелляцию рангов, но ещё не помержили сравнение t-test, u-test.
|
||||
Upd. Всё доделал Никита Михайлов.
|
||||
|
||||
### 18.3. Инфраструктура для тренировки моделей в ClickHouse {#infrastruktura-dlia-trenirovki-modelei-v-clickhouse}
|
||||
|
||||
@ -1295,7 +1301,7 @@ Upd. Помержили корелляцию рангов, но ещё не по
|
||||
|
||||
## 19. Улучшение работы кластера {#uluchshenie-raboty-klastera}
|
||||
|
||||
### 19.1. Параллельные кворумные вставки без линеаризуемости {#parallelnye-kvorumnye-vstavki-bez-linearizuemosti}
|
||||
### 19.1. + Параллельные кворумные вставки без линеаризуемости {#parallelnye-kvorumnye-vstavki-bez-linearizuemosti}
|
||||
|
||||
Upd. В работе, ожидается в начале октября.
|
||||
|
||||
@ -1361,6 +1367,8 @@ Upd. Задача в разработке.
|
||||
|
||||
### 20.2. Поддержка DELETE путём преобразования множества ключей в множество row_numbers на реплике, столбца флагов и индекса по диапазонам {#podderzhka-delete-putiom-preobrazovaniia-mnozhestva-kliuchei-v-mnozhestvo-row-numbers-na-replike-stolbtsa-flagov-i-indeksa-po-diapazonam}
|
||||
|
||||
Задача назначена на 2021.
|
||||
|
||||
### 20.3. Поддержка ленивых DELETE путём запоминания выражений и преобразования к множеству ключей в фоне {#podderzhka-lenivykh-delete-putiom-zapominaniia-vyrazhenii-i-preobrazovaniia-k-mnozhestvu-kliuchei-v-fone}
|
||||
|
||||
### 20.4. Поддержка UPDATE с помощью преобразования в DELETE и вставок {#podderzhka-update-s-pomoshchiu-preobrazovaniia-v-delete-i-vstavok}
|
||||
@ -1413,6 +1421,7 @@ ucasFL, в разработке. Готово.
|
||||
[Achimbab](https://github.com/achimbab).
|
||||
Есть pull request. Но это не совсем то.
|
||||
Upd. В обсуждении.
|
||||
Upd. Назначено на 2021.
|
||||
|
||||
### 21.8. Взаимная интеграция аллокатора и кэша {#vzaimnaia-integratsiia-allokatora-i-kesha}
|
||||
|
||||
@ -1427,6 +1436,7 @@ Upd. В обсуждении.
|
||||
Upd. Есть нерабочий прототип, скорее всего будет отложено.
|
||||
Upd. Отложено до осени.
|
||||
Upd. Отложено до.
|
||||
Upd. Отложено.
|
||||
|
||||
### 21.8.1. Отдельный аллокатор для кэшей с ASLR {#otdelnyi-allokator-dlia-keshei-s-aslr}
|
||||
|
||||
@ -1517,7 +1527,7 @@ Upd. Сделаны самые существенные из предложен
|
||||
|
||||
Для сортировки по кортежам используется обычная сортировка с компаратором, который в цикле по элементам кортежа делает виртуальные вызовы `IColumn::compareAt`. Это неоптимально - как из-за короткого цикла по неизвестному в compile-time количеству элементов, так и из-за виртуальных вызовов. Чтобы обойтись без виртуальных вызовов, есть метод `IColumn::getPermutation`. Он используется в случае сортировки по одному столбцу. Есть вариант, что в случае сортировки по кортежу, что-то похожее тоже можно применить… например, сделать метод `updatePermutation`, принимающий аргументы offset и limit, и допереставляющий перестановку в диапазоне значений, в которых предыдущий столбец имел равные значения.
|
||||
|
||||
3. RadixSort для сортировки.
|
||||
\+ 3. RadixSort для сортировки.
|
||||
|
||||
Один наш знакомый начал делать задачу по попытке использования RadixSort для сортировки столбцов. Был сделан вариант indirect сортировки (для `getPermutation`), но не оптимизирован до конца - есть лишние ненужные перекладывания элементов. Для того, чтобы его оптимизировать, придётся добавить немного шаблонной магии (на последнем шаге что-то не копировать, вместо перекладывания индексов - складывать их в готовое место). Также этот человек добавил метод MSD Radix Sort для реализации radix partial sort. Но даже не проверил производительность.
|
||||
|
||||
@ -1527,7 +1537,9 @@ Upd. Сделаны самые существенные из предложен
|
||||
|
||||
Виртуальный метод `compareAt` возвращает -1, 0, 1. Но алгоритмы сортировки сравнениями обычно рассчитаны на `operator<` и не могут получить преимущества от three-way comparison. А можно ли написать так, чтобы преимущество было?
|
||||
|
||||
5. pdq partial sort
|
||||
\+ 5. pdq partial sort
|
||||
|
||||
Upd. Данила Кутенин решил эту задачу ультимативно, используя Floyd–Rivest алгоритм.
|
||||
|
||||
Хороший алгоритм сортировки сравнениями `pdqsort` не имеет варианта partial sort. Заметим, что на практике, почти все сортировки в запросах ClickHouse являются partial_sort, так как `ORDER BY` почти всегда идёт с `LIMIT`. Кстати, Данила Кутенин уже попробовал это и показал, что в тривиальном случае преимущества нет. Но не очевидно, что нельзя сделать лучше.
|
||||
|
||||
@ -1619,6 +1631,7 @@ Upd. Добавили таймауты.
|
||||
|
||||
Altinity.
|
||||
Я не в курсе, какой статус.
|
||||
Там предлагают очень сложное решение вместо простого.
|
||||
|
||||
### 22.16. + Исправление низкой производительности кодека DoubleDelta {#ispravlenie-nizkoi-proizvoditelnosti-kodeka-doubledelta}
|
||||
|
||||
@ -1656,15 +1669,15 @@ Upd. Готово.
|
||||
|
||||
Нужно для Метрики. Алексей Миловидов.
|
||||
|
||||
### 22.25. Избавиться от библиотеки btrie {#izbavitsia-ot-biblioteki-btrie}
|
||||
### 22.25. + Избавиться от библиотеки btrie {#izbavitsia-ot-biblioteki-btrie}
|
||||
|
||||
Алексей Миловидов. Низкий приоритет.
|
||||
Владимир Черкасов сделал эту задачу.
|
||||
|
||||
### 22.26. Плохая производительность quantileTDigest {#plokhaia-proizvoditelnost-quantiletdigest}
|
||||
|
||||
[#2668](https://github.com/ClickHouse/ClickHouse/issues/2668)
|
||||
|
||||
Алексей Миловидов или будет переназначено.
|
||||
Павел Круглов и Илья Щербак (ВК).
|
||||
|
||||
### 22.27. Проверить несколько PR, которые были закрыты zhang2014 и sundy-li {#proverit-neskolko-pr-kotorye-byli-zakryty-zhang2014-i-sundy-li}
|
||||
|
||||
@ -1766,7 +1779,7 @@ Upd. Отменено.
|
||||
Виталий Баранов.
|
||||
Отложено, после бэкапов.
|
||||
|
||||
### 24.5. Поддержка функций шифрования для отдельных значений {#podderzhka-funktsii-shifrovaniia-dlia-otdelnykh-znachenii}
|
||||
### 24.5. + Поддержка функций шифрования для отдельных значений {#podderzhka-funktsii-shifrovaniia-dlia-otdelnykh-znachenii}
|
||||
|
||||
Смотрите также 24.5.
|
||||
|
||||
@ -1775,6 +1788,7 @@ Upd. Отменено.
|
||||
|
||||
Делает Василий Немков, Altinity
|
||||
Есть pull request в процессе ревью, исправляем проблемы производительности.
|
||||
Сейчас в состоянии, что уже добавлено в продакшен, но производительность всё ещё низкая (тех долг).
|
||||
|
||||
### 24.6. Userspace RAID {#userspace-raid}
|
||||
|
||||
@ -1825,7 +1839,7 @@ RAID позволяет одновременно увеличить надёжн
|
||||
|
||||
Upd. Есть pull request. В стадии ревью. Готово.
|
||||
|
||||
### 24.10. Поддержка типов half/bfloat16/unum {#podderzhka-tipov-halfbfloat16unum}
|
||||
### 24.10. - Поддержка типов half/bfloat16/unum {#podderzhka-tipov-halfbfloat16unum}
|
||||
|
||||
[#7657](https://github.com/ClickHouse/ClickHouse/issues/7657)
|
||||
|
||||
@ -1833,6 +1847,7 @@ Upd. Есть pull request. В стадии ревью. Готово.
|
||||
|
||||
Есть pull request на промежуточной стадии.
|
||||
Отложено.
|
||||
Отменено.
|
||||
|
||||
### 24.11. User Defined Functions {#user-defined-functions}
|
||||
|
||||
@ -1882,10 +1897,12 @@ Upd. Прототип bitonic sort помержен, но целесообраз
|
||||
Требует 2.1.
|
||||
|
||||
Upd. Есть два прототипа от внешних контрибьюторов.
|
||||
Александр Кузьменков.
|
||||
|
||||
### 24.15. Поддержка полуструктурированных данных {#podderzhka-polustrukturirovannykh-dannykh}
|
||||
|
||||
Требует 1.14 и 2.10.
|
||||
Антон Попов.
|
||||
|
||||
### 24.16. Улучшение эвристики слияний {#uluchshenie-evristiki-sliianii}
|
||||
|
||||
@ -1915,6 +1932,7 @@ Upd. Есть pull request - в большинстве случаев однов
|
||||
### 24.21. Реализация в ClickHouse протокола распределённого консенсуса {#realizatsiia-v-clickhouse-protokola-raspredelionnogo-konsensusa}
|
||||
|
||||
Имеет смысл только после 19.2.
|
||||
Александр Сапин.
|
||||
|
||||
### 24.22. Вывод типов по блоку данных. Вывод формата данных по примеру {#vyvod-tipov-po-bloku-dannykh-vyvod-formata-dannykh-po-primeru}
|
||||
|
||||
@ -1955,13 +1973,14 @@ ClickHouse также может использоваться для быстр
|
||||
Михаил Филитов, ВШЭ.
|
||||
Upd. Есть pull request. Нужно ещё чистить код библиотеки.
|
||||
|
||||
### 24.26. Поддержка open tracing или аналогов {#podderzhka-open-tracing-ili-analogov}
|
||||
### 24.26. + Поддержка open tracing или аналогов {#podderzhka-open-tracing-ili-analogov}
|
||||
|
||||
[#5182](https://github.com/ClickHouse/ClickHouse/issues/5182)
|
||||
|
||||
Александр Кожихов, ВШЭ и Яндекс.YT.
|
||||
Upd. Есть pull request с прототипом.
|
||||
Upd. Александ Кузьменков взял задачу в работу.
|
||||
Сделано.
|
||||
|
||||
### 24.27. Реализация алгоритмов min-hash, sim-hash для нечёткого поиска полудубликатов {#realizatsiia-algoritmov-min-hash-sim-hash-dlia-nechiotkogo-poiska-poludublikatov}
|
||||
|
||||
@ -1995,7 +2014,7 @@ Amos Bird, но его решение слишком громоздкое и п
|
||||
Перепиcывание в JOIN. Не раньше 21.11, 21.12, 21.9. Низкий приоритет.
|
||||
Отложено.
|
||||
|
||||
### 24.32. Поддержка GRPC {#podderzhka-grpc}
|
||||
### 24.32. + Поддержка GRPC {#podderzhka-grpc}
|
||||
|
||||
Мария Конькова, ВШЭ и Яндекс.
|
||||
Также смотрите 24.29.
|
||||
@ -2009,6 +2028,7 @@ Amos Bird, но его решение слишком громоздкое и п
|
||||
|
||||
Задача в работе, есть pull request. [#10136](https://github.com/ClickHouse/ClickHouse/pull/10136)
|
||||
Upd. Задачу взял в работу Виталий Баранов.
|
||||
Сделано.
|
||||
|
||||
|
||||
## 25. DevRel {#devrel}
|
||||
@ -2067,13 +2087,14 @@ Upd. Задачу взял в работу Виталий Баранов.
|
||||
Алексей Миловидов и все подготовленные докладчики.
|
||||
Upd. Участвуем.
|
||||
|
||||
### 25.14. Конференции в России: все HighLoad, возможно CodeFest, DUMP или UWDC, возможно C++ Russia {#konferentsii-v-rossii-vse-highload-vozmozhno-codefest-dump-ili-uwdc-vozmozhno-c-russia}
|
||||
### 25.14. + Конференции в России: все HighLoad, возможно CodeFest, DUMP или UWDC, возможно C++ Russia {#konferentsii-v-rossii-vse-highload-vozmozhno-codefest-dump-ili-uwdc-vozmozhno-c-russia}
|
||||
|
||||
Алексей Миловидов и все подготовленные докладчики.
|
||||
Upd. Есть Saint HighLoad online.
|
||||
Upd. Есть C++ Russia.
|
||||
CodeFest, DUMP, UWDC отменились.
|
||||
Upd. Добавились Highload Fwdays, Матемаркетинг.
|
||||
Upd. Добавились подкасты C++ Russia.
|
||||
|
||||
### 25.15. Конференции зарубежные: Percona, DataOps, попытка попасть на более крупные {#konferentsii-zarubezhnye-percona-dataops-popytka-popast-na-bolee-krupnye}
|
||||
|
||||
@ -2096,6 +2117,7 @@ DataOps отменилась.
|
||||
|
||||
Есть минимальный прототип. Сделал Илья Яцишин. Этот прототип не позволяет делиться ссылками на результаты запросов.
|
||||
Upd. На финальной стадии инструмент для экспериментирования с разными версиями ClickHouse.
|
||||
Upd. По факту, задача считается не сделанной (готово только 99%, не 100%).
|
||||
|
||||
### 25.17. Взаимодействие с ВУЗами: ВШЭ, УрФУ, ICT Beijing {#vzaimodeistvie-s-vuzami-vshe-urfu-ict-beijing}
|
||||
|
||||
@ -2103,6 +2125,7 @@ Upd. На финальной стадии инструмент для экспе
|
||||
Благодаря Robert Hodges добавлен CMU.
|
||||
Upd. Взаимодействие с ВШЭ 2019/2020 успешно выполнено.
|
||||
Upd. Идёт подготовка к 2020/2021.
|
||||
Upd. Уже взяли несколько десятков человек на 2020/2021.
|
||||
|
||||
### 25.18. - Лекция в ШАД {#lektsiia-v-shad}
|
||||
|
||||
|
@ -202,7 +202,11 @@ def build(args):
|
||||
|
||||
if __name__ == '__main__':
|
||||
os.chdir(os.path.join(os.path.dirname(__file__), '..'))
|
||||
website_dir = os.path.join('..', 'website')
|
||||
|
||||
# A root path to ClickHouse source code.
|
||||
src_dir = '..'
|
||||
|
||||
website_dir = os.path.join(src_dir, 'website')
|
||||
|
||||
arg_parser = argparse.ArgumentParser()
|
||||
arg_parser.add_argument('--lang', default='en,es,fr,ru,zh,ja,tr,fa')
|
||||
@ -210,6 +214,7 @@ if __name__ == '__main__':
|
||||
arg_parser.add_argument('--docs-dir', default='.')
|
||||
arg_parser.add_argument('--theme-dir', default=website_dir)
|
||||
arg_parser.add_argument('--website-dir', default=website_dir)
|
||||
arg_parser.add_argument('--src-dir', default=src_dir)
|
||||
arg_parser.add_argument('--blog-dir', default=os.path.join(website_dir, 'blog'))
|
||||
arg_parser.add_argument('--output-dir', default='build')
|
||||
arg_parser.add_argument('--enable-stable-releases', action='store_true')
|
||||
|
@ -145,13 +145,19 @@ def build_website(args):
|
||||
'public',
|
||||
'node_modules',
|
||||
'templates',
|
||||
'locale'
|
||||
'locale',
|
||||
'.gitkeep'
|
||||
)
|
||||
)
|
||||
|
||||
# This file can be requested to check for available ClickHouse releases.
|
||||
shutil.copy2(
|
||||
os.path.join(args.src_dir, 'utils', 'list-versions', 'version_date.tsv'),
|
||||
os.path.join(args.output_dir, 'data', 'version_date.tsv'))
|
||||
|
||||
shutil.copy2(
|
||||
os.path.join(args.website_dir, 'js', 'embedd.min.js'),
|
||||
os.path.join(args.output_dir, 'js', 'embedd.min.js')
|
||||
)
|
||||
os.path.join(args.output_dir, 'js', 'embedd.min.js'))
|
||||
|
||||
for root, _, filenames in os.walk(args.output_dir):
|
||||
for filename in filenames:
|
||||
|
@ -21,10 +21,12 @@ namespace DB
|
||||
/// Estimate of number of bytes in cache for marks.
|
||||
struct MarksWeightFunction
|
||||
{
|
||||
/// We spent additional bytes on key in hashmap, linked lists, shared pointers, etc ...
|
||||
static constexpr size_t MARK_CACHE_OVERHEAD = 128;
|
||||
|
||||
size_t operator()(const MarksInCompressedFile & marks) const
|
||||
{
|
||||
/// NOTE Could add extra 100 bytes for overhead of std::vector, cache structures and allocator.
|
||||
return marks.size() * sizeof(MarkInCompressedFile);
|
||||
return marks.size() * sizeof(MarkInCompressedFile) + MARK_CACHE_OVERHEAD;
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -179,16 +179,19 @@ class _NetworkManager:
|
||||
except docker.errors.NotFound:
|
||||
pass
|
||||
|
||||
# for some reason docker api may hang if image doesn't exist, so we download it
|
||||
# before running
|
||||
for i in range(5):
|
||||
try:
|
||||
subprocess.check_call("docker pull yandex/clickhouse-integration-helper", shell=True)
|
||||
break
|
||||
except:
|
||||
time.sleep(i)
|
||||
else:
|
||||
raise Exception("Cannot pull yandex/clickhouse-integration-helper image")
|
||||
image = subprocess.check_output("docker images -q yandex/clickhouse-integration-helper 2>/dev/null", shell=True)
|
||||
if not image.strip():
|
||||
print("No network image helper, will try download")
|
||||
# for some reason docker api may hang if image doesn't exist, so we download it
|
||||
# before running
|
||||
for i in range(5):
|
||||
try:
|
||||
subprocess.check_call("docker pull yandex/clickhouse-integration-helper", shell=True)
|
||||
break
|
||||
except:
|
||||
time.sleep(i)
|
||||
else:
|
||||
raise Exception("Cannot pull yandex/clickhouse-integration-helper image")
|
||||
|
||||
self._container = self._docker_client.containers.run('yandex/clickhouse-integration-helper',
|
||||
auto_remove=True,
|
||||
|
@ -57,6 +57,7 @@ def test_reload_zookeeper(start_cluster):
|
||||
</yandex >
|
||||
"""
|
||||
node.replace_config("/etc/clickhouse-server/conf.d/zookeeper.xml", new_config)
|
||||
node.query("SYSTEM RELOAD CONFIG")
|
||||
## config reloads, but can still work
|
||||
assert_eq_with_retry(node, "SELECT COUNT() FROM test_table", '1000', retry_count=120, sleep_time=0.5)
|
||||
|
||||
@ -86,6 +87,7 @@ def test_reload_zookeeper(start_cluster):
|
||||
</yandex>
|
||||
"""
|
||||
node.replace_config("/etc/clickhouse-server/conf.d/zookeeper.xml", new_config)
|
||||
node.query("SYSTEM RELOAD CONFIG")
|
||||
|
||||
assert_eq_with_retry(node, "SELECT COUNT() FROM test_table", '1000', retry_count=120, sleep_time=0.5)
|
||||
|
||||
|
@ -17,19 +17,14 @@ distributed = cluster.add_instance('distributed', main_configs=["configs/config.
|
||||
def started_cluster():
|
||||
try:
|
||||
cluster.start()
|
||||
|
||||
for node in [node1, node2]:
|
||||
node.query("CREATE TABLE sometable (date Date, id UInt32, value Int32) ENGINE = MergeTree() ORDER BY id;")
|
||||
node.query("INSERT INTO sometable VALUES (toDate('2010-01-10'), 1, 1)")
|
||||
node.query("CREATE USER shard")
|
||||
node.query("GRANT ALL ON *.* TO shard")
|
||||
|
||||
distributed.query(
|
||||
"CREATE TABLE proxy (date Date, id UInt32, value Int32) ENGINE = Distributed(test_cluster, default, sometable, toUInt64(date));")
|
||||
distributed.query(
|
||||
"CREATE TABLE shard_settings (name String, value String) ENGINE = Distributed(test_cluster, system, settings);")
|
||||
distributed.query("CREATE ROLE admin")
|
||||
distributed.query("GRANT ALL ON *.* TO admin")
|
||||
distributed.query(
|
||||
"CREATE TABLE shard_settings (name String, value String) ENGINE = Distributed(test_cluster, system, settings);")
|
||||
|
||||
yield cluster
|
||||
|
||||
@ -46,6 +41,14 @@ def restart_distributed():
|
||||
|
||||
|
||||
def test_select_clamps_settings():
|
||||
for node in [node1, node2]:
|
||||
node.query("CREATE TABLE sometable_select (date Date, id UInt32, value Int32) ENGINE = MergeTree() ORDER BY id;")
|
||||
node.query("INSERT INTO sometable_select VALUES (toDate('2010-01-10'), 1, 1)")
|
||||
|
||||
distributed.query(
|
||||
"CREATE TABLE proxy_select (date Date, id UInt32, value Int32) ENGINE = Distributed(test_cluster, default, sometable_select, toUInt64(date));")
|
||||
|
||||
|
||||
distributed.query("CREATE USER normal DEFAULT ROLE admin SETTINGS max_memory_usage = 80000000")
|
||||
distributed.query("CREATE USER wasteful DEFAULT ROLE admin SETTINGS max_memory_usage = 2000000000")
|
||||
distributed.query("CREATE USER readonly DEFAULT ROLE admin SETTINGS readonly = 1")
|
||||
@ -53,7 +56,7 @@ def test_select_clamps_settings():
|
||||
node2.query("ALTER USER shard SETTINGS readonly = 1")
|
||||
|
||||
# Check that shards doesn't throw exceptions on constraints violation
|
||||
query = "SELECT COUNT() FROM proxy"
|
||||
query = "SELECT COUNT() FROM proxy_select"
|
||||
assert distributed.query(query) == '2\n'
|
||||
assert distributed.query(query, user='normal') == '2\n'
|
||||
assert distributed.query(query, user='wasteful') == '2\n'
|
||||
@ -62,7 +65,7 @@ def test_select_clamps_settings():
|
||||
assert distributed.query(query, settings={"max_memory_usage": 40000000, "readonly": 2}) == '2\n'
|
||||
assert distributed.query(query, settings={"max_memory_usage": 3000000000, "readonly": 2}) == '2\n'
|
||||
|
||||
query = "SELECT COUNT() FROM remote('node{1,2}', 'default', 'sometable')"
|
||||
query = "SELECT COUNT() FROM remote('node{1,2}', 'default', 'sometable_select')"
|
||||
assert distributed.query(query) == '2\n'
|
||||
assert distributed.query(query, user='normal') == '2\n'
|
||||
assert distributed.query(query, user='wasteful') == '2\n'
|
||||
@ -103,10 +106,17 @@ def test_select_clamps_settings():
|
||||
|
||||
|
||||
def test_insert_clamps_settings():
|
||||
for node in [node1, node2]:
|
||||
node.query("CREATE TABLE sometable_insert (date Date, id UInt32, value Int32) ENGINE = MergeTree() ORDER BY id;")
|
||||
node.query("INSERT INTO sometable_insert VALUES (toDate('2010-01-10'), 1, 1)")
|
||||
|
||||
distributed.query(
|
||||
"CREATE TABLE proxy_insert (date Date, id UInt32, value Int32) ENGINE = Distributed(test_cluster, default, sometable_insert, toUInt64(date));")
|
||||
|
||||
node1.query("ALTER USER shard SETTINGS max_memory_usage = 50000000 MIN 11111111 MAX 99999999")
|
||||
node2.query("ALTER USER shard SETTINGS max_memory_usage = 50000000 MIN 11111111 MAX 99999999")
|
||||
|
||||
distributed.query("INSERT INTO proxy VALUES (toDate('2020-02-20'), 2, 2)")
|
||||
distributed.query("INSERT INTO proxy VALUES (toDate('2020-02-21'), 2, 2)", settings={"max_memory_usage": 5000000})
|
||||
distributed.query("SYSTEM FLUSH DISTRIBUTED proxy")
|
||||
assert_eq_with_retry(distributed, "SELECT COUNT() FROM proxy", "4")
|
||||
distributed.query("INSERT INTO proxy_insert VALUES (toDate('2020-02-20'), 2, 2)")
|
||||
distributed.query("INSERT INTO proxy_insert VALUES (toDate('2020-02-21'), 2, 2)", settings={"max_memory_usage": 5000000})
|
||||
distributed.query("SYSTEM FLUSH DISTRIBUTED proxy_insert")
|
||||
assert_eq_with_retry(distributed, "SELECT COUNT() FROM proxy_insert", "4")
|
||||
|
@ -24,7 +24,8 @@ do
|
||||
|
||||
if ! kill -0 -- $bg_query
|
||||
then
|
||||
>&2 echo "The SELECT sleep(1) query finished earlier that we could grep for it in the process list, but it should have run for at least one second. Looks like a bug"
|
||||
# The SELECT sleep(1) query finished earlier that we could grep for it in the process list, but it should have run for at least one second. It is Ok.
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
@ -47,7 +48,8 @@ do
|
||||
|
||||
if ! kill -0 -- $bg_query
|
||||
then
|
||||
>&2 echo "The SELECT sleep(1) query finished earlier that we could grep for it in the process list, but it should have run for at least one second. Looks like a bug"
|
||||
# The SELECT sleep(1) query finished earlier that we could grep for it in the process list, but it should have run for at least one second. It is Ok.
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
|
1
website/data/.gitkeep
Normal file
1
website/data/.gitkeep
Normal file
@ -0,0 +1 @@
|
||||
# This directory will contain miscellaneous data files on ClickHouse website
|
Loading…
Reference in New Issue
Block a user