This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 cf7ee182db6 Improve atan and anan2 sql function for mysql (#31924)
cf7ee182db6 is described below
commit cf7ee182db639a46e0d289578c85d8601ee62692
Author: niu niu <[email protected]>
AuthorDate: Sun Jun 30 20:59:26 2024 +0800
Improve atan and anan2 sql function for mysql (#31924)
---
.../optimizer/planner/util/SQLFederationFunctionUtils.java | 3 +++
.../test/resources/cases/dql/dql-integration-select.xml | 14 ++++++++++++++
2 files changed, 17 insertions(+)
diff --git
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/util/SQLFederationFunctionUtils.java
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/util/SQLFederationFunctionUtils.java
index 084dc911363..f37225fa30c 100644
---
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/util/SQLFederationFunctionUtils.java
+++
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/util/SQLFederationFunctionUtils.java
@@ -19,6 +19,7 @@ package
org.apache.shardingsphere.sqlfederation.optimizer.planner.util;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
+import org.apache.calcite.runtime.SqlFunctions;
import org.apache.calcite.schema.SchemaPlus;
import org.apache.calcite.schema.impl.ScalarFunctionImpl;
import org.apache.shardingsphere.infra.autogen.version.ShardingSphereVersion;
@@ -50,6 +51,8 @@ public final class SQLFederationFunctionUtils {
schemaPlus.add("pg_catalog.intervaltonum",
ScalarFunctionImpl.create(SQLFederationFunctionUtils.class, "intervalToNum"));
schemaPlus.add("pg_catalog.gs_password_notifyTime",
ScalarFunctionImpl.create(SQLFederationFunctionUtils.class,
"gsPasswordNotifyTime"));
schemaPlus.add("bit_count",
ScalarFunctionImpl.create(MySQLBitCountFunction.class, "bitCount"));
+ schemaPlus.add("atan", ScalarFunctionImpl.create(SqlFunctions.class,
"atan2"));
+ schemaPlus.add("atan2", ScalarFunctionImpl.create(SqlFunctions.class,
"atan"));
if ("pg_catalog".equalsIgnoreCase(schemaName)) {
schemaPlus.add("pg_catalog.pg_table_is_visible",
ScalarFunctionImpl.create(SQLFederationFunctionUtils.class,
"pgTableIsVisible"));
schemaPlus.add("pg_catalog.pg_get_userbyid",
ScalarFunctionImpl.create(SQLFederationFunctionUtils.class, "pgGetUserById"));
diff --git
a/test/e2e/sql/src/test/resources/cases/dql/dql-integration-select.xml
b/test/e2e/sql/src/test/resources/cases/dql/dql-integration-select.xml
index 63c801ea354..007e56b03a7 100644
--- a/test/e2e/sql/src/test/resources/cases/dql/dql-integration-select.xml
+++ b/test/e2e/sql/src/test/resources/cases/dql/dql-integration-select.xml
@@ -333,4 +333,18 @@
INNER JOIN t_order_item t3 ON t2.product_id =
t3.product_id INNER JOIN t_order t4 ON t4.order_id = t3.order_id order by
t1.product_id" db-types="MySQL" scenario-types="db_tbl_sql_federation">
<assertion expected-data-source-name="read_dataset" />
</test-case>
+
+ <test-case sql="SELECT ATAN(1.0), ATAN(1), ATAN('1'), ATAN(1.0, 2.0),
ATAN(1, 2), ATAN(1, 2.0), ATAN(-2, 2)" db-types="MySQL"
scenario-types="db_tbl_sql_federation">
+ <assertion expected-data-source-name="read_dataset" />
+ </test-case>
+
+ <test-case sql="SELECT ATAN2(1.0), ATAN2(1), ATAN2('1'), ATAN2(1.0, 2.0),
ATAN2(1, 2.0), ATAN2(-2, 2)" db-types="MySQL"
scenario-types="db_tbl_sql_federation">
+ <assertion expected-data-source-name="read_dataset" />
+ </test-case>
+
+ <test-case sql="SELECT ATAN(res1.order_id), ATAN(res1.order_id,
res2.item_id), ATAN2(res1.order_id), ATAN2(res1.order_id, res2.item_id)
+ FROM (SELECT order_id FROM t_order limit 10) res1
+ INNER JOIN (SELECT item_id, order_id FROM t_order_item
limit 10) res2 ON res1.order_id = res2.order_id" db-types="MySQL"
scenario-types="db_tbl_sql_federation">
+ <assertion expected-data-source-name="read_dataset" />
+ </test-case>
</integration-test-cases>