Skip to main content
Edit this page

Используемые сторонние библиотеки

Список сторонних библиотек:

БиблиотекаТип лицензии
abseil-cppApache
AMQP-CPPApache
arrowApache
avroApache
awsApache
aws-c-commonApache
aws-c-event-streamApache
aws-checksumsApache
base64BSD 2-clause
boostBoost
boringsslBSD
brotliMIT
capnprotoMIT
cassandraApache
cctzApache
cityhash102MIT
cppkafkaBSD 2-clause
croaringApache
curlApache
cyrus-saslBSD 2-clause
double-conversionBSD 3-clause
dragonboxApache
fast_floatApache
fastopsMIT
flatbuffersApache
fmtlibUnknown
gcemApache
googletestBSD 3-clause
grpcApache
h3Apache
hyperscanBoost
icuPublic Domain
icudataPublic Domain
jemallocBSD 2-clause
krb5MIT
libc-headersLGPL
libcpuidBSD 2-clause
libcxxApache
libcxxabiApache
libdividezLib
libfarmhashMIT
libgsaslLGPL
libhdfs3Apache
libmetrohashApache
libpqUnknown
libpqxxBSD 3-clause
librdkafkaMIT
libunwindApache
libuvBSD
llvmApache
lz4BSD
mariadb-connector-cLGPL
miniselectBoost
msgpack-cBoost
murmurhashPublic Domain
NuRaftApache
openldapUnknown
orcApache
pocoBoost
protobufBSD 3-clause
rapidjsonMIT
re2BSD 3-clause
replxxBSD 3-clause
rocksdbBSD 3-clause
s2geometryApache
sentry-nativeMIT
simdjsonApache
snappyPublic Domain
sparsehash-c11BSD 3-clause
statsApache
thriftApache
unixodbcLGPL
xzPublic Domain
zlib-ngzLib
zstdBSD

Список всех сторонних библиотек можно получить с помощью запроса:

SELECT library_name, license_type, license_path FROM system.licenses ORDER BY library_name COLLATE 'en';

Пример

Рекомендации по добавлению сторонних библиотек и поддержанию в них пользовательских изменений

  1. Весь внешний сторонний код должен находиться в отдельных папках внутри папки contrib репозитория ClickHouse. По возможности, используйте сабмодули Git.
  2. Клонируйте официальный репозиторий Clickhouse-extras. Используйте официальные репозитории GitHub, если они доступны.
  3. Создавайте новую ветку на основе той ветки, которую вы хотите интегрировать: например, master -> clickhouse/master или release/vX.Y.Z -> clickhouse/release/vX.Y.Z.
  4. Все копии Clickhouse-extras можно автоматически синхронизировать с удаленными репозиториями. Ветки clickhouse/... останутся незатронутыми, поскольку скорее всего никто не будет использовать этот шаблон именования в своих репозиториях.
  5. Добавьте сабмодули в папку contrib репозитория ClickHouse, на который ссылаются клонированные репозитории. Настройте сабмодули для отслеживания изменений в соответствующих ветках clickhouse/....
  6. Каждый раз, когда необходимо внести изменения в код библиотеки, следует создавать отдельную ветку, например clickhouse/my-fix. Затем эта ветка должна быть слита (merge) в ветку, отслеживаемую сабмодулем, например, в clickhouse/master или clickhouse/release/vX.Y.Z.
  7. Не добавляйте код в клоны репозитория Clickhouse-extras, если имя ветки не соответствует шаблону clickhouse/....
  8. Всегда вносите изменения с учетом того, что они попадут в официальный репозиторий. После того как PR будет влит из (ветки разработки/исправлений) вашего личного клона репозитория в Clickhouse-extras, и сабмодуль будет добавлен в репозиторий ClickHouse, рекомендуется сделать еще один PR из (ветки разработки/исправлений) репозитория Clickhouse-extras в официальный репозиторий библиотеки. Таким образом будут решены следующие задачи: 1) публикуемый код может быть использован многократно и будет иметь более высокую ценность; 2) другие пользователи также смогут использовать его в своих целях; 3) поддержкой кода будут заниматься не только разработчики ClickHouse.
  9. Чтобы сабмодуль начал использовать новый код из исходной ветки (например, master), сначала следует аккуратно выполнить слияние (master -> clickhouse/master), и только после этого изменения могут быть добавлены в основной репозиторий ClickHouse. Это связано с тем, что в отслеживаемую ветку (например, clickhouse/master) могут быть внесены изменения, и поэтому ветка может отличаться от первоисточника (master).