This is an automated email from the ASF dual-hosted git repository. kxiao pushed a commit to branch branch-2.0 in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push: new 117c06f623 [improvement](jdbc catalog) Optimize Loop Performance by Caching `isNebula` Method Result (#24260) 117c06f623 is described below commit 117c06f623e4fa6a23277fb36c25daec3cc4340a Author: zy-kkk <zhongy...@gmail.com> AuthorDate: Wed Sep 13 21:40:28 2023 +0800 [improvement](jdbc catalog) Optimize Loop Performance by Caching `isNebula` Method Result (#24260) --- .../java/org/apache/doris/jdbc/JdbcExecutor.java | 30 ++++++++++++++-------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/JdbcExecutor.java b/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/JdbcExecutor.java index 4541de0f4c..74e65c73ab 100644 --- a/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/JdbcExecutor.java +++ b/fe/be-java-extensions/jdbc-scanner/src/main/java/org/apache/doris/jdbc/JdbcExecutor.java @@ -148,11 +148,15 @@ public class JdbcExecutor { int columnCount = resultSetMetaData.getColumnCount(); resultColumnTypeNames = new ArrayList<>(columnCount); block = new ArrayList<>(columnCount); - for (int i = 0; i < columnCount; ++i) { - if (!isNebula()) { + if (isNebula()) { + for (int i = 0; i < columnCount; ++i) { + block.add((Object[]) Array.newInstance(Object.class, batchSizeNum)); + } + } else { + for (int i = 0; i < columnCount; ++i) { resultColumnTypeNames.add(resultSetMetaData.getColumnClassName(i + 1)); + block.add((Object[]) Array.newInstance(Object.class, batchSizeNum)); } - block.add((Object[]) Array.newInstance(Object.class, batchSizeNum)); } return columnCount; } catch (SQLException e) { @@ -367,16 +371,22 @@ public class JdbcExecutor { try { int columnCount = resultSetMetaData.getColumnCount(); curBlockRows = 0; - do { - for (int i = 0; i < columnCount; ++i) { - if (isNebula()) { + + if (isNebula()) { + do { + for (int i = 0; i < columnCount; ++i) { block.get(i)[curBlockRows] = UdfUtils.convertObject((ValueWrapper) resultSet.getObject(i + 1)); - } else { + } + curBlockRows++; + } while (curBlockRows < batchSize && resultSet.next()); + } else { + do { + for (int i = 0; i < columnCount; ++i) { block.get(i)[curBlockRows] = resultSet.getObject(i + 1); } - } - curBlockRows++; - } while (curBlockRows < batchSize && resultSet.next()); + curBlockRows++; + } while (curBlockRows < batchSize && resultSet.next()); + } } catch (SQLException e) { throw new UdfRuntimeException("get next block failed: ", e); } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org