mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-10 09:32:06 +00:00
Merge branch 'ClickHouse:master' into get_fuzz_data
This commit is contained in:
commit
780ad4a755
12
.arcignore
12
.arcignore
@ -1,12 +0,0 @@
|
|||||||
# .arcignore is the same as .gitignore but for Arc VCS.
|
|
||||||
# Arc VCS is a proprietary VCS in Yandex that is very similar to Git
|
|
||||||
# from the user perspective but with the following differences:
|
|
||||||
# 1. Data is stored in distributed object storage.
|
|
||||||
# 2. Local copy works via FUSE without downloading all the objects.
|
|
||||||
# For this reason, it is better suited for huge monorepositories that can be found in large companies (e.g. Yandex, Google).
|
|
||||||
# As ClickHouse developers, we don't use Arc as a VCS (we use Git).
|
|
||||||
# But the ClickHouse source code is also mirrored into internal monorepository and our collegues are using Arc.
|
|
||||||
# You can read more about Arc here: https://habr.com/en/company/yandex/blog/482926/
|
|
||||||
|
|
||||||
# Repository is synchronized without 3rd-party submodules.
|
|
||||||
contrib
|
|
@ -203,3 +203,5 @@ CheckOptions:
|
|||||||
value: CamelCase
|
value: CamelCase
|
||||||
- key: readability-identifier-naming.UsingCase
|
- key: readability-identifier-naming.UsingCase
|
||||||
value: CamelCase
|
value: CamelCase
|
||||||
|
- key: modernize-loop-convert.UseCxx20ReverseRanges
|
||||||
|
value: false
|
||||||
|
2
.github/PULL_REQUEST_TEMPLATE.md
vendored
2
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -1,5 +1,3 @@
|
|||||||
I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en
|
|
||||||
|
|
||||||
Changelog category (leave one):
|
Changelog category (leave one):
|
||||||
- New Feature
|
- New Feature
|
||||||
- Improvement
|
- Improvement
|
||||||
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -33,6 +33,9 @@
|
|||||||
/docs/ja/single.md
|
/docs/ja/single.md
|
||||||
/docs/fa/single.md
|
/docs/fa/single.md
|
||||||
/docs/en/development/cmake-in-clickhouse.md
|
/docs/en/development/cmake-in-clickhouse.md
|
||||||
|
/docs/ja/development/cmake-in-clickhouse.md
|
||||||
|
/docs/zh/development/cmake-in-clickhouse.md
|
||||||
|
/docs/ru/development/cmake-in-clickhouse.md
|
||||||
|
|
||||||
# callgrind files
|
# callgrind files
|
||||||
callgrind.out.*
|
callgrind.out.*
|
||||||
|
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -246,3 +246,6 @@
|
|||||||
[submodule "contrib/bzip2"]
|
[submodule "contrib/bzip2"]
|
||||||
path = contrib/bzip2
|
path = contrib/bzip2
|
||||||
url = https://github.com/ClickHouse-Extras/bzip2.git
|
url = https://github.com/ClickHouse-Extras/bzip2.git
|
||||||
|
[submodule "contrib/magic_enum"]
|
||||||
|
path = contrib/magic_enum
|
||||||
|
url = https://github.com/Neargye/magic_enum
|
||||||
|
2
AUTHORS
2
AUTHORS
@ -1,2 +1,2 @@
|
|||||||
To see the list of authors who created the source code of ClickHouse, published and distributed by YANDEX LLC as the owner,
|
To see the list of authors who created the source code of ClickHouse, published and distributed by ClickHouse, Inc. as the owner,
|
||||||
run "SELECT * FROM system.contributors;" query on any ClickHouse server.
|
run "SELECT * FROM system.contributors;" query on any ClickHouse server.
|
||||||
|
210
CHANGELOG.md
210
CHANGELOG.md
@ -1,3 +1,213 @@
|
|||||||
|
### ClickHouse release v21.9, 2021-09-09
|
||||||
|
|
||||||
|
#### Backward Incompatible Change
|
||||||
|
|
||||||
|
* Do not output trailing zeros in text representation of `Decimal` types. Example: `1.23` will be printed instead of `1.230000` for decimal with scale 6. This closes [#15794](https://github.com/ClickHouse/ClickHouse/issues/15794). It may introduce slight incompatibility if your applications somehow relied on the trailing zeros. Serialization in output formats can be controlled with the setting `output_format_decimal_trailing_zeros`. Implementation of `toString` and casting to String is changed unconditionally. [#27680](https://github.com/ClickHouse/ClickHouse/pull/27680) ([alexey-milovidov](https://github.com/alexey-milovidov)).
|
||||||
|
* Do not allow to apply parametric aggregate function with `-Merge` combinator to aggregate function state if state was produced by aggregate function with different parameters. For example, state of `fooState(42)(x)` cannot be finalized with `fooMerge(s)` or `fooMerge(123)(s)`, parameters must be specified explicitly like `fooMerge(42)(s)` and must be equal. It does not affect some special aggregate functions like `quantile` and `sequence*` that use parameters for finalization only. [#26847](https://github.com/ClickHouse/ClickHouse/pull/26847) ([tavplubix](https://github.com/tavplubix)).
|
||||||
|
* Under clickhouse-local, always treat local addresses with a port as remote. [#26736](https://github.com/ClickHouse/ClickHouse/pull/26736) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Fix the issue that in case of some sophisticated query with column aliases identical to the names of expressions, bad cast may happen. This fixes [#25447](https://github.com/ClickHouse/ClickHouse/issues/25447). This fixes [#26914](https://github.com/ClickHouse/ClickHouse/issues/26914). This fix may introduce backward incompatibility: if there are different expressions with identical names, exception will be thrown. It may break some rare cases when `enable_optimize_predicate_expression` is set. [#26639](https://github.com/ClickHouse/ClickHouse/pull/26639) ([alexey-milovidov](https://github.com/alexey-milovidov)).
|
||||||
|
* Now, scalar subquery always returns `Nullable` result if it's type can be `Nullable`. It is needed because in case of empty subquery it's result should be `Null`. Previously, it was possible to get error about incompatible types (type deduction does not execute scalar subquery, and it could use not-nullable type). Scalar subquery with empty result which can't be converted to `Nullable` (like `Array` or `Tuple`) now throws error. Fixes [#25411](https://github.com/ClickHouse/ClickHouse/issues/25411). [#26423](https://github.com/ClickHouse/ClickHouse/pull/26423) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Introduce syntax for here documents. Example `SELECT $doc$ VALUE $doc$`. [#26671](https://github.com/ClickHouse/ClickHouse/pull/26671) ([Maksim Kita](https://github.com/kitaisreal)). This change is backward incompatible if in query there are identifiers that contain `$` [#28768](https://github.com/ClickHouse/ClickHouse/issues/28768).
|
||||||
|
|
||||||
|
#### New Feature
|
||||||
|
|
||||||
|
* Implementation of short circuit function evaluation, closes [#12587](https://github.com/ClickHouse/ClickHouse/issues/12587). Add settings `short_circuit_function_evaluation` to configure short circuit function evaluation. [#23367](https://github.com/ClickHouse/ClickHouse/pull/23367) ([Kruglov Pavel](https://github.com/Avogar)).
|
||||||
|
* Add support for INTERSECT, EXCEPT, ANY, ALL operators. [#24757](https://github.com/ClickHouse/ClickHouse/pull/24757) ([Kirill Ershov](https://github.com/zdikov)). ([Kseniia Sumarokova](https://github.com/kssenii)).
|
||||||
|
* Add support for encryption at the virtual file system level (data encryption at rest) using AES-CTR algorithm. [#24206](https://github.com/ClickHouse/ClickHouse/pull/24206) ([Latysheva Alexandra](https://github.com/alexelex)). ([Vitaly Baranov](https://github.com/vitlibar)) [#26733](https://github.com/ClickHouse/ClickHouse/pull/26733) [#26377](https://github.com/ClickHouse/ClickHouse/pull/26377) [#26465](https://github.com/ClickHouse/ClickHouse/pull/26465).
|
||||||
|
* Added natural language processing (NLP) functions for tokenization, stemming, lemmatizing and search in synonyms extensions. [#24997](https://github.com/ClickHouse/ClickHouse/pull/24997) ([Nikolay Degterinsky](https://github.com/evillique)).
|
||||||
|
* Added integration with S2 geometry library. [#24980](https://github.com/ClickHouse/ClickHouse/pull/24980) ([Andr0901](https://github.com/Andr0901)). ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
|
||||||
|
* Add SQLite table engine, table function, database engine. [#24194](https://github.com/ClickHouse/ClickHouse/pull/24194) ([Arslan Gumerov](https://github.com/g-arslan)). ([Kseniia Sumarokova](https://github.com/kssenii)).
|
||||||
|
* Added support for custom query for `MySQL`, `PostgreSQL`, `ClickHouse`, `JDBC`, `Cassandra` dictionary source. Closes [#1270](https://github.com/ClickHouse/ClickHouse/issues/1270). [#26995](https://github.com/ClickHouse/ClickHouse/pull/26995) ([Maksim Kita](https://github.com/kitaisreal)).
|
||||||
|
* Add shared (replicated) storage of user, roles, row policies, quotas and settings profiles through ZooKeeper. [#27426](https://github.com/ClickHouse/ClickHouse/pull/27426) ([Kevin Michel](https://github.com/kmichel-aiven)).
|
||||||
|
* Add compression for `INTO OUTFILE` that automatically choose compression algorithm. Closes [#3473](https://github.com/ClickHouse/ClickHouse/issues/3473). [#27134](https://github.com/ClickHouse/ClickHouse/pull/27134) ([Filatenkov Artur](https://github.com/FArthur-cmd)).
|
||||||
|
* Add `INSERT ... FROM INFILE` similarly to `SELECT ... INTO OUTFILE`. [#27655](https://github.com/ClickHouse/ClickHouse/pull/27655) ([Filatenkov Artur](https://github.com/FArthur-cmd)).
|
||||||
|
* Added `complex_key_range_hashed` dictionary. Closes [#22029](https://github.com/ClickHouse/ClickHouse/issues/22029). [#27629](https://github.com/ClickHouse/ClickHouse/pull/27629) ([Maksim Kita](https://github.com/kitaisreal)).
|
||||||
|
* Support expressions in JOIN ON section. Close [#21868](https://github.com/ClickHouse/ClickHouse/issues/21868). [#24420](https://github.com/ClickHouse/ClickHouse/pull/24420) ([Vladimir C](https://github.com/vdimir)).
|
||||||
|
* When client connects to server, it receives information about all warnings that are already were collected by server. (It can be disabled by using option `--no-warnings`). Add `system.warnings` table to collect warnings about server configuration. [#26246](https://github.com/ClickHouse/ClickHouse/pull/26246) ([Filatenkov Artur](https://github.com/FArthur-cmd)). [#26282](https://github.com/ClickHouse/ClickHouse/pull/26282) ([Filatenkov Artur](https://github.com/FArthur-cmd)).
|
||||||
|
* Allow using constant expressions from with and select in aggregate function parameters. Close [#10945](https://github.com/ClickHouse/ClickHouse/issues/10945). [#27531](https://github.com/ClickHouse/ClickHouse/pull/27531) ([abel-cheng](https://github.com/abel-cheng)).
|
||||||
|
* Add `tupleToNameValuePairs`, a function that turns a named tuple into an array of pairs. [#27505](https://github.com/ClickHouse/ClickHouse/pull/27505) ([Braulio Valdivielso Martínez](https://github.com/BraulioVM)).
|
||||||
|
* Add support for `bzip2` compression method for import/export. Closes [#22428](https://github.com/ClickHouse/ClickHouse/issues/22428). [#27377](https://github.com/ClickHouse/ClickHouse/pull/27377) ([Nikolay Degterinsky](https://github.com/evillique)).
|
||||||
|
* Added `bitmapSubsetOffsetLimit(bitmap, offset, cardinality_limit)` function. It creates a subset of bitmap limit the results to `cardinality_limit` with offset of `offset`. [#27234](https://github.com/ClickHouse/ClickHouse/pull/27234) ([DHBin](https://github.com/DHBin)).
|
||||||
|
* Add column `default_database` to `system.users`. [#27054](https://github.com/ClickHouse/ClickHouse/pull/27054) ([kevin wan](https://github.com/MaxWk)).
|
||||||
|
* Supported `cluster` macros inside table functions 'cluster' and 'clusterAllReplicas'. [#26913](https://github.com/ClickHouse/ClickHouse/pull/26913) ([polyprogrammist](https://github.com/PolyProgrammist)).
|
||||||
|
* Add new functions `currentRoles()`, `enabledRoles()`, `defaultRoles()`. [#26780](https://github.com/ClickHouse/ClickHouse/pull/26780) ([Vitaly Baranov](https://github.com/vitlibar)).
|
||||||
|
* New functions `currentProfiles()`, `enabledProfiles()`, `defaultProfiles()`. [#26714](https://github.com/ClickHouse/ClickHouse/pull/26714) ([Vitaly Baranov](https://github.com/vitlibar)).
|
||||||
|
* Add functions that return (initial_)query_id of the current query. This closes [#23682](https://github.com/ClickHouse/ClickHouse/issues/23682). [#26410](https://github.com/ClickHouse/ClickHouse/pull/26410) ([Alexey Boykov](https://github.com/mathalex)).
|
||||||
|
* Add `REPLACE GRANT` feature. [#26384](https://github.com/ClickHouse/ClickHouse/pull/26384) ([Caspian](https://github.com/Cas-pian)).
|
||||||
|
* `EXPLAIN` query now has `EXPLAIN ESTIMATE ...` mode that will show information about read rows, marks and parts from MergeTree tables. Closes [#23941](https://github.com/ClickHouse/ClickHouse/issues/23941). [#26131](https://github.com/ClickHouse/ClickHouse/pull/26131) ([fastio](https://github.com/fastio)).
|
||||||
|
* Added `system.zookeeper_log` table. All actions of ZooKeeper client are logged into this table. Implements [#25449](https://github.com/ClickHouse/ClickHouse/issues/25449). [#26129](https://github.com/ClickHouse/ClickHouse/pull/26129) ([tavplubix](https://github.com/tavplubix)).
|
||||||
|
* Zero-copy replication for `ReplicatedMergeTree` over `HDFS` storage. [#25918](https://github.com/ClickHouse/ClickHouse/pull/25918) ([Zhichang Yu](https://github.com/yuzhichang)).
|
||||||
|
* Allow to insert Nested type as array of structs in `Arrow`, `ORC` and `Parquet` input format. [#25902](https://github.com/ClickHouse/ClickHouse/pull/25902) ([Kruglov Pavel](https://github.com/Avogar)).
|
||||||
|
* Add a new datatype `Date32` (store data as Int32), support date range same with `DateTime64` support load parquet date32 to ClickHouse `Date32` Add new function `toDate32` like `toDate`. [#25774](https://github.com/ClickHouse/ClickHouse/pull/25774) ([LiuNeng](https://github.com/liuneng1994)).
|
||||||
|
* Allow setting default database for users. [#25268](https://github.com/ClickHouse/ClickHouse/issues/25268). [#25687](https://github.com/ClickHouse/ClickHouse/pull/25687) ([kevin wan](https://github.com/MaxWk)).
|
||||||
|
* Add an optional parameter to `MongoDB` engine to accept connection string options and support SSL connection. Closes [#21189](https://github.com/ClickHouse/ClickHouse/issues/21189). Closes [#21041](https://github.com/ClickHouse/ClickHouse/issues/21041). [#22045](https://github.com/ClickHouse/ClickHouse/pull/22045) ([Omar Bazaraa](https://github.com/OmarBazaraa)).
|
||||||
|
|
||||||
|
#### Experimental Feature
|
||||||
|
|
||||||
|
* Added a compression codec `AES_128_GCM_SIV` which encrypts columns instead of compressing them. [#19896](https://github.com/ClickHouse/ClickHouse/pull/19896) ([PHO](https://github.com/depressed-pho)). Will be rewritten, do not use.
|
||||||
|
* Rename `MaterializeMySQL` to `MaterializedMySQL`. [#26822](https://github.com/ClickHouse/ClickHouse/pull/26822) ([tavplubix](https://github.com/tavplubix)).
|
||||||
|
|
||||||
|
#### Performance Improvement
|
||||||
|
|
||||||
|
* Improve the performance of fast queries when `max_execution_time = 0` by reducing the number of `clock_gettime` system calls. [#27325](https://github.com/ClickHouse/ClickHouse/pull/27325) ([filimonov](https://github.com/filimonov)).
|
||||||
|
* Specialize date time related comparison to achieve better performance. This fixes [#27083](https://github.com/ClickHouse/ClickHouse/issues/27083) . [#27122](https://github.com/ClickHouse/ClickHouse/pull/27122) ([Amos Bird](https://github.com/amosbird)).
|
||||||
|
* Share file descriptors in concurrent reads of the same files. There is no noticeable performance difference on Linux. But the number of opened files will be significantly (10..100 times) lower on typical servers and it makes operations easier. See [#26214](https://github.com/ClickHouse/ClickHouse/issues/26214). [#26768](https://github.com/ClickHouse/ClickHouse/pull/26768) ([alexey-milovidov](https://github.com/alexey-milovidov)).
|
||||||
|
* Improve latency of short queries, that require reading from tables with large number of columns. [#26371](https://github.com/ClickHouse/ClickHouse/pull/26371) ([Anton Popov](https://github.com/CurtizJ)).
|
||||||
|
* Don't build sets for indices when analyzing a query. [#26365](https://github.com/ClickHouse/ClickHouse/pull/26365) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Vectorize the SUM of Nullable integer types with native representation ([David Manzanares](https://github.com/davidmanzanares), [Raúl Marín](https://github.com/Algunenano)). [#26248](https://github.com/ClickHouse/ClickHouse/pull/26248) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Compile expressions involving columns with `Enum` types. [#26237](https://github.com/ClickHouse/ClickHouse/pull/26237) ([Maksim Kita](https://github.com/kitaisreal)).
|
||||||
|
* Compile aggregate functions `groupBitOr`, `groupBitAnd`, `groupBitXor`. [#26161](https://github.com/ClickHouse/ClickHouse/pull/26161) ([Maksim Kita](https://github.com/kitaisreal)).
|
||||||
|
* Improved memory usage with better block size prediction when reading empty DEFAULT columns. Closes [#17317](https://github.com/ClickHouse/ClickHouse/issues/17317). [#25917](https://github.com/ClickHouse/ClickHouse/pull/25917) ([Vladimir Chebotarev](https://github.com/excitoon)).
|
||||||
|
* Reduce memory usage and number of read rows in queries with `ORDER BY primary_key`. [#25721](https://github.com/ClickHouse/ClickHouse/pull/25721) ([Anton Popov](https://github.com/CurtizJ)).
|
||||||
|
* Enable `distributed_push_down_limit` by default. [#27104](https://github.com/ClickHouse/ClickHouse/pull/27104) ([Azat Khuzhin](https://github.com/azat)).
|
||||||
|
* Make `toTimeZone` monotonicity when timeZone is a constant value to support partition puring when use sql like:. [#26261](https://github.com/ClickHouse/ClickHouse/pull/26261) ([huangzhaowei](https://github.com/SaintBacchus)).
|
||||||
|
|
||||||
|
#### Improvement
|
||||||
|
|
||||||
|
* Mark window functions as ready for general use. Remove the `allow_experimental_window_functions` setting. [#27184](https://github.com/ClickHouse/ClickHouse/pull/27184) ([Alexander Kuzmenkov](https://github.com/akuzm)).
|
||||||
|
* Improve compatibility with non-whole-minute timezone offsets. [#27080](https://github.com/ClickHouse/ClickHouse/pull/27080) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* If file descriptor in `File` table is regular file - allow to read multiple times from it. It allows `clickhouse-local` to read multiple times from stdin (with multiple SELECT queries or subqueries) if stdin is a regular file like `clickhouse-local --query "SELECT * FROM table UNION ALL SELECT * FROM table" ... < file`. This closes [#11124](https://github.com/ClickHouse/ClickHouse/issues/11124). Co-authored with ([alexey-milovidov](https://github.com/alexey-milovidov)). [#25960](https://github.com/ClickHouse/ClickHouse/pull/25960) ([BoloniniD](https://github.com/BoloniniD)).
|
||||||
|
* Remove duplicate index analysis and avoid possible invalid limit checks during projection analysis. [#27742](https://github.com/ClickHouse/ClickHouse/pull/27742) ([Amos Bird](https://github.com/amosbird)).
|
||||||
|
* Enable query parameters to be passed in the body of HTTP requests. [#27706](https://github.com/ClickHouse/ClickHouse/pull/27706) ([Hermano Lustosa](https://github.com/hllustosa)).
|
||||||
|
* Disallow `arrayJoin` on partition expressions. [#27648](https://github.com/ClickHouse/ClickHouse/pull/27648) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Log client IP address if authentication fails. [#27514](https://github.com/ClickHouse/ClickHouse/pull/27514) ([Misko Lee](https://github.com/imiskolee)).
|
||||||
|
* Use bytes instead of strings for binary data in the GRPC protocol. [#27431](https://github.com/ClickHouse/ClickHouse/pull/27431) ([Vitaly Baranov](https://github.com/vitlibar)).
|
||||||
|
* Send response with error message if HTTP port is not set and user tries to send HTTP request to TCP port. [#27385](https://github.com/ClickHouse/ClickHouse/pull/27385) ([Braulio Valdivielso Martínez](https://github.com/BraulioVM)).
|
||||||
|
* Add `_CAST` function for internal usage, which will not preserve type nullability, but non-internal cast will preserve according to setting `cast_keep_nullable`. Closes [#12636](https://github.com/ClickHouse/ClickHouse/issues/12636). [#27382](https://github.com/ClickHouse/ClickHouse/pull/27382) ([Kseniia Sumarokova](https://github.com/kssenii)).
|
||||||
|
* Add setting `log_formatted_queries` to log additional formatted query into `system.query_log`. It's useful for normalized query analysis because functions like `normalizeQuery` and `normalizeQueryKeepNames` don't parse/format queries in order to achieve better performance. [#27380](https://github.com/ClickHouse/ClickHouse/pull/27380) ([Amos Bird](https://github.com/amosbird)).
|
||||||
|
* Add two settings `max_hyperscan_regexp_length` and `max_hyperscan_regexp_total_length` to prevent huge regexp being used in hyperscan related functions, such as `multiMatchAny`. [#27378](https://github.com/ClickHouse/ClickHouse/pull/27378) ([Amos Bird](https://github.com/amosbird)).
|
||||||
|
* Memory consumed by bitmap aggregate functions now is taken into account for memory limits. This closes [#26555](https://github.com/ClickHouse/ClickHouse/issues/26555). [#27252](https://github.com/ClickHouse/ClickHouse/pull/27252) ([alexey-milovidov](https://github.com/alexey-milovidov)).
|
||||||
|
* Add new index data skipping minmax index format for proper Nullable support. [#27250](https://github.com/ClickHouse/ClickHouse/pull/27250) ([Azat Khuzhin](https://github.com/azat)).
|
||||||
|
* Add 10 seconds cache for S3 proxy resolver. [#27216](https://github.com/ClickHouse/ClickHouse/pull/27216) ([ianton-ru](https://github.com/ianton-ru)).
|
||||||
|
* Split global mutex into individual regexp construction. This helps avoid huge regexp construction blocking other related threads. [#27211](https://github.com/ClickHouse/ClickHouse/pull/27211) ([Amos Bird](https://github.com/amosbird)).
|
||||||
|
* Support schema for PostgreSQL database engine. Closes [#27166](https://github.com/ClickHouse/ClickHouse/issues/27166). [#27198](https://github.com/ClickHouse/ClickHouse/pull/27198) ([Kseniia Sumarokova](https://github.com/kssenii)).
|
||||||
|
* Track memory usage in clickhouse-client. [#27191](https://github.com/ClickHouse/ClickHouse/pull/27191) ([Filatenkov Artur](https://github.com/FArthur-cmd)).
|
||||||
|
* Try recording `query_kind` in `system.query_log` even when query fails to start. [#27182](https://github.com/ClickHouse/ClickHouse/pull/27182) ([Amos Bird](https://github.com/amosbird)).
|
||||||
|
* Added columns `replica_is_active` that maps replica name to is replica active status to table `system.replicas`. Closes [#27138](https://github.com/ClickHouse/ClickHouse/issues/27138). [#27180](https://github.com/ClickHouse/ClickHouse/pull/27180) ([Maksim Kita](https://github.com/kitaisreal)).
|
||||||
|
* Allow to pass query settings via server URI in Web UI. [#27177](https://github.com/ClickHouse/ClickHouse/pull/27177) ([kolsys](https://github.com/kolsys)).
|
||||||
|
* Add a new metric called `MaxPushedDDLEntryID` which is the maximum ddl entry id that current node push to zookeeper. [#27174](https://github.com/ClickHouse/ClickHouse/pull/27174) ([Fuwang Hu](https://github.com/fuwhu)).
|
||||||
|
* Improved the existence condition judgment and empty string node judgment when `clickhouse-keeper` creates znode. [#27125](https://github.com/ClickHouse/ClickHouse/pull/27125) ([小路](https://github.com/nicelulu)).
|
||||||
|
* Merge JOIN correctly handles empty set in the right. [#27078](https://github.com/ClickHouse/ClickHouse/pull/27078) ([Vladimir C](https://github.com/vdimir)).
|
||||||
|
* Now functions can be shard-level constants, which means if it's executed in the context of some distributed table, it generates a normal column, otherwise it produces a constant value. Notable functions are: `hostName()`, `tcpPort()`, `version()`, `buildId()`, `uptime()`, etc. [#27020](https://github.com/ClickHouse/ClickHouse/pull/27020) ([Amos Bird](https://github.com/amosbird)).
|
||||||
|
* Updated `extractAllGroupsHorizontal` - upper limit on the number of matches per row can be set via optional third argument. [#26961](https://github.com/ClickHouse/ClickHouse/pull/26961) ([Vasily Nemkov](https://github.com/Enmk)).
|
||||||
|
* Expose `RocksDB` statistics via system.rocksdb table. Read rocksdb options from ClickHouse config (`rocksdb...` keys). NOTE: ClickHouse does not rely on RocksDB, it is just one of the additional integration storage engines. [#26821](https://github.com/ClickHouse/ClickHouse/pull/26821) ([Azat Khuzhin](https://github.com/azat)).
|
||||||
|
* Less verbose internal RocksDB logs. NOTE: ClickHouse does not rely on RocksDB, it is just one of the additional integration storage engines. This closes [#26252](https://github.com/ClickHouse/ClickHouse/issues/26252). [#26789](https://github.com/ClickHouse/ClickHouse/pull/26789) ([alexey-milovidov](https://github.com/alexey-milovidov)).
|
||||||
|
* Changing default roles affects new sessions only. [#26759](https://github.com/ClickHouse/ClickHouse/pull/26759) ([Vitaly Baranov](https://github.com/vitlibar)).
|
||||||
|
* Watchdog is disabled in docker by default. Fix for not handling ctrl+c. [#26757](https://github.com/ClickHouse/ClickHouse/pull/26757) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
|
||||||
|
* `SET PROFILE` now applies constraints too if they're set for a passed profile. [#26730](https://github.com/ClickHouse/ClickHouse/pull/26730) ([Vitaly Baranov](https://github.com/vitlibar)).
|
||||||
|
* Improve handling of `KILL QUERY` requests. [#26675](https://github.com/ClickHouse/ClickHouse/pull/26675) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* `mapPopulatesSeries` function supports `Map` type. [#26663](https://github.com/ClickHouse/ClickHouse/pull/26663) ([Ildus Kurbangaliev](https://github.com/ildus)).
|
||||||
|
* Fix excessive (x2) connect attempts with `skip_unavailable_shards`. [#26658](https://github.com/ClickHouse/ClickHouse/pull/26658) ([Azat Khuzhin](https://github.com/azat)).
|
||||||
|
* Avoid hanging `clickhouse-benchmark` if connection fails (i.e. on EMFILE). [#26656](https://github.com/ClickHouse/ClickHouse/pull/26656) ([Azat Khuzhin](https://github.com/azat)).
|
||||||
|
* Allow more threads to be used by the Kafka engine. [#26642](https://github.com/ClickHouse/ClickHouse/pull/26642) ([feihengye](https://github.com/feihengye)).
|
||||||
|
* Add round-robin support for `clickhouse-benchmark` (it does not differ from the regular multi host/port run except for statistics report). [#26607](https://github.com/ClickHouse/ClickHouse/pull/26607) ([Azat Khuzhin](https://github.com/azat)).
|
||||||
|
* Executable dictionaries (`executable`, `executable_pool`) enable creation with DDL query using `clickhouse-local`. Closes [#22355](https://github.com/ClickHouse/ClickHouse/issues/22355). [#26510](https://github.com/ClickHouse/ClickHouse/pull/26510) ([Maksim Kita](https://github.com/kitaisreal)).
|
||||||
|
* Set client query kind for `mysql` and `postgresql` compatibility protocol handlers. [#26498](https://github.com/ClickHouse/ClickHouse/pull/26498) ([anneji-dev](https://github.com/anneji-dev)).
|
||||||
|
* Apply `LIMIT` on the shards for queries like `SELECT * FROM dist ORDER BY key LIMIT 10` w/ `distributed_push_down_limit=1`. Avoid running `Distinct`/`LIMIT BY` steps for queries like `SELECT DISTINCT shading_key FROM dist ORDER BY key`. Now `distributed_push_down_limit` is respected by `optimize_distributed_group_by_sharding_key` optimization. [#26466](https://github.com/ClickHouse/ClickHouse/pull/26466) ([Azat Khuzhin](https://github.com/azat)).
|
||||||
|
* Updated protobuf to 3.17.3. Changelogs are available on https://github.com/protocolbuffers/protobuf/releases. [#26424](https://github.com/ClickHouse/ClickHouse/pull/26424) ([Ilya Yatsishin](https://github.com/qoega)).
|
||||||
|
* Enable `use_hedged_requests` setting that allows to mitigate tail latencies on large clusters. [#26380](https://github.com/ClickHouse/ClickHouse/pull/26380) ([alexey-milovidov](https://github.com/alexey-milovidov)).
|
||||||
|
* Improve behaviour with non-existing host in user allowed host list. [#26368](https://github.com/ClickHouse/ClickHouse/pull/26368) ([ianton-ru](https://github.com/ianton-ru)).
|
||||||
|
* Add ability to set `Distributed` directory monitor settings via CREATE TABLE (i.e. `CREATE TABLE dist (key Int) Engine=Distributed(cluster, db, table) SETTINGS monitor_batch_inserts=1` and similar). [#26336](https://github.com/ClickHouse/ClickHouse/pull/26336) ([Azat Khuzhin](https://github.com/azat)).
|
||||||
|
* Save server address in history URLs in web UI if it differs from the origin of web UI. This closes [#26044](https://github.com/ClickHouse/ClickHouse/issues/26044). [#26322](https://github.com/ClickHouse/ClickHouse/pull/26322) ([alexey-milovidov](https://github.com/alexey-milovidov)).
|
||||||
|
* Add events to profile calls to `sleep` / `sleepEachRow`. [#26320](https://github.com/ClickHouse/ClickHouse/pull/26320) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Allow to reuse connections of shards among different clusters. It also avoids creating new connections when using `cluster` table function. [#26318](https://github.com/ClickHouse/ClickHouse/pull/26318) ([Amos Bird](https://github.com/amosbird)).
|
||||||
|
* Control the execution period of clear old temporary directories by parameter with default value. [#26212](https://github.com/ClickHouse/ClickHouse/issues/26212). [#26313](https://github.com/ClickHouse/ClickHouse/pull/26313) ([fastio](https://github.com/fastio)).
|
||||||
|
* Add a setting `function_range_max_elements_in_block` to tune the safety threshold for data volume generated by function `range`. This closes [#26303](https://github.com/ClickHouse/ClickHouse/issues/26303). [#26305](https://github.com/ClickHouse/ClickHouse/pull/26305) ([alexey-milovidov](https://github.com/alexey-milovidov)).
|
||||||
|
* Check hash function at table creation, not at sampling. Add settings for MergeTree, if someone create a table with incorrect sampling column but sampling never be used, disable this settings for starting the server without exception. [#26256](https://github.com/ClickHouse/ClickHouse/pull/26256) ([zhaoyu](https://github.com/zxc111)).
|
||||||
|
* Added `output_format_avro_string_column_pattern` setting to put specified String columns to Avro as string instead of default bytes. Implements [#22414](https://github.com/ClickHouse/ClickHouse/issues/22414). [#26245](https://github.com/ClickHouse/ClickHouse/pull/26245) ([Ilya Golshtein](https://github.com/ilejn)).
|
||||||
|
* Add information about column sizes in `system.columns` table for `Log` and `TinyLog` tables. This closes [#9001](https://github.com/ClickHouse/ClickHouse/issues/9001). [#26241](https://github.com/ClickHouse/ClickHouse/pull/26241) ([Nikolay Degterinsky](https://github.com/evillique)).
|
||||||
|
* Don't throw exception when querying `system.detached_parts` table if there is custom disk configuration and `detached` directory does not exist on some disks. This closes [#26078](https://github.com/ClickHouse/ClickHouse/issues/26078). [#26236](https://github.com/ClickHouse/ClickHouse/pull/26236) ([alexey-milovidov](https://github.com/alexey-milovidov)).
|
||||||
|
* Check for non-deterministic functions in keys, including constant expressions like `now()`, `today()`. This closes [#25875](https://github.com/ClickHouse/ClickHouse/issues/25875). This closes [#11333](https://github.com/ClickHouse/ClickHouse/issues/11333). [#26235](https://github.com/ClickHouse/ClickHouse/pull/26235) ([alexey-milovidov](https://github.com/alexey-milovidov)).
|
||||||
|
* convert timestamp and timestamptz data types to `DateTime64` in PostgreSQL table engine. [#26234](https://github.com/ClickHouse/ClickHouse/pull/26234) ([jasine](https://github.com/jasine)).
|
||||||
|
* Apply aggressive IN index analysis for projections so that better projection candidate can be selected. [#26218](https://github.com/ClickHouse/ClickHouse/pull/26218) ([Amos Bird](https://github.com/amosbird)).
|
||||||
|
* Remove GLOBAL keyword for IN when scalar function is passed. In previous versions, if user specified `GLOBAL IN f(x)` exception was thrown. [#26217](https://github.com/ClickHouse/ClickHouse/pull/26217) ([Amos Bird](https://github.com/amosbird)).
|
||||||
|
* Add error id (like `BAD_ARGUMENTS`) to exception messages. This closes [#25862](https://github.com/ClickHouse/ClickHouse/issues/25862). [#26172](https://github.com/ClickHouse/ClickHouse/pull/26172) ([alexey-milovidov](https://github.com/alexey-milovidov)).
|
||||||
|
* Fix incorrect output with --progress option for clickhouse-local. Progress bar will be cleared once it gets to 100% - same as it is done for clickhouse-client. Closes [#17484](https://github.com/ClickHouse/ClickHouse/issues/17484). [#26128](https://github.com/ClickHouse/ClickHouse/pull/26128) ([Kseniia Sumarokova](https://github.com/kssenii)).
|
||||||
|
* Add `merge_selecting_sleep_ms` setting. [#26120](https://github.com/ClickHouse/ClickHouse/pull/26120) ([lthaooo](https://github.com/lthaooo)).
|
||||||
|
* Remove complicated usage of Linux AIO with one block readahead and replace it with plain simple synchronous IO with O_DIRECT. In previous versions, the setting `min_bytes_to_use_direct_io` may not work correctly if `max_threads` is greater than one. Reading with direct IO (that is disabled by default for queries and enabled by default for large merges) will work in less efficient way. This closes [#25997](https://github.com/ClickHouse/ClickHouse/issues/25997). [#26003](https://github.com/ClickHouse/ClickHouse/pull/26003) ([alexey-milovidov](https://github.com/alexey-milovidov)).
|
||||||
|
* Flush `Distributed` table on `REPLACE TABLE` query. Resolves [#24566](https://github.com/ClickHouse/ClickHouse/issues/24566) - Do not replace (or create) table on `[CREATE OR] REPLACE TABLE ... AS SELECT` query if insertion into new table fails. Resolves [#23175](https://github.com/ClickHouse/ClickHouse/issues/23175). [#25895](https://github.com/ClickHouse/ClickHouse/pull/25895) ([tavplubix](https://github.com/tavplubix)).
|
||||||
|
* Add `views` column to system.query_log containing the names of the (materialized or live) views executed by the query. Adds a new log table (`system.query_views_log`) that contains information about each view executed during a query. Modifies view execution: When an exception is thrown while executing a view, any view that has already startedwill continue running until it finishes. This used to be the behaviour under parallel_view_processing=true and now it's always the same behaviour. - Dependent views now report reading progress to the context. [#25714](https://github.com/ClickHouse/ClickHouse/pull/25714) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Do connection draining asynchonously upon finishing executing distributed queries. A new server setting is added `max_threads_for_connection_collector` which specifies the number of workers to recycle connections in background. If the pool is full, connection will be drained synchronously but a bit different than before: It's drained after we send EOS to client, query will succeed immediately after receiving enough data, and any exception will be logged instead of throwing to the client. Added setting `drain_timeout` (3 seconds by default). Connection draining will disconnect upon timeout. [#25674](https://github.com/ClickHouse/ClickHouse/pull/25674) ([Amos Bird](https://github.com/amosbird)).
|
||||||
|
* Support for multiple includes in configuration. It is possible to include users configuration, remote servers configuration from multiple sources. Simply place `<include />` element with `from_zk`, `from_env` or `incl` attribute and it will be replaced with the substitution. [#24404](https://github.com/ClickHouse/ClickHouse/pull/24404) ([nvartolomei](https://github.com/nvartolomei)).
|
||||||
|
* Fix multiple block insertion into distributed table with `insert_distributed_one_random_shard = 1`. This is a marginal feature. Mark as improvement. [#23140](https://github.com/ClickHouse/ClickHouse/pull/23140) ([Amos Bird](https://github.com/amosbird)).
|
||||||
|
* Support `LowCardinality` and `FixedString` keys/values for `Map` type. [#21543](https://github.com/ClickHouse/ClickHouse/pull/21543) ([hexiaoting](https://github.com/hexiaoting)).
|
||||||
|
* Enable reloading of local disk config. [#19526](https://github.com/ClickHouse/ClickHouse/pull/19526) ([taiyang-li](https://github.com/taiyang-li)).
|
||||||
|
* Now KeyConditions can correctly skip nullable keys, including `isNull` and `isNotNull`. https://github.com/ClickHouse/ClickHouse/pull/12433. [#12455](https://github.com/ClickHouse/ClickHouse/pull/12455) ([Amos Bird](https://github.com/amosbird)).
|
||||||
|
|
||||||
|
#### Bug Fix
|
||||||
|
|
||||||
|
* Fix a couple of bugs that may cause replicas to diverge. [#27808](https://github.com/ClickHouse/ClickHouse/pull/27808) ([tavplubix](https://github.com/tavplubix)).
|
||||||
|
* Fix a rare bug in `DROP PART` which can lead to the error `Unexpected merged part intersects drop range`. [#27807](https://github.com/ClickHouse/ClickHouse/pull/27807) ([alesapin](https://github.com/alesapin)).
|
||||||
|
* Prevent crashes for some formats when NULL (tombstone) message was coming from Kafka. Closes [#19255](https://github.com/ClickHouse/ClickHouse/issues/19255). [#27794](https://github.com/ClickHouse/ClickHouse/pull/27794) ([filimonov](https://github.com/filimonov)).
|
||||||
|
* Fix column filtering with union distinct in subquery. Closes [#27578](https://github.com/ClickHouse/ClickHouse/issues/27578). [#27689](https://github.com/ClickHouse/ClickHouse/pull/27689) ([Kseniia Sumarokova](https://github.com/kssenii)).
|
||||||
|
* Fix bad type cast when functions like `arrayHas` are applied to arrays of LowCardinality of Nullable of different non-numeric types like `DateTime` and `DateTime64`. In previous versions bad cast occurs. In new version it will lead to exception. This closes [#26330](https://github.com/ClickHouse/ClickHouse/issues/26330). [#27682](https://github.com/ClickHouse/ClickHouse/pull/27682) ([alexey-milovidov](https://github.com/alexey-milovidov)).
|
||||||
|
* Fix postgresql table function resulting in non-closing connections. Closes [#26088](https://github.com/ClickHouse/ClickHouse/issues/26088). [#27662](https://github.com/ClickHouse/ClickHouse/pull/27662) ([Kseniia Sumarokova](https://github.com/kssenii)).
|
||||||
|
* Fixed another case of `Unexpected merged part ... intersecting drop range ...` error. [#27656](https://github.com/ClickHouse/ClickHouse/pull/27656) ([tavplubix](https://github.com/tavplubix)).
|
||||||
|
* Fix an error with aliased column in `Distributed` table. [#27652](https://github.com/ClickHouse/ClickHouse/pull/27652) ([Vladimir C](https://github.com/vdimir)).
|
||||||
|
* After setting `max_memory_usage*` to non-zero value it was not possible to reset it back to 0 (unlimited). It's fixed. [#27638](https://github.com/ClickHouse/ClickHouse/pull/27638) ([tavplubix](https://github.com/tavplubix)).
|
||||||
|
* Fixed underflow of the time value when constructing it from components. Closes [#27193](https://github.com/ClickHouse/ClickHouse/issues/27193). [#27605](https://github.com/ClickHouse/ClickHouse/pull/27605) ([Vasily Nemkov](https://github.com/Enmk)).
|
||||||
|
* Fix crash during projection materialization when some parts contain missing columns. This fixes [#27512](https://github.com/ClickHouse/ClickHouse/issues/27512). [#27528](https://github.com/ClickHouse/ClickHouse/pull/27528) ([Amos Bird](https://github.com/amosbird)).
|
||||||
|
* fix metric `BackgroundMessageBrokerSchedulePoolTask`, maybe mistyped. [#27452](https://github.com/ClickHouse/ClickHouse/pull/27452) ([Ben](https://github.com/benbiti)).
|
||||||
|
* Fix distributed queries with zero shards and aggregation. [#27427](https://github.com/ClickHouse/ClickHouse/pull/27427) ([Azat Khuzhin](https://github.com/azat)).
|
||||||
|
* Compatibility when `/proc/meminfo` does not contain KB suffix. [#27361](https://github.com/ClickHouse/ClickHouse/pull/27361) ([Mike Kot](https://github.com/myrrc)).
|
||||||
|
* Fix incorrect result for query with row-level security, PREWHERE and LowCardinality filter. Fixes [#27179](https://github.com/ClickHouse/ClickHouse/issues/27179). [#27329](https://github.com/ClickHouse/ClickHouse/pull/27329) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Fixed incorrect validation of partition id for MergeTree tables that created with old syntax. [#27328](https://github.com/ClickHouse/ClickHouse/pull/27328) ([tavplubix](https://github.com/tavplubix)).
|
||||||
|
* Fix MySQL protocol when using parallel formats (CSV / TSV). [#27326](https://github.com/ClickHouse/ClickHouse/pull/27326) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Fix `Cannot find column` error for queries with sampling. Was introduced in [#24574](https://github.com/ClickHouse/ClickHouse/issues/24574). Fixes [#26522](https://github.com/ClickHouse/ClickHouse/issues/26522). [#27301](https://github.com/ClickHouse/ClickHouse/pull/27301) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Fix errors like `Expected ColumnLowCardinality, gotUInt8` or `Bad cast from type DB::ColumnVector<char8_t> to DB::ColumnLowCardinality` for some queries with `LowCardinality` in `PREWHERE`. And more importantly, fix the lack of whitespace in the error message. Fixes [#23515](https://github.com/ClickHouse/ClickHouse/issues/23515). [#27298](https://github.com/ClickHouse/ClickHouse/pull/27298) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Fix `distributed_group_by_no_merge = 2` with `distributed_push_down_limit = 1` or `optimize_distributed_group_by_sharding_key = 1` with `LIMIT BY` and `LIMIT OFFSET`. [#27249](https://github.com/ClickHouse/ClickHouse/pull/27249) ([Azat Khuzhin](https://github.com/azat)). These are obscure combination of settings that no one is using.
|
||||||
|
* Fix mutation stuck on invalid partitions in non-replicated MergeTree. [#27248](https://github.com/ClickHouse/ClickHouse/pull/27248) ([Azat Khuzhin](https://github.com/azat)).
|
||||||
|
* In case of ambiguity, lambda functions prefer its arguments to other aliases or identifiers. [#27235](https://github.com/ClickHouse/ClickHouse/pull/27235) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Fix column structure in merge join, close [#27091](https://github.com/ClickHouse/ClickHouse/issues/27091). [#27217](https://github.com/ClickHouse/ClickHouse/pull/27217) ([Vladimir C](https://github.com/vdimir)).
|
||||||
|
* In rare cases `system.detached_parts` table might contain incorrect information for some parts, it's fixed. Fixes [#27114](https://github.com/ClickHouse/ClickHouse/issues/27114). [#27183](https://github.com/ClickHouse/ClickHouse/pull/27183) ([tavplubix](https://github.com/tavplubix)).
|
||||||
|
* Fix uninitialized memory in functions `multiSearch*` with empty array, close [#27169](https://github.com/ClickHouse/ClickHouse/issues/27169). [#27181](https://github.com/ClickHouse/ClickHouse/pull/27181) ([Vladimir C](https://github.com/vdimir)).
|
||||||
|
* Fix synchronization in GRPCServer. This PR fixes [#27024](https://github.com/ClickHouse/ClickHouse/issues/27024). [#27064](https://github.com/ClickHouse/ClickHouse/pull/27064) ([Vitaly Baranov](https://github.com/vitlibar)).
|
||||||
|
* Fixed `cache`, `complex_key_cache`, `ssd_cache`, `complex_key_ssd_cache` configuration parsing. Options `allow_read_expired_keys`, `max_update_queue_size`, `update_queue_push_timeout_milliseconds`, `query_wait_timeout_milliseconds` were not parsed for dictionaries with non `cache` type. [#27032](https://github.com/ClickHouse/ClickHouse/pull/27032) ([Maksim Kita](https://github.com/kitaisreal)).
|
||||||
|
* Fix possible mutation stack due to race with DROP_RANGE. [#27002](https://github.com/ClickHouse/ClickHouse/pull/27002) ([Azat Khuzhin](https://github.com/azat)).
|
||||||
|
* Now partition ID in queries like `ALTER TABLE ... PARTITION ID xxx` validates for correctness. Fixes [#25718](https://github.com/ClickHouse/ClickHouse/issues/25718). [#26963](https://github.com/ClickHouse/ClickHouse/pull/26963) ([alesapin](https://github.com/alesapin)).
|
||||||
|
* Fix "Unknown column name" error with multiple JOINs in some cases, close [#26899](https://github.com/ClickHouse/ClickHouse/issues/26899). [#26957](https://github.com/ClickHouse/ClickHouse/pull/26957) ([Vladimir C](https://github.com/vdimir)).
|
||||||
|
* Fix reading of custom TLDs (stops processing with lower buffer or bigger file). [#26948](https://github.com/ClickHouse/ClickHouse/pull/26948) ([Azat Khuzhin](https://github.com/azat)).
|
||||||
|
* Fix error `Missing columns: 'xxx'` when `DEFAULT` column references other non materialized column without `DEFAULT` expression. Fixes [#26591](https://github.com/ClickHouse/ClickHouse/issues/26591). [#26900](https://github.com/ClickHouse/ClickHouse/pull/26900) ([alesapin](https://github.com/alesapin)).
|
||||||
|
* Fix loading of dictionary keys in `library-bridge` for `library` dictionary source. [#26834](https://github.com/ClickHouse/ClickHouse/pull/26834) ([Kseniia Sumarokova](https://github.com/kssenii)).
|
||||||
|
* Aggregate function parameters might be lost when applying some combinators causing exceptions like `Conversion from AggregateFunction(topKArray, Array(String)) to AggregateFunction(topKArray(10), Array(String)) is not supported`. It's fixed. Fixes [#26196](https://github.com/ClickHouse/ClickHouse/issues/26196) and [#26433](https://github.com/ClickHouse/ClickHouse/issues/26433). [#26814](https://github.com/ClickHouse/ClickHouse/pull/26814) ([tavplubix](https://github.com/tavplubix)).
|
||||||
|
* Add `event_time_microseconds` value for `REMOVE_PART` in `system.part_log`. In previous versions is was not set. [#26720](https://github.com/ClickHouse/ClickHouse/pull/26720) ([Azat Khuzhin](https://github.com/azat)).
|
||||||
|
* Do not remove data on ReplicatedMergeTree table shutdown to avoid creating data to metadata inconsistency. [#26716](https://github.com/ClickHouse/ClickHouse/pull/26716) ([nvartolomei](https://github.com/nvartolomei)).
|
||||||
|
* Sometimes `SET ROLE` could work incorrectly, this PR fixes that. [#26707](https://github.com/ClickHouse/ClickHouse/pull/26707) ([Vitaly Baranov](https://github.com/vitlibar)).
|
||||||
|
* Some fixes for parallel formatting (https://github.com/ClickHouse/ClickHouse/issues/26694). [#26703](https://github.com/ClickHouse/ClickHouse/pull/26703) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Fix potential nullptr dereference in window functions. This fixes [#25276](https://github.com/ClickHouse/ClickHouse/issues/25276). [#26668](https://github.com/ClickHouse/ClickHouse/pull/26668) ([Alexander Kuzmenkov](https://github.com/akuzm)).
|
||||||
|
* Fix clickhouse-client history file conversion (when upgrading from the format of 3 years old version of clickhouse-client) if file is empty. [#26589](https://github.com/ClickHouse/ClickHouse/pull/26589) ([Azat Khuzhin](https://github.com/azat)).
|
||||||
|
* Fix incorrect function names of groupBitmapAnd/Or/Xor (can be displayed in some occasions). This fixes. [#26557](https://github.com/ClickHouse/ClickHouse/pull/26557) ([Amos Bird](https://github.com/amosbird)).
|
||||||
|
* Update `chown` cmd check in clickhouse-server docker entrypoint. It fixes the bug that cluster pod restart failed (or timeout) on kubernetes. [#26545](https://github.com/ClickHouse/ClickHouse/pull/26545) ([Ky Li](https://github.com/Kylinrix)).
|
||||||
|
* Fix crash in `RabbitMQ` shutdown in case `RabbitMQ` setup was not started. Closes [#26504](https://github.com/ClickHouse/ClickHouse/issues/26504). [#26529](https://github.com/ClickHouse/ClickHouse/pull/26529) ([Kseniia Sumarokova](https://github.com/kssenii)).
|
||||||
|
* Fix issues with `CREATE DICTIONARY` query if dictionary name or database name was quoted. Closes [#26491](https://github.com/ClickHouse/ClickHouse/issues/26491). [#26508](https://github.com/ClickHouse/ClickHouse/pull/26508) ([Maksim Kita](https://github.com/kitaisreal)).
|
||||||
|
* Fix broken column name resolution after rewriting column aliases. This fixes [#26432](https://github.com/ClickHouse/ClickHouse/issues/26432). [#26475](https://github.com/ClickHouse/ClickHouse/pull/26475) ([Amos Bird](https://github.com/amosbird)).
|
||||||
|
* Fix some fuzzed msan crash. Fixes [#22517](https://github.com/ClickHouse/ClickHouse/issues/22517). [#26428](https://github.com/ClickHouse/ClickHouse/pull/26428) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Fix infinite non joined block stream in `partial_merge_join` close [#26325](https://github.com/ClickHouse/ClickHouse/issues/26325). [#26374](https://github.com/ClickHouse/ClickHouse/pull/26374) ([Vladimir C](https://github.com/vdimir)).
|
||||||
|
* Fix possible crash when login as dropped user. This PR fixes [#26073](https://github.com/ClickHouse/ClickHouse/issues/26073). [#26363](https://github.com/ClickHouse/ClickHouse/pull/26363) ([Vitaly Baranov](https://github.com/vitlibar)).
|
||||||
|
* Fix `optimize_distributed_group_by_sharding_key` for multiple columns (leads to incorrect result w/ `optimize_skip_unused_shards=1`/`allow_nondeterministic_optimize_skip_unused_shards=1` and multiple columns in sharding key expression). [#26353](https://github.com/ClickHouse/ClickHouse/pull/26353) ([Azat Khuzhin](https://github.com/azat)).
|
||||||
|
* Fixed rare bug in lost replica recovery that may cause replicas to diverge. [#26321](https://github.com/ClickHouse/ClickHouse/pull/26321) ([tavplubix](https://github.com/tavplubix)).
|
||||||
|
* Fix zstd decompression (for import/export in zstd framing format that is unrelated to tables data) in case there are escape sequences at the end of internal buffer. Closes [#26013](https://github.com/ClickHouse/ClickHouse/issues/26013). [#26314](https://github.com/ClickHouse/ClickHouse/pull/26314) ([Kseniia Sumarokova](https://github.com/kssenii)).
|
||||||
|
* Fix logical error on join with totals, close [#26017](https://github.com/ClickHouse/ClickHouse/issues/26017). [#26250](https://github.com/ClickHouse/ClickHouse/pull/26250) ([Vladimir C](https://github.com/vdimir)).
|
||||||
|
* Remove excessive newline in `thread_name` column in `system.stack_trace` table. This fixes [#24124](https://github.com/ClickHouse/ClickHouse/issues/24124). [#26210](https://github.com/ClickHouse/ClickHouse/pull/26210) ([alexey-milovidov](https://github.com/alexey-milovidov)).
|
||||||
|
* Fix potential crash if more than one `untuple` expression is used. [#26179](https://github.com/ClickHouse/ClickHouse/pull/26179) ([alexey-milovidov](https://github.com/alexey-milovidov)).
|
||||||
|
* Don't throw exception in `toString` for Nullable Enum if Enum does not have a value for zero, close [#25806](https://github.com/ClickHouse/ClickHouse/issues/25806). [#26123](https://github.com/ClickHouse/ClickHouse/pull/26123) ([Vladimir C](https://github.com/vdimir)).
|
||||||
|
* Fixed incorrect `sequence_id` in MySQL protocol packets that ClickHouse sends on exception during query execution. It might cause MySQL client to reset connection to ClickHouse server. Fixes [#21184](https://github.com/ClickHouse/ClickHouse/issues/21184). [#26051](https://github.com/ClickHouse/ClickHouse/pull/26051) ([tavplubix](https://github.com/tavplubix)).
|
||||||
|
* Fix for the case that `cutToFirstSignificantSubdomainCustom()`/`cutToFirstSignificantSubdomainCustomWithWWW()`/`firstSignificantSubdomainCustom()` returns incorrect type for consts, and hence `optimize_skip_unused_shards` does not work:. [#26041](https://github.com/ClickHouse/ClickHouse/pull/26041) ([Azat Khuzhin](https://github.com/azat)).
|
||||||
|
* Fix possible mismatched header when using normal projection with prewhere. This fixes [#26020](https://github.com/ClickHouse/ClickHouse/issues/26020). [#26038](https://github.com/ClickHouse/ClickHouse/pull/26038) ([Amos Bird](https://github.com/amosbird)).
|
||||||
|
* Fix sharding_key from column w/o function for remote() (before `select * from remote('127.1', system.one, dummy)` leads to `Unknown column: dummy, there are only columns .` error). [#25824](https://github.com/ClickHouse/ClickHouse/pull/25824) ([Azat Khuzhin](https://github.com/azat)).
|
||||||
|
* Fixed `Not found column ...` and `Missing column ...` errors when selecting from `MaterializeMySQL`. Fixes [#23708](https://github.com/ClickHouse/ClickHouse/issues/23708), [#24830](https://github.com/ClickHouse/ClickHouse/issues/24830), [#25794](https://github.com/ClickHouse/ClickHouse/issues/25794). [#25822](https://github.com/ClickHouse/ClickHouse/pull/25822) ([tavplubix](https://github.com/tavplubix)).
|
||||||
|
* Fix `optimize_skip_unused_shards_rewrite_in` for non-UInt64 types (may select incorrect shards eventually or throw `Cannot infer type of an empty tuple` or `Function tuple requires at least one argument`). [#25798](https://github.com/ClickHouse/ClickHouse/pull/25798) ([Azat Khuzhin](https://github.com/azat)).
|
||||||
|
|
||||||
|
#### Build/Testing/Packaging Improvement
|
||||||
|
|
||||||
|
* Now we ran stateful and stateless tests in random timezones. Fixes [#12439](https://github.com/ClickHouse/ClickHouse/issues/12439). Reading String as DateTime and writing DateTime as String in Protobuf format now respect timezone. Reading UInt16 as DateTime in Arrow and Parquet formats now treat it as Date and then converts to DateTime with respect to DateTime's timezone, because Date is serialized in Arrow and Parquet as UInt16. GraphiteMergeTree now respect time zone for rounding of times. Fixes [#5098](https://github.com/ClickHouse/ClickHouse/issues/5098). Author: @alexey-milovidov. [#15408](https://github.com/ClickHouse/ClickHouse/pull/15408) ([alesapin](https://github.com/alesapin)).
|
||||||
|
* `clickhouse-test` supports SQL tests with [Jinja2](https://jinja.palletsprojects.com/en/3.0.x/templates/#synopsis) templates. [#26579](https://github.com/ClickHouse/ClickHouse/pull/26579) ([Vladimir C](https://github.com/vdimir)).
|
||||||
|
* Add support for build with `clang-13`. This closes [#27705](https://github.com/ClickHouse/ClickHouse/issues/27705). [#27714](https://github.com/ClickHouse/ClickHouse/pull/27714) ([alexey-milovidov](https://github.com/alexey-milovidov)). [#27777](https://github.com/ClickHouse/ClickHouse/pull/27777) ([Sergei Semin](https://github.com/syominsergey))
|
||||||
|
* Add CMake options to build with or without specific CPU instruction set. This is for [#17469](https://github.com/ClickHouse/ClickHouse/issues/17469) and [#27509](https://github.com/ClickHouse/ClickHouse/issues/27509). [#27508](https://github.com/ClickHouse/ClickHouse/pull/27508) ([alexey-milovidov](https://github.com/alexey-milovidov)).
|
||||||
|
* Fix linking of auxiliar programs when using dynamic libraries. [#26958](https://github.com/ClickHouse/ClickHouse/pull/26958) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Update RocksDB to `2021-07-16` master. [#26411](https://github.com/ClickHouse/ClickHouse/pull/26411) ([alexey-milovidov](https://github.com/alexey-milovidov)).
|
||||||
|
|
||||||
|
|
||||||
### ClickHouse release v21.8, 2021-08-12
|
### ClickHouse release v21.8, 2021-08-12
|
||||||
|
|
||||||
#### Upgrade Notes
|
#### Upgrade Notes
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
cmake_minimum_required(VERSION 3.3)
|
cmake_minimum_required(VERSION 3.14)
|
||||||
|
|
||||||
foreach(policy
|
foreach(policy
|
||||||
CMP0023
|
CMP0023
|
||||||
@ -80,16 +80,16 @@ include (cmake/find/ccache.cmake)
|
|||||||
# ccache ignore it.
|
# ccache ignore it.
|
||||||
option(ENABLE_CHECK_HEAVY_BUILDS "Don't allow C++ translation units to compile too long or to take too much memory while compiling." OFF)
|
option(ENABLE_CHECK_HEAVY_BUILDS "Don't allow C++ translation units to compile too long or to take too much memory while compiling." OFF)
|
||||||
if (ENABLE_CHECK_HEAVY_BUILDS)
|
if (ENABLE_CHECK_HEAVY_BUILDS)
|
||||||
# set DATA (since RSS does not work since 2.6.x+) to 2G
|
# set DATA (since RSS does not work since 2.6.x+) to 5G
|
||||||
set (RLIMIT_DATA 5000000000)
|
set (RLIMIT_DATA 5000000000)
|
||||||
# set VIRT (RLIMIT_AS) to 10G (DATA*10)
|
# set VIRT (RLIMIT_AS) to 10G (DATA*10)
|
||||||
set (RLIMIT_AS 10000000000)
|
set (RLIMIT_AS 10000000000)
|
||||||
# set CPU time limit to 600 seconds
|
# set CPU time limit to 1000 seconds
|
||||||
set (RLIMIT_CPU 600)
|
set (RLIMIT_CPU 1000)
|
||||||
|
|
||||||
# gcc10/gcc10/clang -fsanitize=memory is too heavy
|
# gcc10/gcc10/clang -fsanitize=memory is too heavy
|
||||||
if (SANITIZE STREQUAL "memory" OR COMPILER_GCC)
|
if (SANITIZE STREQUAL "memory" OR COMPILER_GCC)
|
||||||
set (RLIMIT_DATA 10000000000)
|
set (RLIMIT_DATA 10000000000) # 10G
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set (CMAKE_CXX_COMPILER_LAUNCHER prlimit --as=${RLIMIT_AS} --data=${RLIMIT_DATA} --cpu=${RLIMIT_CPU} ${CMAKE_CXX_COMPILER_LAUNCHER})
|
set (CMAKE_CXX_COMPILER_LAUNCHER prlimit --as=${RLIMIT_AS} --data=${RLIMIT_DATA} --cpu=${RLIMIT_CPU} ${CMAKE_CXX_COMPILER_LAUNCHER})
|
||||||
@ -152,6 +152,7 @@ if (CMAKE_GENERATOR STREQUAL "Ninja" AND NOT DISABLE_COLORED_BUILD)
|
|||||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdiagnostics-color=always")
|
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdiagnostics-color=always")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
include (cmake/check_flags.cmake)
|
||||||
include (cmake/add_warning.cmake)
|
include (cmake/add_warning.cmake)
|
||||||
|
|
||||||
if (NOT MSVC)
|
if (NOT MSVC)
|
||||||
@ -165,6 +166,14 @@ if (COMPILER_CLANG)
|
|||||||
if (NOT CMAKE_BUILD_TYPE_UC STREQUAL "RELEASE")
|
if (NOT CMAKE_BUILD_TYPE_UC STREQUAL "RELEASE")
|
||||||
set(COMPILER_FLAGS "${COMPILER_FLAGS} -gdwarf-aranges")
|
set(COMPILER_FLAGS "${COMPILER_FLAGS} -gdwarf-aranges")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
if (HAS_USE_CTOR_HOMING)
|
||||||
|
# For more info see https://blog.llvm.org/posts/2021-04-05-constructor-homing-for-debug-info/
|
||||||
|
if (CMAKE_BUILD_TYPE_UC STREQUAL "DEBUG" OR CMAKE_BUILD_TYPE_UC STREQUAL "RELWITHDEBINFO")
|
||||||
|
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Xclang -fuse-ctor-homing")
|
||||||
|
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Xclang -fuse-ctor-homing")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# If turned `ON`, assumes the user has either the system GTest library or the bundled one.
|
# If turned `ON`, assumes the user has either the system GTest library or the bundled one.
|
||||||
@ -185,7 +194,7 @@ endif ()
|
|||||||
# Make sure the final executable has symbols exported
|
# Make sure the final executable has symbols exported
|
||||||
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -rdynamic")
|
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -rdynamic")
|
||||||
|
|
||||||
find_program (OBJCOPY_PATH NAMES "llvm-objcopy" "llvm-objcopy-12" "llvm-objcopy-11" "llvm-objcopy-10" "llvm-objcopy-9" "llvm-objcopy-8" "objcopy")
|
find_program (OBJCOPY_PATH NAMES "llvm-objcopy" "llvm-objcopy-13" "llvm-objcopy-12" "llvm-objcopy-11" "llvm-objcopy-10" "llvm-objcopy-9" "llvm-objcopy-8" "objcopy")
|
||||||
|
|
||||||
if (NOT OBJCOPY_PATH AND OS_DARWIN)
|
if (NOT OBJCOPY_PATH AND OS_DARWIN)
|
||||||
find_program (BREW_PATH NAMES "brew")
|
find_program (BREW_PATH NAMES "brew")
|
||||||
@ -372,7 +381,7 @@ if (COMPILER_CLANG)
|
|||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# Always prefer llvm tools when using clang. For instance, we cannot use GNU ar when llvm LTO is enabled
|
# Always prefer llvm tools when using clang. For instance, we cannot use GNU ar when llvm LTO is enabled
|
||||||
find_program (LLVM_AR_PATH NAMES "llvm-ar" "llvm-ar-12" "llvm-ar-11" "llvm-ar-10" "llvm-ar-9" "llvm-ar-8")
|
find_program (LLVM_AR_PATH NAMES "llvm-ar" "llvm-ar-13" "llvm-ar-12" "llvm-ar-11" "llvm-ar-10" "llvm-ar-9" "llvm-ar-8")
|
||||||
|
|
||||||
if (LLVM_AR_PATH)
|
if (LLVM_AR_PATH)
|
||||||
message(STATUS "Using llvm-ar: ${LLVM_AR_PATH}.")
|
message(STATUS "Using llvm-ar: ${LLVM_AR_PATH}.")
|
||||||
@ -381,7 +390,7 @@ if (COMPILER_CLANG)
|
|||||||
message(WARNING "Cannot find llvm-ar. System ar will be used instead. It does not work with ThinLTO.")
|
message(WARNING "Cannot find llvm-ar. System ar will be used instead. It does not work with ThinLTO.")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
find_program (LLVM_RANLIB_PATH NAMES "llvm-ranlib" "llvm-ranlib-12" "llvm-ranlib-11" "llvm-ranlib-10" "llvm-ranlib-9" "llvm-ranlib-8")
|
find_program (LLVM_RANLIB_PATH NAMES "llvm-ranlib" "llvm-ranlib-13" "llvm-ranlib-12" "llvm-ranlib-11" "llvm-ranlib-10" "llvm-ranlib-9" "llvm-ranlib-8")
|
||||||
|
|
||||||
if (LLVM_RANLIB_PATH)
|
if (LLVM_RANLIB_PATH)
|
||||||
message(STATUS "Using llvm-ranlib: ${LLVM_RANLIB_PATH}.")
|
message(STATUS "Using llvm-ranlib: ${LLVM_RANLIB_PATH}.")
|
||||||
@ -622,9 +631,6 @@ include_directories(${ConfigIncludePath})
|
|||||||
# Add as many warnings as possible for our own code.
|
# Add as many warnings as possible for our own code.
|
||||||
include (cmake/warnings.cmake)
|
include (cmake/warnings.cmake)
|
||||||
|
|
||||||
# Check if needed compiler flags are supported
|
|
||||||
include (cmake/check_flags.cmake)
|
|
||||||
|
|
||||||
add_subdirectory (base)
|
add_subdirectory (base)
|
||||||
add_subdirectory (src)
|
add_subdirectory (src)
|
||||||
add_subdirectory (programs)
|
add_subdirectory (programs)
|
||||||
|
@ -6,38 +6,6 @@ Thank you.
|
|||||||
|
|
||||||
## Technical Info
|
## Technical Info
|
||||||
|
|
||||||
We have a [developer's guide](https://clickhouse.yandex/docs/en/development/developer_instruction/) for writing code for ClickHouse. Besides this guide, you can find [Overview of ClickHouse Architecture](https://clickhouse.yandex/docs/en/development/architecture/) and instructions on how to build ClickHouse in different environments.
|
We have a [developer's guide](https://clickhouse.com/docs/en/development/developer_instruction/) for writing code for ClickHouse. Besides this guide, you can find [Overview of ClickHouse Architecture](https://clickhouse.com/docs/en/development/architecture/) and instructions on how to build ClickHouse in different environments.
|
||||||
|
|
||||||
If you want to contribute to documentation, read the [Contributing to ClickHouse Documentation](docs/README.md) guide.
|
If you want to contribute to documentation, read the [Contributing to ClickHouse Documentation](docs/README.md) guide.
|
||||||
|
|
||||||
## Legal Info
|
|
||||||
|
|
||||||
In order for us (YANDEX LLC) to accept patches and other contributions from you, you may adopt our Yandex Contributor License Agreement (the "**CLA**"). The current version of the CLA you may find here:
|
|
||||||
1) https://yandex.ru/legal/cla/?lang=en (in English) and
|
|
||||||
2) https://yandex.ru/legal/cla/?lang=ru (in Russian).
|
|
||||||
|
|
||||||
By adopting the CLA, you state the following:
|
|
||||||
|
|
||||||
* You obviously wish and are willingly licensing your contributions to us for our open source projects under the terms of the CLA,
|
|
||||||
* You have read the terms and conditions of the CLA and agree with them in full,
|
|
||||||
* You are legally able to provide and license your contributions as stated,
|
|
||||||
* We may use your contributions for our open source projects and for any other our project too,
|
|
||||||
* We rely on your assurances concerning the rights of third parties in relation to your contributions.
|
|
||||||
|
|
||||||
If you agree with these principles, please read and adopt our CLA. By providing us your contributions, you hereby declare that you have already read and adopt our CLA, and we may freely merge your contributions with our corresponding open source project and use it in further in accordance with terms and conditions of the CLA.
|
|
||||||
|
|
||||||
If you have already adopted terms and conditions of the CLA, you are able to provide your contributes. When you submit your pull request, please add the following information into it:
|
|
||||||
|
|
||||||
```
|
|
||||||
I hereby agree to the terms of the CLA available at: [link].
|
|
||||||
```
|
|
||||||
|
|
||||||
Replace the bracketed text as follows:
|
|
||||||
* [link] is the link at the current version of the CLA (you may add here a link https://yandex.ru/legal/cla/?lang=en (in English) or a link https://yandex.ru/legal/cla/?lang=ru (in Russian).
|
|
||||||
|
|
||||||
It is enough to provide us such notification once.
|
|
||||||
|
|
||||||
As an alternative, you can provide DCO instead of CLA. You can find the text of DCO here: https://developercertificate.org/
|
|
||||||
It is enough to read and copy it verbatim to your pull request.
|
|
||||||
|
|
||||||
If you don't agree with the CLA and don't want to provide DCO, you still can open a pull request to provide your contributions.
|
|
||||||
|
2
LICENSE
2
LICENSE
@ -1,4 +1,4 @@
|
|||||||
Copyright 2016-2021 Yandex LLC
|
Copyright 2016-2021 ClickHouse, Inc.
|
||||||
|
|
||||||
Apache License
|
Apache License
|
||||||
Version 2.0, January 2004
|
Version 2.0, January 2004
|
||||||
|
@ -28,15 +28,16 @@ The following versions of ClickHouse server are currently being supported with s
|
|||||||
| 21.3 | ✅ |
|
| 21.3 | ✅ |
|
||||||
| 21.4 | :x: |
|
| 21.4 | :x: |
|
||||||
| 21.5 | :x: |
|
| 21.5 | :x: |
|
||||||
| 21.6 | ✅ |
|
| 21.6 | :x: |
|
||||||
| 21.7 | ✅ |
|
| 21.7 | ✅ |
|
||||||
| 21.8 | ✅ |
|
| 21.8 | ✅ |
|
||||||
|
| 21.9 | ✅ |
|
||||||
|
|
||||||
## Reporting a Vulnerability
|
## Reporting a Vulnerability
|
||||||
|
|
||||||
We're extremely grateful for security researchers and users that report vulnerabilities to the ClickHouse Open Source Community. All reports are thoroughly investigated by developers.
|
We're extremely grateful for security researchers and users that report vulnerabilities to the ClickHouse Open Source Community. All reports are thoroughly investigated by developers.
|
||||||
|
|
||||||
To report a potential vulnerability in ClickHouse please send the details about it to [clickhouse-feedback@yandex-team.com](mailto:clickhouse-feedback@yandex-team.com).
|
To report a potential vulnerability in ClickHouse please send the details about it to [security@clickhouse.com](mailto:security@clickhouse.com).
|
||||||
|
|
||||||
### When Should I Report a Vulnerability?
|
### When Should I Report a Vulnerability?
|
||||||
|
|
||||||
|
@ -85,6 +85,7 @@ target_link_libraries (common
|
|||||||
replxx
|
replxx
|
||||||
cctz
|
cctz
|
||||||
fmt
|
fmt
|
||||||
|
magic_enum
|
||||||
)
|
)
|
||||||
|
|
||||||
if (ENABLE_TESTS)
|
if (ENABLE_TESTS)
|
||||||
|
157
base/common/Decimal.h
Normal file
157
base/common/Decimal.h
Normal file
@ -0,0 +1,157 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "common/extended_types.h"
|
||||||
|
|
||||||
|
#if !defined(NO_SANITIZE_UNDEFINED)
|
||||||
|
#if defined(__clang__)
|
||||||
|
#define NO_SANITIZE_UNDEFINED __attribute__((__no_sanitize__("undefined")))
|
||||||
|
#else
|
||||||
|
#define NO_SANITIZE_UNDEFINED
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
namespace DB
|
||||||
|
{
|
||||||
|
template <class> struct Decimal;
|
||||||
|
class DateTime64;
|
||||||
|
|
||||||
|
using Decimal32 = Decimal<Int32>;
|
||||||
|
using Decimal64 = Decimal<Int64>;
|
||||||
|
using Decimal128 = Decimal<Int128>;
|
||||||
|
using Decimal256 = Decimal<Int256>;
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
concept is_decimal =
|
||||||
|
std::is_same_v<T, Decimal32>
|
||||||
|
|| std::is_same_v<T, Decimal64>
|
||||||
|
|| std::is_same_v<T, Decimal128>
|
||||||
|
|| std::is_same_v<T, Decimal256>
|
||||||
|
|| std::is_same_v<T, DateTime64>;
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
concept is_over_big_int =
|
||||||
|
std::is_same_v<T, Int128>
|
||||||
|
|| std::is_same_v<T, UInt128>
|
||||||
|
|| std::is_same_v<T, Int256>
|
||||||
|
|| std::is_same_v<T, UInt256>
|
||||||
|
|| std::is_same_v<T, Decimal128>
|
||||||
|
|| std::is_same_v<T, Decimal256>;
|
||||||
|
|
||||||
|
template <class T> struct NativeTypeT { using Type = T; };
|
||||||
|
template <is_decimal T> struct NativeTypeT<T> { using Type = typename T::NativeType; };
|
||||||
|
template <class T> using NativeType = typename NativeTypeT<T>::Type;
|
||||||
|
|
||||||
|
/// Own FieldType for Decimal.
|
||||||
|
/// It is only a "storage" for decimal.
|
||||||
|
/// To perform operations, you also have to provide a scale (number of digits after point).
|
||||||
|
template <typename T>
|
||||||
|
struct Decimal
|
||||||
|
{
|
||||||
|
using NativeType = T;
|
||||||
|
|
||||||
|
constexpr Decimal() = default;
|
||||||
|
constexpr Decimal(Decimal<T> &&) = default;
|
||||||
|
constexpr Decimal(const Decimal<T> &) = default;
|
||||||
|
|
||||||
|
constexpr Decimal(const T & value_): value(value_) {}
|
||||||
|
|
||||||
|
template <typename U>
|
||||||
|
constexpr Decimal(const Decimal<U> & x): value(x.value) {}
|
||||||
|
|
||||||
|
constexpr Decimal<T> & operator = (Decimal<T> &&) = default;
|
||||||
|
constexpr Decimal<T> & operator = (const Decimal<T> &) = default;
|
||||||
|
|
||||||
|
constexpr operator T () const { return value; }
|
||||||
|
|
||||||
|
template <typename U>
|
||||||
|
constexpr U convertTo() const
|
||||||
|
{
|
||||||
|
if constexpr (is_decimal<U>)
|
||||||
|
return convertTo<typename U::NativeType>();
|
||||||
|
else
|
||||||
|
return static_cast<U>(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
const Decimal<T> & operator += (const T & x) { value += x; return *this; }
|
||||||
|
const Decimal<T> & operator -= (const T & x) { value -= x; return *this; }
|
||||||
|
const Decimal<T> & operator *= (const T & x) { value *= x; return *this; }
|
||||||
|
const Decimal<T> & operator /= (const T & x) { value /= x; return *this; }
|
||||||
|
const Decimal<T> & operator %= (const T & x) { value %= x; return *this; }
|
||||||
|
|
||||||
|
template <typename U> const Decimal<T> & operator += (const Decimal<U> & x) { value += x.value; return *this; }
|
||||||
|
template <typename U> const Decimal<T> & operator -= (const Decimal<U> & x) { value -= x.value; return *this; }
|
||||||
|
template <typename U> const Decimal<T> & operator *= (const Decimal<U> & x) { value *= x.value; return *this; }
|
||||||
|
template <typename U> const Decimal<T> & operator /= (const Decimal<U> & x) { value /= x.value; return *this; }
|
||||||
|
template <typename U> const Decimal<T> & operator %= (const Decimal<U> & x) { value %= x.value; return *this; }
|
||||||
|
|
||||||
|
/// This is to avoid UB for sumWithOverflow()
|
||||||
|
void NO_SANITIZE_UNDEFINED addOverflow(const T & x) { value += x; }
|
||||||
|
|
||||||
|
T value;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T> inline bool operator< (const Decimal<T> & x, const Decimal<T> & y) { return x.value < y.value; }
|
||||||
|
template <typename T> inline bool operator> (const Decimal<T> & x, const Decimal<T> & y) { return x.value > y.value; }
|
||||||
|
template <typename T> inline bool operator<= (const Decimal<T> & x, const Decimal<T> & y) { return x.value <= y.value; }
|
||||||
|
template <typename T> inline bool operator>= (const Decimal<T> & x, const Decimal<T> & y) { return x.value >= y.value; }
|
||||||
|
template <typename T> inline bool operator== (const Decimal<T> & x, const Decimal<T> & y) { return x.value == y.value; }
|
||||||
|
template <typename T> inline bool operator!= (const Decimal<T> & x, const Decimal<T> & y) { return x.value != y.value; }
|
||||||
|
|
||||||
|
template <typename T> inline Decimal<T> operator+ (const Decimal<T> & x, const Decimal<T> & y) { return x.value + y.value; }
|
||||||
|
template <typename T> inline Decimal<T> operator- (const Decimal<T> & x, const Decimal<T> & y) { return x.value - y.value; }
|
||||||
|
template <typename T> inline Decimal<T> operator* (const Decimal<T> & x, const Decimal<T> & y) { return x.value * y.value; }
|
||||||
|
template <typename T> inline Decimal<T> operator/ (const Decimal<T> & x, const Decimal<T> & y) { return x.value / y.value; }
|
||||||
|
template <typename T> inline Decimal<T> operator- (const Decimal<T> & x) { return -x.value; }
|
||||||
|
|
||||||
|
/// Distinguishable type to allow function resolution/deduction based on value type,
|
||||||
|
/// but also relatively easy to convert to/from Decimal64.
|
||||||
|
class DateTime64 : public Decimal64
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
using Base = Decimal64;
|
||||||
|
using Base::Base;
|
||||||
|
using NativeType = Base::NativeType;
|
||||||
|
|
||||||
|
constexpr DateTime64(const Base & v): Base(v) {}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr DB::UInt64 max_uint_mask = std::numeric_limits<DB::UInt64>::max();
|
||||||
|
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
template <typename T>
|
||||||
|
struct hash<DB::Decimal<T>>
|
||||||
|
{
|
||||||
|
size_t operator()(const DB::Decimal<T> & x) const { return hash<T>()(x.value); }
|
||||||
|
};
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct hash<DB::Decimal128>
|
||||||
|
{
|
||||||
|
size_t operator()(const DB::Decimal128 & x) const
|
||||||
|
{
|
||||||
|
return std::hash<DB::Int64>()(x.value >> 64)
|
||||||
|
^ std::hash<DB::Int64>()(x.value & max_uint_mask);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct hash<DB::DateTime64>
|
||||||
|
{
|
||||||
|
size_t operator()(const DB::DateTime64 & x) const
|
||||||
|
{
|
||||||
|
return std::hash<DB::DateTime64::NativeType>()(x);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct hash<DB::Decimal256>
|
||||||
|
{
|
||||||
|
size_t operator()(const DB::Decimal256 & x) const
|
||||||
|
{
|
||||||
|
// FIXME temp solution
|
||||||
|
return std::hash<DB::Int64>()(static_cast<DB::Int64>(x.value >> 64 & max_uint_mask))
|
||||||
|
^ std::hash<DB::Int64>()(static_cast<DB::Int64>(x.value & max_uint_mask));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
38
base/common/EnumReflection.h
Normal file
38
base/common/EnumReflection.h
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <magic_enum.hpp>
|
||||||
|
#include <fmt/format.h>
|
||||||
|
|
||||||
|
template <class T> concept is_enum = std::is_enum_v<T>;
|
||||||
|
|
||||||
|
namespace detail
|
||||||
|
{
|
||||||
|
template <is_enum E, class F, size_t ...I>
|
||||||
|
constexpr void static_for(F && f, std::index_sequence<I...>)
|
||||||
|
{
|
||||||
|
(std::forward<F>(f)(std::integral_constant<E, magic_enum::enum_value<E>(I)>()) , ...);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Iterate over enum values in compile-time (compile-time switch/case, loop unrolling).
|
||||||
|
*
|
||||||
|
* @example static_for<E>([](auto enum_value) { return template_func<enum_value>(); }
|
||||||
|
* ^ enum_value can be used as a template parameter
|
||||||
|
*/
|
||||||
|
template <is_enum E, class F>
|
||||||
|
constexpr void static_for(F && f)
|
||||||
|
{
|
||||||
|
constexpr size_t count = magic_enum::enum_count<E>();
|
||||||
|
detail::static_for<E>(std::forward<F>(f), std::make_index_sequence<count>());
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Enable printing enum values as strings via fmt + magic_enum
|
||||||
|
template <is_enum T>
|
||||||
|
struct fmt::formatter<T> : fmt::formatter<std::string_view>
|
||||||
|
{
|
||||||
|
constexpr auto format(T value, auto& format_context)
|
||||||
|
{
|
||||||
|
return formatter<string_view>::format(magic_enum::enum_name(value), format_context);
|
||||||
|
}
|
||||||
|
};
|
@ -16,6 +16,10 @@ extern "C"
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(__clang__) && __clang_major__ >= 13
|
||||||
|
#pragma clang diagnostic ignored "-Wreserved-identifier"
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -96,6 +96,39 @@ inline bool compareSSE2x4(const char * p1, const char * p2)
|
|||||||
|
|
||||||
inline bool memequalSSE2Wide(const char * p1, const char * p2, size_t size)
|
inline bool memequalSSE2Wide(const char * p1, const char * p2, size_t size)
|
||||||
{
|
{
|
||||||
|
/** The order of branches and the trick with overlapping comparisons
|
||||||
|
* are the same as in memcpy implementation.
|
||||||
|
* See the comments in base/glibc-compatibility/memcpy/memcpy.h
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (size <= 16)
|
||||||
|
{
|
||||||
|
if (size >= 8)
|
||||||
|
{
|
||||||
|
/// Chunks of 8..16 bytes.
|
||||||
|
return unalignedLoad<uint64_t>(p1) == unalignedLoad<uint64_t>(p2)
|
||||||
|
&& unalignedLoad<uint64_t>(p1 + size - 8) == unalignedLoad<uint64_t>(p2 + size - 8);
|
||||||
|
}
|
||||||
|
else if (size >= 4)
|
||||||
|
{
|
||||||
|
/// Chunks of 4..7 bytes.
|
||||||
|
return unalignedLoad<uint32_t>(p1) == unalignedLoad<uint32_t>(p2)
|
||||||
|
&& unalignedLoad<uint32_t>(p1 + size - 4) == unalignedLoad<uint32_t>(p2 + size - 4);
|
||||||
|
}
|
||||||
|
else if (size >= 2)
|
||||||
|
{
|
||||||
|
/// Chunks of 2..3 bytes.
|
||||||
|
return unalignedLoad<uint16_t>(p1) == unalignedLoad<uint16_t>(p2)
|
||||||
|
&& unalignedLoad<uint16_t>(p1 + size - 2) == unalignedLoad<uint16_t>(p2 + size - 2);
|
||||||
|
}
|
||||||
|
else if (size >= 1)
|
||||||
|
{
|
||||||
|
/// A single byte.
|
||||||
|
return *p1 == *p2;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
while (size >= 64)
|
while (size >= 64)
|
||||||
{
|
{
|
||||||
if (compareSSE2x4(p1, p2))
|
if (compareSSE2x4(p1, p2))
|
||||||
@ -108,39 +141,14 @@ inline bool memequalSSE2Wide(const char * p1, const char * p2, size_t size)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch ((size % 64) / 16)
|
switch (size / 16)
|
||||||
{
|
{
|
||||||
case 3: if (!compareSSE2(p1 + 32, p2 + 32)) return false; [[fallthrough]];
|
case 3: if (!compareSSE2(p1 + 32, p2 + 32)) return false; [[fallthrough]];
|
||||||
case 2: if (!compareSSE2(p1 + 16, p2 + 16)) return false; [[fallthrough]];
|
case 2: if (!compareSSE2(p1 + 16, p2 + 16)) return false; [[fallthrough]];
|
||||||
case 1: if (!compareSSE2(p1 , p2 )) return false; [[fallthrough]];
|
case 1: if (!compareSSE2(p1, p2)) return false;
|
||||||
case 0: break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
p1 += (size % 64) / 16 * 16;
|
return compareSSE2(p1 + size - 16, p2 + size - 16);
|
||||||
p2 += (size % 64) / 16 * 16;
|
|
||||||
|
|
||||||
switch (size % 16)
|
|
||||||
{
|
|
||||||
case 15: if (p1[14] != p2[14]) return false; [[fallthrough]];
|
|
||||||
case 14: if (p1[13] != p2[13]) return false; [[fallthrough]];
|
|
||||||
case 13: if (p1[12] != p2[12]) return false; [[fallthrough]];
|
|
||||||
case 12: if (unalignedLoad<uint32_t>(p1 + 8) == unalignedLoad<uint32_t>(p2 + 8)) goto l8; else return false;
|
|
||||||
case 11: if (p1[10] != p2[10]) return false; [[fallthrough]];
|
|
||||||
case 10: if (p1[9] != p2[9]) return false; [[fallthrough]];
|
|
||||||
case 9: if (p1[8] != p2[8]) return false;
|
|
||||||
l8: [[fallthrough]];
|
|
||||||
case 8: return unalignedLoad<uint64_t>(p1) == unalignedLoad<uint64_t>(p2);
|
|
||||||
case 7: if (p1[6] != p2[6]) return false; [[fallthrough]];
|
|
||||||
case 6: if (p1[5] != p2[5]) return false; [[fallthrough]];
|
|
||||||
case 5: if (p1[4] != p2[4]) return false; [[fallthrough]];
|
|
||||||
case 4: return unalignedLoad<uint32_t>(p1) == unalignedLoad<uint32_t>(p2);
|
|
||||||
case 3: if (p1[2] != p2[2]) return false; [[fallthrough]];
|
|
||||||
case 2: return unalignedLoad<uint16_t>(p1) == unalignedLoad<uint16_t>(p2);
|
|
||||||
case 1: if (p1[0] != p2[0]) return false; [[fallthrough]];
|
|
||||||
case 0: break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -145,6 +145,19 @@ namespace common
|
|||||||
return __builtin_mul_overflow(x, y, &res);
|
return __builtin_mul_overflow(x, y, &res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T, typename U, typename R>
|
||||||
|
inline bool mulOverflow(T x, U y, R & res)
|
||||||
|
{
|
||||||
|
// not built in type, wide integer
|
||||||
|
if constexpr (is_big_int_v<T> || is_big_int_v<R> || is_big_int_v<U>)
|
||||||
|
{
|
||||||
|
res = mulIgnoreOverflow<R>(x, y);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return __builtin_mul_overflow(x, y, &res);
|
||||||
|
}
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
inline bool mulOverflow(int x, int y, int & res)
|
inline bool mulOverflow(int x, int y, int & res)
|
||||||
{
|
{
|
||||||
|
@ -41,22 +41,14 @@ template <> struct is_unsigned<UInt256> { static constexpr bool value = true; };
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
inline constexpr bool is_unsigned_v = is_unsigned<T>::value;
|
inline constexpr bool is_unsigned_v = is_unsigned<T>::value;
|
||||||
|
|
||||||
|
template <class T> concept is_integer =
|
||||||
|
std::is_integral_v<T>
|
||||||
|
|| std::is_same_v<T, Int128>
|
||||||
|
|| std::is_same_v<T, UInt128>
|
||||||
|
|| std::is_same_v<T, Int256>
|
||||||
|
|| std::is_same_v<T, UInt256>;
|
||||||
|
|
||||||
/// TODO: is_integral includes char, char8_t and wchar_t.
|
template <class T> concept is_floating_point = std::is_floating_point_v<T>;
|
||||||
template <typename T>
|
|
||||||
struct is_integer
|
|
||||||
{
|
|
||||||
static constexpr bool value = std::is_integral_v<T>;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <> struct is_integer<Int128> { static constexpr bool value = true; };
|
|
||||||
template <> struct is_integer<UInt128> { static constexpr bool value = true; };
|
|
||||||
template <> struct is_integer<Int256> { static constexpr bool value = true; };
|
|
||||||
template <> struct is_integer<UInt256> { static constexpr bool value = true; };
|
|
||||||
|
|
||||||
template <typename T>
|
|
||||||
inline constexpr bool is_integer_v = is_integer<T>::value;
|
|
||||||
|
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct is_arithmetic
|
struct is_arithmetic
|
||||||
|
@ -36,18 +36,7 @@
|
|||||||
|
|
||||||
namespace detail
|
namespace detail
|
||||||
{
|
{
|
||||||
|
template <char ...chars> constexpr bool is_in(char x) { return ((x == chars) || ...); }
|
||||||
template <char s0>
|
|
||||||
inline bool is_in(char x)
|
|
||||||
{
|
|
||||||
return x == s0;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <char s0, char s1, char... tail>
|
|
||||||
inline bool is_in(char x)
|
|
||||||
{
|
|
||||||
return x == s0 || is_in<s1, tail...>(x);
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined(__SSE2__)
|
#if defined(__SSE2__)
|
||||||
template <char s0>
|
template <char s0>
|
||||||
@ -67,16 +56,10 @@ inline __m128i mm_is_in(__m128i bytes)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
template <bool positive>
|
template <bool positive>
|
||||||
bool maybe_negate(bool x)
|
constexpr bool maybe_negate(bool x) { return x == positive; }
|
||||||
{
|
|
||||||
if constexpr (positive)
|
|
||||||
return x;
|
|
||||||
else
|
|
||||||
return !x;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <bool positive>
|
template <bool positive>
|
||||||
uint16_t maybe_negate(uint16_t x)
|
constexpr uint16_t maybe_negate(uint16_t x)
|
||||||
{
|
{
|
||||||
if constexpr (positive)
|
if constexpr (positive)
|
||||||
return x;
|
return x;
|
||||||
@ -149,12 +132,13 @@ template <bool positive, ReturnMode return_mode, size_t num_chars,
|
|||||||
char c05 = 0, char c06 = 0, char c07 = 0, char c08 = 0,
|
char c05 = 0, char c06 = 0, char c07 = 0, char c08 = 0,
|
||||||
char c09 = 0, char c10 = 0, char c11 = 0, char c12 = 0,
|
char c09 = 0, char c10 = 0, char c11 = 0, char c12 = 0,
|
||||||
char c13 = 0, char c14 = 0, char c15 = 0, char c16 = 0>
|
char c13 = 0, char c14 = 0, char c15 = 0, char c16 = 0>
|
||||||
inline const char * find_first_symbols_sse42_impl(const char * const begin, const char * const end)
|
inline const char * find_first_symbols_sse42(const char * const begin, const char * const end)
|
||||||
{
|
{
|
||||||
const char * pos = begin;
|
const char * pos = begin;
|
||||||
|
|
||||||
#if defined(__SSE4_2__)
|
#if defined(__SSE4_2__)
|
||||||
#define MODE (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_LEAST_SIGNIFICANT)
|
constexpr int mode = _SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_LEAST_SIGNIFICANT;
|
||||||
|
|
||||||
__m128i set = _mm_setr_epi8(c01, c02, c03, c04, c05, c06, c07, c08, c09, c10, c11, c12, c13, c14, c15, c16);
|
__m128i set = _mm_setr_epi8(c01, c02, c03, c04, c05, c06, c07, c08, c09, c10, c11, c12, c13, c14, c15, c16);
|
||||||
|
|
||||||
for (; pos + 15 < end; pos += 16)
|
for (; pos + 15 < end; pos += 16)
|
||||||
@ -163,16 +147,15 @@ inline const char * find_first_symbols_sse42_impl(const char * const begin, cons
|
|||||||
|
|
||||||
if constexpr (positive)
|
if constexpr (positive)
|
||||||
{
|
{
|
||||||
if (_mm_cmpestrc(set, num_chars, bytes, 16, MODE))
|
if (_mm_cmpestrc(set, num_chars, bytes, 16, mode))
|
||||||
return pos + _mm_cmpestri(set, num_chars, bytes, 16, MODE);
|
return pos + _mm_cmpestri(set, num_chars, bytes, 16, mode);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (_mm_cmpestrc(set, num_chars, bytes, 16, MODE | _SIDD_NEGATIVE_POLARITY))
|
if (_mm_cmpestrc(set, num_chars, bytes, 16, mode | _SIDD_NEGATIVE_POLARITY))
|
||||||
return pos + _mm_cmpestri(set, num_chars, bytes, 16, MODE | _SIDD_NEGATIVE_POLARITY);
|
return pos + _mm_cmpestri(set, num_chars, bytes, 16, mode | _SIDD_NEGATIVE_POLARITY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#undef MODE
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for (; pos < end; ++pos)
|
for (; pos < end; ++pos)
|
||||||
@ -197,20 +180,15 @@ inline const char * find_first_symbols_sse42_impl(const char * const begin, cons
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template <bool positive, ReturnMode return_mode, char... symbols>
|
|
||||||
inline const char * find_first_symbols_sse42(const char * begin, const char * end)
|
|
||||||
{
|
|
||||||
return find_first_symbols_sse42_impl<positive, return_mode, sizeof...(symbols), symbols...>(begin, end);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// NOTE No SSE 4.2 implementation for find_last_symbols_or_null. Not worth to do.
|
/// NOTE No SSE 4.2 implementation for find_last_symbols_or_null. Not worth to do.
|
||||||
|
|
||||||
template <bool positive, ReturnMode return_mode, char... symbols>
|
template <bool positive, ReturnMode return_mode, char... symbols>
|
||||||
inline const char * find_first_symbols_dispatch(const char * begin, const char * end)
|
inline const char * find_first_symbols_dispatch(const char * begin, const char * end)
|
||||||
|
requires(0 <= sizeof...(symbols) && sizeof...(symbols) <= 16)
|
||||||
{
|
{
|
||||||
#if defined(__SSE4_2__)
|
#if defined(__SSE4_2__)
|
||||||
if (sizeof...(symbols) >= 5)
|
if (sizeof...(symbols) >= 5)
|
||||||
return find_first_symbols_sse42<positive, return_mode, symbols...>(begin, end);
|
return find_first_symbols_sse42<positive, return_mode, sizeof...(symbols), symbols...>(begin, end);
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
return find_first_symbols_sse2<positive, return_mode, symbols...>(begin, end);
|
return find_first_symbols_sse2<positive, return_mode, symbols...>(begin, end);
|
||||||
|
@ -42,6 +42,7 @@ namespace
|
|||||||
} while (false)
|
} while (false)
|
||||||
|
|
||||||
|
|
||||||
|
#define LOG_TEST(logger, ...) LOG_IMPL(logger, DB::LogsLevel::test, Poco::Message::PRIO_TEST, __VA_ARGS__)
|
||||||
#define LOG_TRACE(logger, ...) LOG_IMPL(logger, DB::LogsLevel::trace, Poco::Message::PRIO_TRACE, __VA_ARGS__)
|
#define LOG_TRACE(logger, ...) LOG_IMPL(logger, DB::LogsLevel::trace, Poco::Message::PRIO_TRACE, __VA_ARGS__)
|
||||||
#define LOG_DEBUG(logger, ...) LOG_IMPL(logger, DB::LogsLevel::debug, Poco::Message::PRIO_DEBUG, __VA_ARGS__)
|
#define LOG_DEBUG(logger, ...) LOG_IMPL(logger, DB::LogsLevel::debug, Poco::Message::PRIO_DEBUG, __VA_ARGS__)
|
||||||
#define LOG_INFO(logger, ...) LOG_IMPL(logger, DB::LogsLevel::information, Poco::Message::PRIO_INFORMATION, __VA_ARGS__)
|
#define LOG_INFO(logger, ...) LOG_IMPL(logger, DB::LogsLevel::information, Poco::Message::PRIO_INFORMATION, __VA_ARGS__)
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
#if defined(__clang__) && __clang_major__ >= 13
|
||||||
|
#pragma clang diagnostic ignored "-Wreserved-identifier"
|
||||||
|
#endif
|
||||||
|
|
||||||
/// This code was based on the code by Fedor Korotkiy (prime@yandex-team.ru) for YT product in Yandex.
|
/// This code was based on the code by Fedor Korotkiy (prime@yandex-team.ru) for YT product in Yandex.
|
||||||
|
|
||||||
#include <common/defines.h>
|
#include <common/defines.h>
|
||||||
|
@ -15,15 +15,15 @@ private:
|
|||||||
public:
|
public:
|
||||||
using UnderlyingType = T;
|
using UnderlyingType = T;
|
||||||
template <class Enable = typename std::is_copy_constructible<T>::type>
|
template <class Enable = typename std::is_copy_constructible<T>::type>
|
||||||
explicit StrongTypedef(const T & t_) : t(t_) {}
|
constexpr explicit StrongTypedef(const T & t_) : t(t_) {}
|
||||||
template <class Enable = typename std::is_move_constructible<T>::type>
|
template <class Enable = typename std::is_move_constructible<T>::type>
|
||||||
explicit StrongTypedef(T && t_) : t(std::move(t_)) {}
|
constexpr explicit StrongTypedef(T && t_) : t(std::move(t_)) {}
|
||||||
|
|
||||||
template <class Enable = typename std::is_default_constructible<T>::type>
|
template <class Enable = typename std::is_default_constructible<T>::type>
|
||||||
StrongTypedef(): t() {}
|
constexpr StrongTypedef(): t() {}
|
||||||
|
|
||||||
StrongTypedef(const Self &) = default;
|
constexpr StrongTypedef(const Self &) = default;
|
||||||
StrongTypedef(Self &&) = default;
|
constexpr StrongTypedef(Self &&) = default;
|
||||||
|
|
||||||
Self & operator=(const Self &) = default;
|
Self & operator=(const Self &) = default;
|
||||||
Self & operator=(Self &&) = default;
|
Self & operator=(Self &&) = default;
|
||||||
|
@ -1,6 +1,10 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
|
|
||||||
|
#if defined(__clang__) && __clang_major__ >= 13
|
||||||
|
#pragma clang diagnostic ignored "-Wreserved-identifier"
|
||||||
|
#endif
|
||||||
|
|
||||||
constexpr size_t KiB = 1024;
|
constexpr size_t KiB = 1024;
|
||||||
constexpr size_t MiB = 1024 * KiB;
|
constexpr size_t MiB = 1024 * KiB;
|
||||||
constexpr size_t GiB = 1024 * MiB;
|
constexpr size_t GiB = 1024 * MiB;
|
||||||
|
@ -1,63 +0,0 @@
|
|||||||
# This file is generated automatically, do not edit. See 'ya.make.in' and use 'utils/generate-ya-make' to regenerate it.
|
|
||||||
OWNER(g:clickhouse)
|
|
||||||
|
|
||||||
LIBRARY()
|
|
||||||
|
|
||||||
ADDINCL(
|
|
||||||
GLOBAL clickhouse/base
|
|
||||||
)
|
|
||||||
|
|
||||||
CFLAGS (GLOBAL -DARCADIA_BUILD)
|
|
||||||
|
|
||||||
CFLAGS (GLOBAL -DUSE_CPUID=1)
|
|
||||||
CFLAGS (GLOBAL -DUSE_JEMALLOC=0)
|
|
||||||
CFLAGS (GLOBAL -DUSE_RAPIDJSON=1)
|
|
||||||
CFLAGS (GLOBAL -DUSE_SSL=1)
|
|
||||||
|
|
||||||
IF (OS_DARWIN)
|
|
||||||
CFLAGS (GLOBAL -DOS_DARWIN)
|
|
||||||
ELSEIF (OS_FREEBSD)
|
|
||||||
CFLAGS (GLOBAL -DOS_FREEBSD)
|
|
||||||
ELSEIF (OS_LINUX)
|
|
||||||
CFLAGS (GLOBAL -DOS_LINUX)
|
|
||||||
ENDIF ()
|
|
||||||
|
|
||||||
PEERDIR(
|
|
||||||
contrib/libs/cctz
|
|
||||||
contrib/libs/cxxsupp/libcxx-filesystem
|
|
||||||
contrib/libs/poco/Net
|
|
||||||
contrib/libs/poco/Util
|
|
||||||
contrib/libs/poco/NetSSL_OpenSSL
|
|
||||||
contrib/libs/fmt
|
|
||||||
contrib/restricted/boost
|
|
||||||
contrib/restricted/cityhash-1.0.2
|
|
||||||
)
|
|
||||||
|
|
||||||
CFLAGS(-g0)
|
|
||||||
|
|
||||||
SRCS(
|
|
||||||
DateLUT.cpp
|
|
||||||
DateLUTImpl.cpp
|
|
||||||
JSON.cpp
|
|
||||||
LineReader.cpp
|
|
||||||
StringRef.cpp
|
|
||||||
argsToConfig.cpp
|
|
||||||
coverage.cpp
|
|
||||||
demangle.cpp
|
|
||||||
errnoToString.cpp
|
|
||||||
getFQDNOrHostName.cpp
|
|
||||||
getMemoryAmount.cpp
|
|
||||||
getPageSize.cpp
|
|
||||||
getResource.cpp
|
|
||||||
getThreadId.cpp
|
|
||||||
mremap.cpp
|
|
||||||
phdr_cache.cpp
|
|
||||||
preciseExp10.cpp
|
|
||||||
setTerminalEcho.cpp
|
|
||||||
shift10.cpp
|
|
||||||
sleep.cpp
|
|
||||||
terminalColors.cpp
|
|
||||||
|
|
||||||
)
|
|
||||||
|
|
||||||
END()
|
|
@ -1,41 +0,0 @@
|
|||||||
OWNER(g:clickhouse)
|
|
||||||
|
|
||||||
LIBRARY()
|
|
||||||
|
|
||||||
ADDINCL(
|
|
||||||
GLOBAL clickhouse/base
|
|
||||||
)
|
|
||||||
|
|
||||||
CFLAGS (GLOBAL -DARCADIA_BUILD)
|
|
||||||
|
|
||||||
CFLAGS (GLOBAL -DUSE_CPUID=1)
|
|
||||||
CFLAGS (GLOBAL -DUSE_JEMALLOC=0)
|
|
||||||
CFLAGS (GLOBAL -DUSE_RAPIDJSON=1)
|
|
||||||
CFLAGS (GLOBAL -DUSE_SSL=1)
|
|
||||||
|
|
||||||
IF (OS_DARWIN)
|
|
||||||
CFLAGS (GLOBAL -DOS_DARWIN)
|
|
||||||
ELSEIF (OS_FREEBSD)
|
|
||||||
CFLAGS (GLOBAL -DOS_FREEBSD)
|
|
||||||
ELSEIF (OS_LINUX)
|
|
||||||
CFLAGS (GLOBAL -DOS_LINUX)
|
|
||||||
ENDIF ()
|
|
||||||
|
|
||||||
PEERDIR(
|
|
||||||
contrib/libs/cctz
|
|
||||||
contrib/libs/cxxsupp/libcxx-filesystem
|
|
||||||
contrib/libs/poco/Net
|
|
||||||
contrib/libs/poco/Util
|
|
||||||
contrib/libs/poco/NetSSL_OpenSSL
|
|
||||||
contrib/libs/fmt
|
|
||||||
contrib/restricted/boost
|
|
||||||
contrib/restricted/cityhash-1.0.2
|
|
||||||
)
|
|
||||||
|
|
||||||
CFLAGS(-g0)
|
|
||||||
|
|
||||||
SRCS(
|
|
||||||
<? find . -name '*.cpp' | grep -v -F tests/ | grep -v -F examples | grep -v -F Replxx | grep -v -F Readline | sed 's/^\.\// /' | sort ?>
|
|
||||||
)
|
|
||||||
|
|
||||||
END()
|
|
@ -1,3 +1,7 @@
|
|||||||
|
#if defined(__clang__) && __clang_major__ >= 13
|
||||||
|
#pragma clang diagnostic ignored "-Wreserved-identifier"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <daemon/BaseDaemon.h>
|
#include <daemon/BaseDaemon.h>
|
||||||
#include <daemon/SentryWriter.h>
|
#include <daemon/SentryWriter.h>
|
||||||
|
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
OWNER(g:clickhouse)
|
|
||||||
|
|
||||||
LIBRARY()
|
|
||||||
|
|
||||||
NO_COMPILER_WARNINGS()
|
|
||||||
|
|
||||||
PEERDIR(
|
|
||||||
clickhouse/src/Common
|
|
||||||
)
|
|
||||||
|
|
||||||
CFLAGS(-g0)
|
|
||||||
|
|
||||||
SRCS(
|
|
||||||
BaseDaemon.cpp
|
|
||||||
GraphiteWriter.cpp
|
|
||||||
SentryWriter.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
END()
|
|
@ -1,19 +0,0 @@
|
|||||||
OWNER(g:clickhouse)
|
|
||||||
|
|
||||||
LIBRARY()
|
|
||||||
|
|
||||||
PEERDIR(
|
|
||||||
clickhouse/src/Common
|
|
||||||
)
|
|
||||||
|
|
||||||
CFLAGS(-g0)
|
|
||||||
|
|
||||||
SRCS(
|
|
||||||
ExtendedLogChannel.cpp
|
|
||||||
Loggers.cpp
|
|
||||||
OwnFormattingChannel.cpp
|
|
||||||
OwnPatternFormatter.cpp
|
|
||||||
OwnSplitChannel.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
END()
|
|
@ -49,6 +49,8 @@ if (NOT USE_INTERNAL_MYSQL_LIBRARY AND OPENSSL_INCLUDE_DIR)
|
|||||||
target_include_directories (mysqlxx SYSTEM PRIVATE ${OPENSSL_INCLUDE_DIR})
|
target_include_directories (mysqlxx SYSTEM PRIVATE ${OPENSSL_INCLUDE_DIR})
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
target_no_warning(mysqlxx reserved-macro-identifier)
|
||||||
|
|
||||||
if (NOT USE_INTERNAL_MYSQL_LIBRARY AND USE_STATIC_LIBRARIES)
|
if (NOT USE_INTERNAL_MYSQL_LIBRARY AND USE_STATIC_LIBRARIES)
|
||||||
message(WARNING "Statically linking with system mysql/mariadb only works "
|
message(WARNING "Statically linking with system mysql/mariadb only works "
|
||||||
"if mysql client libraries are built with same openssl version as "
|
"if mysql client libraries are built with same openssl version as "
|
||||||
|
@ -7,10 +7,22 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <mysqlxx/Pool.h>
|
#include <mysqlxx/Pool.h>
|
||||||
|
|
||||||
#include <common/sleep.h>
|
#include <common/sleep.h>
|
||||||
|
|
||||||
#include <Poco/Util/LayeredConfiguration.h>
|
#include <Poco/Util/LayeredConfiguration.h>
|
||||||
|
#include <ctime>
|
||||||
|
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
|
||||||
|
inline uint64_t clock_gettime_ns(clockid_t clock_type = CLOCK_MONOTONIC)
|
||||||
|
{
|
||||||
|
struct timespec ts;
|
||||||
|
clock_gettime(clock_type, &ts);
|
||||||
|
return uint64_t(ts.tv_sec * 1000000000LL + ts.tv_nsec);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
namespace mysqlxx
|
namespace mysqlxx
|
||||||
@ -124,10 +136,15 @@ Pool::~Pool()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Pool::Entry Pool::get()
|
Pool::Entry Pool::get(uint64_t wait_timeout)
|
||||||
{
|
{
|
||||||
std::unique_lock<std::mutex> lock(mutex);
|
std::unique_lock<std::mutex> lock(mutex);
|
||||||
|
|
||||||
|
uint64_t deadline = 0;
|
||||||
|
/// UINT64_MAX -- wait indefinitely
|
||||||
|
if (wait_timeout && wait_timeout != UINT64_MAX)
|
||||||
|
deadline = clock_gettime_ns() + wait_timeout * 1'000'000'000;
|
||||||
|
|
||||||
initialize();
|
initialize();
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
@ -153,6 +170,12 @@ Pool::Entry Pool::get()
|
|||||||
logger.trace("(%s): Unable to create a new connection: Max number of connections has been reached.", getDescription());
|
logger.trace("(%s): Unable to create a new connection: Max number of connections has been reached.", getDescription());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!wait_timeout)
|
||||||
|
throw Poco::Exception("mysqlxx::Pool is full (wait is disabled, see connection_wait_timeout setting)");
|
||||||
|
|
||||||
|
if (deadline && clock_gettime_ns() >= deadline)
|
||||||
|
throw Poco::Exception("mysqlxx::Pool is full (connection_wait_timeout is exceeded)");
|
||||||
|
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
logger.trace("(%s): Sleeping for %d seconds.", getDescription(), MYSQLXX_POOL_SLEEP_ON_CONNECT_FAIL);
|
logger.trace("(%s): Sleeping for %d seconds.", getDescription(), MYSQLXX_POOL_SLEEP_ON_CONNECT_FAIL);
|
||||||
sleepForSeconds(MYSQLXX_POOL_SLEEP_ON_CONNECT_FAIL);
|
sleepForSeconds(MYSQLXX_POOL_SLEEP_ON_CONNECT_FAIL);
|
||||||
|
@ -189,7 +189,7 @@ public:
|
|||||||
~Pool();
|
~Pool();
|
||||||
|
|
||||||
/// Allocates connection.
|
/// Allocates connection.
|
||||||
Entry get();
|
Entry get(uint64_t wait_timeout = UINT64_MAX);
|
||||||
|
|
||||||
/// Allocates connection.
|
/// Allocates connection.
|
||||||
/// If database is not accessible, returns empty Entry object.
|
/// If database is not accessible, returns empty Entry object.
|
||||||
|
@ -79,7 +79,7 @@ PoolWithFailover PoolFactory::get(const Poco::Util::AbstractConfiguration & conf
|
|||||||
std::lock_guard<std::mutex> lock(impl->mutex);
|
std::lock_guard<std::mutex> lock(impl->mutex);
|
||||||
if (auto entry = impl->pools.find(config_name); entry != impl->pools.end())
|
if (auto entry = impl->pools.find(config_name); entry != impl->pools.end())
|
||||||
{
|
{
|
||||||
return *(entry->second.get());
|
return *(entry->second);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -100,7 +100,7 @@ PoolWithFailover PoolFactory::get(const Poco::Util::AbstractConfiguration & conf
|
|||||||
impl->pools.insert_or_assign(config_name, pool);
|
impl->pools.insert_or_assign(config_name, pool);
|
||||||
impl->pools_by_ids.insert_or_assign(entry_name, config_name);
|
impl->pools_by_ids.insert_or_assign(entry_name, config_name);
|
||||||
}
|
}
|
||||||
return *(pool.get());
|
return *pool;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,8 +21,9 @@ PoolWithFailover::PoolWithFailover(
|
|||||||
const unsigned max_connections_,
|
const unsigned max_connections_,
|
||||||
const size_t max_tries_)
|
const size_t max_tries_)
|
||||||
: max_tries(max_tries_)
|
: max_tries(max_tries_)
|
||||||
|
, shareable(config_.getBool(config_name_ + ".share_connection", false))
|
||||||
|
, wait_timeout(UINT64_MAX)
|
||||||
{
|
{
|
||||||
shareable = config_.getBool(config_name_ + ".share_connection", false);
|
|
||||||
if (config_.has(config_name_ + ".replica"))
|
if (config_.has(config_name_ + ".replica"))
|
||||||
{
|
{
|
||||||
Poco::Util::AbstractConfiguration::Keys replica_keys;
|
Poco::Util::AbstractConfiguration::Keys replica_keys;
|
||||||
@ -80,9 +81,11 @@ PoolWithFailover::PoolWithFailover(
|
|||||||
const std::string & password,
|
const std::string & password,
|
||||||
unsigned default_connections_,
|
unsigned default_connections_,
|
||||||
unsigned max_connections_,
|
unsigned max_connections_,
|
||||||
size_t max_tries_)
|
size_t max_tries_,
|
||||||
|
uint64_t wait_timeout_)
|
||||||
: max_tries(max_tries_)
|
: max_tries(max_tries_)
|
||||||
, shareable(false)
|
, shareable(false)
|
||||||
|
, wait_timeout(wait_timeout_)
|
||||||
{
|
{
|
||||||
/// Replicas have the same priority, but traversed replicas are moved to the end of the queue.
|
/// Replicas have the same priority, but traversed replicas are moved to the end of the queue.
|
||||||
for (const auto & [host, port] : addresses)
|
for (const auto & [host, port] : addresses)
|
||||||
@ -101,6 +104,7 @@ PoolWithFailover::PoolWithFailover(
|
|||||||
PoolWithFailover::PoolWithFailover(const PoolWithFailover & other)
|
PoolWithFailover::PoolWithFailover(const PoolWithFailover & other)
|
||||||
: max_tries{other.max_tries}
|
: max_tries{other.max_tries}
|
||||||
, shareable{other.shareable}
|
, shareable{other.shareable}
|
||||||
|
, wait_timeout(other.wait_timeout)
|
||||||
{
|
{
|
||||||
if (shareable)
|
if (shareable)
|
||||||
{
|
{
|
||||||
@ -140,7 +144,7 @@ PoolWithFailover::Entry PoolWithFailover::get()
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Entry entry = shareable ? pool->get() : pool->tryGet();
|
Entry entry = shareable ? pool->get(wait_timeout) : pool->tryGet();
|
||||||
|
|
||||||
if (!entry.isNull())
|
if (!entry.isNull())
|
||||||
{
|
{
|
||||||
@ -172,7 +176,7 @@ PoolWithFailover::Entry PoolWithFailover::get()
|
|||||||
if (full_pool)
|
if (full_pool)
|
||||||
{
|
{
|
||||||
app.logger().error("All connections failed, trying to wait on a full pool " + (*full_pool)->getDescription());
|
app.logger().error("All connections failed, trying to wait on a full pool " + (*full_pool)->getDescription());
|
||||||
return (*full_pool)->get();
|
return (*full_pool)->get(wait_timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::stringstream message;
|
std::stringstream message;
|
||||||
|
@ -80,6 +80,8 @@ namespace mysqlxx
|
|||||||
std::mutex mutex;
|
std::mutex mutex;
|
||||||
/// Can the Pool be shared
|
/// Can the Pool be shared
|
||||||
bool shareable;
|
bool shareable;
|
||||||
|
/// Timeout for waiting free connection.
|
||||||
|
uint64_t wait_timeout = 0;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
using Entry = Pool::Entry;
|
using Entry = Pool::Entry;
|
||||||
@ -96,6 +98,7 @@ namespace mysqlxx
|
|||||||
* default_connections Number of connection in pool to each replica at start.
|
* default_connections Number of connection in pool to each replica at start.
|
||||||
* max_connections Maximum number of connections in pool to each replica.
|
* max_connections Maximum number of connections in pool to each replica.
|
||||||
* max_tries_ Max number of connection tries.
|
* max_tries_ Max number of connection tries.
|
||||||
|
* wait_timeout_ Timeout for waiting free connection.
|
||||||
*/
|
*/
|
||||||
PoolWithFailover(
|
PoolWithFailover(
|
||||||
const std::string & config_name_,
|
const std::string & config_name_,
|
||||||
@ -117,7 +120,8 @@ namespace mysqlxx
|
|||||||
const std::string & password,
|
const std::string & password,
|
||||||
unsigned default_connections_ = MYSQLXX_POOL_WITH_FAILOVER_DEFAULT_START_CONNECTIONS,
|
unsigned default_connections_ = MYSQLXX_POOL_WITH_FAILOVER_DEFAULT_START_CONNECTIONS,
|
||||||
unsigned max_connections_ = MYSQLXX_POOL_WITH_FAILOVER_DEFAULT_MAX_CONNECTIONS,
|
unsigned max_connections_ = MYSQLXX_POOL_WITH_FAILOVER_DEFAULT_MAX_CONNECTIONS,
|
||||||
size_t max_tries_ = MYSQLXX_POOL_WITH_FAILOVER_DEFAULT_MAX_TRIES);
|
size_t max_tries_ = MYSQLXX_POOL_WITH_FAILOVER_DEFAULT_MAX_TRIES,
|
||||||
|
uint64_t wait_timeout_ = UINT64_MAX);
|
||||||
|
|
||||||
PoolWithFailover(const PoolWithFailover & other);
|
PoolWithFailover(const PoolWithFailover & other);
|
||||||
|
|
||||||
|
@ -77,7 +77,9 @@ void Query::executeImpl()
|
|||||||
case CR_SERVER_LOST:
|
case CR_SERVER_LOST:
|
||||||
throw ConnectionLost(errorMessage(mysql_driver), err_no);
|
throw ConnectionLost(errorMessage(mysql_driver), err_no);
|
||||||
default:
|
default:
|
||||||
throw BadQuery(errorMessage(mysql_driver), err_no);
|
/// Add query to the exception message, since it may differs from the user input query.
|
||||||
|
/// (also you can use this and create query with an error to see what query ClickHouse created)
|
||||||
|
throw BadQuery(errorMessage(mysql_driver) + " (query: " + query_string + ")", err_no);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,39 +0,0 @@
|
|||||||
# This file is generated automatically, do not edit. See 'ya.make.in' and use 'utils/generate-ya-make' to regenerate it.
|
|
||||||
LIBRARY()
|
|
||||||
|
|
||||||
OWNER(g:clickhouse)
|
|
||||||
|
|
||||||
CFLAGS(-g0)
|
|
||||||
|
|
||||||
PEERDIR(
|
|
||||||
contrib/restricted/boost/libs
|
|
||||||
contrib/libs/libmysql_r
|
|
||||||
contrib/libs/poco/Foundation
|
|
||||||
contrib/libs/poco/Util
|
|
||||||
)
|
|
||||||
|
|
||||||
ADDINCL(
|
|
||||||
GLOBAL clickhouse/base
|
|
||||||
clickhouse/base
|
|
||||||
contrib/libs/libmysql_r
|
|
||||||
)
|
|
||||||
|
|
||||||
NO_COMPILER_WARNINGS()
|
|
||||||
|
|
||||||
NO_UTIL()
|
|
||||||
|
|
||||||
SRCS(
|
|
||||||
Connection.cpp
|
|
||||||
Exception.cpp
|
|
||||||
Pool.cpp
|
|
||||||
PoolFactory.cpp
|
|
||||||
PoolWithFailover.cpp
|
|
||||||
Query.cpp
|
|
||||||
ResultBase.cpp
|
|
||||||
Row.cpp
|
|
||||||
UseQueryResult.cpp
|
|
||||||
Value.cpp
|
|
||||||
|
|
||||||
)
|
|
||||||
|
|
||||||
END()
|
|
@ -1,28 +0,0 @@
|
|||||||
LIBRARY()
|
|
||||||
|
|
||||||
OWNER(g:clickhouse)
|
|
||||||
|
|
||||||
CFLAGS(-g0)
|
|
||||||
|
|
||||||
PEERDIR(
|
|
||||||
contrib/restricted/boost/libs
|
|
||||||
contrib/libs/libmysql_r
|
|
||||||
contrib/libs/poco/Foundation
|
|
||||||
contrib/libs/poco/Util
|
|
||||||
)
|
|
||||||
|
|
||||||
ADDINCL(
|
|
||||||
GLOBAL clickhouse/base
|
|
||||||
clickhouse/base
|
|
||||||
contrib/libs/libmysql_r
|
|
||||||
)
|
|
||||||
|
|
||||||
NO_COMPILER_WARNINGS()
|
|
||||||
|
|
||||||
NO_UTIL()
|
|
||||||
|
|
||||||
SRCS(
|
|
||||||
<? find . -name '*.cpp' | grep -v -F tests/ | grep -v -F examples | sed 's/^\.\// /' | sort ?>
|
|
||||||
)
|
|
||||||
|
|
||||||
END()
|
|
@ -1,7 +0,0 @@
|
|||||||
OWNER(g:clickhouse)
|
|
||||||
|
|
||||||
LIBRARY()
|
|
||||||
|
|
||||||
ADDINCL (GLOBAL clickhouse/base/pcg-random)
|
|
||||||
|
|
||||||
END()
|
|
@ -27,6 +27,10 @@
|
|||||||
#define _PATH_TTY "/dev/tty"
|
#define _PATH_TTY "/dev/tty"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(__clang__) && __clang_major__ >= 13
|
||||||
|
#pragma clang diagnostic ignored "-Wreserved-identifier"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <termios.h>
|
#include <termios.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
OWNER(g:clickhouse)
|
|
||||||
|
|
||||||
LIBRARY()
|
|
||||||
|
|
||||||
CFLAGS(-g0)
|
|
||||||
|
|
||||||
SRCS(
|
|
||||||
readpassphrase.c
|
|
||||||
)
|
|
||||||
|
|
||||||
END()
|
|
@ -1,13 +0,0 @@
|
|||||||
OWNER(g:clickhouse)
|
|
||||||
|
|
||||||
LIBRARY()
|
|
||||||
|
|
||||||
ADDINCL(GLOBAL clickhouse/base/widechar_width)
|
|
||||||
|
|
||||||
CFLAGS(-g0)
|
|
||||||
|
|
||||||
SRCS(
|
|
||||||
widechar_width.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
END()
|
|
11
base/ya.make
11
base/ya.make
@ -1,11 +0,0 @@
|
|||||||
OWNER(g:clickhouse)
|
|
||||||
|
|
||||||
RECURSE(
|
|
||||||
common
|
|
||||||
daemon
|
|
||||||
loggers
|
|
||||||
mysqlxx
|
|
||||||
pcg-random
|
|
||||||
widechar_width
|
|
||||||
readpassphrase
|
|
||||||
)
|
|
@ -6,7 +6,7 @@ if (ENABLE_CLANG_TIDY)
|
|||||||
message(FATAL_ERROR "clang-tidy requires CMake version at least 3.6.")
|
message(FATAL_ERROR "clang-tidy requires CMake version at least 3.6.")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_program (CLANG_TIDY_PATH NAMES "clang-tidy" "clang-tidy-11" "clang-tidy-10" "clang-tidy-9" "clang-tidy-8")
|
find_program (CLANG_TIDY_PATH NAMES "clang-tidy" "clang-tidy-13" "clang-tidy-12" "clang-tidy-11" "clang-tidy-10" "clang-tidy-9" "clang-tidy-8")
|
||||||
|
|
||||||
if (CLANG_TIDY_PATH)
|
if (CLANG_TIDY_PATH)
|
||||||
message(STATUS
|
message(STATUS
|
||||||
|
@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
# NOTE: has nothing common with DBMS_TCP_PROTOCOL_VERSION,
|
# NOTE: has nothing common with DBMS_TCP_PROTOCOL_VERSION,
|
||||||
# only DBMS_TCP_PROTOCOL_VERSION should be incremented on protocol changes.
|
# only DBMS_TCP_PROTOCOL_VERSION should be incremented on protocol changes.
|
||||||
SET(VERSION_REVISION 54455)
|
SET(VERSION_REVISION 54456)
|
||||||
SET(VERSION_MAJOR 21)
|
SET(VERSION_MAJOR 21)
|
||||||
SET(VERSION_MINOR 10)
|
SET(VERSION_MINOR 11)
|
||||||
SET(VERSION_PATCH 1)
|
SET(VERSION_PATCH 1)
|
||||||
SET(VERSION_GITHASH 09df5018f95edcd0f759d4689ac5d029dd400c2a)
|
SET(VERSION_GITHASH 7a4a0b0edef0ad6e0aa662cd3b90c3f4acf796e7)
|
||||||
SET(VERSION_DESCRIBE v21.10.1.1-testing)
|
SET(VERSION_DESCRIBE v21.11.1.1-prestable)
|
||||||
SET(VERSION_STRING 21.10.1.1)
|
SET(VERSION_STRING 21.11.1.1)
|
||||||
# end of autochange
|
# end of autochange
|
||||||
|
@ -4,3 +4,4 @@ include (CheckCCompilerFlag)
|
|||||||
check_cxx_compiler_flag("-Wsuggest-destructor-override" HAS_SUGGEST_DESTRUCTOR_OVERRIDE)
|
check_cxx_compiler_flag("-Wsuggest-destructor-override" HAS_SUGGEST_DESTRUCTOR_OVERRIDE)
|
||||||
check_cxx_compiler_flag("-Wshadow" HAS_SHADOW)
|
check_cxx_compiler_flag("-Wshadow" HAS_SHADOW)
|
||||||
check_cxx_compiler_flag("-Wsuggest-override" HAS_SUGGEST_OVERRIDE)
|
check_cxx_compiler_flag("-Wsuggest-override" HAS_SUGGEST_OVERRIDE)
|
||||||
|
check_cxx_compiler_flag("-Xclang -fuse-ctor-homing" HAS_USE_CTOR_HOMING)
|
||||||
|
@ -17,7 +17,7 @@ if (NOT EXISTS "${ClickHouse_SOURCE_DIR}/contrib/AMQP-CPP/CMakeLists.txt")
|
|||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
set (USE_AMQPCPP 1)
|
set (USE_AMQPCPP 1)
|
||||||
set (AMQPCPP_LIBRARY amqp-cpp)
|
set (AMQPCPP_LIBRARY amqp-cpp ${OPENSSL_LIBRARIES})
|
||||||
|
|
||||||
set (AMQPCPP_INCLUDE_DIR "${ClickHouse_SOURCE_DIR}/contrib/AMQP-CPP/include")
|
set (AMQPCPP_INCLUDE_DIR "${ClickHouse_SOURCE_DIR}/contrib/AMQP-CPP/include")
|
||||||
list (APPEND AMQPCPP_INCLUDE_DIR
|
list (APPEND AMQPCPP_INCLUDE_DIR
|
||||||
|
@ -51,8 +51,8 @@ if (CCACHE_FOUND AND NOT COMPILER_MATCHES_CCACHE)
|
|||||||
message(STATUS "ccache is 4.2+ no quirks for SOURCE_DATE_EPOCH required")
|
message(STATUS "ccache is 4.2+ no quirks for SOURCE_DATE_EPOCH required")
|
||||||
elseif (CCACHE_VERSION VERSION_GREATER_EQUAL "4.0")
|
elseif (CCACHE_VERSION VERSION_GREATER_EQUAL "4.0")
|
||||||
message(STATUS "Ignore SOURCE_DATE_EPOCH for ccache")
|
message(STATUS "Ignore SOURCE_DATE_EPOCH for ccache")
|
||||||
set_property (GLOBAL PROPERTY RULE_LAUNCH_COMPILE "env -u SOURCE_DATE_EPOCH ${CCACHE_FOUND}")
|
set_property (GLOBAL PROPERTY RULE_LAUNCH_COMPILE "env -u SOURCE_DATE_EPOCH")
|
||||||
set_property (GLOBAL PROPERTY RULE_LAUNCH_LINK "env -u SOURCE_DATE_EPOCH ${CCACHE_FOUND}")
|
set_property (GLOBAL PROPERTY RULE_LAUNCH_LINK "env -u SOURCE_DATE_EPOCH")
|
||||||
endif()
|
endif()
|
||||||
else ()
|
else ()
|
||||||
message(${RECONFIGURE_MESSAGE_LEVEL} "Not using ${CCACHE_FOUND} ${CCACHE_VERSION} bug: https://bugzilla.samba.org/show_bug.cgi?id=8118")
|
message(${RECONFIGURE_MESSAGE_LEVEL} "Not using ${CCACHE_FOUND} ${CCACHE_VERSION} bug: https://bugzilla.samba.org/show_bug.cgi?id=8118")
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
if (APPLE OR SPLIT_SHARED_LIBRARIES OR NOT ARCH_AMD64 OR SANITIZE STREQUAL "undefined")
|
if (APPLE OR NOT ARCH_AMD64 OR SANITIZE STREQUAL "undefined")
|
||||||
set (ENABLE_EMBEDDED_COMPILER OFF CACHE INTERNAL "")
|
set (ENABLE_EMBEDDED_COMPILER_DEFAULT OFF)
|
||||||
|
else()
|
||||||
|
set (ENABLE_EMBEDDED_COMPILER_DEFAULT ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option (ENABLE_EMBEDDED_COMPILER "Enable support for 'compile_expressions' option for query execution" ON)
|
option (ENABLE_EMBEDDED_COMPILER "Enable support for 'compile_expressions' option for query execution" ${ENABLE_EMBEDDED_COMPILER_DEFAULT})
|
||||||
|
|
||||||
if (NOT ENABLE_EMBEDDED_COMPILER)
|
if (NOT ENABLE_EMBEDDED_COMPILER)
|
||||||
set (USE_EMBEDDED_COMPILER 0)
|
set (USE_EMBEDDED_COMPILER 0)
|
||||||
|
@ -10,7 +10,7 @@ set (CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) # disable linkage check - it
|
|||||||
set (CMAKE_AR "/usr/bin/ar" CACHE FILEPATH "" FORCE)
|
set (CMAKE_AR "/usr/bin/ar" CACHE FILEPATH "" FORCE)
|
||||||
set (CMAKE_RANLIB "/usr/bin/ranlib" CACHE FILEPATH "" FORCE)
|
set (CMAKE_RANLIB "/usr/bin/ranlib" CACHE FILEPATH "" FORCE)
|
||||||
|
|
||||||
set (LINKER_NAME "lld" CACHE STRING "" FORCE)
|
set (LINKER_NAME "ld.lld" CACHE STRING "" FORCE)
|
||||||
|
|
||||||
set (CMAKE_EXE_LINKER_FLAGS_INIT "-fuse-ld=lld")
|
set (CMAKE_EXE_LINKER_FLAGS_INIT "-fuse-ld=lld")
|
||||||
set (CMAKE_SHARED_LINKER_FLAGS_INIT "-fuse-ld=lld")
|
set (CMAKE_SHARED_LINKER_FLAGS_INIT "-fuse-ld=lld")
|
||||||
|
@ -13,7 +13,7 @@ set (CMAKE_C_FLAGS_INIT "${CMAKE_C_FLAGS} --gcc-toolchain=${CMAKE_CURRENT_LIST_D
|
|||||||
set (CMAKE_CXX_FLAGS_INIT "${CMAKE_CXX_FLAGS} --gcc-toolchain=${CMAKE_CURRENT_LIST_DIR}/../toolchain/linux-aarch64")
|
set (CMAKE_CXX_FLAGS_INIT "${CMAKE_CXX_FLAGS} --gcc-toolchain=${CMAKE_CURRENT_LIST_DIR}/../toolchain/linux-aarch64")
|
||||||
set (CMAKE_ASM_FLAGS_INIT "${CMAKE_ASM_FLAGS} --gcc-toolchain=${CMAKE_CURRENT_LIST_DIR}/../toolchain/linux-aarch64")
|
set (CMAKE_ASM_FLAGS_INIT "${CMAKE_ASM_FLAGS} --gcc-toolchain=${CMAKE_CURRENT_LIST_DIR}/../toolchain/linux-aarch64")
|
||||||
|
|
||||||
set (LINKER_NAME "lld" CACHE STRING "" FORCE)
|
set (LINKER_NAME "ld.lld" CACHE STRING "" FORCE)
|
||||||
|
|
||||||
set (CMAKE_EXE_LINKER_FLAGS_INIT "-fuse-ld=lld")
|
set (CMAKE_EXE_LINKER_FLAGS_INIT "-fuse-ld=lld")
|
||||||
set (CMAKE_SHARED_LINKER_FLAGS_INIT "-fuse-ld=lld")
|
set (CMAKE_SHARED_LINKER_FLAGS_INIT "-fuse-ld=lld")
|
||||||
|
@ -79,8 +79,9 @@ endif ()
|
|||||||
|
|
||||||
if (LINKER_NAME)
|
if (LINKER_NAME)
|
||||||
if (COMPILER_CLANG AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 12.0.0 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 12.0.0))
|
if (COMPILER_CLANG AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 12.0.0 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 12.0.0))
|
||||||
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --ld-path=${LINKER_NAME}")
|
find_program (LLD_PATH NAMES ${LINKER_NAME})
|
||||||
set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --ld-path=${LINKER_NAME}")
|
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --ld-path=${LLD_PATH}")
|
||||||
|
set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --ld-path=${LLD_PATH}")
|
||||||
else ()
|
else ()
|
||||||
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=${LINKER_NAME}")
|
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=${LINKER_NAME}")
|
||||||
set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=${LINKER_NAME}")
|
set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=${LINKER_NAME}")
|
||||||
|
@ -192,4 +192,29 @@ elseif (COMPILER_GCC)
|
|||||||
# For some reason (bug in gcc?) macro 'GCC diagnostic ignored "-Wstringop-overflow"' doesn't help.
|
# For some reason (bug in gcc?) macro 'GCC diagnostic ignored "-Wstringop-overflow"' doesn't help.
|
||||||
add_cxx_compile_options(-Wno-stringop-overflow)
|
add_cxx_compile_options(-Wno-stringop-overflow)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 11)
|
||||||
|
# reinterpretAs.cpp:182:31: error: ‘void* memcpy(void*, const void*, size_t)’ copying an object of non-trivial type
|
||||||
|
# ‘using ToFieldType = using FieldType = using UUID = struct StrongTypedef<wide::integer<128, unsigned int>, DB::UUIDTag>’
|
||||||
|
# {aka ‘struct StrongTypedef<wide::integer<128, unsigned int>, DB::UUIDTag>’} from an array of ‘const char8_t’
|
||||||
|
add_cxx_compile_options(-Wno-error=class-memaccess)
|
||||||
|
|
||||||
|
# Maybe false positive...
|
||||||
|
# In file included from /home/jakalletti/ClickHouse/ClickHouse/contrib/libcxx/include/memory:673,
|
||||||
|
# In function ‘void std::__1::__libcpp_operator_delete(_Args ...) [with _Args = {void*, long unsigned int}]’,
|
||||||
|
# inlined from ‘void std::__1::__do_deallocate_handle_size(void*, size_t, _Args ...) [with _Args = {}]’ at /home/jakalletti/ClickHouse/ClickHouse/contrib/libcxx/include/new:271:34,
|
||||||
|
# inlined from ‘void std::__1::__libcpp_deallocate(void*, size_t, size_t)’ at /home/jakalletti/ClickHouse/ClickHouse/contrib/libcxx/include/new:285:41,
|
||||||
|
# inlined from ‘constexpr void std::__1::allocator<_Tp>::deallocate(_Tp*, size_t) [with _Tp = char]’ at /home/jakalletti/ClickHouse/ClickHouse/contrib/libcxx/include/memory:849:39,
|
||||||
|
# inlined from ‘static constexpr void std::__1::allocator_traits<_Alloc>::deallocate(std::__1::allocator_traits<_Alloc>::allocator_type&, std::__1::allocator_traits<_Alloc>::pointer, std::__1::allocator_traits<_Alloc>::size_type) [with _Alloc = std::__1::allocator<char>]’ at /home/jakalletti/ClickHouse/ClickHouse/contrib/libcxx/include/__memory/allocator_traits.h:476:24,
|
||||||
|
# inlined from ‘std::__1::basic_string<_CharT, _Traits, _Allocator>::~basic_string() [with _CharT = char; _Traits = std::__1::char_traits<char>; _Allocator = std::__1::allocator<char>]’ at /home/jakalletti/ClickHouse/ClickHouse/contrib/libcxx/include/string:2219:35,
|
||||||
|
# inlined from ‘std::__1::basic_string<_CharT, _Traits, _Allocator>::~basic_string() [with _CharT = char; _Traits = std::__1::char_traits<char>; _Allocator = std::__1::allocator<char>]’ at /home/jakalletti/ClickHouse/ClickHouse/contrib/libcxx/include/string:2213:1,
|
||||||
|
# inlined from ‘DB::JSONBuilder::JSONMap::Pair::~Pair()’ at /home/jakalletti/ClickHouse/ClickHouse/src/Common/JSONBuilder.h:90:12,
|
||||||
|
# inlined from ‘void DB::JSONBuilder::JSONMap::add(std::__1::string, DB::JSONBuilder::ItemPtr)’ at /home/jakalletti/ClickHouse/ClickHouse/src/Common/JSONBuilder.h:97:68,
|
||||||
|
# inlined from ‘virtual void DB::ExpressionStep::describeActions(DB::JSONBuilder::JSONMap&) const’ at /home/jakalletti/ClickHouse/ClickHouse/src/Processors/QueryPlan/ExpressionStep.cpp:102:12:
|
||||||
|
# /home/jakalletti/ClickHouse/ClickHouse/contrib/libcxx/include/new:247:20: error: ‘void operator delete(void*, size_t)’ called on a pointer to an unallocated object ‘7598543875853023301’ [-Werror=free-nonheap-object]
|
||||||
|
add_cxx_compile_options(-Wno-error=free-nonheap-object)
|
||||||
|
|
||||||
|
# AggregateFunctionAvg.h:203:100: error: ‘this’ pointer is null [-Werror=nonnull]
|
||||||
|
add_cxx_compile_options(-Wno-error=nonnull)
|
||||||
|
endif()
|
||||||
endif ()
|
endif ()
|
||||||
|
@ -1,25 +0,0 @@
|
|||||||
INCLUDE(${ARCADIA_ROOT}/clickhouse/cmake/autogenerated_versions.txt)
|
|
||||||
|
|
||||||
# TODO: not sure if this is customizable per-binary
|
|
||||||
SET(VERSION_NAME "ClickHouse")
|
|
||||||
|
|
||||||
# TODO: not quite sure how to replace dash with space in ya.make
|
|
||||||
SET(VERSION_FULL "${VERSION_NAME}-${VERSION_STRING}")
|
|
||||||
|
|
||||||
CFLAGS (GLOBAL -DDBMS_NAME=\"ClickHouse\")
|
|
||||||
CFLAGS (GLOBAL -DDBMS_VERSION_MAJOR=${VERSION_MAJOR})
|
|
||||||
CFLAGS (GLOBAL -DDBMS_VERSION_MINOR=${VERSION_MINOR})
|
|
||||||
CFLAGS (GLOBAL -DDBMS_VERSION_PATCH=${VERSION_PATCH})
|
|
||||||
CFLAGS (GLOBAL -DVERSION_FULL=\"\\\"${VERSION_FULL}\\\"\")
|
|
||||||
CFLAGS (GLOBAL -DVERSION_MAJOR=${VERSION_MAJOR})
|
|
||||||
CFLAGS (GLOBAL -DVERSION_MINOR=${VERSION_MINOR})
|
|
||||||
CFLAGS (GLOBAL -DVERSION_PATCH=${VERSION_PATCH})
|
|
||||||
|
|
||||||
# TODO: not supported yet, not sure if ya.make supports arithmetic.
|
|
||||||
CFLAGS (GLOBAL -DVERSION_INTEGER=0)
|
|
||||||
|
|
||||||
CFLAGS (GLOBAL -DVERSION_NAME=\"\\\"${VERSION_NAME}\\\"\")
|
|
||||||
CFLAGS (GLOBAL -DVERSION_OFFICIAL=\"-arcadia\")
|
|
||||||
CFLAGS (GLOBAL -DVERSION_REVISION=${VERSION_REVISION})
|
|
||||||
CFLAGS (GLOBAL -DVERSION_STRING=\"\\\"${VERSION_STRING}\\\"\")
|
|
||||||
|
|
12
contrib/CMakeLists.txt
vendored
12
contrib/CMakeLists.txt
vendored
@ -33,6 +33,7 @@ endif()
|
|||||||
set_property(DIRECTORY PROPERTY EXCLUDE_FROM_ALL 1)
|
set_property(DIRECTORY PROPERTY EXCLUDE_FROM_ALL 1)
|
||||||
|
|
||||||
add_subdirectory (abseil-cpp-cmake)
|
add_subdirectory (abseil-cpp-cmake)
|
||||||
|
add_subdirectory (magic-enum-cmake)
|
||||||
add_subdirectory (boost-cmake)
|
add_subdirectory (boost-cmake)
|
||||||
add_subdirectory (cctz-cmake)
|
add_subdirectory (cctz-cmake)
|
||||||
add_subdirectory (consistent-hashing)
|
add_subdirectory (consistent-hashing)
|
||||||
@ -206,12 +207,14 @@ elseif(GTEST_SRC_DIR)
|
|||||||
target_compile_definitions(gtest INTERFACE GTEST_HAS_POSIX_RE=0)
|
target_compile_definitions(gtest INTERFACE GTEST_HAS_POSIX_RE=0)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (USE_EMBEDDED_COMPILER)
|
function(add_llvm)
|
||||||
# ld: unknown option: --color-diagnostics
|
# ld: unknown option: --color-diagnostics
|
||||||
if (APPLE)
|
if (APPLE)
|
||||||
set (LINKER_SUPPORTS_COLOR_DIAGNOSTICS 0 CACHE INTERNAL "")
|
set (LINKER_SUPPORTS_COLOR_DIAGNOSTICS 0 CACHE INTERNAL "")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
# Do not adjust RPATH in llvm, since then it will not be able to find libcxx/libcxxabi/libunwind
|
||||||
|
set (CMAKE_INSTALL_RPATH "ON")
|
||||||
set (LLVM_ENABLE_EH 1 CACHE INTERNAL "")
|
set (LLVM_ENABLE_EH 1 CACHE INTERNAL "")
|
||||||
set (LLVM_ENABLE_RTTI 1 CACHE INTERNAL "")
|
set (LLVM_ENABLE_RTTI 1 CACHE INTERNAL "")
|
||||||
set (LLVM_ENABLE_PIC 0 CACHE INTERNAL "")
|
set (LLVM_ENABLE_PIC 0 CACHE INTERNAL "")
|
||||||
@ -219,13 +222,12 @@ if (USE_EMBEDDED_COMPILER)
|
|||||||
|
|
||||||
# Need to use C++17 since the compilation is not possible with C++20 currently, due to ambiguous operator != etc.
|
# Need to use C++17 since the compilation is not possible with C++20 currently, due to ambiguous operator != etc.
|
||||||
# LLVM project will set its default value for the -std=... but our global setting from CMake will override it.
|
# LLVM project will set its default value for the -std=... but our global setting from CMake will override it.
|
||||||
set (CMAKE_CXX_STANDARD_bak ${CMAKE_CXX_STANDARD})
|
|
||||||
set (CMAKE_CXX_STANDARD 17)
|
set (CMAKE_CXX_STANDARD 17)
|
||||||
|
|
||||||
add_subdirectory (llvm/llvm)
|
add_subdirectory (llvm/llvm)
|
||||||
|
endfunction()
|
||||||
set (CMAKE_CXX_STANDARD ${CMAKE_CXX_STANDARD_bak})
|
if (USE_EMBEDDED_COMPILER)
|
||||||
unset (CMAKE_CXX_STANDARD_bak)
|
add_llvm()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (USE_INTERNAL_LIBGSASL_LIBRARY)
|
if (USE_INTERNAL_LIBGSASL_LIBRARY)
|
||||||
|
2
contrib/abseil-cpp
vendored
2
contrib/abseil-cpp
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 4f3b686f86c3ebaba7e4e926e62a79cb1c659a54
|
Subproject commit b004a8a02418b83de8b686caa0b0f6e39ac2191f
|
@ -41,6 +41,4 @@ target_compile_options (amqp-cpp
|
|||||||
)
|
)
|
||||||
|
|
||||||
target_include_directories (amqp-cpp SYSTEM PUBLIC "${LIBRARY_DIR}/include")
|
target_include_directories (amqp-cpp SYSTEM PUBLIC "${LIBRARY_DIR}/include")
|
||||||
|
target_link_libraries(amqp-cpp PUBLIC ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY})
|
||||||
target_link_libraries (amqp-cpp PUBLIC ssl)
|
|
||||||
|
|
||||||
|
2
contrib/boost
vendored
2
contrib/boost
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 9cf09dbfd55a5c6202dedbdf40781a51b02c2675
|
Subproject commit 66d17f060c4867aeea99fa2a20cfdae89ae2a2ec
|
@ -16,7 +16,7 @@ if (NOT USE_INTERNAL_BOOST_LIBRARY)
|
|||||||
graph
|
graph
|
||||||
)
|
)
|
||||||
|
|
||||||
if(Boost_INCLUDE_DIR AND Boost_FILESYSTEM_LIBRARY AND Boost_FILESYSTEM_LIBRARY AND
|
if(Boost_INCLUDE_DIR AND Boost_FILESYSTEM_LIBRARY AND
|
||||||
Boost_PROGRAM_OPTIONS_LIBRARY AND Boost_REGEX_LIBRARY AND Boost_SYSTEM_LIBRARY AND Boost_CONTEXT_LIBRARY AND
|
Boost_PROGRAM_OPTIONS_LIBRARY AND Boost_REGEX_LIBRARY AND Boost_SYSTEM_LIBRARY AND Boost_CONTEXT_LIBRARY AND
|
||||||
Boost_COROUTINE_LIBRARY AND Boost_GRAPH_LIBRARY)
|
Boost_COROUTINE_LIBRARY AND Boost_GRAPH_LIBRARY)
|
||||||
|
|
||||||
@ -238,4 +238,14 @@ if (NOT EXTERNAL_BOOST_FOUND)
|
|||||||
target_include_directories (_boost_graph PRIVATE ${LIBRARY_DIR})
|
target_include_directories (_boost_graph PRIVATE ${LIBRARY_DIR})
|
||||||
target_link_libraries(_boost_graph PRIVATE _boost_regex)
|
target_link_libraries(_boost_graph PRIVATE _boost_regex)
|
||||||
|
|
||||||
|
# circular buffer
|
||||||
|
add_library(_boost_circular_buffer INTERFACE)
|
||||||
|
add_library(boost::circular_buffer ALIAS _boost_circular_buffer)
|
||||||
|
target_include_directories(_boost_circular_buffer SYSTEM BEFORE INTERFACE ${LIBRARY_DIR})
|
||||||
|
|
||||||
|
# heap
|
||||||
|
add_library(_boost_heap INTERFACE)
|
||||||
|
add_library(boost::heap ALIAS _boost_heap)
|
||||||
|
target_include_directories(_boost_heap SYSTEM BEFORE INTERFACE ${LIBRARY_DIR})
|
||||||
|
|
||||||
endif ()
|
endif ()
|
||||||
|
@ -15,12 +15,12 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CMAKE_COMPILER_IS_GNUCXX OR CLANG)
|
if(CMAKE_COMPILER_IS_GNUCXX OR CLANG)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fvisibility=hidden -fno-common -fno-exceptions -fno-rtti")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fno-common -fno-exceptions -fno-rtti")
|
||||||
if(APPLE AND CLANG)
|
if(APPLE AND CLANG)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden -fno-common")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-common")
|
||||||
if((CMAKE_C_COMPILER_VERSION VERSION_GREATER "4.8.99") OR CLANG)
|
if((CMAKE_C_COMPILER_VERSION VERSION_GREATER "4.8.99") OR CLANG)
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11")
|
||||||
else()
|
else()
|
||||||
|
2
contrib/fastops
vendored
2
contrib/fastops
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 88752a5e03cf34639a4a37a4b41d8b463fffd2b5
|
Subproject commit 012b777df9e2d145a24800a6c8c3d4a0249bb09e
|
2
contrib/libhdfs3
vendored
2
contrib/libhdfs3
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 095b9d48b400abb72d967cb0539af13b1e3d90cf
|
Subproject commit 082e55f17d1c58bf124290fb044fea40e985ec11
|
2
contrib/llvm
vendored
2
contrib/llvm
vendored
@ -1 +1 @@
|
|||||||
Subproject commit e5751459412bce1391fb7a2e9bbc01e131bf72f1
|
Subproject commit f30bbecef78b75b527e257c1304d0be2f2f95975
|
3
contrib/magic-enum-cmake/CMakeLists.txt
Normal file
3
contrib/magic-enum-cmake/CMakeLists.txt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
set (LIBRARY_DIR "${ClickHouse_SOURCE_DIR}/contrib/magic_enum")
|
||||||
|
add_library (magic_enum INTERFACE)
|
||||||
|
target_include_directories(magic_enum INTERFACE ${LIBRARY_DIR}/include)
|
1
contrib/magic_enum
vendored
Submodule
1
contrib/magic_enum
vendored
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 38f86e4d093cfc9034a140d37de2168e3951bef3
|
2
contrib/poco
vendored
2
contrib/poco
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 7351c4691b5d401f59e3959adfc5b4fa263b32da
|
Subproject commit 46c80daf1b015aa10474ce82e3d24b578c6ae422
|
2
contrib/rocksdb
vendored
2
contrib/rocksdb
vendored
@ -1 +1 @@
|
|||||||
Subproject commit b6480c69bf3ab6e298e0d019a07fd4f69029b26a
|
Subproject commit 296c1b8b95fd448b8097a1b2cc9f704ff4a73a2c
|
4
debian/changelog
vendored
4
debian/changelog
vendored
@ -1,5 +1,5 @@
|
|||||||
clickhouse (21.10.1.1) unstable; urgency=low
|
clickhouse (21.11.1.1) unstable; urgency=low
|
||||||
|
|
||||||
* Modified source code
|
* Modified source code
|
||||||
|
|
||||||
-- clickhouse-release <clickhouse-release@yandex-team.ru> Sat, 17 Jul 2021 08:45:03 +0300
|
-- clickhouse-release <clickhouse-release@yandex-team.ru> Thu, 09 Sep 2021 12:03:26 +0300
|
||||||
|
11
debian/clickhouse-server.init
vendored
11
debian/clickhouse-server.init
vendored
@ -3,10 +3,17 @@
|
|||||||
# Provides: clickhouse-server
|
# Provides: clickhouse-server
|
||||||
# Default-Start: 2 3 4 5
|
# Default-Start: 2 3 4 5
|
||||||
# Default-Stop: 0 1 6
|
# Default-Stop: 0 1 6
|
||||||
# Required-Start: $network
|
# Should-Start: $time $network
|
||||||
# Required-Stop: $network
|
# Should-Stop: $network
|
||||||
# Short-Description: Yandex clickhouse-server daemon
|
# Short-Description: Yandex clickhouse-server daemon
|
||||||
### END INIT INFO
|
### END INIT INFO
|
||||||
|
#
|
||||||
|
# NOTES:
|
||||||
|
# - Should-* -- script can start if the listed facilities are missing, unlike Required-*
|
||||||
|
#
|
||||||
|
# For the documentation [1]:
|
||||||
|
#
|
||||||
|
# [1]: https://wiki.debian.org/LSBInitScripts
|
||||||
|
|
||||||
CLICKHOUSE_USER=clickhouse
|
CLICKHOUSE_USER=clickhouse
|
||||||
CLICKHOUSE_GROUP=${CLICKHOUSE_USER}
|
CLICKHOUSE_GROUP=${CLICKHOUSE_USER}
|
||||||
|
8
debian/clickhouse-server.service
vendored
8
debian/clickhouse-server.service
vendored
@ -1,7 +1,12 @@
|
|||||||
[Unit]
|
[Unit]
|
||||||
Description=ClickHouse Server (analytic DBMS for big data)
|
Description=ClickHouse Server (analytic DBMS for big data)
|
||||||
Requires=network-online.target
|
Requires=network-online.target
|
||||||
After=network-online.target
|
# NOTE: that After/Wants=time-sync.target is not enough, you need to ensure
|
||||||
|
# that the time was adjusted already, if you use systemd-timesyncd you are
|
||||||
|
# safe, but if you use ntp or some other daemon, you should configure it
|
||||||
|
# additionaly.
|
||||||
|
After=time-sync.target network-online.target
|
||||||
|
Wants=time-sync.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
@ -16,4 +21,5 @@ LimitNOFILE=500000
|
|||||||
CapabilityBoundingSet=CAP_NET_ADMIN CAP_IPC_LOCK CAP_SYS_NICE
|
CapabilityBoundingSet=CAP_NET_ADMIN CAP_IPC_LOCK CAP_SYS_NICE
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
|
# ClickHouse should not start from the rescue shell (rescue.target).
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
|
10
debian/control
vendored
10
debian/control
vendored
@ -1,16 +1,14 @@
|
|||||||
Source: clickhouse
|
Source: clickhouse
|
||||||
Section: database
|
Section: database
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Maintainer: Alexey Milovidov <milovidov@yandex-team.ru>
|
Maintainer: Alexey Milovidov <milovidov@clickhouse.com>
|
||||||
Build-Depends: debhelper (>= 9),
|
Build-Depends: debhelper (>= 9),
|
||||||
cmake | cmake3,
|
cmake | cmake3,
|
||||||
ninja-build,
|
ninja-build,
|
||||||
clang-11,
|
clang-13,
|
||||||
llvm-11,
|
llvm-13,
|
||||||
|
lld-13,
|
||||||
libc6-dev,
|
libc6-dev,
|
||||||
libicu-dev,
|
|
||||||
libreadline-dev,
|
|
||||||
gperf,
|
|
||||||
tzdata
|
tzdata
|
||||||
Standards-Version: 3.9.8
|
Standards-Version: 3.9.8
|
||||||
|
|
||||||
|
4
debian/rules
vendored
4
debian/rules
vendored
@ -36,8 +36,8 @@ endif
|
|||||||
|
|
||||||
CMAKE_FLAGS += -DENABLE_UTILS=0
|
CMAKE_FLAGS += -DENABLE_UTILS=0
|
||||||
|
|
||||||
DEB_CC ?= $(shell which gcc-10 gcc-9 gcc | head -n1)
|
DEB_CC ?= $(shell which gcc-11 gcc-10 gcc-9 gcc | head -n1)
|
||||||
DEB_CXX ?= $(shell which g++-10 g++-9 g++ | head -n1)
|
DEB_CXX ?= $(shell which g++-11 g++-10 g++-9 g++ | head -n1)
|
||||||
|
|
||||||
ifdef DEB_CXX
|
ifdef DEB_CXX
|
||||||
DEB_BUILD_GNU_TYPE := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
|
DEB_BUILD_GNU_TYPE := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
FROM ubuntu:20.04
|
FROM ubuntu:20.04
|
||||||
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive LLVM_VERSION=11
|
ENV DEBIAN_FRONTEND=noninteractive LLVM_VERSION=13
|
||||||
|
|
||||||
RUN sed -i 's|http://archive|http://ru.archive|g' /etc/apt/sources.list
|
RUN sed -i 's|http://archive|http://ru.archive|g' /etc/apt/sources.list
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ set -e
|
|||||||
#ccache -s # uncomment to display CCache statistics
|
#ccache -s # uncomment to display CCache statistics
|
||||||
mkdir -p /server/build_docker
|
mkdir -p /server/build_docker
|
||||||
cd /server/build_docker
|
cd /server/build_docker
|
||||||
cmake -G Ninja /server "-DCMAKE_C_COMPILER=$(command -v clang-11)" "-DCMAKE_CXX_COMPILER=$(command -v clang++-11)"
|
cmake -G Ninja /server "-DCMAKE_C_COMPILER=$(command -v clang-13)" "-DCMAKE_CXX_COMPILER=$(command -v clang++-13)"
|
||||||
|
|
||||||
# Set the number of build jobs to the half of number of virtual CPU cores (rounded up).
|
# Set the number of build jobs to the half of number of virtual CPU cores (rounded up).
|
||||||
# By default, ninja use all virtual CPU cores, that leads to very high memory consumption without much improvement in build time.
|
# By default, ninja use all virtual CPU cores, that leads to very high memory consumption without much improvement in build time.
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
FROM ubuntu:18.04
|
FROM ubuntu:18.04
|
||||||
|
|
||||||
ARG repository="deb https://repo.clickhouse.tech/deb/stable/ main/"
|
ARG repository="deb https://repo.clickhouse.tech/deb/stable/ main/"
|
||||||
ARG version=21.10.1.*
|
ARG version=21.11.1.*
|
||||||
|
|
||||||
RUN sed -i 's|http://archive|http://ru.archive|g' /etc/apt/sources.list
|
RUN sed -i 's|http://archive|http://ru.archive|g' /etc/apt/sources.list
|
||||||
|
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"docker/packager/deb": {
|
"docker/packager/deb": {
|
||||||
"name": "yandex/clickhouse-deb-builder",
|
"name": "clickhouse/deb-builder",
|
||||||
"dependent": [
|
"dependent": [
|
||||||
"docker/packager/unbundled"
|
"docker/packager/unbundled"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"docker/packager/binary": {
|
"docker/packager/binary": {
|
||||||
"name": "yandex/clickhouse-binary-builder",
|
"name": "clickhouse/binary-builder",
|
||||||
"dependent": [
|
"dependent": [
|
||||||
"docker/test/split_build_smoke_test",
|
"docker/test/split_build_smoke_test",
|
||||||
"docker/test/pvs",
|
"docker/test/pvs",
|
||||||
@ -14,155 +14,150 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"docker/packager/unbundled": {
|
"docker/packager/unbundled": {
|
||||||
"name": "yandex/clickhouse-unbundled-builder",
|
"name": "clickhouse/unbundled-builder",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/compatibility/centos": {
|
"docker/test/compatibility/centos": {
|
||||||
"name": "yandex/clickhouse-test-old-centos",
|
"name": "clickhouse/test-old-centos",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/compatibility/ubuntu": {
|
"docker/test/compatibility/ubuntu": {
|
||||||
"name": "yandex/clickhouse-test-old-ubuntu",
|
"name": "clickhouse/test-old-ubuntu",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/integration/base": {
|
"docker/test/integration/base": {
|
||||||
"name": "yandex/clickhouse-integration-test",
|
"name": "clickhouse/integration-test",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/fuzzer": {
|
"docker/test/fuzzer": {
|
||||||
"name": "yandex/clickhouse-fuzzer",
|
"name": "clickhouse/fuzzer",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/performance-comparison": {
|
"docker/test/performance-comparison": {
|
||||||
"name": "yandex/clickhouse-performance-comparison",
|
"name": "clickhouse/performance-comparison",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/pvs": {
|
"docker/test/pvs": {
|
||||||
"name": "yandex/clickhouse-pvs-test",
|
"name": "clickhouse/pvs-test",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/stateless": {
|
"docker/test/stateless": {
|
||||||
"name": "yandex/clickhouse-stateless-test",
|
"name": "clickhouse/stateless-test",
|
||||||
"dependent": [
|
"dependent": [
|
||||||
"docker/test/stateful",
|
"docker/test/stateful",
|
||||||
"docker/test/coverage",
|
"docker/test/coverage",
|
||||||
"docker/test/unit"
|
"docker/test/unit"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"docker/test/stateless_pytest": {
|
|
||||||
"name": "yandex/clickhouse-stateless-pytest",
|
|
||||||
"dependent": []
|
|
||||||
},
|
|
||||||
"docker/test/stateful": {
|
"docker/test/stateful": {
|
||||||
"name": "yandex/clickhouse-stateful-test",
|
"name": "clickhouse/stateful-test",
|
||||||
"dependent": [
|
"dependent": [
|
||||||
"docker/test/stress"
|
"docker/test/stress"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"docker/test/coverage": {
|
"docker/test/coverage": {
|
||||||
"name": "yandex/clickhouse-test-coverage",
|
"name": "clickhouse/test-coverage",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/unit": {
|
"docker/test/unit": {
|
||||||
"name": "yandex/clickhouse-unit-test",
|
"name": "clickhouse/unit-test",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/stress": {
|
"docker/test/stress": {
|
||||||
"name": "yandex/clickhouse-stress-test",
|
"name": "clickhouse/stress-test",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/split_build_smoke_test": {
|
"docker/test/split_build_smoke_test": {
|
||||||
"name": "yandex/clickhouse-split-build-smoke-test",
|
"name": "clickhouse/split-build-smoke-test",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/codebrowser": {
|
"docker/test/codebrowser": {
|
||||||
"name": "yandex/clickhouse-codebrowser",
|
"name": "clickhouse/codebrowser",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/integration/runner": {
|
"docker/test/integration/runner": {
|
||||||
"name": "yandex/clickhouse-integration-tests-runner",
|
"name": "clickhouse/integration-tests-runner",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/testflows/runner": {
|
"docker/test/testflows/runner": {
|
||||||
"name": "yandex/clickhouse-testflows-runner",
|
"name": "clickhouse/testflows-runner",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/fasttest": {
|
"docker/test/fasttest": {
|
||||||
"name": "yandex/clickhouse-fasttest",
|
"name": "clickhouse/fasttest",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/style": {
|
"docker/test/style": {
|
||||||
"name": "yandex/clickhouse-style-test",
|
"name": "clickhouse/style-test",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/integration/s3_proxy": {
|
"docker/test/integration/s3_proxy": {
|
||||||
"name": "yandex/clickhouse-s3-proxy",
|
"name": "clickhouse/s3-proxy",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/integration/resolver": {
|
"docker/test/integration/resolver": {
|
||||||
"name": "yandex/clickhouse-python-bottle",
|
"name": "clickhouse/python-bottle",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/integration/helper_container": {
|
"docker/test/integration/helper_container": {
|
||||||
"name": "yandex/clickhouse-integration-helper",
|
"name": "clickhouse/integration-helper",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/integration/mysql_golang_client": {
|
"docker/test/integration/mysql_golang_client": {
|
||||||
"name": "yandex/clickhouse-mysql-golang-client",
|
"name": "clickhouse/mysql-golang-client",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/integration/mysql_java_client": {
|
"docker/test/integration/mysql_java_client": {
|
||||||
"name": "yandex/clickhouse-mysql-java-client",
|
"name": "clickhouse/mysql-java-client",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/integration/mysql_js_client": {
|
"docker/test/integration/mysql_js_client": {
|
||||||
"name": "yandex/clickhouse-mysql-js-client",
|
"name": "clickhouse/mysql-js-client",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/integration/mysql_php_client": {
|
"docker/test/integration/mysql_php_client": {
|
||||||
"name": "yandex/clickhouse-mysql-php-client",
|
"name": "clickhouse/mysql-php-client",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/integration/postgresql_java_client": {
|
"docker/test/integration/postgresql_java_client": {
|
||||||
"name": "yandex/clickhouse-postgresql-java-client",
|
"name": "clickhouse/postgresql-java-client",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/integration/kerberos_kdc": {
|
"docker/test/integration/kerberos_kdc": {
|
||||||
"name": "yandex/clickhouse-kerberos-kdc",
|
"name": "clickhouse/kerberos-kdc",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/base": {
|
"docker/test/base": {
|
||||||
"name": "yandex/clickhouse-test-base",
|
"name": "clickhouse/test-base",
|
||||||
"dependent": [
|
"dependent": [
|
||||||
"docker/test/stateless",
|
"docker/test/stateless",
|
||||||
"docker/test/stateless_unbundled",
|
"docker/test/stateless_unbundled",
|
||||||
"docker/test/stateless_pytest",
|
|
||||||
"docker/test/integration/base",
|
"docker/test/integration/base",
|
||||||
"docker/test/fuzzer",
|
"docker/test/fuzzer",
|
||||||
"docker/test/keeper-jepsen"
|
"docker/test/keeper-jepsen"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"docker/packager/unbundled": {
|
"docker/packager/unbundled": {
|
||||||
"name": "yandex/clickhouse-unbundled-builder",
|
"name": "clickhouse/unbundled-builder",
|
||||||
"dependent": [
|
"dependent": [
|
||||||
"docker/test/stateless_unbundled"
|
"docker/test/stateless_unbundled"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"docker/test/stateless_unbundled": {
|
"docker/test/stateless_unbundled": {
|
||||||
"name": "yandex/clickhouse-stateless-unbundled-test",
|
"name": "clickhouse/stateless-unbundled-test",
|
||||||
"dependent": [
|
"dependent": [
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"docker/test/integration/kerberized_hadoop": {
|
"docker/test/integration/kerberized_hadoop": {
|
||||||
"name": "yandex/clickhouse-kerberized-hadoop",
|
"name": "clickhouse/kerberized-hadoop",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/sqlancer": {
|
"docker/test/sqlancer": {
|
||||||
"name": "yandex/clickhouse-sqlancer-test",
|
"name": "clickhouse/sqlancer-test",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
},
|
},
|
||||||
"docker/test/keeper-jepsen": {
|
"docker/test/keeper-jepsen": {
|
||||||
"name": "yandex/clickhouse-keeper-jepsen-test",
|
"name": "clickhouse/keeper-jepsen-test",
|
||||||
"dependent": []
|
"dependent": []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# docker build -t yandex/clickhouse-binary-builder .
|
# docker build -t clickhouse/binary-builder .
|
||||||
FROM ubuntu:20.04
|
FROM ubuntu:20.04
|
||||||
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive LLVM_VERSION=11
|
ENV DEBIAN_FRONTEND=noninteractive LLVM_VERSION=13
|
||||||
|
|
||||||
RUN sed -i 's|http://archive|http://ru.archive|g' /etc/apt/sources.list
|
RUN sed -i 's|http://archive|http://ru.archive|g' /etc/apt/sources.list
|
||||||
|
|
||||||
@ -39,20 +39,18 @@ RUN apt-get update \
|
|||||||
bash \
|
bash \
|
||||||
build-essential \
|
build-essential \
|
||||||
ccache \
|
ccache \
|
||||||
clang-11 \
|
|
||||||
clang-tidy-11 \
|
|
||||||
cmake \
|
cmake \
|
||||||
curl \
|
curl \
|
||||||
g++-10 \
|
|
||||||
gcc-10 \
|
|
||||||
gdb \
|
gdb \
|
||||||
git \
|
git \
|
||||||
gperf \
|
gperf \
|
||||||
|
clang-${LLVM_VERSION} \
|
||||||
|
clang-tidy-${LLVM_VERSION} \
|
||||||
|
lld-${LLVM_VERSION} \
|
||||||
|
llvm-${LLVM_VERSION} \
|
||||||
|
llvm-${LLVM_VERSION}-dev \
|
||||||
libicu-dev \
|
libicu-dev \
|
||||||
libreadline-dev \
|
libreadline-dev \
|
||||||
lld-11 \
|
|
||||||
llvm-11 \
|
|
||||||
llvm-11-dev \
|
|
||||||
moreutils \
|
moreutils \
|
||||||
ninja-build \
|
ninja-build \
|
||||||
pigz \
|
pigz \
|
||||||
@ -102,15 +100,10 @@ RUN wget -nv "https://developer.arm.com/-/media/Files/downloads/gnu-a/8.3-2019.0
|
|||||||
# Download toolchain for FreeBSD 11.3
|
# Download toolchain for FreeBSD 11.3
|
||||||
RUN wget -nv https://clickhouse-datasets.s3.yandex.net/toolchains/toolchains/freebsd-11.3-toolchain.tar.xz
|
RUN wget -nv https://clickhouse-datasets.s3.yandex.net/toolchains/toolchains/freebsd-11.3-toolchain.tar.xz
|
||||||
|
|
||||||
# NOTE: For some reason we have outdated version of gcc-10 in ubuntu 20.04 stable.
|
# NOTE: Seems like gcc-11 is too new for ubuntu20 repository
|
||||||
# Current workaround is to use latest version proposed repo. Remove as soon as
|
RUN add-apt-repository ppa:ubuntu-toolchain-r/test --yes \
|
||||||
# gcc-10.2 appear in stable repo.
|
&& apt-get update \
|
||||||
RUN echo 'deb http://archive.ubuntu.com/ubuntu/ focal-proposed restricted main multiverse universe' > /etc/apt/sources.list.d/proposed-repositories.list
|
&& apt-get install gcc-11 g++-11 --yes
|
||||||
|
|
||||||
RUN apt-get update \
|
|
||||||
&& apt-get install gcc-10 g++-10 --yes
|
|
||||||
|
|
||||||
RUN rm /etc/apt/sources.list.d/proposed-repositories.list && apt-get update
|
|
||||||
|
|
||||||
|
|
||||||
COPY build.sh /
|
COPY build.sh /
|
||||||
|
@ -4,7 +4,6 @@ set -x -e
|
|||||||
|
|
||||||
mkdir -p build/cmake/toolchain/darwin-x86_64
|
mkdir -p build/cmake/toolchain/darwin-x86_64
|
||||||
tar xJf MacOSX11.0.sdk.tar.xz -C build/cmake/toolchain/darwin-x86_64 --strip-components=1
|
tar xJf MacOSX11.0.sdk.tar.xz -C build/cmake/toolchain/darwin-x86_64 --strip-components=1
|
||||||
|
|
||||||
ln -sf darwin-x86_64 build/cmake/toolchain/darwin-aarch64
|
ln -sf darwin-x86_64 build/cmake/toolchain/darwin-aarch64
|
||||||
|
|
||||||
mkdir -p build/cmake/toolchain/linux-aarch64
|
mkdir -p build/cmake/toolchain/linux-aarch64
|
||||||
@ -23,6 +22,7 @@ cd build/build_docker
|
|||||||
rm -f CMakeCache.txt
|
rm -f CMakeCache.txt
|
||||||
# Read cmake arguments into array (possibly empty)
|
# Read cmake arguments into array (possibly empty)
|
||||||
read -ra CMAKE_FLAGS <<< "${CMAKE_FLAGS:-}"
|
read -ra CMAKE_FLAGS <<< "${CMAKE_FLAGS:-}"
|
||||||
|
env
|
||||||
cmake --debug-trycompile --verbose=1 -DCMAKE_VERBOSE_MAKEFILE=1 -LA "-DCMAKE_BUILD_TYPE=$BUILD_TYPE" "-DSANITIZE=$SANITIZER" -DENABLE_CHECK_HEAVY_BUILDS=1 "${CMAKE_FLAGS[@]}" ..
|
cmake --debug-trycompile --verbose=1 -DCMAKE_VERBOSE_MAKEFILE=1 -LA "-DCMAKE_BUILD_TYPE=$BUILD_TYPE" "-DSANITIZE=$SANITIZER" -DENABLE_CHECK_HEAVY_BUILDS=1 "${CMAKE_FLAGS[@]}" ..
|
||||||
|
|
||||||
ccache --show-config ||:
|
ccache --show-config ||:
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# docker build -t yandex/clickhouse-deb-builder .
|
# docker build -t clickhouse/deb-builder .
|
||||||
FROM ubuntu:20.04
|
FROM ubuntu:20.04
|
||||||
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive LLVM_VERSION=11
|
ENV DEBIAN_FRONTEND=noninteractive LLVM_VERSION=13
|
||||||
|
|
||||||
RUN sed -i 's|http://archive|http://ru.archive|g' /etc/apt/sources.list
|
RUN sed -i 's|http://archive|http://ru.archive|g' /etc/apt/sources.list
|
||||||
|
|
||||||
@ -37,17 +37,17 @@ RUN curl -O https://clickhouse-datasets.s3.yandex.net/utils/1/dpkg-deb \
|
|||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& apt-get install \
|
&& apt-get install \
|
||||||
alien \
|
alien \
|
||||||
clang-11 \
|
clang-${LLVM_VERSION} \
|
||||||
clang-tidy-11 \
|
clang-tidy-${LLVM_VERSION} \
|
||||||
cmake \
|
cmake \
|
||||||
debhelper \
|
debhelper \
|
||||||
devscripts \
|
devscripts \
|
||||||
gdb \
|
gdb \
|
||||||
git \
|
git \
|
||||||
gperf \
|
gperf \
|
||||||
lld-11 \
|
lld-${LLVM_VERSION} \
|
||||||
llvm-11 \
|
llvm-${LLVM_VERSION} \
|
||||||
llvm-11-dev \
|
llvm-${LLVM_VERSION}-dev \
|
||||||
moreutils \
|
moreutils \
|
||||||
ninja-build \
|
ninja-build \
|
||||||
perl \
|
perl \
|
||||||
@ -57,15 +57,11 @@ RUN apt-get update \
|
|||||||
tzdata \
|
tzdata \
|
||||||
--yes --no-install-recommends
|
--yes --no-install-recommends
|
||||||
|
|
||||||
# NOTE: For some reason we have outdated version of gcc-10 in ubuntu 20.04 stable.
|
# NOTE: Seems like gcc-11 is too new for ubuntu20 repository
|
||||||
# Current workaround is to use latest version proposed repo. Remove as soon as
|
RUN add-apt-repository ppa:ubuntu-toolchain-r/test --yes \
|
||||||
# gcc-10.2 appear in stable repo.
|
&& apt-get update \
|
||||||
RUN echo 'deb http://archive.ubuntu.com/ubuntu/ focal-proposed restricted main multiverse universe' > /etc/apt/sources.list.d/proposed-repositories.list
|
&& apt-get install gcc-11 g++-11 --yes
|
||||||
|
|
||||||
RUN apt-get update \
|
|
||||||
&& apt-get install gcc-10 g++-10 --yes --no-install-recommends
|
|
||||||
|
|
||||||
RUN rm /etc/apt/sources.list.d/proposed-repositories.list && apt-get update
|
|
||||||
|
|
||||||
# This symlink required by gcc to find lld compiler
|
# This symlink required by gcc to find lld compiler
|
||||||
RUN ln -s /usr/bin/lld-${LLVM_VERSION} /usr/bin/ld.lld
|
RUN ln -s /usr/bin/lld-${LLVM_VERSION} /usr/bin/ld.lld
|
||||||
|
@ -9,9 +9,9 @@ import sys
|
|||||||
SCRIPT_PATH = os.path.realpath(__file__)
|
SCRIPT_PATH = os.path.realpath(__file__)
|
||||||
|
|
||||||
IMAGE_MAP = {
|
IMAGE_MAP = {
|
||||||
"deb": "yandex/clickhouse-deb-builder",
|
"deb": "clickhouse/deb-builder",
|
||||||
"binary": "yandex/clickhouse-binary-builder",
|
"binary": "clickhouse/binary-builder",
|
||||||
"unbundled": "yandex/clickhouse-unbundled-builder"
|
"unbundled": "clickhouse/unbundled-builder"
|
||||||
}
|
}
|
||||||
|
|
||||||
def check_image_exists_locally(image_name):
|
def check_image_exists_locally(image_name):
|
||||||
@ -75,7 +75,7 @@ def parse_env_variables(build_type, compiler, sanitizer, package_type, image_typ
|
|||||||
# Explicitly use LLD with Clang by default.
|
# Explicitly use LLD with Clang by default.
|
||||||
# Don't force linker for cross-compilation.
|
# Don't force linker for cross-compilation.
|
||||||
if is_clang and not is_cross_compile:
|
if is_clang and not is_cross_compile:
|
||||||
cmake_flags.append("-DLINKER_NAME=lld")
|
cmake_flags.append("-DLINKER_NAME=ld.lld")
|
||||||
|
|
||||||
if is_cross_darwin:
|
if is_cross_darwin:
|
||||||
cc = compiler[:-len(DARWIN_SUFFIX)]
|
cc = compiler[:-len(DARWIN_SUFFIX)]
|
||||||
@ -204,7 +204,9 @@ if __name__ == "__main__":
|
|||||||
parser.add_argument("--output-dir", required=True)
|
parser.add_argument("--output-dir", required=True)
|
||||||
parser.add_argument("--build-type", choices=("debug", ""), default="")
|
parser.add_argument("--build-type", choices=("debug", ""), default="")
|
||||||
parser.add_argument("--compiler", choices=("clang-11", "clang-11-darwin", "clang-11-darwin-aarch64", "clang-11-aarch64",
|
parser.add_argument("--compiler", choices=("clang-11", "clang-11-darwin", "clang-11-darwin-aarch64", "clang-11-aarch64",
|
||||||
"clang-11-freebsd", "gcc-10"), default="clang-11")
|
"clang-12", "clang-12-darwin", "clang-12-darwin-aarch64", "clang-12-aarch64",
|
||||||
|
"clang-13", "clang-13-darwin", "clang-13-darwin-aarch64", "clang-13-aarch64",
|
||||||
|
"clang-11-freebsd", "clang-12-freebsd", "clang-13-freebsd", "gcc-11"), default="clang-13")
|
||||||
parser.add_argument("--sanitizer", choices=("address", "thread", "memory", "undefined", ""), default="")
|
parser.add_argument("--sanitizer", choices=("address", "thread", "memory", "undefined", ""), default="")
|
||||||
parser.add_argument("--unbundled", action="store_true")
|
parser.add_argument("--unbundled", action="store_true")
|
||||||
parser.add_argument("--split-binary", action="store_true")
|
parser.add_argument("--split-binary", action="store_true")
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# docker build -t yandex/clickhouse-unbundled-builder .
|
# docker build -t clickhouse/unbundled-builder .
|
||||||
FROM yandex/clickhouse-deb-builder
|
FROM clickhouse/deb-builder
|
||||||
|
|
||||||
RUN export CODENAME="$(lsb_release --codename --short | tr 'A-Z' 'a-z')" \
|
RUN export CODENAME="$(lsb_release --codename --short | tr 'A-Z' 'a-z')" \
|
||||||
&& wget -nv -O /tmp/arrow-keyring.deb "https://apache.jfrog.io/artifactory/arrow/ubuntu/apache-arrow-apt-source-latest-${CODENAME}.deb" \
|
&& wget -nv -O /tmp/arrow-keyring.deb "https://apache.jfrog.io/artifactory/arrow/ubuntu/apache-arrow-apt-source-latest-${CODENAME}.deb" \
|
||||||
@ -17,6 +17,7 @@ RUN apt-get update \
|
|||||||
devscripts \
|
devscripts \
|
||||||
libc++-dev \
|
libc++-dev \
|
||||||
libc++abi-dev \
|
libc++abi-dev \
|
||||||
|
libboost-all-dev \
|
||||||
libboost-program-options-dev \
|
libboost-program-options-dev \
|
||||||
libboost-system-dev \
|
libboost-system-dev \
|
||||||
libboost-filesystem-dev \
|
libboost-filesystem-dev \
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
FROM ubuntu:20.04
|
FROM ubuntu:20.04
|
||||||
|
|
||||||
ARG repository="deb https://repo.clickhouse.tech/deb/stable/ main/"
|
ARG repository="deb https://repo.clickhouse.tech/deb/stable/ main/"
|
||||||
ARG version=21.10.1.*
|
ARG version=21.11.1.*
|
||||||
ARG gosu_ver=1.10
|
ARG gosu_ver=1.10
|
||||||
|
|
||||||
# set non-empty deb_location_url url to create a docker image
|
# set non-empty deb_location_url url to create a docker image
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
FROM ubuntu:18.04
|
FROM ubuntu:18.04
|
||||||
|
|
||||||
ARG repository="deb https://repo.clickhouse.tech/deb/stable/ main/"
|
ARG repository="deb https://repo.clickhouse.tech/deb/stable/ main/"
|
||||||
ARG version=21.10.1.*
|
ARG version=21.11.1.*
|
||||||
|
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get install -y apt-transport-https dirmngr && \
|
apt-get install -y apt-transport-https dirmngr && \
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# docker build -t yandex/clickhouse-test-base .
|
# docker build -t clickhouse/test-base .
|
||||||
FROM ubuntu:20.04
|
FROM ubuntu:20.04
|
||||||
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive LLVM_VERSION=11
|
ENV DEBIAN_FRONTEND=noninteractive LLVM_VERSION=13
|
||||||
|
|
||||||
RUN sed -i 's|http://archive|http://ru.archive|g' /etc/apt/sources.list
|
RUN sed -i 's|http://archive|http://ru.archive|g' /etc/apt/sources.list
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# docker build --network=host -t yandex/clickhouse-codebrowser .
|
# docker build --network=host -t clickhouse/codebrowser .
|
||||||
# docker run --volume=path_to_repo:/repo_folder --volume=path_to_result:/test_output yandex/clickhouse-codebrowser
|
# docker run --volume=path_to_repo:/repo_folder --volume=path_to_result:/test_output clickhouse/codebrowser
|
||||||
FROM yandex/clickhouse-binary-builder
|
FROM clickhouse/binary-builder
|
||||||
|
|
||||||
RUN sed -i 's|http://archive|http://ru.archive|g' /etc/apt/sources.list
|
RUN sed -i 's|http://archive|http://ru.archive|g' /etc/apt/sources.list
|
||||||
|
|
||||||
@ -11,7 +11,7 @@ RUN apt-get update && apt-get --yes --allow-unauthenticated install clang-9 libl
|
|||||||
# https://github.com/ClickHouse-Extras/woboq_codebrowser/commit/37e15eaf377b920acb0b48dbe82471be9203f76b
|
# https://github.com/ClickHouse-Extras/woboq_codebrowser/commit/37e15eaf377b920acb0b48dbe82471be9203f76b
|
||||||
RUN git clone https://github.com/ClickHouse-Extras/woboq_codebrowser
|
RUN git clone https://github.com/ClickHouse-Extras/woboq_codebrowser
|
||||||
|
|
||||||
RUN cd woboq_codebrowser && cmake . -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=clang\+\+-9 -DCMAKE_C_COMPILER=clang-9 && make -j
|
RUN cd woboq_codebrowser && cmake . -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=clang\+\+-13 -DCMAKE_C_COMPILER=clang-13 && make -j
|
||||||
|
|
||||||
ENV CODEGEN=/woboq_codebrowser/generator/codebrowser_generator
|
ENV CODEGEN=/woboq_codebrowser/generator/codebrowser_generator
|
||||||
ENV CODEINDEX=/woboq_codebrowser/indexgenerator/codebrowser_indexgenerator
|
ENV CODEINDEX=/woboq_codebrowser/indexgenerator/codebrowser_indexgenerator
|
||||||
@ -24,7 +24,7 @@ ENV SHA=nosha
|
|||||||
ENV DATA="data"
|
ENV DATA="data"
|
||||||
|
|
||||||
CMD mkdir -p $BUILD_DIRECTORY && cd $BUILD_DIRECTORY && \
|
CMD mkdir -p $BUILD_DIRECTORY && cd $BUILD_DIRECTORY && \
|
||||||
cmake $SOURCE_DIRECTORY -DCMAKE_CXX_COMPILER=/usr/bin/clang\+\+-11 -DCMAKE_C_COMPILER=/usr/bin/clang-11 -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DENABLE_EMBEDDED_COMPILER=0 -DENABLE_S3=0 && \
|
cmake $SOURCE_DIRECTORY -DCMAKE_CXX_COMPILER=/usr/bin/clang\+\+-13 -DCMAKE_C_COMPILER=/usr/bin/clang-13 -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DENABLE_EMBEDDED_COMPILER=0 -DENABLE_S3=0 && \
|
||||||
mkdir -p $HTML_RESULT_DIRECTORY && \
|
mkdir -p $HTML_RESULT_DIRECTORY && \
|
||||||
$CODEGEN -b $BUILD_DIRECTORY -a -o $HTML_RESULT_DIRECTORY -p ClickHouse:$SOURCE_DIRECTORY:$SHA -d $DATA | ts '%Y-%m-%d %H:%M:%S' && \
|
$CODEGEN -b $BUILD_DIRECTORY -a -o $HTML_RESULT_DIRECTORY -p ClickHouse:$SOURCE_DIRECTORY:$SHA -d $DATA | ts '%Y-%m-%d %H:%M:%S' && \
|
||||||
cp -r $STATIC_DATA $HTML_RESULT_DIRECTORY/ &&\
|
cp -r $STATIC_DATA $HTML_RESULT_DIRECTORY/ &&\
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# docker build -t yandex/clickhouse-test-old-centos .
|
# docker build -t clickhouse/test-old-centos .
|
||||||
FROM centos:5
|
FROM centos:5
|
||||||
|
|
||||||
CMD /bin/sh -c "/clickhouse server --config /config/config.xml > /var/log/clickhouse-server/stderr.log 2>&1 & \
|
CMD /bin/sh -c "/clickhouse server --config /config/config.xml > /var/log/clickhouse-server/stderr.log 2>&1 & \
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# docker build -t yandex/clickhouse-test-old-ubuntu .
|
# docker build -t clickhouse/test-old-ubuntu .
|
||||||
FROM ubuntu:12.04
|
FROM ubuntu:12.04
|
||||||
|
|
||||||
CMD /bin/sh -c "/clickhouse server --config /config/config.xml > /var/log/clickhouse-server/stderr.log 2>&1 & \
|
CMD /bin/sh -c "/clickhouse server --config /config/config.xml > /var/log/clickhouse-server/stderr.log 2>&1 & \
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# docker build -t yandex/clickhouse-test-coverage .
|
# docker build -t clickhouse/test-coverage .
|
||||||
FROM yandex/clickhouse-stateless-test
|
FROM clickhouse/stateless-test
|
||||||
|
|
||||||
RUN apt-get update -y \
|
RUN apt-get update -y \
|
||||||
&& env DEBIAN_FRONTEND=noninteractive \
|
&& env DEBIAN_FRONTEND=noninteractive \
|
||||||
|
@ -80,7 +80,7 @@ LLVM_PROFILE_FILE='client_coverage_%5m.profraw' clickhouse-client --query "RENAM
|
|||||||
LLVM_PROFILE_FILE='client_coverage_%5m.profraw' clickhouse-client --query "RENAME TABLE datasets.visits_v1 TO test.visits"
|
LLVM_PROFILE_FILE='client_coverage_%5m.profraw' clickhouse-client --query "RENAME TABLE datasets.visits_v1 TO test.visits"
|
||||||
LLVM_PROFILE_FILE='client_coverage_%5m.profraw' clickhouse-client --query "SHOW TABLES FROM test"
|
LLVM_PROFILE_FILE='client_coverage_%5m.profraw' clickhouse-client --query "SHOW TABLES FROM test"
|
||||||
|
|
||||||
LLVM_PROFILE_FILE='client_coverage_%5m.profraw' clickhouse-test -j 8 --testname --shard --zookeeper --print-time --use-skip-list 2>&1 | ts '%Y-%m-%d %H:%M:%S' | tee /test_result.txt
|
LLVM_PROFILE_FILE='client_coverage_%5m.profraw' clickhouse-test -j 8 --testname --shard --zookeeper --print-time 2>&1 | ts '%Y-%m-%d %H:%M:%S' | tee /test_result.txt
|
||||||
|
|
||||||
readarray -t FAILED_TESTS < <(awk '/FAIL|TIMEOUT|ERROR/ { print substr($3, 1, length($3)-1) }' "/test_result.txt")
|
readarray -t FAILED_TESTS < <(awk '/FAIL|TIMEOUT|ERROR/ { print substr($3, 1, length($3)-1) }' "/test_result.txt")
|
||||||
|
|
||||||
@ -97,7 +97,7 @@ then
|
|||||||
|
|
||||||
echo "Going to run again: ${FAILED_TESTS[*]}"
|
echo "Going to run again: ${FAILED_TESTS[*]}"
|
||||||
|
|
||||||
LLVM_PROFILE_FILE='client_coverage_%5m.profraw' clickhouse-test --order=random --testname --shard --zookeeper --use-skip-list "${FAILED_TESTS[@]}" 2>&1 | ts '%Y-%m-%d %H:%M:%S' | tee -a /test_result.txt
|
LLVM_PROFILE_FILE='client_coverage_%5m.profraw' clickhouse-test --order=random --testname --shard --zookeeper "${FAILED_TESTS[@]}" 2>&1 | ts '%Y-%m-%d %H:%M:%S' | tee -a /test_result.txt
|
||||||
else
|
else
|
||||||
echo "No failed tests"
|
echo "No failed tests"
|
||||||
fi
|
fi
|
||||||
|
@ -92,7 +92,7 @@ if __name__ == "__main__":
|
|||||||
logging.info("Some exception occured %s", str(ex))
|
logging.info("Some exception occured %s", str(ex))
|
||||||
raise
|
raise
|
||||||
finally:
|
finally:
|
||||||
logging.info("Will remove dowloaded file %s from filesystem if it exists", temp_archive_path)
|
logging.info("Will remove downloaded file %s from filesystem if it exists", temp_archive_path)
|
||||||
if os.path.exists(temp_archive_path):
|
if os.path.exists(temp_archive_path):
|
||||||
os.remove(temp_archive_path)
|
os.remove(temp_archive_path)
|
||||||
logging.info("Processing of %s finished", dataset)
|
logging.info("Processing of %s finished", dataset)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# docker build -t yandex/clickhouse-fasttest .
|
# docker build -t clickhouse/fasttest .
|
||||||
FROM ubuntu:20.04
|
FROM ubuntu:20.04
|
||||||
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive LLVM_VERSION=11
|
ENV DEBIAN_FRONTEND=noninteractive LLVM_VERSION=13
|
||||||
|
|
||||||
RUN sed -i 's|http://archive|http://ru.archive|g' /etc/apt/sources.list
|
RUN sed -i 's|http://archive|http://ru.archive|g' /etc/apt/sources.list
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ trap 'kill $(jobs -pr) ||:' EXIT
|
|||||||
stage=${stage:-}
|
stage=${stage:-}
|
||||||
|
|
||||||
# Compiler version, normally set by Dockerfile
|
# Compiler version, normally set by Dockerfile
|
||||||
export LLVM_VERSION=${LLVM_VERSION:-11}
|
export LLVM_VERSION=${LLVM_VERSION:-13}
|
||||||
|
|
||||||
# A variable to pass additional flags to CMake.
|
# A variable to pass additional flags to CMake.
|
||||||
# Here we explicitly default it to nothing so that bash doesn't complain about
|
# Here we explicitly default it to nothing so that bash doesn't complain about
|
||||||
@ -159,6 +159,7 @@ function clone_submodules
|
|||||||
cd "$FASTTEST_SOURCE"
|
cd "$FASTTEST_SOURCE"
|
||||||
|
|
||||||
SUBMODULES_TO_UPDATE=(
|
SUBMODULES_TO_UPDATE=(
|
||||||
|
contrib/magic_enum
|
||||||
contrib/abseil-cpp
|
contrib/abseil-cpp
|
||||||
contrib/boost
|
contrib/boost
|
||||||
contrib/zlib-ng
|
contrib/zlib-ng
|
||||||
@ -261,150 +262,8 @@ function run_tests
|
|||||||
|
|
||||||
start_server
|
start_server
|
||||||
|
|
||||||
TESTS_TO_SKIP=(
|
time clickhouse-test --hung-check -j 8 --order=random \
|
||||||
00105_shard_collations
|
--fast-tests-only --no-long --testname --shard --zookeeper \
|
||||||
00109_shard_totals_after_having
|
|
||||||
00110_external_sort
|
|
||||||
00302_http_compression
|
|
||||||
00417_kill_query
|
|
||||||
00436_convert_charset
|
|
||||||
00490_special_line_separators_and_characters_outside_of_bmp
|
|
||||||
00652_replicated_mutations_zookeeper
|
|
||||||
00682_empty_parts_merge
|
|
||||||
00701_rollup
|
|
||||||
00834_cancel_http_readonly_queries_on_client_close
|
|
||||||
00911_tautological_compare
|
|
||||||
|
|
||||||
# Hyperscan
|
|
||||||
00926_multimatch
|
|
||||||
00929_multi_match_edit_distance
|
|
||||||
01681_hyperscan_debug_assertion
|
|
||||||
02004_max_hyperscan_regex_length
|
|
||||||
|
|
||||||
01176_mysql_client_interactive # requires mysql client
|
|
||||||
01031_mutations_interpreter_and_context
|
|
||||||
01053_ssd_dictionary # this test mistakenly requires acces to /var/lib/clickhouse -- can't run this locally, disabled
|
|
||||||
01083_expressions_in_engine_arguments
|
|
||||||
01092_memory_profiler
|
|
||||||
01098_msgpack_format
|
|
||||||
01098_temporary_and_external_tables
|
|
||||||
01103_check_cpu_instructions_at_startup # avoid dependency on qemu -- invonvenient when running locally
|
|
||||||
01193_metadata_loading
|
|
||||||
01238_http_memory_tracking # max_memory_usage_for_user can interfere another queries running concurrently
|
|
||||||
01251_dict_is_in_infinite_loop
|
|
||||||
01259_dictionary_custom_settings_ddl
|
|
||||||
01268_dictionary_direct_layout
|
|
||||||
01280_ssd_complex_key_dictionary
|
|
||||||
01281_group_by_limit_memory_tracking # max_memory_usage_for_user can interfere another queries running concurrently
|
|
||||||
01318_encrypt # Depends on OpenSSL
|
|
||||||
01318_decrypt # Depends on OpenSSL
|
|
||||||
01663_aes_msan # Depends on OpenSSL
|
|
||||||
01667_aes_args_check # Depends on OpenSSL
|
|
||||||
01683_codec_encrypted # Depends on OpenSSL
|
|
||||||
01776_decrypt_aead_size_check # Depends on OpenSSL
|
|
||||||
01811_filter_by_null # Depends on OpenSSL
|
|
||||||
02012_sha512_fixedstring # Depends on OpenSSL
|
|
||||||
01281_unsucceeded_insert_select_queries_counter
|
|
||||||
01292_create_user
|
|
||||||
01294_lazy_database_concurrent
|
|
||||||
01305_replica_create_drop_zookeeper
|
|
||||||
01354_order_by_tuple_collate_const
|
|
||||||
01355_ilike
|
|
||||||
01411_bayesian_ab_testing
|
|
||||||
01798_uniq_theta_sketch
|
|
||||||
01799_long_uniq_theta_sketch
|
|
||||||
01890_stem # depends on libstemmer_c
|
|
||||||
02003_compress_bz2 # depends on bzip2
|
|
||||||
01059_storage_file_compression # depends on brotli and bzip2
|
|
||||||
collate
|
|
||||||
collation
|
|
||||||
_orc_
|
|
||||||
arrow
|
|
||||||
avro
|
|
||||||
base64
|
|
||||||
brotli
|
|
||||||
capnproto
|
|
||||||
client
|
|
||||||
ddl_dictionaries
|
|
||||||
h3
|
|
||||||
hashing
|
|
||||||
hdfs
|
|
||||||
java_hash
|
|
||||||
json
|
|
||||||
limit_memory
|
|
||||||
live_view
|
|
||||||
memory_leak
|
|
||||||
memory_limit
|
|
||||||
mysql
|
|
||||||
odbc
|
|
||||||
parallel_alter
|
|
||||||
parquet
|
|
||||||
protobuf
|
|
||||||
secure
|
|
||||||
sha256
|
|
||||||
xz
|
|
||||||
|
|
||||||
# Not sure why these two fail even in sequential mode. Disabled for now
|
|
||||||
# to make some progress.
|
|
||||||
00646_url_engine
|
|
||||||
00974_query_profiler
|
|
||||||
|
|
||||||
# In fasttest, ENABLE_LIBRARIES=0, so rocksdb engine is not enabled by default
|
|
||||||
01504_rocksdb
|
|
||||||
01686_rocksdb
|
|
||||||
|
|
||||||
# Look at DistributedFilesToInsert, so cannot run in parallel.
|
|
||||||
01460_DistributedFilesToInsert
|
|
||||||
|
|
||||||
01541_max_memory_usage_for_user_long
|
|
||||||
|
|
||||||
# Require python libraries like scipy, pandas and numpy
|
|
||||||
01322_ttest_scipy
|
|
||||||
01561_mann_whitney_scipy
|
|
||||||
|
|
||||||
01545_system_errors
|
|
||||||
# Checks system.errors
|
|
||||||
01563_distributed_query_finish
|
|
||||||
|
|
||||||
# nc - command not found
|
|
||||||
01601_proxy_protocol
|
|
||||||
01622_defaults_for_url_engine
|
|
||||||
|
|
||||||
# JSON functions
|
|
||||||
01666_blns
|
|
||||||
|
|
||||||
# Requires postgresql-client
|
|
||||||
01802_test_postgresql_protocol_with_row_policy
|
|
||||||
|
|
||||||
# Depends on AWS
|
|
||||||
01801_s3_cluster
|
|
||||||
02012_settings_clause_for_s3
|
|
||||||
|
|
||||||
# needs psql
|
|
||||||
01889_postgresql_protocol_null_fields
|
|
||||||
|
|
||||||
# needs pv
|
|
||||||
01923_network_receive_time_metric_insert
|
|
||||||
|
|
||||||
01889_sqlite_read_write
|
|
||||||
|
|
||||||
# needs s2
|
|
||||||
01849_geoToS2
|
|
||||||
01851_s2_to_geo
|
|
||||||
01852_s2_get_neighbours
|
|
||||||
01853_s2_cells_intersect
|
|
||||||
01854_s2_cap_contains
|
|
||||||
01854_s2_cap_union
|
|
||||||
|
|
||||||
# needs s3
|
|
||||||
01944_insert_partition_by
|
|
||||||
|
|
||||||
# depends on Go
|
|
||||||
02013_zlib_read_after_eof
|
|
||||||
)
|
|
||||||
|
|
||||||
time clickhouse-test --hung-check -j 8 --order=random --use-skip-list \
|
|
||||||
--no-long --testname --shard --zookeeper --skip "${TESTS_TO_SKIP[@]}" \
|
|
||||||
-- "$FASTTEST_FOCUS" 2>&1 \
|
-- "$FASTTEST_FOCUS" 2>&1 \
|
||||||
| ts '%Y-%m-%d %H:%M:%S' \
|
| ts '%Y-%m-%d %H:%M:%S' \
|
||||||
| tee "$FASTTEST_OUTPUT/test_log.txt"
|
| tee "$FASTTEST_OUTPUT/test_log.txt"
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# docker build -t yandex/clickhouse-fuzzer .
|
# docker build -t clickhouse/fuzzer .
|
||||||
FROM yandex/clickhouse-test-base
|
FROM clickhouse/test-base
|
||||||
|
|
||||||
ENV LANG=C.UTF-8
|
ENV LANG=C.UTF-8
|
||||||
ENV TZ=Europe/Moscow
|
ENV TZ=Europe/Moscow
|
||||||
@ -36,5 +36,5 @@ CMD set -o pipefail \
|
|||||||
&& cd /workspace \
|
&& cd /workspace \
|
||||||
&& /run-fuzzer.sh 2>&1 | ts "$(printf '%%Y-%%m-%%d %%H:%%M:%%S\t')" | tee main.log
|
&& /run-fuzzer.sh 2>&1 | ts "$(printf '%%Y-%%m-%%d %%H:%%M:%%S\t')" | tee main.log
|
||||||
|
|
||||||
# docker run --network=host --volume <workspace>:/workspace -e PR_TO_TEST=<> -e SHA_TO_TEST=<> yandex/clickhouse-fuzzer
|
# docker run --network=host --volume <workspace>:/workspace -e PR_TO_TEST=<> -e SHA_TO_TEST=<> clickhouse/fuzzer
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ stage=${stage:-}
|
|||||||
script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
||||||
echo "$script_dir"
|
echo "$script_dir"
|
||||||
repo_dir=ch
|
repo_dir=ch
|
||||||
BINARY_TO_DOWNLOAD=${BINARY_TO_DOWNLOAD:="clang-11_debug_none_bundled_unsplitted_disable_False_binary"}
|
BINARY_TO_DOWNLOAD=${BINARY_TO_DOWNLOAD:="clang-13_debug_none_bundled_unsplitted_disable_False_binary"}
|
||||||
|
|
||||||
function clone
|
function clone
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# docker build -t yandex/clickhouse-integration-test .
|
# docker build -t clickhouse/integration-test .
|
||||||
FROM yandex/clickhouse-test-base
|
FROM clickhouse/test-base
|
||||||
|
|
||||||
SHELL ["/bin/bash", "-c"]
|
SHELL ["/bin/bash", "-c"]
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# docker build -t yandex/clickhouse-integration-helper .
|
# docker build -t clickhouse/integration-helper .
|
||||||
# Helper docker container to run iptables without sudo
|
# Helper docker container to run iptables without sudo
|
||||||
|
|
||||||
FROM alpine
|
FROM alpine
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# docker build -t yandex/clickhouse-kerberized-hadoop .
|
# docker build -t clickhouse/kerberized-hadoop .
|
||||||
|
|
||||||
FROM sequenceiq/hadoop-docker:2.7.0
|
FROM sequenceiq/hadoop-docker:2.7.0
|
||||||
RUN sed -i -e 's/^\#baseurl/baseurl/' /etc/yum.repos.d/CentOS-Base.repo
|
RUN sed -i -e 's/^\#baseurl/baseurl/' /etc/yum.repos.d/CentOS-Base.repo
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
# docker build -t yandex/clickhouse-kerberos-kdc .
|
# docker build -t clickhouse/kerberos-kdc .
|
||||||
|
FROM centos:6
|
||||||
|
|
||||||
FROM centos:6.6
|
RUN sed -i '/^mirrorlist/s/^/#/;/^#baseurl/{s/#//;s/mirror.centos.org\/centos\/$releasever/vault.centos.org\/6.10/}' /etc/yum.repos.d/*B*
|
||||||
# old OS to make is faster and smaller
|
|
||||||
|
|
||||||
RUN yum install -y krb5-server krb5-libs krb5-auth-dialog krb5-workstation
|
RUN yum install -y ca-certificates krb5-server krb5-libs krb5-auth-dialog krb5-workstation
|
||||||
|
|
||||||
EXPOSE 88 749
|
EXPOSE 88 749
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# docker build -t yandex/clickhouse-mysql-golang-client .
|
# docker build -t clickhouse/mysql-golang-client .
|
||||||
# MySQL golang client docker container
|
# MySQL golang client docker container
|
||||||
|
|
||||||
FROM golang:1.12.2
|
FROM golang:1.13
|
||||||
|
|
||||||
RUN go get "github.com/go-sql-driver/mysql"
|
RUN go get "github.com/go-sql-driver/mysql"
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# docker build -t yandex/clickhouse-mysql-java-client .
|
# docker build -t clickhouse/mysql-java-client .
|
||||||
# MySQL Java client docker container
|
# MySQL Java client docker container
|
||||||
|
|
||||||
FROM ubuntu:18.04
|
FROM ubuntu:18.04
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# docker build -t yandex/clickhouse-mysql-js-client .
|
# docker build -t clickhouse/mysql-js-client .
|
||||||
# MySQL JavaScript client docker container
|
# MySQL JavaScript client docker container
|
||||||
|
|
||||||
FROM node:8
|
FROM node:8
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user