Commit Graph

1270 Commits

Author SHA1 Message Date
Suzy Wang
1171ba9095 Add dup3() and inotify_init() from musl 1.2.3 2022-08-18 13:25:50 -07:00
Alexey Milovidov
dd96aee8d2
Update unaligned.h 2022-08-04 08:18:45 +03:00
Alexey Milovidov
6cc08afb72
Update unaligned.h 2022-08-04 01:58:08 +03:00
Alexey Milovidov
57e31cadfa
Update unaligned.h 2022-08-03 09:08:51 +03:00
HarryLeeIBM
cc73b53116 Fix Endian issue in SipHash for s390x 2022-07-29 13:21:50 -07:00
Robert Schulze
24c74da473
Merge pull request #39430 from azat/getauxval-fix
Fix LSan by fixing getauxval() (resubmit v4)
2022-07-25 10:43:09 +02:00
Azat Khuzhin
a4f9e1da5b Fix getauxval() by using procfs with fallback to environ
getauxval() from glibc-compatibility did not work always correctly:

- It does not work after setenv(), and this breaks vsyscalls,
  like sched_getcpu() [1] (and BaseDaemon.cpp always set TZ if timezone
  is defined, which is true for CI [2]).

  Also note, that fixing setenv() will not fix LSan,
  since the culprit is getauxval()

  [1]: https://bugzilla.redhat.com/show_bug.cgi?id=1163404
  [2]: ClickHouse#32928 (comment)

- Another think that is definitely broken is LSan (Leak Sanitizer), it
  relies on worked getauxval() but it does not work if __environ is not
  initialized yet (there is even a commit about this).

  And because of, at least, one leak had been introduced [3]:

    [3]: ClickHouse#33840

Fix this by using /proc/self/auxv with fallback to environ solution to
make it compatible with environment that does not allow reading from
auxv (or no procfs).

v2: add fallback to environ solution
v3: fix return value for __auxv_init_procfs()
(cherry picked from commit f187c3499a)
v4: more verbose message on errors, CI founds [1]:
    AUXV already has value (529267711)
    [1]: https://s3.amazonaws.com/clickhouse-test-reports/39103/2325f7e8442d1672ce5fb43b11039b6a8937e298/stress_test__memory__actions_.html
v5: break at AT_NULL
v6: ignore AT_IGNORE
v7: suppress TSan and remove superior check to avoid abort() in case of race
v8: proper suppressions (not inner function but itself)
Refs: #33957
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-07-25 01:22:04 +03:00
Robert Schulze
4333750985
Less usage of StringRef
... replaced by std::string_view, see #39262
2022-07-24 18:33:52 +00:00
Alexey Milovidov
72dda35108
Revert "[RFC] Fix LSan by fixing getauxval()" 2022-07-21 04:34:04 +03:00
Robert Schulze
7146685f9d
Merge pull request #39299 from azat/fix-lsan-v3
[RFC] Fix LSan by fixing getauxval()
2022-07-19 14:27:41 +02:00
Azat Khuzhin
f187c3499a Fix getauxval() by using procfs with fallback to environ
getauxval() from glibc-compatibility did not work always correctly:

- It does not work after setenv(), and this breaks vsyscalls,
  like sched_getcpu() [1] (and BaseDaemon.cpp always set TZ if timezone
  is defined, which is true for CI [2]).

  Also note, that fixing setenv() will not fix LSan,
  since the culprit is getauxval()

  [1]: https://bugzilla.redhat.com/show_bug.cgi?id=1163404
  [2]: ClickHouse#32928 (comment)

- Another think that is definitely broken is LSan (Leak Sanitizer), it
  relies on worked getauxval() but it does not work if __environ is not
  initialized yet (there is even a commit about this).

  And because of, at least, one leak had been introduced [3]:

    [3]: ClickHouse#33840

Fix this by using /proc/self/auxv with fallback to environ solution to
make it compatible with environment that does not allow reading from
auxv (or no procfs).

v2: add fallback to environ solution
v3: fix return value for __auxv_init_procfs()
Refs: #33957
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-07-18 16:49:49 +03:00
alesapin
00e5bdb84a Fix build clang-13 2022-07-18 12:44:58 +02:00
Robert Schulze
87197f8f60
Enable -Wdeprecated-dynamic-exception-spec 2022-07-13 13:49:40 +00:00
Robert Schulze
1a7727a254
Prefix overridden add_executable() command with "clickhouse_"
A simple HelloWorld program with zero includes except iostream triggers
a build of ca. 2000 source files. The reason is that ClickHouse's
top-level CMakeLists.txt overrides "add_executable()" to link all
binaries against "clickhouse_new_delete". This links against
"clickhouse_common_io", which in turn has lots of 3rd party library
dependencies ... Without linking "clickhouse_new_delete", the number of
compiled files for "HelloWorld" goes down to ca. 70.

As an example, the self-extracting-executable needs none of its current
dependencies but other programs may also benefit.

In order to restore access to the original "add_executable()", the
overriding version is now prefixed. There is precedence for a
"clickhouse_" prefix (as opposed to "ch_"), for example
"clickhouse_split_debug_symbols". In general prefixing makes sense also
because overriding CMake commands relies on undocumented behavior and is
considered not-so-great practice (*).

(*) https://crascit.com/2018/09/14/do-not-redefine-cmake-commands/
2022-07-11 19:36:18 +02:00
Alexander Tokmakov
c45482d6c6 disable instrumentation of sanitizer death callback 2022-07-07 22:10:12 +02:00
Alexander Tokmakov
c3573532c0
Merge pull request #38487 from ClickHouse/add_some_tsa_annotations
Add some TSA annotations
2022-06-29 13:57:10 +03:00
Robert Schulze
bb441faa42
Merge pull request #38491 from ClickHouse/clang-tidy-in-branches
Fix some clang-tidy warnings in headers
2022-06-29 10:22:04 +02:00
Robert Schulze
f692ead6ad
Don't use std::unique_lock unless we have to
Replace where possible by std::lock_guard which is more light-weight.
2022-06-28 19:19:06 +00:00
Robert Schulze
30f136867f
Fix build 2022-06-28 16:52:17 +00:00
Alexander Tokmakov
4f54abf67f better names for macros 2022-06-28 16:27:18 +02:00
Robert Schulze
c22038d48b
More clang-tidy fixes 2022-06-28 11:50:05 +00:00
Robert Schulze
5e28580f11
Fix some clang-tidy warnings in headers 2022-06-27 23:49:07 +02:00
Alexander Tokmakov
f4883f1f7e add some TSA aanotations 2022-06-27 22:48:27 +02:00
Robert Schulze
55b39e709d
Merge remote-tracking branch 'origin/master' into clang-tsa 2022-06-20 16:39:32 +02:00
Robert Schulze
5a4f21c50f
Support for Clang Thread Safety Analysis (TSA)
- TSA is a static analyzer build by Google which finds race conditions
  and deadlocks at compile time.

- It works by associating a shared member variable with a
  synchronization primitive that protects it. The compiler can then
  check at each access if proper locking happened before. A good
  introduction are [0] and [1].

- TSA requires some help by the programmer via annotations. Luckily,
  LLVM's libcxx already has annotations for std::mutex, std::lock_guard,
  std::shared_mutex and std::scoped_lock. This commit enables them
  (--> contrib/libcxx-cmake/CMakeLists.txt).

- Further, this commit adds convenience macros for the low-level
  annotations for use in ClickHouse (--> base/defines.h). For
  demonstration, they are leveraged in a few places.

- As we compile with "-Wall -Wextra -Weverything", the required compiler
  flag "-Wthread-safety-analysis" was already enabled. Negative checks
  are an experimental feature of TSA and disabled
  (--> cmake/warnings.cmake). Compile times did not increase noticeably.

- TSA is used in a few places with simple locking. I tried TSA also
  where locking is more complex. The problem was usually that it is
  unclear which data is protected by which lock :-(. But there was
  definitely some weird code where locking looked broken. So there is
  some potential to find bugs.

*** Limitations of TSA besides the ones listed in [1]:

- The programmer needs to know which lock protects which piece of shared
  data. This is not always easy for large classes.

- Two synchronization primitives used in ClickHouse are not annotated in
  libcxx:
  (1) std::unique_lock: A releaseable lock handle often together with
      std::condition_variable, e.g. in solve producer-consumer problems.
  (2) std::recursive_mutex: A re-entrant mutex variant. Its usage can be
      considered a design flaw + typically it is slower than a standard
      mutex. In this commit, one std::recursive_mutex was converted to
      std::mutex and annotated with TSA.

- For free-standing functions (e.g. helper functions) which are passed
  shared data members, it can be tricky to specify the associated lock.
  This is because the annotations use the normal C++ rules for symbol
  resolution.

[0] https://clang.llvm.org/docs/ThreadSafetyAnalysis.html
[1] https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/42958.pdf
2022-06-20 16:13:25 +02:00
alesapin
0ae0cc54aa
Merge pull request #38106 from ClickHouse/tsan_less_flaky_tests
Some fixes for tests with tsan
2022-06-18 14:22:43 +02:00
Alexander Tokmakov
9cac78b498 make tests with tsan less flaky 2022-06-15 19:54:46 +02:00
Igor Nikonov
de273b043d Decimal: noexcept move constructor/assignment operator 2022-06-13 13:42:54 +00:00
Robert Schulze
1a0b5f33b3
More consistent use of platform macros
cmake/target.cmake defines macros for the supported platforms, this
commit changes predefined system macros to our own macros.

__linux__ --> OS_LINUX
__APPLE__ --> OS_DARWIN
__FreeBSD__ --> OS_FREEBSD
2022-06-10 10:22:31 +02:00
Alexey Milovidov
b5f48a7d3f Merge branch 'master' of github.com:ClickHouse/ClickHouse into llvm-14 2022-06-01 22:09:58 +02:00
Robert Schulze
249fe561f4
Fix build with -DENABLE_LIBRARIES=0 / -DENABLE_REPLXX=0
Replxx: When disabled via -DENABLE_LIBRARIES=0 or -DENABLE_REPLXX (the
latter was undocumented) the build broke because replxx symbols were
used since [0] in header LineReader.h. This header should in theory
stay clean of replxx but doesn't for efficiency reasons.

This change makes compilation of replxx mandatory. As replxx is quite
small, I guess this is okay. (The alternative is to litter the code
with ifdefs for non-replxx and a replxx paths.)

[0] https://github.com/ClickHouse/ClickHouse/pull/33201
2022-06-01 10:02:28 +02:00
Alexey Milovidov
bcbd6b802f Fix clang-tidy-14 2022-05-31 04:19:08 +02:00
Alexey Milovidov
11788c8129 Fix clang-tidy-14 2022-05-29 02:28:46 +02:00
Alexander Tokmakov
6bc68c0cbc Merge branch 'master' into fixes_for_transactions 2022-05-23 18:49:21 +02:00
Alexander Tokmakov
12bbb7de87 fix race on TID allocation 2022-05-20 12:41:44 +02:00
Robert Schulze
b475fbc9a7
Merge pull request #37300 from ClickHouse/cmake-cleanup-pt3
Various cmake cleanups
2022-05-20 10:02:36 +02:00
Robert Schulze
0c55ac76d2
A few clangtidy updates
Enable:

- bugprone-lambda-function-name: "Checks for attempts to get the name of
  a function from within a lambda expression. The name of a lambda is
  always something like operator(), which is almost never what was
  intended."

- bugprone-unhandled-self-assignment: "Finds user-defined copy
  assignment operators which do not protect the code against
  self-assignment either by checking self-assignment explicitly or using
  the copy-and-swap or the copy-and-move method.""

- hicpp-invalid-access-moved: "Warns if an object is used after it has
  been moved."

- hicpp-use-noexcept: "This check replaces deprecated dynamic exception
  specifications with the appropriate noexcept specification (introduced
  in C++11)"

- hicpp-use-override: "Adds override (introduced in C++11) to overridden
  virtual functions and removes virtual from those functions as it is
  not required."

- performance-type-promotion-in-math-fn: "Finds calls to C math library
  functions (from math.h or, in C++, cmath) with implicit float to
  double promotions."

Split up:

- cppcoreguidelines-*. Some of them may be useful (haven't checked in
  detail), therefore allow to toggle them individually.

Disable:

- linuxkernel-*. Obvious.
2022-05-17 20:56:57 +02:00
Robert Schulze
43945cea1b
Fixing some warnings 2022-05-16 20:59:27 +02:00
Robert Schulze
e3cfec5b09
Merge remote-tracking branch 'origin/master' into clangtidies 2022-05-16 10:12:50 +02:00
Robert Schulze
8117a1ce52
Don't leak suppression for -Wreserved-identifier out of header 2022-05-15 09:48:54 +02:00
Robert Schulze
1b81bb49b4
Enable clang-tidy modernize-deprecated-headers & hicpp-deprecated-headers
Official docs:

  Some headers from C library were deprecated in C++ and are no longer
  welcome in C++ codebases. Some have no effect in C++. For more details
  refer to the C++ 14 Standard [depr.c.headers] section. This check
  replaces C standard library headers with their C++ alternatives and
  removes redundant ones.
2022-05-09 08:23:33 +02:00
Robert Schulze
f866f8143d
Enable clang-tidy modernize-use-noexcept
Official docs:

  This check replaces deprecated dynamic exception specifications with
  the appropriate noexcept specification (introduced in C++11). By
  default this check will replace throw() with noexcept, and
  throw(<exception>[,...]) or throw(...) with noexcept(false).
2022-05-08 19:31:38 +02:00
Robert Schulze
3d3977bad3
Enable clang-tidy cert-err60-cpp
Official docs:

  This check flags all throw expressions where the exception object is
  not nothrow copy constructible.
2022-05-06 00:36:26 +02:00
mergify[bot]
64084b5e32
Merge branch 'master' into shared_ptr_helper3 2022-05-03 20:46:16 +00:00
Robert Schulze
ad0b3be79d
Replace uses of SFINAE by C++20 concepts
- enable_if is usually regarded as fragile and unreadable

- C++20 concepts are much easier to read and produce more expressive
  error messages
2022-05-02 09:23:53 +02:00
Robert Schulze
330212e0f4
Remove inherited create() method + disallow copying
The original motivation for this commit was that shared_ptr_helper used
std::shared_ptr<>() which does two heap allocations instead of
make_shared<>() which does a single allocation. Turned out that
1. the affected code (--> Storages/) is not on a hot path (rendering the
performance argument moot ...)
2. yet copying Storage objects is potentially dangerous and was
   previously allowed.

Hence, this change

- removes shared_ptr_helper and as a result all inherited create() methods,

- instead, Storage objects are now created using make_shared<>() by the
  caller (for that to work, many constructors had to be made public), and

- all Storage classes were marked as noncopyable using boost::noncopyable.

In sum, we are (likely) not making things faster but the code becomes
cleaner and harder to misuse.
2022-05-02 08:46:52 +02:00
Alexey Milovidov
1ddb04b992
Merge pull request #36715 from amosbird/refactorbase
Reorganize source files so that base won't depend on Common
2022-04-30 09:40:58 +03:00
Amos Bird
4a5e4274f0
base should not depend on Common 2022-04-29 10:26:35 +08:00
mergify[bot]
20e2fa9b3f
Merge branch 'master' into dynamic-columns-9 2022-04-28 17:53:03 +00:00
mergify[bot]
01357b2e1a
Merge branch 'master' into speed-up-build 2022-04-22 04:34:27 +00:00
Maksim Kita
57444fc7d3
Merge pull request #36444 from rschu1ze/clang-tidy-fixes
Clang tidy fixes
2022-04-21 16:11:27 +02:00
mergify[bot]
9c75f83a0b
Merge branch 'master' into speed-up-build 2022-04-20 23:20:21 +00:00
Robert Schulze
b24ca8de52
Fix various clang-tidy warnings
When I tried to add cool new clang-tidy 14 warnings, I noticed that the
current clang-tidy settings already produce a ton of warnings. This
commit addresses many of these. Almost all of them were non-critical,
i.e. C vs. C++ style casts.
2022-04-20 10:29:05 +02:00
alesapin
dd2e085ae5
Merge pull request #36365 from ClickHouse/fix-memory-warning-at-server-startup
Fix error in sanity checks
2022-04-18 11:51:21 +02:00
Alexey Milovidov
9bab9077b2 Fix error in sanity checks 2022-04-18 03:39:56 +02:00
Alexey Milovidov
f046dd6642 Speed up build a little 2022-04-16 03:58:50 +02:00
Alexey Milovidov
ccdd0a60f7 Remove Arcadia 2022-04-16 00:28:56 +02:00
Anton Popov
6364b6f78f Merge remote-tracking branch 'upstream/master' into dynamic-columns-9 2022-04-08 15:05:51 +00:00
Anton Popov
3fce23357c fix insertion of complex json with nested arrays 2022-04-08 14:58:02 +00:00
Alexander Tokmakov
7f54e7b422 Merge branch 'master' into mvcc_prototype 2022-04-07 15:14:06 +02:00
Anton Popov
13cb564d1e
Merge pull request #35716 from kssenii/fix-local-logs-level
Fix send_logs_level for clickhouse local
2022-04-06 18:52:47 +02:00
kssenii
83488b2d13 Better 2022-04-05 14:48:26 +02:00
mergify[bot]
3183b61c74
Merge branch 'master' into mvcc_prototype 2022-03-31 12:27:09 +00:00
Alexander Tokmakov
287d858fda Merge branch 'master' into mvcc_prototype 2022-03-29 16:24:12 +02:00
alesapin
842c0b8ff0 Merge remote-tracking branch 'origin/startup-sanity-checks' into startup-sanity-checks 2022-03-29 14:29:33 +02:00
alesapin
ed2c461fe1 Merge branch 'master' into startup-sanity-checks 2022-03-29 14:09:20 +02:00
alesapin
b838a7dcb0 Remove outdated links from CI 2022-03-28 15:53:22 +02:00
Sergei Trifonov
85f2ed12e1 fix darwin build 2022-03-25 12:52:50 +01:00
alesapin
93d1b1d198 Merge branch 'master' into startup-sanity-checks 2022-03-24 11:17:06 +01:00
Sergei Trifonov
c7cf14e743 fix style and darwin build 2022-03-23 19:15:01 +01:00
Alexander Tokmakov
9702b5177d Merge branch 'master' into mvcc_prototype 2022-03-14 21:45:38 +01:00
Maksim Kita
e14cfd5dcd Fix clang-tidy warnings in Access folder 2022-03-14 18:17:35 +00:00
alesapin
96c0e9fddf Better cmake 2022-03-11 15:47:07 +01:00
Alexander Tokmakov
8acfb8d27f Merge branch 'master' into mvcc_prototype 2022-03-07 17:40:15 +01:00
alesapin
c5a456802f Fix build 2022-03-04 19:39:11 +01:00
alesapin
5416b567d5 Merge branch 'master' into standalone_keeper_build 2022-03-04 13:35:07 +01:00
alesapin
0eb7d28192 Building small keeper binary 2022-03-03 21:27:46 +01:00
Vladimir C
38cf9ca7c2
Merge pull request #35005 from vdimir/fixarm64/00092_obfuscator 2022-03-03 12:17:30 +01:00
Maksim Kita
7d90afb3b0
Merge pull request #34988 from azat/safe-exit
Fix signal-unsafe TSan report in client
2022-03-03 09:21:26 +01:00
vdimir
c89de91fd4
clickhouse obfuscator aarch64 fix 2022-03-02 21:31:40 +00:00
Azat Khuzhin
798da0c314 Introduce safeExit() helper (_exit() compatible with TSan)
v2: add missing defines.h header
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-03-02 22:17:17 +03:00
Maksim Kita
b1a956c5f1 clang-tidy check performance-move-const-arg fix 2022-03-02 18:15:27 +00:00
Alexander Tokmakov
aa6b9a2abc Merge branch 'master' into mvcc_prototype 2022-02-23 23:22:03 +03:00
Amos Bird
56197cf31e
Allow only to specify --log-file 2022-02-18 18:14:58 +08:00
Alexander Tokmakov
dae044f86b Merge branch 'master' into mvcc_prototype 2022-02-17 13:49:37 +03:00
Vladimir C
ddad064285
Merge pull request #34463 from vdimir/wide_integer_from_builtin_double_multiplier
Use `cpp_bin_float_double` in `set_multiplier` for `wide_integer_from_builtin` for aarch64
2022-02-15 15:24:20 +01:00
Sergei Trifonov
0f66743104 support determine available memory for FreeBSD 2022-02-15 13:59:00 +03:00
Alexander Tokmakov
1e4e569151 Merge branch 'master' into mvcc_prototype 2022-02-15 02:26:47 +03:00
Maksim Kita
70ffcb8e33
Merge pull request #34393 from kitaisreal/sort-added-equal-items-randomization
Sort added equal items ranges randomization
2022-02-14 16:41:19 +01:00
Vladimir C
ebd93d07e5
fix 2022-02-14 12:36:30 +01:00
Maksim Kita
e13a0bfb39 Enable randomization of sort only in debug 2022-02-13 15:10:44 +00:00
Maksim Kita
7cbf18ef59 Fixed tests 2022-02-13 15:10:44 +00:00
Maksim Kita
4a18e627ec Updated implementation 2022-02-13 15:10:44 +00:00
Maksim Kita
42792dec48 Simplified implementation 2022-02-13 15:10:44 +00:00
Maksim Kita
b536b27e15 Fixed tests 2022-02-13 15:10:44 +00:00
Maksim Kita
10293acafb Sort added equal items ranges randomization 2022-02-13 15:10:44 +00:00
kssenii
fecf7f3d08 May be fix test 01065_window_view_event_hop_watch_bounded.py 2022-02-12 18:24:09 +01:00
Vladimir C
d40275af4f
fix 2022-02-11 21:22:02 +01:00
vdimir
b17d27413e
Use cpp_bin_float_double_extended in wide_integer_from_builtin 2022-02-11 18:01:19 +01:00
Alexander Tokmakov
07e66e690d Merge branch 'master' into mvcc_prototype 2022-02-11 15:53:32 +03:00
vdimir
4b1325ba63
Try to use double in set_multiplier for wide_integer_from_builtin 2022-02-09 14:27:21 +01:00
alexey-milovidov
38d92d0507
Merge pull request #33996 from save-my-heart/fix/signal_pipe_buf_size
reduce signal_pipe_buf_size
2022-02-06 04:50:47 +03:00
Alexander Tokmakov
ca5f951558 Merge branch 'master' into mvcc_prototype 2022-02-03 18:56:44 +03:00
Sergei Trifonov
68bc456830
Merge pull request #34223 from azat/bump-fmt
Bump fmtlib from 7.0.0 to 8.1.1
2022-02-02 00:03:25 +03:00
alexey-milovidov
cafb19d7fb
Merge pull request #34114 from amosbird/replxxwithlexer
Combining our lexer with replxx for better multiple line editing
2022-02-01 16:32:25 +03:00
Azat Khuzhin
220ed206c1 logger_useful: implicitly convert fmt::basic_runtime for std::string ctor
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-02-01 14:30:03 +03:00
Azat Khuzhin
bedf208cbd Use fmt::runtime() for LOG_* for non constexpr
Here is oneliner:

    $ gg 'LOG_\(DEBUG\|TRACE\|INFO\|TEST\|WARNING\|ERROR\|FATAL\)([^,]*, [a-zA-Z]' -- :*.cpp :*.h | cut -d: -f1 | sort -u | xargs -r sed -E -i 's#(LOG_[A-Z]*)\(([^,]*), ([A-Za-z][^,)]*)#\1(\2, fmt::runtime(\3)#'

Note, that I tried to do this with coccinelle (tool for semantic
patchin), but it cannot parse C++:

    $ cat fmt.cocci
    @@
    expression log;
    expression var;
    @@

    -LOG_DEBUG(log, var)
    +LOG_DEBUG(log, fmt::runtime(var))

I've also tried to use some macros/templates magic to do this implicitly
in logger_useful.h, but I failed to do so, and apparently it is not
possible for now.

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

v2: manual fixes
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-02-01 14:30:03 +03:00
Alexander Tokmakov
2e4ae37d98 Merge branch 'master' into mvcc_prototype 2022-02-01 13:20:03 +03:00
Maksim Kita
8513f20cfd
Merge pull request #34145 from kitaisreal/bitset-sort-performance-check
pdqsort performance check
2022-01-31 12:35:13 +01:00
Maksim Kita
5ef83deaa6 Update sort to pdqsort 2022-01-30 19:49:48 +00:00
Amos Bird
ae16b362d3
Better case-insensitive completion 2022-01-30 19:50:24 +08:00
Amos Bird
bb34435928
Better code 2022-01-30 19:48:35 +08:00
Amos Bird
62e89a6445
Ignore case for history search and completion 2022-01-30 19:48:34 +08:00
Amos Bird
556cce9f3c
We need highlight to use Lexer 2022-01-30 19:48:34 +08:00
Amos Bird
54517753d7
Combining our lexer with replxx 2022-01-30 19:48:33 +08:00
save-my-heart
4894e93e05
Merge branch 'ClickHouse:master' into fix/signal_pipe_buf_size 2022-01-30 06:29:00 +08:00
Alexey Milovidov
7135ff448f Revert #33957 2022-01-30 01:09:15 +03:00
Alexander Tokmakov
fb9b2d5326 Merge branch 'master' into mvcc_prototype 2022-01-28 21:18:36 +03:00
tavplubix
b92958815a
Update LineReader.cpp 2022-01-28 13:38:36 +03:00
Vitaly Baranov
484743edff
Merge pull request #33201 from azat/client-interactive-suggest
Client interactive suggest (extract info from CREATE queries)
2022-01-28 16:30:16 +07:00
save-my-heart
cc3cbc6503 remove whitespace to pass style check 2022-01-26 23:05:07 +08:00
save-my-heart
62ba4833df fix dereference null pointer 2022-01-26 22:55:19 +08:00
save-my-heart
2c37b572d4 fix 2022-01-26 22:21:18 +08:00
save-my-heart
99c8736f00 fix build error on freebsd & aarch 2022-01-26 22:18:17 +08:00
Azat Khuzhin
0fe1f070fa Fix getauxval() in glibc-compatibility
getauxval() from glibc-compatibility did not work always correctly:

- it does not work after setenv(), and this breaks vsyscalls,
  like sched_getcpu() [1] (and BaseDaemon.cpp always set TZ if timezone
  is defined, which is true for CI [2]).

  [1]: https://bugzilla.redhat.com/show_bug.cgi?id=1163404
  [2]: https://github.com/ClickHouse/ClickHouse/pull/32928#issuecomment-1015762717

- another think that is definitely broken is LSan (Leak Sanitizer), it
  relies on worked getauxval() but it does not work if __environ is not
  initialized yet (there is even a commit about this).

  And because of, at least, one leak had been introduced [3]:

    [3]: https://github.com/ClickHouse/ClickHouse/pull/33840

Fix this by using /proc/self/auxv.

And let's see how many issues will LSan find...

I've verified this patch manually by printing AT_BASE and compared it
with output of LD_SHOW_AUXV.

Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-01-26 12:56:27 +03:00
save-my-heart
c1036f0b8e ensure signal_pipe_buf_size is <= PIPE_BUF 2022-01-25 22:43:44 +08:00
Maksim Kita
c1db61b4ed
Merge pull request #33946 from azat/build-cleanup
Remove MAKE_STATIC_LIBRARIES (in favor of USE_STATIC_LIBRARIES)
2022-01-24 23:42:04 +01:00
Azat Khuzhin
1acd644040 Add inplace merge for new completion words
This will allow:
- use addWords() everywhere
- remove that optimization for empty words case (initial load)
- and now we remove duplicates according to comparator

v2: replace parameter pack in addWords() with explicit Compare for both
cases (just pass default)
2022-01-24 22:59:18 +03:00
Azat Khuzhin
b9948155cd Remove extra copying for completion words
Return Replxx::completions_t over Words array, that way we avoids one
copying of std::string (although it breaks incapsulation).
2022-01-24 23:04:48 +03:00
Azat Khuzhin
4a0facd341 Remove MAKE_STATIC_LIBRARIES (in favor of USE_STATIC_LIBRARIES)
There is no more MAKE_*, so remove this alias.

Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-01-24 17:28:33 +03:00
Azat Khuzhin
37dbff7587 Revert glibc compatibility (via .symver) in favor of hermetic build (bundled libc)
This patch reverts glibc compatibility (via .symver) #29594,
in favor of hermetic build (that provides bundled libc version) #30011

Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-01-24 16:03:56 +03:00
Alexander Tokmakov
0ea0a8ccc7 Merge branch 'master' into mvcc_prototype 2022-01-20 17:05:55 +03:00
Azat Khuzhin
e0e81b340d Fix w/o ODBC build 2022-01-20 10:02:02 +03:00
Azat Khuzhin
e3b140a387 Add alias library for fmt 2022-01-20 10:02:02 +03:00
Azat Khuzhin
ad67aa527c Add alias library for magic_enum 2022-01-20 10:02:02 +03:00
Azat Khuzhin
ea68b07c9e Remove unbundled replxx support 2022-01-20 10:02:01 +03:00
Azat Khuzhin
8b692b607c Remove unbundled cctz support 2022-01-20 10:02:01 +03:00
Azat Khuzhin
3147bbab51 Cleanup sentry support 2022-01-20 10:02:00 +03:00
Azat Khuzhin
f1cc63d900 Remove unbundled cityhash support 2022-01-20 10:01:12 +03:00
Alexander Tokmakov
e9a5a64a71 Merge branch 'master' into mvcc_prototype 2022-01-19 21:41:23 +03:00
Amos Bird
4e18368186
CI somehow finds another duplicated header 2022-01-19 14:37:59 +08:00
alexey-milovidov
d222cb9771
Merge pull request #33695 from amosbird/buildimprove
Some build improvement
2022-01-19 03:19:22 +03:00
Azat Khuzhin
f12e4b6ef7 Rewrite suggestions to make it more cleaner
- use plain mutex over atomic
- use addWords() for initial suggestion filling
- return vector<> from getCompletions() over iterator, to avoid possible
  questions (even though it was safe, since addWords() could not be
  called in parallel with getCompletions() before)
2022-01-18 21:03:51 +03:00
Kruglov Pavel
2295a07066
Merge pull request #33534 from azat/fwd-decl
RFC: Split headers, move SystemLog into module, more forward declarations
2022-01-18 17:22:49 +03:00
Amos Bird
6d62060e16
Build improvement 2022-01-17 22:36:27 +08:00
Alexey Milovidov
7848ea7d60 Allow insertFrom for ColumnFunction 2022-01-16 06:18:35 +03:00
Alexander Tokmakov
4dd216ce8f Merge branch 'master' into mvcc_prototype 2022-01-14 17:11:32 +03:00
Azat Khuzhin
cb70544dfe Move LockMemoryExceptionInThread and MemoryTrackerBlockerInThread 2022-01-10 22:39:10 +03:00
Azat Khuzhin
aee034a597 Use explicit template instantiation for SystemLog
- Move some code into module part to avoid dependency from IStorage in SystemLog
- Remove extra headers from SystemLog.h
- Rewrite some code that was relying on headers that was included by SystemLog.h

v2: rebase
v3: squash move into module part with explicit template instantiation
    (to make each commit self compilable after rebase)
2022-01-10 22:01:41 +03:00
Alexander Tokmakov
bf2b6c2c37 Merge branch 'master' into mvcc_prototype 2022-01-10 19:53:50 +03:00
msaf1980
780a1b2abe graphite: split tagged/plain rollup rules (for merges perfomance) 2022-01-10 16:34:16 +05:00
Alexey Milovidov
0696c1971f Fix clang-tidy 2022-01-04 23:52:10 +03:00
alexey-milovidov
6e9684149b
Update wide_integer_impl.h 2022-01-03 16:43:58 +03:00
Alexey Milovidov
93bd1771cc Fix error 2022-01-02 23:52:55 +03:00
Alexander Tokmakov
8aec3ae94f Merge branch 'master' into mvcc_prototype 2021-12-28 14:24:36 +03:00
Azat Khuzhin
36c4fc054c Client interactive suggest (extract info from CREATE queries)
This will parse CREATE queries and add the following things to
completion list for clickhouse-client/clickhouse-local:
- table
- database
- columns
2021-12-26 19:10:25 +03:00
Alexey Milovidov
8b91bdf9f2 Enable query profiler 2021-12-24 12:25:27 +03:00
Alexey Milovidov
29d28c531f Move code around to avoid dlsym on Musl 2021-12-24 12:25:27 +03:00
alexey-milovidov
95818893d3
Merge pull request #33058 from ClickHouse/update-harmful
Update harmful library
2021-12-23 08:01:21 +03:00
Alexey Milovidov
9fa2b7a581 Corrections 2021-12-23 01:38:28 +03:00
Alexey Milovidov
53c83e4813 Merge branch 'Issue77' of github.com:DevTeamBK/ClickHouse into merge-33025 2021-12-23 01:36:46 +03:00
Rajkumar
a75d3d1c83 Review comments 2021-12-22 13:39:45 -08:00
alexey-milovidov
70fb9833ef
Update harmful.c 2021-12-22 22:55:55 +03:00
alexey-milovidov
fc9cc7dfb0
Update harmful.c 2021-12-22 22:06:06 +03:00
Alexey Milovidov
d11c5b3893 Update harmful library 2021-12-22 21:54:29 +03:00
Alexander Tokmakov
b7184732d5 Merge branch 'master' into mvcc_prototype 2021-12-22 19:46:09 +03:00
tavplubix
d8fb293d57
Merge pull request #32900 from zzsmdfj/issue/#15182_MaterializeMySQL_support_bit_type
Add support for BIT data type in MaterializedMySQL
2021-12-22 15:58:29 +03:00
Alexander Tokmakov
32e62ed5c2 Merge branch 'master' into mvcc_prototype 2021-12-17 10:43:46 +03:00
zzsmdfj
7498dd9c33 to #15182_MaterializeMySQL_support_bit_type- fix code format 2021-12-17 15:10:43 +08:00
zzsmdfj
e9eed1f927 to #15182_MaterializeMySQL_support_bit_type 2021-12-17 15:03:24 +08:00
Alexander Tokmakov
d7ad72838c Merge branch 'master' into mvcc_prototype 2021-12-14 23:07:52 +03:00
kssenii
f0d0714e47 Pass timeouts for mysql 2021-12-13 22:12:33 +00:00
Azat Khuzhin
d8bf26f705 Remove even minimal support for readline 2021-12-11 11:33:57 +03:00
Azat Khuzhin
4e4837758a Remove readline support
- it was not nested for a long time
- replxx is an upstream way for completion
2021-12-11 11:29:59 +03:00
Mikhail f. Shiryaev
03927f5fc6
Revert "graphite: split tagged/plain rollup rules (for merges perfomance)"
This reverts commit 303552f515.
2021-12-08 15:49:21 +01:00
Alexander Tokmakov
7fcb79ae72 Merge branch 'master' into mvcc_prototype 2021-12-07 14:39:29 +03:00
Mikhail f. Shiryaev
5fc20b3e6a
Merge pull request #25122 from msaf1980/rollup_rules_type
GraphiteMergeTree Rollup rules type
2021-12-07 10:18:08 +01:00
msaf1980
303552f515
graphite: split tagged/plain rollup rules (for merges perfomance) 2021-12-06 16:49:08 +01:00
alexey-milovidov
50c23a9fd6
Merge pull request #31123 from amosbird/repl-improvement
Better clickhouse-client multiline input
2021-12-06 12:22:13 +03:00
Azat Khuzhin
96bd83c31e Do not reopen logs on USR1, HUP is enough
USR1 is also used for query_profiler_real_time_period_ns, let's not
overlap.
2021-12-03 01:32:57 +03:00
Azat Khuzhin
bdc6163b88 Fix magic_enum for debug helpers 2021-11-28 06:28:19 +03:00
alexey-milovidov
d9292395e8
Merge pull request #31832 from ClickHouse/strange-code-typelist
Fix the issue that LowCardinality of Int256 cannot be created.
2021-11-27 00:36:56 +03:00
Vasily Nemkov
e9466e505b Minor improvements to DUMP macro
- output enum values names with help of magic_enum
- output string literals as is, without type info
2021-11-26 12:20:08 +02:00
Alexey Milovidov
85cec911be Fix strange code in TypeList 2021-11-25 23:55:02 +03:00
Kruglov Pavel
b63b47f0f0
Merge pull request #31265 from Avogar/fix-write-buffers
Fix and refactor WriteBiffer-s a little
2021-11-23 16:46:09 +03:00
Alexey Milovidov
c50b31a7a5 Remove trash 2021-11-21 17:35:33 +03:00
Alexey Milovidov
a778b625b9 Get rid of 10-years old trash 2021-11-21 15:48:11 +03:00
Kruglov Pavel
d9c1a0c8ec
Merge branch 'master' into fix-write-buffers 2021-11-20 17:48:24 +03:00
Alexander Tokmakov
06bed68f6e Merge branch 'master' into mvcc_prototype 2021-11-17 23:03:19 +03:00
Nikolay Degterinsky
fc9ef14a73
Merge pull request #29219 from evillique/log_lz4_streaming
Add LZ4 stream compression of logs
2021-11-17 21:22:57 +03:00
Amos Bird
93294734d3
Better clickhouse-client multiline input 2021-11-17 22:11:30 +08:00
Nikolay Degterinsky
ddef6d86ca Minor fixes 2021-11-16 23:02:47 +00:00
Nikolay Degterinsky
2ae79233e4 Better 2021-11-16 23:02:47 +00:00
Nikolay Degterinsky
eafd3ddfac Add lz4 stream compression 2021-11-16 22:30:29 +00:00
alexey-milovidov
9a30709e99
Update ReplxxLineReader.cpp 2021-11-17 00:44:52 +03:00
Azat Khuzhin
b7030720b6 Add comments for ReplxxLineReader::executeEditor() 2021-11-16 23:26:41 +03:00
Azat Khuzhin
7576f4d9cd Fix waiting of the editor during interactive query edition
On resize (SIGWINCH) waitpid() will fail with EINTR error, and after
this clickhouse-client/clickhouse-local will works concurrently.
2021-11-16 23:26:41 +03:00
Azat Khuzhin
6fdbffb533 Avoid using extra shell for editor invocation (for query editing) 2021-11-16 23:26:41 +03:00
Alexander Tokmakov
ce2f692bb4 Merge branch 'master' into mvcc_prototype 2021-11-15 14:56:50 +03:00
Azat Khuzhin
ed4b5c7640 Check stderr is writable before reopining it (to avoid losing errors) 2021-11-13 22:26:05 +03:00
Alexander Tokmakov
672157b817 Merge branch 'master' into mvcc_prototype 2021-11-11 22:01:34 +03:00
alexey-milovidov
5100ec7b48
Update defines.h 2021-11-11 21:51:24 +03:00
Vladimir Smirnov
48451182f8 Initial support for risc-v
Make ClickHouse compilable and runnable on risc-v 64

So far only basic functionality was tested (on real hw),
clickhouse server runs, exceptions works, client works,
simple tests works.

What doesn't work:
 1. traces - they are always empty
 2. system.stack_trace only have first frame
2021-11-11 19:23:34 +01:00
avogar
c521a9131a Small refactoring of WriteBiffer-s 2021-11-11 02:11:18 +03:00
Vitaly Baranov
1579bcfd20
Merge pull request #31178 from vitlibar/backup-engines-and-improvements
Backup engines and improvements
2021-11-10 18:20:41 +03:00
Vitaly Baranov
bf8606a931 Add UUID and timestamp to backup metadata. 2021-11-09 23:16:45 +03:00
Pavel Medvedev
340aed30b6 revert cgroup memory limit to uint64_t
... to fix compiler warning about signed/unsigned comparison.

See issue #25662
2021-11-08 18:56:31 +01:00
Pavel Medvedev
54f543b61a apply cgroup memory limit to physical memory amount
... after obtaining the memory amount, in order to return not greater
than the physical memory from `getMemoryAmount()`

Additionally reading the memory limit as a singned int64_t, since
there is no guarantie the setting file contains non-negative value.

See issue #25662
2021-11-08 15:16:45 +01:00
Alexander Tokmakov
92eec74ad7 Merge branch 'master' into mvcc_prototype 2021-11-06 21:08:36 +03:00
alexey-milovidov
a487ee6f25
Merge pull request #30574 from pmed/issue_25662_cgroup_memory_limit
WIP: use cgroup memory limit in getMemoryAmountOrZero
2021-10-31 14:53:16 +03:00
Alexey Milovidov
8b4a6a2416 Remove cruft 2021-10-28 02:10:39 +03:00
alexey-milovidov
705c1b957d
Update getMemoryAmount.cpp 2021-10-23 05:27:15 +03:00
Pavel Medvedev
eaca39ba05 use cgroup memory limit in getMemoryAmountOrZero
Try to read the memory amount from /sys/fs/cgroup/memory/memory.limit_in_bytes

See issue #
2021-10-23 02:54:58 +02:00
Maksim Kita
0b3926950d
Merge pull request #30143 from amosbird/useupstreamreplxx
Use upstream replxx
2021-10-19 17:50:43 +03:00
alexey-milovidov
f4bfed9d3a
Merge pull request #29586 from evillique/log_levels_update
Add log levels updates
2021-10-17 20:54:46 +03:00
alexey-milovidov
e9af03ef52
Merge pull request #30248 from ClickHouse/musl-4
Preparation to build with Musl
2021-10-16 18:44:35 +03:00
Alexey Milovidov
55116ae399 Fix error 2021-10-16 01:57:22 +03:00
Alexey Milovidov
41acc52458 Preparation to build with Musl 2021-10-16 00:17:34 +03:00
Amos Bird
4800749d32
make Ctrl-J to commit 2021-10-14 23:56:28 +08:00
Nikolay Degterinsky
2da43012b6 Add log levels updates 2021-10-14 16:34:30 +03:00
Maksim Kita
04047f76c7 Fixed tests 2021-10-14 00:33:18 +03:00
Maksim Kita
d55561422f Fixed tests 2021-10-14 00:33:18 +03:00
alexey-milovidov
21f3316884
Merge pull request #29933 from ClickHouse/sentry-remove-trash
Remove trash from SentryWriter
2021-10-12 21:14:46 +03:00
Alexey Milovidov
8196f89481 Remove trash from CMake 2021-10-11 06:58:08 +03:00
Alexey Milovidov
af4066c255 Remove printf 2021-10-10 21:54:15 +03:00
Alexey Milovidov
4e6ed5c45c Remove trash from SentryWriter 2021-10-10 04:10:52 +03:00
Anton Popov
199ac31b48
Merge pull request #29683 from myrrc/improvement/tl-to-common
Non-recursive implementation for type list and its functions
2021-10-05 21:49:15 +03:00
Mike Kot
25a62b9f83 Renaming TL to Typelist 2021-10-05 17:22:02 +02:00
Maksim Kita
3834256abf
Merge pull request #29722 from kitaisreal/borrowed-object-pool-condition-variable-notify-fix
BorrowedObjectPool condition variable notify fix
2021-10-04 21:39:59 +03:00
Nikita Mikhaylov
613b814e24
Merge pull request #29595 from CurtizJ/generalize-update-permutation
Generalize code in `IColumn::updatePermutation`
2021-10-04 20:36:57 +03:00
Nikita Mikhaylov
b31d11478b
Merge pull request #29680 from azat/defines
Cleanup common defines
2021-10-04 20:13:29 +03:00
Maksim Kita
26611ba72c BorrowedObjectPool condition variable notify fix 2021-10-04 13:25:44 +03:00
alexey-milovidov
6abb3d4c6d
Merge pull request #29682 from traceon/xcode-13-fix-build
Fix Xcode 13 build
2021-10-04 02:34:43 +03:00
Sergei Semin
8e81732bb1 fix rename of path for iostream_debug_helpers.h 2021-10-04 00:29:00 +03:00
Mike Kot
8c8bada56e Non-recursive implementation for TL and its functions 2021-10-03 18:02:04 +02:00
Denis Glazachev
ca7b69b0f3 Manipulate with -Wreserved-identifier only if HAS_RESERVED_IDENTIFIER has been detected 2021-10-03 17:42:36 +04:00
Azat Khuzhin
d0fc26f91a Do not pretend that windows is supported (remove code undef #ifdef _MSC_VER) 2021-10-03 14:42:53 +03:00
Azat Khuzhin
70e1f4d402 Move ASAN_{UN,}POISON_MEMORY_REGION to base/defines 2021-10-03 14:34:03 +03:00
Azat Khuzhin
1f5d377aa6 Move comments about aliases (inline/noinline and similar) into proper place
Fixes: 571d0d541c ("Improve CCTZ contrib (#9687)")
2021-10-03 14:34:03 +03:00
Mike Kot
38232c286d fixing paths 2021-10-02 21:45:05 +02:00
Mike Kot
65e6e211b4 Merge remote-tracking branch 'upstream/master' into improvement/fn-traits 2021-10-02 21:37:50 +02:00
Anton Popov
1f10246a10 Merge remote-tracking branch 'upstream/master' into HEAD 2021-10-02 22:33:27 +03:00
Alexey Milovidov
2ad5dbdfe8 Rename "common" to "base" 2021-10-02 11:30:38 +03:00
Alexey Milovidov
fe6b7c77c7 Rename "common" to "base" 2021-10-02 10:13:14 +03:00
Azat Khuzhin
cab0551c5b Add ability to compile using newer version fo glibc w/o using new symbols
In glibc 2.32 new version of some symbols had been added [1]:

    $ nm -D clickhouse | fgrep -e @GLIBC_2.32
                     U pthread_getattr_np@GLIBC_2.32
                     U pthread_sigmask@GLIBC_2.32

  [1]: https://www.spinics.net/lists/fedora-devel/msg273044.html

Right now ubuntu 20.04 is used as official image for building
ClickHouse, however once it will be switched someone may not be happy
with that fact that he/she cannot use official binaries anymore because
they have glibc < 2.32.

To avoid this dependency, let's force previous version of those
symbols from glibc.

Note, that I've tested this by compiling with glibc 2.32 and verifying
that output ELF does not have @GLIBC_2.32 symbols and also running that
binary inside ubuntu:20.04 image (that has glibc 2.31).

v1: -Wl,--wrap
v2: -Wl,--defsym
v3: -include
v4: fix versioning for aarch64
2021-10-01 21:01:59 +03:00
Mike Kot
e8625e85a4 Fixing integration tests 2021-10-01 19:13:14 +02:00
Mike Kot
38b02b121a Merge remote-tracking branch 'upstream/master' into improvement/fn-traits 2021-10-01 16:55:28 +02:00
Mike Kot
5e560ff9d7 fix 2021-10-01 16:55:01 +02:00
Anton Popov
515cc74530 generalize code in IColumn::updatePermutation 2021-10-01 00:11:54 +03:00
Azat Khuzhin
a4f2663b82 Log queries to external databases (since they may be rewriten)
By rewritten means that some expression from WHERE can be removed, yes
there is external_table_strict_query, but sometimes it is too strict.
2021-09-29 21:56:28 +03:00