Skip to content

[WIP] Bump jemalloc to 5.2.1#11163

Merged
alexey-milovidov merged 15 commits intoClickHouse:masterfrom
azat:bump-jemalloc
May 27, 2020
Merged

[WIP] Bump jemalloc to 5.2.1#11163
alexey-milovidov merged 15 commits intoClickHouse:masterfrom
azat:bump-jemalloc

Conversation

@azat
Copy link
Member

@azat azat commented May 23, 2020

Changelog category (leave one):

  • Not for changelog (changelog entry is not required)

This is an experiment with newer jemalloc, I saw the issues that it introduces (#9558), but I have some ideas about the culprit (marked few patches for myself), but first I want to check plain 5.2.1

contrib notes

  • contrib/jemalloc-cmake/include_linux_x86_64/jemalloc/*.h has been moved to contrib/jemalloc-cmake/include/jemalloc/ (since there is 0 arch specific code, and besides they were out of sync between two arches) -- this patch goes first and can be picked regardless this PR

upstream vs contrib

  • _GNU_SOURCE - moved from the headers into cmake target_compile_options(jemalloc PRIVATE -D_GNU_SOURCE)
  • JEMALLOC_OVERRIDE___POSIX_MEMALIGN has been disabled
  • JEMALLOC_PURGE_MADVISE_FREE has bee enabled (like in upstream)
  • JEMALLOC_HAVE_SECURE_GETENV has been disabled
  • oversize_threshold has been disabled

Changelog

Details
* 5.2.1 (August 5, 2019)

  This release is primarily about Windows.  A critical virtual memory leak is
  resolved on all Windows platforms.  The regression was present in all releases
  since 5.0.0.

  Bug fixes:
  - Fix a severe virtual memory leak on Windows.  This regression was first
    released in 5.0.0.  (@Ignition, @j0t, @frederik-h, @davidtgoldblatt,
    @interwq)
  - Fix size 0 handling in posix_memalign().  This regression was first released
    in 5.2.0.  (@interwq)
  - Fix the prof_log unit test which may observe unexpected backtraces from
    compiler optimizations.  The test was first added in 5.2.0.  (@marxin,
    @gnzlbg, @interwq)
  - Fix the declaration of the extent_avail tree.  This regression was first
    released in 5.1.0.  (@zoulasc)
  - Fix an incorrect reference in jeprof.  This functionality was first released
    in 3.0.0.  (@prehistoric-penguin)
  - Fix an assertion on the deallocation fast-path.  This regression was first
    released in 5.2.0.  (@yinan1048576)
  - Fix the TLS_MODEL attribute in headers.  This regression was first released
    in 5.0.0.  (@zoulasc, @interwq)

  Optimizations and refactors:
  - Implement opt.retain on Windows and enable by default on 64-bit.  (@interwq,
    @davidtgoldblatt)
  - Optimize away a branch on the operator delete[] path.  (@mgrice)
  - Add format annotation to the format generator function.  (@zoulasc)
  - Refactor and improve the size class header generation.  (@yinan1048576)
  - Remove best fit.  (@djwatson)
  - Avoid blocking on background thread locks for stats.  (@oranagra, @interwq)

* 5.2.0 (April 2, 2019)

  This release includes a few notable improvements, which are summarized below:
  1) improved fast-path performance from the optimizations by @djwatson; 2)
  reduced virtual memory fragmentation and metadata usage; and 3) bug fixes on
  setting the number of background threads.  In addition, peak / spike memory
  usage is improved with certain allocation patterns.  As usual, the release and
  prior dev versions have gone through large-scale production testing.

  New features:
  - Implement oversize_threshold, which uses a dedicated arena for allocations
    crossing the specified threshold to reduce fragmentation.  (@interwq)
  - Add extents usage information to stats.  (@tyleretzel)
  - Log time information for sampled allocations.  (@tyleretzel)
  - Support 0 size in sdallocx.  (@djwatson)
  - Output rate for certain counters in malloc_stats.  (@zinoale)
  - Add configure option --enable-readlinkat, which allows the use of readlinkat
    over readlink.  (@davidtgoldblatt)
  - Add configure options --{enable,disable}-{static,shared} to allow not
    building unwanted libraries.  (@Ericson2314)
  - Add configure option --disable-libdl to enable fully static builds.
    (@interwq)
  - Add mallctl interfaces:
        + opt.oversize_threshold (@interwq)
        + stats.arenas.<i>.extent_avail (@tyleretzel)
        + stats.arenas.<i>.extents.<j>.n{dirty,muzzy,retained} (@tyleretzel)
        + stats.arenas.<i>.extents.<j>.{dirty,muzzy,retained}_bytes
          (@tyleretzel)

  Portability improvements:
  - Update MSVC builds.  (@maksqwe, @rustyx)
  - Workaround a compiler optimizer bug on s390x.  (@rkmisra)
  - Make use of pthread_set_name_np(3) on FreeBSD.  (@trasz)
  - Implement malloc_getcpu() to enable percpu_arena for windows.  (@santagada)
  - Link against -pthread instead of -lpthread.  (@paravoid)
  - Make background_thread not dependent on libdl.  (@interwq)
  - Add stringify to fix a linker directive issue on MSVC.  (@daverigby)
  - Detect and fall back when 8-bit atomics are unavailable.  (@interwq)
  - Fall back to the default pthread_create if dlsym(3) fails.  (@interwq)

  Optimizations and refactors:
  - Refactor the TSD module.  (@davidtgoldblatt)
  - Avoid taking extents_muzzy mutex when muzzy is disabled.  (@interwq)
  - Avoid taking large_mtx for auto arenas on the tcache flush path.  (@interwq)
  - Optimize ixalloc by avoiding a size lookup.  (@interwq)
  - Implement opt.oversize_threshold which uses a dedicated arena for requests
    crossing the threshold, also eagerly purges the oversize extents.  Default
    the threshold to 8 MiB.  (@interwq)
  - Clean compilation with -Wextra.  (@gnzlbg, @jasone)
  - Refactor the size class module.  (@davidtgoldblatt)
  - Refactor the stats emitter.  (@tyleretzel)
  - Optimize pow2_ceil.  (@rkmisra)
  - Avoid runtime detection of lazy purging on FreeBSD.  (@trasz)
  - Optimize mmap(2) alignment handling on FreeBSD.  (@trasz)
  - Improve error handling for THP state initialization.  (@jsteemann)
  - Rework the malloc() fast path.  (@djwatson)
  - Rework the free() fast path.  (@djwatson)
  - Refactor and optimize the tcache fill / flush paths.  (@djwatson)
  - Optimize sync / lwsync on PowerPC.  (@chmeeedalf)
  - Bypass extent_dalloc() when retain is enabled.  (@interwq)
  - Optimize the locking on large deallocation.  (@interwq)
  - Reduce the number of pages committed from sanity checking in debug build.
    (@trasz, @interwq)
  - Deprecate OSSpinLock.  (@interwq)
  - Lower the default number of background threads to 4 (when the feature
    is enabled).  (@interwq)
  - Optimize the trylock spin wait.  (@djwatson)
  - Use arena index for arena-matching checks.  (@interwq)
  - Avoid forced decay on thread termination when using background threads.
    (@interwq)
  - Disable muzzy decay by default.  (@djwatson, @interwq)
  - Only initialize libgcc unwinder when profiling is enabled.  (@paravoid,
    @interwq)


  Bug fixes (all only relevant to jemalloc 5.x):
  - Fix background thread index issues with max_background_threads.  (@djwatson,
    @interwq)
  - Fix stats output for opt.lg_extent_max_active_fit.  (@interwq)
  - Fix opt.prof_prefix initialization.  (@davidtgoldblatt)
  - Properly trigger decay on tcache destroy.  (@interwq, @amosbird)
  - Fix tcache.flush.  (@interwq)
  - Detect whether explicit extent zero out is necessary with huge pages or
    custom extent hooks, which may change the purge semantics.  (@interwq)
  - Fix a side effect caused by extent_max_active_fit combined with decay-based
    purging, where freed extents can accumulate and not be reused for an
    extended period of time.  (@interwq, @mpghf)
  - Fix a missing unlock on extent register error handling.  (@zoulasc)

  Testing:
  - Simplify the Travis script output.  (@gnzlbg)
  - Update the test scripts for FreeBSD.  (@devnexen)
  - Add unit tests for the producer-consumer pattern.  (@interwq)
  - Add Cirrus-CI config for FreeBSD builds.  (@jasone)
  - Add size-matching sanity checks on tcache flush.  (@davidtgoldblatt,
    @interwq)

  Incompatible changes:
  - Remove --with-lg-page-sizes.  (@davidtgoldblatt)

  Documentation:
  - Attempt to build docs by default, however skip doc building when xsltproc
    is missing. (@interwq, @cmuellner)

* 5.1.0 (May 4, 2018)

@azat azat marked this pull request as draft May 23, 2020 23:40
@alexey-milovidov alexey-milovidov self-assigned this May 24, 2020
@azat azat force-pushed the bump-jemalloc branch from 9ee8f4b to 461fea8 Compare May 24, 2020 10:21
@alexey-milovidov
Copy link
Member

alexey-milovidov commented May 24, 2020

JEMALLOC_PURGE_MADVISE_FREE

Does it perform a test at runtime that this feature is available in kernel?

@azat
Copy link
Member Author

azat commented May 24, 2020

Does it perform a test at runtime that this feature is available in kernel?

No (will take this into account, thanks)

@blinkov blinkov added the pr-not-for-changelog This PR should not be mentioned in the changelog label May 25, 2020
@azat
Copy link
Member Author

azat commented May 26, 2020

Does it perform a test at runtime that this feature is available in kernel?

Actually it does

https://github.com/jemalloc/jemalloc/blob/6cdac3c573de86c8d59d69fca8f1778bdbec25e0/src/pages.c#L661-L662

Performance — 2 faster, 205 slower, 137 unstable, 3 errors

This, is how performance tests looks after upgrading to 5.2.1

Performance — 1 faster, 159 unstable, 7 errors

This, is how it looks now (basically after disabling oversize_threshold/huge_threshold)

@alexey-milovidov @akuzm I guess hits looks more or less ok? (I saw similar reports in some PRs, i.e. lots of unstable tests)
Then I'm going to cleanup this PR to for merging (there are some bits that can be analyzed, that can be related to #11121 , but I would prefer to do this separately).

Also about POPCNT, this cannot be checked like other instructions, since malloc will be called ealier, qemu does provides POPCNT but only in conjuction with ssse3,sse4.1,sse4.2, i.e.:

$ qemu-x86_64-static -cpu qemu64,+popcnt,+ssse3,+sse4.1,+sse4.2 $(which clickhouse-client) --query "SELECT 1" 2>&1 
1
$ qemu-x86_64-static -cpu qemu64,+popcnt,+ssse3,+sse4.1 $(which clickhouse-client) --query "SELECT 1" 2>&1 
qemu: uncaught target signal 6 (Aborted) - core dumped
Aborted (core dumped)

So this change makes that instruction check code pretty useless, is it useful?
That said that, I think that it can be written in that way, that it will be called before malloc, but it will be way more complex, does it worth it?

@azat
Copy link
Member Author

azat commented May 26, 2020

Previous HEAD's:

  • 461fea813705038d930ad779b019497795fc4915 - stock 5.2.1
  • b8b58dd62c7ebf53465907ebb2975ea6edf9754e and 4e3a43db93d71398f4087a645a0aa515a29deea1 - few patches reverted, slower
  • 3adda87acfeb9202b41dc56fae07ec8568fc0fcc - mostly the same as latest
  • dee04567b8f91fca08a483565e3255cc80a9e6b7 -- latest

(will rebase with push --force)

@alexey-milovidov
Copy link
Member

So this change makes that instruction check code pretty useless, is it useful?

Yes, it is very useful because it provides good diagnostics for user. How it is possible to call it before malloc? Maybe it's worth it.

@azat
Copy link
Member Author

azat commented May 26, 2020

Yes, it is very useful because it provides good diagnostics for user. How it is possible to call it before malloc? Maybe it's worth it.

I though about changing entry point, but it will work only on linux (at least what I wanted to do).

But...

qemu does provides POPCNT but only in conjuction with ssse3,sse4.1,sse4.2, i.e.:

Actually I guess that with bundled build instructions check will be executed before, but even if it so now, it may be changed one day...

@azat azat force-pushed the bump-jemalloc branch from dee0456 to e16720d Compare May 26, 2020 19:13
@azat azat force-pushed the bump-jemalloc branch from e16720d to ec894e7 Compare May 27, 2020 00:08
@azat azat marked this pull request as ready for review May 27, 2020 06:57
@alexey-milovidov
Copy link
Member

I see that it works perfectly, so we can leave this test.

Copy link
Member

@alexey-milovidov alexey-milovidov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's fix style check and merge.

@azat
Copy link
Member Author

azat commented May 27, 2020

Let's fix style check and merge.

Not sure that I know what is the error (and every time I would mistaken the CI will be triggered, sigh), I guess some missing whitespace, but style check is not verbose

@alexey-milovidov
Copy link
Member

You can edit check-style script if you like.

@azat
Copy link
Member Author

azat commented May 27, 2020

You can edit check-style script if you like.

Thanks! Didn't know that this was in repo (and never searched for it somehow).
The style check issue had been found and fixed.

@alexey-milovidov alexey-milovidov merged commit cbac07f into ClickHouse:master May 27, 2020
@azat azat deleted the bump-jemalloc branch May 31, 2020 18:11
azat added a commit to azat/ClickHouse that referenced this pull request Jun 22, 2020
alesapin added a commit that referenced this pull request Jul 2, 2020
…cess rights. (#11963)

* Simple github hook

* Add concurrent benchmark to performance test

After the main test, run queries from `website.xml` in parallel using
`clickhouse-benchmark`. This can be useful to test the effects of
concurrency on performance. Comparison test can miss some effects
because it always runs queries sequentially, and many of them are even
single-threaded.

* typo

* fixup

* add flag to continue on errors

* fixup

* fixup

* Compilable setColumns, setConstraints, setIndices

* Working setColumns, setConstraints, setIndices

* Move set*Key methods to StorageInMemoryMetadata

* Working set*Keys methods

* TTL methods in StorageInMemoryMetadata

* All set methods in metadata

* Metadata in read and write methods of IStorage

* make max global thread pool setting configurable

This PR adds a server level config for overriding the default max number
of threads in global thread pool that is currently allowed (10,000).

This might be useful in scenarios where there are a large number of
distributed queries that are executing concurrently and where the
default number of max threads might not be necessarily be sufficient.

* add max_thread_pool_size setting to tests

This adds the `max_thread_pool_size` config to
tests/server-test.xml file.

* docs for max_thread_pool_size

This adds the docs for the new server level setting
`max_thread_pool_size`.

* remove extra vertical space

* fixup

* Copy some methods to metdata

* Get column dependencies in StorageInMemoryMetadata

* Move getSampleBlockNonMaterialized to StorageInMemoryMetadata

* getSampleBlockWithVirtuals in StorageInMemoryMetadata

* Compileable getSampleBlockWithColumns in StorageInMemoryMetadata

* Seems to be working getSampleBlockWithColumns in StorageInMemoryMetadata

* Buildable getSampleBlock in StorageInMemoryMetadata

* getConstraints() in StorageInMemoryMetadata (suspicious commit, but pretend to work)

* Fix race condition

* Secondary indices in StorageInMemoryMetadata

* Partition key in StorageInMemoryMetadata

* Compilable sorting key in metadata

* Fix race condition

* Sampling key in StorageInMemoryMetadata

* Primary key in storage metadata

* Missed change for primary key

* TTL in storage in memory metadata

* Settings changes in StorageInMemoryMetadata

* Select query in metadata

* Check methods in metadata

* Better getVirtuals method

* getColumns in StorageInMemoryMetadta (only compilable)

* Fix segmentation fault

* Fix build

* Fix crash

* Fix storage merge

* Truncate with metadata

* Fix SystemTables

* Really atomic metadata

* Fix style

* Fix storage buffer metadata

* Better locks in Storages

* Less locks

* Fix style

* Remove unused method

* Remove unused method better

* Remove int contention

* Disable optimize_skip_unused_shards if sharding_key has non-deterministic func

Example of such functions is rand()

And this patch disables only optimize_skip_unused_shards, i.e. INSERT
code path does not changed, so it will work as before.

* optimize_skip_unused_shards=2 will disable it for nested distributed queries

P.S. Looks like settings can be converted between SettingUInt64 and
SettingBool without breaking binary protocol.

FWIW maybe it is a good idea to change the semantics of the settings as
follow (but I guess that changing semantic is not a good idea, better to
add new settings and deprecate old ones):
- optimize_skip_unused_shards -- accept nesting level on which the
  optimization will work
- force_skip_optimize_shards_nesting -- accept nesting level on which
  the optimization will work

* Add logging of adjusting conditional settings for distributed queries

* Add missing DROP TABLE in 01319_mv_constants_bug

* Improve 01319_optimize_skip_unused_shards_no_nested

Before there is no check that optimize_skip_unused_shards was working
for the first level, use cluster with unavalable shard to guarantee
this.

* Fix locks

* Add missed check

* Move partition key initialization into registerMergeTree

* Remove unused constructor and rename method

* Better naming

* Better logging in storages

* Remove unused variable

* report the number of errors

* fixup

* fixup

* Send logs on fatal errors (development)

* Set send_logs_level to fatal by default

* Update tests

* Turn off traps

* Add settings to control nesting level for shards skipping optimization

- optimize_skip_unused_shards_nesting (allows control nesting level for
  shards skipping optimization)
- force_skip_optimize_shards_nesting (allows control nesting level for
  checking was shards skipped or not)
- deprecates force_skip_optimize_shards_no_nested

* Fix memory accounting via HTTP interface

function perf_test()
{
    time yes '127.1:8123/?wait_end_of_query=1' | head -n10000 | xargs -P10000 curl -s -d 'select 1' | grep -x -c 1
}
function server()
{
    local limit=$1 && shift
    clickhouse-server "$@" -- --max_server_memory_usage=$limit
}

perf_test:

- before this patch with 1G  limit: succeed only ~800  queries
- after  this patch with 1G  limit: succeed      ~8000 queries

- before this patch with 10G limit: succeed only ~3000  queries
- after  this patch with 10G limit: succeed      ~10000 queries

Fixes: #11153

* Add a test for memory tracking via HTTP interface

* Update executeQuery.cpp

* Make LIVE VIEW test less wrong (it was depending on the timing of progress messages)

* Do not run 01238_http_memory_tracking under sanitizers

* Tune 01238_http_memory_tracking to make it more optimal

w/o the patch the test fails with, since it succeed only 512 queries.

* Merge with master

* Ad tests with long select and simulatenous alter

* Better comments

* Fix 01213_alter_rename_column_zookeeper

* report

* Fix bad test for LIVE VIEW

* Disable MySQL tests under tsan

* Better 00980_alter_settings test

* Support sumWithOverflow as SimpleAggregateFunction

* Clang-tidy fixes

* Fix header for nullable prewhere column.

* Update tests.

* Fix 01091_num_threads flaps (by adding unique identifier to the queries)

Actually there were two issues:
- missing \n, so it picked the wrong query anway
- no unique identifier, hence it may works incorrectly (and actually,
  event clickhouse-test script executes 'SELECT 1' query)

* Initialize GlobalThreadPool explicitly

* Do not render progress too much

* Stop tests on fatal errors

* jemalloc: fix HAVE_CPU_SPINWAIT for linux aarch64

Fixes: #11163

* Style

* constexpr intExp10

* Fix bugs in DateTime64 parsing

* Added a test

* Fix wrong code

* Fix strange code

* Update tests

* jemalloc: jemalloc_preamble.h is common

* jemalloc: fix JEMALLOC_NOTHROW/JEMALLOC_CXX_THROW for freebsd/darwin

* jemalloc: add freebsd pregenerated header

* jemalloc: add darwin pregenerated header

* jemalloc: enable by default for freebsd/darwin

* jemalloc: drop superfluous include directory

* jemalloc: explicitly disable pthread_setname_np on freebsd (requires 12.1)

* Add drop replica alter support

* fix merge state

Fix style && build

* Add tests and docs

Fix integration-tests

* only drop inactive replica

update doc

Increase timeout to release the zookeeper Ephemeral nodes

Fix code comment

use PartitionManager

make integrations test passed

* add SYSTEM DROP REPLICA

* fix: can not drop local table and replace ALTER with SYSTEM

fix test_drop_replica

fix drop replica '/path/to/zk/' ending in '/' and update doc

* add drop relica database and the whole replica

fix removeReplicaByZKPath

fix bug: add zkpath empty judge

fix: rewrite code

delete useless code.

fix:ast fromat

fix bug

add test_drop_replica

add drop_replica doc

add drop databse checkAccess

refactor dropReplica

update tests

add static method StorageReplicatedMergeTree::dropReplicaByZkPath

update doc and delete useless code

fix conflict

fix doc

fix doc

fix StorageReplicatedMergeTree::dropReplica

fix bug

delete useless code

* rewrite static StorageReplicatedMergeTree::dropReplica

* format comment

* SHA256 add FixedString support

* fixup

* Update index.md

* fix of incorrect example

was `curl -sS "<address>?param_id=2¶m_phrase=test" -d "SELECT * FROM table WHERE int_column = {id:UInt8} and string_column = {phrase:String}"`

* Add missed lock

* jemalloc: disable percpu_arena on non-linux (not supported anyway)

And since it does not supported it produces the following warning:
  <jemalloc>: No getcpu support: percpu_arena:percpu
  <jemalloc>: perCPU arena getcpu() not available. Setting narenas to 8.

However it is uses narenas=ncpu instead of default narenas=ncpu*4

* Optimize code

* jemalloc: disable it for darwin

Right now it aborts (Abort trap: 6) on osx, the issue does not looks
like [1], but should be investigated, so disable for now.

What is interesting that it works under debugger, so I guess it is
indeed the order of symbol replacements...

  [1]: jemalloc/jemalloc#420

* fix bug for query "select *, abc.*" should failed. (#11753)

* Remove redundat sync replica

* test commit

* Hook for push events

* add test

fix

fix

fix

* memory usage settings

* Update README.md

* Update README.md

* Merge pull request #11071 (#11874)

* Add's hasSubstr  array function

* Add's example in the english doc of hasSubStr

* Updates conditions to avoid prematurely calling isEqual

* Remove feathericons

Authored-by: Ryad ZENINE <[email protected]>

* allow implicit initialization

* Fix bad code

* Allow ClickHouse to run on Android

* Fix documentation

* Add docs about non-linux binaries (#11889)

* Add docs about non-linux binaries

* Better

* Update install.md

* Update install.md

* Update docs/en/getting-started/install.md

Co-authored-by: Ivan Blinkov <[email protected]>

* Update docs/en/getting-started/install.md

Co-authored-by: Ivan Blinkov <[email protected]>

* Update docs/en/getting-started/install.md

Co-authored-by: Ivan Blinkov <[email protected]>

* Review fixes

* Better instruction

* Fix reference

* Better

* Better links

Co-authored-by: Ivan Blinkov <[email protected]>

* Fix anotehr one nullable prewhere column.

* minor improvements

* Update StorageSystemTables.cpp

* Added a test

* fix style check - removed unused LOGICAL_ERROR

* Fix if function with NULLs (#11807)

* cleanup few unused headers

The following files had some unused headers and caught my eyes, so
cleaning them up:

```bash
programs/obfuscator/Obfuscator.cpp
src/Databases/DatabaseAtomic.cpp
```

* sync with goals

* Remove unused code

* Remove already fixed bug

* update SELECT description (#11907)

Signed-off-by: Slach <[email protected]>

* [docs] extra F.A.Q. content (#11898)

* more content for F.A.Q.

* more content

* normalize

* more content

* maybe fix the docs check

* absolute img urls

* fix tests

* Keep alias after substitution of query parameters #11914

* show build commands

* Added a test

* Fix using current database while checking access rights.

* Better github-hook

* Do not update PVS Studio docker automatically.

They keep removing the old image every couple of weeks, and the entire
docker update fails.

* for the love of God just update this container already, i'm begging you

* Update pvs-studio version

* Fix jemalloc under OSX (by registering it as default zone explicitly)

In case of OSX jemalloc register itself as a default zone allocator.

But when you link statically then zone_register() will not be called,
and even will be optimized out:

  $ nm clickhouse.patched  | grep -c zone_register
  0

Fix this, by manually calling it.

v2: extern C

* Rewrite arithmetic in aggregate functions optimisation (#11899)

* Put clickhouse-local data to /tmp by default

This fixes #9848
Also fixes #11926

* Update features.html

* fixpu

* Less layers in docker file

* Less layers in docker file

* Update docker/test/performance-comparison/perf.py

Co-authored-by: alesapin <[email protected]>
Co-authored-by: Alexander Kuzmenkov <[email protected]>
Co-authored-by: Bharat Nallan <[email protected]>
Co-authored-by: Azat Khuzhin <[email protected]>
Co-authored-by: Alexey Milovidov <[email protected]>
Co-authored-by: Nikolai Kochetov <[email protected]>
Co-authored-by: sundy-li <[email protected]>
Co-authored-by: amudong <[email protected]>
Co-authored-by: feng lv <[email protected]>
Co-authored-by: Alexander Kuzmenkov <[email protected]>
Co-authored-by: Ivan Blinkov <[email protected]>
Co-authored-by: Alexandr Kondratev <[email protected]>
Co-authored-by: hexiaoting <[email protected]>
Co-authored-by: Alexander Kazakov <[email protected]>
Co-authored-by: Alexander Tokmakov <[email protected]>
Co-authored-by: Artem Zuikov <[email protected]>
Co-authored-by: Vxider <[email protected]>
Co-authored-by: Nikolai Kochetov <[email protected]>
Co-authored-by: Eugene Klimov <[email protected]>
Co-authored-by: Vitaly Baranov <[email protected]>
Co-authored-by: robot-clickhouse <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no-docs-needed pr-not-for-changelog This PR should not be mentioned in the changelog

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants