Используемые сторонние библиотеки
Список сторонних библиотек:
| Библиотека | Тип лицензии |
|---|---|
| abseil-cpp | Apache |
| AMQP-CPP | Apache |
| arrow | Apache |
| avro | Apache |
| aws | Apache |
| aws-c-common | Apache |
| aws-c-event-stream | Apache |
| aws-checksums | Apache |
| base64 | BSD 2-clause |
| boost | Boost |
| boringssl | BSD |
| brotli | MIT |
| capnproto | MIT |
| cassandra | Apache |
| cctz | Apache |
| cityhash102 | MIT |
| cppkafka | BSD 2-clause |
| croaring | Apache |
| curl | Apache |
| cyrus-sasl | BSD 2-clause |
| double-conversion | BSD 3-clause |
| dragonbox | Apache |
| fast_float | Apache |
| fastops | MIT |
| flatbuffers | Apache |
| fmtlib | Unknown |
| gcem | Apache |
| googletest | BSD 3-clause |
| grpc | Apache |
| h3 | Apache |
| hyperscan | Boost |
| icu | Public Domain |
| icudata | Public Domain |
| jemalloc | BSD 2-clause |
| krb5 | MIT |
| libc-headers | LGPL |
| libcpuid | BSD 2-clause |
| libcxx | Apache |
| libcxxabi | Apache |
| libdivide | zLib |
| libfarmhash | MIT |
| libgsasl | LGPL |
| libhdfs3 | Apache |
| libmetrohash | Apache |
| libpq | Unknown |
| libpqxx | BSD 3-clause |
| librdkafka | MIT |
| libunwind | Apache |
| libuv | BSD |
| llvm | Apache |
| lz4 | BSD |
| mariadb-connector-c | LGPL |
| miniselect | Boost |
| msgpack-c | Boost |
| murmurhash | Public Domain |
| NuRaft | Apache |
| openldap | Unknown |
| orc | Apache |
| poco | Boost |
| protobuf | BSD 3-clause |
| rapidjson | MIT |
| re2 | BSD 3-clause |
| replxx | BSD 3-clause |
| rocksdb | BSD 3-clause |
| s2geometry | Apache |
| sentry-native | MIT |
| simdjson | Apache |
| snappy | Public Domain |
| sparsehash-c11 | BSD 3-clause |
| stats | Apache |
| thrift | Apache |
| unixodbc | LGPL |
| xz | Public Domain |
| zlib-ng | zLib |
| zstd | BSD |
Список всех сторонних библиотек можно получить с помощью запроса:
Рекомендации по добавлению сторонних библиотек и поддержанию в них пользовательских изменений
- Весь внешний сторонний код должен находиться в отдельных папках внутри папки
contribрепозитория ClickHouse. По возможности, используйте сабмодули Git. - Клонируйте официальный репозиторий Clickhouse-extras. Используйте официальные репозитории GitHub, если они доступны.
- Создавайте новую ветку на основе той ветки, которую вы хотите интегрировать: например,
master->clickhouse/masterилиrelease/vX.Y.Z->clickhouse/release/vX.Y.Z. - Все копии Clickhouse-extras можно автоматически синхронизировать с удаленными репозиториями. Ветки
clickhouse/...останутся незатронутыми, поскольку скорее всего никто не будет использовать этот шаблон именования в своих репозиториях. - Добавьте сабмодули в папку
contribрепозитория ClickHouse, на который ссылаются клонированные репозитории. Настройте сабмодули для отслеживания изменений в соответствующих веткахclickhouse/.... - Каждый раз, когда необходимо внести изменения в код библиотеки, следует создавать отдельную ветку, например
clickhouse/my-fix. Затем эта ветка должна быть слита (merge) в ветку, отслеживаемую сабмодулем, например, вclickhouse/masterилиclickhouse/release/vX.Y.Z. - Не добавляйте код в клоны репозитория Clickhouse-extras, если имя ветки не соответствует шаблону
clickhouse/.... - Всегда вносите изменения с учетом того, что они попадут в официальный репозиторий. После того как PR будет влит из (ветки разработки/исправлений) вашего личного клона репозитория в Clickhouse-extras, и сабмодуль будет добавлен в репозиторий ClickHouse, рекомендуется сделать еще один PR из (ветки разработки/исправлений) репозитория Clickhouse-extras в официальный репозиторий библиотеки. Таким образом будут решены следующие задачи: 1) публикуемый код может быть использован многократно и будет иметь более высокую ценность; 2) другие пользователи также смогут использовать его в своих целях; 3) поддержкой кода будут заниматься не только разработчики ClickHouse.
- Чтобы сабмодуль начал использовать новый код из исходной ветки (например,
master), сначала следует аккуратно выполнить слияние (master->clickhouse/master), и только после этого изменения могут быть добавлены в основной репозиторий ClickHouse. Это связано с тем, что в отслеживаемую ветку (например,clickhouse/master) могут быть внесены изменения, и поэтому ветка может отличаться от первоисточника (master).