HappenLee commented on code in PR #12534: URL: https://github.com/apache/doris/pull/12534#discussion_r969128036
########## be/src/vec/exec/vjdbc_connector.cpp: ########## @@ -301,6 +321,118 @@ Status JdbcConnector::_convert_column_data(JNIEnv* env, jobject jobj, return Status::OK(); } +Status JdbcConnector::append(const std::string& table_name, vectorized::Block* block, + const std::vector<vectorized::VExprContext*>& _output_vexpr_ctxs, + uint32_t start_send_row, uint32_t* num_rows_sent) { + _insert_stmt_buffer.clear(); + std::u16string insert_stmt; + { + SCOPED_TIMER(_convert_tuple_timer); + fmt::format_to(_insert_stmt_buffer, "INSERT INTO {} VALUES (", table_name); + + int num_rows = block->rows(); + int num_columns = block->columns(); + for (int i = start_send_row; i < num_rows; ++i) { + (*num_rows_sent)++; + + // Construct insert statement of jdbc table + for (int j = 0; j < num_columns; ++j) { + if (j != 0) { + fmt::format_to(_insert_stmt_buffer, "{}", ", "); + } + auto [item, size] = block->get_by_position(j).column->get_data_at(i); + if (item == nullptr) { + fmt::format_to(_insert_stmt_buffer, "{}", "NULL"); + continue; + } + switch (_output_vexpr_ctxs[j]->root()->type().type) { + case TYPE_BOOLEAN: + case TYPE_TINYINT: + fmt::format_to(_insert_stmt_buffer, "{}", + *reinterpret_cast<const int8_t*>(item)); + break; + case TYPE_SMALLINT: + fmt::format_to(_insert_stmt_buffer, "{}", + *reinterpret_cast<const int16_t*>(item)); + break; + case TYPE_INT: + fmt::format_to(_insert_stmt_buffer, "{}", + *reinterpret_cast<const int32_t*>(item)); + break; + case TYPE_BIGINT: + fmt::format_to(_insert_stmt_buffer, "{}", + *reinterpret_cast<const int64_t*>(item)); + break; + case TYPE_FLOAT: + fmt::format_to(_insert_stmt_buffer, "{}", + *reinterpret_cast<const float*>(item)); + break; + case TYPE_DOUBLE: + fmt::format_to(_insert_stmt_buffer, "{}", + *reinterpret_cast<const double*>(item)); + break; + case TYPE_DATE: Review Comment: support `NEW_DATE/NEW_DECIMAL` ########## be/src/vec/exec/vjdbc_connector.cpp: ########## @@ -301,6 +321,118 @@ Status JdbcConnector::_convert_column_data(JNIEnv* env, jobject jobj, return Status::OK(); } +Status JdbcConnector::append(const std::string& table_name, vectorized::Block* block, + const std::vector<vectorized::VExprContext*>& _output_vexpr_ctxs, + uint32_t start_send_row, uint32_t* num_rows_sent) { + _insert_stmt_buffer.clear(); + std::u16string insert_stmt; Review Comment: this code should be ABTRUCT in a single class -- 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