github-actions[bot] commented on code in PR #26317:
URL: https://github.com/apache/doris/pull/26317#discussion_r1383057871


##########
be/src/vec/exec/vjdbc_connector.cpp:
##########
@@ -223,6 +198,158 @@ Status JdbcConnector::query() {
     return Status::OK();
 }
 
+Status JdbcConnector::get_next(bool* eos, Block* block, int batch_size) {
+    if (!_is_open) {
+        return Status::InternalError("get_next before open of jdbc 
connector.");
+    }
+    SCOPED_RAW_TIMER(&_jdbc_statistic._get_data_timer);
+    JNIEnv* env = nullptr;
+    RETURN_IF_ERROR(JniUtil::GetJNIEnv(&env));
+    jboolean has_next =
+            env->CallNonvirtualBooleanMethod(_executor_obj, _executor_clazz, 
_executor_has_next_id);
+    if (has_next != JNI_TRUE) {
+        *eos = true;
+        return Status::OK();
+    }
+
+    RETURN_IF_ERROR(JniUtil::GetJniExceptionMsg(env));
+
+    auto column_size = _tuple_desc->slots().size();
+    auto slots = _tuple_desc->slots();
+
+    jobject map = _get_reader_params(block, env, column_size);
+    long address =
+            env->CallLongMethod(_executor_obj, _executor_get_block_address_id, 
batch_size, map);
+    RETURN_IF_ERROR(JniUtil::GetJniExceptionMsg(env));
+    env->DeleteLocalRef(map);
+
+    std::vector<size_t> all_columns;
+    for (size_t i = 0; i < column_size; ++i) {
+        all_columns.push_back(i);
+    }
+    Status fill_block_status = JniConnector::fill_block(block, all_columns, 
address);
+    if (!fill_block_status) {
+        return fill_block_status;
+    }
+
+    Status cast_status = _cast_string_to_special(block, env, column_size);
+
+    if (!cast_status) {
+        return cast_status;
+    }
+
+    return JniUtil::GetJniExceptionMsg(env);
+}
+
+Status JdbcConnector::append(vectorized::Block* block,
+                             const vectorized::VExprContextSPtrs& 
output_vexpr_ctxs,
+                             uint32_t start_send_row, uint32_t* num_rows_sent,

Review Comment:
   warning: pointer parameter 'num_rows_sent' can be pointer to const 
[readability-non-const-parameter]
   
   ```suggestion
                                uint32_t start_send_row, const uint32_t* 
num_rows_sent,
   ```
   



##########
be/src/vec/exec/vjdbc_connector.cpp:
##########
@@ -223,6 +198,158 @@
     return Status::OK();
 }
 
+Status JdbcConnector::get_next(bool* eos, Block* block, int batch_size) {
+    if (!_is_open) {
+        return Status::InternalError("get_next before open of jdbc 
connector.");
+    }
+    SCOPED_RAW_TIMER(&_jdbc_statistic._get_data_timer);
+    JNIEnv* env = nullptr;
+    RETURN_IF_ERROR(JniUtil::GetJNIEnv(&env));
+    jboolean has_next =
+            env->CallNonvirtualBooleanMethod(_executor_obj, _executor_clazz, 
_executor_has_next_id);
+    if (has_next != JNI_TRUE) {
+        *eos = true;
+        return Status::OK();
+    }
+
+    RETURN_IF_ERROR(JniUtil::GetJniExceptionMsg(env));
+
+    auto column_size = _tuple_desc->slots().size();
+    auto slots = _tuple_desc->slots();
+
+    jobject map = _get_reader_params(block, env, column_size);
+    long address =
+            env->CallLongMethod(_executor_obj, _executor_get_block_address_id, 
batch_size, map);
+    RETURN_IF_ERROR(JniUtil::GetJniExceptionMsg(env));
+    env->DeleteLocalRef(map);
+
+    std::vector<size_t> all_columns;
+    for (size_t i = 0; i < column_size; ++i) {
+        all_columns.push_back(i);
+    }
+    Status fill_block_status = JniConnector::fill_block(block, all_columns, 
address);
+    if (!fill_block_status) {
+        return fill_block_status;
+    }
+
+    Status cast_status = _cast_string_to_special(block, env, column_size);
+
+    if (!cast_status) {
+        return cast_status;
+    }
+
+    return JniUtil::GetJniExceptionMsg(env);
+}
+
+Status JdbcConnector::append(vectorized::Block* block,
+                             const vectorized::VExprContextSPtrs& 
output_vexpr_ctxs,
+                             uint32_t start_send_row, uint32_t* num_rows_sent,
+                             TOdbcTableType::type table_type) {
+    RETURN_IF_ERROR(exec_stmt_write(block, output_vexpr_ctxs, num_rows_sent));
+    COUNTER_UPDATE(_sent_rows_counter, *num_rows_sent);
+    return Status::OK();
+}
+
+Status JdbcConnector::exec_stmt_write(Block* block, const VExprContextSPtrs& 
output_vexpr_ctxs,

Review Comment:
   warning: method 'exec_stmt_write' can be made static 
[readability-convert-member-functions-to-static]
   
   ```suggestion
   static Status JdbcConnector::exec_stmt_write(Block* block, const 
VExprContextSPtrs& output_vexpr_ctxs,
   ```
   



##########
be/src/vec/exec/vjdbc_connector.cpp:
##########
@@ -223,6 +198,158 @@
     return Status::OK();
 }
 
+Status JdbcConnector::get_next(bool* eos, Block* block, int batch_size) {
+    if (!_is_open) {
+        return Status::InternalError("get_next before open of jdbc 
connector.");
+    }
+    SCOPED_RAW_TIMER(&_jdbc_statistic._get_data_timer);
+    JNIEnv* env = nullptr;
+    RETURN_IF_ERROR(JniUtil::GetJNIEnv(&env));
+    jboolean has_next =
+            env->CallNonvirtualBooleanMethod(_executor_obj, _executor_clazz, 
_executor_has_next_id);
+    if (has_next != JNI_TRUE) {
+        *eos = true;
+        return Status::OK();
+    }
+
+    RETURN_IF_ERROR(JniUtil::GetJniExceptionMsg(env));
+
+    auto column_size = _tuple_desc->slots().size();
+    auto slots = _tuple_desc->slots();
+
+    jobject map = _get_reader_params(block, env, column_size);
+    long address =
+            env->CallLongMethod(_executor_obj, _executor_get_block_address_id, 
batch_size, map);
+    RETURN_IF_ERROR(JniUtil::GetJniExceptionMsg(env));
+    env->DeleteLocalRef(map);
+
+    std::vector<size_t> all_columns;
+    for (size_t i = 0; i < column_size; ++i) {
+        all_columns.push_back(i);
+    }
+    Status fill_block_status = JniConnector::fill_block(block, all_columns, 
address);
+    if (!fill_block_status) {
+        return fill_block_status;
+    }
+
+    Status cast_status = _cast_string_to_special(block, env, column_size);
+
+    if (!cast_status) {
+        return cast_status;
+    }
+
+    return JniUtil::GetJniExceptionMsg(env);
+}
+
+Status JdbcConnector::append(vectorized::Block* block,
+                             const vectorized::VExprContextSPtrs& 
output_vexpr_ctxs,
+                             uint32_t start_send_row, uint32_t* num_rows_sent,
+                             TOdbcTableType::type table_type) {
+    RETURN_IF_ERROR(exec_stmt_write(block, output_vexpr_ctxs, num_rows_sent));
+    COUNTER_UPDATE(_sent_rows_counter, *num_rows_sent);
+    return Status::OK();
+}
+
+Status JdbcConnector::exec_stmt_write(Block* block, const VExprContextSPtrs& 
output_vexpr_ctxs,
+                                      uint32_t* num_rows_sent) {
+    SCOPED_TIMER(_result_send_timer);
+    JNIEnv* env = nullptr;
+    RETURN_IF_ERROR(JniUtil::GetJNIEnv(&env));
+
+    // prepare table meta information
+    std::unique_ptr<long[]> meta_data;
+    RETURN_IF_ERROR(JniConnector::to_java_table(block, meta_data));
+    long meta_address = (long)meta_data.get();
+    auto table_schema = JniConnector::parse_table_schema(block);
+
+    // prepare constructor parameters
+    std::map<String, String> write_params = {{"meta_address", 
std::to_string(meta_address)},
+                                             {"required_fields", 
table_schema.first},
+                                             {"columns_types", 
table_schema.second}};
+    jobject hashmap_object = JniUtil::convert_to_java_map(env, write_params);
+    env->CallNonvirtualIntMethod(_executor_obj, _executor_clazz, 
_executor_stmt_write_id,
+                                 hashmap_object);
+    env->DeleteLocalRef(hashmap_object);
+    RETURN_IF_ERROR(JniUtil::GetJniExceptionMsg(env));
+    *num_rows_sent = block->rows();
+    return Status::OK();
+}
+
+Status JdbcConnector::begin_trans() {
+    if (_use_tranaction) {
+        JNIEnv* env = nullptr;
+        RETURN_IF_ERROR(JniUtil::GetJNIEnv(&env));
+        env->CallNonvirtualVoidMethod(_executor_obj, _executor_clazz, 
_executor_begin_trans_id);
+        RETURN_IF_ERROR(JniUtil::GetJniExceptionMsg(env));
+        _is_in_transaction = true;
+    }
+    return Status::OK();
+}
+
+Status JdbcConnector::abort_trans() {
+    if (!_is_in_transaction) {
+        return Status::InternalError("Abort transaction before begin trans.");
+    }
+    JNIEnv* env = nullptr;
+    RETURN_IF_ERROR(JniUtil::GetJNIEnv(&env));
+    env->CallNonvirtualVoidMethod(_executor_obj, _executor_clazz, 
_executor_abort_trans_id);
+    return JniUtil::GetJniExceptionMsg(env);
+}
+
+Status JdbcConnector::finish_trans() {
+    if (_use_tranaction && _is_in_transaction) {
+        JNIEnv* env = nullptr;
+        RETURN_IF_ERROR(JniUtil::GetJNIEnv(&env));
+        env->CallNonvirtualVoidMethod(_executor_obj, _executor_clazz, 
_executor_finish_trans_id);
+        RETURN_IF_ERROR(JniUtil::GetJniExceptionMsg(env));
+        _is_in_transaction = false;
+    }
+    return Status::OK();
+}
+
+Status JdbcConnector::_register_func_id(JNIEnv* env) {

Review Comment:
   warning: method '_register_func_id' can be made static 
[readability-convert-member-functions-to-static]
   
   ```suggestion
   static Status JdbcConnector::_register_func_id(JNIEnv* env) {
   ```
   



##########
be/src/vec/exec/vjdbc_connector.cpp:
##########
@@ -419,432 +534,94 @@
     return Status::OK();
 }
 
-Status JdbcConnector::get_next(bool* eos, std::vector<MutableColumnPtr>& 
columns, Block* block,
-                               int batch_size) {
-    if (!_is_open) {
-        return Status::InternalError("get_next before open of jdbc 
connector.");
-    }
-    SCOPED_RAW_TIMER(&_jdbc_statistic._get_data_timer);
-    JNIEnv* env = nullptr;
-    RETURN_IF_ERROR(JniUtil::GetJNIEnv(&env));
-    jboolean has_next =
-            env->CallNonvirtualBooleanMethod(_executor_obj, _executor_clazz, 
_executor_has_next_id);
-    if (has_next != JNI_TRUE) {
-        *eos = true;
-        return Status::OK();
-    }
+std::string JdbcConnector::_jobject_to_string(JNIEnv* env, jobject jobj) {
+    jobject jstr = env->CallObjectMethod(jobj, _to_string_id);
+    auto coding = env->NewStringUTF("UTF-8");
+    const jbyteArray stringJbytes = (jbyteArray)env->CallObjectMethod(jstr, 
_get_bytes_id, coding);
+    size_t length = (size_t)env->GetArrayLength(stringJbytes);

Review Comment:
   warning: use auto when initializing with a cast to avoid duplicating the 
type name [modernize-use-auto]
   
   ```suggestion
       auto length = (size_t)env->GetArrayLength(stringJbytes);
   ```
   



-- 
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