From 59253f689b94b4d2ffa466b3b90aa3630b8b3307 Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Thu, 9 Jun 2016 07:37:21 +0300 Subject: [PATCH 01/15] Tiny modifications [#METR-21651]. --- dbms/include/DB/IO/CompressedReadBufferBase.h | 12 ++---------- dbms/include/DB/Parsers/ASTQueryWithOutput.h | 5 ++--- dbms/include/DB/Parsers/ASTQueryWithTableAndOutput.h | 5 ++--- dbms/src/Common/ConfigProcessor.cpp | 5 ++--- dbms/src/Interpreters/ExternalDictionaries.cpp | 3 +-- 5 files changed, 9 insertions(+), 21 deletions(-) diff --git a/dbms/include/DB/IO/CompressedReadBufferBase.h b/dbms/include/DB/IO/CompressedReadBufferBase.h index 2a7893712dc..86367bb8625 100644 --- a/dbms/include/DB/IO/CompressedReadBufferBase.h +++ b/dbms/include/DB/IO/CompressedReadBufferBase.h @@ -42,7 +42,7 @@ protected: char * compressed_buffer = nullptr; #ifdef USE_QUICKLZ - qlz_state_decompress * qlz_state = nullptr; + std::unique_ptr qlz_state; #else void * fixed_size_padding = nullptr; #endif @@ -122,7 +122,7 @@ protected: { #ifdef USE_QUICKLZ if (!qlz_state) - qlz_state = new qlz_state_decompress; + qlz_state = std::make_unique(); qlz_decompress(&compressed_buffer[0], to, qlz_state); #else @@ -154,14 +154,6 @@ public: { } - ~CompressedReadBufferBase() - { - #ifdef USE_QUICKLZ - if (qlz_state) - delete qlz_state; - #endif - } - /** Не проверять чексуммы. * Может использоваться, например, в тех случаях, когда сжатые данные пишет клиент, * который не умеет вычислять чексуммы, и вместо этого заполняет их нулями или чем угодно. diff --git a/dbms/include/DB/Parsers/ASTQueryWithOutput.h b/dbms/include/DB/Parsers/ASTQueryWithOutput.h index 3a0bb4eac0f..c3325e59fad 100644 --- a/dbms/include/DB/Parsers/ASTQueryWithOutput.h +++ b/dbms/include/DB/Parsers/ASTQueryWithOutput.h @@ -34,15 +34,14 @@ public: \ \ ASTPtr clone() const override \ { \ - Name * res = new Name(*this); \ - ASTPtr ptr{res}; \ + std::shared_ptr res = std::make_shared(*this); \ res->children.clear(); \ if (format) \ { \ res->format = format->clone(); \ res->children.push_back(res->format); \ } \ - return ptr; \ + return res; \ } \ \ protected: \ diff --git a/dbms/include/DB/Parsers/ASTQueryWithTableAndOutput.h b/dbms/include/DB/Parsers/ASTQueryWithTableAndOutput.h index d99025593d0..91e5ccae9d5 100644 --- a/dbms/include/DB/Parsers/ASTQueryWithTableAndOutput.h +++ b/dbms/include/DB/Parsers/ASTQueryWithTableAndOutput.h @@ -46,15 +46,14 @@ protected: \ ASTPtr clone() const override \ { \ - Name * res = new Name(*this); \ - ASTPtr ptr{res}; \ + std::shared_ptr res = std::make_shared(*this); \ res->children.clear(); \ if (format) \ { \ res->format = format->clone(); \ res->children.push_back(res->format); \ } \ - return ptr; \ + return res; \ } \ \ protected: \ diff --git a/dbms/src/Common/ConfigProcessor.cpp b/dbms/src/Common/ConfigProcessor.cpp index f7cf7cdded4..15a59fcf75e 100644 --- a/dbms/src/Common/ConfigProcessor.cpp +++ b/dbms/src/Common/ConfigProcessor.cpp @@ -40,9 +40,8 @@ ConfigProcessor::ConfigProcessor(bool throw_on_bad_incl_, bool log_to_console, c { if (log_to_console && Logger::has("ConfigProcessor") == nullptr) { - Poco::Channel * channel = new Poco::ConsoleChannel; - channel_ptr = channel; - log = &Logger::create("ConfigProcessor", channel, Poco::Message::PRIO_TRACE); + channel_ptr = new Poco::ConsoleChannel; + log = &Logger::create("ConfigProcessor", channel_ptr.get(), Poco::Message::PRIO_TRACE); } else { diff --git a/dbms/src/Interpreters/ExternalDictionaries.cpp b/dbms/src/Interpreters/ExternalDictionaries.cpp index cff3122c215..f5d067a9c50 100644 --- a/dbms/src/Interpreters/ExternalDictionaries.cpp +++ b/dbms/src/Interpreters/ExternalDictionaries.cpp @@ -212,8 +212,7 @@ void ExternalDictionaries::reloadFromFile(const std::string & config_path, const /// definitions of dictionaries may have changed, recreate all of them config_last_modified = last_modified; - const auto config = new Poco::Util::XMLConfiguration{config_path}; - SCOPE_EXIT(config->release()); + Poco::AutoPtr config = new Poco::Util::XMLConfiguration(config_path); /// get all dictionaries' definitions Poco::Util::AbstractConfiguration::Keys keys; From 103dfb39ccec924510a3d889ffb4bae47c46c245 Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Thu, 9 Jun 2016 07:54:30 +0300 Subject: [PATCH 02/15] Fixed error [#METR-21651]. --- dbms/include/DB/Columns/ColumnAggregateFunction.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dbms/include/DB/Columns/ColumnAggregateFunction.h b/dbms/include/DB/Columns/ColumnAggregateFunction.h index d42c72c9ac3..41f41dc04b0 100644 --- a/dbms/include/DB/Columns/ColumnAggregateFunction.h +++ b/dbms/include/DB/Columns/ColumnAggregateFunction.h @@ -85,7 +85,7 @@ public: ~ColumnAggregateFunction() { - if (!func->hasTrivialDestructor() && src) + if (!func->hasTrivialDestructor() && !src) for (auto val : data) func->destroy(val); } From f7b384cdf2eb044c0b833b0aea3f131f0d25ea5d Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Thu, 9 Jun 2016 08:02:05 +0300 Subject: [PATCH 03/15] Fixed error [#METR-21651]. --- dbms/src/Client/MultiplexedConnections.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dbms/src/Client/MultiplexedConnections.cpp b/dbms/src/Client/MultiplexedConnections.cpp index c55f8167432..ee42e6be86c 100644 --- a/dbms/src/Client/MultiplexedConnections.cpp +++ b/dbms/src/Client/MultiplexedConnections.cpp @@ -63,7 +63,7 @@ MultiplexedConnections::MultiplexedConnections(ConnectionPools & pools_, const S for (auto & pool : pools_) { - if (pool) + if (!pool) throw Exception("Invalid pool specified", ErrorCodes::LOGICAL_ERROR); initFromShard(pool.get()); } From f901ffe11689cb4654616f1227da436f0a7338b6 Mon Sep 17 00:00:00 2001 From: Pavel Kartavyy Date: Thu, 9 Jun 2016 11:36:33 +0300 Subject: [PATCH 04/15] BaseDaemon: add missed space --- libs/libdaemon/src/BaseDaemon.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/libdaemon/src/BaseDaemon.cpp b/libs/libdaemon/src/BaseDaemon.cpp index 80e427b856b..1c232786d38 100644 --- a/libs/libdaemon/src/BaseDaemon.cpp +++ b/libs/libdaemon/src/BaseDaemon.cpp @@ -921,7 +921,7 @@ void BaseDaemon::handleSignal(int signal_id) void BaseDaemon::onInterruptSignals(int signal_id) { is_cancelled = true; - LOG_INFO(&logger(), "Received termination signal(" << strsignal(signal_id) << ")"); + LOG_INFO(&logger(), "Received termination signal (" << strsignal(signal_id) << ")"); } From c4017da0d86e5f0fdf9337b9782914ecd7210c3c Mon Sep 17 00:00:00 2001 From: Pavel Kartavyy Date: Thu, 9 Jun 2016 12:43:05 +0300 Subject: [PATCH 05/15] BaseDaemon: improve message --- libs/libdaemon/src/BaseDaemon.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libs/libdaemon/src/BaseDaemon.cpp b/libs/libdaemon/src/BaseDaemon.cpp index 1c232786d38..dc2b1f39ae5 100644 --- a/libs/libdaemon/src/BaseDaemon.cpp +++ b/libs/libdaemon/src/BaseDaemon.cpp @@ -921,7 +921,9 @@ void BaseDaemon::handleSignal(int signal_id) void BaseDaemon::onInterruptSignals(int signal_id) { is_cancelled = true; - LOG_INFO(&logger(), "Received termination signal (" << strsignal(signal_id) << ")"); + LOG_INFO(&logger(), + "Received termination signal (" << strsignal(signal_id) << ")." + " Terminate is requested " << terminate_signals_counter << " times."); } From ab882795777eb3e2b8835f95979b7422ece2dbd5 Mon Sep 17 00:00:00 2001 From: Pavel Kartavyy Date: Fri, 10 Jun 2016 15:01:03 +0300 Subject: [PATCH 06/15] BaseDaemon: terminate on double SIGINT --- libs/libdaemon/include/daemon/BaseDaemon.h | 3 ++- libs/libdaemon/src/BaseDaemon.cpp | 11 ++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/libs/libdaemon/include/daemon/BaseDaemon.h b/libs/libdaemon/include/daemon/BaseDaemon.h index 6a5ba88e2ad..0f9d7363a0d 100644 --- a/libs/libdaemon/include/daemon/BaseDaemon.h +++ b/libs/libdaemon/include/daemon/BaseDaemon.h @@ -191,5 +191,6 @@ protected: std::mutex signal_handler_mutex; std::condition_variable signal_event; - size_t terminate_signals_counter = 0; + std::atomic_size_t terminate_signals_counter{0}; + std::atomic_size_t sigint_signals_counter{0}; }; diff --git a/libs/libdaemon/src/BaseDaemon.cpp b/libs/libdaemon/src/BaseDaemon.cpp index dc2b1f39ae5..69e940dd4ec 100644 --- a/libs/libdaemon/src/BaseDaemon.cpp +++ b/libs/libdaemon/src/BaseDaemon.cpp @@ -909,6 +909,7 @@ void BaseDaemon::handleSignal(int signal_id) std::unique_lock lock(signal_handler_mutex); { ++terminate_signals_counter; + sigint_signals_counter += signal_id == SIGINT; signal_event.notify_all(); } @@ -921,9 +922,13 @@ void BaseDaemon::handleSignal(int signal_id) void BaseDaemon::onInterruptSignals(int signal_id) { is_cancelled = true; - LOG_INFO(&logger(), - "Received termination signal (" << strsignal(signal_id) << ")." - " Terminate is requested " << terminate_signals_counter << " times."); + LOG_INFO(&logger(), "Received termination signal (" << strsignal(signal_id) << ")"); + + if (sigint_signals_counter >= 2) + { + LOG_INFO(&logger(), "Received second signal Interrupt. Immediately terminate."); + kill(); + } } From 991e6cd8f3732a3ba15e7cca7bd9cdaae707e0ff Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Fri, 10 Jun 2016 15:21:40 +0300 Subject: [PATCH 07/15] Added missing files [#METR-20000]. --- doc/habrahabr/2/clickmap.png | Bin 0 -> 86579 bytes doc/logo.svg | 12 ++++++++++++ 2 files changed, 12 insertions(+) create mode 100644 doc/habrahabr/2/clickmap.png create mode 100644 doc/logo.svg diff --git a/doc/habrahabr/2/clickmap.png b/doc/habrahabr/2/clickmap.png new file mode 100644 index 0000000000000000000000000000000000000000..728aeeac6d9d96388d1179807047fbf3f6517906 GIT binary patch literal 86579 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

vr=1c8{4}IIBoKV>}eY= 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�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 muA#Sen6wUl4D*TAiT?rl_T{J#aEMj_0000 + + + + + + + + From d4acdc3647f5f113b210bbac44b304ed548e6e91 Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Fri, 10 Jun 2016 15:22:08 +0300 Subject: [PATCH 08/15] Added robots.txt [#METR-20000]. --- doc/robots.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 doc/robots.txt diff --git a/doc/robots.txt b/doc/robots.txt new file mode 100644 index 00000000000..c2a49f4fb82 --- /dev/null +++ b/doc/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Allow: / From d24df364cb70b850228ebe4c33d0693715e66530 Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Fri, 10 Jun 2016 15:34:35 +0300 Subject: [PATCH 09/15] Leaving 10 log files when using internal log rotation [#METR-2944]. --- dbms/src/Server/config.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dbms/src/Server/config.xml b/dbms/src/Server/config.xml index 62d889f4058..66f4475a0be 100644 --- a/dbms/src/Server/config.xml +++ b/dbms/src/Server/config.xml @@ -14,7 +14,7 @@ (important for some administration scripts). --> 1000M - 2 + 10 From 47baace54011911fb6100b84720cb32c7c5a61f6 Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Fri, 10 Jun 2016 15:35:40 +0300 Subject: [PATCH 10/15] Updated submodule [#METR-2944]. --- private | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/private b/private index a482f9ec80b..bc91114b009 160000 --- a/private +++ b/private @@ -1 +1 @@ -Subproject commit a482f9ec80b4c10e92b3d647b3558978cc453d2e +Subproject commit bc91114b009ca3edde1a00dcf9d355388f6e9899 From 102b7c7067ca854d959071cb3c819d92f90bc9d0 Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Fri, 10 Jun 2016 15:49:27 +0300 Subject: [PATCH 11/15] Added note on SSE 4.2 [#METR-20000]. --- doc/build.md | 7 ++++++- doc/index.html | 2 +- doc/reference_en.html | 7 ++++++- doc/reference_ru.html | 7 ++++++- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/doc/build.md b/doc/build.md index 8cd15b99702..2110909d21e 100644 --- a/doc/build.md +++ b/doc/build.md @@ -3,7 +3,12 @@ Build should work on Linux Ubuntu 12.04, 14.04 or newer. With appropriate changes, build should work on any other Linux distribution. Build is not intended to work on Mac OS X. -Only x86_64 is supported. Support for AArch64 is experimental. +Only x86_64 with SSE 4.2 is supported. Support for AArch64 is experimental. + +To test for SSE 4.2, do +``` +cat /proc/cpuinfo | grep -q sse4_2 && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported" +``` ## Install Git and CMake diff --git a/doc/index.html b/doc/index.html index b9b780b6c1f..c25d862574e 100644 --- a/doc/index.html +++ b/doc/index.html @@ -386,7 +386,7 @@

Download

-

System requirements: Linux, x86_64.

+

System requirements: Linux, x86_64 with SSE 4.2.

Install packages for Ubuntu 14.04 (Trusty) or Ubuntu 12.04 (Precise):

diff --git a/doc/reference_en.html b/doc/reference_en.html index d97d3604e49..a28cb2940cf 100644 --- a/doc/reference_en.html +++ b/doc/reference_en.html @@ -361,7 +361,12 @@ At this time (May 2016), there aren't any available open-source and free sys

System requirements

-

This is not a cross-platform system. It requires Linux Ubuntu Precise (12.04) or newer, with x86_64 architecture. +

This is not a cross-platform system. It requires Linux Ubuntu Precise (12.04) or newer, x86_64 architecture with SSE 4.2 instruction set. +To test for SSE 4.2 support, do + +cat /proc/cpuinfo | grep -q sse4_2 && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported" + + We recommend using Ubuntu Trusty or Ubuntu Precise. The terminal must use UTF-8 encoding (the default in Ubuntu).

diff --git a/doc/reference_ru.html b/doc/reference_ru.html index f368fe124ad..c87caf187e8 100644 --- a/doc/reference_ru.html +++ b/doc/reference_ru.html @@ -386,7 +386,12 @@ OLAPServer хорошо подходил для неагрегированных

Системные требования

-

Система некроссплатформенная. Требуется ОС Linux Ubuntu не более старая, чем Precise (12.04); архитектура x86_64. +

Система некроссплатформенная. Требуется ОС Linux Ubuntu не более старая, чем Precise (12.04); архитектура x86_64 с поддержкой набора инструкций SSE 4.2. +Для проверки наличия SSE 4.2, выполните: + +cat /proc/cpuinfo | grep -q sse4_2 && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported" + + Рекомендуется использовать Ubuntu Trusty или Ubuntu Precise. Терминал должен работать в кодировке UTF-8 (как по умолчанию в Ubuntu).

From 46f5444bd9bab615318d83408345475240b4a7fc Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Fri, 10 Jun 2016 16:07:37 +0300 Subject: [PATCH 12/15] Better [#METR-20000]. --- doc/build.md | 2 +- doc/reference_en.html | 2 +- doc/reference_ru.html | 2 +- tools/init.d/template | 8 ++++++++ 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/doc/build.md b/doc/build.md index 2110909d21e..10ecb010b62 100644 --- a/doc/build.md +++ b/doc/build.md @@ -7,7 +7,7 @@ Only x86_64 with SSE 4.2 is supported. Support for AArch64 is experimental. To test for SSE 4.2, do ``` -cat /proc/cpuinfo | grep -q sse4_2 && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported" +grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported" ``` ## Install Git and CMake diff --git a/doc/reference_en.html b/doc/reference_en.html index a28cb2940cf..0b6a1fd531f 100644 --- a/doc/reference_en.html +++ b/doc/reference_en.html @@ -364,7 +364,7 @@ At this time (May 2016), there aren't any available open-source and free sys

This is not a cross-platform system. It requires Linux Ubuntu Precise (12.04) or newer, x86_64 architecture with SSE 4.2 instruction set. To test for SSE 4.2 support, do -cat /proc/cpuinfo | grep -q sse4_2 && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported" +grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported" We recommend using Ubuntu Trusty or Ubuntu Precise. diff --git a/doc/reference_ru.html b/doc/reference_ru.html index c87caf187e8..cc0557d5de5 100644 --- a/doc/reference_ru.html +++ b/doc/reference_ru.html @@ -389,7 +389,7 @@ OLAPServer хорошо подходил для неагрегированных

Система некроссплатформенная. Требуется ОС Linux Ubuntu не более старая, чем Precise (12.04); архитектура x86_64 с поддержкой набора инструкций SSE 4.2. Для проверки наличия SSE 4.2, выполните: -cat /proc/cpuinfo | grep -q sse4_2 && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported" +grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported" Рекомендуется использовать Ubuntu Trusty или Ubuntu Precise. diff --git a/tools/init.d/template b/tools/init.d/template index 6163c7e006b..3468cc4bd97 100755 --- a/tools/init.d/template +++ b/tools/init.d/template @@ -26,6 +26,14 @@ NUMBER_OF_PROCESSES=$DEFAULT_NUMBER_OF_PROCESSES LOG_FILE="" +# On x86_64, check for required instruction set. +if uname -mpi | grep -q x86_64; then + if ! grep -q sse4_2 /proc/cpuinfo; then + echo 'SSE 4.2 instruction set is not supported' + exit 3 + fi +fi + # С помощью xmlstarlet пытаемся взять некоторые параметры из конфига if command -v xmlstarlet >/dev/null 2>&1; then NUMBER_OF_PROCESSES=$(xmlstarlet sel -t -v "/yandex/number_of_processes" $CNFFILE || echo $DEFAULT_NUMBER_OF_PROCESSES) From d5aa77904148138b0aaac4109c9a5d1ad188f1dc Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Fri, 10 Jun 2016 16:14:32 +0300 Subject: [PATCH 13/15] Less dependencies [#METR-20000]. --- debian/copy_clang_binaries.sh | 6 +++--- debian/rules | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/debian/copy_clang_binaries.sh b/debian/copy_clang_binaries.sh index 870a48cc149..da4d40799ce 100755 --- a/debian/copy_clang_binaries.sh +++ b/debian/copy_clang_binaries.sh @@ -6,7 +6,7 @@ DST=${1:-.}; PATH="/usr/local/bin:/usr/local/sbin:/usr/bin:$PATH" CLANG=$(command -v clang) -LD=$(command -v ld) +LD=$(command -v gold || command -v ld.gold || command -v ld) if [ ! -x "$CLANG" ]; then echo "Not found executable clang." @@ -14,12 +14,12 @@ if [ ! -x "$CLANG" ]; then fi if [ ! -x "$LD" ]; then - echo "Not found executable ld." + echo "Not found executable gold or ld." exit 1 fi cp "$CLANG" $DST -cp "$LD" $DST +cp "$LD" ${DST}/ld STDCPP=$(ldd $(command -v clang) | grep -oE '/[^ ]+libstdc++[^ ]+') diff --git a/debian/rules b/debian/rules index b8d38748f17..26f009b9643 100755 --- a/debian/rules +++ b/debian/rules @@ -153,7 +153,7 @@ binary-arch: build install dh_compress dh_fixperms dh_installdeb - dh_shlibdeps --exclude=clang --exclude=stdc + dh_shlibdeps --exclude=clang --exclude=stdc --exclude=ld dh_gencontrol dh_md5sums dh_builddeb -- -z3 From 87f71cbfaa3fdb94e4b1244b5461864ae68611bf Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Fri, 10 Jun 2016 16:28:27 +0300 Subject: [PATCH 14/15] Better [#METR-20000]. --- doc/reference_en.html | 4 +--- doc/reference_ru.html | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/doc/reference_en.html b/doc/reference_en.html index 0b6a1fd531f..a974216a6af 100644 --- a/doc/reference_en.html +++ b/doc/reference_en.html @@ -363,9 +363,7 @@ At this time (May 2016), there aren't any available open-source and free sys

This is not a cross-platform system. It requires Linux Ubuntu Precise (12.04) or newer, x86_64 architecture with SSE 4.2 instruction set. To test for SSE 4.2 support, do - -grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported" - +grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported" We recommend using Ubuntu Trusty or Ubuntu Precise. The terminal must use UTF-8 encoding (the default in Ubuntu).

diff --git a/doc/reference_ru.html b/doc/reference_ru.html index cc0557d5de5..fd7716f1729 100644 --- a/doc/reference_ru.html +++ b/doc/reference_ru.html @@ -388,9 +388,7 @@ OLAPServer хорошо подходил для неагрегированных

Система некроссплатформенная. Требуется ОС Linux Ubuntu не более старая, чем Precise (12.04); архитектура x86_64 с поддержкой набора инструкций SSE 4.2. Для проверки наличия SSE 4.2, выполните: - -grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported" - +grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported" Рекомендуется использовать Ubuntu Trusty или Ubuntu Precise. Терминал должен работать в кодировке UTF-8 (как по умолчанию в Ubuntu).

From f2b386a7d00c6f03c65ac1d74a9d8670ceef8ade Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Fri, 10 Jun 2016 16:37:37 +0300 Subject: [PATCH 15/15] Added file for Google Search Console [#METR-20000]. --- doc/google419fbd824d7ff97d.html | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/google419fbd824d7ff97d.html diff --git a/doc/google419fbd824d7ff97d.html b/doc/google419fbd824d7ff97d.html new file mode 100644 index 00000000000..b7e25cf48cc --- /dev/null +++ b/doc/google419fbd824d7ff97d.html @@ -0,0 +1 @@ +google-site-verification: google419fbd824d7ff97d.html \ No newline at end of file