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

Reply via email to