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

jackietien pushed a commit to branch rc/2.0.7
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 618939cf10c26ff33098e804042695da9472666d
Author: Jackie Tien <[email protected]>
AuthorDate: Wed Jan 28 11:31:33 2026 +0800

    Remove built-in jexl function in tree mode (#17092)
    
    (cherry picked from commit b40b74b31ea506127a8d46df9bee26d1868e6228)
---
 dependencies.json                                  | 333 +++++++++----------
 .../BuiltinTimeSeriesGeneratingFunctionEnum.java   |   1 -
 .../db/it/udf/IoTDBUDTFBuiltinFunctionIT.java      | 235 -------------
 iotdb-core/node-commons/pom.xml                    |   4 -
 .../BuiltinTimeSeriesGeneratingFunction.java       |   1 -
 .../apache/iotdb/commons/udf/builtin/UDTFJexl.java | 365 ---------------------
 pom.xml                                            |   6 -
 7 files changed, 168 insertions(+), 777 deletions(-)

diff --git a/dependencies.json b/dependencies.json
index c2a255d7ba4..1e88db84e77 100644
--- a/dependencies.json
+++ b/dependencies.json
@@ -1,167 +1,170 @@
 {
-    "dependencies": [
-        "cglib:cglib",
-        "ch.qos.logback:logback-classic",
-        "ch.qos.logback:logback-core",
-        "ch.qos.reload4j:reload4j",
-        "com.digitalpetri.fsm:strict-machine",
-        "com.digitalpetri.netty:netty-channel-fsm",
-        "com.fasterxml.jackson.core:jackson-annotations",
-        "com.fasterxml.jackson.core:jackson-core",
-        "com.fasterxml.jackson.core:jackson-databind",
-        "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml",
-        "com.fasterxml.jackson.datatype:jackson-datatype-jsr310",
-        "com.fasterxml.jackson.jaxrs:jackson-jaxrs-base",
-        "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider",
-        "com.fasterxml.jackson.module:jackson-module-jaxb-annotations",
-        "com.github.ben-manes.caffeine:caffeine",
-        "com.github.luben:zstd-jni",
-        "com.github.stephenc.jcip:jcip-annotations",
-        "com.github.wendykierp:JTransforms",
-        "com.google.code.findbugs:jsr305",
-        "com.google.code.gson:gson",
-        "com.google.errorprone:error_prone_annotations",
-        "com.google.guava:failureaccess",
-        "com.google.guava:guava",
-        "com.google.guava:listenablefuture",
-        "com.google.j2objc:j2objc-annotations",
-        "com.h2database:h2-mvstore",
-        "com.lmax:disruptor",
-        "com.nimbusds:content-type",
-        "com.nimbusds:lang-tag",
-        "com.nimbusds:nimbus-jose-jwt",
-        "com.nimbusds:oauth2-oidc-sdk",
-        "com.sun.istack:istack-commons-runtime",
-        "com.zaxxer:HikariCP",
-        "commons-cli:commons-cli",
-        "commons-codec:commons-codec",
-        "commons-io:commons-io",
-        "commons-logging:commons-logging",
-        "io.airlift:airline",
-        "io.airlift:concurrent",
-        "io.airlift:log",
-        "io.airlift:units",
-        "io.dropwizard.metrics:metrics-core",
-        "io.jsonwebtoken:jjwt-api",
-        "io.micrometer:micrometer-commons",
-        "io.micrometer:micrometer-core",
-        "io.micrometer:micrometer-observation",
-        "com.github.moquette-io.moquette:moquette-broker",
-        "io.netty:netty-buffer",
-        "io.netty:netty-codec",
-        "io.netty:netty-codec-dns",
-        "io.netty:netty-codec-http",
-        "io.netty:netty-codec-http2",
-        "io.netty:netty-codec-mqtt",
-        "io.netty:netty-codec-socks",
-        "io.netty:netty-common",
-        "io.netty:netty-handler",
-        "io.netty:netty-handler-proxy",
-        "io.netty:netty-resolver",
-        "io.netty:netty-resolver-dns",
-        "io.netty:netty-resolver-dns-classes-macos",
-        "io.netty:netty-resolver-dns-native-macos",
-        "io.netty:netty-tcnative-boringssl-static",
-        "io.netty:netty-tcnative-classes",
-        "io.netty:netty-transport",
-        "io.netty:netty-transport-classes-epoll",
-        "io.netty:netty-transport-native-epoll",
-        "io.netty:netty-transport-native-unix-common",
-        "io.netty:netty-transport-classes-kqueue",
-        "io.netty:netty-transport-native-kqueue",
-        "io.projectreactor:reactor-core",
-        "io.projectreactor.netty:reactor-netty-core",
-        "io.projectreactor.netty:reactor-netty-http",
-        "io.swagger:swagger-annotations",
-        "io.swagger:swagger-core",
-        "io.swagger:swagger-jaxrs",
-        "io.swagger:swagger-models",
-        "jakarta.activation:jakarta.activation-api",
-        "jakarta.annotation:jakarta.annotation-api",
-        "jakarta.servlet:jakarta.servlet-api",
-        "jakarta.validation:jakarta.validation-api",
-        "jakarta.ws.rs:jakarta.ws.rs-api",
-        "jakarta.xml.bind:jakarta.xml.bind-api",
-        "net.java.dev.jna:jna",
-        "net.java.dev.jna:jna-platform",
-        "net.minidev:accessors-smart",
-        "net.minidev:json-smart",
-        "org.antlr:antlr4-runtime",
-        "org.apache.commons:commons-collections4",
-        "org.apache.commons:commons-csv",
-        "org.apache.commons:commons-jexl3",
-        "org.apache.commons:commons-lang3",
-        "org.apache.commons:commons-math3",
-        "org.apache.commons:commons-pool2",
-        "org.apache.httpcomponents:httpclient",
-        "org.apache.httpcomponents:httpcore",
-        "com.timecho.ratis:ratis-client",
-        "com.timecho.ratis:ratis-common",
-        "com.timecho.ratis:ratis-grpc",
-        "com.timecho.ratis:ratis-metrics-api",
-        "com.timecho.ratis:ratis-proto",
-        "com.timecho.ratis:ratis-server",
-        "com.timecho.ratis:ratis-server-api",
-        "org.apache.ratis:ratis-thirdparty-misc",
-        "org.apache.thrift:libthrift",
-        "org.apache.tsfile:common",
-        "org.apache.tsfile:tsfile",
-        "org.bouncycastle:bcpkix-jdk18on",
-        "org.bouncycastle:bcprov-jdk18on",
-        "org.bouncycastle:bcutil-jdk18on",
-        "org.checkerframework:checker-qual",
-        "org.eclipse.collections:eclipse-collections",
-        "org.eclipse.collections:eclipse-collections-api",
-        "org.eclipse.jetty:jetty-http",
-        "org.eclipse.jetty:jetty-io",
-        "org.eclipse.jetty:jetty-security",
-        "org.eclipse.jetty:jetty-server",
-        "org.eclipse.jetty:jetty-servlet",
-        "org.eclipse.jetty:jetty-util",
-        "org.eclipse.jetty:jetty-util-ajax",
-        "org.eclipse.milo:bsd-core",
-        "org.eclipse.milo:bsd-generator",
-        "org.eclipse.milo:sdk-client",
-        "org.eclipse.milo:sdk-core",
-        "org.eclipse.milo:sdk-server",
-        "org.eclipse.milo:stack-client",
-        "org.eclipse.milo:stack-core",
-        "org.eclipse.milo:stack-server",
-        "org.fusesource.hawtbuf:hawtbuf",
-        "org.fusesource.hawtdispatch:hawtdispatch",
-        "org.fusesource.hawtdispatch:hawtdispatch-transport",
-        "org.fusesource.mqtt-client:mqtt-client",
-        "org.glassfish.hk2:hk2-api",
-        "org.glassfish.hk2:hk2-locator",
-        "org.glassfish.hk2:hk2-utils",
-        "org.glassfish.hk2:osgi-resource-locator",
-        "org.glassfish.hk2.external:aopalliance-repackaged",
-        "org.glassfish.hk2.external:jakarta.inject",
-        "org.glassfish.jaxb:jaxb-runtime",
-        "org.glassfish.jaxb:txw2",
-        "org.glassfish.jersey.containers:jersey-container-servlet-core",
-        "org.glassfish.jersey.core:jersey-client",
-        "org.glassfish.jersey.core:jersey-common",
-        "org.glassfish.jersey.core:jersey-server",
-        "org.glassfish.jersey.inject:jersey-hk2",
-        "org.glassfish.jersey.media:jersey-media-multipart",
-        "org.hdrhistogram:HdrHistogram",
-        "org.java-websocket:Java-WebSocket",
-        "org.javassist:javassist",
-        "org.jline:jline",
-        "org.jvnet.mimepull:mimepull",
-        "org.latencyutils:LatencyUtils",
-        "org.lz4:lz4-java",
-        "org.ops4j.pax.jdbc:pax-jdbc-common",
-        "org.osgi:osgi.cmpn",
-        "org.osgi:osgi.core",
-        "org.ow2.asm:asm",
-        "org.reactivestreams:reactive-streams",
-        "org.slf4j:slf4j-api",
-        "org.slf4j:slf4j-reload4j",
-        "org.tukaani:xz",
-        "org.xerial.snappy:snappy-java",
-        "org.yaml:snakeyaml",
-        "pl.edu.icm:JLargeArrays"
-    ]
+  "dependencies": [
+    "at.yawk.lz4:lz4-java",
+    "cglib:cglib",
+    "ch.qos.logback:logback-classic",
+    "ch.qos.logback:logback-core",
+    "ch.qos.reload4j:reload4j",
+    "com.digitalpetri.fsm:strict-machine",
+    "com.digitalpetri.netty:netty-channel-fsm",
+    "com.fasterxml.jackson.core:jackson-annotations",
+    "com.fasterxml.jackson.core:jackson-core",
+    "com.fasterxml.jackson.core:jackson-databind",
+    "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml",
+    "com.fasterxml.jackson.datatype:jackson-datatype-jsr310",
+    "com.fasterxml.jackson.jaxrs:jackson-jaxrs-base",
+    "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider",
+    "com.fasterxml.jackson.module:jackson-module-jaxb-annotations",
+    "com.github.ben-manes.caffeine:caffeine",
+    "com.github.luben:zstd-jni",
+    "com.github.moquette-io.moquette:moquette-broker",
+    "com.github.stephenc.jcip:jcip-annotations",
+    "com.github.wendykierp:JTransforms",
+    "com.google.code.findbugs:jsr305",
+    "com.google.code.gson:gson",
+    "com.google.errorprone:error_prone_annotations",
+    "com.google.guava:failureaccess",
+    "com.google.guava:guava",
+    "com.google.guava:listenablefuture",
+    "com.google.j2objc:j2objc-annotations",
+    "com.h2database:h2-mvstore",
+    "com.nimbusds:content-type",
+    "com.nimbusds:lang-tag",
+    "com.nimbusds:nimbus-jose-jwt",
+    "com.nimbusds:oauth2-oidc-sdk",
+    "com.sun.istack:istack-commons-runtime",
+    "org.apache.ratis:ratis-client",
+    "org.apache.ratis:ratis-common",
+    "org.apache.ratis:ratis-grpc",
+    "org.apache.ratis:ratis-metrics-api",
+    "org.apache.ratis:ratis-proto",
+    "org.apache.ratis:ratis-server",
+    "org.apache.ratis:ratis-server-api",
+    "com.zaxxer:HikariCP",
+    "commons-cli:commons-cli",
+    "commons-codec:commons-codec",
+    "commons-codec:commons-codec",
+    "commons-logging:commons-logging",
+    "io.airlift:airline",
+    "io.airlift:units",
+    "io.dropwizard.metrics:metrics-core",
+    "io.jsonwebtoken:jjwt-api",
+    "io.micrometer:micrometer-commons",
+    "io.micrometer:micrometer-core",
+    "io.micrometer:micrometer-observation",
+    "io.netty:netty-buffer",
+    "io.netty:netty-codec",
+    "io.netty:netty-codec-dns",
+    "io.netty:netty-codec-http",
+    "io.netty:netty-codec-http2",
+    "io.netty:netty-codec-mqtt",
+    "io.netty:netty-codec-socks",
+    "io.netty:netty-common",
+    "io.netty:netty-handler",
+    "io.netty:netty-handler-proxy",
+    "io.netty:netty-resolver",
+    "io.netty:netty-resolver-dns",
+    "io.netty:netty-resolver-dns-classes-macos",
+    "io.netty:netty-resolver-dns-native-macos",
+    "io.netty:netty-tcnative-boringssl-static",
+    "io.netty:netty-tcnative-boringssl-static",
+    "io.netty:netty-tcnative-boringssl-static",
+    "io.netty:netty-tcnative-boringssl-static",
+    "io.netty:netty-tcnative-boringssl-static",
+    "io.netty:netty-tcnative-classes",
+    "io.netty:netty-transport",
+    "io.netty:netty-transport-classes-epoll",
+    "io.netty:netty-transport-classes-kqueue",
+    "io.netty:netty-transport-native-epoll",
+    "io.netty:netty-transport-native-epoll",
+    "io.netty:netty-transport-native-kqueue",
+    "io.netty:netty-transport-native-kqueue",
+    "io.netty:netty-transport-native-unix-common",
+    "io.projectreactor:reactor-core",
+    "io.projectreactor.netty:reactor-netty-core",
+    "io.projectreactor.netty:reactor-netty-http",
+    "io.swagger:swagger-annotations",
+    "io.swagger:swagger-core",
+    "io.swagger:swagger-jaxrs",
+    "io.swagger:swagger-models",
+    "jakarta.activation:jakarta.activation-api",
+    "jakarta.annotation:jakarta.annotation-api",
+    "jakarta.servlet:jakarta.servlet-api",
+    "jakarta.validation:jakarta.validation-api",
+    "jakarta.ws.rs:jakarta.ws.rs-api",
+    "jakarta.xml.bind:jakarta.xml.bind-api",
+    "net.java.dev.jna:jna",
+    "net.java.dev.jna:jna-platform",
+    "net.minidev:accessors-smart",
+    "net.minidev:json-smart",
+    "org.antlr:antlr4-runtime",
+    "org.apache.commons:commons-csv",
+    "org.apache.commons:commons-lang3",
+    "org.apache.commons:commons-lang3",
+    "org.apache.commons:commons-math3",
+    "org.apache.commons:commons-pool2",
+    "org.apache.httpcomponents:httpclient",
+    "org.apache.httpcomponents:httpcore",
+    "org.apache.ratis:ratis-thirdparty-misc",
+    "org.apache.thrift:libthrift",
+    "org.apache.tsfile:common",
+    "org.apache.tsfile:tsfile",
+    "org.bouncycastle:bcpkix-jdk18on",
+    "org.bouncycastle:bcprov-jdk18on",
+    "org.bouncycastle:bcutil-jdk18on",
+    "org.checkerframework:checker-qual",
+    "org.checkerframework:checker-qual",
+    "org.eclipse.collections:eclipse-collections",
+    "org.eclipse.collections:eclipse-collections-api",
+    "org.eclipse.jetty:jetty-http",
+    "org.eclipse.jetty:jetty-io",
+    "org.eclipse.jetty:jetty-security",
+    "org.eclipse.jetty:jetty-server",
+    "org.eclipse.jetty:jetty-servlet",
+    "org.eclipse.jetty:jetty-util",
+    "org.eclipse.jetty:jetty-util-ajax",
+    "org.eclipse.milo:bsd-core",
+    "org.eclipse.milo:bsd-generator",
+    "org.eclipse.milo:sdk-client",
+    "org.eclipse.milo:sdk-core",
+    "org.eclipse.milo:sdk-server",
+    "org.eclipse.milo:stack-client",
+    "org.eclipse.milo:stack-core",
+    "org.eclipse.milo:stack-server",
+    "org.fusesource.hawtbuf:hawtbuf",
+    "org.fusesource.hawtdispatch:hawtdispatch",
+    "org.fusesource.hawtdispatch:hawtdispatch-transport",
+    "org.fusesource.mqtt-client:mqtt-client",
+    "org.glassfish.hk2:hk2-api",
+    "org.glassfish.hk2:hk2-locator",
+    "org.glassfish.hk2:hk2-utils",
+    "org.glassfish.hk2:osgi-resource-locator",
+    "org.glassfish.hk2.external:aopalliance-repackaged",
+    "org.glassfish.hk2.external:jakarta.inject",
+    "org.glassfish.jaxb:jaxb-runtime",
+    "org.glassfish.jaxb:txw2",
+    "org.glassfish.jersey.containers:jersey-container-servlet-core",
+    "org.glassfish.jersey.core:jersey-client",
+    "org.glassfish.jersey.core:jersey-common",
+    "org.glassfish.jersey.core:jersey-server",
+    "org.glassfish.jersey.inject:jersey-hk2",
+    "org.glassfish.jersey.media:jersey-media-multipart",
+    "org.hdrhistogram:HdrHistogram",
+    "org.java-websocket:Java-WebSocket",
+    "org.javassist:javassist",
+    "org.jline:jline",
+    "org.jvnet.mimepull:mimepull",
+    "org.latencyutils:LatencyUtils",
+    "org.ops4j.pax.jdbc:pax-jdbc-common",
+    "org.osgi:osgi.cmpn",
+    "org.osgi:osgi.core",
+    "org.ow2.asm:asm",
+    "org.reactivestreams:reactive-streams",
+    "org.slf4j:slf4j-api",
+    "org.slf4j:slf4j-reload4j",
+    "org.tukaani:xz",
+    "org.xerial.snappy:snappy-java",
+    "org.yaml:snakeyaml",
+    "pl.edu.icm:JLargeArrays"
+  ]
 }
diff --git 
a/integration-test/src/main/java/org/apache/iotdb/itbase/constant/BuiltinTimeSeriesGeneratingFunctionEnum.java
 
b/integration-test/src/main/java/org/apache/iotdb/itbase/constant/BuiltinTimeSeriesGeneratingFunctionEnum.java
index fa0c5b5b148..e269f1af701 100644
--- 
a/integration-test/src/main/java/org/apache/iotdb/itbase/constant/BuiltinTimeSeriesGeneratingFunctionEnum.java
+++ 
b/integration-test/src/main/java/org/apache/iotdb/itbase/constant/BuiltinTimeSeriesGeneratingFunctionEnum.java
@@ -72,7 +72,6 @@ public enum BuiltinTimeSeriesGeneratingFunctionEnum {
   EQUAL_SIZE_BUCKET_AGG_SAMPLE("EQUAL_SIZE_BUCKET_AGG_SAMPLE"),
   EQUAL_SIZE_BUCKET_M4_SAMPLE("EQUAL_SIZE_BUCKET_M4_SAMPLE"),
   EQUAL_SIZE_BUCKET_OUTLIER_SAMPLE("EQUAL_SIZE_BUCKET_OUTLIER_SAMPLE"),
-  JEXL("JEXL"),
   MASTER_REPAIR("MASTER_REPAIR"),
   M4("M4");
 
diff --git 
a/integration-test/src/test/java/org/apache/iotdb/db/it/udf/IoTDBUDTFBuiltinFunctionIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/db/it/udf/IoTDBUDTFBuiltinFunctionIT.java
index 61de72829cc..4bec71586cc 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/db/it/udf/IoTDBUDTFBuiltinFunctionIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/db/it/udf/IoTDBUDTFBuiltinFunctionIT.java
@@ -1490,241 +1490,6 @@ public class IoTDBUDTFBuiltinFunctionIT {
     }
   }
 
-  @Test
-  public void testUDTFJexl() {
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      statement.execute("CREATE TIMESERIES root.sg.d7.s1 with 
datatype=INT32,encoding=PLAIN");
-      statement.execute("CREATE TIMESERIES root.sg.d7.s2 with 
datatype=FLOAT,encoding=PLAIN");
-      statement.execute("CREATE TIMESERIES root.sg.d7.s3 with 
datatype=DOUBLE,encoding=PLAIN");
-      statement.execute("CREATE TIMESERIES root.sg.d7.s4 with 
datatype=TEXT,encoding=PLAIN");
-      statement.execute("CREATE TIMESERIES root.sg.d7.s5 with 
datatype=BOOLEAN,encoding=PLAIN");
-      statement.execute("CREATE TIMESERIES root.sg.d7.s6 with 
datatype=INT64,encoding=PLAIN");
-      statement.execute("CREATE TIMESERIES root.sg.d7.s7 with 
datatype=INT64,encoding=PLAIN");
-      statement.execute("CREATE TIMESERIES root.sg.d7.s8 with 
datatype=FLOAT,encoding=PLAIN");
-      statement.execute("CREATE TIMESERIES root.sg.d7.s9 with 
datatype=TEXT,encoding=PLAIN");
-    } catch (SQLException throwable) {
-      fail(throwable.getMessage());
-    }
-    String[] SQL_FOR_SAMPLE_1 = new String[6];
-    String[] SQL_FOR_SAMPLE_2 = new String[6];
-    String[] SQL_FOR_SAMPLE_3 = new String[6];
-    String[] SQL_FOR_SAMPLE_4 = new String[6];
-    String[] SQL_FOR_SAMPLE_5 = new String[6];
-    String[] SQL_FOR_SAMPLE_6 = new String[6];
-    String[] SQL_FOR_SAMPLE_7 = new String[6];
-    String[] SQL_FOR_SAMPLE_8 = new String[6];
-    String[] SQL_FOR_SAMPLE_9 = new String[6];
-    for (int i = 0; i < 5; i++) {
-      SQL_FOR_SAMPLE_1[i] =
-          String.format(
-              Locale.ENGLISH, "insert into root.sg.d7(time, s1) values (%d, 
%d)", i, i + 1);
-      SQL_FOR_SAMPLE_2[i] =
-          String.format(
-              Locale.ENGLISH, "insert into root.sg.d7(time, s2) values (%d, 
%f)", i, i + 1.0);
-      SQL_FOR_SAMPLE_3[i] =
-          String.format(
-              Locale.ENGLISH, "insert into root.sg.d7(time, s3) values (%d, 
%f)", i, i + 1.0);
-      SQL_FOR_SAMPLE_4[i] =
-          String.format(
-              Locale.ENGLISH, "insert into root.sg.d7(time, s4) values (%d, 
'%s')", i, "string");
-      SQL_FOR_SAMPLE_5[i] = String.format("insert into root.sg.d7(time, s5) 
values (%d, true)", i);
-      SQL_FOR_SAMPLE_6[i] =
-          String.format(
-              Locale.ENGLISH, "insert into root.sg.d7(time, s6) values (%d, 
%d)", i, i + 8);
-      SQL_FOR_SAMPLE_7[i] =
-          String.format(
-              Locale.ENGLISH, "insert into root.sg.d7(time, s7) values (%d, 
%d)", i, i + 1);
-      SQL_FOR_SAMPLE_8[i] =
-          String.format(
-              Locale.ENGLISH, "insert into root.sg.d7(time, s8) values (%d, 
%f)", i, i + 1.0);
-      SQL_FOR_SAMPLE_9[i] =
-          String.format(
-              Locale.ENGLISH, "insert into root.sg.d7(time, s9) values (%d, 
'%s')", i, "string");
-    }
-    SQL_FOR_SAMPLE_1[5] =
-        String.format(
-            Locale.ENGLISH,
-            "insert into root.sg.d7(time, s1) values (%d, %d)",
-            10000000000L,
-            5 + 1);
-    SQL_FOR_SAMPLE_2[5] =
-        String.format(
-            Locale.ENGLISH,
-            "insert into root.sg.d7(time, s2) values (%d, %f)",
-            10000000000L,
-            5 + 1.0);
-    SQL_FOR_SAMPLE_3[5] =
-        String.format(
-            Locale.ENGLISH,
-            "insert into root.sg.d7(time, s3) values (%d, %f)",
-            10000000000L,
-            5 + 1.0);
-    SQL_FOR_SAMPLE_4[5] =
-        String.format(
-            Locale.ENGLISH,
-            "insert into root.sg.d7(time, s4) values (%d, '%s')",
-            10000000000L,
-            "string");
-    SQL_FOR_SAMPLE_5[5] = String.format("insert into root.sg.d7(time, s5) 
values (%d, true)", 5);
-    SQL_FOR_SAMPLE_6[5] =
-        String.format(
-            Locale.ENGLISH,
-            "insert into root.sg.d7(time, s6) values (%d, %d)",
-            10000000000L,
-            5 + 8);
-    SQL_FOR_SAMPLE_7[5] =
-        String.format(
-            Locale.ENGLISH,
-            "insert into root.sg.d7(time, s7) values (%d, %d)",
-            10000000000L,
-            5 + 1);
-    SQL_FOR_SAMPLE_8[5] =
-        String.format(
-            Locale.ENGLISH,
-            "insert into root.sg.d7(time, s8) values (%d, %f)",
-            10000000000L,
-            5 + 1.0);
-    SQL_FOR_SAMPLE_9[5] =
-        String.format(
-            Locale.ENGLISH,
-            "insert into root.sg.d7(time, s9) values (%d, '%s')",
-            10000000000L,
-            "string");
-    double[] ANSWER1 = new double[] {2, 4, 6, 8, 10, 12};
-    double[] ANSWER2 = new double[] {2, 4, 6, 8, 10, 12};
-    double[] ANSWER3 = new double[] {4, 7, 10, 13, 16, 19};
-    String[] ANSWER4 =
-        new String[] {"string2", "string2", "string2", "string2", "string2", 
"string2"};
-    double[] ANSWER7 = new double[] {1, 4, 9, 16, 25, 36};
-    String[] ANSWER8 =
-        new String[] {"string1", "string4", "string9", "string16", "string25", 
"string36"};
-    double[] ANSWER9 = new double[] {2, 9, 28, 65, 126, 469};
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      for (int i = 0; i < 5; i++) {
-        statement.execute(SQL_FOR_SAMPLE_1[i]);
-        statement.execute(SQL_FOR_SAMPLE_2[i]);
-        statement.execute(SQL_FOR_SAMPLE_3[i]);
-        statement.execute(SQL_FOR_SAMPLE_4[i]);
-        statement.execute(SQL_FOR_SAMPLE_5[i]);
-        statement.execute(SQL_FOR_SAMPLE_6[i]);
-        statement.execute(SQL_FOR_SAMPLE_7[i]);
-        statement.execute(SQL_FOR_SAMPLE_8[i]);
-        statement.execute(SQL_FOR_SAMPLE_9[i]);
-      }
-    } catch (SQLException throwable) {
-      fail(throwable.getMessage());
-    }
-
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      String functionName = "JEXL";
-      String expr1 = "x -> {2 * x}";
-      String expr2 = "x -> {x + x}";
-      String expr3 = "x -> {x * 3 + 1}";
-      String expr4 = "x -> {x + 2}";
-      String expr5 = "x -> {x == true}";
-      String expr6 = "x -> {x == x}";
-      String expr7 = "(x, y) -> {x * y}";
-      String expr8 = "(x, y, z) -> {x + y * z}";
-      String expr9 = "(x, y, z, a) -> {x * y * z + (a ? 1 : -1)}";
-      ResultSet resultSet =
-          statement.executeQuery(
-              String.format(
-                  "select %s(s1, 'expr'='%s'), "
-                      + "%s(s2, 'expr'='%s'), "
-                      + "%s(s3, 'expr'='%s'), "
-                      + "%s(s4, 'expr'='%s'), "
-                      + "%s(s5, 'expr'='%s'), "
-                      + "%s(s6, 'expr'='%s'), "
-                      + "%s(s7, s8, 'expr'='%s'), "
-                      + "%s(s4, s7, s1, 'expr'='%s'), "
-                      + "%s(s1, s7, s8, s5, 'expr'='%s') "
-                      + "from root.sg.d7",
-                  functionName,
-                  expr1,
-                  functionName,
-                  expr2,
-                  functionName,
-                  expr3,
-                  functionName,
-                  expr4,
-                  functionName,
-                  expr5,
-                  functionName,
-                  expr6,
-                  functionName,
-                  expr7,
-                  functionName,
-                  expr8,
-                  functionName,
-                  expr9));
-      int columnCount = resultSet.getMetaData().getColumnCount();
-      assertEquals(1 + 9, columnCount);
-      for (int i = 0; i < 5; i++) {
-        resultSet.next();
-        assertEquals(ANSWER1[i], resultSet.getDouble(2), 0.01);
-        assertEquals(ANSWER2[i], resultSet.getDouble(3), 0.01);
-        assertEquals(ANSWER3[i], resultSet.getDouble(4), 0.01);
-        assertEquals(ANSWER4[i], resultSet.getString(5));
-        assertTrue(resultSet.getBoolean(6));
-        assertTrue(resultSet.getBoolean(7));
-        assertEquals(ANSWER7[i], resultSet.getDouble(8), 0.01);
-        assertEquals(ANSWER8[i], resultSet.getString(9));
-        assertEquals(ANSWER9[i], resultSet.getDouble(10), 0.01);
-      }
-
-      resultSet =
-          statement.executeQuery(
-              String.format(
-                  "select %s(s1, 'expr'='%s'), "
-                      + "%s(s2, 'expr'='%s'), "
-                      + "%s(s3, 'expr'='%s'), "
-                      + "%s(s4, 'expr'='%s'), "
-                      + "%s(s5, 'expr'='%s'), "
-                      + "%s(s6, 'expr'='%s'), "
-                      + "%s(s7, s8, 'expr'='%s'), "
-                      + "%s(s4, s7, s1, 'expr'='%s'), "
-                      + "%s(s1, s7, s8, s5, 'expr'='%s') "
-                      + "from root.sg.d7 align by device",
-                  functionName,
-                  expr1,
-                  functionName,
-                  expr2,
-                  functionName,
-                  expr3,
-                  functionName,
-                  expr4,
-                  functionName,
-                  expr5,
-                  functionName,
-                  expr6,
-                  functionName,
-                  expr7,
-                  functionName,
-                  expr8,
-                  functionName,
-                  expr9));
-      columnCount = resultSet.getMetaData().getColumnCount();
-      assertEquals(2 + 9, columnCount);
-      for (int i = 0; i < 5; i++) {
-        resultSet.next();
-        assertEquals(ANSWER1[i], resultSet.getDouble(2 + 1), 0.01);
-        assertEquals(ANSWER2[i], resultSet.getDouble(3 + 1), 0.01);
-        assertEquals(ANSWER3[i], resultSet.getDouble(4 + 1), 0.01);
-        assertEquals(ANSWER4[i], resultSet.getString(5 + 1));
-        assertTrue(resultSet.getBoolean(6 + 1));
-        assertTrue(resultSet.getBoolean(7 + 1));
-        assertEquals(ANSWER7[i], resultSet.getDouble(8 + 1), 0.01);
-        assertEquals(ANSWER8[i], resultSet.getString(9 + 1));
-        assertEquals(ANSWER9[i], resultSet.getDouble(10 + 1), 0.01);
-      }
-    } catch (Exception e) {
-      e.printStackTrace();
-    }
-  }
-
   @Test
   public void testStringFunctions() {
     String[] createSQLs =
diff --git a/iotdb-core/node-commons/pom.xml b/iotdb-core/node-commons/pom.xml
index 5c5cf963a9c..1a70babcc12 100644
--- a/iotdb-core/node-commons/pom.xml
+++ b/iotdb-core/node-commons/pom.xml
@@ -159,10 +159,6 @@
             <groupId>com.github.ben-manes.caffeine</groupId>
             <artifactId>caffeine</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-jexl3</artifactId>
-        </dependency>
         <dependency>
             <groupId>com.github.luben</groupId>
             <artifactId>zstd-jni</artifactId>
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/BuiltinTimeSeriesGeneratingFunction.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/BuiltinTimeSeriesGeneratingFunction.java
index 304fdcb040f..2284c0c96df 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/BuiltinTimeSeriesGeneratingFunction.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/BuiltinTimeSeriesGeneratingFunction.java
@@ -91,7 +91,6 @@ public enum BuiltinTimeSeriesGeneratingFunction {
   EQUAL_SIZE_BUCKET_M4_SAMPLE("EQUAL_SIZE_BUCKET_M4_SAMPLE", 
UDTFEqualSizeBucketM4Sample.class),
   EQUAL_SIZE_BUCKET_OUTLIER_SAMPLE(
       "EQUAL_SIZE_BUCKET_OUTLIER_SAMPLE", 
UDTFEqualSizeBucketOutlierSample.class),
-  JEXL("JEXL", UDTFJexl.class),
   MASTER_REPAIR("MASTER_REPAIR", UDTFMasterRepair.class),
   M4("M4", UDTFM4.class);
 
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFJexl.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFJexl.java
deleted file mode 100644
index d554cfe2572..00000000000
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/udf/builtin/UDTFJexl.java
+++ /dev/null
@@ -1,365 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.iotdb.commons.udf.builtin;
-
-import org.apache.iotdb.commons.exception.MetadataException;
-import org.apache.iotdb.commons.udf.utils.UDFDataTypeTransformer;
-import org.apache.iotdb.udf.api.UDTF;
-import org.apache.iotdb.udf.api.access.Row;
-import org.apache.iotdb.udf.api.collector.PointCollector;
-import org.apache.iotdb.udf.api.customizer.config.UDTFConfigurations;
-import org.apache.iotdb.udf.api.customizer.parameter.UDFParameterValidator;
-import org.apache.iotdb.udf.api.customizer.parameter.UDFParameters;
-import org.apache.iotdb.udf.api.customizer.strategy.RowByRowAccessStrategy;
-import org.apache.iotdb.udf.api.exception.UDFException;
-import 
org.apache.iotdb.udf.api.exception.UDFInputSeriesDataTypeNotValidException;
-import 
org.apache.iotdb.udf.api.exception.UDFOutputSeriesDataTypeNotValidException;
-import org.apache.iotdb.udf.api.type.Type;
-
-import org.apache.commons.jexl3.JexlBuilder;
-import org.apache.commons.jexl3.JexlEngine;
-import org.apache.commons.jexl3.JexlScript;
-import org.apache.tsfile.enums.TSDataType;
-
-import java.io.IOException;
-import java.util.HashMap;
-
-public class UDTFJexl implements UDTF {
-
-  private int inputSeriesNumber;
-  private TSDataType[] inputDataType;
-  private TSDataType outputDataType;
-  private JexlScript script;
-  private Evaluator evaluator;
-
-  @Override
-  public void validate(UDFParameterValidator validator) throws UDFException {
-    inputSeriesNumber = validator.getParameters().getChildExpressionsSize();
-    for (int i = 0; i < inputSeriesNumber; i++) {
-      validator.validateInputSeriesDataType(
-          i, Type.INT32, Type.INT64, Type.FLOAT, Type.DOUBLE, Type.TEXT, 
Type.BOOLEAN);
-    }
-    validator.validateRequiredAttribute("expr");
-  }
-
-  @Override
-  public void beforeStart(UDFParameters parameters, UDTFConfigurations 
configurations)
-      throws UDFInputSeriesDataTypeNotValidException,
-          UDFOutputSeriesDataTypeNotValidException,
-          MetadataException {
-    String expr = parameters.getString("expr");
-    JexlEngine jexl = new JexlBuilder().create();
-    script = jexl.createScript(expr);
-
-    inputDataType = new TSDataType[inputSeriesNumber];
-    for (int i = 0; i < inputSeriesNumber; i++) {
-      inputDataType[i] = 
UDFDataTypeTransformer.transformToTsDataType(parameters.getDataType(i));
-    }
-    outputDataType = probeOutputDataType();
-
-    if (inputSeriesNumber == 1) {
-      switch (inputDataType[0]) {
-        case INT32:
-          evaluator = new EvaluatorIntInput();
-          break;
-        case INT64:
-          evaluator = new EvaluatorLongInput();
-          break;
-        case FLOAT:
-          evaluator = new EvaluatorFloatInput();
-          break;
-        case DOUBLE:
-          evaluator = new EvaluatorDoubleInput();
-          break;
-        case TEXT:
-          evaluator = new EvaluatorStringInput();
-          break;
-        case BOOLEAN:
-          evaluator = new EvaluatorBooleanInput();
-          break;
-        case STRING:
-        case TIMESTAMP:
-        case DATE:
-        case BLOB:
-        default:
-          throw new UDFInputSeriesDataTypeNotValidException(
-              0,
-              UDFDataTypeTransformer.transformToUDFDataType(inputDataType[0]),
-              Type.INT32,
-              Type.INT64,
-              Type.FLOAT,
-              Type.DOUBLE,
-              Type.TEXT,
-              Type.BOOLEAN);
-      }
-    } else {
-      evaluator = new EvaluatorMulInput();
-    }
-
-    configurations
-        .setAccessStrategy(new RowByRowAccessStrategy())
-        
.setOutputDataType(UDFDataTypeTransformer.transformToUDFDataType(outputDataType));
-  }
-
-  // 23, 23L, 23f, 23d, "string", true are hard codes for probing
-  private HashMap<TSDataType, Object> initialMap() {
-    HashMap<TSDataType, Object> map = new HashMap<>();
-    map.put(TSDataType.INT32, 23);
-    map.put(TSDataType.INT64, 23L);
-    map.put(TSDataType.FLOAT, 23f);
-    map.put(TSDataType.DOUBLE, 23d);
-    map.put(TSDataType.TEXT, "string");
-    map.put(TSDataType.BOOLEAN, true);
-    return map;
-  }
-
-  private TSDataType probeOutputDataType() throws 
UDFOutputSeriesDataTypeNotValidException {
-    // initial inputHardCodes to probe OutputDataType
-    HashMap<TSDataType, Object> map = initialMap();
-    Object[] inputHardCodes = new Object[inputSeriesNumber];
-    for (int i = 0; i < inputSeriesNumber; i++) {
-      inputHardCodes[i] = map.get(inputDataType[i]);
-    }
-
-    Object o = script.execute(null, inputHardCodes);
-
-    if (o instanceof Number) {
-      return TSDataType.DOUBLE;
-    } else if (o instanceof String) {
-      return TSDataType.TEXT;
-    } else if (o instanceof Boolean) {
-      return TSDataType.BOOLEAN;
-    } else {
-      throw new UDFOutputSeriesDataTypeNotValidException(0, "[Number, String, 
Boolean]");
-    }
-  }
-
-  @Override
-  public void transform(Row row, PointCollector collector)
-      throws IOException,
-          UDFOutputSeriesDataTypeNotValidException,
-          UDFInputSeriesDataTypeNotValidException {
-    switch (outputDataType) {
-      case DOUBLE:
-        evaluator.evaluateDouble(row, collector);
-        break;
-      case TEXT:
-        evaluator.evaluateText(row, collector);
-        break;
-      case BOOLEAN:
-        evaluator.evaluateBoolean(row, collector);
-        break;
-      case TIMESTAMP:
-      case DATE:
-      case STRING:
-      case BLOB:
-      case INT64:
-      case INT32:
-      case FLOAT:
-      default:
-        // This will not happen.
-        throw new UDFOutputSeriesDataTypeNotValidException(0, "[Number, 
String, Boolean]");
-    }
-  }
-
-  private interface Evaluator {
-    void evaluateDouble(Row row, PointCollector collector)
-        throws IOException, UDFInputSeriesDataTypeNotValidException;
-
-    void evaluateText(Row row, PointCollector collector)
-        throws IOException, UDFInputSeriesDataTypeNotValidException;
-
-    void evaluateBoolean(Row row, PointCollector collector)
-        throws IOException, UDFInputSeriesDataTypeNotValidException;
-  }
-
-  private class EvaluatorIntInput implements Evaluator {
-    @Override
-    public void evaluateDouble(Row row, PointCollector collector) throws 
IOException {
-      collector.putDouble(
-          row.getTime(), ((Number) script.execute(null, 
row.getInt(0))).doubleValue());
-    }
-
-    @Override
-    public void evaluateText(Row row, PointCollector collector) throws 
IOException {
-      collector.putString(row.getTime(), (String) script.execute(null, 
row.getInt(0)));
-    }
-
-    @Override
-    public void evaluateBoolean(Row row, PointCollector collector) throws 
IOException {
-      collector.putBoolean(row.getTime(), (Boolean) script.execute(null, 
row.getInt(0)));
-    }
-  }
-
-  private class EvaluatorLongInput implements Evaluator {
-    @Override
-    public void evaluateDouble(Row row, PointCollector collector) throws 
IOException {
-      collector.putDouble(
-          row.getTime(), ((Number) script.execute(null, 
row.getLong(0))).doubleValue());
-    }
-
-    @Override
-    public void evaluateText(Row row, PointCollector collector) throws 
IOException {
-      collector.putString(row.getTime(), (String) script.execute(null, 
row.getLong(0)));
-    }
-
-    @Override
-    public void evaluateBoolean(Row row, PointCollector collector) throws 
IOException {
-      collector.putBoolean(row.getTime(), (Boolean) script.execute(null, 
row.getLong(0)));
-    }
-  }
-
-  private class EvaluatorFloatInput implements Evaluator {
-    @Override
-    public void evaluateDouble(Row row, PointCollector collector) throws 
IOException {
-      collector.putDouble(
-          row.getTime(), ((Number) script.execute(null, 
row.getFloat(0))).doubleValue());
-    }
-
-    @Override
-    public void evaluateText(Row row, PointCollector collector) throws 
IOException {
-      collector.putString(row.getTime(), (String) script.execute(null, 
row.getFloat(0)));
-    }
-
-    @Override
-    public void evaluateBoolean(Row row, PointCollector collector) throws 
IOException {
-      collector.putBoolean(row.getTime(), (Boolean) script.execute(null, 
row.getFloat(0)));
-    }
-  }
-
-  private class EvaluatorDoubleInput implements Evaluator {
-    @Override
-    public void evaluateDouble(Row row, PointCollector collector) throws 
IOException {
-      collector.putDouble(
-          row.getTime(), ((Number) script.execute(null, 
row.getDouble(0))).doubleValue());
-    }
-
-    @Override
-    public void evaluateText(Row row, PointCollector collector) throws 
IOException {
-      collector.putString(row.getTime(), (String) script.execute(null, 
row.getDouble(0)));
-    }
-
-    @Override
-    public void evaluateBoolean(Row row, PointCollector collector) throws 
IOException {
-      collector.putBoolean(row.getTime(), (Boolean) script.execute(null, 
row.getDouble(0)));
-    }
-  }
-
-  private class EvaluatorStringInput implements Evaluator {
-    @Override
-    public void evaluateDouble(Row row, PointCollector collector) throws 
IOException {
-      collector.putDouble(
-          row.getTime(), ((Number) script.execute(null, 
row.getString(0))).doubleValue());
-    }
-
-    @Override
-    public void evaluateText(Row row, PointCollector collector) throws 
IOException {
-      collector.putString(row.getTime(), (String) script.execute(null, 
row.getString(0)));
-    }
-
-    @Override
-    public void evaluateBoolean(Row row, PointCollector collector) throws 
IOException {
-      collector.putBoolean(row.getTime(), (Boolean) script.execute(null, 
row.getString(0)));
-    }
-  }
-
-  private class EvaluatorBooleanInput implements Evaluator {
-    @Override
-    public void evaluateDouble(Row row, PointCollector collector) throws 
IOException {
-      collector.putDouble(
-          row.getTime(), ((Number) script.execute(null, 
row.getBoolean(0))).doubleValue());
-    }
-
-    @Override
-    public void evaluateText(Row row, PointCollector collector) throws 
IOException {
-      collector.putString(row.getTime(), (String) script.execute(null, 
row.getBoolean(0)));
-    }
-
-    @Override
-    public void evaluateBoolean(Row row, PointCollector collector) throws 
IOException {
-      collector.putBoolean(row.getTime(), (Boolean) script.execute(null, 
row.getBoolean(0)));
-    }
-  }
-
-  private class EvaluatorMulInput implements Evaluator {
-
-    Object[] values = new Object[inputSeriesNumber];
-
-    @Override
-    public void evaluateDouble(Row row, PointCollector collector)
-        throws IOException, UDFInputSeriesDataTypeNotValidException {
-      getValues(row);
-      collector.putDouble(row.getTime(), ((Number) script.execute(null, 
values)).doubleValue());
-    }
-
-    @Override
-    public void evaluateText(Row row, PointCollector collector)
-        throws IOException, UDFInputSeriesDataTypeNotValidException {
-      getValues(row);
-      collector.putString(row.getTime(), (String) script.execute(null, 
values));
-    }
-
-    @Override
-    public void evaluateBoolean(Row row, PointCollector collector)
-        throws IOException, UDFInputSeriesDataTypeNotValidException {
-      getValues(row);
-      collector.putBoolean(row.getTime(), (Boolean) script.execute(null, 
values));
-    }
-
-    public void getValues(Row row) throws IOException, 
UDFInputSeriesDataTypeNotValidException {
-      for (int i = 0; i < inputSeriesNumber; i++) {
-        switch (inputDataType[i]) {
-          case INT32:
-            values[i] = row.getInt(i);
-            break;
-          case INT64:
-            values[i] = row.getLong(i);
-            break;
-          case FLOAT:
-            values[i] = row.getFloat(i);
-            break;
-          case DOUBLE:
-            values[i] = row.getDouble(i);
-            break;
-          case TEXT:
-            values[i] = row.getString(i);
-            break;
-          case BOOLEAN:
-            values[i] = row.getBoolean(i);
-            break;
-          case STRING:
-          case BLOB:
-          case DATE:
-          case TIMESTAMP:
-          default:
-            throw new UDFInputSeriesDataTypeNotValidException(
-                i,
-                
UDFDataTypeTransformer.transformToUDFDataType(inputDataType[i]),
-                Type.INT32,
-                Type.INT64,
-                Type.FLOAT,
-                Type.DOUBLE,
-                Type.TEXT,
-                Type.BOOLEAN);
-        }
-      }
-    }
-  }
-}
diff --git a/pom.xml b/pom.xml
index 1c01f72b1a3..baba6fcdd46 100644
--- a/pom.xml
+++ b/pom.xml
@@ -70,7 +70,6 @@
         <commons-codec.version>1.16.1</commons-codec.version>
         <commons-csv.version>1.10.0</commons-csv.version>
         <commons-io.version>2.14.0</commons-io.version>
-        <commons-jexl3.version>3.3</commons-jexl3.version>
         <commons-lang3.version>3.18.0</commons-lang3.version>
         <commons-math3.version>3.6.1</commons-math3.version>
         <commons-pool2.version>2.11.1</commons-pool2.version>
@@ -515,11 +514,6 @@
                 <artifactId>cglib</artifactId>
                 <version>${cglib.version}</version>
             </dependency>
-            <dependency>
-                <groupId>org.apache.commons</groupId>
-                <artifactId>commons-jexl3</artifactId>
-                <version>${commons-jexl3.version}</version>
-            </dependency>
             <dependency>
                 <groupId>com.github.luben</groupId>
                 <artifactId>zstd-jni</artifactId>


Reply via email to