mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-10-05 16:10:50 +00:00
Merge branch 'master' of https://github.com/yandex/ClickHouse into CLICKHOUSE-2720
This commit is contained in:
commit
98d4f80820
20
CHANGELOG.md
20
CHANGELOG.md
@ -1,3 +1,23 @@
|
|||||||
|
# ClickHouse release 1.1.54380, 2018-04-21
|
||||||
|
|
||||||
|
## New features:
|
||||||
|
* Added table function `file(path, format, structure)`. An example reading bytes from `/dev/urandom`: `ln -s /dev/urandom /var/lib/clickhouse/user_files/random` `clickhouse-client -q "SELECT * FROM file('random', 'RowBinary', 'd UInt8') LIMIT 10"`.
|
||||||
|
|
||||||
|
## Improvements:
|
||||||
|
* Subqueries could be wrapped by `()` braces (to enhance queries readability). For example, `(SELECT 1) UNION ALL (SELECT 1)`.
|
||||||
|
* Simple `SELECT` queries from table `system.processes` are not counted in `max_concurrent_queries` limit.
|
||||||
|
|
||||||
|
## Bug fixes:
|
||||||
|
* Fixed incorrect behaviour of `IN` operator when select from `MATERIALIZED VIEW`.
|
||||||
|
* Fixed incorrect filtering by partition index in expressions like `WHERE partition_key_column IN (...)`
|
||||||
|
* Fixed inability to execute `OPTIMIZE` query on non-leader replica if the table was `REANAME`d.
|
||||||
|
* Fixed authorization error when execute `OPTIMIZE` or `ALTER` queries on a non-leader replica.
|
||||||
|
* Fixed freezing of `KILL QUERY` queries.
|
||||||
|
* Fixed an error in ZooKeeper client library which led to watches loses, freezing of distributed DDL queue and slowing replication queue if non-empty `chroot` prefix is used in ZooKeeper configuration.
|
||||||
|
|
||||||
|
## Backward incompatible changes:
|
||||||
|
* Removed support of expressions like `(a, b) IN (SELECT (a, b))` (instead of them you can use their equivalent `(a, b) IN (SELECT a, b)`). In previous releases, these expressions led to undermined data filtering or caused errors.
|
||||||
|
|
||||||
# ClickHouse release 1.1.54378, 2018-04-16
|
# ClickHouse release 1.1.54378, 2018-04-16
|
||||||
## New features:
|
## New features:
|
||||||
|
|
||||||
|
@ -6,10 +6,8 @@
|
|||||||
## Улучшения:
|
## Улучшения:
|
||||||
* Добавлена возможность оборачивать подзапросы скобками `()` для повышения читаемости запросов. Например: `(SELECT 1) UNION ALL (SELECT 1)`.
|
* Добавлена возможность оборачивать подзапросы скобками `()` для повышения читаемости запросов. Например: `(SELECT 1) UNION ALL (SELECT 1)`.
|
||||||
* Простые запросы `SELECT` из таблицы `system.processes` не учитываются в ограничении `max_concurrent_queries`.
|
* Простые запросы `SELECT` из таблицы `system.processes` не учитываются в ограничении `max_concurrent_queries`.
|
||||||
* Возможность отключить логирование путем удаления `<log/>` или `<errorlog/>` из конфигурации сервера.
|
|
||||||
|
|
||||||
## Исправление ошибок:
|
## Исправление ошибок:
|
||||||
* Убрана поддержка выражений типа `(a, b) IN (SELECT (a, b))` (можно использовать эквивалентные выражение `(a, b) IN (SELECT a, b)`), которые приводили к недетерминированному поведению фильтрации `WHERE`.
|
|
||||||
* Исправлена неправильная работа оператора `IN` в `MATERIALIZED VIEW`.
|
* Исправлена неправильная работа оператора `IN` в `MATERIALIZED VIEW`.
|
||||||
* Исправлена неправильная работа индекса по ключу партиционирования в выражениях типа `partition_key_column IN (...)`.
|
* Исправлена неправильная работа индекса по ключу партиционирования в выражениях типа `partition_key_column IN (...)`.
|
||||||
* Исправлена невозможность выполнить `OPTIMIZE` запрос на лидирующей реплике после выполнения `RENAME` таблицы.
|
* Исправлена невозможность выполнить `OPTIMIZE` запрос на лидирующей реплике после выполнения `RENAME` таблицы.
|
||||||
@ -17,6 +15,9 @@
|
|||||||
* Исправлены зависания запросов `KILL QUERY`.
|
* Исправлены зависания запросов `KILL QUERY`.
|
||||||
* Исправлена ошибка в клиентской библиотеке ZooKeeper, которая при использовании непустого префикса `chroot` в конфигурации приводила к потере watch'ей, остановке очереди distributed DDL запросов и замедлению репликации.
|
* Исправлена ошибка в клиентской библиотеке ZooKeeper, которая при использовании непустого префикса `chroot` в конфигурации приводила к потере watch'ей, остановке очереди distributed DDL запросов и замедлению репликации.
|
||||||
|
|
||||||
|
## Обратно несовместимые изменения:
|
||||||
|
* Убрана поддержка выражений типа `(a, b) IN (SELECT (a, b))` (можно использовать эквивалентные выражение `(a, b) IN (SELECT a, b)`). Раньше такие запросы могли приводить к недетерминированной фильтрации в `WHERE`.
|
||||||
|
|
||||||
|
|
||||||
# ClickHouse release 1.1.54378, 2018-04-16
|
# ClickHouse release 1.1.54378, 2018-04-16
|
||||||
|
|
||||||
|
@ -739,6 +739,22 @@ std::future<ZooKeeperImpl::ZooKeeper::MultiResponse> ZooKeeper::asyncMulti(const
|
|||||||
return future;
|
return future;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t ZooKeeper::tryMultiNoThrow(const Requests & requests, Responses & responses)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return multiImpl(requests, responses);
|
||||||
|
}
|
||||||
|
catch (ZooKeeperImpl::Exception & e)
|
||||||
|
{
|
||||||
|
return e.code;
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
size_t KeeperMultiException::getFailedOpIndex(int32_t code, const Responses & responses) const
|
size_t KeeperMultiException::getFailedOpIndex(int32_t code, const Responses & responses) const
|
||||||
{
|
{
|
||||||
|
@ -148,11 +148,8 @@ public:
|
|||||||
/// Throws only if some operation has returned an "unexpected" error
|
/// Throws only if some operation has returned an "unexpected" error
|
||||||
/// - an error that would cause the corresponding try- method to throw.
|
/// - an error that would cause the corresponding try- method to throw.
|
||||||
int32_t tryMulti(const Requests & requests, Responses & responses);
|
int32_t tryMulti(const Requests & requests, Responses & responses);
|
||||||
/// Throws nothing, just alias of multiImpl
|
/// Throws nothing (even session expired errors)
|
||||||
int32_t tryMultiNoThrow(const Requests & requests, Responses & responses)
|
int32_t tryMultiNoThrow(const Requests & requests, Responses & responses);
|
||||||
{
|
|
||||||
return multiImpl(requests, responses);
|
|
||||||
}
|
|
||||||
|
|
||||||
Int64 getClientID();
|
Int64 getClientID();
|
||||||
|
|
||||||
|
@ -3638,7 +3638,7 @@ void StorageReplicatedMergeTree::clearOldPartsAndRemoveFromZK()
|
|||||||
}
|
}
|
||||||
catch (...)
|
catch (...)
|
||||||
{
|
{
|
||||||
LOG_ERROR(log, "There is a problem with deleting parts from ZooKeeper: " << getCurrentExceptionMessage(false));
|
LOG_ERROR(log, "There is a problem with deleting parts from ZooKeeper: " << getCurrentExceptionMessage(true));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Part names that were reliably deleted from ZooKeeper should be deleted from filesystem
|
/// Part names that were reliably deleted from ZooKeeper should be deleted from filesystem
|
||||||
|
@ -76,6 +76,7 @@ def main(args):
|
|||||||
# Keep same default values as in queries/0_stateless/00000_sh_lib.sh
|
# Keep same default values as in queries/0_stateless/00000_sh_lib.sh
|
||||||
os.environ.setdefault("CLICKHOUSE_BINARY", args.binary)
|
os.environ.setdefault("CLICKHOUSE_BINARY", args.binary)
|
||||||
os.environ.setdefault("CLICKHOUSE_CLIENT", args.client)
|
os.environ.setdefault("CLICKHOUSE_CLIENT", args.client)
|
||||||
|
os.environ.setdefault("CLICKHOUSE_CONFIG", args.configserver)
|
||||||
os.environ.setdefault("CLICKHOUSE_TMP", tmp_dir)
|
os.environ.setdefault("CLICKHOUSE_TMP", tmp_dir)
|
||||||
|
|
||||||
# TODO ! use clickhouse-extract-from-config here:
|
# TODO ! use clickhouse-extract-from-config here:
|
||||||
|
@ -1,20 +1,21 @@
|
|||||||
DROP TABLE IF EXISTS test.clear_column1;
|
DROP TABLE IF EXISTS test.rename1;
|
||||||
DROP TABLE IF EXISTS test.clear_column2;
|
DROP TABLE IF EXISTS test.rename2;
|
||||||
CREATE TABLE test.clear_column1 (p Int64, i Int64, v UInt64) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/test/clear_column', '1', v) PARTITION BY p ORDER BY i;
|
CREATE TABLE test.rename1 (p Int64, i Int64, v UInt64) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/test/tables/rename', '1', v) PARTITION BY p ORDER BY i;
|
||||||
CREATE TABLE test.clear_column2 (p Int64, i Int64, v UInt64) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/test/clear_column', '2', v) PARTITION BY p ORDER BY i;
|
CREATE TABLE test.rename2 (p Int64, i Int64, v UInt64) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/test/tables/rename', '2', v) PARTITION BY p ORDER BY i;
|
||||||
|
|
||||||
INSERT INTO test.clear_column1 VALUES (0, 1, 0);
|
INSERT INTO test.rename1 VALUES (0, 1, 0);
|
||||||
INSERT INTO test.clear_column1 VALUES (0, 1, 1);
|
INSERT INTO test.rename1 VALUES (0, 1, 1);
|
||||||
|
|
||||||
OPTIMIZE TABLE test.clear_column1;
|
OPTIMIZE TABLE test.rename1;
|
||||||
OPTIMIZE TABLE test.clear_column2;
|
OPTIMIZE TABLE test.rename2;
|
||||||
SELECT * FROM test.clear_column1;
|
SELECT * FROM test.rename1;
|
||||||
|
|
||||||
RENAME TABLE test.clear_column2 TO test.clear_column3;
|
RENAME TABLE test.rename2 TO test.rename3;
|
||||||
|
|
||||||
INSERT INTO test.clear_column1 VALUES (0, 1, 2);
|
INSERT INTO test.rename1 VALUES (0, 1, 2);
|
||||||
OPTIMIZE TABLE test.clear_column3;
|
OPTIMIZE TABLE test.rename3;
|
||||||
SELECT * FROM test.clear_column1;
|
SELECT * FROM test.rename1;
|
||||||
|
|
||||||
DROP TABLE IF EXISTS test.clear_column1;
|
DROP TABLE IF EXISTS test.rename1;
|
||||||
DROP TABLE IF EXISTS test.clear_column2;
|
DROP TABLE IF EXISTS test.rename2;
|
||||||
|
DROP TABLE IF EXISTS test.rename3;
|
Loading…
Reference in New Issue
Block a user