Commit Graph

83648 Commits

Author SHA1 Message Date
vdimir
6ca154858c
upd TableJoin::applyKeyConvertToTable 2022-02-18 13:40:57 +00:00
Azat Khuzhin
65e9b4879d Fix possible memory_tracker use-after-free for merges/mutations
There are two possible cases for execution merges/mutations:
1) from background thread
2) from OPTIMIZE TABLE query

1) is pretty simple, it's memory tracking structure is as follow:

    current_thread::memory_tracker = level=Thread / description="(for thread)" ==
      background_thread_memory_tracker = level=Thread / description="(for thread)"
    current_thread::memory_tracker.parent = level=Global / description="(total)"

  So as you can see it is pretty simple and MemoryTrackerThreadSwitcher
  does not do anything icky for this case.

2) is complex, it's memory tracking structure is as follow:

    current_thread::memory_tracker = level=Thread / description="(for thread)"
    current_thread::memory_tracker.parent = level=Process / description="(for query)" ==
      background_thread_memory_tracker = level=Process / description="(for query)"

  Before this patch to track memory (and related things, like sampling,
  profiling and so on) for OPTIMIZE TABLE query dirty hacks was done to
  do this, since current_thread memory_tracker was of Thread scope, that
  does not have any limits.

  And so if will change parent for it to Merge/Mutate memory tracker
  (which also does not have some of settings) it will not be correctly
  tracked.

  To address this Merge/Mutate was set as parent not to the
  current_thread memory_tracker but to it's parent, since it's scope is
  Process with all settings.

  But that parent's memory_tracker is the memory_tracker of the
  thread_group, and so if you will have nested ThreadPool inside
  merge/mutate (this is the case for s3 async writes, which has been
  added in #33291) you may get use-after-free of memory_tracker.

  Consider the following example:

    MemoryTrackerThreadSwitcher()
      thread_group.memory_tracker.parent = merge_list_entry->memory_tracker
      (see also background_thread_memory_tracker above)

    CurrentThread::attachTo()
      current_thread.memory_tracker.parent = thread_group.memory_tracker

    CurrentThread::detachQuery()
      current_thread.memory_tracker.parent = thread_group.memory_tracker.parent
      # and this is equal to merge_list_entry->memory_tracker

    ~MemoryTrackerThreadSwitcher()
      thread_group.memory_tracker = thread_group.memory_tracker.parent

  So after the following we will get incorrect memory_tracker (from the
  mege_list_entry) when the next job in that ThreadPool will not have
  thread_group, since in this case it will not try to update the
  current_thread.memory_tracker.parent and use-after-free will happens.

So to address the (2) issue, settings from the parent memory_tracker
should be copied to the merge_list_entry->memory_tracker, to avoid
playing with parent memory tracker.

Note, that settings from the query (OPTIMIZE TABLE) is not available at
that time, so it cannot be used (instead of parent's memory tracker
settings).

v2: remove memory_tracker.setOrRaiseHardLimit() from settings

Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-02-18 16:23:54 +03:00
vdimir
6eda8ef914
use isNullable function in join_common/convertTypeToNullable 2022-02-18 13:09:11 +00:00
vdimir
4ce64891f9
Add taiyang-li to trusted contributors 2022-02-18 13:59:47 +01:00
Amos Bird
f459e8fc95
Less getMark calls 2022-02-18 19:55:19 +08:00
Jakub Kuklis
0aa21a2133 Document behaviour of quantile variants for empty numeric sequences 2022-02-18 11:48:59 +01:00
Maksim Kita
652980eec3
Merge pull request #34714 from azat/fix-custom_partitioning_local
Fix flaky 00502_custom_partitioning_local
2022-02-18 11:27:08 +01:00
Amos Bird
56197cf31e
Allow only to specify --log-file 2022-02-18 18:14:58 +08:00
Nikolay Degterinsky
4b316b5233
Merge pull request #34716 from cnmade/PR202202181640
Translate zh/sql-reference/statements/alter/order-by
2022-02-18 12:35:54 +03:00
Azat Khuzhin
c204ac7744 Export MemoryTracker::getHardLimit()
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-02-18 12:05:12 +03:00
cnmade
658a23af50 Translate zh/sql-reference/statements/alter/order-by: remove space 2022-02-18 16:53:16 +08:00
cnmade
4d913f328b Translate zh/sql-reference/statements/alter/order-by: remove bak file 2022-02-18 16:50:58 +08:00
cnmade
3643e9e397 Translate zh/sql-reference/statements/alter/order-by: translate to zh 2022-02-18 16:50:19 +08:00
cnmade
9d300809a4 Translate zh/sql-reference/statements/alter/order-by: reimport old file 2022-02-18 16:43:16 +08:00
cnmade
1c92f4f724 Translate zh/sql-reference/statements/alter/order-by: rename old file 2022-02-18 16:40:16 +08:00
Cody Baker
cc6ef4f4b3
Add new team members to company page (#34701) 2022-02-18 11:21:00 +03:00
Nikolay Degterinsky
ff52ecea8d
Merge pull request #34706 from cnmade/PR202202181040
Translate zh/sql-reference/statements/alter/delete
2022-02-18 10:43:44 +03:00
Nikolay Degterinsky
4346404ae5
Merge pull request #34705 from cnmade/PR202202181030
sync translate to zh: engines/table-engines/special/memory: sync inde…
2022-02-18 10:41:02 +03:00
alesapin
efb9a6d0fa
Merge pull request #34584 from bigo-sg/keerpSnapMemOpt
Keeper memory optimization by not holding snapshot in memory
2022-02-18 10:34:31 +03:00
zhanglistar
677b34d41d
Merge branch 'ClickHouse:master' into keeperVersion 2022-02-18 14:07:30 +08:00
Nikolay Degterinsky
c09275f0da
Merge pull request #34368 from usurai/sw
Add startsWith & endsWith function for arrays
2022-02-18 08:34:48 +03:00
cnmade
df14daaba6 Translate zh/sql-reference/statements/alter/delete: delete old file 2022-02-18 10:40:31 +08:00
cnmade
7fbe7efac8 Translate zh/sql-reference/statements/alter/delete: translate to zh 2022-02-18 10:39:57 +08:00
cnmade
bbd6bf6cea Translate zh/sql-reference/statements/alter/delete: reimport file 2022-02-18 10:35:04 +08:00
cnmade
01a13dab3c Translate zh/sql-reference/statements/alter/delete: rename old file 2022-02-18 10:34:31 +08:00
cnmade
5199c54e41 sync translate to zh: engines/table-engines/special/memory: sync index toc and source article link 2022-02-18 10:21:57 +08:00
Maksim Kita
e845a68eeb
Merge pull request #34695 from kitaisreal/url-encode-minor-fixes
Function encodeURLComponent minor fixes
2022-02-17 22:49:46 +01:00
Maksim Kita
6f9b436e3c
Merge pull request #34698 from kitaisreal/cmake-llvm-add-status-message-if-not-used
CMake llvm add status message if not used
2022-02-17 22:48:41 +01:00
Rajkumar
de154c5f9c Adding noexcept for move constructor 2022-02-17 13:18:12 -08:00
Maksim Kita
0cf2b6eb07 CMake llvm add status message if not used 2022-02-17 19:46:15 +00:00
Maksim Kita
4217b2e056 Fix system queries RELOAD MODEL, RELOAD FUNCTION, RESTART DISK on cluster 2022-02-17 19:41:41 +00:00
Azat Khuzhin
8576195d05 Fix flaky 00502_custom_partitioning_local
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-02-17 22:17:11 +03:00
Maksim Kita
5c92ad0d57 Function encodeURLComponent minor fixes 2022-02-17 18:34:23 +00:00
Azat Khuzhin
5a8cf3ac98 jemalloc: update version (to 5.3-rc) and commit SHA1
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-02-17 21:30:55 +03:00
Azat Khuzhin
6a2abd3a68 jemalloc: remove jemalloc 4 support
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-02-17 21:25:58 +03:00
Azat Khuzhin
de6547976b tests: update 01502_jemalloc_percpu_arena after jemalloc update
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-02-17 21:25:58 +03:00
Azat Khuzhin
ed5a3772a2 tests: make 01505_pipeline_executor_UAF compatible with sanitizers builds
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-02-17 21:25:58 +03:00
Azat Khuzhin
77ce66a90c tests: update 01505_pipeline_executor_UAF after jemalloc update
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-02-17 21:25:58 +03:00
Azat Khuzhin
c045a95a37 jemalloc: update provisioned headers for freebsd aarch64
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-02-17 21:25:58 +03:00
Azat Khuzhin
d3b60c011c jemalloc: update provisioned headers for freebsd x86_64
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-02-17 21:25:58 +03:00
Azat Khuzhin
04be7a5809 jemalloc: update provisioned headers for darwin aarch64
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-02-17 21:25:58 +03:00
Azat Khuzhin
ac31c648ab jemalloc: update provisioned headers for darwin x86_64
Generated on osx 10.14

Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-02-17 21:25:58 +03:00
Azat Khuzhin
054e84c382 jemalloc: add a note about JEMALLOC_PREFIX
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-02-17 21:25:58 +03:00
Azat Khuzhin
4d3c4c7c8c jemalloc: update provisioned headers for linux aarch64
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-02-17 21:25:58 +03:00
Azat Khuzhin
ddcf0f96e8 jemalloc: update provisioned headers for linux ppc64le
v2: define JEMALLOC_DEFINE_MADVISE_FREE
    https://s3.amazonaws.com/clickhouse-builds/33057/6482a1c48f22d80f704bf869857091045a3f6917/binary_ppc64le/build_log.log
v3: fix pthread_atfork
    https://github.com/ClickHouse/ClickHouse/runs/5128801105?check_suite_focus=true

Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>

f
2022-02-17 21:25:58 +03:00
Azat Khuzhin
bd5137db15 jemalloc: update provisioned headers for linux riscv64
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-02-17 21:25:58 +03:00
Azat Khuzhin
bc5aeb4dcf jemalloc: add a note about musl support
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-02-17 21:25:58 +03:00
Azat Khuzhin
daa292cf5a jemalloc: remove README for linux x86_64
Note, that there is no need to disable JEMALLOC_PURGE_MADVISE_FREE,
since jemalloc does check in runtime, and ClickHouse already
successfully works w/o this change.

Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-02-17 21:25:58 +03:00
Azat Khuzhin
1a98c1aace jemalloc: move JEMALLOC_HAVE_ATTR_FORMAT_GNU_PRINTF out from per-arch
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-02-17 21:25:58 +03:00
Azat Khuzhin
e962649899 jemalloc: correctly disable JEMALLOC_HAVE_ATTR_FORMAT_GNU_PRINTF
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-02-17 21:25:58 +03:00