mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-27 01:51:59 +00:00
6.8 KiB
6.8 KiB
toc_priority | toc_title |
---|---|
70 | Third-Party Libraries Used |
Third-Party Libraries Used
The list of third-party libraries can be obtained by the following query:
SELECT library_name, license_type, license_path FROM system.licenses ORDER BY library_name COLLATE 'en';
library_name | license_type | license_path |
---|---|---|
abseil-cpp | Apache | /contrib/abseil-cpp/LICENSE |
AMQP-CPP | Apache | /contrib/AMQP-CPP/LICENSE |
arrow | Apache | /contrib/arrow/LICENSE.txt |
avro | Apache | /contrib/avro/LICENSE.txt |
aws | Apache | /contrib/aws/LICENSE.txt |
aws-c-common | Apache | /contrib/aws-c-common/LICENSE |
aws-c-event-stream | Apache | /contrib/aws-c-event-stream/LICENSE |
aws-checksums | Apache | /contrib/aws-checksums/LICENSE |
base64 | BSD 2-clause | /contrib/base64/LICENSE |
boost | Boost | /contrib/boost/LICENSE_1_0.txt |
boringssl | BSD | /contrib/boringssl/LICENSE |
brotli | MIT | /contrib/brotli/LICENSE |
capnproto | MIT | /contrib/capnproto/LICENSE |
cassandra | Apache | /contrib/cassandra/LICENSE.txt |
cctz | Apache | /contrib/cctz/LICENSE.txt |
cityhash102 | MIT | /contrib/cityhash102/COPYING |
cppkafka | BSD 2-clause | /contrib/cppkafka/LICENSE |
croaring | Apache | /contrib/croaring/LICENSE |
curl | Apache | /contrib/curl/docs/LICENSE-MIXING.md |
cyrus-sasl | BSD 2-clause | /contrib/cyrus-sasl/COPYING |
double-conversion | BSD 3-clause | /contrib/double-conversion/LICENSE |
dragonbox | Apache | /contrib/dragonbox/LICENSE-Apache2-LLVM |
fast_float | Apache | /contrib/fast_float/LICENSE |
fastops | MIT | /contrib/fastops/LICENSE |
flatbuffers | Apache | /contrib/flatbuffers/LICENSE.txt |
fmtlib | Unknown | /contrib/fmtlib/LICENSE.rst |
gcem | Apache | /contrib/gcem/LICENSE |
googletest | BSD 3-clause | /contrib/googletest/LICENSE |
grpc | Apache | /contrib/grpc/LICENSE |
h3 | Apache | /contrib/h3/LICENSE |
hyperscan | Boost | /contrib/hyperscan/LICENSE |
icu | Public Domain | /contrib/icu/icu4c/LICENSE |
icudata | Public Domain | /contrib/icudata/LICENSE |
jemalloc | BSD 2-clause | /contrib/jemalloc/COPYING |
krb5 | MIT | /contrib/krb5/src/lib/gssapi/LICENSE |
libc-headers | LGPL | /contrib/libc-headers/LICENSE |
libcpuid | BSD 2-clause | /contrib/libcpuid/COPYING |
libcxx | Apache | /contrib/libcxx/LICENSE.TXT |
libcxxabi | Apache | /contrib/libcxxabi/LICENSE.TXT |
libdivide | zLib | /contrib/libdivide/LICENSE.txt |
libfarmhash | MIT | /contrib/libfarmhash/COPYING |
libgsasl | LGPL | /contrib/libgsasl/LICENSE |
libhdfs3 | Apache | /contrib/libhdfs3/LICENSE.txt |
libmetrohash | Apache | /contrib/libmetrohash/LICENSE |
libpq | Unknown | /contrib/libpq/COPYRIGHT |
libpqxx | BSD 3-clause | /contrib/libpqxx/COPYING |
librdkafka | MIT | /contrib/librdkafka/LICENSE.murmur2 |
libunwind | Apache | /contrib/libunwind/LICENSE.TXT |
libuv | BSD | /contrib/libuv/LICENSE |
llvm | Apache | /contrib/llvm/llvm/LICENSE.TXT |
lz4 | BSD | /contrib/lz4/LICENSE |
mariadb-connector-c | LGPL | /contrib/mariadb-connector-c/COPYING.LIB |
miniselect | Boost | /contrib/miniselect/LICENSE_1_0.txt |
msgpack-c | Boost | /contrib/msgpack-c/LICENSE_1_0.txt |
murmurhash | Public Domain | /contrib/murmurhash/LICENSE |
NuRaft | Apache | /contrib/NuRaft/LICENSE |
openldap | Unknown | /contrib/openldap/LICENSE |
orc | Apache | /contrib/orc/LICENSE |
poco | Boost | /contrib/poco/LICENSE |
protobuf | BSD 3-clause | /contrib/protobuf/LICENSE |
rapidjson | MIT | /contrib/rapidjson/bin/jsonschema/LICENSE |
re2 | BSD 3-clause | /contrib/re2/LICENSE |
replxx | BSD 3-clause | /contrib/replxx/LICENSE.md |
rocksdb | BSD 3-clause | /contrib/rocksdb/LICENSE.leveldb |
s2geometry | Apache | /contrib/s2geometry/LICENSE |
sentry-native | MIT | /contrib/sentry-native/LICENSE |
simdjson | Apache | /contrib/simdjson/LICENSE |
snappy | Public Domain | /contrib/snappy/COPYING |
sparsehash-c11 | BSD 3-clause | /contrib/sparsehash-c11/LICENSE |
stats | Apache | /contrib/stats/LICENSE |
thrift | Apache | /contrib/thrift/LICENSE |
unixodbc | LGPL | /contrib/unixodbc/COPYING |
xz | Public Domain | /contrib/xz/COPYING |
zlib-ng | zLib | /contrib/zlib-ng/LICENSE.md |
zstd | BSD | /contrib/zstd/LICENSE |
Guidelines for adding new third-party libraries and maintaining custom changes in them
- All external third-party code should reside in the dedicated directories under
contrib
directory of ClickHouse repo. Prefer Git submodules, when available. - Fork/mirror the official repo in Clickhouse-extras. Prefer official GitHub repos, when available.
- Branch from the branch you want to integrate, e.g.,
master
->clickhouse/master
, orrelease/vX.Y.Z
->clickhouse/release/vX.Y.Z
. - All forks in Clickhouse-extras can be automatically synchronized with upstreams.
clickhouse/...
branches will remain unaffected, since virtually nobody is going to use that naming pattern in their upstream repos. - Add submodules under
contrib
of ClickHouse repo that refer the above forks/mirrors. Set the submodules to track the correspondingclickhouse/...
branches. - Every time the custom changes have to be made in the library code, a dedicated branch should be created, like
clickhouse/my-fix
. Then this branch should be merged into the branch, that is tracked by the submodule, e.g.,clickhouse/master
orclickhouse/release/vX.Y.Z
. - No code should be pushed in any branch of the forks in Clickhouse-extras, whose names do not follow
clickhouse/...
pattern. - Always write the custom changes with the official repo in mind. Once the PR is merged from (a feature/fix branch in) your personal fork into the fork in Clickhouse-extras, and the submodule is bumped in ClickHouse repo, consider opening another PR from (a feature/fix branch in) the fork in Clickhouse-extras to the official repo of the library. This will make sure, that 1) the contribution has more than a single use case and importance, 2) others will also benefit from it, 3) the change will not remain a maintenance burden solely on ClickHouse developers.
- When a submodule needs to start using a newer code from the original branch (e.g.,
master
), and since the custom changes might be merged in the branch it is tracking (e.g.,clickhouse/master
) and so it may diverge from its original counterpart (i.e.,master
), a careful merge should be carried out first, i.e.,master
->clickhouse/master
, and only then the submodule can be bumped in ClickHouse.