mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-21 15:12:02 +00:00
Merge branch 'master' into database_atomic
This commit is contained in:
commit
dd1590830b
@ -228,7 +228,7 @@ else ()
|
||||
set(NOT_UNBUNDLED 1)
|
||||
endif ()
|
||||
|
||||
if (UNBUNDLED OR NOT (OS_LINUX OR OS_DARWIN) OR ARCH_32)
|
||||
if (UNBUNDLED OR NOT (OS_LINUX OR OS_DARWIN))
|
||||
# Using system libs can cause a lot of warnings in includes (on macro expansion).
|
||||
option (WERROR "Enable -Werror compiler option" OFF)
|
||||
else ()
|
||||
@ -251,6 +251,8 @@ if (OS_LINUX)
|
||||
include(cmake/linux/default_libs.cmake)
|
||||
elseif (OS_DARWIN)
|
||||
include(cmake/darwin/default_libs.cmake)
|
||||
elseif (OS_FREEBSD)
|
||||
include(cmake/freebsd/default_libs.cmake)
|
||||
endif ()
|
||||
|
||||
######################################
|
||||
@ -316,7 +318,6 @@ include (cmake/find/poco.cmake)
|
||||
include (cmake/find/lz4.cmake)
|
||||
include (cmake/find/xxhash.cmake)
|
||||
include (cmake/find/sparsehash.cmake)
|
||||
include (cmake/find/execinfo.cmake)
|
||||
include (cmake/find/re2.cmake)
|
||||
include (cmake/find/libgsasl.cmake)
|
||||
include (cmake/find/rdkafka.cmake)
|
||||
|
@ -15,8 +15,6 @@ ClickHouse is an open-source column-oriented database management system that all
|
||||
|
||||
## Upcoming Events
|
||||
|
||||
* [ClickHouse Online Meetup (in Russian)](https://events.yandex.ru/events/click-house-onlajn-vs-03-04-2020) on April 3, 2020.
|
||||
* [Talk on Saint HighLoad++ (online in Russian)](https://www.highload.ru/spb/2020/abstracts/6647) on April 6, 2020.
|
||||
* [ClickHouse in Avito (online in Russian)](https://avitotech.timepad.ru/event/1290051/) on April 9, 2020.
|
||||
* [ClickHouse Workshop in Novosibirsk](https://2020.codefest.ru/lecture/1628) on TBD date.
|
||||
* [Yandex C++ Open-Source Sprints in Moscow](https://events.yandex.ru/events/otkrytyj-kod-v-yandek-28-03-2020) on TBD date.
|
||||
|
@ -4,4 +4,6 @@
|
||||
|
||||
#if defined (OS_DARWIN)
|
||||
# define CLOCK_MONOTONIC_COARSE CLOCK_MONOTONIC
|
||||
#elif defined (OS_FREEBSD)
|
||||
# define CLOCK_MONOTONIC_COARSE CLOCK_MONOTONIC_FAST
|
||||
#endif
|
||||
|
@ -11,7 +11,6 @@ if (CMAKE_LIBRARY_ARCHITECTURE MATCHES "i386")
|
||||
set (ARCH_I386 1)
|
||||
endif ()
|
||||
if ((ARCH_ARM AND NOT ARCH_AARCH64) OR ARCH_I386)
|
||||
set (ARCH_32 1)
|
||||
message (FATAL_ERROR "32bit platforms are not supported")
|
||||
endif ()
|
||||
|
||||
|
@ -1,8 +0,0 @@
|
||||
if (OS_FREEBSD)
|
||||
find_library (EXECINFO_LIBRARY execinfo)
|
||||
find_library (ELF_LIBRARY elf)
|
||||
set (EXECINFO_LIBRARIES ${EXECINFO_LIBRARY} ${ELF_LIBRARY})
|
||||
message (STATUS "Using execinfo: ${EXECINFO_LIBRARIES}")
|
||||
else ()
|
||||
set (EXECINFO_LIBRARIES "")
|
||||
endif ()
|
@ -1,6 +1,4 @@
|
||||
if (NOT ARCH_32)
|
||||
option (USE_INTERNAL_LIBGSASL_LIBRARY "Set to FALSE to use system libgsasl library instead of bundled" ${NOT_UNBUNDLED})
|
||||
endif ()
|
||||
option (USE_INTERNAL_LIBGSASL_LIBRARY "Set to FALSE to use system libgsasl library instead of bundled" ${NOT_UNBUNDLED})
|
||||
|
||||
if (NOT EXISTS "${ClickHouse_SOURCE_DIR}/contrib/libgsasl/src/gsasl.h")
|
||||
if (USE_INTERNAL_LIBGSASL_LIBRARY)
|
||||
@ -16,7 +14,7 @@ if (NOT USE_INTERNAL_LIBGSASL_LIBRARY)
|
||||
endif ()
|
||||
|
||||
if (LIBGSASL_LIBRARY AND LIBGSASL_INCLUDE_DIR)
|
||||
elseif (NOT MISSING_INTERNAL_LIBGSASL_LIBRARY AND NOT ARCH_32)
|
||||
elseif (NOT MISSING_INTERNAL_LIBGSASL_LIBRARY)
|
||||
set (LIBGSASL_INCLUDE_DIR ${ClickHouse_SOURCE_DIR}/contrib/libgsasl/src ${ClickHouse_SOURCE_DIR}/contrib/libgsasl/linux_x86_64/include)
|
||||
set (USE_INTERNAL_LIBGSASL_LIBRARY 1)
|
||||
set (LIBGSASL_LIBRARY libgsasl)
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Freebsd: contrib/cppkafka/include/cppkafka/detail/endianness.h:53:23: error: 'betoh16' was not declared in this scope
|
||||
if (NOT ARCH_ARM AND NOT ARCH_32 AND NOT OS_FREEBSD AND OPENSSL_FOUND)
|
||||
if (NOT ARCH_ARM AND NOT OS_FREEBSD AND OPENSSL_FOUND)
|
||||
option (ENABLE_RDKAFKA "Enable kafka" ${ENABLE_LIBRARIES})
|
||||
endif ()
|
||||
|
||||
|
@ -2,9 +2,7 @@ option(ENABLE_SSL "Enable ssl" ${ENABLE_LIBRARIES})
|
||||
|
||||
if(ENABLE_SSL)
|
||||
|
||||
if(NOT ARCH_32)
|
||||
option(USE_INTERNAL_SSL_LIBRARY "Set to FALSE to use system *ssl library instead of bundled" ${NOT_UNBUNDLED})
|
||||
endif()
|
||||
option(USE_INTERNAL_SSL_LIBRARY "Set to FALSE to use system *ssl library instead of bundled" ${NOT_UNBUNDLED})
|
||||
|
||||
if(NOT EXISTS "${ClickHouse_SOURCE_DIR}/contrib/openssl/README")
|
||||
if(USE_INTERNAL_SSL_LIBRARY)
|
||||
|
@ -1,14 +1,5 @@
|
||||
option (USE_UNWIND "Enable libunwind (better stacktraces)" ${ENABLE_LIBRARIES})
|
||||
|
||||
if (NOT CMAKE_SYSTEM MATCHES "Linux" OR ARCH_ARM OR ARCH_32)
|
||||
set (USE_UNWIND OFF)
|
||||
endif ()
|
||||
|
||||
if (NOT EXISTS "${ClickHouse_SOURCE_DIR}/contrib/libunwind/CMakeLists.txt")
|
||||
message(WARNING "submodule contrib/libunwind is missing. to fix try run: \n git submodule update --init --recursive")
|
||||
set (USE_UNWIND OFF)
|
||||
endif ()
|
||||
|
||||
if (USE_UNWIND)
|
||||
add_subdirectory(contrib/libunwind-cmake)
|
||||
set (UNWIND_LIBRARIES unwind)
|
||||
|
@ -1,6 +1,4 @@
|
||||
if (NOT OS_FREEBSD AND NOT ARCH_32)
|
||||
option (USE_INTERNAL_ZLIB_LIBRARY "Set to FALSE to use system zlib library instead of bundled" ${NOT_UNBUNDLED})
|
||||
endif ()
|
||||
option (USE_INTERNAL_ZLIB_LIBRARY "Set to FALSE to use system zlib library instead of bundled" ${NOT_UNBUNDLED})
|
||||
|
||||
if (NOT MSVC)
|
||||
set (INTERNAL_ZLIB_NAME "zlib-ng" CACHE INTERNAL "")
|
||||
|
40
cmake/freebsd/default_libs.cmake
Normal file
40
cmake/freebsd/default_libs.cmake
Normal file
@ -0,0 +1,40 @@
|
||||
set (DEFAULT_LIBS "-nodefaultlibs")
|
||||
|
||||
if (NOT COMPILER_CLANG)
|
||||
message (FATAL_ERROR "FreeBSD build is supported only for Clang")
|
||||
endif ()
|
||||
|
||||
execute_process (COMMAND ${CMAKE_CXX_COMPILER} --print-file-name=libclang_rt.builtins-${CMAKE_SYSTEM_PROCESSOR}.a OUTPUT_VARIABLE BUILTINS_LIBRARY OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
set (DEFAULT_LIBS "${DEFAULT_LIBS} ${BUILTINS_LIBRARY} ${COVERAGE_OPTION} -lc -lm -lrt -lpthread")
|
||||
|
||||
message(STATUS "Default libraries: ${DEFAULT_LIBS}")
|
||||
|
||||
set(CMAKE_CXX_STANDARD_LIBRARIES ${DEFAULT_LIBS})
|
||||
set(CMAKE_C_STANDARD_LIBRARIES ${DEFAULT_LIBS})
|
||||
|
||||
# Global libraries
|
||||
|
||||
add_library(global-libs INTERFACE)
|
||||
|
||||
# Unfortunately '-pthread' doesn't work with '-nodefaultlibs'.
|
||||
# Just make sure we have pthreads at all.
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
include (cmake/find/unwind.cmake)
|
||||
include (cmake/find/cxx.cmake)
|
||||
|
||||
add_library(global-group INTERFACE)
|
||||
|
||||
target_link_libraries(global-group INTERFACE
|
||||
$<TARGET_PROPERTY:global-libs,INTERFACE_LINK_LIBRARIES>
|
||||
)
|
||||
|
||||
link_libraries(global-group)
|
||||
|
||||
# FIXME: remove when all contribs will get custom cmake lists
|
||||
install(
|
||||
TARGETS global-group global-libs
|
||||
EXPORT global
|
||||
)
|
19
cmake/freebsd/toolchain-x86_64.cmake
Normal file
19
cmake/freebsd/toolchain-x86_64.cmake
Normal file
@ -0,0 +1,19 @@
|
||||
set (CMAKE_SYSTEM_NAME "FreeBSD")
|
||||
set (CMAKE_SYSTEM_PROCESSOR "x86_64")
|
||||
set (CMAKE_C_COMPILER_TARGET "x86_64-pc-freebsd12.1")
|
||||
set (CMAKE_CXX_COMPILER_TARGET "x86_64-pc-freebsd12.1")
|
||||
set (CMAKE_ASM_COMPILER_TARGET "x86_64-pc-freebsd12.1")
|
||||
set (CMAKE_SYSROOT "${CMAKE_CURRENT_LIST_DIR}/../toolchain/freebsd-x86_64")
|
||||
|
||||
set (CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) # disable linkage check - it doesn't work in CMake
|
||||
|
||||
set (LINKER_NAME "lld" CACHE STRING "" FORCE)
|
||||
|
||||
set (CMAKE_EXE_LINKER_FLAGS_INIT "-fuse-ld=lld")
|
||||
set (CMAKE_SHARED_LINKER_FLAGS_INIT "-fuse-ld=lld")
|
||||
|
||||
set (HAS_PRE_1970_EXITCODE "0" CACHE STRING "Result from TRY_RUN" FORCE)
|
||||
set (HAS_PRE_1970_EXITCODE__TRYRUN_OUTPUT "" CACHE STRING "Output from TRY_RUN" FORCE)
|
||||
|
||||
set (HAS_POST_2038_EXITCODE "0" CACHE STRING "Result from TRY_RUN" FORCE)
|
||||
set (HAS_POST_2038_EXITCODE__TRYRUN_OUTPUT "" CACHE STRING "Output from TRY_RUN" FORCE)
|
@ -24,6 +24,9 @@ if (CMAKE_CROSSCOMPILING)
|
||||
set (ENABLE_PARQUET OFF CACHE INTERNAL "")
|
||||
set (ENABLE_MYSQL OFF CACHE INTERNAL "")
|
||||
endif ()
|
||||
elseif (OS_FREEBSD)
|
||||
# FIXME: broken dependencies
|
||||
set (ENABLE_PROTOBUF OFF CACHE INTERNAL "")
|
||||
else ()
|
||||
message (FATAL_ERROR "Trying to cross-compile to unsupported system: ${CMAKE_SYSTEM_NAME}!")
|
||||
endif ()
|
||||
|
@ -65,5 +65,8 @@ RUN wget https://github.com/phracker/MacOSX-SDKs/releases/download/10.14-beta4/M
|
||||
# It contains all required headers and libraries. Note that it's named as "gcc" but actually we are using clang for cross compiling.
|
||||
RUN wget "https://developer.arm.com/-/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz?revision=2e88a73f-d233-4f96-b1f4-d8b36e9bb0b9&la=en" -O gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz
|
||||
|
||||
# Download toolchain for FreeBSD 12.1
|
||||
RUN wget https://clickhouse-datasets.s3.yandex.net/toolchains/toolchains/freebsd-12.1-toolchain.tar.xz
|
||||
|
||||
COPY build.sh /
|
||||
CMD ["/bin/bash", "/build.sh"]
|
||||
|
@ -8,6 +8,9 @@ tar xJf MacOSX10.14.sdk.tar.xz -C build/cmake/toolchain/darwin-x86_64 --strip-co
|
||||
mkdir -p build/cmake/toolchain/linux-aarch64
|
||||
tar xJf gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz -C build/cmake/toolchain/linux-aarch64 --strip-components=1
|
||||
|
||||
mkdir -p build/cmake/toolchain/freebsd-x86_64
|
||||
tar xJf freebsd-12.1-toolchain.tar.xz -C build/cmake/toolchain/freebsd-x86_64 --strip-components=1
|
||||
|
||||
mkdir -p build/build_docker
|
||||
cd build/build_docker
|
||||
ccache --show-stats ||:
|
||||
|
@ -107,6 +107,7 @@ def parse_env_variables(build_type, compiler, sanitizer, package_type, image_typ
|
||||
CLANG_PREFIX = "clang"
|
||||
DARWIN_SUFFIX = "-darwin"
|
||||
ARM_SUFFIX = "-aarch64"
|
||||
FREEBSD_SUFFIX = "-freebsd"
|
||||
|
||||
result = []
|
||||
cmake_flags = ['$CMAKE_FLAGS', '-DADD_GDB_INDEX_FOR_GOLD=1']
|
||||
@ -114,7 +115,8 @@ def parse_env_variables(build_type, compiler, sanitizer, package_type, image_typ
|
||||
is_clang = compiler.startswith(CLANG_PREFIX)
|
||||
is_cross_darwin = compiler.endswith(DARWIN_SUFFIX)
|
||||
is_cross_arm = compiler.endswith(ARM_SUFFIX)
|
||||
is_cross_compile = is_cross_darwin or is_cross_arm
|
||||
is_cross_freebsd = compiler.endswith(FREEBSD_SUFFIX)
|
||||
is_cross_compile = is_cross_darwin or is_cross_arm or is_cross_freebsd
|
||||
|
||||
# Explicitly use LLD with Clang by default.
|
||||
# Don't force linker for cross-compilation.
|
||||
@ -131,6 +133,9 @@ def parse_env_variables(build_type, compiler, sanitizer, package_type, image_typ
|
||||
elif is_cross_arm:
|
||||
cc = compiler[:-len(ARM_SUFFIX)]
|
||||
cmake_flags.append("-DCMAKE_TOOLCHAIN_FILE=/build/cmake/linux/toolchain-aarch64.cmake")
|
||||
elif is_cross_freebsd:
|
||||
cc = compiler[:-len(FREEBSD_SUFFIX)]
|
||||
cmake_flags.append("-DCMAKE_TOOLCHAIN_FILE=/build/cmake/freebsd/toolchain-x86_64.cmake")
|
||||
else:
|
||||
cc = compiler
|
||||
|
||||
@ -209,7 +214,7 @@ if __name__ == "__main__":
|
||||
parser.add_argument("--clickhouse-repo-path", default="../../")
|
||||
parser.add_argument("--output-dir", required=True)
|
||||
parser.add_argument("--build-type", choices=("debug", ""), default="")
|
||||
parser.add_argument("--compiler", choices=("clang-8", "clang-8-darwin", "clang-8-aarch64", "gcc-8", "gcc-9", "clang-9"), default="gcc-8")
|
||||
parser.add_argument("--compiler", choices=("clang-8", "clang-8-darwin", "clang-9-aarch64", "clang-9-freebsd", "gcc-8", "gcc-9", "clang-9"), default="gcc-8")
|
||||
parser.add_argument("--sanitizer", choices=("address", "thread", "memory", "undefined", ""), default="")
|
||||
parser.add_argument("--unbundled", action="store_true")
|
||||
parser.add_argument("--split-binary", action="store_true")
|
||||
|
@ -148,7 +148,7 @@ function run_tests
|
||||
|
||||
TIMEFORMAT=$(printf "$test_name\t%%3R\t%%3U\t%%3S\n")
|
||||
# the grep is to filter out set -x output and keep only time output
|
||||
{ time "$script_dir/perf.py" "$test" > "$test_name-raw.tsv" 2> "$test_name-err.log" ; } 2>&1 >/dev/null | grep -v ^+ >> "wall-clock-times.tsv" || continue
|
||||
{ time "$script_dir/perf.py" --host localhost localhost --port 9001 9002 -- "$test" > "$test_name-raw.tsv" 2> "$test_name-err.log" ; } 2>&1 >/dev/null | grep -v ^+ >> "wall-clock-times.tsv" || continue
|
||||
|
||||
# The test completed with zero status, so we treat stderr as warnings
|
||||
mv "$test_name-err.log" "$test_name-warn.log"
|
||||
|
@ -23,8 +23,8 @@ report_stage_end('start')
|
||||
parser = argparse.ArgumentParser(description='Run performance test.')
|
||||
# Explicitly decode files as UTF-8 because sometimes we have Russian characters in queries, and LANG=C is set.
|
||||
parser.add_argument('file', metavar='FILE', type=argparse.FileType('r', encoding='utf-8'), nargs=1, help='test description file')
|
||||
parser.add_argument('--host', nargs='*', default=['127.0.0.1', '127.0.0.1'], help="Server hostname. Parallel to '--port'.")
|
||||
parser.add_argument('--port', nargs='*', default=[9001, 9002], help="Server port. Parallel to '--host'.")
|
||||
parser.add_argument('--host', nargs='*', default=['localhost'], help="Server hostname(s). Corresponds to '--port' options.")
|
||||
parser.add_argument('--port', nargs='*', default=[9000], help="Server port(s). Corresponds to '--host' options.")
|
||||
parser.add_argument('--runs', type=int, default=int(os.environ.get('CHPC_RUNS', 7)), help='Number of query runs per server. Defaults to CHPC_RUNS environment variable.')
|
||||
parser.add_argument('--no-long', type=bool, default=True, help='Skip the tests tagged as long.')
|
||||
args = parser.parse_args()
|
||||
|
@ -62,15 +62,18 @@ CMD dpkg -i package_folder/clickhouse-common-static_*.deb; \
|
||||
ln -s /usr/share/clickhouse-test/config/query_masking_rules.xml /etc/clickhouse-server/config.d/; \
|
||||
ln -s /usr/share/clickhouse-test/config/log_queries.xml /etc/clickhouse-server/users.d/; \
|
||||
ln -s /usr/share/clickhouse-test/config/readonly.xml /etc/clickhouse-server/users.d/; \
|
||||
ln -s /usr/share/clickhouse-test/config/access_management.xml /etc/clickhouse-server/users.d/; \
|
||||
ln -s /usr/share/clickhouse-test/config/ints_dictionary.xml /etc/clickhouse-server/; \
|
||||
ln -s /usr/share/clickhouse-test/config/strings_dictionary.xml /etc/clickhouse-server/; \
|
||||
ln -s /usr/share/clickhouse-test/config/decimals_dictionary.xml /etc/clickhouse-server/; \
|
||||
ln -s /usr/share/clickhouse-test/config/macros.xml /etc/clickhouse-server/config.d/; \
|
||||
ln -s /usr/share/clickhouse-test/config/disks.xml /etc/clickhouse-server/config.d/; \
|
||||
ln -s /usr/share/clickhouse-test/config/secure_ports.xml /etc/clickhouse-server/config.d/; \
|
||||
ln -s /usr/share/clickhouse-test/config/clusters.xml /etc/clickhouse-server/config.d/; \
|
||||
ln -s /usr/share/clickhouse-test/config/server.key /etc/clickhouse-server/; \
|
||||
ln -s /usr/share/clickhouse-test/config/server.crt /etc/clickhouse-server/; \
|
||||
ln -s /usr/share/clickhouse-test/config/dhparam.pem /etc/clickhouse-server/; \
|
||||
if [ -n $USE_POLYMORPHIC_PARTS ] && [ $USE_POLYMORPHIC_PARTS -eq 1 ]; then ln -s /usr/share/clickhouse-test/config/polymorphic_parts.xml /etc/clickhouse-server/config.d/; fi; \
|
||||
ln -sf /usr/share/clickhouse-test/config/client_config.xml /etc/clickhouse-client/config.xml; \
|
||||
service zookeeper start; sleep 5; \
|
||||
service clickhouse-server start && sleep 5 && clickhouse-test --testname --shard --zookeeper $ADDITIONAL_OPTIONS $SKIP_TESTS_OPTION 2>&1 | ts '%Y-%m-%d %H:%M:%S' | tee test_output/test_result.txt
|
||||
|
@ -42,12 +42,14 @@ ln -s /usr/share/clickhouse-test/config/zookeeper.xml /etc/clickhouse-server/con
|
||||
ln -s /usr/share/clickhouse-test/config/query_masking_rules.xml /etc/clickhouse-server/config.d/; \
|
||||
ln -s /usr/share/clickhouse-test/config/log_queries.xml /etc/clickhouse-server/users.d/; \
|
||||
ln -s /usr/share/clickhouse-test/config/readonly.xml /etc/clickhouse-server/users.d/; \
|
||||
ln -s /usr/share/clickhouse-test/config/access_management.xml /etc/clickhouse-server/users.d/; \
|
||||
ln -s /usr/share/clickhouse-test/config/ints_dictionary.xml /etc/clickhouse-server/; \
|
||||
ln -s /usr/share/clickhouse-test/config/strings_dictionary.xml /etc/clickhouse-server/; \
|
||||
ln -s /usr/share/clickhouse-test/config/decimals_dictionary.xml /etc/clickhouse-server/; \
|
||||
ln -s /usr/share/clickhouse-test/config/macros.xml /etc/clickhouse-server/config.d/; \
|
||||
ln -s /usr/share/clickhouse-test/config/disks.xml /etc/clickhouse-server/config.d/; \
|
||||
ln -s /usr/share/clickhouse-test/config/secure_ports.xml /etc/clickhouse-server/config.d/; \
|
||||
ln -s /usr/share/clickhouse-test/config/clusters.xml /etc/clickhouse-server/config.d/; \
|
||||
ln -s /usr/share/clickhouse-test/config/server.key /etc/clickhouse-server/; \
|
||||
ln -s /usr/share/clickhouse-test/config/server.crt /etc/clickhouse-server/; \
|
||||
ln -s /usr/share/clickhouse-test/config/dhparam.pem /etc/clickhouse-server/; \
|
||||
|
@ -1,5 +1,7 @@
|
||||
---
|
||||
toc_folder_title: Commercial
|
||||
toc_priority: 70
|
||||
toc_title: Commercial
|
||||
---
|
||||
|
||||
|
||||
|
@ -41,7 +41,7 @@ Various functions on columns can be implemented in a generic, non-efficient way
|
||||
|
||||
## Block {#block}
|
||||
|
||||
A `Block` is a container that represents a subset (chunk) of a table in memory. It is just a set of triples: `(IColumn, IDataType, column name)`. During query execution, data is processed by `Block`s. If we have a `Block`, we have data (in the `IColumn` object), we have information about its type (in `IDataType`) that tells us how to deal with that column, and we have the column name. It could be either the original column name from the table or some artificial name assigned for getting temporary results of calculations.
|
||||
A `Block` is a container that represents a subset (chunk) of a table in memory. It is just a set of triples: `(IColumn, IDataType, column name)`. During query execution, data is processed by `Block`s. If we have a `Block`, we have data (in the `IColumn` object), we have information about its type (in `IDataType`) that tells us how to deal with that column, and we have the column name. It could be either the original column name from the table or some artificial name assigned for getting temporary results of calculations.
|
||||
|
||||
When we calculate some function over columns in a block, we add another column with its result to the block, and we don’t touch columns for arguments of the function because operations are immutable. Later, unneeded columns can be removed from the block, but not modified. It is convenient for the elimination of common subexpressions.
|
||||
|
||||
@ -77,7 +77,7 @@ For byte-oriented input/output, there are `ReadBuffer` and `WriteBuffer` abstrac
|
||||
|
||||
Implementations of `ReadBuffer`/`WriteBuffer` are used for working with files and file descriptors and network sockets, for implementing compression (`CompressedWriteBuffer` is initialized with another WriteBuffer and performs compression before writing data to it), and for other purposes – the names `ConcatReadBuffer`, `LimitReadBuffer`, and `HashingWriteBuffer` speak for themselves.
|
||||
|
||||
Read/WriteBuffers only deal with bytes. There are functions from `ReadHelpers` and `WriteHelpers` header files to help with formatting input/output. For example, there are helpers to write a number in decimal format.
|
||||
Read/WriteBuffers only deal with bytes. There are functions from `ReadHelpers` and `WriteHelpers` header files to help with formatting input/output. For example, there are helpers to write a number in decimal format.
|
||||
|
||||
Let’s look at what happens when you want to write a result set in `JSON` format to stdout. You have a result set ready to be fetched from `IBlockInputStream`. You create `WriteBufferFromFileDescriptor(STDOUT_FILENO)` to write bytes to stdout. You create `JSONRowOutputStream`, initialized with that `WriteBuffer`, to write rows in `JSON` to stdout. You create `BlockOutputStreamFromRowOutputStream` on top of it, to represent it as `IBlockOutputStream`. Then you call `copyData` to transfer data from `IBlockInputStream` to `IBlockOutputStream`, and everything works. Internally, `JSONRowOutputStream` will write various JSON delimiters and call the `IDataType::serializeTextJSON` method with a reference to `IColumn` and the row number as arguments. Consequently, `IDataType::serializeTextJSON` will call a method from `WriteHelpers.h`: for example, `writeText` for numeric types and `writeJSONString` for `DataTypeString`.
|
||||
|
||||
@ -155,7 +155,7 @@ The server initializes the `Context` class with the necessary environment for qu
|
||||
We maintain full backward and forward compatibility for the server TCP protocol: old clients can talk to new servers, and new clients can talk to old servers. But we don’t want to maintain it eternally, and we are removing support for old versions after about one year.
|
||||
|
||||
!!! note "Note"
|
||||
For most external applications, we recommend using the HTTP interface because it is simple and easy to use. The TCP protocol is more tightly linked to internal data structures: it uses an internal format for passing blocks of data, and it uses custom framing for compressed data. We haven’t released a C library for that protocol because it requires linking most of the ClickHouse codebase, which is not practical.
|
||||
For most external applications, we recommend using the HTTP interface because it is simple and easy to use. The TCP protocol is more tightly linked to internal data structures: it uses an internal format for passing blocks of data, and it uses custom framing for compressed data. We haven’t released a C library for that protocol because it requires linking most of the ClickHouse codebase, which is not practical.
|
||||
|
||||
## Distributed Query Execution {#distributed-query-execution}
|
||||
|
||||
|
@ -3,7 +3,7 @@ toc_priority: 67
|
||||
toc_title: How to Build ClickHouse on Linux for AARCH64 (ARM64)
|
||||
---
|
||||
|
||||
# How to Build ClickHouse on Linux for AARCH64 (ARM64) architecture {#how-to-build-clickhouse-on-linux-for-aarch64-arm64-architecture}
|
||||
# How to Build ClickHouse on Linux for AARCH64 (ARM64) Architecture {#how-to-build-clickhouse-on-linux-for-aarch64-arm64-architecture}
|
||||
|
||||
This is for the case when you have Linux machine and want to use it to build `clickhouse` binary that will run on another Linux machine with AARCH64 CPU architecture. This is intended for continuous integration checks that run on Linux servers.
|
||||
|
||||
|
@ -6,7 +6,7 @@ toc_title: Third-Party Libraries Used
|
||||
# Third-Party Libraries Used {#third-party-libraries-used}
|
||||
|
||||
| Library | License |
|
||||
|-------------|--------------------------------------------------------------------------------------|
|
||||
|---------------------|----------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| base64 | [BSD 2-Clause License](https://github.com/aklomp/base64/blob/a27c565d1b6c676beaf297fe503c4518185666f7/LICENSE) |
|
||||
| boost | [Boost Software License 1.0](https://github.com/ClickHouse-Extras/boost-extra/blob/6883b40449f378019aec792f9983ce3afc7ff16e/LICENSE_1_0.txt) |
|
||||
| brotli | [MIT](https://github.com/google/brotli/blob/master/LICENSE) |
|
||||
|
@ -5,15 +5,15 @@ toc_title: The Beginner ClickHouse Developer Instruction
|
||||
|
||||
Building of ClickHouse is supported on Linux, FreeBSD and Mac OS X.
|
||||
|
||||
# If you use Windows {#if-you-use-windows}
|
||||
# If You Use Windows {#if-you-use-windows}
|
||||
|
||||
If you use Windows, you need to create a virtual machine with Ubuntu. To start working with a virtual machine please install VirtualBox. You can download Ubuntu from the website: https://www.ubuntu.com/\#download. Please create a virtual machine from the downloaded image (you should reserve at least 4GB of RAM for it). To run a command-line terminal in Ubuntu, please locate a program containing the word “terminal” in its name (gnome-terminal, konsole etc.) or just press Ctrl+Alt+T.
|
||||
|
||||
# If you use a 32-bit system {#if-you-use-a-32-bit-system}
|
||||
# If You Use a 32-bit System {#if-you-use-a-32-bit-system}
|
||||
|
||||
ClickHouse cannot work or build on a 32-bit system. You should acquire access to a 64-bit system and you can continue reading.
|
||||
|
||||
# Creating a repository on GitHub {#creating-a-repository-on-github}
|
||||
# Creating a Repository on GitHub {#creating-a-repository-on-github}
|
||||
|
||||
To start working with ClickHouse repository you will need a GitHub account.
|
||||
|
||||
@ -33,7 +33,7 @@ To do that in Ubuntu you would run in the command line terminal:
|
||||
A brief manual on using Git can be found here: https://services.github.com/on-demand/downloads/github-git-cheat-sheet.pdf.
|
||||
For a detailed manual on Git see https://git-scm.com/book/en/v2.
|
||||
|
||||
# Cloning a repository to your development machine {#cloning-a-repository-to-your-development-machine}
|
||||
# Cloning a Repository to Your Development Machine {#cloning-a-repository-to-your-development-machine}
|
||||
|
||||
Next, you need to download the source files onto your working machine. This is called “to clone a repository” because it creates a local copy of the repository on your working machine.
|
||||
|
||||
@ -77,7 +77,7 @@ You can also add original ClickHouse repo’s address to your local repository t
|
||||
|
||||
After successfully running this command you will be able to pull updates from the main ClickHouse repo by running `git pull upstream master`.
|
||||
|
||||
## Working with submodules {#working-with-submodules}
|
||||
## Working with Submodules {#working-with-submodules}
|
||||
|
||||
Working with submodules in git could be painful. Next commands will help to manage it:
|
||||
|
||||
@ -145,7 +145,7 @@ Mac OS X build is supported only for Clang. Just run `brew install llvm`
|
||||
|
||||
If you decide to use Clang, you can also install `libc++` and `lld`, if you know what it is. Using `ccache` is also recommended.
|
||||
|
||||
# The Building process {#the-building-process}
|
||||
# The Building Process {#the-building-process}
|
||||
|
||||
Now that you are ready to build ClickHouse we recommend you to create a separate directory `build` inside `ClickHouse` that will contain all of the build artefacts:
|
||||
|
||||
@ -202,7 +202,7 @@ Upon successful build you get an executable file `ClickHouse/<build_dir>/program
|
||||
|
||||
ls -l programs/clickhouse
|
||||
|
||||
# Running the built executable of ClickHouse {#running-the-built-executable-of-clickhouse}
|
||||
# Running the Built Executable of ClickHouse {#running-the-built-executable-of-clickhouse}
|
||||
|
||||
To run the server under the current user you need to navigate to `ClickHouse/programs/server/` (located outside of `build`) and run:
|
||||
|
||||
|
@ -11,7 +11,7 @@ Functional tests are the most simple and convenient to use. Most of ClickHouse f
|
||||
|
||||
Each functional test sends one or multiple queries to the running ClickHouse server and compares the result with reference.
|
||||
|
||||
Tests are located in `testsies` directory. There are two subdirectories: `stateless` and `stateful`. Stateless tests run queries without any preloaded test data - they often create small synthetic datasets on the fly, within the test itself. Stateful tests require preloaded test data from Yandex.Metrica and not available to general public. We tend to use only `stateless` tests and avoid adding new `stateful` tests.
|
||||
Tests are located in `queries` directory. There are two subdirectories: `stateless` and `stateful`. Stateless tests run queries without any preloaded test data - they often create small synthetic datasets on the fly, within the test itself. Stateful tests require preloaded test data from Yandex.Metrica and not available to general public. We tend to use only `stateless` tests and avoid adding new `stateful` tests.
|
||||
|
||||
Each test can be one of two types: `.sql` and `.sh`. `.sql` test is the simple SQL script that is piped to `clickhouse-client --multiquery --testmode`. `.sh` test is a script that is run by itself.
|
||||
|
||||
@ -19,7 +19,7 @@ To run all tests, use `testskhouse-test` tool. Look `--help` for the list of pos
|
||||
|
||||
The most simple way to invoke functional tests is to copy `clickhouse-client` to `/usr/bin/`, run `clickhouse-server` and then run `./clickhouse-test` from its own directory.
|
||||
|
||||
To add new test, create a `.sql` or `.sh` file in `testsies/0_stateless` directory, check it manually and then generate `.reference` file in the following way: `clickhouse-client -n --testmode < 00000_test.sql > 00000_test.reference` or `./00000_test.sh > ./00000_test.reference`.
|
||||
To add new test, create a `.sql` or `.sh` file in `queries/0_stateless` directory, check it manually and then generate `.reference` file in the following way: `clickhouse-client -n --testmode < 00000_test.sql > 00000_test.reference` or `./00000_test.sh > ./00000_test.reference`.
|
||||
|
||||
Tests should use (create, drop, etc) only tables in `test` database that is assumed to be created beforehand; also tests can use temporary tables.
|
||||
|
||||
@ -32,9 +32,9 @@ meaning. `long` is for tests that run slightly longer that one second. You can
|
||||
disable these groups of tests using `--no-zookeeper`, `--no-shard` and
|
||||
`--no-long` options, respectively.
|
||||
|
||||
## Known bugs {#known-bugs}
|
||||
## Known Bugs {#known-bugs}
|
||||
|
||||
If we know some bugs that can be easily reproduced by functional tests, we place prepared functional tests in `testsies/bugs` directory. These tests will be moved to `teststests_stateless` when bugs are fixed.
|
||||
If we know some bugs that can be easily reproduced by functional tests, we place prepared functional tests in `queries/bugs` directory. These tests will be moved to `teststests_stateless` when bugs are fixed.
|
||||
|
||||
## Integration Tests {#integration-tests}
|
||||
|
||||
@ -58,7 +58,7 @@ Each test run one or miltiple queries (possibly with combinations of parameters)
|
||||
|
||||
If you want to improve performance of ClickHouse in some scenario, and if improvements can be observed on simple queries, it is highly recommended to write a performance test. It always makes sense to use `perf top` or other perf tools during your tests.
|
||||
|
||||
## Test Tools And Scripts {#test-tools-and-scripts}
|
||||
## Test Tools and Scripts {#test-tools-and-scripts}
|
||||
|
||||
Some programs in `tests` directory are not prepared tests, but are test tools. For example, for `Lexer` there is a tool `src/Parsers/tests/lexer` that just do tokenization of stdin and writes colorized result to stdout. You can use these kind of tools as a code examples and for exploration and manual testing.
|
||||
|
||||
@ -163,11 +163,11 @@ For example, build with system packages is bad practice, because we cannot guara
|
||||
|
||||
Though we cannot run all tests on all variant of builds, we want to check at least that various build variants are not broken. For this purpose we use build tests.
|
||||
|
||||
## Testing For Protocol Compatibility {#testing-for-protocol-compatibility}
|
||||
## Testing for Protocol Compatibility {#testing-for-protocol-compatibility}
|
||||
|
||||
When we extend ClickHouse network protocol, we test manually that old clickhouse-client works with new clickhouse-server and new clickhouse-client works with old clickhouse-server (simply by running binaries from corresponding packages).
|
||||
|
||||
## Help From The Compiler {#help-from-the-compiler}
|
||||
## Help from the Compiler {#help-from-the-compiler}
|
||||
|
||||
Main ClickHouse code (that is located in `dbms` directory) is built with `-Wall -Wextra -Werror` and with some additional enabled warnings. Although these options are not enabled for third-party libraries.
|
||||
|
||||
@ -247,4 +247,3 @@ We don’t use Travis CI due to the limit on time and computational power.
|
||||
We don’t use Jenkins. It was used before and now we are happy we are not using Jenkins.
|
||||
|
||||
[Original article](https://clickhouse.tech/docs/en/development/tests/) <!--hide-->
|
||||
velopment/tests/) <!--hide-->
|
||||
|
@ -3,3 +3,4 @@ toc_folder_title: Engines
|
||||
toc_priority: 25
|
||||
---
|
||||
|
||||
|
||||
|
@ -17,7 +17,7 @@ The table engine (type of table) determines:
|
||||
|
||||
## Engine Families {#engine-families}
|
||||
|
||||
### Mergetree {#mergetree}
|
||||
### MergeTree {#mergetree}
|
||||
|
||||
The most universal and functional table engines for high-load tasks. The property shared by these engines is quick data insertion with subsequent background data processing. `MergeTree` family engines support data replication (with [Replicated\*](mergetree_family/replication.md) versions of engines), partitioning, and other features not supported in other engines.
|
||||
|
||||
|
@ -3,7 +3,7 @@ toc_priority: 36
|
||||
toc_title: CollapsingMergeTree
|
||||
---
|
||||
|
||||
# Collapsingmergetree {#table_engine-collapsingmergetree}
|
||||
# CollapsingMergeTree {#table_engine-collapsingmergetree}
|
||||
|
||||
The engine inherits from [MergeTree](mergetree.md) and adds the logic of rows collapsing to data parts merge algorithm.
|
||||
|
||||
|
@ -3,7 +3,7 @@ toc_priority: 38
|
||||
toc_title: GraphiteMergeTree
|
||||
---
|
||||
|
||||
# Graphitemergetree {#graphitemergetree}
|
||||
# GraphiteMergeTree {#graphitemergetree}
|
||||
|
||||
This engine is designed for thinning and aggregating/averaging (rollup) [Graphite](http://graphite.readthedocs.io/en/latest/index.html) data. It may be helpful to developers who want to use ClickHouse as a data store for Graphite.
|
||||
|
||||
|
@ -3,7 +3,7 @@ toc_priority: 30
|
||||
toc_title: MergeTree
|
||||
---
|
||||
|
||||
# Mergetree {#table_engines-mergetree}
|
||||
# MergeTree {#table_engines-mergetree}
|
||||
|
||||
The `MergeTree` engine and other engines of this family (`*MergeTree`) are the most robust ClickHouse table engines.
|
||||
|
||||
|
@ -3,7 +3,7 @@ toc_priority: 33
|
||||
toc_title: ReplacingMergeTree
|
||||
---
|
||||
|
||||
# Replacingmergetree {#replacingmergetree}
|
||||
# ReplacingMergeTree {#replacingmergetree}
|
||||
|
||||
The engine differs from [MergeTree](mergetree.md#table_engines-mergetree) in that it removes duplicate entries with the same primary key value (or more accurately, with the same [sorting key](mergetree.md) value).
|
||||
|
||||
|
@ -186,7 +186,7 @@ An alternative recovery option is to delete information about the lost replica f
|
||||
|
||||
There is no restriction on network bandwidth during recovery. Keep this in mind if you are restoring many replicas at once.
|
||||
|
||||
## Converting From Mergetree To Replicatedmergetree {#converting-from-mergetree-to-replicatedmergetree}
|
||||
## Converting From MergeTree To ReplicatedMergeTree {#converting-from-mergetree-to-replicatedmergetree}
|
||||
|
||||
We use the term `MergeTree` to refer to all table engines in the `MergeTree family`, the same as for `ReplicatedMergeTree`.
|
||||
|
||||
@ -198,7 +198,7 @@ Rename the existing MergeTree table, then create a `ReplicatedMergeTree` table w
|
||||
Move the data from the old table to the `detached` subdirectory inside the directory with the new table data (`/var/lib/clickhouse/data/db_name/table_name/`).
|
||||
Then run `ALTER TABLE ATTACH PARTITION` on one of the replicas to add these data parts to the working set.
|
||||
|
||||
## Converting From Replicatedmergetree To Mergetree {#converting-from-replicatedmergetree-to-mergetree}
|
||||
## Converting From ReplicatedMergeTree To MergeTree {#converting-from-replicatedmergetree-to-mergetree}
|
||||
|
||||
Create a MergeTree table with a different name. Move all the data from the directory with the `ReplicatedMergeTree` table data to the new table’s data directory. Then delete the `ReplicatedMergeTree` table and restart the server.
|
||||
|
||||
|
@ -3,7 +3,7 @@ toc_priority: 34
|
||||
toc_title: SummingMergeTree
|
||||
---
|
||||
|
||||
# Summingmergetree {#summingmergetree}
|
||||
# SummingMergeTree {#summingmergetree}
|
||||
|
||||
The engine inherits from [MergeTree](mergetree.md#table_engines-mergetree). The difference is that when merging data parts for `SummingMergeTree` tables ClickHouse replaces all the rows with the same primary key (or more accurately, with the same [sorting key](mergetree.md)) with one row which contains summarized values for the columns with the numeric data type. If the sorting key is composed in a way that a single key value corresponds to large number of rows, this significantly reduces storage volume and speeds up data selection.
|
||||
|
||||
@ -94,7 +94,7 @@ SELECT key, sum(value) FROM summtt GROUP BY key
|
||||
|
||||
## Data Processing {#data-processing}
|
||||
|
||||
When data are inserted into a table, they are saved as-is. Clickhouse merges the inserted parts of data periodically and this is when rows with the same primary key are summed and replaced with one for each resulting part of data.
|
||||
When data are inserted into a table, they are saved as-is. ClickHouse merges the inserted parts of data periodically and this is when rows with the same primary key are summed and replaced with one for each resulting part of data.
|
||||
|
||||
ClickHouse can merge the data parts so that different resulting parts of data cat consist rows with the same primary key, i.e. the summation will be incomplete. Therefore (`SELECT`) an aggregate function [sum()](../../../sql_reference/aggregate_functions/reference.md#agg_function-sum) and `GROUP BY` clause should be used in a query as described in the example above.
|
||||
|
||||
|
@ -3,7 +3,7 @@ toc_priority: 37
|
||||
toc_title: VersionedCollapsingMergeTree
|
||||
---
|
||||
|
||||
# Versionedcollapsingmergetree {#versionedcollapsingmergetree}
|
||||
# VersionedCollapsingMergeTree {#versionedcollapsingmergetree}
|
||||
|
||||
This engine:
|
||||
|
||||
|
@ -14,7 +14,7 @@ Usage examples:
|
||||
- Convert data from one format to another.
|
||||
- Updating data in ClickHouse via editing a file on a disk.
|
||||
|
||||
## Usage In Clickhouse Server {#usage-in-clickhouse-server}
|
||||
## Usage In ClickHouse Server {#usage-in-clickhouse-server}
|
||||
|
||||
``` sql
|
||||
File(Format)
|
||||
@ -65,7 +65,7 @@ SELECT * FROM file_engine_table
|
||||
└──────┴───────┘
|
||||
```
|
||||
|
||||
## Usage In Clickhouse-local {#usage-in-clickhouse-local}
|
||||
## Usage In ClickHouse-local {#usage-in-clickhouse-local}
|
||||
|
||||
In [clickhouse-local](../../../operations/utilities/clickhouse-local.md) File engine accepts file path in addition to `Format`. Default input/output streams can be specified using numeric or human-readable names like `0` or `stdin`, `1` or `stdout`.
|
||||
**Example:**
|
||||
|
@ -12,7 +12,7 @@ Usage examples:
|
||||
- Use in test to populate reproducible large table.
|
||||
- Generate random input for fuzzing tests.
|
||||
|
||||
## Usage In Clickhouse Server {#usage-in-clickhouse-server}
|
||||
## Usage In ClickHouse Server {#usage-in-clickhouse-server}
|
||||
|
||||
``` sql
|
||||
ENGINE = GenerateRandom(random_seed, max_string_length, max_array_length)
|
||||
|
@ -8,7 +8,7 @@ toc_title: URL
|
||||
Manages data on a remote HTTP/HTTPS server. This engine is similar
|
||||
to the [File](file.md) engine.
|
||||
|
||||
## Using the Engine In the Clickhouse Server {#using-the-engine-in-the-clickhouse-server}
|
||||
## Using the Engine In the ClickHouse Server {#using-the-engine-in-the-clickhouse-server}
|
||||
|
||||
The `format` must be one that ClickHouse can use in
|
||||
`SELECT` queries and, if necessary, in `INSERTs`. For the full list of supported formats, see
|
||||
|
@ -27,7 +27,7 @@ NLS_LANG=RUSSIAN_RUSSIA.UTF8
|
||||
|
||||
### Using INTO OUTFILE Clause {#using-into-outfile-clause}
|
||||
|
||||
Add an [INTO OUTFILE](../query_language/select/#into-outfile-clause) clause to your query.
|
||||
Add an [INTO OUTFILE](../sql_reference/statements/select.md#into-outfile-clause) clause to your query.
|
||||
|
||||
For example:
|
||||
|
||||
@ -35,7 +35,7 @@ For example:
|
||||
SELECT * FROM table INTO OUTFILE 'file'
|
||||
```
|
||||
|
||||
By default, ClickHouse uses the [TabSeparated](../interfaces/formats.md#tabseparated) format for output data. To select the [data format](../interfaces/formats.md), use the [FORMAT clause](../query_language/select/#format-clause).
|
||||
By default, ClickHouse uses the [TabSeparated](../interfaces/formats.md#tabseparated) format for output data. To select the [data format](../interfaces/formats.md), use the [FORMAT clause](../sql_reference/statements/select.md#format-clause).
|
||||
|
||||
For example:
|
||||
|
||||
|
@ -3,3 +3,4 @@ toc_folder_title: F.A.Q.
|
||||
toc_priority: 76
|
||||
---
|
||||
|
||||
|
||||
|
@ -69,7 +69,7 @@ sudo yum install clickhouse-server clickhouse-client
|
||||
|
||||
You can also download and install packages manually from here: https://repo.clickhouse.tech/rpm/stable/x86\_64.
|
||||
|
||||
### From tgz archives {#from-tgz-archives}
|
||||
### From Tgz Archives {#from-tgz-archives}
|
||||
|
||||
It is recommended to use official pre-compiled `tgz` archives for all Linux distributions, where installation of `deb` or `rpm` packages is not possible.
|
||||
|
||||
|
@ -32,7 +32,7 @@ You can make queries to playground using any HTTP client, for example [curl](htt
|
||||
More information about software products that support ClickHouse is available [here](../interfaces/index.md).
|
||||
|
||||
| Parameter | Value |
|
||||
|:------|:------------------------|
|
||||
|:----------|:--------------------------------------|
|
||||
| Endpoint | https://play-api.clickhouse.tech:8443 |
|
||||
| User | `playground` |
|
||||
| Password | `clickhouse` |
|
||||
|
@ -484,7 +484,7 @@ FORMAT TSV
|
||||
max_insert_block_size 1048576 0 "The maximum block size for insertion, if we control the creation of blocks for insertion."
|
||||
```
|
||||
|
||||
Optionally you can [OPTIMIZE](../query_language/misc/#misc_operations-optimize) the tables after import. Tables that are configured with an engine from MergeTree-family always do merges of data parts in the background to optimize data storage (or at least check if it makes sense). These queries force the table engine to do storage optimization right now instead of some time later:
|
||||
Optionally you can [OPTIMIZE](../sql_reference/statements/misc.md#misc_operations-optimize) the tables after import. Tables that are configured with an engine from MergeTree-family always do merges of data parts in the background to optimize data storage (or at least check if it makes sense). These queries force the table engine to do storage optimization right now instead of some time later:
|
||||
|
||||
``` bash
|
||||
clickhouse-client --query "OPTIMIZE TABLE tutorial.hits_v1 FINAL"
|
||||
|
@ -11,7 +11,7 @@ results of a `SELECT`, and to perform `INSERT`s into a file-backed table.
|
||||
The supported formats are:
|
||||
|
||||
| Format | Input | Output |
|
||||
|---------------------------------------|-----|------|
|
||||
|-----------------------------------------------------------------|-------|--------|
|
||||
| [TabSeparated](#tabseparated) | ✔ | ✔ |
|
||||
| [TabSeparatedRaw](#tabseparatedraw) | ✗ | ✔ |
|
||||
| [TabSeparatedWithNames](#tabseparatedwithnames) | ✔ | ✔ |
|
||||
@ -993,21 +993,21 @@ ClickHouse Avro format supports reading and writing [Avro data files](http://avr
|
||||
|
||||
The table below shows supported data types and how they match ClickHouse [data types](../sql_reference/data_types/index.md) in `INSERT` and `SELECT` queries.
|
||||
|
||||
| Avro data type `INSERT` | ClickHouse data type | Avro data type `SELECT` |
|
||||
|---------------------------|-------------------------------------------------------|------------------|
|
||||
| Avro data type `INSERT` | ClickHouse data type | Avro data type `SELECT` |
|
||||
|---------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|------------------------------|
|
||||
| `boolean`, `int`, `long`, `float`, `double` | [Int(8\|16\|32)](../sql_reference/data_types/int_uint.md), [UInt(8\|16\|32)](../sql_reference/data_types/int_uint.md) | `int` |
|
||||
| `boolean`, `int`, `long`, `float`, `double` | [Int64](../sql_reference/data_types/int_uint.md), [UInt64](../sql_reference/data_types/int_uint.md) | `long` |
|
||||
| `boolean`, `int`, `long`, `float`, `double` | [Float32](../sql_reference/data_types/float.md) | `float` |
|
||||
| `boolean`, `int`, `long`, `float`, `double` | [Float64](../sql_reference/data_types/float.md) | `double` |
|
||||
| `bytes`, `string`, `fixed`, `enum` | [String](../sql_reference/data_types/string.md) | `bytes` |
|
||||
| `bytes`, `string`, `fixed` | [FixedString(N)](../sql_reference/data_types/fixedstring.md) | `fixed(N)` |
|
||||
| `enum` | [Enum(8\|16)](../sql_reference/data_types/enum.md) | `enum` |
|
||||
| `array(T)` | [Array(T)](../sql_reference/data_types/array.md) | `array(T)` |
|
||||
| `union(null, T)`, `union(T, null)` | [Nullable(T)](../sql_reference/data_types/date.md) | `union(null, T)` |
|
||||
| `null` | [Nullable(Nothing)](../sql_reference/data_types/special_data_types/nothing.md) | `null` |
|
||||
| `int (date)` \* | [Date](../sql_reference/data_types/date.md) | `int (date)` \* |
|
||||
| `long (timestamp-millis)` \* | [DateTime64(3)](../sql_reference/data_types/datetime.md) | `long (timestamp-millis)` \* |
|
||||
| `long (timestamp-micros)` \* | [DateTime64(6)](../sql_reference/data_types/datetime.md) | `long (timestamp-micros)` \* |
|
||||
| `boolean`, `int`, `long`, `float`, `double` | [Float32](../sql_reference/data_types/float.md) | `float` |
|
||||
| `boolean`, `int`, `long`, `float`, `double` | [Float64](../sql_reference/data_types/float.md) | `double` |
|
||||
| `bytes`, `string`, `fixed`, `enum` | [String](../sql_reference/data_types/string.md) | `bytes` |
|
||||
| `bytes`, `string`, `fixed` | [FixedString(N)](../sql_reference/data_types/fixedstring.md) | `fixed(N)` |
|
||||
| `enum` | [Enum(8\|16)](../sql_reference/data_types/enum.md) | `enum` |
|
||||
| `array(T)` | [Array(T)](../sql_reference/data_types/array.md) | `array(T)` |
|
||||
| `union(null, T)`, `union(T, null)` | [Nullable(T)](../sql_reference/data_types/date.md) | `union(null, T)` |
|
||||
| `null` | [Nullable(Nothing)](../sql_reference/data_types/special_data_types/nothing.md) | `null` |
|
||||
| `int (date)` \* | [Date](../sql_reference/data_types/date.md) | `int (date)` \* |
|
||||
| `long (timestamp-millis)` \* | [DateTime64(3)](../sql_reference/data_types/datetime.md) | `long (timestamp-millis)` \* |
|
||||
| `long (timestamp-micros)` \* | [DateTime64(6)](../sql_reference/data_types/datetime.md) | `long (timestamp-micros)` \* |
|
||||
|
||||
\* [Avro logical types](http://avro.apache.org/docs/current/spec.html#Logical+Types)
|
||||
|
||||
@ -1028,7 +1028,7 @@ The root schema of input Avro file must be of `record` type.
|
||||
To find the correspondence between table columns and fields of Avro schema ClickHouse compares their names. This comparison is case-sensitive.
|
||||
Unused fields are skipped.
|
||||
|
||||
Data types of ClickHouse table columns can differ from the corresponding fields of the Avro data inserted. When inserting data, ClickHouse interprets data types according to the table above and then [casts](../query_language/functions/type_conversion_functions/#type_conversion_function-cast) the data to corresponding column type.
|
||||
Data types of ClickHouse table columns can differ from the corresponding fields of the Avro data inserted. When inserting data, ClickHouse interprets data types according to the table above and then [casts](../sql_reference/functions/type_conversion_functions.md#type_conversion_function-cast) the data to corresponding column type.
|
||||
|
||||
### Selecting Data {#selecting-data-1}
|
||||
|
||||
@ -1101,8 +1101,8 @@ SELECT * FROM topic1_stream;
|
||||
|
||||
The table below shows supported data types and how they match ClickHouse [data types](../sql_reference/data_types/index.md) in `INSERT` and `SELECT` queries.
|
||||
|
||||
| Parquet data type (`INSERT`) | ClickHouse data type | Parquet data type (`SELECT`) |
|
||||
|------------------|---------------------------|------------------|
|
||||
| Parquet data type (`INSERT`) | ClickHouse data type | Parquet data type (`SELECT`) |
|
||||
|------------------------------|-----------------------------------------------------------|------------------------------|
|
||||
| `UINT8`, `BOOL` | [UInt8](../sql_reference/data_types/int_uint.md) | `UINT8` |
|
||||
| `INT8` | [Int8](../sql_reference/data_types/int_uint.md) | `INT8` |
|
||||
| `UINT16` | [UInt16](../sql_reference/data_types/int_uint.md) | `UINT16` |
|
||||
@ -1149,8 +1149,8 @@ To exchange data with Hadoop, you can use [HDFS table engine](../engines/table_e
|
||||
|
||||
The table below shows supported data types and how they match ClickHouse [data types](../sql_reference/data_types/index.md) in `INSERT` queries.
|
||||
|
||||
| ORC data type (`INSERT`) | ClickHouse data type |
|
||||
|----------------|-------------------------|
|
||||
| ORC data type (`INSERT`) | ClickHouse data type |
|
||||
|--------------------------|-----------------------------------------------------|
|
||||
| `UINT8`, `BOOL` | [UInt8](../sql_reference/data_types/int_uint.md) |
|
||||
| `INT8` | [Int8](../sql_reference/data_types/int_uint.md) |
|
||||
| `UINT16` | [UInt16](../sql_reference/data_types/int_uint.md) |
|
||||
@ -1170,7 +1170,7 @@ ClickHouse supports configurable precision of the `Decimal` type. The `INSERT` q
|
||||
|
||||
Unsupported ORC data types: `DATE32`, `TIME32`, `FIXED_SIZE_BINARY`, `JSON`, `UUID`, `ENUM`.
|
||||
|
||||
The data types of ClickHouse table columns don’t have to match the corresponding ORC data fields. When inserting data, ClickHouse interprets data types according to the table above and then [casts](../query_language/functions/type_conversion_functions/#type_conversion_function-cast) the data to the data type set for the ClickHouse table column.
|
||||
The data types of ClickHouse table columns don’t have to match the corresponding ORC data fields. When inserting data, ClickHouse interprets data types according to the table above and then [casts](../sql_reference/functions/type_conversion_functions.md#type_conversion_function-cast) the data to the data type set for the ClickHouse table column.
|
||||
|
||||
### Inserting Data {#inserting-data-2}
|
||||
|
||||
|
@ -286,31 +286,35 @@ $ curl -sS "<address>?param_id=2¶m_phrase=test" -d "SELECT * FROM table WHER
|
||||
## Predefined HTTP Interface {#predefined_http_interface}
|
||||
|
||||
ClickHouse supports specific queries through the HTTP interface. For example, you can write data to a table as follows:
|
||||
|
||||
```bash
|
||||
|
||||
``` bash
|
||||
$ echo '(4),(5),(6)' | curl 'http://localhost:8123/?query=INSERT%20INTO%20t%20VALUES' --data-binary @-
|
||||
```
|
||||
|
||||
ClickHouse also supports Predefined HTTP Interface which can help you more easy integration with third party tools like [Prometheus exporter](https://github.com/percona-lab/clickhouse_exporter).
|
||||
ClickHouse also supports Predefined HTTP Interface which can help you more easy integration with third party tools like [Prometheus exporter](https://github.com/percona-lab/clickhouse_exporter).
|
||||
|
||||
Example:
|
||||
|
||||
* First of all, add this section to server configuration file:
|
||||
|
||||
|
||||
- First of all, add this section to server configuration file:
|
||||
|
||||
<!-- -->
|
||||
|
||||
``` xml
|
||||
<http_handlers>
|
||||
<predefine_query_handler>
|
||||
<url>/metrics</url>
|
||||
<method>GET</method>
|
||||
<queries>
|
||||
<query>SELECT * FROM system.metrics LIMIT 5 FORMAT Template SETTINGS format_template_resultset = 'prometheus_template_output_format_resultset', format_template_row = 'prometheus_template_output_format_row', format_template_rows_between_delimiter = '\n'</query>
|
||||
</queries>
|
||||
<url>/metrics</url>
|
||||
<method>GET</method>
|
||||
<queries>
|
||||
<query>SELECT * FROM system.metrics LIMIT 5 FORMAT Template SETTINGS format_template_resultset = 'prometheus_template_output_format_resultset', format_template_row = 'prometheus_template_output_format_row', format_template_rows_between_delimiter = '\n'</query>
|
||||
</queries>
|
||||
</predefine_query_handler>
|
||||
</http_handlers>
|
||||
```
|
||||
|
||||
* You can now request the url directly for data in the Prometheus format:
|
||||
|
||||
|
||||
- You can now request the url directly for data in the Prometheus format:
|
||||
|
||||
<!-- -->
|
||||
|
||||
``` bash
|
||||
curl -vvv 'http://localhost:8123/metrics'
|
||||
* Trying ::1...
|
||||
@ -319,7 +323,7 @@ curl -vvv 'http://localhost:8123/metrics'
|
||||
> Host: localhost:8123
|
||||
> User-Agent: curl/7.47.0
|
||||
> Accept: */*
|
||||
>
|
||||
>
|
||||
< HTTP/1.1 200 OK
|
||||
< Date: Wed, 27 Nov 2019 08:54:25 GMT
|
||||
< Connection: Keep-Alive
|
||||
@ -329,7 +333,7 @@ curl -vvv 'http://localhost:8123/metrics'
|
||||
< X-ClickHouse-Query-Id: f39235f6-6ed7-488c-ae07-c7ceafb960f6
|
||||
< Keep-Alive: timeout=3
|
||||
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0"}
|
||||
<
|
||||
<
|
||||
# HELP "Query" "Number of executing queries"
|
||||
# TYPE "Query" counter
|
||||
"Query" 1
|
||||
@ -337,19 +341,19 @@ curl -vvv 'http://localhost:8123/metrics'
|
||||
# HELP "Merge" "Number of executing background merges"
|
||||
# TYPE "Merge" counter
|
||||
"Merge" 0
|
||||
|
||||
|
||||
# HELP "PartMutation" "Number of mutations (ALTER DELETE/UPDATE)"
|
||||
# TYPE "PartMutation" counter
|
||||
"PartMutation" 0
|
||||
|
||||
|
||||
# HELP "ReplicatedFetch" "Number of data parts being fetched from replica"
|
||||
# TYPE "ReplicatedFetch" counter
|
||||
"ReplicatedFetch" 0
|
||||
|
||||
|
||||
# HELP "ReplicatedSend" "Number of data parts being sent to replicas"
|
||||
# TYPE "ReplicatedSend" counter
|
||||
"ReplicatedSend" 0
|
||||
|
||||
|
||||
* Connection #0 to host localhost left intact
|
||||
```
|
||||
|
||||
@ -357,26 +361,24 @@ As you can see from the example, if `<http_handlers>` is configured in the confi
|
||||
|
||||
Now `<http_handlers>` can configure `<root_handler>`, `<ping_handler>`, `<replicas_status_handler>`, `<dynamic_query_handler>` and `<no_handler_description>` .
|
||||
|
||||
## root_handler
|
||||
## root\_handler {#root_handler}
|
||||
|
||||
`<root_handler>` returns the specified content for the root path request. The specific return content is configured by `http_server_default_response` in config.xml. if not specified, return **Ok.**
|
||||
`<root_handler>` returns the specified content for the root path request. The specific return content is configured by `http_server_default_response` in config.xml. if not specified, return **Ok.**
|
||||
|
||||
`http_server_default_response` is not defined and an HTTP request is sent to ClickHouse. The result is as follows:
|
||||
|
||||
```xml
|
||||
``` xml
|
||||
<http_handlers>
|
||||
<root_handler/>
|
||||
</http_handlers>
|
||||
```
|
||||
|
||||
```
|
||||
$ curl 'http://localhost:8123'
|
||||
Ok.
|
||||
```
|
||||
$ curl 'http://localhost:8123'
|
||||
Ok.
|
||||
|
||||
`http_server_default_response` is defined and an HTTP request is sent to ClickHouse. The result is as follows:
|
||||
|
||||
```xml
|
||||
``` xml
|
||||
<http_server_default_response><![CDATA[<html ng-app="SMI2"><head><base href="http://ui.tabix.io/"></head><body><div ui-view="" class="content-ui"></div><script src="http://loader.tabix.io/master.js"></script></body></html>]]></http_server_default_response>
|
||||
|
||||
<http_handlers>
|
||||
@ -384,35 +386,33 @@ Ok.
|
||||
</http_handlers>
|
||||
```
|
||||
|
||||
```
|
||||
$ curl 'http://localhost:8123'
|
||||
<html ng-app="SMI2"><head><base href="http://ui.tabix.io/"></head><body><div ui-view="" class="content-ui"></div><script src="http://loader.tabix.io/master.js"></script></body></html>%
|
||||
```
|
||||
$ curl 'http://localhost:8123'
|
||||
<html ng-app="SMI2"><head><base href="http://ui.tabix.io/"></head><body><div ui-view="" class="content-ui"></div><script src="http://loader.tabix.io/master.js"></script></body></html>%
|
||||
|
||||
## ping_handler
|
||||
## ping\_handler {#ping_handler}
|
||||
|
||||
`<ping_handler>` can be used to probe the health of the current ClickHouse Server. When the ClickHouse HTTP Server is normal, accessing ClickHouse through `<ping_handler>` will return **Ok.**.
|
||||
|
||||
Example:
|
||||
|
||||
```xml
|
||||
``` xml
|
||||
<http_handlers>
|
||||
<ping_handler>/ping</ping_handler>
|
||||
</http_handlers>
|
||||
```
|
||||
|
||||
```bash
|
||||
``` bash
|
||||
$ curl 'http://localhost:8123/ping'
|
||||
Ok.
|
||||
```
|
||||
|
||||
## replicas_status_handler
|
||||
## replicas\_status\_handler {#replicas_status_handler}
|
||||
|
||||
`<replicas_status_handler>` is used to detect the state of the replica node and return **Ok.** if the replica node has no delay. If there is a delay, return the specific delay. The value of `<replicas_status_handler>` supports customization. If you do not specify `<replicas_status_handler>`, ClickHouse default setting `<replicas_status_handler>` is **/replicas_status**.
|
||||
`<replicas_status_handler>` is used to detect the state of the replica node and return **Ok.** if the replica node has no delay. If there is a delay, return the specific delay. The value of `<replicas_status_handler>` supports customization. If you do not specify `<replicas_status_handler>`, ClickHouse default setting `<replicas_status_handler>` is **/replicas\_status**.
|
||||
|
||||
Example:
|
||||
|
||||
```xml
|
||||
``` xml
|
||||
<http_handlers>
|
||||
<replicas_status_handler>/replicas_status</replicas_status_handler>
|
||||
</http_handlers>
|
||||
@ -420,90 +420,90 @@ Example:
|
||||
|
||||
No delay case:
|
||||
|
||||
```bash
|
||||
``` bash
|
||||
$ curl 'http://localhost:8123/replicas_status'
|
||||
Ok.
|
||||
```
|
||||
|
||||
Delayed case:
|
||||
|
||||
```bash
|
||||
``` bash
|
||||
$ curl 'http://localhost:8123/replicas_status'
|
||||
db.stats: Absolute delay: 22. Relative delay: 22.
|
||||
```
|
||||
|
||||
## predefined_query_handler
|
||||
## predefined\_query\_handler {#predefined_query_handler}
|
||||
|
||||
You can configure `<method>`, `<headers>`, `<url>` and `<queries>` in `<predefined_query_handler>`.
|
||||
|
||||
`<method>` is responsible for matching the method part of the HTTP request. `<method>` fully conforms to the definition of [method](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods) in the HTTP protocol. It is an optional configuration. If it is not defined in the configuration file, it does not match the method portion of the HTTP request
|
||||
|
||||
`<url>` is responsible for matching the url part of the HTTP request. It is compatible with [RE2](https://github.com/google/re2)'s regular expressions. It is an optional configuration. If it is not defined in the configuration file, it does not match the url portion of the HTTP request
|
||||
`<url>` is responsible for matching the url part of the HTTP request. It is compatible with [RE2](https://github.com/google/re2)’s regular expressions. It is an optional configuration. If it is not defined in the configuration file, it does not match the url portion of the HTTP request
|
||||
|
||||
`<headers>` is responsible for matching the header part of the HTTP request. It is compatible with RE2's regular expressions. It is an optional configuration. If it is not defined in the configuration file, it does not match the header portion of the HTTP request
|
||||
`<headers>` is responsible for matching the header part of the HTTP request. It is compatible with RE2’s regular expressions. It is an optional configuration. If it is not defined in the configuration file, it does not match the header portion of the HTTP request
|
||||
|
||||
`<queries>` value is a predefined query of `<predefined_query_handler>`, which is executed by ClickHouse when an HTTP request is matched and the result of the query is returned. It is a must configuration.
|
||||
|
||||
`<predefined_query_handler>` supports setting Settings and query_params values.
|
||||
`<predefined_query_handler>` supports setting Settings and query\_params values.
|
||||
|
||||
The following example defines the values of `max_threads` and `max_alter_threads` settings, then queries the system table to check whether these settings were set successfully.
|
||||
|
||||
Example:
|
||||
|
||||
```xml
|
||||
``` xml
|
||||
<root_handlers>
|
||||
<predefined_query_handler>
|
||||
<method>GET</method>
|
||||
<headers>
|
||||
<XXX>TEST_HEADER_VALUE</XXX>
|
||||
<PARAMS_XXX><![CDATA[(?P<name_1>[^/]+)(/(?P<name_2>[^/]+))?]]></PARAMS_XXX>
|
||||
</headers>
|
||||
<url><![CDATA[/query_param_with_url/\w+/(?P<name_1>[^/]+)(/(?P<name_2>[^/]+))?]]></url>
|
||||
<queries>
|
||||
<query>SELECT value FROM system.settings WHERE name = {name_1:String}</query>
|
||||
<query>SELECT name, value FROM system.settings WHERE name = {name_2:String}</query>
|
||||
</queries>
|
||||
</predefined_query_handler>
|
||||
<predefined_query_handler>
|
||||
<method>GET</method>
|
||||
<headers>
|
||||
<XXX>TEST_HEADER_VALUE</XXX>
|
||||
<PARAMS_XXX><![CDATA[(?P<name_1>[^/]+)(/(?P<name_2>[^/]+))?]]></PARAMS_XXX>
|
||||
</headers>
|
||||
<url><![CDATA[/query_param_with_url/\w+/(?P<name_1>[^/]+)(/(?P<name_2>[^/]+))?]]></url>
|
||||
<queries>
|
||||
<query>SELECT value FROM system.settings WHERE name = {name_1:String}</query>
|
||||
<query>SELECT name, value FROM system.settings WHERE name = {name_2:String}</query>
|
||||
</queries>
|
||||
</predefined_query_handler>
|
||||
</root_handlers>
|
||||
```
|
||||
|
||||
```bash
|
||||
``` bash
|
||||
$ curl -H 'XXX:TEST_HEADER_VALUE' -H 'PARAMS_XXX:max_threads' 'http://localhost:8123/query_param_with_url/1/max_threads/max_alter_threads?max_threads=1&max_alter_threads=2'
|
||||
1
|
||||
max_alter_threads 2
|
||||
max_alter_threads 2
|
||||
```
|
||||
|
||||
!!! note "Note"
|
||||
In one `<predefined_query_handler>`, one `<queries>` only supports one `<query>` of an insert type.
|
||||
|
||||
## dynamic_query_handler
|
||||
## dynamic\_query\_handler {#dynamic_query_handler}
|
||||
|
||||
`<dynamic_query_handler>` than `<predefined_query_handler>` increased `<query_param_name>` .
|
||||
`<dynamic_query_handler>` than `<predefined_query_handler>` increased `<query_param_name>` .
|
||||
|
||||
ClickHouse extracts and executes the value corresponding to the `<query_param_name>` value in the url of the HTTP request.
|
||||
ClickHouse default setting `<query_param_name>` is `/query` . It is an optional configuration. If there is no definition in the configuration file, the param is not passed in.
|
||||
|
||||
To experiment with this functionality, the example defines the values of max_threads and max_alter_threads and queries whether the Settings were set successfully.
|
||||
To experiment with this functionality, the example defines the values of max\_threads and max\_alter\_threads and queries whether the Settings were set successfully.
|
||||
The difference is that in `<predefined_query_handler>`, query is wrote in the configuration file. But in `<dynamic_query_handler>`, query is written in the form of param of the HTTP request.
|
||||
|
||||
Example:
|
||||
|
||||
```xml
|
||||
``` xml
|
||||
<root_handlers>
|
||||
<dynamic_query_handler>
|
||||
<headers>
|
||||
<XXX>TEST_HEADER_VALUE_DYNAMIC</XXX>
|
||||
<PARAMS_XXX><![CDATA[(?P<param_name_1>[^/]+)(/(?P<param_name_2>[^/]+))?]]></PARAMS_XXX>
|
||||
</headers>
|
||||
<query_param_name>query_param</query_param_name>
|
||||
</dynamic_query_handler>
|
||||
<dynamic_query_handler>
|
||||
<headers>
|
||||
<XXX>TEST_HEADER_VALUE_DYNAMIC</XXX>
|
||||
<PARAMS_XXX><![CDATA[(?P<param_name_1>[^/]+)(/(?P<param_name_2>[^/]+))?]]></PARAMS_XXX>
|
||||
</headers>
|
||||
<query_param_name>query_param</query_param_name>
|
||||
</dynamic_query_handler>
|
||||
</root_handlers>
|
||||
```
|
||||
|
||||
```bash
|
||||
``` bash
|
||||
$ curl -H 'XXX:TEST_HEADER_VALUE_DYNAMIC' -H 'PARAMS_XXX:max_threads' 'http://localhost:8123/?query_param=SELECT%20value%20FROM%20system.settings%20where%20name%20=%20%7Bname_1:String%7D%20OR%20name%20=%20%7Bname_2:String%7D&max_threads=1&max_alter_threads=2¶m_name_2=max_alter_threads'
|
||||
1
|
||||
2
|
||||
```
|
||||
|
||||
[Original article](https://clickhouse.tech/docs/en/interfaces/http_interface/) <!--hide-->
|
||||
[Original article](https://clickhouse.tech/docs/en/interfaces/http_interface/) <!--hide-->
|
||||
|
@ -3,7 +3,7 @@ toc_priority: 20
|
||||
toc_title: MySQL Interface
|
||||
---
|
||||
|
||||
# MySQL interface {#mysql-interface}
|
||||
# MySQL Interface {#mysql-interface}
|
||||
|
||||
ClickHouse supports MySQL wire protocol. It can be enabled by [mysql\_port](../operations/server_configuration_parameters/settings.md#server_configuration_parameters-mysql_port) setting in configuration file:
|
||||
|
||||
|
@ -34,9 +34,10 @@ toc_title: Client Libraries
|
||||
- [AnyEvent-ClickHouse](https://metacpan.org/release/AnyEvent-ClickHouse)
|
||||
- Ruby
|
||||
- [ClickHouse (Ruby)](https://github.com/shlima/click_house)
|
||||
- [clickhouse-activerecord](https://github.com/PNixx/clickhouse-activerecord)
|
||||
- R
|
||||
- [clickhouse-r](https://github.com/hannesmuehleisen/clickhouse-r)
|
||||
- [RClickhouse](https://github.com/IMSMWU/RClickhouse)
|
||||
- [RClickHouse](https://github.com/IMSMWU/RClickHouse)
|
||||
- Java
|
||||
- [clickhouse-client-java](https://github.com/VirtusAI/clickhouse-client-java)
|
||||
- [clickhouse-client](https://github.com/Ecwid/clickhouse-client)
|
||||
|
@ -74,7 +74,7 @@ toc_title: Integrations
|
||||
- [pandahouse](https://github.com/kszucs/pandahouse)
|
||||
- R
|
||||
- [dplyr](https://db.rstudio.com/dplyr/)
|
||||
- [RClickhouse](https://github.com/IMSMWU/RClickhouse) (uses [clickhouse-cpp](https://github.com/artpaul/clickhouse-cpp))
|
||||
- [RClickHouse](https://github.com/IMSMWU/RClickHouse) (uses [clickhouse-cpp](https://github.com/artpaul/clickhouse-cpp))
|
||||
- Java
|
||||
- [Hadoop](http://hadoop.apache.org)
|
||||
- [clickhouse-hdfs-loader](https://github.com/jaykelin/clickhouse-hdfs-loader) (uses [JDBC](../../sql_reference/table_functions/jdbc.md))
|
||||
|
@ -9,7 +9,7 @@ toc_title: Adopters
|
||||
The following list of companies using ClickHouse and their success stories is assembled from public sources, thus might differ from current reality. We’d appreciate it if you share the story of adopting ClickHouse in your company and [add it to the list](https://github.com/ClickHouse/ClickHouse/edit/master/docs/en/introduction/adopters.md), but please make sure you won’t have any NDA issues by doing so. Providing updates with publications from other companies is also useful.
|
||||
|
||||
| Company | Industry | Usecase | Cluster Size | (Un)Compressed Data Size<abbr title="of single replica"><sup>\*</sup></abbr> | Reference |
|
||||
|-----------------------------------------------|---------------------|---------------|------------------------------------|------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------|
|
||||
|-----------------------------------------------------------------------------|---------------------------------|-----------------------|------------------------------------------------------------|------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| [2gis](https://2gis.ru) | Maps | Monitoring | — | — | [Talk in Russian, July 2019](https://youtu.be/58sPkXfq6nw) |
|
||||
| [Aloha Browser](https://alohabrowser.com/) | Mobile App | Browser backend | — | — | [Slides in Russian, May 2019](https://github.com/yandex/clickhouse-presentations/blob/master/meetup22/aloha.pdf) |
|
||||
| [Amadeus](https://amadeus.com/) | Travel | Analytics | — | — | [Press Release, April 2018](https://www.altinity.com/blog/2018/4/5/amadeus-technologies-launches-investment-and-insights-tool-based-on-machine-learning-and-strategy-algorithms) |
|
||||
@ -20,7 +20,7 @@ toc_title: Adopters
|
||||
| [Bloomberg](https://www.bloomberg.com/) | Finance, Media | Monitoring | 102 servers | — | [Slides, May 2018](https://www.slideshare.net/Altinity/http-analytics-for-6m-requests-per-second-using-clickhouse-by-alexander-bocharov) |
|
||||
| [Bloxy](https://bloxy.info) | Blockchain | Analytics | — | — | [Slides in Russian, August 2018](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup17/4_bloxy.pptx) |
|
||||
| `Dataliance/UltraPower` | Telecom | Analytics | — | — | [Slides in Chinese, January 2018](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup12/telecom.pdf) |
|
||||
| [CARTO](https://carto.com/) | Business Intelligence | Geo analytics | — | — | [Geospatial processing with Clickhouse](https://carto.com/blog/geospatial-processing-with-clickhouse/) |
|
||||
| [CARTO](https://carto.com/) | Business Intelligence | Geo analytics | — | — | [Geospatial processing with ClickHouse](https://carto.com/blog/geospatial-processing-with-clickhouse/) |
|
||||
| [CERN](http://public.web.cern.ch/public/) | Research | Experiment | — | — | [Press release, April 2012](https://www.yandex.com/company/press_center/press_releases/2012/2012-04-10/) |
|
||||
| [Cisco](http://cisco.com/) | Networking | Traffic analysis | — | — | [Lightning talk, October 2019](https://youtu.be/-hI1vDR2oPY?t=5057) |
|
||||
| [Citadel Securities](https://www.citadelsecurities.com/) | Finance | — | — | — | [Contribution, March 2019](https://github.com/ClickHouse/ClickHouse/pull/4774) |
|
||||
@ -64,7 +64,7 @@ toc_title: Adopters
|
||||
| [Splunk](https://www.splunk.com/) | Business Analytics | Main product | — | — | [Slides in English, January 2018](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup12/splunk.pdf) |
|
||||
| [Spotify](https://www.spotify.com) | Music | Experimentation | — | — | [Slides, July 2018](https://www.slideshare.net/glebus/using-clickhouse-for-experimentation-104247173) |
|
||||
| [Tencent](https://www.tencent.com) | Big Data | Data processing | — | — | [Slides in Chinese, October 2018](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup19/5.%20ClickHouse大数据集群应用_李俊飞腾讯网媒事业部.pdf) |
|
||||
| [Uber](https://www.uber.com) | Taxi | Logging | — | — | [Slides, February 2020](https://presentations.clickhouse.tech/meetup40/uber.pdf) |
|
||||
| [Uber](https://www.uber.com) | Taxi | Logging | — | — | [Slides, February 2020](https://presentations.clickhouse.tech/meetup40/uber.pdf) |
|
||||
| [VKontakte](https://vk.com) | Social Network | Statistics, Logging | — | — | [Slides in Russian, August 2018](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup17/3_vk.pdf) |
|
||||
| [Wisebits](https://wisebits.com/) | IT Solutions | Analytics | — | — | [Slides in Russian, May 2019](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup22/strategies.pdf) |
|
||||
| [Xiaoxin Tech.](https://www.xiaoheiban.cn/) | Education | Common purpose | — | — | [Slides in English, November 2019](https://github.com/ClickHouse/clickhouse-presentations/blob/master/meetup33/sync-clickhouse-with-mysql-mongodb.pptx) |
|
||||
|
@ -60,7 +60,7 @@ ClickHouse provides various ways to trade accuracy for performance:
|
||||
2. Running a query based on a part (sample) of data and getting an approximated result. In this case, proportionally less data is retrieved from the disk.
|
||||
3. Running an aggregation for a limited number of random keys, instead of for all keys. Under certain conditions for key distribution in the data, this provides a reasonably accurate result while using fewer resources.
|
||||
|
||||
## Data replication and data integrity support {#data-replication-and-data-integrity-support}
|
||||
## Data Replication and Data Integrity Support {#data-replication-and-data-integrity-support}
|
||||
|
||||
ClickHouse uses asynchronous multi-master replication. After being written to any available replica, all the remaining replicas retrieve their copy in the background. The system maintains identical data on different replicas. Recovery after most failures is performed automatically, or semi-automatically in complex cases.
|
||||
|
||||
|
@ -3,7 +3,7 @@ toc_priority: 5
|
||||
toc_title: ClickHouse Features that Can Be Considered Disadvantages
|
||||
---
|
||||
|
||||
# ClickHouse Features that Can be Considered Disadvantages {#clickhouse-features-that-can-be-considered-disadvantages}
|
||||
# ClickHouse Features that Can Be Considered Disadvantages {#clickhouse-features-that-can-be-considered-disadvantages}
|
||||
|
||||
1. No full-fledged transactions.
|
||||
2. Lack of ability to modify or delete already inserted data with high rate and low latency. There are batch deletes and updates available to clean up or modify data, for example to comply with [GDPR](https://gdpr-info.eu).
|
||||
|
@ -3,3 +3,4 @@ toc_folder_title: Introduction
|
||||
toc_priority: 1
|
||||
---
|
||||
|
||||
|
||||
|
@ -28,7 +28,7 @@ Some local filesystems provide snapshot functionality (for example, [ZFS](https:
|
||||
|
||||
For smaller volumes of data, a simple `INSERT INTO ... SELECT ...` to remote tables might work as well.
|
||||
|
||||
## Manipulations With Parts {#manipulations-with-parts}
|
||||
## Manipulations with Parts {#manipulations-with-parts}
|
||||
|
||||
ClickHouse allows using the `ALTER TABLE ... FREEZE PARTITION ...` query to create a local copy of table partitions. This is implemented using hardlinks to the `/var/lib/clickhouse/shadow/` folder, so it usually does not consume extra disk space for old data. The created copies of files are not handled by ClickHouse server, so you can just leave them there: you will have a simple backup that doesn’t require any additional external system, but it will still be prone to hardware issues. For this reason, it’s better to remotely copy them to another location and then remove the local copies. Distributed filesystems and object stores are still a good options for this, but normal attached file servers with a large enough capacity might work as well (in this case the transfer will occur via the network filesystem or maybe [rsync](https://en.wikipedia.org/wiki/Rsync)).
|
||||
|
||||
|
@ -22,7 +22,7 @@ It is highly recommended to set up monitoring for:
|
||||
|
||||
- Utilization of storage system, RAM and network.
|
||||
|
||||
## Clickhouse Server Metrics {#clickhouse-server-metrics}
|
||||
## ClickHouse Server Metrics {#clickhouse-server-metrics}
|
||||
|
||||
ClickHouse server has embedded instruments for self-state monitoring.
|
||||
|
||||
|
@ -3,13 +3,13 @@ toc_priority: 54
|
||||
toc_title: Testing Hardware
|
||||
---
|
||||
|
||||
# How To Test Your Hardware With ClickHouse {#how-to-test-your-hardware-with-clickhouse}
|
||||
# How to Test Your Hardware with ClickHouse {#how-to-test-your-hardware-with-clickhouse}
|
||||
|
||||
With this instruction you can run basic ClickHouse performance test on any server without installation of ClickHouse packages.
|
||||
|
||||
1. Go to “commits” page: https://github.com/ClickHouse/ClickHouse/commits/master
|
||||
|
||||
2. Click on the first green check mark or red cross with green “ClickHouse Build Check” and click on the “Details” link near “ClickHouse Build Check”.
|
||||
2. Click on the first green check mark or red cross with green “ClickHouse Build Check” and click on the “Details” link near “ClickHouse Build Check”. There is no such link in some commits, for example commits with documentation. In this case, choose the nearest commit having this link.
|
||||
|
||||
3. Copy the link to “clickhouse” binary for amd64 or aarch64.
|
||||
|
||||
@ -24,7 +24,7 @@ With this instruction you can run basic ClickHouse performance test on any serve
|
||||
# Then do:
|
||||
chmod a+x clickhouse
|
||||
|
||||
5. Download configs:
|
||||
1. Download configs:
|
||||
|
||||
<!-- -->
|
||||
|
||||
@ -34,7 +34,7 @@ With this instruction you can run basic ClickHouse performance test on any serve
|
||||
wget https://raw.githubusercontent.com/ClickHouse/ClickHouse/master/programs/server/config.d/path.xml -O config.d/path.xml
|
||||
wget https://raw.githubusercontent.com/ClickHouse/ClickHouse/master/programs/server/config.d/log_to_console.xml -O config.d/log_to_console.xml
|
||||
|
||||
6. Download benchmark files:
|
||||
1. Download benchmark files:
|
||||
|
||||
<!-- -->
|
||||
|
||||
@ -42,7 +42,7 @@ With this instruction you can run basic ClickHouse performance test on any serve
|
||||
chmod a+x benchmark-new.sh
|
||||
wget https://raw.githubusercontent.com/ClickHouse/ClickHouse/master/benchmark/clickhouse/queries.sql
|
||||
|
||||
7. Download test data according to the [Yandex.Metrica dataset](../getting_started/example_datasets/metrica.md) instruction (“hits” table containing 100 million rows).
|
||||
1. Download test data according to the [Yandex.Metrica dataset](../getting_started/example_datasets/metrica.md) instruction (“hits” table containing 100 million rows).
|
||||
|
||||
<!-- -->
|
||||
|
||||
@ -50,31 +50,31 @@ With this instruction you can run basic ClickHouse performance test on any serve
|
||||
tar xvf hits_100m_obfuscated_v1.tar.xz -C .
|
||||
mv hits_100m_obfuscated_v1/* .
|
||||
|
||||
8. Run the server:
|
||||
1. Run the server:
|
||||
|
||||
<!-- -->
|
||||
|
||||
./clickhouse server
|
||||
|
||||
9. Check the data: ssh to the server in another terminal
|
||||
1. Check the data: ssh to the server in another terminal
|
||||
|
||||
<!-- -->
|
||||
|
||||
./clickhouse client --query "SELECT count() FROM hits_100m_obfuscated"
|
||||
100000000
|
||||
|
||||
10. Edit the benchmark-new.sh, change “clickhouse-client” to “./clickhouse client” and add “–max\_memory\_usage 100000000000” parameter.
|
||||
1. Edit the benchmark-new.sh, change “clickhouse-client” to “./clickhouse client” and add “–max\_memory\_usage 100000000000” parameter.
|
||||
|
||||
<!-- -->
|
||||
|
||||
mcedit benchmark-new.sh
|
||||
|
||||
11. Run the benchmark:
|
||||
1. Run the benchmark:
|
||||
|
||||
<!-- -->
|
||||
|
||||
./benchmark-new.sh hits_100m_obfuscated
|
||||
|
||||
12. Send the numbers and the info about your hardware configuration to clickhouse-feedback@yandex-team.com
|
||||
1. Send the numbers and the info about your hardware configuration to clickhouse-feedback@yandex-team.com
|
||||
|
||||
All the results are published here: https://clickhouse.tech/benchmark_hardware.html
|
||||
All the results are published here: https://clickhouse.tech/benchmark\_hardware.html
|
||||
|
@ -134,7 +134,7 @@ Default value: 0.
|
||||
|
||||
## max\_http\_get\_redirects {#setting-max_http_get_redirects}
|
||||
|
||||
Limits the maximum number of HTTP GET redirect hops for [URL](../../engines/table_engines/special/url.md)-engine tables. The setting applies to both types of tables: those created by the [CREATE TABLE](../../query_language/create/#create-table-query) query and by the [url](../../sql_reference/table_functions/url.md) table function.
|
||||
Limits the maximum number of HTTP GET redirect hops for [URL](../../engines/table_engines/special/url.md)-engine tables. The setting applies to both types of tables: those created by the [CREATE TABLE](../../sql_reference/statements/create.md#create-table-query) query and by the [url](../../sql_reference/table_functions/url.md) table function.
|
||||
|
||||
Possible values:
|
||||
|
||||
|
@ -145,7 +145,7 @@ This system table is used for implementing the `SHOW DATABASES` query.
|
||||
|
||||
## system.detached\_parts {#system_tables-detached_parts}
|
||||
|
||||
Contains information about detached parts of [MergeTree](../engines/table_engines/mergetree_family/mergetree.md) tables. The `reason` column specifies why the part was detached. For user-detached parts, the reason is empty. Such parts can be attached with [ALTER TABLE ATTACH PARTITION\|PART](../query_language/query_language/alter/#alter_attach-partition) command. For the description of other columns, see [system.parts](#system_tables-parts). If part name is invalid, values of some columns may be `NULL`. Such parts can be deleted with [ALTER TABLE DROP DETACHED PART](../query_language/query_language/alter/#alter_drop-detached).
|
||||
Contains information about detached parts of [MergeTree](../engines/table_engines/mergetree_family/mergetree.md) tables. The `reason` column specifies why the part was detached. For user-detached parts, the reason is empty. Such parts can be attached with [ALTER TABLE ATTACH PARTITION\|PART](../sql_reference/statements/alter.md#alter_attach-partition) command. For the description of other columns, see [system.parts](#system_tables-parts). If part name is invalid, values of some columns may be `NULL`. Such parts can be deleted with [ALTER TABLE DROP DETACHED PART](../sql_reference/statements/alter.md#alter_drop-detached).
|
||||
|
||||
## system.dictionaries {#system-dictionaries}
|
||||
|
||||
@ -837,30 +837,59 @@ WHERE
|
||||
|
||||
If this query doesn’t return anything, it means that everything is fine.
|
||||
|
||||
## system.settings {#system-settings}
|
||||
## system.settings {#system-tables-system-settings}
|
||||
|
||||
Contains information about settings that are currently in use.
|
||||
I.e. used for executing the query you are using to read from the system.settings table.
|
||||
Contains information about session settings for current user.
|
||||
|
||||
Columns:
|
||||
|
||||
- `name` (String) — Setting name.
|
||||
- `value` (String) — Setting value.
|
||||
- `description` (String) — Setting description.
|
||||
- `type` (String) — Setting type (implementation specific string value).
|
||||
- `changed` (UInt8) — Whether the setting was explicitly defined in the config or explicitly changed.
|
||||
- `min` (Nullable(String)) — Get minimum allowed value (if any is set via [constraints](settings/constraints_on_settings.md#constraints-on-settings)).
|
||||
- `max` (Nullable(String)) — Get maximum allowed value (if any is set via [constraints](settings/constraints_on_settings.md#constraints-on-settings)).
|
||||
- `readonly` (UInt8) — Can user change this setting (for more info, look into [constraints](settings/constraints_on_settings.md#constraints-on-settings)).
|
||||
- `name` ([String](../sql_reference/data_types/string.md)) — Setting name.
|
||||
- `value` ([String](../sql_reference/data_types/string.md)) — Setting value.
|
||||
- `changed` ([UInt8](../sql_reference/data_types/int_uint.md#uint-ranges)) — Shows whether a setting is changed from its default value.
|
||||
- `description` ([String](../sql_reference/data_types/string.md)) — Short setting description.
|
||||
- `min` ([Nullable](../sql_reference/data_types/nullable.md)([String](../sql_reference/data_types/string.md))) — Minimum value of the setting, if any is set via [constraints](settings/constraints_on_settings.md#constraints-on-settings). If the setting has no minimum value, contains [NULL](../sql_reference/syntax.md#null-literal).
|
||||
- `max` ([Nullable](../sql_reference/data_types/nullable.md)([String](../sql_reference/data_types/string.md))) — Maximum value of the setting, if any is set via [constraints](settings/constraints_on_settings.md#constraints-on-settings). If the setting has no maximum value, contains [NULL](../sql_reference/syntax.md#null-literal).
|
||||
- `readonly` ([UInt8](../sql_reference/data_types/int_uint.md#uint-ranges)) — Shows whether the current user can change the setting:
|
||||
- `0` — Current user can change the setting.
|
||||
- `1` — Current user can’t change the setting.
|
||||
|
||||
Example:
|
||||
**Example**
|
||||
|
||||
The following example shows how to get information about settings which name contains `min_i`.
|
||||
|
||||
``` sql
|
||||
SELECT name, value
|
||||
SELECT *
|
||||
FROM system.settings
|
||||
WHERE changed
|
||||
WHERE name LIKE '%min_i%'
|
||||
```
|
||||
|
||||
``` text
|
||||
┌─name────────────────────────────────────────┬─value─────┬─changed─┬─description───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬─min──┬─max──┬─readonly─┐
|
||||
│ min_insert_block_size_rows │ 1048576 │ 0 │ Squash blocks passed to INSERT query to specified size in rows, if blocks are not big enough. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │
|
||||
│ min_insert_block_size_bytes │ 268435456 │ 0 │ Squash blocks passed to INSERT query to specified size in bytes, if blocks are not big enough. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │
|
||||
│ read_backoff_min_interval_between_events_ms │ 1000 │ 0 │ Settings to reduce the number of threads in case of slow reads. Do not pay attention to the event, if the previous one has passed less than a certain amount of time. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │
|
||||
└─────────────────────────────────────────────┴───────────┴─────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────┴──────┴──────────┘
|
||||
```
|
||||
|
||||
Using of `WHERE changed` can be useful, for example, when you want to check:
|
||||
|
||||
- Whether settings in configuration files are loaded correctly and are in use.
|
||||
- Settings that changed in the current session.
|
||||
|
||||
<!-- -->
|
||||
|
||||
``` sql
|
||||
SELECT * FROM system.settings WHERE changed AND name='load_balancing'
|
||||
```
|
||||
|
||||
**See also**
|
||||
|
||||
- [Settings](settings/index.md#settings)
|
||||
- [Permissions for Queries](settings/permissions_for_queries.md#settings_readonly)
|
||||
- [Constraints on Settings](settings/constraints_on_settings.md)
|
||||
|
||||
## system.table\_engines {#system.table_engines}
|
||||
|
||||
``` text
|
||||
┌─name───────────────────┬─value───────┐
|
||||
│ max_threads │ 8 │
|
||||
|
@ -12,12 +12,12 @@ toc_title: Troubleshooting
|
||||
|
||||
## Installation {#troubleshooting-installation-errors}
|
||||
|
||||
### You Cannot Get Deb Packages From Clickhouse Repository With Apt-get {#you-cannot-get-deb-packages-from-clickhouse-repository-with-apt-get}
|
||||
### You Cannot Get Deb Packages from ClickHouse Repository with Apt-get {#you-cannot-get-deb-packages-from-clickhouse-repository-with-apt-get}
|
||||
|
||||
- Check firewall settings.
|
||||
- If you cannot access the repository for any reason, download packages as described in the [Getting started](../getting_started/index.md) article and install them manually using the `sudo dpkg -i <packages>` command. You will also need the `tzdata` package.
|
||||
|
||||
## Connecting To the Server {#troubleshooting-accepts-no-connections}
|
||||
## Connecting to the Server {#troubleshooting-accepts-no-connections}
|
||||
|
||||
Possible issues:
|
||||
|
||||
@ -137,7 +137,7 @@ If you start `clickhouse-client` with the `stack-trace` parameter, ClickHouse re
|
||||
|
||||
You might see a message about a broken connection. In this case, you can repeat the query. If the connection breaks every time you perform the query, check the server logs for errors.
|
||||
|
||||
## Efficiency Of Query Processing {#troubleshooting-too-slow}
|
||||
## Efficiency of Query Processing {#troubleshooting-too-slow}
|
||||
|
||||
If you see that ClickHouse is working too slowly, you need to profile the load on the server resources and network for your queries.
|
||||
|
||||
|
@ -527,6 +527,49 @@ Calculates the average.
|
||||
Only works for numbers.
|
||||
The result is always Float64.
|
||||
|
||||
|
||||
## avgWeighted {#avgweighted}
|
||||
|
||||
Calculates the [weighted arithmetic mean](https://en.wikipedia.org/wiki/Weighted_arithmetic_mean).
|
||||
|
||||
**Syntax**
|
||||
|
||||
```sql
|
||||
avgWeighted(x, weight)
|
||||
```
|
||||
|
||||
**Parameters**
|
||||
|
||||
- `x` — Values. [Integer](../data_types/int_uint.md) or [floating-point](../data_types/float.md).
|
||||
- `weight` — Weights of the values. [Integer](../data_types/int_uint.md) or [floating-point](../data_types/float.md).
|
||||
|
||||
Type of `x` and `weight` must be the same.
|
||||
|
||||
**Returned value**
|
||||
|
||||
- Weighted mean.
|
||||
- `NaN`. If all the weights are equal to 0.
|
||||
|
||||
Type: [Float64](../data_types/float.md).
|
||||
|
||||
**Example**
|
||||
|
||||
Query:
|
||||
|
||||
``` sql
|
||||
SELECT avgWeighted(x, w)
|
||||
FROM values('x Int8, w Int8', (4, 1), (1, 0), (10, 2))
|
||||
```
|
||||
|
||||
Result:
|
||||
|
||||
```text
|
||||
┌─avgWeighted(x, weight)─┐
|
||||
│ 8 │
|
||||
└────────────────────────┘
|
||||
```
|
||||
|
||||
|
||||
## uniq {#agg_function-uniq}
|
||||
|
||||
Calculates the approximate number of different values of the argument.
|
||||
|
@ -488,7 +488,7 @@ SOURCE(MYSQL(
|
||||
))
|
||||
```
|
||||
|
||||
### Clickhouse {#dicts-external_dicts_dict_sources-clickhouse}
|
||||
### ClickHouse {#dicts-external_dicts_dict_sources-clickhouse}
|
||||
|
||||
Example of settings:
|
||||
|
||||
|
@ -132,9 +132,9 @@ SELECT IPv6NumToString(IPv4ToIPv6(IPv4StringToNum('192.168.0.1'))) AS addr
|
||||
└────────────────────┘
|
||||
```
|
||||
|
||||
## cutIPv6(x, bitsToCutForIPv6, bitsToCutForIPv4) {#cutipv6x-bitstocutforipv6-bitstocutforipv4}
|
||||
## cutIPv6(x, bytesToCutForIPv6, bytesToCutForIPv4) {#cutipv6x-bytestocutforipv6-bytestocutforipv4}
|
||||
|
||||
Accepts a FixedString(16) value containing the IPv6 address in binary format. Returns a string containing the address of the specified number of bits removed in text format. For example:
|
||||
Accepts a FixedString(16) value containing the IPv6 address in binary format. Returns a string containing the address of the specified number of bytes removed in text format. For example:
|
||||
|
||||
``` sql
|
||||
WITH
|
||||
|
@ -58,7 +58,7 @@ Groups of operators are listed in order of priority (the higher it is in the lis
|
||||
|
||||
`a NOT BETWEEN b AND c` – The same as `a < b OR a > c`.
|
||||
|
||||
## Operators For Working With Data Sets {#operators-for-working-with-data-sets}
|
||||
## Operators for Working with Data Sets {#operators-for-working-with-data-sets}
|
||||
|
||||
*See [IN operators](statements/select.md#select-in-operators).*
|
||||
|
||||
@ -70,7 +70,7 @@ Groups of operators are listed in order of priority (the higher it is in the lis
|
||||
|
||||
`a GLOBAL NOT IN ...` – The `globalNotIn(a, b)` function.
|
||||
|
||||
## Operators For Working With Dates and Times {#operators-datetime}
|
||||
## Operators for Working with Dates and Times {#operators-datetime}
|
||||
|
||||
### EXTRACT {#operator-extract}
|
||||
|
||||
@ -231,7 +231,7 @@ Sometimes this doesn’t work the way you expect. For example, `SELECT 4 > 2 > 3
|
||||
|
||||
For efficiency, the `and` and `or` functions accept any number of arguments. The corresponding chains of `AND` and `OR` operators are transformed to a single call of these functions.
|
||||
|
||||
## Checking For `NULL` {#checking-for-null}
|
||||
## Checking for `NULL` {#checking-for-null}
|
||||
|
||||
ClickHouse supports the `IS NULL` and `IS NOT NULL` operators.
|
||||
|
||||
|
@ -152,7 +152,7 @@ This release contains bug fixes for the previous release 1.1.54276:
|
||||
- Fixed parsing when inserting in RowBinary format if input data starts with’;’.
|
||||
- Errors during runtime compilation of certain aggregate functions (e.g. `groupArray()`).
|
||||
|
||||
### Clickhouse Release 1.1.54276, 2017-08-16 {#clickhouse-release-1-1-54276-2017-08-16}
|
||||
### ClickHouse Release 1.1.54276, 2017-08-16 {#clickhouse-release-1-1-54276-2017-08-16}
|
||||
|
||||
#### New features: {#new-features-4}
|
||||
|
||||
|
@ -839,7 +839,7 @@ toc_title: '2018'
|
||||
- Restored the behavior for queries like `SELECT * FROM remote('server2', default.table) WHERE col IN (SELECT col2 FROM default.table)` when the right side of the `IN` should use a remote `default.table` instead of a local one. This behavior was broken in version 1.1.54358.
|
||||
- Removed extraneous error-level logging of `Not found column ... in block`.
|
||||
|
||||
### Clickhouse Release 1.1.54362, 2018-03-11 {#clickhouse-release-1-1-54362-2018-03-11}
|
||||
### ClickHouse Release 1.1.54362, 2018-03-11 {#clickhouse-release-1-1-54362-2018-03-11}
|
||||
|
||||
#### New features: {#new-features-16}
|
||||
|
||||
@ -929,13 +929,13 @@ toc_title: '2018'
|
||||
- Removed the `strict_insert_defaults` setting. If you were using this functionality, write to `clickhouse-feedback@yandex-team.com`.
|
||||
- Removed the `UnsortedMergeTree` engine.
|
||||
|
||||
### Clickhouse Release 1.1.54343, 2018-02-05 {#clickhouse-release-1-1-54343-2018-02-05}
|
||||
### ClickHouse Release 1.1.54343, 2018-02-05 {#clickhouse-release-1-1-54343-2018-02-05}
|
||||
|
||||
- Added macros support for defining cluster names in distributed DDL queries and constructors of Distributed tables: `CREATE TABLE distr ON CLUSTER '{cluster}' (...) ENGINE = Distributed('{cluster}', 'db', 'table')`.
|
||||
- Now queries like `SELECT ... FROM table WHERE expr IN (subquery)` are processed using the `table` index.
|
||||
- Improved processing of duplicates when inserting to Replicated tables, so they no longer slow down execution of the replication queue.
|
||||
|
||||
### Clickhouse Release 1.1.54342, 2018-01-22 {#clickhouse-release-1-1-54342-2018-01-22}
|
||||
### ClickHouse Release 1.1.54342, 2018-01-22 {#clickhouse-release-1-1-54342-2018-01-22}
|
||||
|
||||
This release contains bug fixes for the previous release 1.1.54337:
|
||||
|
||||
@ -947,7 +947,7 @@ This release contains bug fixes for the previous release 1.1.54337:
|
||||
- Buffer tables now work correctly when MATERIALIZED columns are present in the destination table (by zhang2014).
|
||||
- Fixed a bug in implementation of NULL.
|
||||
|
||||
### Clickhouse Release 1.1.54337, 2018-01-18 {#clickhouse-release-1-1-54337-2018-01-18}
|
||||
### ClickHouse Release 1.1.54337, 2018-01-18 {#clickhouse-release-1-1-54337-2018-01-18}
|
||||
|
||||
#### New features: {#new-features-17}
|
||||
|
||||
|
@ -128,11 +128,11 @@ toc_title: '2019'
|
||||
|
||||
## ClickHouse release v19.16 {#clickhouse-release-v19-16}
|
||||
|
||||
#### Clickhouse release v19.16.14.65, 2020-03-25
|
||||
#### ClickHouse release v19.16.14.65, 2020-03-25
|
||||
|
||||
* Fixed up a bug in batched calculations of ternary logical OPs on multiple arguments (more than 10). [#8718](https://github.com/ClickHouse/ClickHouse/pull/8718) ([Alexander Kazakov](https://github.com/Akazz)) This bugfix was backported to version 19.16 by a special request from Altinity.
|
||||
|
||||
#### Clickhouse release v19.16.14.65, 2020-03-05 {#clickhouse-release-v19-16-14-65-2020-03-05}
|
||||
#### ClickHouse release v19.16.14.65, 2020-03-05 {#clickhouse-release-v19-16-14-65-2020-03-05}
|
||||
|
||||
- Fix distributed subqueries incompatibility with older CH versions. Fixes [\#7851](https://github.com/ClickHouse/ClickHouse/issues/7851)
|
||||
[(tabplubix)](https://github.com/tavplubix)
|
||||
@ -1865,7 +1865,7 @@ toc_title: '2019'
|
||||
- Аdded tool for converting an old month-partitioned part to the custom-partitioned format. [\#4195](https://github.com/ClickHouse/ClickHouse/pull/4195) ([Alex Zatelepin](https://github.com/ztlpn))
|
||||
- Added docs about two datasets in s3. [\#4144](https://github.com/ClickHouse/ClickHouse/pull/4144) ([alesapin](https://github.com/alesapin))
|
||||
- Added script which creates changelog from pull requests description. [\#4169](https://github.com/ClickHouse/ClickHouse/pull/4169) [\#4173](https://github.com/ClickHouse/ClickHouse/pull/4173) ([KochetovNicolai](https://github.com/KochetovNicolai)) ([KochetovNicolai](https://github.com/KochetovNicolai))
|
||||
- Added puppet module for Clickhouse. [\#4182](https://github.com/ClickHouse/ClickHouse/pull/4182) ([Maxim Fedotov](https://github.com/MaxFedotov))
|
||||
- Added puppet module for ClickHouse. [\#4182](https://github.com/ClickHouse/ClickHouse/pull/4182) ([Maxim Fedotov](https://github.com/MaxFedotov))
|
||||
- Added docs for a group of undocumented functions. [\#4168](https://github.com/ClickHouse/ClickHouse/pull/4168) ([Winter Zhang](https://github.com/zhang2014))
|
||||
- ARM build fixes. [\#4210](https://github.com/ClickHouse/ClickHouse/pull/4210)[\#4306](https://github.com/ClickHouse/ClickHouse/pull/4306) [\#4291](https://github.com/ClickHouse/ClickHouse/pull/4291) ([proller](https://github.com/proller)) ([proller](https://github.com/proller))
|
||||
- Dictionary tests now able to run from `ctest`. [\#4189](https://github.com/ClickHouse/ClickHouse/pull/4189) ([proller](https://github.com/proller))
|
||||
|
@ -3,3 +3,4 @@ toc_folder_title: What's New
|
||||
toc_priority: 72
|
||||
---
|
||||
|
||||
|
||||
|
@ -13,7 +13,7 @@ Las pruebas funcionales son las más simples y cómodas de usar. La mayoría de
|
||||
|
||||
Cada prueba funcional envía una o varias consultas al servidor ClickHouse en ejecución y compara el resultado con la referencia.
|
||||
|
||||
Las pruebas se encuentran en `testsies` directorio. Hay dos subdirectorios: `stateless` y `stateful`. Las pruebas sin estado ejecutan consultas sin datos de prueba precargados: a menudo crean pequeños conjuntos de datos sintéticos sobre la marcha, dentro de la prueba misma. Las pruebas estatales requieren datos de prueba precargados de Yandex.Métrica y no está disponible para el público en general. Tendemos a usar sólo `stateless` pruebas y evitar la adición de nuevos `stateful` prueba.
|
||||
Las pruebas se encuentran en `queries` directorio. Hay dos subdirectorios: `stateless` y `stateful`. Las pruebas sin estado ejecutan consultas sin datos de prueba precargados: a menudo crean pequeños conjuntos de datos sintéticos sobre la marcha, dentro de la prueba misma. Las pruebas estatales requieren datos de prueba precargados de Yandex.Métrica y no está disponible para el público en general. Tendemos a usar sólo `stateless` pruebas y evitar la adición de nuevos `stateful` prueba.
|
||||
|
||||
Cada prueba puede ser de dos tipos: `.sql` y `.sh`. `.sql` test es el script SQL simple que se canaliza a `clickhouse-client --multiquery --testmode`. `.sh` test es un script que se ejecuta por sí mismo.
|
||||
|
||||
@ -21,7 +21,7 @@ Para ejecutar todas las pruebas, use `testskhouse-test` herramienta. Mira `--hel
|
||||
|
||||
La forma más sencilla de invocar pruebas funcionales es copiar `clickhouse-client` a `/usr/bin/`, ejecutar `clickhouse-server` y luego ejecutar `./clickhouse-test` de su propio directorio.
|
||||
|
||||
Para agregar una nueva prueba, cree un `.sql` o `.sh` archivo en `testsies/0_stateless` directorio, compruébelo manualmente y luego genere `.reference` archivo de la siguiente manera: `clickhouse-client -n --testmode < 00000_test.sql > 00000_test.reference` o `./00000_test.sh > ./00000_test.reference`.
|
||||
Para agregar una nueva prueba, cree un `.sql` o `.sh` archivo en `queries/0_stateless` directorio, compruébelo manualmente y luego genere `.reference` archivo de la siguiente manera: `clickhouse-client -n --testmode < 00000_test.sql > 00000_test.reference` o `./00000_test.sh > ./00000_test.reference`.
|
||||
|
||||
Las pruebas deben usar (crear, soltar, etc.) solo tablas en `test` base de datos que se supone que se crea de antemano; también las pruebas pueden usar tablas temporales.
|
||||
|
||||
@ -36,7 +36,7 @@ deshabilitar estos grupos de pruebas utilizando `--no-zookeeper`, `--no-shard` y
|
||||
|
||||
## Bugs conocidos {#known-bugs}
|
||||
|
||||
Si conocemos algunos errores que se pueden reproducir fácilmente mediante pruebas funcionales, colocamos pruebas funcionales preparadas en `testsies/bugs` directorio. Estas pruebas se moverán a `teststests_stateless` cuando se corrigen errores.
|
||||
Si conocemos algunos errores que se pueden reproducir fácilmente mediante pruebas funcionales, colocamos pruebas funcionales preparadas en `queries/bugs` directorio. Estas pruebas se moverán a `teststests_stateless` cuando se corrigen errores.
|
||||
|
||||
## Pruebas de integración {#integration-tests}
|
||||
|
||||
|
@ -36,6 +36,7 @@ toc_title: Bibliotecas de clientes
|
||||
- [Cualquier evento-ClickHouse](https://metacpan.org/release/AnyEvent-ClickHouse)
|
||||
- Rubí
|
||||
- [Haga clic en Casa (Ruby)](https://github.com/shlima/click_house)
|
||||
- [clickhouse-activerecord](https://github.com/PNixx/clickhouse-activerecord)
|
||||
- R
|
||||
- [Sistema abierto.](https://github.com/hannesmuehleisen/clickhouse-r)
|
||||
- [Bienvenidos al Portal de Licitación Electrónica de Licitación Electrónica](https://github.com/IMSMWU/RClickhouse)
|
||||
|
@ -2,7 +2,7 @@
|
||||
machine_translated: true
|
||||
machine_translated_rev: 3e185d24c9fe772c7cf03d5475247fb829a21dfa
|
||||
toc_priority: 60
|
||||
toc_title: Sistema abierto.
|
||||
toc_title: Sistema abierto
|
||||
---
|
||||
|
||||
# Sistema abierto. {#clickhouse-local}
|
||||
|
@ -14,7 +14,7 @@ toc_title: "\u0646\u062D\u0648\u0647 \u0627\u062C\u0631\u0627\u06CC \u062A\u0633
|
||||
|
||||
هر تست عملکردی یک یا چند نمایش داده شد به سرور در حال اجرا تاتر می فرستد و نتیجه را با مرجع مقایسه می کند.
|
||||
|
||||
تست ها در واقع `testsies` فهرست راهنما. دو زیرشاخه وجود دارد: `stateless` و `stateful`. تست های بدون تابعیت بدون هیچ گونه داده های تست پیش بارگذاری شده نمایش داده می شوند-اغلب مجموعه داده های مصنوعی کوچک را در پرواز در داخل تست خود ایجاد می کنند. تست های نفرت انگیز نیاز به داده های تست از قبل نصب شده از یاندکس.متریکا و در دسترس عموم نیست. ما تمایل به استفاده از تنها `stateless` تست ها و جلوگیری از اضافه کردن جدید `stateful` تستها
|
||||
تست ها در واقع `queries` فهرست راهنما. دو زیرشاخه وجود دارد: `stateless` و `stateful`. تست های بدون تابعیت بدون هیچ گونه داده های تست پیش بارگذاری شده نمایش داده می شوند-اغلب مجموعه داده های مصنوعی کوچک را در پرواز در داخل تست خود ایجاد می کنند. تست های نفرت انگیز نیاز به داده های تست از قبل نصب شده از یاندکس.متریکا و در دسترس عموم نیست. ما تمایل به استفاده از تنها `stateless` تست ها و جلوگیری از اضافه کردن جدید `stateful` تستها
|
||||
|
||||
هر تست می تواند یکی از دو نوع باشد: `.sql` و `.sh`. `.sql` تست اسکریپت ساده مربع است که به لوله کشی است `clickhouse-client --multiquery --testmode`. `.sh` تست یک اسکریپت است که به خودی خود اجرا است.
|
||||
|
||||
@ -22,7 +22,7 @@ toc_title: "\u0646\u062D\u0648\u0647 \u0627\u062C\u0631\u0627\u06CC \u062A\u0633
|
||||
|
||||
ساده ترین راه برای فراخوانی تست های کاربردی کپی است `clickhouse-client` به `/usr/bin/` فرار کن `clickhouse-server` و سپس اجرا کنید `./clickhouse-test` از دایرکتوری خود را.
|
||||
|
||||
برای اضافه کردن تست جدید, ایجاد یک `.sql` یا `.sh` پرونده در `testsies/0_stateless` فهرست راهنما را به صورت دستی بررسی کنید و سپس تولید کنید `.reference` پرونده به روش زیر: `clickhouse-client -n --testmode < 00000_test.sql > 00000_test.reference` یا `./00000_test.sh > ./00000_test.reference`.
|
||||
برای اضافه کردن تست جدید, ایجاد یک `.sql` یا `.sh` پرونده در `queries/0_stateless` فهرست راهنما را به صورت دستی بررسی کنید و سپس تولید کنید `.reference` پرونده به روش زیر: `clickhouse-client -n --testmode < 00000_test.sql > 00000_test.reference` یا `./00000_test.sh > ./00000_test.reference`.
|
||||
|
||||
تست باید استفاده کنید (ساختن, قطره, و غیره) تنها جداول در `test` پایگاه داده است که فرض بر این است که از قبل ایجاد می شود; همچنین تست می توانید جداول موقت استفاده.
|
||||
|
||||
@ -37,7 +37,7 @@ toc_title: "\u0646\u062D\u0648\u0647 \u0627\u062C\u0631\u0627\u06CC \u062A\u0633
|
||||
|
||||
## اشکالات شناخته شده {#known-bugs}
|
||||
|
||||
اگر ما می دانیم برخی از اشکالات است که می تواند به راحتی توسط تست های کاربردی تکثیر, ما تست های عملکردی تهیه شده در `testsies/bugs` فهرست راهنما. این تست خواهد شد به نقل مکان کرد `teststests_stateless` هنگامی که اشکالات ثابت هستند.
|
||||
اگر ما می دانیم برخی از اشکالات است که می تواند به راحتی توسط تست های کاربردی تکثیر, ما تست های عملکردی تهیه شده در `queries/bugs` فهرست راهنما. این تست خواهد شد به نقل مکان کرد `teststests_stateless` هنگامی که اشکالات ثابت هستند.
|
||||
|
||||
## تست های ادغام {#integration-tests}
|
||||
|
||||
|
@ -37,6 +37,7 @@ toc_title: "\u06A9\u062A\u0627\u0628\u062E\u0627\u0646\u0647 \u0647\u0627\u06CC
|
||||
- [هرفنت-کلیکهاوس](https://metacpan.org/release/AnyEvent-ClickHouse)
|
||||
- روبی
|
||||
- [تاتر (روبی)](https://github.com/shlima/click_house)
|
||||
- [clickhouse-activerecord](https://github.com/PNixx/clickhouse-activerecord)
|
||||
- R
|
||||
- [کلیک تحقیق](https://github.com/hannesmuehleisen/clickhouse-r)
|
||||
- [خانه روستایی](https://github.com/IMSMWU/RClickhouse)
|
||||
|
@ -2,8 +2,7 @@
|
||||
machine_translated: true
|
||||
machine_translated_rev: d734a8e46ddd7465886ba4133bff743c55190626
|
||||
toc_priority: 54
|
||||
toc_title: "\u06A9\u0627\u0631 \u0628\u0627 \u0646\u0634\u0627\u0646\u06CC\u0647\u0627\
|
||||
\u06CC \u0627\u06CC\u0646\u062A\u0631\u0646\u062A\u06CC"
|
||||
toc_title: "\u06A9\u0627\u0631 \u0628\u0627 \u0646\u0634\u0627\u0646\u06CC\u0647\u0627\ \u06CC \u0627\u06CC\u0646\u062A\u0631\u0646\u062A\u06CC"
|
||||
---
|
||||
|
||||
# توابع برای کار با نشانیهای اینترنتی {#functions-for-working-with-urls}
|
||||
|
@ -2,7 +2,6 @@
|
||||
machine_translated: true
|
||||
machine_translated_rev: d734a8e46ddd7465886ba4133bff743c55190626
|
||||
toc_priority: 43
|
||||
toc_title: "\u062C\u0633\u062A\u062C\u0648"
|
||||
---
|
||||
|
||||
# جستجو {#table-function-jdbc}
|
||||
|
@ -13,7 +13,7 @@ Les tests fonctionnels sont les plus simples et pratiques à utiliser. La plupar
|
||||
|
||||
Chaque test fonctionnel envoie une ou plusieurs requêtes au serveur clickhouse en cours d'exécution et compare le résultat avec la référence.
|
||||
|
||||
Les Tests sont situés dans `testsies` répertoire. Il y a deux sous-répertoires: `stateless` et `stateful`. Les tests sans état exécutent des requêtes sans données de test préchargées - ils créent souvent de petits ensembles de données synthétiques à la volée, dans le test lui-même. Les tests avec État nécessitent des données de test préchargées de Yandex.Metrica et non disponible pour le grand public. Nous avons tendance à utiliser uniquement `stateless` tests et éviter d'ajouter de nouveaux `stateful` test.
|
||||
Les Tests sont situés dans `queries` répertoire. Il y a deux sous-répertoires: `stateless` et `stateful`. Les tests sans état exécutent des requêtes sans données de test préchargées - ils créent souvent de petits ensembles de données synthétiques à la volée, dans le test lui-même. Les tests avec État nécessitent des données de test préchargées de Yandex.Metrica et non disponible pour le grand public. Nous avons tendance à utiliser uniquement `stateless` tests et éviter d'ajouter de nouveaux `stateful` test.
|
||||
|
||||
Chaque test peut être de deux types: `.sql` et `.sh`. `.sql` test est le script SQL simple qui est canalisé vers `clickhouse-client --multiquery --testmode`. `.sh` test est un script qui est exécuté par lui-même.
|
||||
|
||||
@ -21,7 +21,7 @@ Pour exécuter tous les tests, utilisez `testskhouse-test` outil. Regarder `--he
|
||||
|
||||
Le moyen le plus simple d'invoquer des tests fonctionnels est de copier `clickhouse-client` de `/usr/bin/`, exécuter `clickhouse-server` et puis exécutez `./clickhouse-test` à partir de son propre répertoire.
|
||||
|
||||
Pour ajouter un nouveau test, créez un `.sql` ou `.sh` fichier dans `testsies/0_stateless` répertoire, vérifiez-le manuellement, puis générez `.reference` fichier de la façon suivante: `clickhouse-client -n --testmode < 00000_test.sql > 00000_test.reference` ou `./00000_test.sh > ./00000_test.reference`.
|
||||
Pour ajouter un nouveau test, créez un `.sql` ou `.sh` fichier dans `queries/0_stateless` répertoire, vérifiez-le manuellement, puis générez `.reference` fichier de la façon suivante: `clickhouse-client -n --testmode < 00000_test.sql > 00000_test.reference` ou `./00000_test.sh > ./00000_test.reference`.
|
||||
|
||||
Les Tests doivent utiliser (create, drop, etc) uniquement des tables dans `test` base de données supposée être créée au préalable; les tests peuvent également utiliser des tables temporaires.
|
||||
|
||||
@ -36,7 +36,7 @@ désactivez ces groupes de tests en utilisant `--no-zookeeper`, `--no-shard` et
|
||||
|
||||
## Bugs connus {#known-bugs}
|
||||
|
||||
Si nous connaissons des bugs qui peuvent être facilement reproduits par des tests fonctionnels, nous plaçons des tests fonctionnels préparés dans `testsies/bugs` répertoire. Ces tests seront déplacés à `teststests_stateless` quand les bugs sont corrigés.
|
||||
Si nous connaissons des bugs qui peuvent être facilement reproduits par des tests fonctionnels, nous plaçons des tests fonctionnels préparés dans `queries/bugs` répertoire. Ces tests seront déplacés à `teststests_stateless` quand les bugs sont corrigés.
|
||||
|
||||
## Les Tests D'Intégration {#integration-tests}
|
||||
|
||||
|
@ -36,6 +36,7 @@ toc_title: "Biblioth\xE8ques Clientes"
|
||||
- [AnyEvent-ClickHouse](https://metacpan.org/release/AnyEvent-ClickHouse)
|
||||
- Rubis
|
||||
- [ClickHouse (Ruby)](https://github.com/shlima/click_house)
|
||||
- [clickhouse-activerecord](https://github.com/PNixx/clickhouse-activerecord)
|
||||
- R
|
||||
- [clickhouse-r](https://github.com/hannesmuehleisen/clickhouse-r)
|
||||
- [RClickhouse](https://github.com/IMSMWU/RClickhouse)
|
||||
|
@ -13,7 +13,7 @@ toc_title: "ClickHouse\u30C6\u30B9\u30C8\u3092\u5B9F\u884C\u3059\u308B\u65B9\u6C
|
||||
|
||||
各機能テストは、実行中のclickhouseサーバーに一つまたは複数のクエリを送信し、参照と結果を比較します。
|
||||
|
||||
テストは `testsies` ディレクトリ。 つのサブディレクトリがあります: `stateless` と `stateful`. ステートレステストでは、プリロードされたテストデータを使用せずにクエリを実行します。 ステートフルテストでは、Yandexのテストデータが必要です。メトリカと一般市民には利用できません。 我々は唯一の使用する傾向があります `stateless` テストと新しい追加を避ける `stateful` テスト
|
||||
テストは `queries` ディレクトリ。 つのサブディレクトリがあります: `stateless` と `stateful`. ステートレステストでは、プリロードされたテストデータを使用せずにクエリを実行します。 ステートフルテストでは、Yandexのテストデータが必要です。メトリカと一般市民には利用できません。 我々は唯一の使用する傾向があります `stateless` テストと新しい追加を避ける `stateful` テスト
|
||||
|
||||
それぞれの試験できるの種類: `.sql` と `.sh`. `.sql` testは、パイプ処理される単純なSQLスクリプトです `clickhouse-client --multiquery --testmode`. `.sh` テストは、単独で実行されるスクリプトです。
|
||||
|
||||
@ -21,7 +21,7 @@ toc_title: "ClickHouse\u30C6\u30B9\u30C8\u3092\u5B9F\u884C\u3059\u308B\u65B9\u6C
|
||||
|
||||
機能テストを呼び出す最も簡単な方法は、コピーすることです `clickhouse-client` に `/usr/bin/`、実行 `clickhouse-server` そして、実行 `./clickhouse-test` 独自のディレクトリから。
|
||||
|
||||
新しいテストを追加するには、 `.sql` または `.sh` ファイル `testsies/0_stateless` ディレクトリは、手動でチェックしてから生成 `.reference` 次の方法でファイル: `clickhouse-client -n --testmode < 00000_test.sql > 00000_test.reference` または `./00000_test.sh > ./00000_test.reference`.
|
||||
新しいテストを追加するには、 `.sql` または `.sh` ファイル `queries/0_stateless` ディレクトリは、手動でチェックしてから生成 `.reference` 次の方法でファイル: `clickhouse-client -n --testmode < 00000_test.sql > 00000_test.reference` または `./00000_test.sh > ./00000_test.reference`.
|
||||
|
||||
テストでは、(create、dropなど)テーブルのみを使用する必要があります `test` テストでは一時テーブルを使用することもできます。
|
||||
|
||||
@ -36,7 +36,7 @@ toc_title: "ClickHouse\u30C6\u30B9\u30C8\u3092\u5B9F\u884C\u3059\u308B\u65B9\u6C
|
||||
|
||||
## 既知のバグ {#known-bugs}
|
||||
|
||||
機能テストで簡単に再現できるいくつかのバグを知っていれば、準備された機能テストを `testsies/bugs` ディレクトリ。 これらのテストはに移動されます `teststests_stateless` バグが修正されたとき。
|
||||
機能テストで簡単に再現できるいくつかのバグを知っていれば、準備された機能テストを `queries/bugs` ディレクトリ。 これらのテストはに移動されます `teststests_stateless` バグが修正されたとき。
|
||||
|
||||
## 統合テスト {#integration-tests}
|
||||
|
||||
|
@ -36,6 +36,7 @@ toc_title: "\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8"
|
||||
- [AnyEvent-ClickHouse](https://metacpan.org/release/AnyEvent-ClickHouse)
|
||||
- Ruby
|
||||
- [クリックハウス(ruby)](https://github.com/shlima/click_house)
|
||||
- [clickhouse-activerecord](https://github.com/PNixx/clickhouse-activerecord)
|
||||
- R
|
||||
- [クリックハウス-r](https://github.com/hannesmuehleisen/clickhouse-r)
|
||||
- [Rクリックハウス](https://github.com/IMSMWU/RClickhouse)
|
||||
|
@ -1,5 +0,0 @@
|
||||
---
|
||||
en_copy: true
|
||||
---
|
||||
|
||||
../../../CHANGELOG.md
|
1
docs/ru/changelog/index.md
Symbolic link
1
docs/ru/changelog/index.md
Symbolic link
@ -0,0 +1 @@
|
||||
../../../CHANGELOG.md
|
@ -10,7 +10,7 @@ Functional tests are the most simple and convenient to use. Most of ClickHouse f
|
||||
|
||||
Each functional test sends one or multiple queries to the running ClickHouse server and compares the result with reference.
|
||||
|
||||
Tests are located in `testsies` directory. There are two subdirectories: `stateless` and `stateful`. Stateless tests run queries without any preloaded test data - they often create small synthetic datasets on the fly, within the test itself. Stateful tests require preloaded test data from Yandex.Metrica and not available to general public. We tend to use only `stateless` tests and avoid adding new `stateful` tests.
|
||||
Tests are located in `queries` directory. There are two subdirectories: `stateless` and `stateful`. Stateless tests run queries without any preloaded test data - they often create small synthetic datasets on the fly, within the test itself. Stateful tests require preloaded test data from Yandex.Metrica and not available to general public. We tend to use only `stateless` tests and avoid adding new `stateful` tests.
|
||||
|
||||
Each test can be one of two types: `.sql` and `.sh`. `.sql` test is the simple SQL script that is piped to `clickhouse-client --multiquery --testmode`. `.sh` test is a script that is run by itself.
|
||||
|
||||
@ -18,7 +18,7 @@ To run all tests, use `testskhouse-test` tool. Look `--help` for the list of pos
|
||||
|
||||
The most simple way to invoke functional tests is to copy `clickhouse-client` to `/usr/bin/`, run `clickhouse-server` and then run `./clickhouse-test` from its own directory.
|
||||
|
||||
To add new test, create a `.sql` or `.sh` file in `testsies/0_stateless` directory, check it manually and then generate `.reference` file in the following way: `clickhouse-client -n --testmode < 00000_test.sql > 00000_test.reference` or `./00000_test.sh > ./00000_test.reference`.
|
||||
To add new test, create a `.sql` or `.sh` file in `queries/0_stateless` directory, check it manually and then generate `.reference` file in the following way: `clickhouse-client -n --testmode < 00000_test.sql > 00000_test.reference` or `./00000_test.sh > ./00000_test.reference`.
|
||||
|
||||
Tests should use (create, drop, etc) only tables in `test` database that is assumed to be created beforehand; also tests can use temporary tables.
|
||||
|
||||
@ -33,7 +33,7 @@ disable these groups of tests using `--no-zookeeper`, `--no-shard` and
|
||||
|
||||
## Known bugs {#known-bugs}
|
||||
|
||||
If we know some bugs that can be easily reproduced by functional tests, we place prepared functional tests in `testsies/bugs` directory. These tests will be moved to `teststests_stateless` when bugs are fixed.
|
||||
If we know some bugs that can be easily reproduced by functional tests, we place prepared functional tests in `queries/bugs` directory. These tests will be moved to `teststests_stateless` when bugs are fixed.
|
||||
|
||||
## Integration Tests {#integration-tests}
|
||||
|
||||
|
@ -5,7 +5,7 @@ ClickHouse Playground позволяет моментально выполнит
|
||||
|
||||
Запросы выполняются под пользователем с правами `readonly` для которого есть следующие ограничения:
|
||||
- запрещены DDL запросы
|
||||
- запроещены INSERT запросы
|
||||
- запрещены INSERT запросы
|
||||
|
||||
Также установлены следующие опции:
|
||||
- [`max_result_bytes=10485760`](../operations/settings/query_complexity/#max-result-bytes)
|
||||
|
@ -29,6 +29,7 @@
|
||||
- [AnyEvent-ClickHouse](https://metacpan.org/release/AnyEvent-ClickHouse)
|
||||
- Ruby
|
||||
- [ClickHouse (Ruby)](https://github.com/shlima/click_house)
|
||||
- [clickhouse-activerecord](https://github.com/PNixx/clickhouse-activerecord)
|
||||
- R
|
||||
- [clickhouse-r](https://github.com/hannesmuehleisen/clickhouse-r)
|
||||
- [RClickhouse](https://github.com/IMSMWU/RClickhouse)
|
||||
|
@ -882,27 +882,57 @@ WHERE
|
||||
|
||||
Если этот запрос ничего не возвращает - значит всё хорошо.
|
||||
|
||||
## system.settings {#system-settings}
|
||||
## system.settings {#system-tables-system-settings}
|
||||
|
||||
Содержит информацию о настройках, используемых в данный момент.
|
||||
То есть, используемых для выполнения запроса, с помощью которого вы читаете из таблицы system.settings.
|
||||
Содержит информацию о сессионных настройках для текущего пользователя.
|
||||
|
||||
Столбцы:
|
||||
|
||||
``` text
|
||||
name String - имя настройки
|
||||
value String - значение настройки
|
||||
changed UInt8 - была ли настройка явно задана в конфиге или изменена явным образом
|
||||
- `name` ([String](../data_types/string.md)) — имя настройки.
|
||||
- `value` ([String](../data_types/string.md)) — значение настройки.
|
||||
- `changed` ([UInt8](../data_types/int_uint.md#uint-ranges)) — показывает, изменена ли настройка по отношению к значению по умолчанию.
|
||||
- `description` ([String](../data_types/string.md)) — краткое описание настройки.
|
||||
- `min` ([Nullable](../data_types/nullable.md)([String](../data_types/string.md))) — минимальное значение настройки, если задано [ограничение](settings/constraints_on_settings.md#constraints-on-settings). Если нет, то поле содержит [NULL](../query_language/syntax.md#null-literal).
|
||||
- `max` ([Nullable](../data_types/nullable.md)([String](../data_types/string.md))) — максимальное значение настройки, если задано [ограничение](settings/constraints_on_settings.md#constraints-on-settings). Если нет, то поле содержит [NULL](../query_language/syntax.md#null-literal).
|
||||
- `readonly` ([UInt8](../data_types/int_uint.md#uint-ranges)) — Показывает, может ли пользователь изменять настройку:
|
||||
- `0` — Текущий пользователь может изменять настройку.
|
||||
- `1` — Текущий пользователь не может изменять настройку.
|
||||
|
||||
**Пример**
|
||||
|
||||
Пример показывает как получить информацию о настройках, имена которых содержат `min_i`.
|
||||
|
||||
```sql
|
||||
SELECT *
|
||||
FROM system.settings
|
||||
WHERE name LIKE '%min_i%'
|
||||
```
|
||||
|
||||
Пример:
|
||||
|
||||
``` sql
|
||||
SELECT *
|
||||
FROM system.settings
|
||||
WHERE changed
|
||||
```text
|
||||
┌─name────────────────────────────────────────┬─value─────┬─changed─┬─description───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬─min──┬─max──┬─readonly─┐
|
||||
│ min_insert_block_size_rows │ 1048576 │ 0 │ Squash blocks passed to INSERT query to specified size in rows, if blocks are not big enough. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │
|
||||
│ min_insert_block_size_bytes │ 268435456 │ 0 │ Squash blocks passed to INSERT query to specified size in bytes, if blocks are not big enough. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │
|
||||
│ read_backoff_min_interval_between_events_ms │ 1000 │ 0 │ Settings to reduce the number of threads in case of slow reads. Do not pay attention to the event, if the previous one has passed less than a certain amount of time. │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ 0 │
|
||||
└─────────────────────────────────────────────┴───────────┴─────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴──────┴──────┴──────────┘
|
||||
```
|
||||
|
||||
Использование `WHERE changed` может быть полезно, например, если необходимо проверить:
|
||||
|
||||
- Что настройки корректно загрузились из конфигурационного файла и используются.
|
||||
- Настройки, изменённые в текущей сессии.
|
||||
|
||||
```sql
|
||||
SELECT * FROM system.settings WHERE changed AND name='load_balancing'
|
||||
```
|
||||
|
||||
|
||||
**Cм. также**
|
||||
|
||||
- [Настройки](settings/index.md#settings)
|
||||
- [Разрешения для запросов](settings/permissions_for_queries.md#settings_readonly)
|
||||
- [Ограничения для значений настроек](settings/constraints_on_settings.md)
|
||||
|
||||
## system.table_engines
|
||||
``` text
|
||||
┌─name───────────────────┬─value───────┬─changed─┐
|
||||
│ max_threads │ 8 │ 1 │
|
||||
|
@ -54,7 +54,7 @@ SELECT * FROM hdfs_engine_table LIMIT 2
|
||||
- `*` — Заменяет любое количество любых символов кроме `/`, включая отсутствие символов.
|
||||
- `?` — Заменяет ровно один любой символ.
|
||||
- `{some_string,another_string,yet_another_one}` — Заменяет любую из строк `'some_string', 'another_string', 'yet_another_one'`.
|
||||
- `{N..M}` — Заменяет любое число в интервале от `N` до `M` включительно.
|
||||
- `{N..M}` — Заменяет любое число в интервале от `N` до `M` включительно (может содержать ведущие нули).
|
||||
|
||||
Конструкция с `{}` аналогична табличной функции [remote](../../query_language/table_functions/remote.md).
|
||||
|
||||
|
@ -494,14 +494,14 @@ ALTER TABLE example_table
|
||||
<storage_configuration>
|
||||
<disks>
|
||||
<disk_name_1> <!-- disk name -->
|
||||
<path>/mnt/fast_ssd/clickhouse</path>
|
||||
<path>/mnt/fast_ssd/clickhouse/</path>
|
||||
</disk_name_1>
|
||||
<disk_name_2>
|
||||
<path>/mnt/hdd1/clickhouse</path>
|
||||
<path>/mnt/hdd1/clickhouse/</path>
|
||||
<keep_free_space_bytes>10485760</keep_free_space_bytes>
|
||||
</disk_name_2>
|
||||
<disk_name_3>
|
||||
<path>/mnt/hdd2/clickhouse</path>
|
||||
<path>/mnt/hdd2/clickhouse/</path>
|
||||
<keep_free_space_bytes>10485760</keep_free_space_bytes>
|
||||
</disk_name_3>
|
||||
|
||||
|
@ -523,6 +523,49 @@ FROM (
|
||||
Работает только для чисел.
|
||||
Результат всегда Float64.
|
||||
|
||||
|
||||
## avgWeighted {#avgweighted}
|
||||
|
||||
Вычисляет [среднее арифметическое взвешенное](https://ru.wikipedia.org/wiki/Среднее_арифметическое_взвешенное).
|
||||
|
||||
**Синтаксис**
|
||||
|
||||
```sql
|
||||
avgWeighted(x, weight)
|
||||
```
|
||||
|
||||
**Параметры**
|
||||
|
||||
- `x` — Значения. [Целые числа](../../data_types/int_uint.md) или [числа с плавающей запятой](../../data_types/float.md).
|
||||
- `weight` — Веса отдельных значений. [Целые числа](../../data_types/int_uint.md) или [числа с плавающей запятой](../../data_types/float.md).
|
||||
|
||||
Типы параметров должны совпадать.
|
||||
|
||||
**Возвращаемое значение**
|
||||
|
||||
- Среднее арифметическое взвешенное.
|
||||
- `NaN`, если все веса равны 0.
|
||||
|
||||
Тип: [Float64](../../data_types/float.md)
|
||||
|
||||
**Пример**
|
||||
|
||||
Запрос:
|
||||
|
||||
```sql
|
||||
SELECT avgWeighted(x, w)
|
||||
FROM values('x Int8, w Int8', (4, 1), (1, 0), (10, 2))
|
||||
```
|
||||
|
||||
Результат:
|
||||
|
||||
```text
|
||||
┌─avgWeighted(x, weight)─┐
|
||||
│ 8 │
|
||||
└────────────────────────┘
|
||||
```
|
||||
|
||||
|
||||
## uniq {#agg_function-uniq}
|
||||
|
||||
Приближённо вычисляет количество различных значений аргумента.
|
||||
|
@ -50,7 +50,7 @@ LIMIT 2
|
||||
- `*` — Заменяет любое количество любых символов кроме `/`, включая отсутствие символов.
|
||||
- `?` — Заменяет ровно один любой символ.
|
||||
- `{some_string,another_string,yet_another_one}` — Заменяет любую из строк `'some_string', 'another_string', 'yet_another_one'`.
|
||||
- `{N..M}` — Заменяет любое число в интервале от `N` до `M` включительно.
|
||||
- `{N..M}` — Заменяет любое число в интервале от `N` до `M` включительно (может содержать ведущие нули).
|
||||
|
||||
Конструкция с `{}` аналогична табличной функции [remote](remote.md).
|
||||
|
||||
|
@ -38,7 +38,7 @@ LIMIT 2
|
||||
- `*` — Заменяет любое количество любых символов кроме `/`, включая отсутствие символов.
|
||||
- `?` — Заменяет ровно один любой символ.
|
||||
- `{some_string,another_string,yet_another_one}` — Заменяет любую из строк `'some_string', 'another_string', 'yet_another_one'`.
|
||||
- `{N..M}` — Заменяет любое число в интервале от `N` до `M` включительно.
|
||||
- `{N..M}` — Заменяет любое число в интервале от `N` до `M` включительно (может содержать ведущие нули).
|
||||
|
||||
Конструкция с `{}` аналогична табличной функции [remote](remote.md).
|
||||
|
||||
|
251
docs/toc_zh.yml
251
docs/toc_zh.yml
@ -1,251 +0,0 @@
|
||||
nav:
|
||||
|
||||
- '介绍':
|
||||
- '概貌': 'index.md'
|
||||
- 'ClickHouse的独特功能': 'introduction/distinctive_features.md'
|
||||
- 'ClickHouse功能可被视为缺点': 'introduction/features_considered_disadvantages.md'
|
||||
- '性能': 'introduction/performance.md'
|
||||
- '历史': 'introduction/history.md'
|
||||
- '使用者': 'introduction/adopters.md'
|
||||
|
||||
- '入门指南':
|
||||
- 'hidden': 'getting_started/index.md'
|
||||
- '安装': 'getting_started/install.md'
|
||||
- '教程': 'getting_started/tutorial.md'
|
||||
- '示例数据集':
|
||||
- '介绍': 'getting_started/example_datasets/index.md'
|
||||
- '航班飞行数据': 'getting_started/example_datasets/ontime.md'
|
||||
- '纽约市出租车数据': 'getting_started/example_datasets/nyc_taxi.md'
|
||||
- 'AMPLab大数据基准测试': 'getting_started/example_datasets/amplab_benchmark.md'
|
||||
- '维基访问数据': 'getting_started/example_datasets/wikistat.md'
|
||||
- 'Criteo TB级别点击日志': 'getting_started/example_datasets/criteo.md'
|
||||
- 'Star Schema基准测试': 'getting_started/example_datasets/star_schema.md'
|
||||
- 'Yandex.Metrica': 'getting_started/example_datasets/metrica.md'
|
||||
- 'Playground': 'getting_started/playground.md'
|
||||
|
||||
- '客户端':
|
||||
- '介绍': 'interfaces/index.md'
|
||||
- '命令行客户端接口': 'interfaces/cli.md'
|
||||
- '原生客户端接口 (TCP)': 'interfaces/tcp.md'
|
||||
- 'HTTP 客户端接口': 'interfaces/http.md'
|
||||
- 'MySQL 客户端接口': 'interfaces/mysql.md'
|
||||
- '输入输出格式': 'interfaces/formats.md'
|
||||
- 'JDBC 驱动': 'interfaces/jdbc.md'
|
||||
- 'ODBC 驱动': 'interfaces/odbc.md'
|
||||
- 'C ++客户端库': 'interfaces/cpp.md'
|
||||
- '第三方':
|
||||
- '客户端库': 'interfaces/third-party/client_libraries.md'
|
||||
- '集成': 'interfaces/third-party/integrations.md'
|
||||
- '可视界面': 'interfaces/third-party/gui.md'
|
||||
- '代理': 'interfaces/third-party/proxy.md'
|
||||
|
||||
- '数据类型':
|
||||
- '介绍': 'data_types/index.md'
|
||||
- 'UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64': 'data_types/int_uint.md'
|
||||
- 'Float32, Float64': 'data_types/float.md'
|
||||
- 'Decimal': 'data_types/decimal.md'
|
||||
- 'Boolean values': 'data_types/boolean.md'
|
||||
- 'String': 'data_types/string.md'
|
||||
- 'FixedString(N)': 'data_types/fixedstring.md'
|
||||
- 'UUID': 'data_types/uuid.md'
|
||||
- 'Date': 'data_types/date.md'
|
||||
- 'DateTime64': 'data_types/datetime64.md'
|
||||
- 'DateTime': 'data_types/datetime.md'
|
||||
- 'Enum': 'data_types/enum.md'
|
||||
- 'Array(T)': 'data_types/array.md'
|
||||
- 'AggregateFunction(name, types_of_arguments...)': 'data_types/nested_data_structures/aggregatefunction.md'
|
||||
- 'Tuple(T1, T2, ...)': 'data_types/tuple.md'
|
||||
- 'Nullable': 'data_types/nullable.md'
|
||||
- '嵌套数据结构':
|
||||
- 'hidden': 'data_types/nested_data_structures/index.md'
|
||||
- 'Nested(Name1 Type1, Name2 Type2, ...)': 'data_types/nested_data_structures/nested.md'
|
||||
- '特殊数据类型':
|
||||
- 'hidden': 'data_types/special_data_types/index.md'
|
||||
- 'Expression': 'data_types/special_data_types/expression.md'
|
||||
- 'Set': 'data_types/special_data_types/set.md'
|
||||
- 'Nothing': 'data_types/special_data_types/nothing.md'
|
||||
- 'Interval': 'data_types/special_data_types/interval.md'
|
||||
- 'Domain类型':
|
||||
- '介绍': 'data_types/domains/overview.md'
|
||||
- 'IPv4': 'data_types/domains/ipv4.md'
|
||||
- 'IPv6': 'data_types/domains/ipv6.md'
|
||||
|
||||
- '数据库引擎':
|
||||
- '介绍': 'database_engines/index.md'
|
||||
- 'MySQL': 'database_engines/mysql.md'
|
||||
- 'Lazy': 'database_engines/lazy.md'
|
||||
|
||||
- '表引擎':
|
||||
- '介绍': 'operations/table_engines/index.md'
|
||||
- 'MergeTree':
|
||||
- 'MergeTree': 'operations/table_engines/mergetree.md'
|
||||
- 'Data Replication': 'operations/table_engines/replication.md'
|
||||
- 'Custom Partitioning Key': 'operations/table_engines/custom_partitioning_key.md'
|
||||
- 'ReplacingMergeTree': 'operations/table_engines/replacingmergetree.md'
|
||||
- 'SummingMergeTree': 'operations/table_engines/summingmergetree.md'
|
||||
- 'AggregatingMergeTree': 'operations/table_engines/aggregatingmergetree.md'
|
||||
- 'CollapsingMergeTree': 'operations/table_engines/collapsingmergetree.md'
|
||||
- 'VersionedCollapsingMergeTree': 'operations/table_engines/versionedcollapsingmergetree.md'
|
||||
- 'GraphiteMergeTree': 'operations/table_engines/graphitemergetree.md'
|
||||
- 'Log':
|
||||
- '介绍': 'operations/table_engines/log_family.md'
|
||||
- 'StripeLog': 'operations/table_engines/stripelog.md'
|
||||
- 'Log': 'operations/table_engines/log.md'
|
||||
- 'TinyLog': 'operations/table_engines/tinylog.md'
|
||||
- '外部表引擎':
|
||||
- 'Kafka': 'operations/table_engines/kafka.md'
|
||||
- 'MySQL': 'operations/table_engines/mysql.md'
|
||||
- 'JDBC': 'operations/table_engines/jdbc.md'
|
||||
- 'ODBC': 'operations/table_engines/odbc.md'
|
||||
- 'HDFS': 'operations/table_engines/hdfs.md'
|
||||
- '其他表引擎':
|
||||
- 'Distributed': 'operations/table_engines/distributed.md'
|
||||
- 'External data': 'operations/table_engines/external_data.md'
|
||||
- 'Dictionary': 'operations/table_engines/dictionary.md'
|
||||
- 'Merge': 'operations/table_engines/merge.md'
|
||||
- 'File': 'operations/table_engines/file.md'
|
||||
- 'Null': 'operations/table_engines/null.md'
|
||||
- 'Set': 'operations/table_engines/set.md'
|
||||
- 'Join': 'operations/table_engines/join.md'
|
||||
- 'URL': 'operations/table_engines/url.md'
|
||||
- 'View': 'operations/table_engines/view.md'
|
||||
- 'MaterializedView': 'operations/table_engines/materializedview.md'
|
||||
- 'Memory': 'operations/table_engines/memory.md'
|
||||
- 'Buffer': 'operations/table_engines/buffer.md'
|
||||
- 'GenerateRandom': 'operations/table_engines/generate.md'
|
||||
|
||||
- 'SQL语法':
|
||||
- 'hidden': 'query_language/index.md'
|
||||
- 'SELECT': 'query_language/select.md'
|
||||
- 'INSERT INTO': 'query_language/insert_into.md'
|
||||
- 'CREATE': 'query_language/create.md'
|
||||
- 'ALTER': 'query_language/alter.md'
|
||||
- 'SYSTEM': 'query_language/system.md'
|
||||
- 'SHOW': 'query_language/show.md'
|
||||
- '其他类型的查询': 'query_language/misc.md'
|
||||
- '函数':
|
||||
- '介绍': 'query_language/functions/index.md'
|
||||
- '算术函数': 'query_language/functions/arithmetic_functions.md'
|
||||
- '比较函数': 'query_language/functions/comparison_functions.md'
|
||||
- '逻辑函数': 'query_language/functions/logical_functions.md'
|
||||
- '类型转换函数': 'query_language/functions/type_conversion_functions.md'
|
||||
- '时间日期函数': 'query_language/functions/date_time_functions.md'
|
||||
- '字符串函数': 'query_language/functions/string_functions.md'
|
||||
- '字符串搜索函数': 'query_language/functions/string_search_functions.md'
|
||||
- '字符串替换函数': 'query_language/functions/string_replace_functions.md'
|
||||
- '条件函数 ': 'query_language/functions/conditional_functions.md'
|
||||
- '数学函数': 'query_language/functions/math_functions.md'
|
||||
- '取整函数': 'query_language/functions/rounding_functions.md'
|
||||
- '数组函数': 'query_language/functions/array_functions.md'
|
||||
- '字符串拆分合并函数': 'query_language/functions/splitting_merging_functions.md'
|
||||
- '位操作函数': 'query_language/functions/bit_functions.md'
|
||||
- '位图函数': 'query_language/functions/bitmap_functions.md'
|
||||
- 'Hash函数': 'query_language/functions/hash_functions.md'
|
||||
- '随机函数': 'query_language/functions/random_functions.md'
|
||||
- '编码函数': 'query_language/functions/encoding_functions.md'
|
||||
- 'UUID函数': 'query_language/functions/uuid_functions.md'
|
||||
- 'URL函数': 'query_language/functions/url_functions.md'
|
||||
- 'IP函数': 'query_language/functions/ip_address_functions.md'
|
||||
- 'JSON函数': 'query_language/functions/json_functions.md'
|
||||
- '高阶函数': 'query_language/functions/higher_order_functions.md'
|
||||
- '字典函数': 'query_language/functions/ext_dict_functions.md'
|
||||
- 'Yandex.Metrica字典函数': 'query_language/functions/ym_dict_functions.md'
|
||||
- 'IN运算符相关函数': 'query_language/functions/in_functions.md'
|
||||
- 'arrayJoin函数': 'query_language/functions/array_join.md'
|
||||
- 'GEO函数': 'query_language/functions/geo.md'
|
||||
- 'Nullable处理函数': 'query_language/functions/functions_for_nulls.md'
|
||||
- '机器学习函数': 'query_language/functions/machine_learning_functions.md'
|
||||
- 'Introspection': 'query_language/functions/introspection.md'
|
||||
- '其他函数': 'query_language/functions/other_functions.md'
|
||||
- '聚合函数':
|
||||
- '介绍': 'query_language/agg_functions/index.md'
|
||||
- '函数列表': 'query_language/agg_functions/reference.md'
|
||||
- '聚合函数组合子': 'query_language/agg_functions/combinators.md'
|
||||
- '参数化聚合函数': 'query_language/agg_functions/parametric_functions.md'
|
||||
- '表引擎函数':
|
||||
- '介绍': 'query_language/table_functions/index.md'
|
||||
- 'file': 'query_language/table_functions/file.md'
|
||||
- 'merge': 'query_language/table_functions/merge.md'
|
||||
- 'numbers': 'query_language/table_functions/numbers.md'
|
||||
- 'remote': 'query_language/table_functions/remote.md'
|
||||
- 'url': 'query_language/table_functions/url.md'
|
||||
- 'mysql': 'query_language/table_functions/mysql.md'
|
||||
- 'jdbc': 'query_language/table_functions/jdbc.md'
|
||||
- 'odbc': 'query_language/table_functions/odbc.md'
|
||||
- 'hdfs': 'query_language/table_functions/hdfs.md'
|
||||
- 'input': 'query_language/table_functions/input.md'
|
||||
- 'generateRandom': 'query_language/table_functions/generate.md'
|
||||
- '字典':
|
||||
- '介绍': 'query_language/dicts/index.md'
|
||||
- '外部字典':
|
||||
- '介绍': 'query_language/dicts/external_dicts.md'
|
||||
- '配置外部字典': 'query_language/dicts/external_dicts_dict.md'
|
||||
- '字典的内存布局': 'query_language/dicts/external_dicts_dict_layout.md'
|
||||
- '字典的刷新策略': 'query_language/dicts/external_dicts_dict_lifetime.md'
|
||||
- '字典的外部数据源': 'query_language/dicts/external_dicts_dict_sources.md'
|
||||
- '字典的键和字段值': 'query_language/dicts/external_dicts_dict_structure.md'
|
||||
- 'Hierarchical dictionaries': 'query_language/dicts/external_dicts_dict_hierarchical.md'
|
||||
- '内部字典': 'query_language/dicts/internal_dicts.md'
|
||||
- '操作符': 'query_language/operators.md'
|
||||
- '语法说明': 'query_language/syntax.md'
|
||||
|
||||
- 'Guides':
|
||||
- 'Overview': 'guides/index.md'
|
||||
- 'Applying CatBoost Models': 'guides/apply_catboost_model.md'
|
||||
|
||||
- '运维':
|
||||
- '介绍': 'operations/index.md'
|
||||
- '环境要求': 'operations/requirements.md'
|
||||
- '监控': 'operations/monitoring.md'
|
||||
- '故障排查': 'operations/troubleshooting.md'
|
||||
- '使用建议': 'operations/tips.md'
|
||||
- '版本升级': 'operations/update.md'
|
||||
- '访问权限控制': 'operations/access_rights.md'
|
||||
- '数据备份': 'operations/backup.md'
|
||||
- '配置文件': 'operations/configuration_files.md'
|
||||
- '配额': 'operations/quotas.md'
|
||||
- '系统表': 'operations/system_tables.md'
|
||||
- '优化性能':
|
||||
- '查询分析': 'operations/performance/sampling_query_profiler.md'
|
||||
- '测试硬件': 'operations/performance_test.md'
|
||||
- 'Server参数配置':
|
||||
- '介绍': 'operations/server_settings/index.md'
|
||||
- 'Server参数说明': 'operations/server_settings/settings.md'
|
||||
- 'Settings配置':
|
||||
- '介绍': 'operations/settings/index.md'
|
||||
- '查询权限管理': 'operations/settings/permissions_for_queries.md'
|
||||
- '查询复杂性的限制': 'operations/settings/query_complexity.md'
|
||||
- 'Setting列表': 'operations/settings/settings.md'
|
||||
- 'Setting配置组': 'operations/settings/settings_profiles.md'
|
||||
- '用户配置': 'operations/settings/settings_users.md'
|
||||
- 'Settings的约束': 'operations/settings/constraints_on_settings.md'
|
||||
- '常用工具':
|
||||
- '介绍': 'operations/utils/index.md'
|
||||
- 'clickhouse-copier': 'operations/utils/clickhouse-copier.md'
|
||||
- 'clickhouse-local': 'operations/utils/clickhouse-local.md'
|
||||
- 'clickhouse-benchmark': 'operations/utils/clickhouse-benchmark.md'
|
||||
|
||||
- '常见问题':
|
||||
- '一般的问题': 'faq/general.md'
|
||||
|
||||
- '开发者指南':
|
||||
- 'hidden': 'development/index.md'
|
||||
- '开发者指南': 'development/developer_instruction.md'
|
||||
- 'ClickHouse架构概述': 'development/architecture.md'
|
||||
- 'ClickHouse Code Browser': 'development/browse_code.md'
|
||||
- '如何在Linux中编译ClickHouse': 'development/build.md'
|
||||
- '如何在Mac OS X中编译ClickHouse': 'development/build_osx.md'
|
||||
- '如何在Linux中编译Mac OS X ClickHouse': 'development/build_cross_osx.md'
|
||||
- '如何在Linux中编译AARCH64 (ARM64) ClickHouse': 'development/build_cross_arm.md'
|
||||
- '如何编写C++代码': 'development/style.md'
|
||||
- '如何运行ClickHouse测试': 'development/tests.md'
|
||||
- '使用的第三方库': 'development/contrib.md'
|
||||
|
||||
- '新功能特性':
|
||||
- '路线图': 'roadmap.md'
|
||||
- '更新日志':
|
||||
- '2020': 'changelog/index.md'
|
||||
- '2019': 'changelog/2019.md'
|
||||
- '2018': 'changelog/2018.md'
|
||||
- '2017': 'changelog/2017.md'
|
||||
- '安全更改日志': 'security_changelog.md'
|
@ -1,7 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import argparse
|
||||
import collections
|
||||
import datetime
|
||||
import logging
|
||||
import os
|
||||
@ -22,6 +21,7 @@ from mkdocs.commands import build as mkdocs_build
|
||||
from concatenate import concatenate
|
||||
|
||||
import mdx_clickhouse
|
||||
import nav
|
||||
import test
|
||||
import util
|
||||
import website
|
||||
@ -41,39 +41,6 @@ class ClickHouseMarkdown(markdown.extensions.Extension):
|
||||
markdown.extensions.ClickHouseMarkdown = ClickHouseMarkdown
|
||||
|
||||
|
||||
def build_nav_entry(root):
|
||||
if root.endswith('images'):
|
||||
return None, None, None
|
||||
result_items = []
|
||||
index_meta, _ = util.read_md_file(os.path.join(root, 'index.md'))
|
||||
current_title = index_meta.get('toc_folder_title', index_meta.get('toc_title', 'hidden'))
|
||||
for filename in os.listdir(root):
|
||||
path = os.path.join(root, filename)
|
||||
if os.path.isdir(path):
|
||||
prio, title, payload = build_nav_entry(path)
|
||||
if title and payload:
|
||||
result_items.append((prio, title, payload))
|
||||
elif filename.endswith('.md'):
|
||||
path = os.path.join(root, filename)
|
||||
meta, _ = util.read_md_file(path)
|
||||
path = path.split('/', 2)[-1]
|
||||
title = meta.get('toc_title', 'hidden')
|
||||
prio = meta.get('toc_priority', 9999)
|
||||
result_items.append((prio, title, path))
|
||||
result_items = sorted(result_items, key=lambda x: (x[0], x[1]))
|
||||
result = collections.OrderedDict([(item[1], item[2]) for item in result_items])
|
||||
return index_meta.get('toc_priority', 10000), current_title, result
|
||||
|
||||
|
||||
def build_nav(lang, args):
|
||||
docs_dir = os.path.join(args.docs_dir, lang)
|
||||
_, _, nav = build_nav_entry(docs_dir)
|
||||
result = []
|
||||
for key, value in nav.items():
|
||||
result.append({key: value})
|
||||
return result
|
||||
|
||||
|
||||
def build_for_lang(lang, args):
|
||||
logging.info(f'Building {lang} docs')
|
||||
os.environ['SINGLE_PAGE'] = '0'
|
||||
@ -120,10 +87,10 @@ def build_for_lang(lang, args):
|
||||
|
||||
site_names = {
|
||||
'en': 'ClickHouse %s Documentation',
|
||||
'zh': 'ClickHouse文档 %s',
|
||||
'es': 'Documentación de ClickHouse %s',
|
||||
'fr': 'Documentation ClickHouse %s',
|
||||
'ru': 'Документация ClickHouse %s',
|
||||
'zh': 'ClickHouse文档 %s',
|
||||
'ja': 'ClickHouseドキュメント %s',
|
||||
'fa': 'مستندات %sClickHouse'
|
||||
}
|
||||
@ -185,11 +152,9 @@ def build_for_lang(lang, args):
|
||||
)
|
||||
|
||||
if os.path.exists(config_path):
|
||||
nav = None
|
||||
raw_config['config_file'] = config_path
|
||||
else:
|
||||
nav = build_nav(lang, args)
|
||||
raw_config['nav'] = nav
|
||||
raw_config['nav'] = nav.build_nav(lang, args)
|
||||
|
||||
cfg = config.load_config(**raw_config)
|
||||
|
||||
@ -202,7 +167,7 @@ def build_for_lang(lang, args):
|
||||
mkdocs_build.build(cfg)
|
||||
|
||||
if not args.skip_single_page:
|
||||
build_single_page_version(lang, args, nav, cfg)
|
||||
build_single_page_version(lang, args, raw_config.get('nav'), cfg)
|
||||
|
||||
mdx_clickhouse.PatchedMacrosPlugin.disabled = False
|
||||
|
||||
|
@ -8,7 +8,7 @@ import yaml
|
||||
|
||||
import util
|
||||
|
||||
lang = 'ru'
|
||||
lang = 'zh'
|
||||
base_dir = os.path.join(os.path.dirname(__file__), '..')
|
||||
en_dir = os.path.join(base_dir, 'en')
|
||||
docs_dir = os.path.join(base_dir, lang)
|
||||
@ -57,7 +57,7 @@ def process_md_file(title, idx, original_path, proper_path):
|
||||
if original_path != proper_md_path:
|
||||
subprocess.check_call(f'git add {proper_md_path}', shell=True)
|
||||
if os.path.exists(original_path):
|
||||
subprocess.check_call(f'git rm {original_path}', shell=True)
|
||||
subprocess.check_call(f'rm {original_path}', shell=True)
|
||||
|
||||
|
||||
def process_toc_entry(entry, path, idx):
|
||||
@ -125,13 +125,13 @@ def sync_translation():
|
||||
lang_meta, lang_content = util.read_md_file(lang_src)
|
||||
en_meta.update(lang_meta)
|
||||
|
||||
for src, dst in redirects.items():
|
||||
lang_content = lang_content.replace('(' + src, '(' + dst)
|
||||
lang_content = lang_content.replace('../' + src, '../' + dst)
|
||||
for src_link, dst_link in redirects.items():
|
||||
lang_content = lang_content.replace('(' + src_link, '(' + dst)
|
||||
lang_content = lang_content.replace('../' + src_link, '../' + dst)
|
||||
|
||||
util.write_md_file(lang_dst, en_meta, lang_content)
|
||||
subprocess.check_call(f'git add {lang_dst}', shell=True)
|
||||
subprocess.check_call(f'git rm {lang_src}', shell=True)
|
||||
subprocess.check_call(f'rm {lang_src}', shell=True)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
52
docs/tools/nav.py
Normal file
52
docs/tools/nav.py
Normal file
@ -0,0 +1,52 @@
|
||||
import collections
|
||||
import logging
|
||||
import os
|
||||
|
||||
import util
|
||||
|
||||
|
||||
def find_first_header(content):
|
||||
for line in content.split('\n'):
|
||||
if line.startswith('#'):
|
||||
no_hash = line.lstrip('#')
|
||||
return no_hash.split('{', 1)[0].strip()
|
||||
|
||||
|
||||
def build_nav_entry(root):
|
||||
if root.endswith('images'):
|
||||
return None, None, None
|
||||
result_items = []
|
||||
index_meta, index_content = util.read_md_file(os.path.join(root, 'index.md'))
|
||||
current_title = index_meta.get('toc_folder_title', index_meta.get('toc_title', find_first_header(index_content)))
|
||||
for filename in os.listdir(root):
|
||||
path = os.path.join(root, filename)
|
||||
if os.path.isdir(path):
|
||||
prio, title, payload = build_nav_entry(path)
|
||||
if title and payload:
|
||||
result_items.append((prio, title, payload))
|
||||
elif filename.endswith('.md'):
|
||||
path = os.path.join(root, filename)
|
||||
meta, content = util.read_md_file(path)
|
||||
path = path.split('/', 2)[-1]
|
||||
title = meta.get('toc_title', find_first_header(content))
|
||||
if title:
|
||||
title = title.strip().rstrip('.')
|
||||
else:
|
||||
title = meta.get('toc_folder_title', 'hidden')
|
||||
prio = meta.get('toc_priority', 9999)
|
||||
logging.debug(f'Nav entry: {prio}, {title}, {path}')
|
||||
result_items.append((prio, title, path))
|
||||
result_items = sorted(result_items, key=lambda x: (x[0], x[1]))
|
||||
result = collections.OrderedDict([(item[1], item[2]) for item in result_items])
|
||||
return index_meta.get('toc_priority', 10000), current_title, result
|
||||
|
||||
|
||||
def build_nav(lang, args):
|
||||
docs_dir = os.path.join(args.docs_dir, lang)
|
||||
_, _, nav = build_nav_entry(docs_dir)
|
||||
result = []
|
||||
for key, value in nav.items():
|
||||
if key and value:
|
||||
result.append({key: value})
|
||||
print('result', result)
|
||||
return result
|
@ -1,8 +1,8 @@
|
||||
Babel==2.8.0
|
||||
backports-abc==0.5
|
||||
backports.functools-lru-cache==1.6.1
|
||||
beautifulsoup4==4.8.2
|
||||
certifi==2019.11.28
|
||||
beautifulsoup4==4.9.0
|
||||
certifi==2020.4.5.1
|
||||
chardet==3.0.4
|
||||
click==7.1.1
|
||||
closure==20191111
|
||||
@ -25,7 +25,7 @@ nose==1.3.7
|
||||
protobuf==3.11.3
|
||||
numpy==1.18.2
|
||||
Pygments==2.5.2
|
||||
pymdown-extensions==6.3
|
||||
pymdown-extensions==7.0
|
||||
python-slugify==1.2.6
|
||||
PyYAML==5.3.1
|
||||
repackage==0.7.3
|
||||
|
@ -36,7 +36,7 @@ def process_buffer(buffer, new_value, item=None, is_header=False):
|
||||
debug(f'Translate: "{text}" -> "{translated_text}"')
|
||||
|
||||
if text and text[0].isupper() and not translated_text[0].isupper():
|
||||
translated_text = translated_text.capitalize()
|
||||
translated_text = translated_text[0].upper() + translated_text[1:]
|
||||
|
||||
if text.startswith(' ') and not translated_text.startswith(' '):
|
||||
translated_text = ' ' + translated_text
|
||||
@ -44,12 +44,22 @@ def process_buffer(buffer, new_value, item=None, is_header=False):
|
||||
if text.endswith(' ') and not translated_text.endswith(' '):
|
||||
translated_text = translated_text + ' '
|
||||
|
||||
title_case = False # is_header and translate.default_target_language == 'en' and text[0].isupper()
|
||||
title_case_whitelist = {'a', 'an', 'the', 'and', 'or'}
|
||||
if is_header and translated_text.endswith('.'):
|
||||
translated_text = translated_text.rstrip('.')
|
||||
|
||||
title_case = is_header and translate.default_target_language == 'en' and text[0].isupper()
|
||||
title_case_whitelist = {
|
||||
'a', 'an', 'the', 'and', 'or', 'that',
|
||||
'of', 'on', 'for', 'from', 'with', 'to', 'in'
|
||||
}
|
||||
is_first_iteration = True
|
||||
for token in translated_text.split(' '):
|
||||
if title_case and not token.isupper():
|
||||
if token not in title_case_whitelist:
|
||||
token = token.capitalize()
|
||||
if title_case and token.isascii() and not token.isupper():
|
||||
if len(token) > 1 and token.lower() not in title_case_whitelist:
|
||||
token = token[0].upper() + token[1:]
|
||||
elif not is_first_iteration:
|
||||
token = token.lower()
|
||||
is_first_iteration = False
|
||||
|
||||
new_value.append(pandocfilters.Str(token))
|
||||
new_value.append(pandocfilters.Space())
|
||||
|
21
docs/tools/translate/remove_machine_translated_meta.py
Executable file
21
docs/tools/translate/remove_machine_translated_meta.py
Executable file
@ -0,0 +1,21 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import sys
|
||||
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
|
||||
import convert_toc
|
||||
import util
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
path = sys.argv[1][2:]
|
||||
convert_toc.init_redirects()
|
||||
try:
|
||||
path = convert_toc.redirects[path]
|
||||
except KeyError:
|
||||
pass
|
||||
meta, content = util.read_md_file(path)
|
||||
if 'machine_translated' in meta:
|
||||
del meta['machine_translated']
|
||||
if 'machine_translated_rev' in meta:
|
||||
del meta['machine_translated_rev']
|
||||
util.write_md_file(path, meta, content)
|
@ -1,5 +1,5 @@
|
||||
Babel==2.8.0
|
||||
certifi==2019.11.28
|
||||
certifi==2020.4.5.1
|
||||
chardet==3.0.4
|
||||
googletrans==2.4.0
|
||||
idna==2.9
|
||||
|
@ -23,6 +23,9 @@ if __name__ == '__main__':
|
||||
title = meta.get('toc_title')
|
||||
if title:
|
||||
meta['toc_title'] = translate.translate(title, target_language)
|
||||
folder_title = meta.get('toc_folder_title')
|
||||
if folder_title:
|
||||
meta['toc_folder_title'] = translate.translate(folder_title, target_language)
|
||||
if 'en_copy' in meta:
|
||||
del meta['en_copy']
|
||||
|
||||
|
@ -1,265 +0,0 @@
|
||||
---
|
||||
en_copy: true
|
||||
---
|
||||
|
||||
### ClickHouse release 1.1.54327, 2017-12-21 {#clickhouse-release-1-1-54327-2017-12-21}
|
||||
|
||||
This release contains bug fixes for the previous release 1.1.54318:
|
||||
|
||||
- Fixed bug with possible race condition in replication that could lead to data loss. This issue affects versions 1.1.54310 and 1.1.54318. If you use one of these versions with Replicated tables, the update is strongly recommended. This issue shows in logs in Warning messages like `Part ... from own log doesn't exist.` The issue is relevant even if you don’t see these messages in logs.
|
||||
|
||||
### ClickHouse release 1.1.54318, 2017-11-30 {#clickhouse-release-1-1-54318-2017-11-30}
|
||||
|
||||
This release contains bug fixes for the previous release 1.1.54310:
|
||||
|
||||
- Fixed incorrect row deletions during merges in the SummingMergeTree engine
|
||||
- Fixed a memory leak in unreplicated MergeTree engines
|
||||
- Fixed performance degradation with frequent inserts in MergeTree engines
|
||||
- Fixed an issue that was causing the replication queue to stop running
|
||||
- Fixed rotation and archiving of server logs
|
||||
|
||||
### ClickHouse release 1.1.54310, 2017-11-01 {#clickhouse-release-1-1-54310-2017-11-01}
|
||||
|
||||
#### New features: {#new-features}
|
||||
|
||||
- Custom partitioning key for the MergeTree family of table engines.
|
||||
- [Kafka](https://clickhouse.yandex/docs/en/operations/table_engines/kafka/) table engine.
|
||||
- Added support for loading [CatBoost](https://catboost.yandex/) models and applying them to data stored in ClickHouse.
|
||||
- Added support for time zones with non-integer offsets from UTC.
|
||||
- Added support for arithmetic operations with time intervals.
|
||||
- The range of values for the Date and DateTime types is extended to the year 2105.
|
||||
- Added the `CREATE MATERIALIZED VIEW x TO y` query (specifies an existing table for storing the data of a materialized view).
|
||||
- Added the `ATTACH TABLE` query without arguments.
|
||||
- The processing logic for Nested columns with names ending in -Map in a SummingMergeTree table was extracted to the sumMap aggregate function. You can now specify such columns explicitly.
|
||||
- Max size of the IP trie dictionary is increased to 128M entries.
|
||||
- Added the getSizeOfEnumType function.
|
||||
- Added the sumWithOverflow aggregate function.
|
||||
- Added support for the Cap’n Proto input format.
|
||||
- You can now customize compression level when using the zstd algorithm.
|
||||
|
||||
#### Backward incompatible changes: {#backward-incompatible-changes}
|
||||
|
||||
- Creation of temporary tables with an engine other than Memory is not allowed.
|
||||
- Explicit creation of tables with the View or MaterializedView engine is not allowed.
|
||||
- During table creation, a new check verifies that the sampling key expression is included in the primary key.
|
||||
|
||||
#### Bug fixes: {#bug-fixes}
|
||||
|
||||
- Fixed hangups when synchronously inserting into a Distributed table.
|
||||
- Fixed nonatomic adding and removing of parts in Replicated tables.
|
||||
- Data inserted into a materialized view is not subjected to unnecessary deduplication.
|
||||
- Executing a query to a Distributed table for which the local replica is lagging and remote replicas are unavailable does not result in an error anymore.
|
||||
- Users don’t need access permissions to the `default` database to create temporary tables anymore.
|
||||
- Fixed crashing when specifying the Array type without arguments.
|
||||
- Fixed hangups when the disk volume containing server logs is full.
|
||||
- Fixed an overflow in the toRelativeWeekNum function for the first week of the Unix epoch.
|
||||
|
||||
#### Build improvements: {#build-improvements}
|
||||
|
||||
- Several third-party libraries (notably Poco) were updated and converted to git submodules.
|
||||
|
||||
### ClickHouse release 1.1.54304, 2017-10-19 {#clickhouse-release-1-1-54304-2017-10-19}
|
||||
|
||||
#### New features: {#new-features-1}
|
||||
|
||||
- TLS support in the native protocol (to enable, set `tcp_ssl_port` in `config.xml` ).
|
||||
|
||||
#### Bug fixes: {#bug-fixes-1}
|
||||
|
||||
- `ALTER` for replicated tables now tries to start running as soon as possible.
|
||||
- Fixed crashing when reading data with the setting `preferred_block_size_bytes=0.`
|
||||
- Fixed crashes of `clickhouse-client` when pressing `Page Down`
|
||||
- Correct interpretation of certain complex queries with `GLOBAL IN` and `UNION ALL`
|
||||
- `FREEZE PARTITION` always works atomically now.
|
||||
- Empty POST requests now return a response with code 411.
|
||||
- Fixed interpretation errors for expressions like `CAST(1 AS Nullable(UInt8)).`
|
||||
- Fixed an error when reading `Array(Nullable(String))` columns from `MergeTree` tables.
|
||||
- Fixed crashing when parsing queries like `SELECT dummy AS dummy, dummy AS b`
|
||||
- Users are updated correctly with invalid `users.xml`
|
||||
- Correct handling when an executable dictionary returns a non-zero response code.
|
||||
|
||||
### ClickHouse release 1.1.54292, 2017-09-20 {#clickhouse-release-1-1-54292-2017-09-20}
|
||||
|
||||
#### New features: {#new-features-2}
|
||||
|
||||
- Added the `pointInPolygon` function for working with coordinates on a coordinate plane.
|
||||
- Added the `sumMap` aggregate function for calculating the sum of arrays, similar to `SummingMergeTree`.
|
||||
- Added the `trunc` function. Improved performance of the rounding functions (`round`, `floor`, `ceil`, `roundToExp2`) and corrected the logic of how they work. Changed the logic of the `roundToExp2` function for fractions and negative numbers.
|
||||
- The ClickHouse executable file is now less dependent on the libc version. The same ClickHouse executable file can run on a wide variety of Linux systems. There is still a dependency when using compiled queries (with the setting `compile = 1` , which is not used by default).
|
||||
- Reduced the time needed for dynamic compilation of queries.
|
||||
|
||||
#### Bug fixes: {#bug-fixes-2}
|
||||
|
||||
- Fixed an error that sometimes produced `part ... intersects previous part` messages and weakened replica consistency.
|
||||
- Fixed an error that caused the server to lock up if ZooKeeper was unavailable during shutdown.
|
||||
- Removed excessive logging when restoring replicas.
|
||||
- Fixed an error in the UNION ALL implementation.
|
||||
- Fixed an error in the concat function that occurred if the first column in a block has the Array type.
|
||||
- Progress is now displayed correctly in the system.merges table.
|
||||
|
||||
### ClickHouse release 1.1.54289, 2017-09-13 {#clickhouse-release-1-1-54289-2017-09-13}
|
||||
|
||||
#### New features: {#new-features-3}
|
||||
|
||||
- `SYSTEM` queries for server administration: `SYSTEM RELOAD DICTIONARY`, `SYSTEM RELOAD DICTIONARIES`, `SYSTEM DROP DNS CACHE`, `SYSTEM SHUTDOWN`, `SYSTEM KILL`.
|
||||
- Added functions for working with arrays: `concat`, `arraySlice`, `arrayPushBack`, `arrayPushFront`, `arrayPopBack`, `arrayPopFront`.
|
||||
- Added `root` and `identity` parameters for the ZooKeeper configuration. This allows you to isolate individual users on the same ZooKeeper cluster.
|
||||
- Added aggregate functions `groupBitAnd`, `groupBitOr`, and `groupBitXor` (for compatibility, they are also available under the names `BIT_AND`, `BIT_OR`, and `BIT_XOR`).
|
||||
- External dictionaries can be loaded from MySQL by specifying a socket in the filesystem.
|
||||
- External dictionaries can be loaded from MySQL over SSL (`ssl_cert`, `ssl_key`, `ssl_ca` parameters).
|
||||
- Added the `max_network_bandwidth_for_user` setting to restrict the overall bandwidth use for queries per user.
|
||||
- Support for `DROP TABLE` for temporary tables.
|
||||
- Support for reading `DateTime` values in Unix timestamp format from the `CSV` and `JSONEachRow` formats.
|
||||
- Lagging replicas in distributed queries are now excluded by default (the default threshold is 5 minutes).
|
||||
- FIFO locking is used during ALTER: an ALTER query isn’t blocked indefinitely for continuously running queries.
|
||||
- Option to set `umask` in the config file.
|
||||
- Improved performance for queries with `DISTINCT` .
|
||||
|
||||
#### Bug fixes: {#bug-fixes-3}
|
||||
|
||||
- Improved the process for deleting old nodes in ZooKeeper. Previously, old nodes sometimes didn’t get deleted if there were very frequent inserts, which caused the server to be slow to shut down, among other things.
|
||||
- Fixed randomization when choosing hosts for the connection to ZooKeeper.
|
||||
- Fixed the exclusion of lagging replicas in distributed queries if the replica is localhost.
|
||||
- Fixed an error where a data part in a `ReplicatedMergeTree` table could be broken after running `ALTER MODIFY` on an element in a `Nested` structure.
|
||||
- Fixed an error that could cause SELECT queries to “hang”.
|
||||
- Improvements to distributed DDL queries.
|
||||
- Fixed the query `CREATE TABLE ... AS <materialized view>`.
|
||||
- Resolved the deadlock in the `ALTER ... CLEAR COLUMN IN PARTITION` query for `Buffer` tables.
|
||||
- Fixed the invalid default value for `Enum` s (0 instead of the minimum) when using the `JSONEachRow` and `TSKV` formats.
|
||||
- Resolved the appearance of zombie processes when using a dictionary with an `executable` source.
|
||||
- Fixed segfault for the HEAD query.
|
||||
|
||||
#### Improved workflow for developing and assembling ClickHouse: {#improved-workflow-for-developing-and-assembling-clickhouse}
|
||||
|
||||
- You can use `pbuilder` to build ClickHouse.
|
||||
- You can use `libc++` instead of `libstdc++` for builds on Linux.
|
||||
- Added instructions for using static code analysis tools: `Coverage`, `clang-tidy`, `cppcheck`.
|
||||
|
||||
#### Please note when upgrading: {#please-note-when-upgrading}
|
||||
|
||||
- There is now a higher default value for the MergeTree setting `max_bytes_to_merge_at_max_space_in_pool` (the maximum total size of data parts to merge, in bytes): it has increased from 100 GiB to 150 GiB. This might result in large merges running after the server upgrade, which could cause an increased load on the disk subsystem. If the free space available on the server is less than twice the total amount of the merges that are running, this will cause all other merges to stop running, including merges of small data parts. As a result, INSERT queries will fail with the message “Merges are processing significantly slower than inserts.” Use the `SELECT * FROM system.merges` query to monitor the situation. You can also check the `DiskSpaceReservedForMerge` metric in the `system.metrics` table, or in Graphite. You don’t need to do anything to fix this, since the issue will resolve itself once the large merges finish. If you find this unacceptable, you can restore the previous value for the `max_bytes_to_merge_at_max_space_in_pool` setting. To do this, go to the <merge_tree> section in config.xml, set ``` <merge_tree>``<max_bytes_to_merge_at_max_space_in_pool>107374182400</max_bytes_to_merge_at_max_space_in_pool> ``` and restart the server.
|
||||
|
||||
### ClickHouse release 1.1.54284, 2017-08-29 {#clickhouse-release-1-1-54284-2017-08-29}
|
||||
|
||||
- This is a bugfix release for the previous 1.1.54282 release. It fixes leaks in the parts directory in ZooKeeper.
|
||||
|
||||
### ClickHouse release 1.1.54282, 2017-08-23 {#clickhouse-release-1-1-54282-2017-08-23}
|
||||
|
||||
This release contains bug fixes for the previous release 1.1.54276:
|
||||
|
||||
- Fixed `DB::Exception: Assertion violation: !_path.empty()` when inserting into a Distributed table.
|
||||
- Fixed parsing when inserting in RowBinary format if input data starts with’;’.
|
||||
- Errors during runtime compilation of certain aggregate functions (e.g. `groupArray()`).
|
||||
|
||||
### Clickhouse Release 1.1.54276, 2017-08-16 {#clickhouse-release-1-1-54276-2017-08-16}
|
||||
|
||||
#### New features: {#new-features-4}
|
||||
|
||||
- Added an optional WITH section for a SELECT query. Example query: `WITH 1+1 AS a SELECT a, a*a`
|
||||
- INSERT can be performed synchronously in a Distributed table: OK is returned only after all the data is saved on all the shards. This is activated by the setting insert\_distributed\_sync=1.
|
||||
- Added the UUID data type for working with 16-byte identifiers.
|
||||
- Added aliases of CHAR, FLOAT and other types for compatibility with the Tableau.
|
||||
- Added the functions toYYYYMM, toYYYYMMDD, and toYYYYMMDDhhmmss for converting time into numbers.
|
||||
- You can use IP addresses (together with the hostname) to identify servers for clustered DDL queries.
|
||||
- Added support for non-constant arguments and negative offsets in the function `substring(str, pos, len).`
|
||||
- Added the max\_size parameter for the `groupArray(max_size)(column)` aggregate function, and optimized its performance.
|
||||
|
||||
#### Main changes: {#main-changes}
|
||||
|
||||
- Security improvements: all server files are created with 0640 permissions (can be changed via <umask> config parameter).
|
||||
- Improved error messages for queries with invalid syntax.
|
||||
- Significantly reduced memory consumption and improved performance when merging large sections of MergeTree data.
|
||||
- Significantly increased the performance of data merges for the ReplacingMergeTree engine.
|
||||
- Improved performance for asynchronous inserts from a Distributed table by combining multiple source inserts. To enable this functionality, use the setting distributed\_directory\_monitor\_batch\_inserts=1.
|
||||
|
||||
#### Backward incompatible changes: {#backward-incompatible-changes-1}
|
||||
|
||||
- Changed the binary format of aggregate states of `groupArray(array_column)` functions for arrays.
|
||||
|
||||
#### Complete list of changes: {#complete-list-of-changes}
|
||||
|
||||
- Added the `output_format_json_quote_denormals` setting, which enables outputting nan and inf values in JSON format.
|
||||
- Optimized stream allocation when reading from a Distributed table.
|
||||
- Settings can be configured in readonly mode if the value doesn’t change.
|
||||
- Added the ability to retrieve non-integer granules of the MergeTree engine in order to meet restrictions on the block size specified in the preferred\_block\_size\_bytes setting. The purpose is to reduce the consumption of RAM and increase cache locality when processing queries from tables with large columns.
|
||||
- Efficient use of indexes that contain expressions like `toStartOfHour(x)` for conditions like `toStartOfHour(x) op сonstexpr.`
|
||||
- Added new settings for MergeTree engines (the merge\_tree section in config.xml):
|
||||
- replicated\_deduplication\_window\_seconds sets the number of seconds allowed for deduplicating inserts in Replicated tables.
|
||||
- cleanup\_delay\_period sets how often to start cleanup to remove outdated data.
|
||||
- replicated\_can\_become\_leader can prevent a replica from becoming the leader (and assigning merges).
|
||||
- Accelerated cleanup to remove outdated data from ZooKeeper.
|
||||
- Multiple improvements and fixes for clustered DDL queries. Of particular interest is the new setting distributed\_ddl\_task\_timeout, which limits the time to wait for a response from the servers in the cluster. If a ddl request has not been performed on all hosts, a response will contain a timeout error and a request will be executed in an async mode.
|
||||
- Improved display of stack traces in the server logs.
|
||||
- Added the “none” value for the compression method.
|
||||
- You can use multiple dictionaries\_config sections in config.xml.
|
||||
- It is possible to connect to MySQL through a socket in the file system.
|
||||
- The system.parts table has a new column with information about the size of marks, in bytes.
|
||||
|
||||
#### Bug fixes: {#bug-fixes-4}
|
||||
|
||||
- Distributed tables using a Merge table now work correctly for a SELECT query with a condition on the `_table` field.
|
||||
- Fixed a rare race condition in ReplicatedMergeTree when checking data parts.
|
||||
- Fixed possible freezing on “leader election” when starting a server.
|
||||
- The max\_replica\_delay\_for\_distributed\_queries setting was ignored when using a local replica of the data source. This has been fixed.
|
||||
- Fixed incorrect behavior of `ALTER TABLE CLEAR COLUMN IN PARTITION` when attempting to clean a non-existing column.
|
||||
- Fixed an exception in the multiIf function when using empty arrays or strings.
|
||||
- Fixed excessive memory allocations when deserializing Native format.
|
||||
- Fixed incorrect auto-update of Trie dictionaries.
|
||||
- Fixed an exception when running queries with a GROUP BY clause from a Merge table when using SAMPLE.
|
||||
- Fixed a crash of GROUP BY when using distributed\_aggregation\_memory\_efficient=1.
|
||||
- Now you can specify the database.table in the right side of IN and JOIN.
|
||||
- Too many threads were used for parallel aggregation. This has been fixed.
|
||||
- Fixed how the “if” function works with FixedString arguments.
|
||||
- SELECT worked incorrectly from a Distributed table for shards with a weight of 0. This has been fixed.
|
||||
- Running `CREATE VIEW IF EXISTS no longer causes crashes.`
|
||||
- Fixed incorrect behavior when input\_format\_skip\_unknown\_fields=1 is set and there are negative numbers.
|
||||
- Fixed an infinite loop in the `dictGetHierarchy()` function if there is some invalid data in the dictionary.
|
||||
- Fixed `Syntax error: unexpected (...)` errors when running distributed queries with subqueries in an IN or JOIN clause and Merge tables.
|
||||
- Fixed an incorrect interpretation of a SELECT query from Dictionary tables.
|
||||
- Fixed the “Cannot mremap” error when using arrays in IN and JOIN clauses with more than 2 billion elements.
|
||||
- Fixed the failover for dictionaries with MySQL as the source.
|
||||
|
||||
#### Improved workflow for developing and assembling ClickHouse: {#improved-workflow-for-developing-and-assembling-clickhouse-1}
|
||||
|
||||
- Builds can be assembled in Arcadia.
|
||||
- You can use gcc 7 to compile ClickHouse.
|
||||
- Parallel builds using ccache+distcc are faster now.
|
||||
|
||||
### ClickHouse release 1.1.54245, 2017-07-04 {#clickhouse-release-1-1-54245-2017-07-04}
|
||||
|
||||
#### New features: {#new-features-5}
|
||||
|
||||
- Distributed DDL (for example, `CREATE TABLE ON CLUSTER`)
|
||||
- The replicated query `ALTER TABLE CLEAR COLUMN IN PARTITION.`
|
||||
- The engine for Dictionary tables (access to dictionary data in the form of a table).
|
||||
- Dictionary database engine (this type of database automatically has Dictionary tables available for all the connected external dictionaries).
|
||||
- You can check for updates to the dictionary by sending a request to the source.
|
||||
- Qualified column names
|
||||
- Quoting identifiers using double quotation marks.
|
||||
- Sessions in the HTTP interface.
|
||||
- The OPTIMIZE query for a Replicated table can can run not only on the leader.
|
||||
|
||||
#### Backward incompatible changes: {#backward-incompatible-changes-2}
|
||||
|
||||
- Removed SET GLOBAL.
|
||||
|
||||
#### Minor changes: {#minor-changes}
|
||||
|
||||
- Now after an alert is triggered, the log prints the full stack trace.
|
||||
- Relaxed the verification of the number of damaged/extra data parts at startup (there were too many false positives).
|
||||
|
||||
#### Bug fixes: {#bug-fixes-5}
|
||||
|
||||
- Fixed a bad connection “sticking” when inserting into a Distributed table.
|
||||
- GLOBAL IN now works for a query from a Merge table that looks at a Distributed table.
|
||||
- The incorrect number of cores was detected on a Google Compute Engine virtual machine. This has been fixed.
|
||||
- Changes in how an executable source of cached external dictionaries works.
|
||||
- Fixed the comparison of strings containing null characters.
|
||||
- Fixed the comparison of Float32 primary key fields with constants.
|
||||
- Previously, an incorrect estimate of the size of a field could lead to overly large allocations.
|
||||
- Fixed a crash when querying a Nullable column added to a table using ALTER.
|
||||
- Fixed a crash when sorting by a Nullable column, if the number of rows is less than LIMIT.
|
||||
- Fixed an ORDER BY subquery consisting of only constant values.
|
||||
- Previously, a Replicated table could remain in the invalid state after a failed DROP TABLE.
|
||||
- Aliases for scalar subqueries with empty results are no longer lost.
|
||||
- Now a query that used compilation does not fail with an error if the .so file gets damaged.
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user