You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by mi...@apache.org on 2023/10/10 05:35:21 UTC

[shardingsphere] branch master updated: Fix sql federation exception when open db scenario e2e sql test case (#28695)

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

miaoliyao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 8c6109ced85 Fix sql federation exception when open db scenario e2e sql test case (#28695)
8c6109ced85 is described below

commit 8c6109ced854328785c0134c00e45421a6ef6909
Author: Zhengqiang Duan <du...@apache.org>
AuthorDate: Tue Oct 10 13:35:14 2023 +0800

    Fix sql federation exception when open db scenario e2e sql test case (#28695)
    
    * Fix sql federation exception when open db scenario e2e sql test case
    
    * Fix wrong view zk path with new metadata structure
    
    * modify maxPoolSize to 5 in db scenario
    
    * modify maxPoolSize to 10 in db scenario
    
    * modify maxPoolSize to 20 in db scenario
    
    * Add log
    
    * Modify maxPoolSize to 50 in db scenario
    
    * Revert "Add log"
    
    This reverts commit 21d997156f51d5af0071517eafb2e0e8c56711a6.
---
 .github/workflows/e2e-sql.yml                      |   2 +-
 .../metadata/util/SQLFederationDataTypeUtils.java  |  39 +++-
 .../compiler/operator/physical/EnumerableScan.java |   2 +-
 .../planner/util/SQLFederationPlannerUtils.java    |   2 +-
 .../resources/cases/federation-query-sql-cases.xml | 210 ++++++++++-----------
 .../rql/dataset/db/mysql/show_storage_units.xml    |  20 +-
 .../dataset/db/opengauss/show_storage_units.xml    |  20 +-
 .../dataset/db/postgresql/show_storage_units.xml   |  20 +-
 .../scenario/db/proxy/conf/mysql/config-db.yaml    |  20 +-
 .../db/proxy/conf/opengauss/config-db.yaml         |  20 +-
 .../db/proxy/conf/postgresql/config-db.yaml        |  20 +-
 11 files changed, 197 insertions(+), 178 deletions(-)

diff --git a/.github/workflows/e2e-sql.yml b/.github/workflows/e2e-sql.yml
index 971f45e4db5..dbe2159956b 100644
--- a/.github/workflows/e2e-sql.yml
+++ b/.github/workflows/e2e-sql.yml
@@ -110,7 +110,7 @@ jobs:
         database: [ MySQL, PostgreSQL ]
         # Fix me #25051
         #scenario: [ dbtbl_with_readwrite_splitting, dbtbl_with_readwrite_splitting_and_encrypt, sharding_and_encrypt, encrypt_and_readwrite_splitting, encrypt_shadow, readwrite_splitting_and_shadow, sharding_and_shadow, sharding_encrypt_shadow, mask_encrypt, mask_sharding, mask_encrypt_sharding ]
-        scenario: [ empty_rules, rdl_empty_rules, passthrough, tbl, encrypt, readwrite_splitting, shadow, mask, dbtbl_with_readwrite_splitting_and_encrypt, sharding_and_encrypt, encrypt_and_readwrite_splitting, encrypt_shadow, readwrite_splitting_and_shadow, sharding_and_shadow, sharding_encrypt_shadow, mask_encrypt, mask_sharding, mask_encrypt_sharding ]
+        scenario: [ empty_rules, rdl_empty_rules, passthrough, db, tbl, encrypt, readwrite_splitting, shadow, mask, dbtbl_with_readwrite_splitting_and_encrypt, sharding_and_encrypt, encrypt_and_readwrite_splitting, encrypt_shadow, readwrite_splitting_and_shadow, sharding_and_shadow, sharding_encrypt_shadow, mask_encrypt, mask_sharding, mask_encrypt_sharding ]
         additional-options: [ '' ]
         include:
           - adapter: proxy
diff --git a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/metadata/util/SQLFederationDataTypeUtils.java b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/metadata/util/SQLFederationDataTypeUtils.java
index 294a5f3581f..d2d01f19e0c 100644
--- a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/metadata/util/SQLFederationDataTypeUtils.java
+++ b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/metadata/util/SQLFederationDataTypeUtils.java
@@ -25,11 +25,14 @@ import org.apache.calcite.rel.type.RelDataTypeFactory;
 import org.apache.calcite.rel.type.RelDataTypeFactory.Builder;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
 import org.apache.shardingsphere.infra.database.mysql.type.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.database.opengauss.type.OpenGaussDatabaseType;
+import org.apache.shardingsphere.infra.database.postgresql.type.PostgreSQLDatabaseType;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
 import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 
 import java.math.BigInteger;
 import java.sql.Types;
+import java.util.Optional;
 
 /**
  * SQL federation data type utility class.
@@ -60,17 +63,33 @@ public final class SQLFederationDataTypeUtils {
     }
     
     private static Class<?> getSqlTypeClass(final DatabaseType protocolType, final ShardingSphereColumn column) {
+        Optional<Class<?>> typeClazz = Optional.empty();
         if (protocolType instanceof MySQLDatabaseType) {
-            if (Types.TINYINT == column.getDataType() || Types.SMALLINT == column.getDataType()) {
-                return Integer.class;
-            }
-            if (Types.INTEGER == column.getDataType()) {
-                return column.isUnsigned() ? Long.class : Integer.class;
-            }
-            if (Types.BIGINT == column.getDataType()) {
-                return column.isUnsigned() ? BigInteger.class : Long.class;
-            }
+            typeClazz = findMySQLTypeClass(column);
         }
-        return SqlType.valueOf(column.getDataType()).clazz;
+        if (protocolType instanceof PostgreSQLDatabaseType || protocolType instanceof OpenGaussDatabaseType) {
+            typeClazz = findPostgreSQLTypeClass(column);
+        }
+        return typeClazz.orElseGet(() -> SqlType.valueOf(column.getDataType()).clazz);
+    }
+    
+    private static Optional<Class<?>> findPostgreSQLTypeClass(final ShardingSphereColumn column) {
+        if (Types.SMALLINT == column.getDataType()) {
+            return Optional.of(Integer.class);
+        }
+        return Optional.empty();
+    }
+    
+    private static Optional<Class<?>> findMySQLTypeClass(final ShardingSphereColumn column) {
+        if (Types.TINYINT == column.getDataType() || Types.SMALLINT == column.getDataType()) {
+            return Optional.of(Integer.class);
+        }
+        if (Types.INTEGER == column.getDataType()) {
+            return column.isUnsigned() ? Optional.of(Long.class) : Optional.of(Integer.class);
+        }
+        if (Types.BIGINT == column.getDataType()) {
+            return column.isUnsigned() ? Optional.of(BigInteger.class) : Optional.of(Long.class);
+        }
+        return Optional.empty();
     }
 }
diff --git a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/operator/physical/EnumerableScan.java b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/operator/physical/EnumerableScan.java
index bcd660d99ca..8cfaf7d4507 100644
--- a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/operator/physical/EnumerableScan.java
+++ b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/operator/physical/EnumerableScan.java
@@ -74,7 +74,7 @@ public final class EnumerableScan extends TableScan implements EnumerableRel {
     
     @Override
     public RelWriter explainTerms(final RelWriter relWriter) {
-        return super.explainTerms(relWriter).item("sql", sqlString.getSql().replaceAll("[\r\n]", " "));
+        return super.explainTerms(relWriter).item("sql", sqlString.getSql().replaceAll("[\r\n]", " ")).item("dynamicParameters", sqlString.getDynamicParameters());
     }
     
     @Override
diff --git a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/planner/util/SQLFederationPlannerUtils.java b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/planner/util/SQLFederationPlannerUtils.java
index b7e488a4462..6464237dd16 100644
--- a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/planner/util/SQLFederationPlannerUtils.java
+++ b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/compiler/planner/util/SQLFederationPlannerUtils.java
@@ -247,7 +247,7 @@ public final class SQLFederationPlannerUtils {
         ViewExpander expander = needsViewExpand ? new ShardingSphereViewExpander(sqlParserRule, databaseType,
                 createSqlToRelConverter(catalogReader, validator, cluster, sqlParserRule, databaseType, false)) : (rowType, queryString, schemaPath, viewPath) -> null;
         // TODO remove withRemoveSortInSubQuery when calcite can expand view which contains order by correctly
-        Config converterConfig = SqlToRelConverter.config().withTrimUnusedFields(true).withRemoveSortInSubQuery(false);
+        Config converterConfig = SqlToRelConverter.config().withTrimUnusedFields(true).withRemoveSortInSubQuery(false).withExpand(true);
         return new SqlToRelConverter(expander, validator, catalogReader, cluster, StandardConvertletTable.INSTANCE, converterConfig);
     }
     
diff --git a/kernel/sql-federation/core/src/test/resources/cases/federation-query-sql-cases.xml b/kernel/sql-federation/core/src/test/resources/cases/federation-query-sql-cases.xml
index 2438f44d052..0584a210361 100644
--- a/kernel/sql-federation/core/src/test/resources/cases/federation-query-sql-cases.xml
+++ b/kernel/sql-federation/core/src/test/resources/cases/federation-query-sql-cases.xml
@@ -18,422 +18,422 @@
 
 <test-cases>
     <test-case sql="SELECT t_order_federate.order_id, t_order_federate.user_id, t_user_info.user_id FROM t_order_federate JOIN t_user_info ON t_order_federate.user_id = t_user_info.user_id WHERE t_user_info.user_id = 13">
-        <assertion expected-result="EnumerableCalc(expr#0..4=[{inputs}], proj#0..1=[{exprs}], user_id0=[$t3])   EnumerableHashJoin(condition=[=($2, $4)], joinType=[inner])     EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t1):VARCHAR CHARACTER SET &quot;UTF-8&quot;], proj#0..1=[{exprs}], user_id0=[$t3])       EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT * FROM `federate_jdbc`.`t_order_federate`])     EnumerableCalc(expr#0..1=[{inputs}], expr#2=[CAST($t0):VAR [...]
+        <assertion expected-result="EnumerableCalc(expr#0..4=[{inputs}], proj#0..1=[{exprs}], user_id0=[$t3])   EnumerableHashJoin(condition=[=($2, $4)], joinType=[inner])     EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t1):VARCHAR CHARACTER SET &quot;UTF-8&quot;], proj#0..1=[{exprs}], user_id0=[$t3])       EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT * FROM `federate_jdbc`.`t_order_federate`], dynamicParameters=[null])     EnumerableCalc(expr#0..1=[{input [...]
     </test-case>
     
     <test-case sql="SELECT user_id, information FROM t_user_info WHERE user_id = 12">
-        <assertion expected-result="EnumerableScan(table=[[federate_jdbc, t_user_info]], sql=[SELECT * FROM `federate_jdbc`.`t_user_info` WHERE `user_id` = 12]) " />
+        <assertion expected-result="EnumerableScan(table=[[federate_jdbc, t_user_info]], sql=[SELECT * FROM `federate_jdbc`.`t_user_info` WHERE `user_id` = 12], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT user_id FROM t_user_info WHERE user_id = 12">
-        <assertion expected-result="EnumerableScan(table=[[federate_jdbc, t_user_info]], sql=[SELECT `user_id` FROM `federate_jdbc`.`t_user_info` WHERE `user_id` = 12]) " />
+        <assertion expected-result="EnumerableScan(table=[[federate_jdbc, t_user_info]], sql=[SELECT `user_id` FROM `federate_jdbc`.`t_user_info` WHERE `user_id` = 12], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT t_order_federate.order_id, t_order_federate.user_id, t_user_info.user_id FROM t_order_federate , t_user_info WHERE t_order_federate.user_id = t_user_info.user_id">
-        <assertion expected-result="EnumerableCalc(expr#0..4=[{inputs}], proj#0..1=[{exprs}], user_id0=[$t3])   EnumerableHashJoin(condition=[=($2, $4)], joinType=[inner])     EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t1):VARCHAR CHARACTER SET &quot;UTF-8&quot;], proj#0..1=[{exprs}], user_id0=[$t3])       EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT * FROM `federate_jdbc`.`t_order_federate`])     EnumerableCalc(expr#0..1=[{inputs}], expr#2=[CAST($t0):VAR [...]
+        <assertion expected-result="EnumerableCalc(expr#0..4=[{inputs}], proj#0..1=[{exprs}], user_id0=[$t3])   EnumerableHashJoin(condition=[=($2, $4)], joinType=[inner])     EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t1):VARCHAR CHARACTER SET &quot;UTF-8&quot;], proj#0..1=[{exprs}], user_id0=[$t3])       EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT * FROM `federate_jdbc`.`t_order_federate`], dynamicParameters=[null])     EnumerableCalc(expr#0..1=[{input [...]
     </test-case>
     
     <test-case sql="SELECT t_order_federate.order_id, t_order_federate.user_id, t_user_info.user_id FROM t_order_federate JOIN t_user_info ON t_order_federate.user_id = t_user_info.user_id">
-        <assertion expected-result="EnumerableCalc(expr#0..4=[{inputs}], proj#0..1=[{exprs}], user_id0=[$t3])   EnumerableHashJoin(condition=[=($2, $4)], joinType=[inner])     EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t1):VARCHAR CHARACTER SET &quot;UTF-8&quot;], proj#0..1=[{exprs}], user_id0=[$t3])       EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT * FROM `federate_jdbc`.`t_order_federate`])     EnumerableCalc(expr#0..1=[{inputs}], expr#2=[CAST($t0):VAR [...]
+        <assertion expected-result="EnumerableCalc(expr#0..4=[{inputs}], proj#0..1=[{exprs}], user_id0=[$t3])   EnumerableHashJoin(condition=[=($2, $4)], joinType=[inner])     EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t1):VARCHAR CHARACTER SET &quot;UTF-8&quot;], proj#0..1=[{exprs}], user_id0=[$t3])       EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT * FROM `federate_jdbc`.`t_order_federate`], dynamicParameters=[null])     EnumerableCalc(expr#0..1=[{input [...]
     </test-case>
     
     <test-case sql="SELECT t_order_federate.order_id, t_order_federate.user_id, t_user_info.user_id FROM t_order_federate ,t_user_info WHERE t_order_federate.user_id = t_user_info.user_id AND t_user_info.user_id = 13">
-        <assertion expected-result="EnumerableCalc(expr#0..4=[{inputs}], proj#0..1=[{exprs}], user_id0=[$t3])   EnumerableHashJoin(condition=[=($2, $4)], joinType=[inner])     EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t1):VARCHAR CHARACTER SET &quot;UTF-8&quot;], proj#0..1=[{exprs}], user_id0=[$t3])       EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT * FROM `federate_jdbc`.`t_order_federate`])     EnumerableCalc(expr#0..1=[{inputs}], expr#2=[CAST($t0):VAR [...]
+        <assertion expected-result="EnumerableCalc(expr#0..4=[{inputs}], proj#0..1=[{exprs}], user_id0=[$t3])   EnumerableHashJoin(condition=[=($2, $4)], joinType=[inner])     EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t1):VARCHAR CHARACTER SET &quot;UTF-8&quot;], proj#0..1=[{exprs}], user_id0=[$t3])       EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT * FROM `federate_jdbc`.`t_order_federate`], dynamicParameters=[null])     EnumerableCalc(expr#0..1=[{input [...]
     </test-case>
     
     <test-case sql="SELECT user.user_id, user.information FROM (SELECT * FROM t_user_info WHERE user_id &gt; 1) as user ">
-        <assertion expected-result="EnumerableScan(table=[[federate_jdbc, t_user_info]], sql=[SELECT * FROM `federate_jdbc`.`t_user_info` WHERE `user_id` &gt; 1]) " />
+        <assertion expected-result="EnumerableScan(table=[[federate_jdbc, t_user_info]], sql=[SELECT * FROM `federate_jdbc`.`t_user_info` WHERE `user_id` &gt; 1], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT t_order_federate.order_id, t_order_federate.user_id FROM t_order_federate WHERE EXISTS (SELECT * FROM t_user_info WHERE t_order_federate.user_id = t_user_info.user_id)">
-        <assertion expected-result="EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order_federate` WHERE EXISTS (SELECT * FROM `federate_jdbc`.`t_user_info` WHERE CAST(`t_order_federate`.`user_id` AS CHAR) = CAST(`user_id` AS CHAR))]) " />
+        <assertion expected-result="EnumerableCalc(expr#0..3=[{inputs}], expr#4=[IS NOT NULL($t3)], proj#0..1=[{exprs}], $condition=[$t4])   EnumerableCorrelate(correlation=[$cor0], joinType=[left], requiredColumns=[{1}])     EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT * FROM `federate_jdbc`.`t_order_federate`], dynamicParameters=[null])     EnumerableAggregate(group=[{}], agg#0=[MIN($0)])       EnumerableCalc(expr#0..1=[{inputs}], expr#2=[true], expr#3=[$cor0], [...]
     </test-case>
     
     <test-case sql="SELECT t_order_federate.order_id, t_order_federate.user_id FROM t_order_federate WHERE t_order_federate.user_id IN (SELECT t_user_info.user_id FROM t_user_info)">
-        <assertion expected-result="EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order_federate` WHERE `user_id` IN (SELECT `user_id` FROM `federate_jdbc`.`t_user_info`)]) " />
+        <assertion expected-result="EnumerableCalc(expr#0..2=[{inputs}], proj#0..1=[{exprs}])   EnumerableHashJoin(condition=[=($1, $2)], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order_federate`], dynamicParameters=[null])     EnumerableAggregate(group=[{0}])       EnumerableScan(table=[[federate_jdbc, t_user_info]], sql=[SELECT `user_id` FROM `federate_jdbc`.`t_user_info`], dynamicParameters [...]
     </test-case>
     
     <test-case sql="SELECT t_order_federate.order_id, t_order_federate.user_id FROM t_order_federate WHERE user_id BETWEEN (SELECT user_id FROM t_user_info WHERE user_id = 1) AND (SELECT user_id FROM t_user_info WHERE user_id = 3)">
-        <assertion expected-result="EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order_federate` WHERE `user_id` &gt;= (((SELECT `user_id` FROM `federate_jdbc`.`t_user_info` WHERE `user_id` = 1))) AND `user_id` &lt;= (((SELECT `user_id` FROM `federate_jdbc`.`t_user_info` WHERE `user_id` = 3)))]) " />
+        <assertion expected-result="EnumerableCalc(expr#0..2=[{inputs}], proj#0..1=[{exprs}])   EnumerableNestedLoopJoin(condition=[&lt;=($1, $2)], joinType=[inner])     EnumerableCalc(expr#0..2=[{inputs}], proj#0..1=[{exprs}])       EnumerableNestedLoopJoin(condition=[>=($1, $2)], joinType=[inner])         EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order_federate`], dynamicParameters=[null])         EnumerableAggre [...]
     </test-case>
     
     <test-case sql="SELECT order_id, user_id FROM t_order_federate UNION SELECT 1, user_id FROM t_user_info WHERE information = 'before'">
-        <assertion expected-result="EnumerableUnion(all=[false])   EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order_federate`])   EnumerableScan(table=[[federate_jdbc, t_user_info]], sql=[SELECT '1', `user_id` FROM `federate_jdbc`.`t_user_info` WHERE `information` = 'before']) " />
+        <assertion expected-result="EnumerableUnion(all=[false])   EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order_federate`], dynamicParameters=[null])   EnumerableScan(table=[[federate_jdbc, t_user_info]], sql=[SELECT '1', `user_id` FROM `federate_jdbc`.`t_user_info` WHERE `information` = 'before'], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT order_id, user_id FROM t_order_federate LIMIT 1">
-        <assertion expected-result="EnumerableLimit(fetch=[1])   EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order_federate`]) " />
+        <assertion expected-result="EnumerableLimit(fetch=[1])   EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order_federate`], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT MAX(order_id), MIN(order_id), SUM(order_id), AVG(order_id), COUNT(1) FROM t_order_federate GROUP BY user_id">
-        <assertion expected-result="EnumerableCalc(expr#0..5=[{inputs}], expr#6=[0], expr#7=[=($t4, $t6)], expr#8=[null:DECIMAL(19, 9)], expr#9=[CASE($t7, $t8, $t3)], expr#10=[/($t9, $t4)], EXPR$0=[$t1], EXPR$1=[$t2], EXPR$2=[$t9], EXPR$3=[$t10], EXPR$4=[$t5])   EnumerableAggregate(group=[{0}], EXPR$0=[MAX($1)], EXPR$1=[MIN($1)], EXPR$2=[$SUM0($2)], agg#3=[COUNT($2)], EXPR$4=[COUNT()])     EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t0):DECIMAL(19, 9)], user_id=[$t1], order_id=[$t [...]
+        <assertion expected-result="EnumerableCalc(expr#0..5=[{inputs}], expr#6=[0], expr#7=[=($t4, $t6)], expr#8=[null:DECIMAL(19, 9)], expr#9=[CASE($t7, $t8, $t3)], expr#10=[/($t9, $t4)], EXPR$0=[$t1], EXPR$1=[$t2], EXPR$2=[$t9], EXPR$3=[$t10], EXPR$4=[$t5])   EnumerableAggregate(group=[{0}], EXPR$0=[MAX($1)], EXPR$1=[MIN($1)], EXPR$2=[$SUM0($2)], agg#3=[COUNT($2)], EXPR$4=[COUNT()])     EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t0):DECIMAL(19, 9)], user_id=[$t1], order_id=[$t [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_single_table s INNER JOIN t_order o ON s.id = o.order_id">
-        <assertion expected-result="EnumerableCalc(expr#0..9=[{inputs}], proj#0..8=[{exprs}])   EnumerableHashJoin(condition=[=($1, $9)], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_single_table]], sql=[SELECT * FROM `federate_jdbc`.`t_single_table`])     EnumerableCalc(expr#0..5=[{inputs}], expr#6=[CAST($t0):JavaType(class java.lang.Integer)], proj#0..6=[{exprs}])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order`]) " />
+        <assertion expected-result="EnumerableCalc(expr#0..9=[{inputs}], proj#0..8=[{exprs}])   EnumerableHashJoin(condition=[=($1, $9)], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_single_table]], sql=[SELECT * FROM `federate_jdbc`.`t_single_table`], dynamicParameters=[null])     EnumerableCalc(expr#0..5=[{inputs}], expr#6=[CAST($t0):JavaType(class java.lang.Integer)], proj#0..6=[{exprs}])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `feder [...]
     </test-case>
     
     <test-case sql="select t_order_federate.*, t_order_item_federate_sharding.* from t_order_federate, t_order_item_federate_sharding where t_order_federate.order_id = t_order_item_federate_sharding.item_id AND t_order_item_federate_sharding.remarks = 't_order_item_federate_sharding' ">
-        <assertion expected-result="EnumerableCalc(expr#0..9=[{inputs}], proj#0..2=[{exprs}], item_id=[$t4], order_id1=[$t5], user_id0=[$t6], status0=[$t7], remarks=[$t8])   EnumerableHashJoin(condition=[=($3, $9)], joinType=[inner])     EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t0):INTEGER], proj#0..3=[{exprs}])       EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT * FROM `federate_jdbc`.`t_order_federate`])     EnumerableCalc(expr#0..4=[{inputs}], expr#5= [...]
+        <assertion expected-result="EnumerableCalc(expr#0..9=[{inputs}], proj#0..2=[{exprs}], item_id=[$t4], order_id1=[$t5], user_id0=[$t6], status0=[$t7], remarks=[$t8])   EnumerableHashJoin(condition=[=($3, $9)], joinType=[inner])     EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t0):INTEGER], proj#0..3=[{exprs}])       EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT * FROM `federate_jdbc`.`t_order_federate`], dynamicParameters=[null])     EnumerableCalc(exp [...]
     </test-case>
     
     <test-case sql="select o.*, i.* from t_order_federate o, t_order_item_federate_sharding i where o.order_id = i.item_id">
-        <assertion expected-result="EnumerableCalc(expr#0..9=[{inputs}], proj#0..2=[{exprs}], item_id=[$t4], order_id1=[$t5], user_id0=[$t6], status0=[$t7], remarks=[$t8])   EnumerableHashJoin(condition=[=($3, $9)], joinType=[inner])     EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t0):INTEGER], proj#0..3=[{exprs}])       EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT * FROM `federate_jdbc`.`t_order_federate`])     EnumerableCalc(expr#0..4=[{inputs}], expr#5= [...]
+        <assertion expected-result="EnumerableCalc(expr#0..9=[{inputs}], proj#0..2=[{exprs}], item_id=[$t4], order_id1=[$t5], user_id0=[$t6], status0=[$t7], remarks=[$t8])   EnumerableHashJoin(condition=[=($3, $9)], joinType=[inner])     EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t0):INTEGER], proj#0..3=[{exprs}])       EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT * FROM `federate_jdbc`.`t_order_federate`], dynamicParameters=[null])     EnumerableCalc(exp [...]
     </test-case>
     
     <test-case sql="SELECT i.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (10, 11) AND o.order_id BETWEEN 1000 AND 1909 ORDER BY i.item_id">
-        <assertion expected-result="EnumerableSort(sort0=[$0], dir0=[ASC])   EnumerableCalc(expr#0..7=[{inputs}], item_id=[$t2], order_id=[$t3], user_id=[$t4], product_id=[$t5], quantity=[$t6], creation_date=[$t7])     EnumerableHashJoin(condition=[AND(=($1, $4), =($0, $3))], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order` WHERE `user_id` IN (10, 11) AND (`order_id` &gt;= 1000 AND `order_id` &lt;= 1 [...]
+        <assertion expected-result="EnumerableSort(sort0=[$0], dir0=[ASC])   EnumerableCalc(expr#0..7=[{inputs}], item_id=[$t2], order_id=[$t3], user_id=[$t4], product_id=[$t5], quantity=[$t6], creation_date=[$t7])     EnumerableHashJoin(condition=[AND(=($1, $4), =($0, $3))], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order` WHERE `user_id` IN (10, 11) AND (`order_id` &gt;= 1000 AND `order_id` &lt;= 1 [...]
     </test-case>
     
     <test-case sql="SELECT i.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id ORDER BY i.item_id">
-        <assertion expected-result="EnumerableSort(sort0=[$0], dir0=[ASC])   EnumerableCalc(expr#0..7=[{inputs}], item_id=[$t2], order_id=[$t3], user_id=[$t4], product_id=[$t5], quantity=[$t6], creation_date=[$t7])     EnumerableHashJoin(condition=[AND(=($1, $4), =($0, $3))], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order`])       EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * F [...]
+        <assertion expected-result="EnumerableSort(sort0=[$0], dir0=[ASC])   EnumerableCalc(expr#0..7=[{inputs}], item_id=[$t2], order_id=[$t3], user_id=[$t4], product_id=[$t5], quantity=[$t6], creation_date=[$t7])     EnumerableHashJoin(condition=[AND(=($1, $4), =($0, $3))], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order`], dynamicParameters=[null])       EnumerableScan(table=[[federate_jdbc, t_ord [...]
     </test-case>
     
     <test-case sql="SELECT i.* FROM t_order o JOIN t_order_item i ON o.order_id=i.order_id AND o.user_id = i.user_id WHERE o.order_id = 1000">
-        <assertion expected-result="EnumerableCalc(expr#0..7=[{inputs}], item_id=[$t2], order_id=[$t3], user_id=[$t4], product_id=[$t5], quantity=[$t6], creation_date=[$t7])   EnumerableHashJoin(condition=[AND(=($0, $3), =($1, $4))], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order` WHERE CAST(`order_id` AS SIGNED) = 1000])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `fe [...]
+        <assertion expected-result="EnumerableCalc(expr#0..7=[{inputs}], item_id=[$t2], order_id=[$t3], user_id=[$t4], product_id=[$t5], quantity=[$t6], creation_date=[$t7])   EnumerableHashJoin(condition=[AND(=($0, $3), =($1, $4))], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order` WHERE CAST(`order_id` AS SIGNED) = 1000], dynamicParameters=[null])     EnumerableScan(table=[[federate_jdbc, t_order_item [...]
     </test-case>
     
     <test-case sql="SELECT i.* FROM t_order o FORCE INDEX(order_index) JOIN t_order_item i ON o.order_id=i.order_id AND o.user_id = i.user_id AND o.order_id = 1000">
-        <assertion expected-result="EnumerableCalc(expr#0..7=[{inputs}], item_id=[$t2], order_id=[$t3], user_id=[$t4], product_id=[$t5], quantity=[$t6], creation_date=[$t7])   EnumerableHashJoin(condition=[AND(=($0, $3), =($1, $4))], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order` WHERE CAST(`order_id` AS SIGNED) = 1000])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `fe [...]
+        <assertion expected-result="EnumerableCalc(expr#0..7=[{inputs}], item_id=[$t2], order_id=[$t3], user_id=[$t4], product_id=[$t5], quantity=[$t6], creation_date=[$t7])   EnumerableHashJoin(condition=[AND(=($0, $3), =($1, $4))], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order` WHERE CAST(`order_id` AS SIGNED) = 1000], dynamicParameters=[null])     EnumerableScan(table=[[federate_jdbc, t_order_item [...]
     </test-case>
     
     <test-case sql="SELECT i.* FROM t_order o FORCE INDEX(order_index) JOIN t_order_item i ON o.order_id=i.order_id AND o.user_id = i.user_id AND o.order_id in (1000,1001)">
-        <assertion expected-result="EnumerableCalc(expr#0..7=[{inputs}], item_id=[$t2], order_id=[$t3], user_id=[$t4], product_id=[$t5], quantity=[$t6], creation_date=[$t7])   EnumerableHashJoin(condition=[AND(=($0, $3), =($1, $4))], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order` WHERE `order_id` IN (1000, 1001)])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_ [...]
+        <assertion expected-result="EnumerableCalc(expr#0..7=[{inputs}], item_id=[$t2], order_id=[$t3], user_id=[$t4], product_id=[$t5], quantity=[$t6], creation_date=[$t7])   EnumerableHashJoin(condition=[AND(=($0, $3), =($1, $4))], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order` WHERE `order_id` IN (1000, 1001)], dynamicParameters=[null])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql [...]
     </test-case>
     
     <test-case sql="SELECT i.* FROM t_order o FORCE INDEX(order_index) JOIN t_order_item i ON o.order_id=i.order_id AND o.user_id = i.user_id AND o.order_id in (1000,1001)">
-        <assertion expected-result="EnumerableCalc(expr#0..7=[{inputs}], item_id=[$t2], order_id=[$t3], user_id=[$t4], product_id=[$t5], quantity=[$t6], creation_date=[$t7])   EnumerableHashJoin(condition=[AND(=($0, $3), =($1, $4))], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order` WHERE `order_id` IN (1000, 1001)])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_ [...]
+        <assertion expected-result="EnumerableCalc(expr#0..7=[{inputs}], item_id=[$t2], order_id=[$t3], user_id=[$t4], product_id=[$t5], quantity=[$t6], creation_date=[$t7])   EnumerableHashJoin(condition=[AND(=($0, $3), =($1, $4))], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order` WHERE `order_id` IN (1000, 1001)], dynamicParameters=[null])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql [...]
     </test-case>
     
     <test-case sql="SELECT COUNT(*) AS items_count FROM t_order o, t_order_item i WHERE o.user_id = i.user_id AND o.order_id = i.order_id AND o.user_id IN (10, 11) AND o.order_id BETWEEN 1000 AND 1909">
-        <assertion expected-result="EnumerableAggregate(group=[{}], items_count=[COUNT()])   EnumerableHashJoin(condition=[AND(=($1, $8), =($0, $7))], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order` WHERE `user_id` IN (10, 11) AND (`order_id` &gt;= 1000 AND `order_id` &lt;= 1909)])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item` WHERE `user_id` IN (10, 11) AND ( [...]
+        <assertion expected-result="EnumerableAggregate(group=[{}], items_count=[COUNT()])   EnumerableHashJoin(condition=[AND(=($1, $8), =($0, $7))], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order` WHERE `user_id` IN (10, 11) AND (`order_id` &gt;= 1000 AND `order_id` &lt;= 1909)], dynamicParameters=[null])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item` WHERE ` [...]
     </test-case>
     
     <test-case sql="SELECT COUNT(*) AS items_count FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (10, 11) AND o.order_id BETWEEN 1000 AND 1909">
-        <assertion expected-result="EnumerableAggregate(group=[{}], items_count=[COUNT()])   EnumerableHashJoin(condition=[AND(=($1, $8), =($0, $7))], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order` WHERE `user_id` IN (10, 11) AND (`order_id` &gt;= 1000 AND `order_id` &lt;= 1909)])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item` WHERE `user_id` IN (10, 11) AND ( [...]
+        <assertion expected-result="EnumerableAggregate(group=[{}], items_count=[COUNT()])   EnumerableHashJoin(condition=[AND(=($1, $8), =($0, $7))], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order` WHERE `user_id` IN (10, 11) AND (`order_id` &gt;= 1000 AND `order_id` &lt;= 1909)], dynamicParameters=[null])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item` WHERE ` [...]
     </test-case>
     
     <test-case sql="SELECT i.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE (o.order_id = 1000 OR o.order_id = 1100) AND o.user_id = 11">
-        <assertion expected-result="EnumerableCalc(expr#0..7=[{inputs}], item_id=[$t2], order_id=[$t3], user_id=[$t4], product_id=[$t5], quantity=[$t6], creation_date=[$t7])   EnumerableHashJoin(condition=[AND(=($1, $4), =($0, $3))], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order` WHERE CAST(`order_id` AS SIGNED) IN (1000, 1100) AND CAST(`user_id` AS SIGNED) = 11])     EnumerableScan(table=[[federate_ [...]
+        <assertion expected-result="EnumerableCalc(expr#0..7=[{inputs}], item_id=[$t2], order_id=[$t3], user_id=[$t4], product_id=[$t5], quantity=[$t6], creation_date=[$t7])   EnumerableHashJoin(condition=[AND(=($1, $4), =($0, $3))], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order` WHERE CAST(`order_id` AS SIGNED) IN (1000, 1100) AND CAST(`user_id` AS SIGNED) = 11], dynamicParameters=[null])     Enumer [...]
     </test-case>
     
     <test-case sql="SELECT i.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (10, 19) AND o.order_id BETWEEN 1000 AND 1909 ORDER BY i.item_id DESC">
-        <assertion expected-result="EnumerableSort(sort0=[$0], dir0=[DESC])   EnumerableCalc(expr#0..7=[{inputs}], item_id=[$t2], order_id=[$t3], user_id=[$t4], product_id=[$t5], quantity=[$t6], creation_date=[$t7])     EnumerableHashJoin(condition=[AND(=($1, $4), =($0, $3))], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order` WHERE `user_id` IN (10, 19) AND (`order_id` &gt;= 1000 AND `order_id` &lt;=  [...]
+        <assertion expected-result="EnumerableSort(sort0=[$0], dir0=[DESC])   EnumerableCalc(expr#0..7=[{inputs}], item_id=[$t2], order_id=[$t3], user_id=[$t4], product_id=[$t5], quantity=[$t6], creation_date=[$t7])     EnumerableHashJoin(condition=[AND(=($1, $4), =($0, $3))], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order` WHERE `user_id` IN (10, 19) AND (`order_id` &gt;= 1000 AND `order_id` &lt;=  [...]
     </test-case>
     
     <test-case sql="SELECT i.*, o.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id ORDER BY item_id">
-        <assertion expected-result="EnumerableSort(sort0=[$0], dir0=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], item_id=[$t6], order_id=[$t7], user_id=[$t8], product_id=[$t9], quantity=[$t10], creation_date=[$t11], order_id0=[$t0], user_id0=[$t1], status=[$t2], merchant_id=[$t3], remark=[$t4], creation_date0=[$t5])     EnumerableHashJoin(condition=[AND(=($1, $8), =($0, $7))], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t [...]
+        <assertion expected-result="EnumerableSort(sort0=[$0], dir0=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], item_id=[$t6], order_id=[$t7], user_id=[$t8], product_id=[$t9], quantity=[$t10], creation_date=[$t11], order_id0=[$t0], user_id0=[$t1], status=[$t2], merchant_id=[$t3], remark=[$t4], creation_date0=[$t5])     EnumerableHashJoin(condition=[AND(=($1, $8), =($0, $7))], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t [...]
     </test-case>
     
     <test-case sql="SELECT i.* FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (10, 19) AND o.order_id BETWEEN 1000 AND 1909 ORDER BY i.item_id DESC LIMIT 2">
-        <assertion expected-result="EnumerableLimit(fetch=[2])   EnumerableSort(sort0=[$0], dir0=[DESC])     EnumerableCalc(expr#0..7=[{inputs}], item_id=[$t2], order_id=[$t3], user_id=[$t4], product_id=[$t5], quantity=[$t6], creation_date=[$t7])       EnumerableHashJoin(condition=[AND(=($1, $4), =($0, $3))], joinType=[inner])         EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order` WHERE `user_id` IN (10, 19) AND (`order_i [...]
+        <assertion expected-result="EnumerableLimit(fetch=[2])   EnumerableSort(sort0=[$0], dir0=[DESC])     EnumerableCalc(expr#0..7=[{inputs}], item_id=[$t2], order_id=[$t3], user_id=[$t4], product_id=[$t5], quantity=[$t6], creation_date=[$t7])       EnumerableHashJoin(condition=[AND(=($1, $4), =($0, $3))], joinType=[inner])         EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order` WHERE `user_id` IN (10, 19) AND (`order_i [...]
     </test-case>
     
     <test-case sql="SELECT i.* FROM `t_order` o JOIN `t_order_item` i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.`user_id` IN (10, 19) AND o.`order_id` BETWEEN 1000 AND 1909 ORDER BY i.item_id DESC LIMIT 2, 2">
-        <assertion expected-result="EnumerableLimit(offset=[2], fetch=[2])   EnumerableSort(sort0=[$0], dir0=[DESC])     EnumerableCalc(expr#0..7=[{inputs}], item_id=[$t2], order_id=[$t3], user_id=[$t4], product_id=[$t5], quantity=[$t6], creation_date=[$t7])       EnumerableHashJoin(condition=[AND(=($1, $4), =($0, $3))], joinType=[inner])         EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order` WHERE `user_id` IN (10, 19) A [...]
+        <assertion expected-result="EnumerableLimit(offset=[2], fetch=[2])   EnumerableSort(sort0=[$0], dir0=[DESC])     EnumerableCalc(expr#0..7=[{inputs}], item_id=[$t2], order_id=[$t3], user_id=[$t4], product_id=[$t5], quantity=[$t6], creation_date=[$t7])       EnumerableHashJoin(condition=[AND(=($1, $4), =($0, $3))], joinType=[inner])         EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order` WHERE `user_id` IN (10, 19) A [...]
     </test-case>
     
     <test-case sql="SELECT i.* FROM `t_order` o JOIN `t_order_item` i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.`user_id` IN (10, 19) AND o.`order_id` BETWEEN 1000 AND 1909 ORDER BY i.item_id DESC LIMIT 2 OFFSET 2">
-        <assertion expected-result="EnumerableLimit(offset=[2], fetch=[2])   EnumerableSort(sort0=[$0], dir0=[DESC])     EnumerableCalc(expr#0..7=[{inputs}], item_id=[$t2], order_id=[$t3], user_id=[$t4], product_id=[$t5], quantity=[$t6], creation_date=[$t7])       EnumerableHashJoin(condition=[AND(=($1, $4), =($0, $3))], joinType=[inner])         EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order` WHERE `user_id` IN (10, 19) A [...]
+        <assertion expected-result="EnumerableLimit(offset=[2], fetch=[2])   EnumerableSort(sort0=[$0], dir0=[DESC])     EnumerableCalc(expr#0..7=[{inputs}], item_id=[$t2], order_id=[$t3], user_id=[$t4], product_id=[$t5], quantity=[$t6], creation_date=[$t7])       EnumerableHashJoin(condition=[AND(=($1, $4), =($0, $3))], joinType=[inner])         EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order` WHERE `user_id` IN (10, 19) A [...]
     </test-case>
     
     <test-case sql="SELECT COUNT(i.user_id) FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (10, 19) AND o.order_id BETWEEN 1000 AND 1909 GROUP BY i.item_id ORDER BY i.item_id DESC LIMIT 1, 10">
-        <assertion expected-result="EnumerableLimit(offset=[1], fetch=[10])   EnumerableSort(sort0=[$1], dir0=[DESC])     EnumerableCalc(expr#0..1=[{inputs}], EXPR$0=[$t1], item_id=[$t0])       EnumerableAggregate(group=[{0}], EXPR$0=[COUNT($1)])         EnumerableCalc(expr#0..4=[{inputs}], item_id=[$t2], user_id0=[$t4])           EnumerableHashJoin(condition=[AND(=($1, $4), =($0, $3))], joinType=[inner])             EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id` [...]
+        <assertion expected-result="EnumerableLimit(offset=[1], fetch=[10])   EnumerableSort(sort0=[$1], dir0=[DESC])     EnumerableCalc(expr#0..1=[{inputs}], EXPR$0=[$t1], item_id=[$t0])       EnumerableAggregate(group=[{0}], EXPR$0=[COUNT($1)])         EnumerableCalc(expr#0..4=[{inputs}], item_id=[$t2], user_id0=[$t4])           EnumerableHashJoin(condition=[AND(=($1, $4), =($0, $3))], joinType=[inner])             EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id` [...]
     </test-case>
     
     <test-case sql="SELECT i.user_id FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (10, 19) AND o.order_id BETWEEN 1000 AND 1909 GROUP BY i.user_id,i.item_id ORDER BY i.item_id DESC LIMIT 1, 10">
-        <assertion expected-result="EnumerableLimit(offset=[1], fetch=[10])   EnumerableSort(sort0=[$1], dir0=[DESC])     EnumerableAggregate(group=[{0, 1}])       EnumerableCalc(expr#0..4=[{inputs}], user_id=[$t4], item_id=[$t2])         EnumerableHashJoin(condition=[AND(=($1, $4), =($0, $3))], joinType=[inner])           EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order` WHERE `user_id` IN (10, 19) AND (`order_id` &gt;= 100 [...]
+        <assertion expected-result="EnumerableLimit(offset=[1], fetch=[10])   EnumerableSort(sort0=[$1], dir0=[DESC])     EnumerableAggregate(group=[{0, 1}])       EnumerableCalc(expr#0..4=[{inputs}], user_id=[$t4], item_id=[$t2])         EnumerableHashJoin(condition=[AND(=($1, $4), =($0, $3))], joinType=[inner])           EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id` FROM `federate_jdbc`.`t_order` WHERE `user_id` IN (10, 19) AND (`order_id` &gt;= 100 [...]
     </test-case>
     
     <test-case sql="SELECT i.* FROM t_order o INNER JOIN t_order_item i ON o.order_id = i.order_id WHERE o.order_id = 1000">
-        <assertion expected-result="EnumerableCalc(expr#0..6=[{inputs}], item_id=[$t1], order_id=[$t2], user_id=[$t3], product_id=[$t4], quantity=[$t5], creation_date=[$t6])   EnumerableHashJoin(condition=[=($0, $2)], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id` FROM `federate_jdbc`.`t_order` WHERE CAST(`order_id` AS SIGNED) = 1000])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item` [...]
+        <assertion expected-result="EnumerableCalc(expr#0..6=[{inputs}], item_id=[$t1], order_id=[$t2], user_id=[$t3], product_id=[$t4], quantity=[$t5], creation_date=[$t6])   EnumerableHashJoin(condition=[=($0, $2)], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id` FROM `federate_jdbc`.`t_order` WHERE CAST(`order_id` AS SIGNED) = 1000], dynamicParameters=[null])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `fed [...]
     </test-case>
     
     <test-case sql="SELECT t_order_item.* FROM t_order JOIN t_order_item ON t_order.order_id = t_order_item.order_id WHERE t_order.order_id = 1000">
-        <assertion expected-result="EnumerableCalc(expr#0..6=[{inputs}], item_id=[$t1], order_id=[$t2], user_id=[$t3], product_id=[$t4], quantity=[$t5], creation_date=[$t6])   EnumerableHashJoin(condition=[=($0, $2)], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id` FROM `federate_jdbc`.`t_order` WHERE CAST(`order_id` AS SIGNED) = 1000])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item` [...]
+        <assertion expected-result="EnumerableCalc(expr#0..6=[{inputs}], item_id=[$t1], order_id=[$t2], user_id=[$t3], product_id=[$t4], quantity=[$t5], creation_date=[$t6])   EnumerableHashJoin(condition=[=($0, $2)], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id` FROM `federate_jdbc`.`t_order` WHERE CAST(`order_id` AS SIGNED) = 1000], dynamicParameters=[null])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `fed [...]
     </test-case>
     
     <test-case sql="SELECT i.* FROM t_order o JOIN t_order_item i USING(order_id) WHERE o.order_id = 1000">
-        <assertion expected-result="EnumerableCalc(expr#0..6=[{inputs}], item_id=[$t1], order_id=[$t2], user_id=[$t3], product_id=[$t4], quantity=[$t5], creation_date=[$t6])   EnumerableHashJoin(condition=[=($0, $2)], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id` FROM `federate_jdbc`.`t_order` WHERE CAST(`order_id` AS SIGNED) = 1000])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item` [...]
+        <assertion expected-result="EnumerableCalc(expr#0..6=[{inputs}], item_id=[$t1], order_id=[$t2], user_id=[$t3], product_id=[$t4], quantity=[$t5], creation_date=[$t6])   EnumerableHashJoin(condition=[=($0, $2)], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id` FROM `federate_jdbc`.`t_order` WHERE CAST(`order_id` AS SIGNED) = 1000], dynamicParameters=[null])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `fed [...]
     </test-case>
     
     <test-case sql="SELECT DISTINCT t_order.*, t_order_item.order_id FROM t_order, t_order_item WHERE t_order.order_id = t_order_item.order_id ORDER BY t_order.order_id">
-        <assertion expected-result="EnumerableSort(sort0=[$0], dir0=[ASC])   EnumerableAggregate(group=[{0, 1, 2, 3, 4, 5, 6}])     EnumerableHashJoin(condition=[=($0, $6)], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order`])       EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT `order_id` FROM `federate_jdbc`.`t_order_item`]) " />
+        <assertion expected-result="EnumerableSort(sort0=[$0], dir0=[ASC])   EnumerableAggregate(group=[{0, 1, 2, 3, 4, 5, 6}])     EnumerableHashJoin(condition=[=($0, $6)], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order`], dynamicParameters=[null])       EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT `order_id` FROM `federate_jdbc`.`t_order_item`], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o LEFT JOIN t_order_item m ON o.order_id = m.order_id AND o.user_id = m.user_id order by o.order_id, m.item_id">
-        <assertion expected-result="EnumerableSort(sort0=[$0], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableHashJoin(condition=[AND(=($0, $7), =($1, $8))], joinType=[left])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order`])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item`]) " />
+        <assertion expected-result="EnumerableSort(sort0=[$0], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableHashJoin(condition=[AND(=($0, $7), =($1, $8))], joinType=[left])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order`], dynamicParameters=[null])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item`], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o INNER JOIN t_order_item m ON o.order_id = m.order_id WHERE m.order_id IN (0, 11)">
-        <assertion expected-result="EnumerableHashJoin(condition=[=($0, $7)], joinType=[inner])   EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order` WHERE `order_id` IN (0, 11)])   EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item` WHERE `order_id` IN (0, 11)]) " />
+        <assertion expected-result="EnumerableHashJoin(condition=[=($0, $7)], joinType=[inner])   EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order` WHERE `order_id` IN (0, 11)], dynamicParameters=[null])   EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item` WHERE `order_id` IN (0, 11)], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT * FROM t_single_table s INNER JOIN t_order o ON s.id = o.order_id">
-        <assertion expected-result="EnumerableCalc(expr#0..9=[{inputs}], proj#0..8=[{exprs}])   EnumerableHashJoin(condition=[=($1, $9)], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_single_table]], sql=[SELECT * FROM `federate_jdbc`.`t_single_table`])     EnumerableCalc(expr#0..5=[{inputs}], expr#6=[CAST($t0):JavaType(class java.lang.Integer)], proj#0..6=[{exprs}])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order`]) " />
+        <assertion expected-result="EnumerableCalc(expr#0..9=[{inputs}], proj#0..8=[{exprs}])   EnumerableHashJoin(condition=[=($1, $9)], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_single_table]], sql=[SELECT * FROM `federate_jdbc`.`t_single_table`], dynamicParameters=[null])     EnumerableCalc(expr#0..5=[{inputs}], expr#6=[CAST($t0):JavaType(class java.lang.Integer)], proj#0..6=[{exprs}])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `feder [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_single_table s INNER JOIN t_user_info o ON s.id = o.user_id">
-        <assertion expected-result="EnumerableCalc(expr#0..6=[{inputs}], proj#0..2=[{exprs}], user_id=[$t4], information=[$t5])   EnumerableHashJoin(condition=[=($3, $6)], joinType=[inner])     EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t1):INTEGER], proj#0..3=[{exprs}])       EnumerableScan(table=[[federate_jdbc, t_single_table]], sql=[SELECT * FROM `federate_jdbc`.`t_single_table`])     EnumerableCalc(expr#0..1=[{inputs}], expr#2=[CAST($t0):INTEGER], proj#0..2=[{exprs}])        [...]
+        <assertion expected-result="EnumerableCalc(expr#0..6=[{inputs}], proj#0..2=[{exprs}], user_id=[$t4], information=[$t5])   EnumerableHashJoin(condition=[=($3, $6)], joinType=[inner])     EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t1):INTEGER], proj#0..3=[{exprs}])       EnumerableScan(table=[[federate_jdbc, t_single_table]], sql=[SELECT * FROM `federate_jdbc`.`t_single_table`], dynamicParameters=[null])     EnumerableCalc(expr#0..1=[{inputs}], expr#2=[CAST($t0):INTEGER], p [...]
     </test-case>
     
     <test-case sql="SELECT o.*, i.* FROM t_order_federate o, t_order_item i WHERE o.order_id = 1000 AND i.item_id = 100000">
-        <assertion expected-result="EnumerableNestedLoopJoin(condition=[true], joinType=[inner])   EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT * FROM `federate_jdbc`.`t_order_federate` WHERE `order_id` = 1000])   EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item` WHERE CAST(`item_id` AS SIGNED) = 100000]) " />
+        <assertion expected-result="EnumerableNestedLoopJoin(condition=[true], joinType=[inner])   EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT * FROM `federate_jdbc`.`t_order_federate` WHERE `order_id` = 1000], dynamicParameters=[null])   EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item` WHERE CAST(`item_id` AS SIGNED) = 100000], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT o.*, i.* FROM t_order_federate o, t_order_item i WHERE o.order_id = 1000 AND i.item_id = 100000 LIMIT 3">
-        <assertion expected-result="EnumerableLimit(fetch=[3])   EnumerableNestedLoopJoin(condition=[true], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT * FROM `federate_jdbc`.`t_order_federate` WHERE `order_id` = 1000])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item` WHERE CAST(`item_id` AS SIGNED) = 100000]) " />
+        <assertion expected-result="EnumerableLimit(fetch=[3])   EnumerableNestedLoopJoin(condition=[true], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT * FROM `federate_jdbc`.`t_order_federate` WHERE `order_id` = 1000], dynamicParameters=[null])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item` WHERE CAST(`item_id` AS SIGNED) = 100000], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT GROUP_CONCAT(i.item_id SEPARATOR ';') AS item_ids FROM t_order_federate o INNER JOIN t_order_item_federate_sharding i ON o.order_id = i.item_id WHERE i.order_id &gt;= 10000">
-        <assertion expected-result="EnumerableAggregate(group=[{}], item_ids=[LISTAGG($0, $1)])   EnumerableCalc(expr#0..2=[{inputs}], expr#3=[_UTF-8';'], $f0=[$t2], $f1=[$t3])     EnumerableHashJoin(condition=[=($0, $1)], joinType=[inner])       EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t0):INTEGER], order_id0=[$t3])         EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT * FROM `federate_jdbc`.`t_order_federate`])       EnumerableCalc(expr#0..4=[{inputs}] [...]
+        <assertion expected-result="EnumerableAggregate(group=[{}], item_ids=[LISTAGG($0, $1)])   EnumerableCalc(expr#0..2=[{inputs}], expr#3=[_UTF-8';'], $f0=[$t2], $f1=[$t3])     EnumerableHashJoin(condition=[=($0, $1)], joinType=[inner])       EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t0):INTEGER], order_id0=[$t3])         EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT * FROM `federate_jdbc`.`t_order_federate`], dynamicParameters=[null])       Enumerabl [...]
     </test-case>
     
     <test-case sql="select t_order_federate.*, t_order_item_federate_sharding.* from t_order_federate, t_order_item_federate_sharding where t_order_federate.order_id = t_order_item_federate_sharding.item_id AND t_order_item_federate_sharding.remarks = 't_order_item_federate_sharding' ">
-        <assertion expected-result="EnumerableCalc(expr#0..9=[{inputs}], proj#0..2=[{exprs}], item_id=[$t4], order_id1=[$t5], user_id0=[$t6], status0=[$t7], remarks=[$t8])   EnumerableHashJoin(condition=[=($3, $9)], joinType=[inner])     EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t0):INTEGER], proj#0..3=[{exprs}])       EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT * FROM `federate_jdbc`.`t_order_federate`])     EnumerableCalc(expr#0..4=[{inputs}], expr#5= [...]
+        <assertion expected-result="EnumerableCalc(expr#0..9=[{inputs}], proj#0..2=[{exprs}], item_id=[$t4], order_id1=[$t5], user_id0=[$t6], status0=[$t7], remarks=[$t8])   EnumerableHashJoin(condition=[=($3, $9)], joinType=[inner])     EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t0):INTEGER], proj#0..3=[{exprs}])       EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT * FROM `federate_jdbc`.`t_order_federate`], dynamicParameters=[null])     EnumerableCalc(exp [...]
     </test-case>
     
     <test-case sql="select o.*, i.* from t_order_federate o, t_order_item_federate_sharding i where o.order_id = i.item_id">
-        <assertion expected-result="EnumerableCalc(expr#0..9=[{inputs}], proj#0..2=[{exprs}], item_id=[$t4], order_id1=[$t5], user_id0=[$t6], status0=[$t7], remarks=[$t8])   EnumerableHashJoin(condition=[=($3, $9)], joinType=[inner])     EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t0):INTEGER], proj#0..3=[{exprs}])       EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT * FROM `federate_jdbc`.`t_order_federate`])     EnumerableCalc(expr#0..4=[{inputs}], expr#5= [...]
+        <assertion expected-result="EnumerableCalc(expr#0..9=[{inputs}], proj#0..2=[{exprs}], item_id=[$t4], order_id1=[$t5], user_id0=[$t6], status0=[$t7], remarks=[$t8])   EnumerableHashJoin(condition=[=($3, $9)], joinType=[inner])     EnumerableCalc(expr#0..2=[{inputs}], expr#3=[CAST($t0):INTEGER], proj#0..3=[{exprs}])       EnumerableScan(table=[[federate_jdbc, t_order_federate]], sql=[SELECT * FROM `federate_jdbc`.`t_order_federate`], dynamicParameters=[null])     EnumerableCalc(exp [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o INNER JOIN t_order_item i ON o.order_id = i.order_id WHERE o.user_id = ? ORDER BY o.order_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$0], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableHashJoin(condition=[=($0, $7)], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order` WHERE `user_id` = ?])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item`]) " />
+        <assertion expected-result="EnumerableSort(sort0=[$0], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableHashJoin(condition=[=($0, $7)], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order` WHERE `user_id` = ?], dynamicParameters=[[0]])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item`], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o INNER JOIN t_order_item i ON o.order_id = i.order_id WHERE o.user_id = ? ORDER BY o.order_id, 7 LIMIT 5, 2">
-        <assertion expected-result="EnumerableLimit(offset=[5], fetch=[2])   EnumerableSort(sort0=[$0], sort1=[$6], dir0=[ASC], dir1=[ASC])     EnumerableHashJoin(condition=[=($0, $7)], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order` WHERE `user_id` = ?])       EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item`]) " />
+        <assertion expected-result="EnumerableLimit(offset=[5], fetch=[2])   EnumerableSort(sort0=[$0], sort1=[$6], dir0=[ASC], dir1=[ASC])     EnumerableHashJoin(condition=[=($0, $7)], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order` WHERE `user_id` = ?], dynamicParameters=[[0]])       EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item`], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o INNER JOIN t_order_item i USING(order_id) WHERE o.user_id = ? ORDER BY o.order_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$11], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t0, $t7)], order_id=[$t12], user_id=[$t1], status=[$t2], merchant_id=[$t3], remark=[$t4], creation_date=[$t5], item_id=[$t6], user_id0=[$t8], product_id=[$t9], quantity=[$t10], creation_date0=[$t11], order_id0=[$t0])     EnumerableHashJoin(condition=[=($0, $7)], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order] [...]
+        <assertion expected-result="EnumerableSort(sort0=[$11], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t0, $t7)], order_id=[$t12], user_id=[$t1], status=[$t2], merchant_id=[$t3], remark=[$t4], creation_date=[$t5], item_id=[$t6], user_id0=[$t8], product_id=[$t9], quantity=[$t10], creation_date0=[$t11], order_id0=[$t0])     EnumerableHashJoin(condition=[=($0, $7)], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order] [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o INNER JOIN t_order_item i USING(order_id) WHERE o.user_id = ? ORDER BY o.order_id, 7 LIMIT 5, 2">
-        <assertion expected-result="EnumerableLimit(offset=[5], fetch=[2])   EnumerableSort(sort0=[$11], sort1=[$6], dir0=[ASC], dir1=[ASC])     EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t0, $t7)], order_id=[$t12], user_id=[$t1], status=[$t2], merchant_id=[$t3], remark=[$t4], creation_date=[$t5], item_id=[$t6], user_id0=[$t8], product_id=[$t9], quantity=[$t10], creation_date0=[$t11], order_id0=[$t0])       EnumerableHashJoin(condition=[=($0, $7)], joinType=[inner])         [...]
+        <assertion expected-result="EnumerableLimit(offset=[5], fetch=[2])   EnumerableSort(sort0=[$11], sort1=[$6], dir0=[ASC], dir1=[ASC])     EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t0, $t7)], order_id=[$t12], user_id=[$t1], status=[$t2], merchant_id=[$t3], remark=[$t4], creation_date=[$t5], item_id=[$t6], user_id0=[$t8], product_id=[$t9], quantity=[$t10], creation_date0=[$t11], order_id0=[$t0])       EnumerableHashJoin(condition=[=($0, $7)], joinType=[inner])         [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o NATURAL JOIN t_order_item i WHERE o.user_id = ? ORDER BY o.order_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$9], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t0, $t7)], expr#13=[COALESCE($t1, $t8)], expr#14=[COALESCE($t5, $t11)], order_id=[$t12], user_id=[$t13], creation_date=[$t14], status=[$t2], merchant_id=[$t3], remark=[$t4], item_id=[$t6], product_id=[$t9], quantity=[$t10], order_id0=[$t0])     EnumerableHashJoin(condition=[AND(=($0, $7), =($1, $8), =($5, $11))], joinType=[inner])   [...]
+        <assertion expected-result="EnumerableSort(sort0=[$9], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t0, $t7)], expr#13=[COALESCE($t1, $t8)], expr#14=[COALESCE($t5, $t11)], order_id=[$t12], user_id=[$t13], creation_date=[$t14], status=[$t2], merchant_id=[$t3], remark=[$t4], item_id=[$t6], product_id=[$t9], quantity=[$t10], order_id0=[$t0])     EnumerableHashJoin(condition=[AND(=($0, $7), =($1, $8), =($5, $11))], joinType=[inner])   [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o NATURAL JOIN t_order_item i WHERE o.user_id = ? ORDER BY o.order_id, 7 LIMIT 5, 2">
-        <assertion expected-result="EnumerableLimit(offset=[5], fetch=[2])   EnumerableSort(sort0=[$9], sort1=[$6], dir0=[ASC], dir1=[ASC])     EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t0, $t7)], expr#13=[COALESCE($t1, $t8)], expr#14=[COALESCE($t5, $t11)], order_id=[$t12], user_id=[$t13], creation_date=[$t14], status=[$t2], merchant_id=[$t3], remark=[$t4], item_id=[$t6], product_id=[$t9], quantity=[$t10], order_id0=[$t0])       EnumerableHashJoin(condition=[AND(=($0, $7), [...]
+        <assertion expected-result="EnumerableLimit(offset=[5], fetch=[2])   EnumerableSort(sort0=[$9], sort1=[$6], dir0=[ASC], dir1=[ASC])     EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t0, $t7)], expr#13=[COALESCE($t1, $t8)], expr#14=[COALESCE($t5, $t11)], order_id=[$t12], user_id=[$t13], creation_date=[$t14], status=[$t2], merchant_id=[$t3], remark=[$t4], item_id=[$t6], product_id=[$t9], quantity=[$t10], order_id0=[$t0])       EnumerableHashJoin(condition=[AND(=($0, $7), [...]
     </test-case>
     
     <test-case sql="SELECT MIN(o.order_id), MIN(o.merchant_id), i.product_id FROM t_order o INNER JOIN t_order_item i ON o.order_id = i.order_id WHERE o.user_id = 10 GROUP BY i.product_id">
-        <assertion expected-result="EnumerableCalc(expr#0..2=[{inputs}], EXPR$0=[$t1], EXPR$1=[$t2], product_id=[$t0])   EnumerableAggregate(group=[{0}], EXPR$0=[MIN($1)], EXPR$1=[MIN($2)])     EnumerableCalc(expr#0..3=[{inputs}], product_id=[$t3], order_id=[$t0], merchant_id=[$t1])       EnumerableHashJoin(condition=[=($0, $2)], joinType=[inner])         EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `merchant_id` FROM `federate_jdbc`.`t_order` WHERE CAST(`user [...]
+        <assertion expected-result="EnumerableCalc(expr#0..2=[{inputs}], EXPR$0=[$t1], EXPR$1=[$t2], product_id=[$t0])   EnumerableAggregate(group=[{0}], EXPR$0=[MIN($1)], EXPR$1=[MIN($2)])     EnumerableCalc(expr#0..3=[{inputs}], product_id=[$t3], order_id=[$t0], merchant_id=[$t1])       EnumerableHashJoin(condition=[=($0, $2)], joinType=[inner])         EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `merchant_id` FROM `federate_jdbc`.`t_order` WHERE CAST(`user [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o CROSS JOIN t_order_item i ON o.order_id = i.order_id WHERE o.user_id = 7 ORDER BY o.order_id LIMIT 10, 10">
-        <assertion expected-result="EnumerableLimit(offset=[10], fetch=[10])   EnumerableSort(sort0=[$0], dir0=[ASC])     EnumerableHashJoin(condition=[=($0, $7)], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order` WHERE CAST(`user_id` AS SIGNED) = 7])       EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item`]) " />
+        <assertion expected-result="EnumerableLimit(offset=[10], fetch=[10])   EnumerableSort(sort0=[$0], dir0=[ASC])     EnumerableHashJoin(condition=[=($0, $7)], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order` WHERE CAST(`user_id` AS SIGNED) = 7], dynamicParameters=[null])       EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item`], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o LEFT JOIN t_order_item i ON o.order_id = i.order_id WHERE o.user_id = 10 ORDER BY o.order_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$0], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableHashJoin(condition=[=($0, $7)], joinType=[left])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order` WHERE CAST(`user_id` AS SIGNED) = 10])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item`]) " />
+        <assertion expected-result="EnumerableSort(sort0=[$0], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableHashJoin(condition=[=($0, $7)], joinType=[left])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order` WHERE CAST(`user_id` AS SIGNED) = 10], dynamicParameters=[null])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item`], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o RIGHT JOIN t_order_item i ON o.order_id = i.order_id WHERE i.user_id = 10 ORDER BY i.item_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$6], dir0=[ASC])   EnumerableHashJoin(condition=[=($0, $7)], joinType=[right])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order`])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item` WHERE CAST(`user_id` AS SIGNED) = 10]) " />
+        <assertion expected-result="EnumerableSort(sort0=[$6], dir0=[ASC])   EnumerableHashJoin(condition=[=($0, $7)], joinType=[right])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order`], dynamicParameters=[null])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item` WHERE CAST(`user_id` AS SIGNED) = 10], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o JOIN t_order_item i ON o.order_id = i.order_id WHERE o.user_id = 10 OR i.user_id = 10 ORDER BY o.order_id">
-        <assertion expected-result="EnumerableSort(sort0=[$0], dir0=[ASC])   EnumerableCalc(expr#0..13=[{inputs}], proj#0..5=[{exprs}], item_id=[$t7], order_id0=[$t8], user_id0=[$t9], product_id=[$t10], quantity=[$t11], creation_date0=[$t12])     EnumerableHashJoin(condition=[AND(=($0, $8), OR($6, $13))], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id`, `status`, `merchant_id`, `remark`, `creation_date`, CAST(`user_id` AS SIGNED) [...]
+        <assertion expected-result="EnumerableSort(sort0=[$0], dir0=[ASC])   EnumerableCalc(expr#0..13=[{inputs}], proj#0..5=[{exprs}], item_id=[$t7], order_id0=[$t8], user_id0=[$t9], product_id=[$t10], quantity=[$t11], creation_date0=[$t12])     EnumerableHashJoin(condition=[AND(=($0, $8), OR($6, $13))], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id`, `status`, `merchant_id`, `remark`, `creation_date`, CAST(`user_id` AS SIGNED) [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o LEFT JOIN t_order_item i USING(order_id) WHERE o.user_id = 10 ORDER BY o.order_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$11], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t0, $t7)], order_id=[$t12], user_id=[$t1], status=[$t2], merchant_id=[$t3], remark=[$t4], creation_date=[$t5], item_id=[$t6], user_id0=[$t8], product_id=[$t9], quantity=[$t10], creation_date0=[$t11], order_id0=[$t0])     EnumerableHashJoin(condition=[=($0, $7)], joinType=[left])       EnumerableScan(table=[[federate_jdbc, t_order]] [...]
+        <assertion expected-result="EnumerableSort(sort0=[$11], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t0, $t7)], order_id=[$t12], user_id=[$t1], status=[$t2], merchant_id=[$t3], remark=[$t4], creation_date=[$t5], item_id=[$t6], user_id0=[$t8], product_id=[$t9], quantity=[$t10], creation_date0=[$t11], order_id0=[$t0])     EnumerableHashJoin(condition=[=($0, $7)], joinType=[left])       EnumerableScan(table=[[federate_jdbc, t_order]] [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o RIGHT JOIN t_order_item i USING(order_id) WHERE i.user_id = 10 ORDER BY i.item_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$6], dir0=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t0, $t7)], order_id=[$t12], user_id=[$t1], status=[$t2], merchant_id=[$t3], remark=[$t4], creation_date=[$t5], item_id=[$t6], user_id0=[$t8], product_id=[$t9], quantity=[$t10], creation_date0=[$t11])     EnumerableHashJoin(condition=[=($0, $7)], joinType=[right])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_o [...]
+        <assertion expected-result="EnumerableSort(sort0=[$6], dir0=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t0, $t7)], order_id=[$t12], user_id=[$t1], status=[$t2], merchant_id=[$t3], remark=[$t4], creation_date=[$t5], item_id=[$t6], user_id0=[$t8], product_id=[$t9], quantity=[$t10], creation_date0=[$t11])     EnumerableHashJoin(condition=[=($0, $7)], joinType=[right])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_o [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o JOIN t_order_item i USING(order_id) WHERE o.user_id = 10 OR i.user_id = 10 ORDER BY o.order_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$11], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..13=[{inputs}], expr#14=[COALESCE($t0, $t8)], order_id=[$t14], user_id=[$t1], status=[$t2], merchant_id=[$t3], remark=[$t4], creation_date=[$t5], item_id=[$t7], user_id0=[$t9], product_id=[$t10], quantity=[$t11], creation_date0=[$t12], order_id0=[$t0])     EnumerableHashJoin(condition=[AND(=($0, $8), OR($6, $13))], joinType=[inner])       EnumerableScan(table=[[fede [...]
+        <assertion expected-result="EnumerableSort(sort0=[$11], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..13=[{inputs}], expr#14=[COALESCE($t0, $t8)], order_id=[$t14], user_id=[$t1], status=[$t2], merchant_id=[$t3], remark=[$t4], creation_date=[$t5], item_id=[$t7], user_id0=[$t9], product_id=[$t10], quantity=[$t11], creation_date0=[$t12], order_id0=[$t0])     EnumerableHashJoin(condition=[AND(=($0, $8), OR($6, $13))], joinType=[inner])       EnumerableScan(table=[[fede [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o INNER JOIN t_merchant m USING(merchant_id) WHERE o.user_id = 10 ORDER BY o.order_id">
-        <assertion expected-result="EnumerableSort(sort0=[$1], dir0=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t3, $t6)], merchant_id=[$t12], order_id=[$t0], user_id=[$t1], status=[$t2], remark=[$t4], creation_date=[$t5], country_id=[$t7], merchant_name=[$t8], business_code=[$t9], telephone=[$t10], creation_date0=[$t11])     EnumerableHashJoin(condition=[=($3, $6)], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federat [...]
+        <assertion expected-result="EnumerableSort(sort0=[$1], dir0=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t3, $t6)], merchant_id=[$t12], order_id=[$t0], user_id=[$t1], status=[$t2], remark=[$t4], creation_date=[$t5], country_id=[$t7], merchant_name=[$t8], business_code=[$t9], telephone=[$t10], creation_date0=[$t11])     EnumerableHashJoin(condition=[=($3, $6)], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federat [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o INNER JOIN t_merchant m USING(merchant_id) WHERE o.user_id = 10 ORDER BY o.order_id LIMIT 5, 2">
-        <assertion expected-result="EnumerableLimit(offset=[5], fetch=[2])   EnumerableSort(sort0=[$1], dir0=[ASC])     EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t3, $t6)], merchant_id=[$t12], order_id=[$t0], user_id=[$t1], status=[$t2], remark=[$t4], creation_date=[$t5], country_id=[$t7], merchant_name=[$t8], business_code=[$t9], telephone=[$t10], creation_date0=[$t11])       EnumerableHashJoin(condition=[=($3, $6)], joinType=[inner])         EnumerableScan(table=[[federa [...]
+        <assertion expected-result="EnumerableLimit(offset=[5], fetch=[2])   EnumerableSort(sort0=[$1], dir0=[ASC])     EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t3, $t6)], merchant_id=[$t12], order_id=[$t0], user_id=[$t1], status=[$t2], remark=[$t4], creation_date=[$t5], country_id=[$t7], merchant_name=[$t8], business_code=[$t9], telephone=[$t10], creation_date0=[$t11])       EnumerableHashJoin(condition=[=($3, $6)], joinType=[inner])         EnumerableScan(table=[[federa [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o NATURAL LEFT JOIN t_order_item i WHERE o.user_id = 10 ORDER BY o.order_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$9], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t0, $t7)], expr#13=[COALESCE($t1, $t8)], expr#14=[COALESCE($t5, $t11)], order_id=[$t12], user_id=[$t13], creation_date=[$t14], status=[$t2], merchant_id=[$t3], remark=[$t4], item_id=[$t6], product_id=[$t9], quantity=[$t10], order_id0=[$t0])     EnumerableHashJoin(condition=[AND(=($0, $7), =($1, $8), =($5, $11))], joinType=[left])    [...]
+        <assertion expected-result="EnumerableSort(sort0=[$9], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t0, $t7)], expr#13=[COALESCE($t1, $t8)], expr#14=[COALESCE($t5, $t11)], order_id=[$t12], user_id=[$t13], creation_date=[$t14], status=[$t2], merchant_id=[$t3], remark=[$t4], item_id=[$t6], product_id=[$t9], quantity=[$t10], order_id0=[$t0])     EnumerableHashJoin(condition=[AND(=($0, $7), =($1, $8), =($5, $11))], joinType=[left])    [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o NATURAL RIGHT JOIN t_order_item i WHERE i.user_id = 10 ORDER BY i.item_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$6], dir0=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t0, $t7)], expr#13=[COALESCE($t1, $t8)], expr#14=[COALESCE($t5, $t11)], order_id=[$t12], user_id=[$t13], creation_date=[$t14], status=[$t2], merchant_id=[$t3], remark=[$t4], item_id=[$t6], product_id=[$t9], quantity=[$t10])     EnumerableHashJoin(condition=[AND(=($0, $7), =($1, $8), =($5, $11))], joinType=[right])       EnumerableScan(table=[[federate_jdbc [...]
+        <assertion expected-result="EnumerableSort(sort0=[$6], dir0=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t0, $t7)], expr#13=[COALESCE($t1, $t8)], expr#14=[COALESCE($t5, $t11)], order_id=[$t12], user_id=[$t13], creation_date=[$t14], status=[$t2], merchant_id=[$t3], remark=[$t4], item_id=[$t6], product_id=[$t9], quantity=[$t10])     EnumerableHashJoin(condition=[AND(=($0, $7), =($1, $8), =($5, $11))], joinType=[right])       EnumerableScan(table=[[federate_jdbc [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o NATURAL JOIN t_order_item i WHERE o.user_id = 10 OR i.user_id = 10 ORDER BY o.order_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$9], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..13=[{inputs}], expr#14=[COALESCE($t0, $t8)], expr#15=[COALESCE($t1, $t9)], expr#16=[COALESCE($t5, $t12)], order_id=[$t14], user_id=[$t15], creation_date=[$t16], status=[$t2], merchant_id=[$t3], remark=[$t4], item_id=[$t7], product_id=[$t10], quantity=[$t11], order_id0=[$t0])     EnumerableHashJoin(condition=[AND(=($0, $8), =($1, $9), =($5, $12), OR($6, $13))], joinT [...]
+        <assertion expected-result="EnumerableSort(sort0=[$9], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..13=[{inputs}], expr#14=[COALESCE($t0, $t8)], expr#15=[COALESCE($t1, $t9)], expr#16=[COALESCE($t5, $t12)], order_id=[$t14], user_id=[$t15], creation_date=[$t16], status=[$t2], merchant_id=[$t3], remark=[$t4], item_id=[$t7], product_id=[$t10], quantity=[$t11], order_id0=[$t0])     EnumerableHashJoin(condition=[AND(=($0, $8), =($1, $9), =($5, $12), OR($6, $13))], joinT [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o NATURAL JOIN t_merchant m WHERE o.user_id = 10 ORDER BY o.order_id">
-        <assertion expected-result="EnumerableSort(sort0=[$2], dir0=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t3, $t6)], expr#13=[COALESCE($t5, $t11)], merchant_id=[$t12], creation_date=[$t13], order_id=[$t0], user_id=[$t1], status=[$t2], remark=[$t4], country_id=[$t7], merchant_name=[$t8], business_code=[$t9], telephone=[$t10])     EnumerableHashJoin(condition=[AND(=($3, $6), =($5, $11))], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order]], s [...]
+        <assertion expected-result="EnumerableSort(sort0=[$2], dir0=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t3, $t6)], expr#13=[COALESCE($t5, $t11)], merchant_id=[$t12], creation_date=[$t13], order_id=[$t0], user_id=[$t1], status=[$t2], remark=[$t4], country_id=[$t7], merchant_name=[$t8], business_code=[$t9], telephone=[$t10])     EnumerableHashJoin(condition=[AND(=($3, $6), =($5, $11))], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order]], s [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o NATURAL JOIN t_merchant m WHERE o.user_id = 10 ORDER BY o.order_id LIMIT 5, 2">
-        <assertion expected-result="EnumerableLimit(offset=[5], fetch=[2])   EnumerableSort(sort0=[$2], dir0=[ASC])     EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t3, $t6)], expr#13=[COALESCE($t5, $t11)], merchant_id=[$t12], creation_date=[$t13], order_id=[$t0], user_id=[$t1], status=[$t2], remark=[$t4], country_id=[$t7], merchant_name=[$t8], business_code=[$t9], telephone=[$t10])       EnumerableHashJoin(condition=[AND(=($3, $6), =($5, $11))], joinType=[inner])         Enu [...]
+        <assertion expected-result="EnumerableLimit(offset=[5], fetch=[2])   EnumerableSort(sort0=[$2], dir0=[ASC])     EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t3, $t6)], expr#13=[COALESCE($t5, $t11)], merchant_id=[$t12], creation_date=[$t13], order_id=[$t0], user_id=[$t1], status=[$t2], remark=[$t4], country_id=[$t7], merchant_name=[$t8], business_code=[$t9], telephone=[$t10])       EnumerableHashJoin(condition=[AND(=($3, $6), =($5, $11))], joinType=[inner])         Enu [...]
     </test-case>
     
     <test-case sql="SELECT MIN(o.order_id), MIN(o.merchant_id), MIN(m.merchant_name) FROM t_order o INNER JOIN t_merchant m ON o.merchant_id = m.merchant_id WHERE o.user_id = 10 GROUP BY m.merchant_id">
-        <assertion expected-result="EnumerableCalc(expr#0..3=[{inputs}], EXPR$0=[$t1], EXPR$1=[$t2], EXPR$2=[$t3])   EnumerableAggregate(group=[{0}], EXPR$0=[MIN($1)], EXPR$1=[MIN($2)], EXPR$2=[MIN($3)])     EnumerableCalc(expr#0..3=[{inputs}], merchant_id0=[$t2], order_id=[$t0], merchant_id=[$t1], merchant_name=[$t3])       EnumerableHashJoin(condition=[=($1, $2)], joinType=[inner])         EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `merchant_id` FROM `fede [...]
+        <assertion expected-result="EnumerableCalc(expr#0..3=[{inputs}], EXPR$0=[$t1], EXPR$1=[$t2], EXPR$2=[$t3])   EnumerableAggregate(group=[{0}], EXPR$0=[MIN($1)], EXPR$1=[MIN($2)], EXPR$2=[MIN($3)])     EnumerableCalc(expr#0..3=[{inputs}], merchant_id0=[$t2], order_id=[$t0], merchant_id=[$t1], merchant_name=[$t3])       EnumerableHashJoin(condition=[=($1, $2)], joinType=[inner])         EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `merchant_id` FROM `fede [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o CROSS JOIN t_merchant m ON o.merchant_id = m.merchant_id WHERE o.user_id = 10 ORDER BY o.order_id, 7 LIMIT 10, 10">
-        <assertion expected-result="EnumerableLimit(offset=[10], fetch=[10])   EnumerableSort(sort0=[$0], sort1=[$6], dir0=[ASC], dir1=[ASC])     EnumerableHashJoin(condition=[=($3, $6)], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order` WHERE CAST(`user_id` AS SIGNED) = 10])       EnumerableScan(table=[[federate_jdbc, t_merchant]], sql=[SELECT * FROM `federate_jdbc`.`t_merchant`]) " />
+        <assertion expected-result="EnumerableLimit(offset=[10], fetch=[10])   EnumerableSort(sort0=[$0], sort1=[$6], dir0=[ASC], dir1=[ASC])     EnumerableHashJoin(condition=[=($3, $6)], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order` WHERE CAST(`user_id` AS SIGNED) = 10], dynamicParameters=[null])       EnumerableScan(table=[[federate_jdbc, t_merchant]], sql=[SELECT * FROM `federate_jdbc`.`t_merchant`], dynamicParame [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o LEFT JOIN t_merchant m ON o.merchant_id = m.merchant_id WHERE o.user_id = 10 ORDER BY o.order_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$0], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableHashJoin(condition=[=($3, $6)], joinType=[left])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order` WHERE CAST(`user_id` AS SIGNED) = 10])     EnumerableScan(table=[[federate_jdbc, t_merchant]], sql=[SELECT * FROM `federate_jdbc`.`t_merchant`]) " />
+        <assertion expected-result="EnumerableSort(sort0=[$0], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableHashJoin(condition=[=($3, $6)], joinType=[left])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order` WHERE CAST(`user_id` AS SIGNED) = 10], dynamicParameters=[null])     EnumerableScan(table=[[federate_jdbc, t_merchant]], sql=[SELECT * FROM `federate_jdbc`.`t_merchant`], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o RIGHT JOIN t_merchant m ON o.merchant_id = m.merchant_id WHERE m.country_id = 1 ORDER BY o.order_id, m.merchant_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$0], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableHashJoin(condition=[=($3, $6)], joinType=[right])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order`])     EnumerableScan(table=[[federate_jdbc, t_merchant]], sql=[SELECT * FROM `federate_jdbc`.`t_merchant` WHERE CAST(`country_id` AS SIGNED) = 1]) " />
+        <assertion expected-result="EnumerableSort(sort0=[$0], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableHashJoin(condition=[=($3, $6)], joinType=[right])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order`], dynamicParameters=[null])     EnumerableScan(table=[[federate_jdbc, t_merchant]], sql=[SELECT * FROM `federate_jdbc`.`t_merchant` WHERE CAST(`country_id` AS SIGNED) = 1], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o JOIN t_merchant m ON o.merchant_id = m.merchant_id  where o.user_id = 10 OR m.country_id = 1 ORDER BY o.order_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$0], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..13=[{inputs}], proj#0..5=[{exprs}], merchant_id0=[$t7], country_id=[$t8], merchant_name=[$t9], business_code=[$t10], telephone=[$t11], creation_date0=[$t12])     EnumerableHashJoin(condition=[AND(=($3, $7), OR($6, $13))], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id`, `status`, `merchant_id`, `remark`, `cr [...]
+        <assertion expected-result="EnumerableSort(sort0=[$0], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..13=[{inputs}], proj#0..5=[{exprs}], merchant_id0=[$t7], country_id=[$t8], merchant_name=[$t9], business_code=[$t10], telephone=[$t11], creation_date0=[$t12])     EnumerableHashJoin(condition=[AND(=($3, $7), OR($6, $13))], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT `order_id`, `user_id`, `status`, `merchant_id`, `remark`, `cr [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_product p INNER JOIN t_product_detail d ON p.product_id = d.product_id WHERE p.product_id &gt; 10 ORDER BY p.product_id DESC">
-        <assertion expected-result="EnumerableSort(sort0=[$0], dir0=[DESC])   EnumerableHashJoin(condition=[=($0, $7)], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_product]], sql=[SELECT * FROM `federate_jdbc`.`t_product` WHERE `product_id` &gt; 10])     EnumerableScan(table=[[federate_jdbc, t_product_detail]], sql=[SELECT * FROM `federate_jdbc`.`t_product_detail` WHERE `product_id` &gt; 10]) " />
+        <assertion expected-result="EnumerableSort(sort0=[$0], dir0=[DESC])   EnumerableHashJoin(condition=[=($0, $7)], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_product]], sql=[SELECT * FROM `federate_jdbc`.`t_product` WHERE `product_id` &gt; 10], dynamicParameters=[null])     EnumerableScan(table=[[federate_jdbc, t_product_detail]], sql=[SELECT * FROM `federate_jdbc`.`t_product_detail` WHERE `product_id` &gt; 10], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT * FROM t_product p INNER JOIN t_product_detail d ON p.product_id = d.product_id WHERE p.product_id &gt; 10 ORDER BY p.product_id DESC LIMIT 2, 5">
-        <assertion expected-result="EnumerableLimit(offset=[2], fetch=[5])   EnumerableSort(sort0=[$0], dir0=[DESC])     EnumerableHashJoin(condition=[=($0, $7)], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_product]], sql=[SELECT * FROM `federate_jdbc`.`t_product` WHERE `product_id` &gt; 10])       EnumerableScan(table=[[federate_jdbc, t_product_detail]], sql=[SELECT * FROM `federate_jdbc`.`t_product_detail` WHERE `product_id` &gt; 10]) " />
+        <assertion expected-result="EnumerableLimit(offset=[2], fetch=[5])   EnumerableSort(sort0=[$0], dir0=[DESC])     EnumerableHashJoin(condition=[=($0, $7)], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_product]], sql=[SELECT * FROM `federate_jdbc`.`t_product` WHERE `product_id` &gt; 10], dynamicParameters=[null])       EnumerableScan(table=[[federate_jdbc, t_product_detail]], sql=[SELECT * FROM `federate_jdbc`.`t_product_detail` WHERE `product_id` &gt; 10], dynam [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o LEFT JOIN t_merchant m USING(merchant_id) WHERE o.user_id = 10 ORDER BY o.order_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$1], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t3, $t6)], merchant_id=[$t12], order_id=[$t0], user_id=[$t1], status=[$t2], remark=[$t4], creation_date=[$t5], country_id=[$t7], merchant_name=[$t8], business_code=[$t9], telephone=[$t10], creation_date0=[$t11])     EnumerableHashJoin(condition=[=($3, $6)], joinType=[left])       EnumerableScan(table=[[federate_jdbc, t_order]], sql= [...]
+        <assertion expected-result="EnumerableSort(sort0=[$1], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t3, $t6)], merchant_id=[$t12], order_id=[$t0], user_id=[$t1], status=[$t2], remark=[$t4], creation_date=[$t5], country_id=[$t7], merchant_name=[$t8], business_code=[$t9], telephone=[$t10], creation_date0=[$t11])     EnumerableHashJoin(condition=[=($3, $6)], joinType=[left])       EnumerableScan(table=[[federate_jdbc, t_order]], sql= [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o RIGHT JOIN t_merchant m USING(merchant_id) WHERE m.country_id = 1 ORDER BY o.order_id, m.merchant_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$1], sort1=[$11], sort2=[$6], dir0=[ASC], dir1=[ASC], dir2=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t3, $t6)], merchant_id=[$t12], order_id=[$t0], user_id=[$t1], status=[$t2], remark=[$t4], creation_date=[$t5], country_id=[$t7], merchant_name=[$t8], business_code=[$t9], telephone=[$t10], creation_date0=[$t11], merchant_id0=[$t6])     EnumerableHashJoin(condition=[=($3, $6)], joinType=[right])       Enumera [...]
+        <assertion expected-result="EnumerableSort(sort0=[$1], sort1=[$11], sort2=[$6], dir0=[ASC], dir1=[ASC], dir2=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t3, $t6)], merchant_id=[$t12], order_id=[$t0], user_id=[$t1], status=[$t2], remark=[$t4], creation_date=[$t5], country_id=[$t7], merchant_name=[$t8], business_code=[$t9], telephone=[$t10], creation_date0=[$t11], merchant_id0=[$t6])     EnumerableHashJoin(condition=[=($3, $6)], joinType=[right])       Enumera [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o JOIN t_merchant m USING(merchant_id) where o.user_id = 10 OR m.country_id = 1 ORDER BY o.order_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$1], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..13=[{inputs}], expr#14=[COALESCE($t3, $t7)], merchant_id=[$t14], order_id=[$t0], user_id=[$t1], status=[$t2], remark=[$t4], creation_date=[$t5], country_id=[$t8], merchant_name=[$t9], business_code=[$t10], telephone=[$t11], creation_date0=[$t12])     EnumerableHashJoin(condition=[AND(=($3, $7), OR($6, $13))], joinType=[inner])       EnumerableScan(table=[[federate_j [...]
+        <assertion expected-result="EnumerableSort(sort0=[$1], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..13=[{inputs}], expr#14=[COALESCE($t3, $t7)], merchant_id=[$t14], order_id=[$t0], user_id=[$t1], status=[$t2], remark=[$t4], creation_date=[$t5], country_id=[$t8], merchant_name=[$t9], business_code=[$t10], telephone=[$t11], creation_date0=[$t12])     EnumerableHashJoin(condition=[AND(=($3, $7), OR($6, $13))], joinType=[inner])       EnumerableScan(table=[[federate_j [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_product p INNER JOIN t_product_detail d USING(product_id) WHERE p.product_id &gt; 10 ORDER BY p.product_id DESC">
-        <assertion expected-result="EnumerableSort(sort0=[$9], dir0=[DESC])   EnumerableCalc(expr#0..9=[{inputs}], expr#10=[COALESCE($t0, $t7)], product_id=[$t10], product_name=[$t1], category_id=[$t2], price=[$t3], status=[$t4], creation_date=[$t5], detail_id=[$t6], description=[$t8], creation_date0=[$t9], product_id0=[$t0])     EnumerableHashJoin(condition=[=($0, $7)], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_product]], sql=[SELECT * FROM `federate_jdbc`.`t_produ [...]
+        <assertion expected-result="EnumerableSort(sort0=[$9], dir0=[DESC])   EnumerableCalc(expr#0..9=[{inputs}], expr#10=[COALESCE($t0, $t7)], product_id=[$t10], product_name=[$t1], category_id=[$t2], price=[$t3], status=[$t4], creation_date=[$t5], detail_id=[$t6], description=[$t8], creation_date0=[$t9], product_id0=[$t0])     EnumerableHashJoin(condition=[=($0, $7)], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_product]], sql=[SELECT * FROM `federate_jdbc`.`t_produ [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_product p INNER JOIN t_product_detail d USING(product_id) WHERE p.product_id &gt; 10 ORDER BY p.product_id DESC LIMIT 2, 5">
-        <assertion expected-result="EnumerableLimit(offset=[2], fetch=[5])   EnumerableSort(sort0=[$9], dir0=[DESC])     EnumerableCalc(expr#0..9=[{inputs}], expr#10=[COALESCE($t0, $t7)], product_id=[$t10], product_name=[$t1], category_id=[$t2], price=[$t3], status=[$t4], creation_date=[$t5], detail_id=[$t6], description=[$t8], creation_date0=[$t9], product_id0=[$t0])       EnumerableHashJoin(condition=[=($0, $7)], joinType=[inner])         EnumerableScan(table=[[federate_jdbc, t_product [...]
+        <assertion expected-result="EnumerableLimit(offset=[2], fetch=[5])   EnumerableSort(sort0=[$9], dir0=[DESC])     EnumerableCalc(expr#0..9=[{inputs}], expr#10=[COALESCE($t0, $t7)], product_id=[$t10], product_name=[$t1], category_id=[$t2], price=[$t3], status=[$t4], creation_date=[$t5], detail_id=[$t6], description=[$t8], creation_date0=[$t9], product_id0=[$t0])       EnumerableHashJoin(condition=[=($0, $7)], joinType=[inner])         EnumerableScan(table=[[federate_jdbc, t_product [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o NATURAL LEFT JOIN t_merchant m WHERE o.user_id = 10 ORDER BY o.order_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$2], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t3, $t6)], expr#13=[COALESCE($t5, $t11)], merchant_id=[$t12], creation_date=[$t13], order_id=[$t0], user_id=[$t1], status=[$t2], remark=[$t4], country_id=[$t7], merchant_name=[$t8], business_code=[$t9], telephone=[$t10])     EnumerableHashJoin(condition=[AND(=($3, $6), =($5, $11))], joinType=[left])       EnumerableScan(table=[[fede [...]
+        <assertion expected-result="EnumerableSort(sort0=[$2], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t3, $t6)], expr#13=[COALESCE($t5, $t11)], merchant_id=[$t12], creation_date=[$t13], order_id=[$t0], user_id=[$t1], status=[$t2], remark=[$t4], country_id=[$t7], merchant_name=[$t8], business_code=[$t9], telephone=[$t10])     EnumerableHashJoin(condition=[AND(=($3, $6), =($5, $11))], joinType=[left])       EnumerableScan(table=[[fede [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o NATURAL RIGHT JOIN t_merchant m WHERE m.country_id = 1 ORDER BY o.order_id, m.merchant_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$2], sort1=[$10], sort2=[$6], dir0=[ASC], dir1=[ASC], dir2=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t3, $t6)], expr#13=[COALESCE($t5, $t11)], merchant_id=[$t12], creation_date=[$t13], order_id=[$t0], user_id=[$t1], status=[$t2], remark=[$t4], country_id=[$t7], merchant_name=[$t8], business_code=[$t9], telephone=[$t10], merchant_id0=[$t6])     EnumerableHashJoin(condition=[AND(=($3, $6), =($5, $11))], joinT [...]
+        <assertion expected-result="EnumerableSort(sort0=[$2], sort1=[$10], sort2=[$6], dir0=[ASC], dir1=[ASC], dir2=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t3, $t6)], expr#13=[COALESCE($t5, $t11)], merchant_id=[$t12], creation_date=[$t13], order_id=[$t0], user_id=[$t1], status=[$t2], remark=[$t4], country_id=[$t7], merchant_name=[$t8], business_code=[$t9], telephone=[$t10], merchant_id0=[$t6])     EnumerableHashJoin(condition=[AND(=($3, $6), =($5, $11))], joinT [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o NATURAL JOIN t_merchant m where o.user_id = 10 OR m.country_id = 1 ORDER BY o.order_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$2], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..13=[{inputs}], expr#14=[COALESCE($t3, $t7)], expr#15=[COALESCE($t5, $t12)], merchant_id=[$t14], creation_date=[$t15], order_id=[$t0], user_id=[$t1], status=[$t2], remark=[$t4], country_id=[$t8], merchant_name=[$t9], business_code=[$t10], telephone=[$t11])     EnumerableHashJoin(condition=[AND(=($3, $7), =($5, $12), OR($6, $13))], joinType=[inner])       EnumerableSc [...]
+        <assertion expected-result="EnumerableSort(sort0=[$2], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..13=[{inputs}], expr#14=[COALESCE($t3, $t7)], expr#15=[COALESCE($t5, $t12)], merchant_id=[$t14], creation_date=[$t15], order_id=[$t0], user_id=[$t1], status=[$t2], remark=[$t4], country_id=[$t8], merchant_name=[$t9], business_code=[$t10], telephone=[$t11])     EnumerableHashJoin(condition=[AND(=($3, $7), =($5, $12), OR($6, $13))], joinType=[inner])       EnumerableSc [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_product p NATURAL JOIN t_product_detail d WHERE p.product_id &gt; 10 ORDER BY p.product_id DESC">
-        <assertion expected-result="EnumerableSort(sort0=[$8], dir0=[DESC])   EnumerableCalc(expr#0..9=[{inputs}], expr#10=[COALESCE($t0, $t7)], expr#11=[COALESCE($t5, $t9)], product_id=[$t10], creation_date=[$t11], product_name=[$t1], category_id=[$t2], price=[$t3], status=[$t4], detail_id=[$t6], description=[$t8], product_id0=[$t0])     EnumerableHashJoin(condition=[AND(=($0, $7), =($5, $9))], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_product]], sql=[SELECT * FROM [...]
+        <assertion expected-result="EnumerableSort(sort0=[$8], dir0=[DESC])   EnumerableCalc(expr#0..9=[{inputs}], expr#10=[COALESCE($t0, $t7)], expr#11=[COALESCE($t5, $t9)], product_id=[$t10], creation_date=[$t11], product_name=[$t1], category_id=[$t2], price=[$t3], status=[$t4], detail_id=[$t6], description=[$t8], product_id0=[$t0])     EnumerableHashJoin(condition=[AND(=($0, $7), =($5, $9))], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_product]], sql=[SELECT * FROM [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_product p NATURAL JOIN t_product_detail d WHERE p.product_id &gt; 10 ORDER BY p.product_id DESC LIMIT 2, 5">
-        <assertion expected-result="EnumerableLimit(offset=[2], fetch=[5])   EnumerableSort(sort0=[$8], dir0=[DESC])     EnumerableCalc(expr#0..9=[{inputs}], expr#10=[COALESCE($t0, $t7)], expr#11=[COALESCE($t5, $t9)], product_id=[$t10], creation_date=[$t11], product_name=[$t1], category_id=[$t2], price=[$t3], status=[$t4], detail_id=[$t6], description=[$t8], product_id0=[$t0])       EnumerableHashJoin(condition=[AND(=($0, $7), =($5, $9))], joinType=[inner])         EnumerableScan(table=[ [...]
+        <assertion expected-result="EnumerableLimit(offset=[2], fetch=[5])   EnumerableSort(sort0=[$8], dir0=[DESC])     EnumerableCalc(expr#0..9=[{inputs}], expr#10=[COALESCE($t0, $t7)], expr#11=[COALESCE($t5, $t9)], product_id=[$t10], creation_date=[$t11], product_name=[$t1], category_id=[$t2], price=[$t3], status=[$t4], detail_id=[$t6], description=[$t8], product_id0=[$t0])       EnumerableHashJoin(condition=[AND(=($0, $7), =($5, $9))], joinType=[inner])         EnumerableScan(table=[ [...]
     </test-case>
     
     <test-case sql="SELECT MIN(d.detail_id), MIN(p.category_id), p.product_id FROM t_product p INNER JOIN t_product_detail d ON p.product_id = d.product_id WHERE p.product_id = 10 GROUP BY p.product_id">
-        <assertion expected-result="EnumerableCalc(expr#0..2=[{inputs}], EXPR$0=[$t1], EXPR$1=[$t2], product_id=[$t0])   EnumerableAggregate(group=[{0}], EXPR$0=[MIN($1)], EXPR$1=[MIN($2)])     EnumerableCalc(expr#0..3=[{inputs}], product_id=[$t0], detail_id=[$t2], category_id=[$t1])       EnumerableHashJoin(condition=[=($0, $3)], joinType=[inner])         EnumerableScan(table=[[federate_jdbc, t_product]], sql=[SELECT `product_id`, `category_id` FROM `federate_jdbc`.`t_product` WHERE CAS [...]
+        <assertion expected-result="EnumerableCalc(expr#0..2=[{inputs}], EXPR$0=[$t1], EXPR$1=[$t2], product_id=[$t0])   EnumerableAggregate(group=[{0}], EXPR$0=[MIN($1)], EXPR$1=[MIN($2)])     EnumerableCalc(expr#0..3=[{inputs}], product_id=[$t0], detail_id=[$t2], category_id=[$t1])       EnumerableHashJoin(condition=[=($0, $3)], joinType=[inner])         EnumerableScan(table=[[federate_jdbc, t_product]], sql=[SELECT `product_id`, `category_id` FROM `federate_jdbc`.`t_product` WHERE CAS [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_product p CROSS JOIN t_product_detail d ON p.product_id = d.product_id WHERE p.product_id = 10 ORDER BY d.product_id, 7 LIMIT 10, 10">
-        <assertion expected-result="EnumerableLimit(offset=[10], fetch=[10])   EnumerableSort(sort0=[$7], sort1=[$6], dir0=[ASC], dir1=[ASC])     EnumerableHashJoin(condition=[=($0, $7)], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_product]], sql=[SELECT * FROM `federate_jdbc`.`t_product` WHERE CAST(`product_id` AS SIGNED) = 10])       EnumerableScan(table=[[federate_jdbc, t_product_detail]], sql=[SELECT * FROM `federate_jdbc`.`t_product_detail` WHERE CAST(`product_id [...]
+        <assertion expected-result="EnumerableLimit(offset=[10], fetch=[10])   EnumerableSort(sort0=[$7], sort1=[$6], dir0=[ASC], dir1=[ASC])     EnumerableHashJoin(condition=[=($0, $7)], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_product]], sql=[SELECT * FROM `federate_jdbc`.`t_product` WHERE CAST(`product_id` AS SIGNED) = 10], dynamicParameters=[null])       EnumerableScan(table=[[federate_jdbc, t_product_detail]], sql=[SELECT * FROM `federate_jdbc`.`t_product_deta [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_product p LEFT JOIN t_product_detail d ON d.product_id = p.product_id WHERE p.category_id = 10 ORDER BY p.product_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$0], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableHashJoin(condition=[=($0, $7)], joinType=[left])     EnumerableScan(table=[[federate_jdbc, t_product]], sql=[SELECT * FROM `federate_jdbc`.`t_product` WHERE CAST(`category_id` AS SIGNED) = 10])     EnumerableScan(table=[[federate_jdbc, t_product_detail]], sql=[SELECT * FROM `federate_jdbc`.`t_product_detail`]) " />
+        <assertion expected-result="EnumerableSort(sort0=[$0], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableHashJoin(condition=[=($0, $7)], joinType=[left])     EnumerableScan(table=[[federate_jdbc, t_product]], sql=[SELECT * FROM `federate_jdbc`.`t_product` WHERE CAST(`category_id` AS SIGNED) = 10], dynamicParameters=[null])     EnumerableScan(table=[[federate_jdbc, t_product_detail]], sql=[SELECT * FROM `federate_jdbc`.`t_product_detail`], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT * FROM t_product p RIGHT JOIN t_product_detail d ON d.product_id = p.product_id WHERE d.detail_id = 10 ORDER BY d.product_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$7], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableHashJoin(condition=[=($0, $7)], joinType=[right])     EnumerableScan(table=[[federate_jdbc, t_product]], sql=[SELECT * FROM `federate_jdbc`.`t_product`])     EnumerableScan(table=[[federate_jdbc, t_product_detail]], sql=[SELECT * FROM `federate_jdbc`.`t_product_detail` WHERE CAST(`detail_id` AS SIGNED) = 10]) " />
+        <assertion expected-result="EnumerableSort(sort0=[$7], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableHashJoin(condition=[=($0, $7)], joinType=[right])     EnumerableScan(table=[[federate_jdbc, t_product]], sql=[SELECT * FROM `federate_jdbc`.`t_product`], dynamicParameters=[null])     EnumerableScan(table=[[federate_jdbc, t_product_detail]], sql=[SELECT * FROM `federate_jdbc`.`t_product_detail` WHERE CAST(`detail_id` AS SIGNED) = 10], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT * FROM t_product p JOIN t_product_detail d ON d.product_id = p.product_id WHERE d.detail_id = 10 OR p.category_id = 10 ORDER BY d.product_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$7], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], proj#0..5=[{exprs}], detail_id=[$t7], product_id0=[$t8], description=[$t9], creation_date0=[$t10])     EnumerableHashJoin(condition=[AND(=($0, $8), OR($11, $6))], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_product]], sql=[SELECT `product_id`, `product_name`, `category_id`, `price`, `status`, `creation_date`, CAST(`category_id` AS  [...]
+        <assertion expected-result="EnumerableSort(sort0=[$7], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], proj#0..5=[{exprs}], detail_id=[$t7], product_id0=[$t8], description=[$t9], creation_date0=[$t10])     EnumerableHashJoin(condition=[AND(=($0, $8), OR($11, $6))], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_product]], sql=[SELECT `product_id`, `product_name`, `category_id`, `price`, `status`, `creation_date`, CAST(`category_id` AS  [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_product p LEFT JOIN t_product_detail d USING(product_id) WHERE p.category_id = 10 ORDER BY p.product_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$9], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..9=[{inputs}], expr#10=[COALESCE($t0, $t7)], product_id=[$t10], product_name=[$t1], category_id=[$t2], price=[$t3], status=[$t4], creation_date=[$t5], detail_id=[$t6], description=[$t8], creation_date0=[$t9], product_id0=[$t0])     EnumerableHashJoin(condition=[=($0, $7)], joinType=[left])       EnumerableScan(table=[[federate_jdbc, t_product]], sql=[SELECT * FROM `f [...]
+        <assertion expected-result="EnumerableSort(sort0=[$9], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..9=[{inputs}], expr#10=[COALESCE($t0, $t7)], product_id=[$t10], product_name=[$t1], category_id=[$t2], price=[$t3], status=[$t4], creation_date=[$t5], detail_id=[$t6], description=[$t8], creation_date0=[$t9], product_id0=[$t0])     EnumerableHashJoin(condition=[=($0, $7)], joinType=[left])       EnumerableScan(table=[[federate_jdbc, t_product]], sql=[SELECT * FROM `f [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_product p RIGHT JOIN t_product_detail d USING(product_id) WHERE d.detail_id = 10 ORDER BY d.product_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$9], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..9=[{inputs}], expr#10=[COALESCE($t0, $t7)], product_id=[$t10], product_name=[$t1], category_id=[$t2], price=[$t3], status=[$t4], creation_date=[$t5], detail_id=[$t6], description=[$t8], creation_date0=[$t9], product_id0=[$t7])     EnumerableHashJoin(condition=[=($0, $7)], joinType=[right])       EnumerableScan(table=[[federate_jdbc, t_product]], sql=[SELECT * FROM ` [...]
+        <assertion expected-result="EnumerableSort(sort0=[$9], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..9=[{inputs}], expr#10=[COALESCE($t0, $t7)], product_id=[$t10], product_name=[$t1], category_id=[$t2], price=[$t3], status=[$t4], creation_date=[$t5], detail_id=[$t6], description=[$t8], creation_date0=[$t9], product_id0=[$t7])     EnumerableHashJoin(condition=[=($0, $7)], joinType=[right])       EnumerableScan(table=[[federate_jdbc, t_product]], sql=[SELECT * FROM ` [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_product p JOIN t_product_detail d USING(product_id) WHERE d.detail_id = 10 OR p.category_id = 10 ORDER BY d.product_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$9], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t0, $t8)], product_id=[$t12], product_name=[$t1], category_id=[$t2], price=[$t3], status=[$t4], creation_date=[$t5], detail_id=[$t7], description=[$t9], creation_date0=[$t10], product_id0=[$t8])     EnumerableHashJoin(condition=[AND(=($0, $8), OR($11, $6))], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_product]],  [...]
+        <assertion expected-result="EnumerableSort(sort0=[$9], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t0, $t8)], product_id=[$t12], product_name=[$t1], category_id=[$t2], price=[$t3], status=[$t4], creation_date=[$t5], detail_id=[$t7], description=[$t9], creation_date0=[$t10], product_id0=[$t8])     EnumerableHashJoin(condition=[AND(=($0, $8), OR($11, $6))], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_product]],  [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_product p NATURAL LEFT JOIN t_product_detail d WHERE p.category_id = 10 ORDER BY p.product_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$8], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..9=[{inputs}], expr#10=[COALESCE($t0, $t7)], expr#11=[COALESCE($t5, $t9)], product_id=[$t10], creation_date=[$t11], product_name=[$t1], category_id=[$t2], price=[$t3], status=[$t4], detail_id=[$t6], description=[$t8], product_id0=[$t0])     EnumerableHashJoin(condition=[AND(=($0, $7), =($5, $9))], joinType=[left])       EnumerableScan(table=[[federate_jdbc, t_product [...]
+        <assertion expected-result="EnumerableSort(sort0=[$8], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..9=[{inputs}], expr#10=[COALESCE($t0, $t7)], expr#11=[COALESCE($t5, $t9)], product_id=[$t10], creation_date=[$t11], product_name=[$t1], category_id=[$t2], price=[$t3], status=[$t4], detail_id=[$t6], description=[$t8], product_id0=[$t0])     EnumerableHashJoin(condition=[AND(=($0, $7), =($5, $9))], joinType=[left])       EnumerableScan(table=[[federate_jdbc, t_product [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_product p NATURAL RIGHT JOIN t_product_detail d WHERE d.detail_id = 10 ORDER BY d.product_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$8], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..9=[{inputs}], expr#10=[COALESCE($t0, $t7)], expr#11=[COALESCE($t5, $t9)], product_id=[$t10], creation_date=[$t11], product_name=[$t1], category_id=[$t2], price=[$t3], status=[$t4], detail_id=[$t6], description=[$t8], product_id0=[$t7])     EnumerableHashJoin(condition=[AND(=($0, $7), =($5, $9))], joinType=[right])       EnumerableScan(table=[[federate_jdbc, t_produc [...]
+        <assertion expected-result="EnumerableSort(sort0=[$8], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..9=[{inputs}], expr#10=[COALESCE($t0, $t7)], expr#11=[COALESCE($t5, $t9)], product_id=[$t10], creation_date=[$t11], product_name=[$t1], category_id=[$t2], price=[$t3], status=[$t4], detail_id=[$t6], description=[$t8], product_id0=[$t7])     EnumerableHashJoin(condition=[AND(=($0, $7), =($5, $9))], joinType=[right])       EnumerableScan(table=[[federate_jdbc, t_produc [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_product p NATURAL JOIN t_product_detail d WHERE d.detail_id = 10 OR p.category_id = 10 ORDER BY d.product_id, 7">
-        <assertion expected-result="EnumerableSort(sort0=[$8], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t0, $t8)], expr#13=[COALESCE($t5, $t10)], product_id=[$t12], creation_date=[$t13], product_name=[$t1], category_id=[$t2], price=[$t3], status=[$t4], detail_id=[$t7], description=[$t9], product_id0=[$t8])     EnumerableHashJoin(condition=[AND(=($0, $8), =($5, $10), OR($11, $6))], joinType=[inner])       EnumerableScan(table=[[federat [...]
+        <assertion expected-result="EnumerableSort(sort0=[$8], sort1=[$6], dir0=[ASC], dir1=[ASC])   EnumerableCalc(expr#0..11=[{inputs}], expr#12=[COALESCE($t0, $t8)], expr#13=[COALESCE($t5, $t10)], product_id=[$t12], creation_date=[$t13], product_name=[$t1], category_id=[$t2], price=[$t3], status=[$t4], detail_id=[$t7], description=[$t9], product_id0=[$t8])     EnumerableHashJoin(condition=[AND(=($0, $8), =($5, $10), OR($11, $6))], joinType=[inner])       EnumerableScan(table=[[federat [...]
     </test-case>
     
     <test-case sql="SELECT * FROM (SELECT o.* FROM t_order o WHERE o.user_id IN (10, 11, 12)) AS t, t_order_item i WHERE t.order_id = i.order_id AND t.order_id &gt; 10 ORDER BY item_id">
-        <assertion expected-result="EnumerableSort(sort0=[$6], dir0=[ASC])   EnumerableHashJoin(condition=[=($0, $7)], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order` WHERE `user_id` IN (10, 11, 12) AND `order_id` &gt; 10])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item` WHERE `order_id` &gt; 10]) " />
+        <assertion expected-result="EnumerableSort(sort0=[$6], dir0=[ASC])   EnumerableHashJoin(condition=[=($0, $7)], joinType=[inner])     EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order` WHERE `user_id` IN (10, 11, 12) AND `order_id` &gt; 10], dynamicParameters=[null])     EnumerableScan(table=[[federate_jdbc, t_order_item]], sql=[SELECT * FROM `federate_jdbc`.`t_order_item` WHERE `order_id` &gt; 10], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT * FROM t_order o WHERE o.order_id IN (SELECT i.order_id FROM t_order_item i INNER JOIN t_product p ON i.product_id = p.product_id WHERE p.product_id = 10) ORDER BY order_id">
-        <assertion expected-result="EnumerableSort(sort0=[$0], dir0=[ASC])   EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order` WHERE `order_id` IN (SELECT `t_order_item`.`order_id` FROM `federate_jdbc`.`t_order_item` INNER JOIN `federate_jdbc`.`t_product` ON `t_order_item`.`product_id` = `t_product`.`product_id` WHERE CAST(`t_product`.`product_id` AS SIGNED) = 10)]) " />
+        <assertion expected-result="EnumerableSort(sort0=[$0], dir0=[ASC])   EnumerableCalc(expr#0..6=[{inputs}], proj#0..5=[{exprs}])     EnumerableHashJoin(condition=[=($0, $6)], joinType=[inner])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order`], dynamicParameters=[null])       EnumerableAggregate(group=[{0}])         EnumerableCalc(expr#0..2=[{inputs}], order_id=[$t0])           EnumerableHashJoin(condition=[=($1, $2)], joinType=[inn [...]
     </test-case>
     
     <test-case sql="SELECT MAX(p.price) AS max_price, MIN(p.price) AS min_price, SUM(p.price) AS sum_price, AVG(p.price) AS avg_price, COUNT(1) AS count FROM t_order o INNER JOIN t_order_item i ON o.order_id = i.order_id INNER JOIN t_product p ON i.product_id = p.product_id GROUP BY o.order_id HAVING SUM(p.price) &gt; 10 ORDER BY max_price">
-        <assertion expected-result="EnumerableSort(sort0=[$0], dir0=[ASC])   EnumerableCalc(expr#0..5=[{inputs}], expr#6=[0], expr#7=[=($t4, $t6)], expr#8=[null:JavaType(class java.math.BigDecimal)], expr#9=[CASE($t7, $t8, $t3)], expr#10=[/($t9, $t4)], expr#11=[CAST($t10):JavaType(class java.math.BigDecimal)], expr#12=[10], expr#13=[&gt;($t9, $t12)], max_price=[$t1], min_price=[$t2], sum_price=[$t9], avg_price=[$t11], count=[$t5], $condition=[$t13])     EnumerableAggregate(group=[{0}], m [...]
+        <assertion expected-result="EnumerableSort(sort0=[$0], dir0=[ASC])   EnumerableCalc(expr#0..5=[{inputs}], expr#6=[0], expr#7=[=($t4, $t6)], expr#8=[null:JavaType(class java.math.BigDecimal)], expr#9=[CASE($t7, $t8, $t3)], expr#10=[/($t9, $t4)], expr#11=[CAST($t10):JavaType(class java.math.BigDecimal)], expr#12=[10], expr#13=[>($t9, $t12)], max_price=[$t1], min_price=[$t2], sum_price=[$t9], avg_price=[$t11], count=[$t5], $condition=[$t13])     EnumerableAggregate(group=[{0}], max_ [...]
     </test-case>
     
     <test-case sql="SELECT * FROM t_order UNION ALL SELECT * FROM t_order ORDER BY order_id LIMIT 5, 5">
-        <assertion expected-result="EnumerableLimit(offset=[5], fetch=[5])   EnumerableSort(sort0=[$0], dir0=[ASC])     EnumerableUnion(all=[true])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order`])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order`]) " />
+        <assertion expected-result="EnumerableLimit(offset=[5], fetch=[5])   EnumerableSort(sort0=[$0], dir0=[ASC])     EnumerableUnion(all=[true])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order`], dynamicParameters=[null])       EnumerableScan(table=[[federate_jdbc, t_order]], sql=[SELECT * FROM `federate_jdbc`.`t_order`], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT * FROM multi_types_first first JOIN multi_types_second second ON first.id = second.id WHERE second.tiny_int_column = 1">
-        <assertion expected-result="EnumerableHashJoin(condition=[=($0, $22)], joinType=[inner])   EnumerableScan(table=[[federate_jdbc, multi_types_first]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_first`])   EnumerableScan(table=[[federate_jdbc, multi_types_second]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_second` WHERE CAST(`tiny_int_column` AS SIGNED) = 1]) " />
+        <assertion expected-result="EnumerableHashJoin(condition=[=($0, $22)], joinType=[inner])   EnumerableScan(table=[[federate_jdbc, multi_types_first]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_first`], dynamicParameters=[null])   EnumerableScan(table=[[federate_jdbc, multi_types_second]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_second` WHERE CAST(`tiny_int_column` AS SIGNED) = 1], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT * FROM multi_types_first first JOIN multi_types_second second ON first.id = second.id WHERE second.small_int_column = 1">
-        <assertion expected-result="EnumerableHashJoin(condition=[=($0, $22)], joinType=[inner])   EnumerableScan(table=[[federate_jdbc, multi_types_first]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_first`])   EnumerableScan(table=[[federate_jdbc, multi_types_second]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_second` WHERE CAST(`small_int_column` AS SIGNED) = 1]) " />
+        <assertion expected-result="EnumerableHashJoin(condition=[=($0, $22)], joinType=[inner])   EnumerableScan(table=[[federate_jdbc, multi_types_first]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_first`], dynamicParameters=[null])   EnumerableScan(table=[[federate_jdbc, multi_types_second]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_second` WHERE CAST(`small_int_column` AS SIGNED) = 1], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT * FROM multi_types_first first JOIN multi_types_second second ON first.id = second.id WHERE second.integer_column = 1">
-        <assertion expected-result="EnumerableHashJoin(condition=[=($0, $22)], joinType=[inner])   EnumerableScan(table=[[federate_jdbc, multi_types_first]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_first`])   EnumerableScan(table=[[federate_jdbc, multi_types_second]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_second` WHERE CAST(`integer_column` AS SIGNED) = 1]) " />
+        <assertion expected-result="EnumerableHashJoin(condition=[=($0, $22)], joinType=[inner])   EnumerableScan(table=[[federate_jdbc, multi_types_first]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_first`], dynamicParameters=[null])   EnumerableScan(table=[[federate_jdbc, multi_types_second]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_second` WHERE CAST(`integer_column` AS SIGNED) = 1], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT * FROM multi_types_first first JOIN multi_types_second second ON first.id = second.id WHERE second.big_int_column = 1">
-        <assertion expected-result="EnumerableHashJoin(condition=[=($0, $22)], joinType=[inner])   EnumerableScan(table=[[federate_jdbc, multi_types_first]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_first`])   EnumerableScan(table=[[federate_jdbc, multi_types_second]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_second` WHERE CAST(`big_int_column` AS SIGNED) = 1]) " />
+        <assertion expected-result="EnumerableHashJoin(condition=[=($0, $22)], joinType=[inner])   EnumerableScan(table=[[federate_jdbc, multi_types_first]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_first`], dynamicParameters=[null])   EnumerableScan(table=[[federate_jdbc, multi_types_second]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_second` WHERE CAST(`big_int_column` AS SIGNED) = 1], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT * FROM multi_types_first first JOIN multi_types_second second ON first.id = second.id WHERE second.char_column = '1'">
-        <assertion expected-result="EnumerableHashJoin(condition=[=($0, $22)], joinType=[inner])   EnumerableScan(table=[[federate_jdbc, multi_types_first]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_first`])   EnumerableScan(table=[[federate_jdbc, multi_types_second]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_second` WHERE `char_column` = '1']) " />
+        <assertion expected-result="EnumerableHashJoin(condition=[=($0, $22)], joinType=[inner])   EnumerableScan(table=[[federate_jdbc, multi_types_first]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_first`], dynamicParameters=[null])   EnumerableScan(table=[[federate_jdbc, multi_types_second]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_second` WHERE `char_column` = '1'], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT * FROM multi_types_first first JOIN multi_types_second second ON first.id = second.id WHERE second.varchar_column = '1'">
-        <assertion expected-result="EnumerableHashJoin(condition=[=($0, $22)], joinType=[inner])   EnumerableScan(table=[[federate_jdbc, multi_types_first]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_first`])   EnumerableScan(table=[[federate_jdbc, multi_types_second]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_second` WHERE `varchar_column` = '1']) " />
+        <assertion expected-result="EnumerableHashJoin(condition=[=($0, $22)], joinType=[inner])   EnumerableScan(table=[[federate_jdbc, multi_types_first]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_first`], dynamicParameters=[null])   EnumerableScan(table=[[federate_jdbc, multi_types_second]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_second` WHERE `varchar_column` = '1'], dynamicParameters=[null]) " />
     </test-case>
     
     <test-case sql="SELECT * FROM multi_types_first first JOIN multi_types_second second ON first.id = second.id WHERE second.long_varchar_column = '1'">
-        <assertion expected-result="EnumerableHashJoin(condition=[=($0, $22)], joinType=[inner])   EnumerableScan(table=[[federate_jdbc, multi_types_first]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_first`])   EnumerableScan(table=[[federate_jdbc, multi_types_second]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_second` WHERE `long_varchar_column` = '1']) " />
+        <assertion expected-result="EnumerableHashJoin(condition=[=($0, $22)], joinType=[inner])   EnumerableScan(table=[[federate_jdbc, multi_types_first]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_first`], dynamicParameters=[null])   EnumerableScan(table=[[federate_jdbc, multi_types_second]], sql=[SELECT * FROM `federate_jdbc`.`multi_types_second` WHERE `long_varchar_column` = '1'], dynamicParameters=[null]) " />
     </test-case>
 </test-cases>
diff --git a/test/e2e/sql/src/test/resources/cases/rql/dataset/db/mysql/show_storage_units.xml b/test/e2e/sql/src/test/resources/cases/rql/dataset/db/mysql/show_storage_units.xml
index a288cf4bf6d..ed7e2a3526c 100644
--- a/test/e2e/sql/src/test/resources/cases/rql/dataset/db/mysql/show_storage_units.xml
+++ b/test/e2e/sql/src/test/resources/cases/rql/dataset/db/mysql/show_storage_units.xml
@@ -30,14 +30,14 @@
         <column name="read_only" />
         <column name="other_attributes" />
     </metadata>
-    <row values="ds_0| MySQL| mysql.db.host| 3306| db_0| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&quot;cacheServerConfiguration&quot;&#58;&quot;true&quot;&#44;&quot;elideSetAutoCommits&quot;&#58;&quot;true&quot;&#44;&quot;useServerPrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;cachePrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;rewriteBatchedStatements&quot;&#58;&quot;true&quot;&#44;&quot;cacheResultSetMetadata&quot;&#58;&quot;false&quot;&#44; [...]
-    <row values="ds_1| MySQL| mysql.db.host| 3306| db_1| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&quot;cacheServerConfiguration&quot;&#58;&quot;true&quot;&#44;&quot;elideSetAutoCommits&quot;&#58;&quot;true&quot;&#44;&quot;useServerPrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;cachePrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;rewriteBatchedStatements&quot;&#58;&quot;true&quot;&#44;&quot;cacheResultSetMetadata&quot;&#58;&quot;false&quot;&#44; [...]
-    <row values="ds_2| MySQL| mysql.db.host| 3306| db_2| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&quot;cacheServerConfiguration&quot;&#58;&quot;true&quot;&#44;&quot;elideSetAutoCommits&quot;&#58;&quot;true&quot;&#44;&quot;useServerPrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;cachePrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;rewriteBatchedStatements&quot;&#58;&quot;true&quot;&#44;&quot;cacheResultSetMetadata&quot;&#58;&quot;false&quot;&#44; [...]
-    <row values="ds_3| MySQL| mysql.db.host| 3306| db_3| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&quot;cacheServerConfiguration&quot;&#58;&quot;true&quot;&#44;&quot;elideSetAutoCommits&quot;&#58;&quot;true&quot;&#44;&quot;useServerPrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;cachePrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;rewriteBatchedStatements&quot;&#58;&quot;true&quot;&#44;&quot;cacheResultSetMetadata&quot;&#58;&quot;false&quot;&#44; [...]
-    <row values="ds_4| MySQL| mysql.db.host| 3306| db_4| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&quot;cacheServerConfiguration&quot;&#58;&quot;true&quot;&#44;&quot;elideSetAutoCommits&quot;&#58;&quot;true&quot;&#44;&quot;useServerPrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;cachePrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;rewriteBatchedStatements&quot;&#58;&quot;true&quot;&#44;&quot;cacheResultSetMetadata&quot;&#58;&quot;false&quot;&#44; [...]
-    <row values="ds_5| MySQL| mysql.db.host| 3306| db_5| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&quot;cacheServerConfiguration&quot;&#58;&quot;true&quot;&#44;&quot;elideSetAutoCommits&quot;&#58;&quot;true&quot;&#44;&quot;useServerPrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;cachePrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;rewriteBatchedStatements&quot;&#58;&quot;true&quot;&#44;&quot;cacheResultSetMetadata&quot;&#58;&quot;false&quot;&#44; [...]
-    <row values="ds_6| MySQL| mysql.db.host| 3306| db_6| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&quot;cacheServerConfiguration&quot;&#58;&quot;true&quot;&#44;&quot;elideSetAutoCommits&quot;&#58;&quot;true&quot;&#44;&quot;useServerPrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;cachePrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;rewriteBatchedStatements&quot;&#58;&quot;true&quot;&#44;&quot;cacheResultSetMetadata&quot;&#58;&quot;false&quot;&#44; [...]
-    <row values="ds_7| MySQL| mysql.db.host| 3306| db_7| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&quot;cacheServerConfiguration&quot;&#58;&quot;true&quot;&#44;&quot;elideSetAutoCommits&quot;&#58;&quot;true&quot;&#44;&quot;useServerPrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;cachePrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;rewriteBatchedStatements&quot;&#58;&quot;true&quot;&#44;&quot;cacheResultSetMetadata&quot;&#58;&quot;false&quot;&#44; [...]
-    <row values="ds_8| MySQL| mysql.db.host| 3306| db_8| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&quot;cacheServerConfiguration&quot;&#58;&quot;true&quot;&#44;&quot;elideSetAutoCommits&quot;&#58;&quot;true&quot;&#44;&quot;useServerPrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;cachePrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;rewriteBatchedStatements&quot;&#58;&quot;true&quot;&#44;&quot;cacheResultSetMetadata&quot;&#58;&quot;false&quot;&#44; [...]
-    <row values="ds_9| MySQL| mysql.db.host| 3306| db_9| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&quot;cacheServerConfiguration&quot;&#58;&quot;true&quot;&#44;&quot;elideSetAutoCommits&quot;&#58;&quot;true&quot;&#44;&quot;useServerPrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;cachePrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;rewriteBatchedStatements&quot;&#58;&quot;true&quot;&#44;&quot;cacheResultSetMetadata&quot;&#58;&quot;false&quot;&#44; [...]
+    <row values="ds_0| MySQL| mysql.db.host| 3306| db_0| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&quot;cacheServerConfiguration&quot;&#58;&quot;true&quot;&#44;&quot;elideSetAutoCommits&quot;&#58;&quot;true&quot;&#44;&quot;useServerPrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;cachePrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;rewriteBatchedStatements&quot;&#58;&quot;true&quot;&#44;&quot;cacheResultSetMetadata&quot;&#58;&quot;false&quot;&#44 [...]
+    <row values="ds_1| MySQL| mysql.db.host| 3306| db_1| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&quot;cacheServerConfiguration&quot;&#58;&quot;true&quot;&#44;&quot;elideSetAutoCommits&quot;&#58;&quot;true&quot;&#44;&quot;useServerPrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;cachePrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;rewriteBatchedStatements&quot;&#58;&quot;true&quot;&#44;&quot;cacheResultSetMetadata&quot;&#58;&quot;false&quot;&#44 [...]
+    <row values="ds_2| MySQL| mysql.db.host| 3306| db_2| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&quot;cacheServerConfiguration&quot;&#58;&quot;true&quot;&#44;&quot;elideSetAutoCommits&quot;&#58;&quot;true&quot;&#44;&quot;useServerPrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;cachePrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;rewriteBatchedStatements&quot;&#58;&quot;true&quot;&#44;&quot;cacheResultSetMetadata&quot;&#58;&quot;false&quot;&#44 [...]
+    <row values="ds_3| MySQL| mysql.db.host| 3306| db_3| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&quot;cacheServerConfiguration&quot;&#58;&quot;true&quot;&#44;&quot;elideSetAutoCommits&quot;&#58;&quot;true&quot;&#44;&quot;useServerPrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;cachePrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;rewriteBatchedStatements&quot;&#58;&quot;true&quot;&#44;&quot;cacheResultSetMetadata&quot;&#58;&quot;false&quot;&#44 [...]
+    <row values="ds_4| MySQL| mysql.db.host| 3306| db_4| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&quot;cacheServerConfiguration&quot;&#58;&quot;true&quot;&#44;&quot;elideSetAutoCommits&quot;&#58;&quot;true&quot;&#44;&quot;useServerPrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;cachePrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;rewriteBatchedStatements&quot;&#58;&quot;true&quot;&#44;&quot;cacheResultSetMetadata&quot;&#58;&quot;false&quot;&#44 [...]
+    <row values="ds_5| MySQL| mysql.db.host| 3306| db_5| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&quot;cacheServerConfiguration&quot;&#58;&quot;true&quot;&#44;&quot;elideSetAutoCommits&quot;&#58;&quot;true&quot;&#44;&quot;useServerPrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;cachePrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;rewriteBatchedStatements&quot;&#58;&quot;true&quot;&#44;&quot;cacheResultSetMetadata&quot;&#58;&quot;false&quot;&#44 [...]
+    <row values="ds_6| MySQL| mysql.db.host| 3306| db_6| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&quot;cacheServerConfiguration&quot;&#58;&quot;true&quot;&#44;&quot;elideSetAutoCommits&quot;&#58;&quot;true&quot;&#44;&quot;useServerPrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;cachePrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;rewriteBatchedStatements&quot;&#58;&quot;true&quot;&#44;&quot;cacheResultSetMetadata&quot;&#58;&quot;false&quot;&#44 [...]
+    <row values="ds_7| MySQL| mysql.db.host| 3306| db_7| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&quot;cacheServerConfiguration&quot;&#58;&quot;true&quot;&#44;&quot;elideSetAutoCommits&quot;&#58;&quot;true&quot;&#44;&quot;useServerPrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;cachePrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;rewriteBatchedStatements&quot;&#58;&quot;true&quot;&#44;&quot;cacheResultSetMetadata&quot;&#58;&quot;false&quot;&#44 [...]
+    <row values="ds_8| MySQL| mysql.db.host| 3306| db_8| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&quot;cacheServerConfiguration&quot;&#58;&quot;true&quot;&#44;&quot;elideSetAutoCommits&quot;&#58;&quot;true&quot;&#44;&quot;useServerPrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;cachePrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;rewriteBatchedStatements&quot;&#58;&quot;true&quot;&#44;&quot;cacheResultSetMetadata&quot;&#58;&quot;false&quot;&#44 [...]
+    <row values="ds_9| MySQL| mysql.db.host| 3306| db_9| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&quot;cacheServerConfiguration&quot;&#58;&quot;true&quot;&#44;&quot;elideSetAutoCommits&quot;&#58;&quot;true&quot;&#44;&quot;useServerPrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;cachePrepStmts&quot;&#58;&quot;true&quot;&#44;&quot;rewriteBatchedStatements&quot;&#58;&quot;true&quot;&#44;&quot;cacheResultSetMetadata&quot;&#58;&quot;false&quot;&#44 [...]
 </dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rql/dataset/db/opengauss/show_storage_units.xml b/test/e2e/sql/src/test/resources/cases/rql/dataset/db/opengauss/show_storage_units.xml
index 53a30f86438..b0dd5ea2d9d 100644
--- a/test/e2e/sql/src/test/resources/cases/rql/dataset/db/opengauss/show_storage_units.xml
+++ b/test/e2e/sql/src/test/resources/cases/rql/dataset/db/opengauss/show_storage_units.xml
@@ -30,14 +30,14 @@
         <column name="read_only" />
         <column name="other_attributes" />
     </metadata>
-    <row values="ds_0| openGauss| opengauss.db.host| 5432| db_0| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommit& [...]
-    <row values="ds_1| openGauss| opengauss.db.host| 5432| db_1| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommit& [...]
-    <row values="ds_2| openGauss| opengauss.db.host| 5432| db_2| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommit& [...]
-    <row values="ds_3| openGauss| opengauss.db.host| 5432| db_3| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommit& [...]
-    <row values="ds_4| openGauss| opengauss.db.host| 5432| db_4| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommit& [...]
-    <row values="ds_5| openGauss| opengauss.db.host| 5432| db_5| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommit& [...]
-    <row values="ds_6| openGauss| opengauss.db.host| 5432| db_6| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommit& [...]
-    <row values="ds_7| openGauss| opengauss.db.host| 5432| db_7| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommit& [...]
-    <row values="ds_8| openGauss| opengauss.db.host| 5432| db_8| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommit& [...]
-    <row values="ds_9| openGauss| opengauss.db.host| 5432| db_9| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommit& [...]
+    <row values="ds_0| openGauss| opengauss.db.host| 5432| db_0| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommit [...]
+    <row values="ds_1| openGauss| opengauss.db.host| 5432| db_1| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommit [...]
+    <row values="ds_2| openGauss| opengauss.db.host| 5432| db_2| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommit [...]
+    <row values="ds_3| openGauss| opengauss.db.host| 5432| db_3| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommit [...]
+    <row values="ds_4| openGauss| opengauss.db.host| 5432| db_4| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommit [...]
+    <row values="ds_5| openGauss| opengauss.db.host| 5432| db_5| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommit [...]
+    <row values="ds_6| openGauss| opengauss.db.host| 5432| db_6| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommit [...]
+    <row values="ds_7| openGauss| opengauss.db.host| 5432| db_7| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommit [...]
+    <row values="ds_8| openGauss| opengauss.db.host| 5432| db_8| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommit [...]
+    <row values="ds_9| openGauss| opengauss.db.host| 5432| db_9| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommit [...]
 </dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rql/dataset/db/postgresql/show_storage_units.xml b/test/e2e/sql/src/test/resources/cases/rql/dataset/db/postgresql/show_storage_units.xml
index 36e2e26bc10..4c96ba3d1d4 100644
--- a/test/e2e/sql/src/test/resources/cases/rql/dataset/db/postgresql/show_storage_units.xml
+++ b/test/e2e/sql/src/test/resources/cases/rql/dataset/db/postgresql/show_storage_units.xml
@@ -30,14 +30,14 @@
         <column name="read_only" />
         <column name="other_attributes" />
     </metadata>
-    <row values="ds_0| PostgreSQL| postgresql.db.host| 5432| db_0| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommi [...]
-    <row values="ds_1| PostgreSQL| postgresql.db.host| 5432| db_1| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommi [...]
-    <row values="ds_2| PostgreSQL| postgresql.db.host| 5432| db_2| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommi [...]
-    <row values="ds_3| PostgreSQL| postgresql.db.host| 5432| db_3| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommi [...]
-    <row values="ds_4| PostgreSQL| postgresql.db.host| 5432| db_4| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommi [...]
-    <row values="ds_5| PostgreSQL| postgresql.db.host| 5432| db_5| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommi [...]
-    <row values="ds_6| PostgreSQL| postgresql.db.host| 5432| db_6| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommi [...]
-    <row values="ds_7| PostgreSQL| postgresql.db.host| 5432| db_7| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommi [...]
-    <row values="ds_8| PostgreSQL| postgresql.db.host| 5432| db_8| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommi [...]
-    <row values="ds_9| PostgreSQL| postgresql.db.host| 5432| db_9| 30000| 60000| 1800000| 2| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoCommi [...]
+    <row values="ds_0| PostgreSQL| postgresql.db.host| 5432| db_0| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoComm [...]
+    <row values="ds_1| PostgreSQL| postgresql.db.host| 5432| db_1| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoComm [...]
+    <row values="ds_2| PostgreSQL| postgresql.db.host| 5432| db_2| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoComm [...]
+    <row values="ds_3| PostgreSQL| postgresql.db.host| 5432| db_3| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoComm [...]
+    <row values="ds_4| PostgreSQL| postgresql.db.host| 5432| db_4| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoComm [...]
+    <row values="ds_5| PostgreSQL| postgresql.db.host| 5432| db_5| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoComm [...]
+    <row values="ds_6| PostgreSQL| postgresql.db.host| 5432| db_6| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoComm [...]
+    <row values="ds_7| PostgreSQL| postgresql.db.host| 5432| db_7| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoComm [...]
+    <row values="ds_8| PostgreSQL| postgresql.db.host| 5432| db_8| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoComm [...]
+    <row values="ds_9| PostgreSQL| postgresql.db.host| 5432| db_9| 30000| 60000| 1800000| 50| 2| false| &#123;&quot;dataSourceProperties&quot;&#58;&#123;&#125;&#44;&quot;healthCheckProperties&quot;&#58;&#123;&#125;&#44;&quot;initializationFailTimeout&quot;&#58;1&#44;&quot;validationTimeout&quot;&#58;5000&#44;&quot;keepaliveTime&quot;&#58;0&#44;&quot;leakDetectionThreshold&quot;&#58;0&#44;&quot;registerMbeans&quot;&#58;false&#44;&quot;allowPoolSuspension&quot;&#58;false&#44;&quot;autoComm [...]
 </dataset>
diff --git a/test/e2e/sql/src/test/resources/env/scenario/db/proxy/conf/mysql/config-db.yaml b/test/e2e/sql/src/test/resources/env/scenario/db/proxy/conf/mysql/config-db.yaml
index 2f2c5d9fa37..1e23711f3cb 100644
--- a/test/e2e/sql/src/test/resources/env/scenario/db/proxy/conf/mysql/config-db.yaml
+++ b/test/e2e/sql/src/test/resources/env/scenario/db/proxy/conf/mysql/config-db.yaml
@@ -25,7 +25,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_1:
     url: jdbc:mysql://mysql.db.host:3306/db_1?serverTimezone=UTC&useSSL=false&characterEncoding=utf-8
@@ -34,7 +34,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_2:
     url: jdbc:mysql://mysql.db.host:3306/db_2?serverTimezone=UTC&useSSL=false&characterEncoding=utf-8
@@ -43,7 +43,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_3:
     url: jdbc:mysql://mysql.db.host:3306/db_3?serverTimezone=UTC&useSSL=false&characterEncoding=utf-8
@@ -52,7 +52,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_4:
     url: jdbc:mysql://mysql.db.host:3306/db_4?serverTimezone=UTC&useSSL=false&characterEncoding=utf-8
@@ -61,7 +61,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_5:
     url: jdbc:mysql://mysql.db.host:3306/db_5?serverTimezone=UTC&useSSL=false&characterEncoding=utf-8
@@ -70,7 +70,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_6:
     url: jdbc:mysql://mysql.db.host:3306/db_6?serverTimezone=UTC&useSSL=false&characterEncoding=utf-8
@@ -79,7 +79,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_7:
     url: jdbc:mysql://mysql.db.host:3306/db_7?serverTimezone=UTC&useSSL=false&characterEncoding=utf-8
@@ -88,7 +88,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_8:
     url: jdbc:mysql://mysql.db.host:3306/db_8?serverTimezone=UTC&useSSL=false&characterEncoding=utf-8
@@ -97,7 +97,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_9:
     url: jdbc:mysql://mysql.db.host:3306/db_9?serverTimezone=UTC&useSSL=false&characterEncoding=utf-8
@@ -106,7 +106,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
 
 rules:
diff --git a/test/e2e/sql/src/test/resources/env/scenario/db/proxy/conf/opengauss/config-db.yaml b/test/e2e/sql/src/test/resources/env/scenario/db/proxy/conf/opengauss/config-db.yaml
index 5eddeb17d58..804ee23c6a7 100644
--- a/test/e2e/sql/src/test/resources/env/scenario/db/proxy/conf/opengauss/config-db.yaml
+++ b/test/e2e/sql/src/test/resources/env/scenario/db/proxy/conf/opengauss/config-db.yaml
@@ -25,7 +25,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_1:
     url: jdbc:opengauss://opengauss.db.host:5432/db_1
@@ -34,7 +34,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_2:
     url: jdbc:opengauss://opengauss.db.host:5432/db_2
@@ -43,7 +43,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_3:
     url: jdbc:opengauss://opengauss.db.host:5432/db_3
@@ -52,7 +52,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_4:
     url: jdbc:opengauss://opengauss.db.host:5432/db_4
@@ -61,7 +61,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_5:
     url: jdbc:opengauss://opengauss.db.host:5432/db_5
@@ -70,7 +70,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_6:
     url: jdbc:opengauss://opengauss.db.host:5432/db_6
@@ -79,7 +79,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_7:
     url: jdbc:opengauss://opengauss.db.host:5432/db_7
@@ -88,7 +88,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_8:
     url: jdbc:opengauss://opengauss.db.host:5432/db_8
@@ -97,7 +97,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_9:
     url: jdbc:opengauss://opengauss.db.host:5432/db_9
@@ -106,7 +106,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
 
 rules:
diff --git a/test/e2e/sql/src/test/resources/env/scenario/db/proxy/conf/postgresql/config-db.yaml b/test/e2e/sql/src/test/resources/env/scenario/db/proxy/conf/postgresql/config-db.yaml
index f2f3208acce..3e6c4fa3f20 100644
--- a/test/e2e/sql/src/test/resources/env/scenario/db/proxy/conf/postgresql/config-db.yaml
+++ b/test/e2e/sql/src/test/resources/env/scenario/db/proxy/conf/postgresql/config-db.yaml
@@ -25,7 +25,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_1:
     url: jdbc:postgresql://postgresql.db.host:5432/db_1
@@ -34,7 +34,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_2:
     url: jdbc:postgresql://postgresql.db.host:5432/db_2
@@ -43,7 +43,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_3:
     url: jdbc:postgresql://postgresql.db.host:5432/db_3
@@ -52,7 +52,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_4:
     url: jdbc:postgresql://postgresql.db.host:5432/db_4
@@ -61,7 +61,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_5:
     url: jdbc:postgresql://postgresql.db.host:5432/db_5
@@ -70,7 +70,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_6:
     url: jdbc:postgresql://postgresql.db.host:5432/db_6
@@ -79,7 +79,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_7:
     url: jdbc:postgresql://postgresql.db.host:5432/db_7
@@ -88,7 +88,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_8:
     url: jdbc:postgresql://postgresql.db.host:5432/db_8
@@ -97,7 +97,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
   ds_9:
     url: jdbc:postgresql://postgresql.db.host:5432/db_9
@@ -106,7 +106,7 @@ dataSources:
     connectionTimeoutMilliseconds: 30000
     idleTimeoutMilliseconds: 60000
     maxLifetimeMilliseconds: 1800000
-    maxPoolSize: 2
+    maxPoolSize: 50
     minPoolSize: 2
 
 rules: