You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by cr...@apache.org on 2026/04/13 03:47:49 UTC

(iotdb) 01/01: Fix NPE in table model export when -q is not specified

This is an automated email from the ASF dual-hosted git repository.

critas pushed a commit to branch fix_export
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit d6b4fa556859a5f207b7a0e454fbb32b0a31a1f6
Author: CritasWang <cr...@outlook.com>
AuthorDate: Mon Apr 13 11:47:29 2026 +0800

    Fix NPE in table model export when -q is not specified
    
      When using export-data with table model (sql_dialect=table) and only
      specifying -db without -q, queryCommand is null. The original condition
      `sqlDialectTree && queryCommand == null` only handled the tree model
      case, causing the else branch to call `queryCommand.trim().split(";")`
      which throws NullPointerException.
    
      Restructure the branch logic to check `queryCommand == null` first:
      - Tree model + no query: interactive SQL input (unchanged)
      - Table model + no query: call exportBySql(null, 0) to auto-generate
        "select * from <table>" for all tables, which also correctly applies
        start_time/end_time filters
      - Query provided: split by semicolon for multi-statement support (unchanged)
---
 .../org/apache/iotdb/tool/data/ExportData.java     | 28 ++++++++++++----------
 1 file changed, 16 insertions(+), 12 deletions(-)

diff --git a/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/data/ExportData.java b/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/data/ExportData.java
index 9f52c6834be..322f10e059b 100644
--- a/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/data/ExportData.java
+++ b/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/data/ExportData.java
@@ -224,18 +224,22 @@ public class ExportData extends AbstractDataTool {
         exportData = new ExportDataTable();
         exportData.init();
       }
-      if (sqlDialectTree && queryCommand == null) {
-        LineReader lineReader =
-            JlineUtils.getLineReader(
-                new CliContext(System.in, System.out, System.err, ExitType.EXCEPTION),
-                username,
-                host,
-                port);
-        String sql = lineReader.readLine(Constants.EXPORT_CLI_PREFIX + "> please input query: ");
-        ioTPrinter.println(sql);
-        String[] values = sql.trim().split(";");
-        for (int i = 0; i < values.length; i++) {
-          exportData.exportBySql(values[i], i);
+      if (queryCommand == null) {
+        if (sqlDialectTree) {
+          LineReader lineReader =
+              JlineUtils.getLineReader(
+                  new CliContext(System.in, System.out, System.err, ExitType.EXCEPTION),
+                  username,
+                  host,
+                  port);
+          String sql = lineReader.readLine(Constants.EXPORT_CLI_PREFIX + "> please input query: ");
+          ioTPrinter.println(sql);
+          String[] values = sql.trim().split(";");
+          for (int i = 0; i < values.length; i++) {
+            exportData.exportBySql(values[i], i);
+          }
+        } else {
+          exportData.exportBySql(null, 0);
         }
       } else {
         String[] values = queryCommand.trim().split(";");