yiguolei commented on code in PR #50290: URL: https://github.com/apache/doris/pull/50290#discussion_r2057491382
########## be/src/vec/data_types/data_type_factory.cpp: ########## @@ -634,4 +503,337 @@ DataTypePtr DataTypeFactory::create_data_type(const segment_v2::ColumnMetaPB& pc return nested; } +DataTypePtr DataTypeFactory::create_data_type(const PrimitiveType primitive_type, bool is_nullable, + int precision, int scale, int len) { + DataTypePtr nested = nullptr; + DataTypes subTypes; + switch (primitive_type) { + case TYPE_BOOLEAN: + nested = std::make_shared<vectorized::DataTypeUInt8>(); + break; + case TYPE_TINYINT: + nested = std::make_shared<vectorized::DataTypeInt8>(); + break; + case TYPE_SMALLINT: + nested = std::make_shared<vectorized::DataTypeInt16>(); + break; + case TYPE_INT: + nested = std::make_shared<vectorized::DataTypeInt32>(); + break; + case TYPE_FLOAT: + nested = std::make_shared<vectorized::DataTypeFloat32>(); + break; + case TYPE_BIGINT: + nested = std::make_shared<vectorized::DataTypeInt64>(); + break; + case TYPE_LARGEINT: + nested = std::make_shared<vectorized::DataTypeInt128>(); + break; + case TYPE_IPV4: + nested = std::make_shared<vectorized::DataTypeIPv4>(); + break; + case TYPE_IPV6: + nested = std::make_shared<vectorized::DataTypeIPv6>(); + break; + case TYPE_DATE: + nested = std::make_shared<vectorized::DataTypeDate>(); + break; + case TYPE_DATEV2: + nested = std::make_shared<vectorized::DataTypeDateV2>(); + break; + case TYPE_DATETIMEV2: + nested = vectorized::create_datetimev2(scale); + break; + case TYPE_DATETIME: + nested = std::make_shared<vectorized::DataTypeDateTime>(); + break; + case TYPE_TIMEV2: + nested = std::make_shared<vectorized::DataTypeTimeV2>(scale); + break; + case TYPE_DOUBLE: + nested = std::make_shared<vectorized::DataTypeFloat64>(); + break; + case TYPE_VARIANT: + nested = std::make_shared<vectorized::DataTypeObject>("", true); + break; + case TYPE_STRING: + case TYPE_CHAR: + case TYPE_VARCHAR: + case TYPE_BINARY: + case TYPE_LAMBDA_FUNCTION: + nested = std::make_shared<vectorized::DataTypeString>( + len, primitive_type == TYPE_BINARY || primitive_type == TYPE_LAMBDA_FUNCTION + ? TYPE_STRING + : primitive_type); + break; + case TYPE_JSONB: + nested = std::make_shared<vectorized::DataTypeJsonb>(); + break; + case TYPE_HLL: + nested = std::make_shared<vectorized::DataTypeHLL>(); + break; + case TYPE_OBJECT: + nested = std::make_shared<vectorized::DataTypeBitMap>(); + break; + case TYPE_DECIMALV2: + nested = std::make_shared<vectorized::DataTypeDecimal<vectorized::Decimal128V2>>( + BeConsts::MAX_DECIMALV2_PRECISION, BeConsts::MAX_DECIMALV2_SCALE, precision, scale); + break; + case TYPE_QUANTILE_STATE: + nested = std::make_shared<vectorized::DataTypeQuantileState>(); + break; + case TYPE_DECIMAL32: + case TYPE_DECIMAL64: + case TYPE_DECIMAL128I: + case TYPE_DECIMAL256: + nested = vectorized::create_decimal(precision, scale, false); Review Comment: 把这个方法移动到datatype decimal 中,作为一个静态函数,别做全局的了 -- 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: commits-unsubscr...@doris.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org