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

jackietien pushed a commit to branch ty/mysql-connector
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/ty/mysql-connector by this 
push:
     new 31da5272b21 move to udf-library
31da5272b21 is described below

commit 31da5272b216529ac0b9c2ed63a1b66d7b361743
Author: JackieTien97 <[email protected]>
AuthorDate: Fri Jun 27 16:07:41 2025 +0800

    move to udf-library
---
 .../udf/api/exception/CloseFailedInExternalDB.java |  7 +++++
 .../api/exception/ExecutionFailedInExternalDB.java |  7 +++++
 .../java/org/apache/iotdb/rpc/TSStatusCode.java    |  1 +
 iotdb-core/datanode/pom.xml                        |  5 ----
 .../fragment/FragmentInstanceManager.java          | 10 +++++++
 .../function/TableFunctionLeafOperator.java        | 18 ++++++++++--
 .../plan/planner/TableOperatorGenerator.java       | 10 ++++++-
 .../function/TableBuiltinTableFunction.java        |  6 +---
 library-udf/pom.xml                                | 16 +++++++++++
 .../connector/JDBCConnectionPool.java              | 32 +++++++++++-----------
 .../connector/MySqlConnectorTableFunction.java     | 32 ++++++++++------------
 .../connector/converter/BinaryConverter.java       |  2 +-
 .../connector/converter/BlobConverter.java         |  2 +-
 .../connector/converter/BooleanConverter.java      |  2 +-
 .../connector/converter/DateConverter.java         |  2 +-
 .../connector/converter/DoubleConverter.java       |  2 +-
 .../connector/converter/FloatConverter.java        |  2 +-
 .../connector/converter/Int32Converter.java        |  2 +-
 .../connector/converter/Int64Converter.java        |  2 +-
 .../connector/converter/ResultSetConverter.java    |  2 +-
 .../connector/converter/StringConverter.java       |  2 +-
 .../connector/converter/TimeConverter.java         |  2 +-
 .../connector/converter/TimestampConverter.java    |  2 +-
 23 files changed, 110 insertions(+), 58 deletions(-)

diff --git 
a/iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/exception/CloseFailedInExternalDB.java
 
b/iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/exception/CloseFailedInExternalDB.java
new file mode 100644
index 00000000000..52e2c1cd609
--- /dev/null
+++ 
b/iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/exception/CloseFailedInExternalDB.java
@@ -0,0 +1,7 @@
+package org.apache.iotdb.udf.api.exception;
+
+public class CloseFailedInExternalDB extends UDFException {
+  public CloseFailedInExternalDB(String externalDB, Throwable throwable) {
+    super(String.format("Close connection failed in %s.", externalDB), 
throwable);
+  }
+}
diff --git 
a/iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/exception/ExecutionFailedInExternalDB.java
 
b/iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/exception/ExecutionFailedInExternalDB.java
new file mode 100644
index 00000000000..971742360d9
--- /dev/null
+++ 
b/iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/exception/ExecutionFailedInExternalDB.java
@@ -0,0 +1,7 @@
+package org.apache.iotdb.udf.api.exception;
+
+public class ExecutionFailedInExternalDB extends UDFException {
+  public ExecutionFailedInExternalDB(String externalDB, Throwable throwable) {
+    super(String.format("Execution failed in %s.", externalDB), throwable);
+  }
+}
diff --git 
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/TSStatusCode.java 
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/TSStatusCode.java
index da5f18578ea..73908f97995 100644
--- 
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/TSStatusCode.java
+++ 
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/TSStatusCode.java
@@ -223,6 +223,7 @@ public enum TSStatusCode {
   DROP_UDF_ON_DATANODE_ERROR(1203),
   CREATE_UDF_ERROR(1204),
   DROP_UDF_ERROR(1205),
+  EXECUTE_UDF_ERROR(1206),
 
   // Trigger
   CREATE_TRIGGER_ERROR(1300),
diff --git a/iotdb-core/datanode/pom.xml b/iotdb-core/datanode/pom.xml
index c0ae646b895..0a4d9418916 100644
--- a/iotdb-core/datanode/pom.xml
+++ b/iotdb-core/datanode/pom.xml
@@ -313,11 +313,6 @@
             <groupId>org.java-websocket</groupId>
             <artifactId>Java-WebSocket</artifactId>
         </dependency>
-        <dependency>
-            <groupId>com.mysql</groupId>
-            <artifactId>mysql-connector-j</artifactId>
-            <version>${mysql.jdbc.version}</version>
-        </dependency>
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceManager.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceManager.java
index c8fded6e2a8..89d50ce0264 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceManager.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceManager.java
@@ -27,6 +27,7 @@ import org.apache.iotdb.commons.exception.IoTDBException;
 import org.apache.iotdb.commons.exception.IoTDBRuntimeException;
 import org.apache.iotdb.commons.exception.QueryTimeoutException;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
+import org.apache.iotdb.db.exception.sql.SemanticException;
 import org.apache.iotdb.db.queryengine.common.FragmentInstanceId;
 import org.apache.iotdb.db.queryengine.common.QueryId;
 import org.apache.iotdb.db.queryengine.execution.driver.IDriver;
@@ -44,6 +45,9 @@ import 
org.apache.iotdb.db.schemaengine.schemaregion.ISchemaRegion;
 import org.apache.iotdb.db.storageengine.dataregion.IDataRegionForQuery;
 import org.apache.iotdb.db.utils.SetThreadName;
 import org.apache.iotdb.mpp.rpc.thrift.TFetchFragmentInstanceStatisticsResp;
+import org.apache.iotdb.rpc.TSStatusCode;
+import org.apache.iotdb.udf.api.exception.UDFException;
+import org.apache.iotdb.udf.api.exception.UDFTypeMismatchException;
 
 import io.airlift.units.Duration;
 import org.slf4j.Logger;
@@ -198,6 +202,12 @@ public class FragmentInstanceManager {
                             
TOO_MANY_CONCURRENT_QUERIES_ERROR.getStatusCode()));
                   } else if (t instanceof IoTDBRuntimeException) {
                     stateMachine.failed(t);
+                  } else if (t instanceof UDFTypeMismatchException) {
+                    stateMachine.failed(new SemanticException(t.getMessage()));
+                  } else if (t instanceof UDFException) {
+                    stateMachine.failed(
+                        new IoTDBRuntimeException(
+                            t.getMessage(), 
TSStatusCode.EXECUTE_UDF_ERROR.getStatusCode(), true));
                   } else {
                     logger.warn("error when create 
FragmentInstanceExecution.", t);
                     stateMachine.failed(t);
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/function/TableFunctionLeafOperator.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/function/TableFunctionLeafOperator.java
index fcce22ea0f4..76874b2f725 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/function/TableFunctionLeafOperator.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/function/TableFunctionLeafOperator.java
@@ -19,8 +19,12 @@
 
 package org.apache.iotdb.db.queryengine.execution.operator.process.function;
 
+import org.apache.iotdb.commons.exception.IoTDBRuntimeException;
 import org.apache.iotdb.db.queryengine.execution.operator.OperatorContext;
 import 
org.apache.iotdb.db.queryengine.execution.operator.process.ProcessOperator;
+import org.apache.iotdb.rpc.TSStatusCode;
+import org.apache.iotdb.udf.api.exception.CloseFailedInExternalDB;
+import org.apache.iotdb.udf.api.exception.ExecutionFailedInExternalDB;
 import 
org.apache.iotdb.udf.api.relational.table.TableFunctionProcessorProvider;
 import 
org.apache.iotdb.udf.api.relational.table.processor.TableFunctionLeafProcessor;
 
@@ -61,7 +65,12 @@ public class TableFunctionLeafOperator implements 
ProcessOperator {
   @Override
   public TsBlock next() throws Exception {
     List<ColumnBuilder> columnBuilders = getOutputColumnBuilders();
-    processor.process(columnBuilders);
+    try {
+      processor.process(columnBuilders);
+    } catch (ExecutionFailedInExternalDB e) {
+      throw new IoTDBRuntimeException(
+          e.getMessage(), 
TSStatusCode.EXECUTION_FAILED_IN_EXTERNAL_DB.getStatusCode(), true);
+    }
     return buildTsBlock(columnBuilders);
   }
 
@@ -83,7 +92,12 @@ public class TableFunctionLeafOperator implements 
ProcessOperator {
 
   @Override
   public void close() throws Exception {
-    processor.beforeDestroy();
+    try {
+      processor.beforeDestroy();
+    } catch (CloseFailedInExternalDB e) {
+      throw new IoTDBRuntimeException(
+          e.getMessage(), 
TSStatusCode.CLOSE_FAILED_IN_EXTERNAL_DB.getStatusCode(), true);
+    }
   }
 
   @Override
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TableOperatorGenerator.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TableOperatorGenerator.java
index 3ab89c139ee..f21336fba4b 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TableOperatorGenerator.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/TableOperatorGenerator.java
@@ -22,6 +22,7 @@ package org.apache.iotdb.db.queryengine.plan.planner;
 import org.apache.iotdb.common.rpc.thrift.TEndPoint;
 import org.apache.iotdb.commons.conf.CommonDescriptor;
 import org.apache.iotdb.commons.exception.IllegalPathException;
+import org.apache.iotdb.commons.exception.IoTDBRuntimeException;
 import org.apache.iotdb.commons.path.AlignedFullPath;
 import org.apache.iotdb.commons.path.NonAlignedFullPath;
 import org.apache.iotdb.commons.path.PartialPath;
@@ -227,6 +228,8 @@ import 
org.apache.iotdb.db.schemaengine.schemaregion.read.resp.info.IDeviceSchem
 import org.apache.iotdb.db.schemaengine.table.DataNodeTableCache;
 import org.apache.iotdb.db.schemaengine.table.DataNodeTreeViewSchemaUtils;
 import org.apache.iotdb.db.utils.datastructure.SortKey;
+import org.apache.iotdb.rpc.TSStatusCode;
+import org.apache.iotdb.udf.api.exception.ExecutionFailedInExternalDB;
 import org.apache.iotdb.udf.api.relational.TableFunction;
 import 
org.apache.iotdb.udf.api.relational.table.TableFunctionProcessorProvider;
 
@@ -3140,7 +3143,12 @@ public class TableOperatorGenerator extends 
PlanVisitor<Operator, LocalExecution
                   context.getNextOperatorId(),
                   node.getPlanNodeId(),
                   TableFunctionLeafOperator.class.getSimpleName());
-      return new TableFunctionLeafOperator(operatorContext, processorProvider, 
outputDataTypes);
+      try {
+        return new TableFunctionLeafOperator(operatorContext, 
processorProvider, outputDataTypes);
+      } catch (ExecutionFailedInExternalDB e) {
+        throw new IoTDBRuntimeException(
+            e.getMessage(), 
TSStatusCode.EXECUTION_FAILED_IN_EXTERNAL_DB.getStatusCode(), true);
+      }
     } else {
       Operator operator = node.getChild().accept(this, context);
       OperatorContext operatorContext =
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/TableBuiltinTableFunction.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/TableBuiltinTableFunction.java
index bd19dc636f3..4a07f9a0c7b 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/TableBuiltinTableFunction.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/TableBuiltinTableFunction.java
@@ -26,7 +26,6 @@ import 
org.apache.iotdb.commons.udf.builtin.relational.tvf.SessionTableFunction;
 import org.apache.iotdb.commons.udf.builtin.relational.tvf.TumbleTableFunction;
 import 
org.apache.iotdb.commons.udf.builtin.relational.tvf.VariationTableFunction;
 import 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.ForecastTableFunction;
-import 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.MySqlConnectorTableFunction;
 import org.apache.iotdb.udf.api.relational.TableFunction;
 
 import java.util.Arrays;
@@ -41,8 +40,7 @@ public enum TableBuiltinTableFunction {
   SESSION("session"),
   VARIATION("variation"),
   CAPACITY("capacity"),
-  FORECAST("forecast"),
-  MYSQL_CONNECTOR("mysql_connector");
+  FORECAST("forecast");
 
   private final String functionName;
 
@@ -84,8 +82,6 @@ public enum TableBuiltinTableFunction {
         return new CapacityTableFunction();
       case "forecast":
         return new ForecastTableFunction();
-      case "mysql_connector":
-        return new MySqlConnectorTableFunction();
       default:
         throw new UnsupportedOperationException("Unsupported table function: " 
+ functionName);
     }
diff --git a/library-udf/pom.xml b/library-udf/pom.xml
index def22af948e..f51d839ca59 100644
--- a/library-udf/pom.xml
+++ b/library-udf/pom.xml
@@ -38,6 +38,16 @@
             <artifactId>common</artifactId>
             <version>${tsfile.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.tsfile</groupId>
+            <artifactId>tsfile-java</artifactId>
+            <version>${tsfile.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.mysql</groupId>
+            <artifactId>mysql-connector-j</artifactId>
+            <version>${mysql.jdbc.version}</version>
+        </dependency>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
             <artifactId>udf-api</artifactId>
@@ -77,6 +87,12 @@
             <artifactId>junit</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.tsfile</groupId>
+            <artifactId>tsfile</artifactId>
+            <version>2.1.0-250622-SNAPSHOT</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
     <profiles>
         <profile>
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/JDBCConnectionPool.java
 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/JDBCConnectionPool.java
similarity index 67%
rename from 
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/JDBCConnectionPool.java
rename to 
library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/JDBCConnectionPool.java
index 612d548079f..dc29befab9a 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/JDBCConnectionPool.java
+++ 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/JDBCConnectionPool.java
@@ -1,18 +1,18 @@
-package org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector;
+package org.apache.iotdb.library.relational.tablefunction.connector;
 
-import org.apache.iotdb.db.exception.sql.SemanticException;
-import 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.converter.BinaryConverter;
-import 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.converter.BlobConverter;
-import 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.converter.BooleanConverter;
-import 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.converter.DateConverter;
-import 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.converter.DoubleConverter;
-import 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.converter.FloatConverter;
-import 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.converter.Int32Converter;
-import 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.converter.Int64Converter;
-import 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.converter.ResultSetConverter;
-import 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.converter.StringConverter;
-import 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.converter.TimeConverter;
-import 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.converter.TimestampConverter;
+import 
org.apache.iotdb.library.relational.tablefunction.connector.converter.BinaryConverter;
+import 
org.apache.iotdb.library.relational.tablefunction.connector.converter.BlobConverter;
+import 
org.apache.iotdb.library.relational.tablefunction.connector.converter.BooleanConverter;
+import 
org.apache.iotdb.library.relational.tablefunction.connector.converter.DateConverter;
+import 
org.apache.iotdb.library.relational.tablefunction.connector.converter.DoubleConverter;
+import 
org.apache.iotdb.library.relational.tablefunction.connector.converter.FloatConverter;
+import 
org.apache.iotdb.library.relational.tablefunction.connector.converter.Int32Converter;
+import 
org.apache.iotdb.library.relational.tablefunction.connector.converter.Int64Converter;
+import 
org.apache.iotdb.library.relational.tablefunction.connector.converter.ResultSetConverter;
+import 
org.apache.iotdb.library.relational.tablefunction.connector.converter.StringConverter;
+import 
org.apache.iotdb.library.relational.tablefunction.connector.converter.TimeConverter;
+import 
org.apache.iotdb.library.relational.tablefunction.connector.converter.TimestampConverter;
+import org.apache.iotdb.udf.api.exception.UDFTypeMismatchException;
 import org.apache.iotdb.udf.api.type.Type;
 
 import org.slf4j.Logger;
@@ -78,7 +78,7 @@ public class JDBCConnectionPool {
       case java.sql.Types.BOOLEAN:
         return Type.BOOLEAN;
       default:
-        throw new SemanticException("Unsupported JDBC type: " + type);
+        throw new UDFTypeMismatchException("Unsupported JDBC type: " + type);
     }
   }
 
@@ -119,7 +119,7 @@ public class JDBCConnectionPool {
       case java.sql.Types.BOOLEAN:
         return new BooleanConverter();
       default:
-        throw new SemanticException("Unsupported JDBC type: " + type);
+        throw new UDFTypeMismatchException("Unsupported JDBC type: " + type);
     }
   }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/MySqlConnectorTableFunction.java
 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/MySqlConnectorTableFunction.java
similarity index 87%
rename from 
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/MySqlConnectorTableFunction.java
rename to 
library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/MySqlConnectorTableFunction.java
index 2fe02b72bdd..d7745e545d9 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/MySqlConnectorTableFunction.java
+++ 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/MySqlConnectorTableFunction.java
@@ -1,9 +1,8 @@
-package org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector;
+package org.apache.iotdb.library.relational.tablefunction.connector;
 
-import org.apache.iotdb.commons.exception.IoTDBRuntimeException;
-import org.apache.iotdb.db.exception.sql.SemanticException;
-import 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.converter.ResultSetConverter;
-import org.apache.iotdb.rpc.TSStatusCode;
+import 
org.apache.iotdb.library.relational.tablefunction.connector.converter.ResultSetConverter;
+import org.apache.iotdb.udf.api.exception.CloseFailedInExternalDB;
+import org.apache.iotdb.udf.api.exception.ExecutionFailedInExternalDB;
 import org.apache.iotdb.udf.api.exception.UDFException;
 import org.apache.iotdb.udf.api.relational.TableFunction;
 import org.apache.iotdb.udf.api.relational.table.TableFunctionAnalysis;
@@ -36,9 +35,7 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 
-import static 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.JDBCConnectionPool.translateJDBCTypeToUDFType;
-import static org.apache.iotdb.rpc.TSStatusCode.CLOSE_FAILED_IN_EXTERNAL_DB;
-import static 
org.apache.iotdb.rpc.TSStatusCode.EXECUTION_FAILED_IN_EXTERNAL_DB;
+import static 
org.apache.iotdb.library.relational.tablefunction.connector.JDBCConnectionPool.translateJDBCTypeToUDFType;
 
 public class MySqlConnectorTableFunction implements TableFunction {
 
@@ -83,11 +80,10 @@ public class MySqlConnectorTableFunction implements 
TableFunction {
         outputStream.flush();
         return publicBAOS.toByteArray();
       } catch (IOException e) {
-        throw new IoTDBRuntimeException(
+        throw new UDFException(
             String.format(
                 "Error occurred while serializing 
MySqlConnectorTableFunctionHandle: %s",
-                e.getMessage()),
-            TSStatusCode.INTERNAL_SERVER_ERROR.getStatusCode());
+                e.getMessage()));
       }
     }
 
@@ -107,11 +103,13 @@ public class MySqlConnectorTableFunction implements 
TableFunction {
 
   private static final String SQL = "SQL";
   private static final String URL = "URL";
-  private static final String DEFAULT_URL = "jdbc:mysql://localhost:3306";
+  private static final String DEFAULT_URL =
+      "jdbc:mysql://localhost:3306?allowPublicKeyRetrieval=true";
   private static final String USERNAME = "USERNAME";
   private static final String DEFAULT_USERNAME = "root";
   private static final String PASSWORD = "PASSWORD";
-  private static final String DEFAULT_PASSWORD = "root";
+  private static final String DEFAULT_PASSWORD = "iotdb2025";
+  private static final String MYSQL = "MYSQL";
 
   @Override
   public List<ParameterSpecification> getArgumentsSpecifications() {
@@ -154,7 +152,7 @@ public class MySqlConnectorTableFunction implements 
TableFunction {
         types[i - 1] = type;
       }
     } catch (SQLException e) {
-      throw new SemanticException(e);
+      throw new UDFException("Get ResultSetMetaData failed.", e);
     }
     MySqlConnectorTableFunctionHandle handle =
         new MySqlConnectorTableFunctionHandle(sql, url, userName, password, 
types);
@@ -205,7 +203,7 @@ public class MySqlConnectorTableFunction implements 
TableFunction {
         this.statement = connection.createStatement();
         this.resultSet = statement.executeQuery(handle.sql);
       } catch (SQLException e) {
-        throw new IoTDBRuntimeException(e, 
EXECUTION_FAILED_IN_EXTERNAL_DB.getStatusCode(), true);
+        throw new ExecutionFailedInExternalDB(MYSQL, e);
       }
     }
 
@@ -227,7 +225,7 @@ public class MySqlConnectorTableFunction implements 
TableFunction {
           }
         }
       } catch (SQLException e) {
-        throw new IoTDBRuntimeException(e, 
EXECUTION_FAILED_IN_EXTERNAL_DB.getStatusCode(), true);
+        throw new ExecutionFailedInExternalDB(MYSQL, e);
       }
     }
 
@@ -249,7 +247,7 @@ public class MySqlConnectorTableFunction implements 
TableFunction {
           connection.close();
         }
       } catch (SQLException e) {
-        throw new IoTDBRuntimeException(e, 
CLOSE_FAILED_IN_EXTERNAL_DB.getStatusCode(), true);
+        throw new CloseFailedInExternalDB(MYSQL, e);
       }
     }
   }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/BinaryConverter.java
 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/BinaryConverter.java
similarity index 85%
rename from 
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/BinaryConverter.java
rename to 
library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/BinaryConverter.java
index 8742244da0c..2109bb4fe76 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/BinaryConverter.java
+++ 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/BinaryConverter.java
@@ -1,4 +1,4 @@
-package 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.converter;
+package org.apache.iotdb.library.relational.tablefunction.connector.converter;
 
 import org.apache.tsfile.block.column.ColumnBuilder;
 import org.apache.tsfile.utils.Binary;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/BlobConverter.java
 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/BlobConverter.java
similarity index 86%
rename from 
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/BlobConverter.java
rename to 
library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/BlobConverter.java
index 7445d370600..aee1a6f0531 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/BlobConverter.java
+++ 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/BlobConverter.java
@@ -1,4 +1,4 @@
-package 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.converter;
+package org.apache.iotdb.library.relational.tablefunction.connector.converter;
 
 import org.apache.tsfile.block.column.ColumnBuilder;
 import org.apache.tsfile.utils.Binary;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/BooleanConverter.java
 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/BooleanConverter.java
similarity index 84%
rename from 
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/BooleanConverter.java
rename to 
library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/BooleanConverter.java
index 00b9edbea68..7f2dee686b6 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/BooleanConverter.java
+++ 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/BooleanConverter.java
@@ -1,4 +1,4 @@
-package 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.converter;
+package org.apache.iotdb.library.relational.tablefunction.connector.converter;
 
 import org.apache.tsfile.block.column.ColumnBuilder;
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/DateConverter.java
 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/DateConverter.java
similarity index 87%
rename from 
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/DateConverter.java
rename to 
library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/DateConverter.java
index c4bfd8798c4..7bf55f61a62 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/DateConverter.java
+++ 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/DateConverter.java
@@ -1,4 +1,4 @@
-package 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.converter;
+package org.apache.iotdb.library.relational.tablefunction.connector.converter;
 
 import org.apache.tsfile.block.column.ColumnBuilder;
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/DoubleConverter.java
 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/DoubleConverter.java
similarity index 84%
rename from 
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/DoubleConverter.java
rename to 
library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/DoubleConverter.java
index 9c6fcc07d5f..de62bd64be6 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/DoubleConverter.java
+++ 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/DoubleConverter.java
@@ -1,4 +1,4 @@
-package 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.converter;
+package org.apache.iotdb.library.relational.tablefunction.connector.converter;
 
 import org.apache.tsfile.block.column.ColumnBuilder;
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/FloatConverter.java
 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/FloatConverter.java
similarity index 84%
rename from 
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/FloatConverter.java
rename to 
library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/FloatConverter.java
index 4be85a509f7..6f0628b795c 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/FloatConverter.java
+++ 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/FloatConverter.java
@@ -1,4 +1,4 @@
-package 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.converter;
+package org.apache.iotdb.library.relational.tablefunction.connector.converter;
 
 import org.apache.tsfile.block.column.ColumnBuilder;
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/Int32Converter.java
 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/Int32Converter.java
similarity index 84%
rename from 
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/Int32Converter.java
rename to 
library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/Int32Converter.java
index a36f82390e3..ec9d78fd49c 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/Int32Converter.java
+++ 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/Int32Converter.java
@@ -1,4 +1,4 @@
-package 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.converter;
+package org.apache.iotdb.library.relational.tablefunction.connector.converter;
 
 import org.apache.tsfile.block.column.ColumnBuilder;
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/Int64Converter.java
 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/Int64Converter.java
similarity index 84%
rename from 
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/Int64Converter.java
rename to 
library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/Int64Converter.java
index 27369c6a11f..1bc740f5afd 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/Int64Converter.java
+++ 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/Int64Converter.java
@@ -1,4 +1,4 @@
-package 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.converter;
+package org.apache.iotdb.library.relational.tablefunction.connector.converter;
 
 import org.apache.tsfile.block.column.ColumnBuilder;
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/ResultSetConverter.java
 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/ResultSetConverter.java
similarity index 74%
rename from 
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/ResultSetConverter.java
rename to 
library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/ResultSetConverter.java
index 47638ca1927..618c16c70bb 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/ResultSetConverter.java
+++ 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/ResultSetConverter.java
@@ -1,4 +1,4 @@
-package 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.converter;
+package org.apache.iotdb.library.relational.tablefunction.connector.converter;
 
 import org.apache.tsfile.block.column.ColumnBuilder;
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/StringConverter.java
 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/StringConverter.java
similarity index 87%
rename from 
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/StringConverter.java
rename to 
library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/StringConverter.java
index 8d74d457a37..6e833b60113 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/StringConverter.java
+++ 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/StringConverter.java
@@ -1,4 +1,4 @@
-package 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.converter;
+package org.apache.iotdb.library.relational.tablefunction.connector.converter;
 
 import org.apache.tsfile.block.column.ColumnBuilder;
 import org.apache.tsfile.common.conf.TSFileConfig;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/TimeConverter.java
 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/TimeConverter.java
similarity index 88%
rename from 
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/TimeConverter.java
rename to 
library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/TimeConverter.java
index dc83dddb19f..7e110b53530 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/TimeConverter.java
+++ 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/TimeConverter.java
@@ -1,4 +1,4 @@
-package 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.converter;
+package org.apache.iotdb.library.relational.tablefunction.connector.converter;
 
 import org.apache.iotdb.db.utils.TimestampPrecisionUtils;
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/TimestampConverter.java
 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/TimestampConverter.java
similarity index 88%
rename from 
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/TimestampConverter.java
rename to 
library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/TimestampConverter.java
index 96ff79a452c..3329220216c 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/function/tvf/connector/converter/TimestampConverter.java
+++ 
b/library-udf/src/main/java/org/apache/iotdb/library/relational/tablefunction/connector/converter/TimestampConverter.java
@@ -1,4 +1,4 @@
-package 
org.apache.iotdb.db.queryengine.plan.relational.function.tvf.connector.converter;
+package org.apache.iotdb.library.relational.tablefunction.connector.converter;
 
 import org.apache.iotdb.db.utils.TimestampPrecisionUtils;
 


Reply via email to