yiguolei commented on code in PR #63622:
URL: https://github.com/apache/doris/pull/63622#discussion_r3308229250
##########
be/src/storage/segment/encoding_info.cpp:
##########
@@ -214,124 +216,181 @@ struct TypeEncodingTraits<type, PREFIX_ENCODING, Slice>
{
};
EncodingInfoResolver::EncodingInfoResolver() {
- _add_map<FieldType::OLAP_FIELD_TYPE_TINYINT, BIT_SHUFFLE>();
- _add_map<FieldType::OLAP_FIELD_TYPE_TINYINT, FOR_ENCODING, true>();
- _add_map<FieldType::OLAP_FIELD_TYPE_TINYINT, PLAIN_ENCODING>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_SMALLINT, BIT_SHUFFLE>();
- _add_map<FieldType::OLAP_FIELD_TYPE_SMALLINT, FOR_ENCODING, true>();
- _add_map<FieldType::OLAP_FIELD_TYPE_SMALLINT, PLAIN_ENCODING>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_INT, BIT_SHUFFLE>();
- _add_map<FieldType::OLAP_FIELD_TYPE_INT, FOR_ENCODING, true>();
- _add_map<FieldType::OLAP_FIELD_TYPE_INT, PLAIN_ENCODING>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_BIGINT, BIT_SHUFFLE>();
- _add_map<FieldType::OLAP_FIELD_TYPE_BIGINT, FOR_ENCODING, true>();
- _add_map<FieldType::OLAP_FIELD_TYPE_BIGINT, PLAIN_ENCODING>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_UNSIGNED_BIGINT, BIT_SHUFFLE>();
- _add_map<FieldType::OLAP_FIELD_TYPE_UNSIGNED_INT, BIT_SHUFFLE>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_LARGEINT, BIT_SHUFFLE>();
- _add_map<FieldType::OLAP_FIELD_TYPE_LARGEINT, PLAIN_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_LARGEINT, FOR_ENCODING, true>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_FLOAT, BIT_SHUFFLE>();
- _add_map<FieldType::OLAP_FIELD_TYPE_FLOAT, PLAIN_ENCODING>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_DOUBLE, BIT_SHUFFLE>();
- _add_map<FieldType::OLAP_FIELD_TYPE_DOUBLE, PLAIN_ENCODING>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_CHAR, DICT_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_CHAR, PLAIN_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_CHAR, PLAIN_ENCODING_V2>();
- _add_map<FieldType::OLAP_FIELD_TYPE_CHAR, PREFIX_ENCODING, true>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_VARCHAR, DICT_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_VARCHAR, PLAIN_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_VARCHAR, PLAIN_ENCODING_V2>();
- _add_map<FieldType::OLAP_FIELD_TYPE_VARCHAR, PREFIX_ENCODING, true>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_STRING, DICT_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_STRING, PLAIN_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_STRING, PLAIN_ENCODING_V2>();
- _add_map<FieldType::OLAP_FIELD_TYPE_STRING, PREFIX_ENCODING, true>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_JSONB, DICT_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_JSONB, PLAIN_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_JSONB, PLAIN_ENCODING_V2>();
- _add_map<FieldType::OLAP_FIELD_TYPE_JSONB, PREFIX_ENCODING, true>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_VARIANT, DICT_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_VARIANT, PLAIN_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_VARIANT, PLAIN_ENCODING_V2>();
- _add_map<FieldType::OLAP_FIELD_TYPE_VARIANT, PREFIX_ENCODING, true>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_BOOL, RLE>();
- _add_map<FieldType::OLAP_FIELD_TYPE_BOOL, BIT_SHUFFLE>();
- _add_map<FieldType::OLAP_FIELD_TYPE_BOOL, PLAIN_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_BOOL, PLAIN_ENCODING, true>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_DATE, BIT_SHUFFLE>();
- _add_map<FieldType::OLAP_FIELD_TYPE_DATE, PLAIN_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_DATE, FOR_ENCODING, true>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_DATEV2, BIT_SHUFFLE>();
- _add_map<FieldType::OLAP_FIELD_TYPE_DATEV2, PLAIN_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_DATEV2, FOR_ENCODING, true>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_DATETIMEV2, BIT_SHUFFLE>();
- _add_map<FieldType::OLAP_FIELD_TYPE_DATETIMEV2, PLAIN_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_DATETIMEV2, FOR_ENCODING, true>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_DATETIME, BIT_SHUFFLE>();
- _add_map<FieldType::OLAP_FIELD_TYPE_DATETIME, PLAIN_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_DATETIME, FOR_ENCODING, true>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_TIMESTAMPTZ, BIT_SHUFFLE>();
- _add_map<FieldType::OLAP_FIELD_TYPE_TIMESTAMPTZ, PLAIN_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_TIMESTAMPTZ, FOR_ENCODING, true>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_DECIMAL, BIT_SHUFFLE>();
- _add_map<FieldType::OLAP_FIELD_TYPE_DECIMAL, PLAIN_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_DECIMAL, BIT_SHUFFLE, true>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_DECIMAL32, BIT_SHUFFLE>();
- _add_map<FieldType::OLAP_FIELD_TYPE_DECIMAL32, PLAIN_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_DECIMAL32, BIT_SHUFFLE, true>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_DECIMAL64, BIT_SHUFFLE>();
- _add_map<FieldType::OLAP_FIELD_TYPE_DECIMAL64, PLAIN_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_DECIMAL64, BIT_SHUFFLE, true>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_DECIMAL128I, BIT_SHUFFLE>();
- _add_map<FieldType::OLAP_FIELD_TYPE_DECIMAL128I, PLAIN_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_DECIMAL128I, BIT_SHUFFLE, true>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_DECIMAL256, BIT_SHUFFLE>();
- _add_map<FieldType::OLAP_FIELD_TYPE_DECIMAL256, PLAIN_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_DECIMAL256, BIT_SHUFFLE, true>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_IPV4, BIT_SHUFFLE>();
- _add_map<FieldType::OLAP_FIELD_TYPE_IPV4, PLAIN_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_IPV4, BIT_SHUFFLE, true>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_IPV6, BIT_SHUFFLE>();
- _add_map<FieldType::OLAP_FIELD_TYPE_IPV6, PLAIN_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_IPV6, BIT_SHUFFLE, true>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_HLL, PLAIN_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_HLL, PLAIN_ENCODING_V2>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_BITMAP, PLAIN_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_BITMAP, PLAIN_ENCODING_V2>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_QUANTILE_STATE, PLAIN_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_QUANTILE_STATE, PLAIN_ENCODING_V2>();
-
- _add_map<FieldType::OLAP_FIELD_TYPE_AGG_STATE, PLAIN_ENCODING>();
- _add_map<FieldType::OLAP_FIELD_TYPE_AGG_STATE, PLAIN_ENCODING_V2>();
+ // ===== Phase 1: register every supported (type, encoding) combination
exactly once =====
+ // _register_supported_encoding CHECKs against duplicates; the Phase 2
calls below do not insert into _encoding_map,
+ // so every (type, encoding) used as a default must appear here first.
+
+ // signed integers
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_TINYINT,
BIT_SHUFFLE>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_TINYINT,
PLAIN_ENCODING>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_TINYINT,
FOR_ENCODING>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_SMALLINT,
BIT_SHUFFLE>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_SMALLINT,
PLAIN_ENCODING>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_SMALLINT,
FOR_ENCODING>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_INT,
BIT_SHUFFLE>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_INT,
PLAIN_ENCODING>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_INT,
FOR_ENCODING>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_BIGINT,
BIT_SHUFFLE>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_BIGINT,
PLAIN_ENCODING>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_BIGINT,
FOR_ENCODING>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_LARGEINT,
BIT_SHUFFLE>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_LARGEINT,
PLAIN_ENCODING>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_LARGEINT,
FOR_ENCODING>();
+
+ // unsigned integers
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_UNSIGNED_BIGINT,
BIT_SHUFFLE>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_UNSIGNED_INT,
BIT_SHUFFLE>();
+
+ // FLOAT / DOUBLE
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_FLOAT,
BIT_SHUFFLE>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_FLOAT,
PLAIN_ENCODING>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_DOUBLE,
BIT_SHUFFLE>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_DOUBLE,
PLAIN_ENCODING>();
+
+ // binary types (CHAR/VARCHAR/STRING/JSONB/VARIANT)
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_CHAR,
DICT_ENCODING>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_CHAR,
PLAIN_ENCODING>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_CHAR,
PLAIN_ENCODING_V2>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_CHAR,
PREFIX_ENCODING>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_VARCHAR,
DICT_ENCODING>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_VARCHAR,
PLAIN_ENCODING>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_VARCHAR,
PLAIN_ENCODING_V2>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_VARCHAR,
PREFIX_ENCODING>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_STRING,
DICT_ENCODING>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_STRING,
PLAIN_ENCODING>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_STRING,
PLAIN_ENCODING_V2>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_STRING,
PREFIX_ENCODING>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_JSONB,
DICT_ENCODING>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_JSONB,
PLAIN_ENCODING>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_JSONB,
PLAIN_ENCODING_V2>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_JSONB,
PREFIX_ENCODING>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_VARIANT,
DICT_ENCODING>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_VARIANT,
PLAIN_ENCODING>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_VARIANT,
PLAIN_ENCODING_V2>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_VARIANT,
PREFIX_ENCODING>();
+
+ // BOOL
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_BOOL, RLE>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_BOOL,
BIT_SHUFFLE>();
+ _register_supported_encoding<FieldType::OLAP_FIELD_TYPE_BOOL,
PLAIN_ENCODING>();
+
Review Comment:
这个漏了 _add_map<FieldType::OLAP_FIELD_TYPE_BOOL, PLAIN_ENCODING, true>();
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]