Better exception messages; fixed error; updated tests

This commit is contained in:
Alexey Milovidov 2020-05-04 17:25:40 +03:00
parent 6b0bffcdab
commit 301c6137e4
9 changed files with 14 additions and 2 deletions

View File

@ -68,8 +68,11 @@ CompressionCodecPtr CompressionCodecFactory::get(const ASTPtr & ast, DataTypePtr
else if (codecs.size() > 1)
res = std::make_shared<CompressionCodecMultiple>(codecs, sanity_check);
if (sanity_check && !res->isCompression())
throw Exception("The combination of compression codecs " + res->getCodecDesc() + " does not compress anything."
/// Allow to explicitly specify single NONE codec if user don't want any compression.
/// But applying other transformations solely without compression (e.g. Delta) does not make sense.
if (sanity_check && !res->isCompression() && !res->isNone())
throw Exception("Compression codec " + res->getCodecDesc() + " does not compress anything."
" You may want to add generic compression algorithm after other transformations, like: " + res->getCodecDesc() + ", LZ4."
" (Note: you can enable setting 'allow_suspicious_codecs' to skip this check).",
ErrorCodes::BAD_ARGUMENTS);

View File

@ -28,6 +28,7 @@ SELECT * FROM alter_compression_codec ORDER BY id;
OPTIMIZE TABLE alter_compression_codec FINAL;
SELECT * FROM alter_compression_codec ORDER BY id;
SET allow_suspicious_codecs = 1;
ALTER TABLE alter_compression_codec MODIFY COLUMN alter_column CODEC(ZSTD, LZ4HC, LZ4, LZ4, NONE);
SELECT compression_codec FROM system.columns WHERE database = currentDatabase() AND table = 'alter_compression_codec' AND name = 'alter_column';

View File

@ -1,4 +1,5 @@
SET send_logs_level = 'none';
SET allow_suspicious_codecs = 1;
DROP TABLE IF EXISTS compression_codec;

View File

@ -1,4 +1,5 @@
SET send_logs_level = 'none';
SET allow_suspicious_codecs = 1;
-- copy-paste for storage log

View File

@ -1,4 +1,5 @@
SET send_logs_level = 'none';
SET allow_suspicious_codecs = 1;
DROP TABLE IF EXISTS delta_codec_for_alter;
CREATE TABLE delta_codec_for_alter (date Date, x UInt32 Codec(Delta), s FixedString(128)) ENGINE = MergeTree ORDER BY tuple();

View File

@ -1,4 +1,5 @@
SET send_logs_level = 'none';
SET allow_suspicious_codecs = 1;
DROP TABLE IF EXISTS test.compression_codec_replicated1;
DROP TABLE IF EXISTS test.compression_codec_replicated2;

View File

@ -46,6 +46,7 @@ SYSTEM SYNC REPLICA alter_compression_codec1;
SELECT * FROM alter_compression_codec1 ORDER BY id;
SELECT * FROM alter_compression_codec2 ORDER BY id;
SET allow_suspicious_codecs = 1;
ALTER TABLE alter_compression_codec1 MODIFY COLUMN alter_column CODEC(ZSTD, LZ4HC, LZ4, LZ4, NONE);
SYSTEM SYNC REPLICA alter_compression_codec1;
SYSTEM SYNC REPLICA alter_compression_codec2;

View File

@ -57,6 +57,7 @@ SET force_primary_key = 0;
DROP TABLE IF EXISTS large_alter_table_00926;
DROP TABLE IF EXISTS store_of_hash_00926;
SET allow_suspicious_codecs = 1;
CREATE TABLE large_alter_table_00926 (
somedate Date CODEC(ZSTD, ZSTD, ZSTD(12), LZ4HC(12)),
id UInt64 CODEC(LZ4, ZSTD, NONE, LZ4HC),

View File

@ -1,3 +1,5 @@
SET allow_suspicious_codecs = 1;
DROP TABLE IF EXISTS segfault_table;
CREATE TABLE segfault_table (id UInt16 CODEC(Delta(2))) ENGINE MergeTree() order by tuple();