amorynan commented on code in PR #19543:
URL: https://github.com/apache/doris/pull/19543#discussion_r1202060426
##########
be/src/vec/sink/vmysql_result_writer.cpp:
##########
@@ -624,269 +625,8 @@ Status
VMysqlResultWriter<is_binary_format>::append_block(Block& input_block) {
block.get_by_position(i).column->size());
int scale = _output_vexpr_ctxs[i]->root()->type().scale;
- switch (_output_vexpr_ctxs[i]->root()->result_type()) {
- case TYPE_BOOLEAN:
- if (type_ptr->is_nullable()) {
- status = _add_one_column<PrimitiveType::TYPE_BOOLEAN,
true>(column_ptr, result,
-
rows_buffer, col_const);
- } else {
- status = _add_one_column<PrimitiveType::TYPE_BOOLEAN, false>(
- column_ptr, result, rows_buffer, col_const);
- }
- break;
- case TYPE_TINYINT: {
- if (type_ptr->is_nullable()) {
- status = _add_one_column<PrimitiveType::TYPE_TINYINT,
true>(column_ptr, result,
-
rows_buffer, col_const);
- } else {
- status = _add_one_column<PrimitiveType::TYPE_TINYINT, false>(
- column_ptr, result, rows_buffer, col_const);
- }
- break;
- }
- case TYPE_SMALLINT: {
- if (type_ptr->is_nullable()) {
- status = _add_one_column<PrimitiveType::TYPE_SMALLINT, true>(
- column_ptr, result, rows_buffer, col_const);
- } else {
- status = _add_one_column<PrimitiveType::TYPE_SMALLINT, false>(
- column_ptr, result, rows_buffer, col_const);
- }
- break;
- }
- case TYPE_INT: {
- if (type_ptr->is_nullable()) {
- status = _add_one_column<PrimitiveType::TYPE_INT,
true>(column_ptr, result,
-
rows_buffer, col_const);
- } else {
- status = _add_one_column<PrimitiveType::TYPE_INT,
false>(column_ptr, result,
-
rows_buffer, col_const);
- }
- break;
- }
- case TYPE_BIGINT: {
- if (type_ptr->is_nullable()) {
- status = _add_one_column<PrimitiveType::TYPE_BIGINT,
true>(column_ptr, result,
-
rows_buffer, col_const);
- } else {
- status = _add_one_column<PrimitiveType::TYPE_BIGINT,
false>(column_ptr, result,
-
rows_buffer, col_const);
- }
- break;
- }
- case TYPE_LARGEINT: {
- if (type_ptr->is_nullable()) {
- status = _add_one_column<PrimitiveType::TYPE_LARGEINT, true>(
- column_ptr, result, rows_buffer, col_const);
- } else {
- status = _add_one_column<PrimitiveType::TYPE_LARGEINT, false>(
- column_ptr, result, rows_buffer, col_const);
- }
- break;
- }
- case TYPE_FLOAT: {
- if (type_ptr->is_nullable()) {
- status = _add_one_column<PrimitiveType::TYPE_FLOAT,
true>(column_ptr, result,
-
rows_buffer, col_const);
- } else {
- status = _add_one_column<PrimitiveType::TYPE_FLOAT,
false>(column_ptr, result,
-
rows_buffer, col_const);
- }
- break;
- }
- case TYPE_DOUBLE: {
- if (type_ptr->is_nullable()) {
- status = _add_one_column<PrimitiveType::TYPE_DOUBLE,
true>(column_ptr, result,
-
rows_buffer, col_const);
- } else {
- status = _add_one_column<PrimitiveType::TYPE_DOUBLE,
false>(column_ptr, result,
-
rows_buffer, col_const);
- }
- break;
- }
- case TYPE_TIME: {
- if (type_ptr->is_nullable()) {
- status = _add_one_column<PrimitiveType::TYPE_TIME,
true>(column_ptr, result,
-
rows_buffer, col_const);
- } else {
- status = _add_one_column<PrimitiveType::TYPE_TIME,
false>(column_ptr, result,
-
rows_buffer, col_const);
- }
- break;
- }
- case TYPE_TIMEV2: {
- if (type_ptr->is_nullable()) {
- status = _add_one_column<PrimitiveType::TYPE_TIMEV2,
true>(column_ptr, result,
-
rows_buffer, col_const);
- } else {
- status = _add_one_column<PrimitiveType::TYPE_TIMEV2,
false>(column_ptr, result,
-
rows_buffer, col_const);
- }
- break;
- }
- case TYPE_STRING:
- case TYPE_CHAR:
- case TYPE_VARCHAR:
- case TYPE_AGG_STATE: {
- if (type_ptr->is_nullable()) {
- status = _add_one_column<PrimitiveType::TYPE_VARCHAR,
true>(column_ptr, result,
-
rows_buffer, col_const);
- } else {
- status = _add_one_column<PrimitiveType::TYPE_VARCHAR, false>(
- column_ptr, result, rows_buffer, col_const);
- }
- break;
- }
- case TYPE_DECIMALV2: {
- if (type_ptr->is_nullable()) {
- auto& nested_type =
- assert_cast<const
DataTypeNullable&>(*type_ptr).get_nested_type();
- status = _add_one_column<PrimitiveType::TYPE_DECIMALV2, true>(
- column_ptr, result, rows_buffer, col_const, scale,
{nested_type});
- } else {
- status = _add_one_column<PrimitiveType::TYPE_DECIMALV2, false>(
- column_ptr, result, rows_buffer, col_const, scale,
{type_ptr});
- }
- break;
- }
- case TYPE_DECIMAL32: {
- if (type_ptr->is_nullable()) {
- auto& nested_type =
- assert_cast<const
DataTypeNullable&>(*type_ptr).get_nested_type();
- status = _add_one_column<PrimitiveType::TYPE_DECIMAL32, true>(
- column_ptr, result, rows_buffer, col_const, scale,
{nested_type});
- } else {
- status = _add_one_column<PrimitiveType::TYPE_DECIMAL32, false>(
- column_ptr, result, rows_buffer, col_const, scale,
{type_ptr});
- }
- break;
- }
- case TYPE_DECIMAL64: {
- if (type_ptr->is_nullable()) {
- auto& nested_type =
- assert_cast<const
DataTypeNullable&>(*type_ptr).get_nested_type();
- status = _add_one_column<PrimitiveType::TYPE_DECIMAL64, true>(
- column_ptr, result, rows_buffer, col_const, scale,
{nested_type});
- } else {
- status = _add_one_column<PrimitiveType::TYPE_DECIMAL64, false>(
- column_ptr, result, rows_buffer, col_const, scale,
{type_ptr});
- }
- break;
- }
- case TYPE_DECIMAL128I: {
- if (type_ptr->is_nullable()) {
- auto& nested_type =
- assert_cast<const
DataTypeNullable&>(*type_ptr).get_nested_type();
- status = _add_one_column<PrimitiveType::TYPE_DECIMAL128I,
true>(
- column_ptr, result, rows_buffer, col_const, scale,
{nested_type});
- } else {
- status = _add_one_column<PrimitiveType::TYPE_DECIMAL128I,
false>(
- column_ptr, result, rows_buffer, col_const, scale,
{type_ptr});
- }
- break;
- }
- case TYPE_JSONB: {
- if (type_ptr->is_nullable()) {
- status = _add_one_column<PrimitiveType::TYPE_JSONB,
true>(column_ptr, result,
-
rows_buffer, col_const);
- } else {
- status = _add_one_column<PrimitiveType::TYPE_JSONB,
false>(column_ptr, result,
-
rows_buffer, col_const);
- }
- break;
- }
- case TYPE_DATE:
- case TYPE_DATETIME: {
- if (type_ptr->is_nullable()) {
- status = _add_one_column<PrimitiveType::TYPE_DATETIME, true>(
- column_ptr, result, rows_buffer, col_const);
- } else {
- status = _add_one_column<PrimitiveType::TYPE_DATETIME, false>(
- column_ptr, result, rows_buffer, col_const);
- }
- break;
- }
- case TYPE_DATEV2: {
- if (type_ptr->is_nullable()) {
- status = _add_one_column<PrimitiveType::TYPE_DATEV2,
true>(column_ptr, result,
-
rows_buffer, col_const);
- } else {
- status = _add_one_column<PrimitiveType::TYPE_DATEV2,
false>(column_ptr, result,
-
rows_buffer, col_const);
- }
- break;
- }
- case TYPE_DATETIMEV2: {
- if (type_ptr->is_nullable()) {
- status = _add_one_column<PrimitiveType::TYPE_DATETIMEV2, true>(
- column_ptr, result, rows_buffer, col_const, scale);
- } else {
- status = _add_one_column<PrimitiveType::TYPE_DATETIMEV2,
false>(
- column_ptr, result, rows_buffer, col_const, scale);
- }
- break;
- }
- case TYPE_HLL:
- case TYPE_QUANTILE_STATE:
- case TYPE_OBJECT: {
- if (type_ptr->is_nullable()) {
- status = _add_one_column<PrimitiveType::TYPE_OBJECT,
true>(column_ptr, result,
-
rows_buffer, col_const);
- } else {
- status = _add_one_column<PrimitiveType::TYPE_OBJECT,
false>(column_ptr, result,
-
rows_buffer, col_const);
- }
- break;
- }
- case TYPE_ARRAY: {
- // Currently all functions only support single-level nested arrays,
- // so we use Array's child scale to represent the scale of nested
type.
- scale = _output_vexpr_ctxs[i]->root()->type().children[0].scale;
- if (type_ptr->is_nullable()) {
- auto& nested_type =
- assert_cast<const
DataTypeNullable&>(*type_ptr).get_nested_type();
- auto& sub_type = assert_cast<const
DataTypeArray&>(*nested_type).get_nested_type();
- status = _add_one_column<PrimitiveType::TYPE_ARRAY, true>(
- column_ptr, result, rows_buffer, col_const, scale,
{sub_type});
- } else {
- auto& sub_type = assert_cast<const
DataTypeArray&>(*type_ptr).get_nested_type();
- status = _add_one_column<PrimitiveType::TYPE_ARRAY, false>(
- column_ptr, result, rows_buffer, col_const, scale,
{sub_type});
- }
- break;
- }
- case TYPE_STRUCT: {
- if (type_ptr->is_nullable()) {
- auto& nested_type =
- assert_cast<const
DataTypeNullable&>(*type_ptr).get_nested_type();
- auto& sub_types = assert_cast<const
DataTypeStruct&>(*nested_type).get_elements();
- status = _add_one_column<PrimitiveType::TYPE_STRUCT, true>(
- column_ptr, result, rows_buffer, col_const, scale,
sub_types);
- } else {
- auto& sub_types = assert_cast<const
DataTypeStruct&>(*type_ptr).get_elements();
- status = _add_one_column<PrimitiveType::TYPE_STRUCT, false>(
- column_ptr, result, rows_buffer, col_const, scale,
sub_types);
- }
- break;
- }
- case TYPE_MAP: {
- if (type_ptr->is_nullable()) {
- auto& nested_type =
- assert_cast<const
DataTypeNullable&>(*type_ptr).get_nested_type(); //for map
- status = _add_one_column<PrimitiveType::TYPE_MAP, true>(
- column_ptr, result, rows_buffer, col_const, scale,
{nested_type});
- } else {
- status = _add_one_column<PrimitiveType::TYPE_MAP, false>(
- column_ptr, result, rows_buffer, col_const, scale,
{type_ptr});
- }
- break;
- }
- default: {
- LOG(WARNING) << "can't convert this type to mysql type. type = "
- << _output_vexpr_ctxs[i]->root()->type();
- return Status::InternalError("vec block pack mysql buffer
failed.");
- }
- }
+
RETURN_IF_ERROR(type_ptr->get_serde()->write_column_to_mysql(*column_ptr,
rows_buffer, 0, 0,
Review Comment:
yes , later I would use create_data_type_serdes
--
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]