You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by me...@apache.org on 2021/02/26 03:59:00 UTC

[shardingsphere] branch master updated: Fixes #9388 (#9511)

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

menghaoran 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 1ef52bc  Fixes #9388 (#9511)
1ef52bc is described below

commit 1ef52bc6e8fbbebd073e71a7825ccf36f239bcca
Author: Liang Zhang <te...@163.com>
AuthorDate: Fri Feb 26 11:58:36 2021 +0800

    Fixes #9388 (#9511)
    
    * Fix #9388
    
    * Fix test cases
---
 .../encrypt/select_for_query_with_cipher.xml          |  2 +-
 .../resources/encrypt/select_for_query_with_plain.xml |  2 +-
 .../resources/mix/select_for_query_with_cipher.xml    | 19 ++++++++++---------
 .../resources/mix/select_for_query_with_plain.xml     | 17 +++++++++--------
 .../select/projection/engine/ProjectionEngine.java    |  3 ++-
 .../cases/dql/dataset/encrypt/select_join_encrypt.xml |  8 ++++----
 .../cases/dql/dql-integration-test-cases.xml          | 15 +++++++--------
 7 files changed, 34 insertions(+), 32 deletions(-)

diff --git a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-rewrite/src/test/resources/encrypt/select_for_query_with_cipher.xml b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-rewrite/src/test/resources/encrypt/select_for_query_with_cipher.xml
index e806059..63a8c99 100644
--- a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-rewrite/src/test/resources/encrypt/select_for_query_with_cipher.xml
+++ b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-rewrite/src/test/resources/encrypt/select_for_query_with_cipher.xml
@@ -61,7 +61,7 @@
     
     <rewrite-assertion id="select_with_unqualified_shorthand">
         <input sql="SELECT * FROM t_account" />
-        <output sql="SELECT `account_id`, `cipher_certificate_number` AS certificate_number, `cipher_password` AS password, `cipher_amount` AS amount, `status` FROM t_account" />
+        <output sql="SELECT `t_account`.`account_id`, `t_account`.`cipher_certificate_number` AS certificate_number, `t_account`.`cipher_password` AS password, `t_account`.`cipher_amount` AS amount, `t_account`.`status` FROM t_account" />
     </rewrite-assertion>
     
     <rewrite-assertion id="select_with_qualified_shorthand">
diff --git a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-rewrite/src/test/resources/encrypt/select_for_query_with_plain.xml b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-rewrite/src/test/resources/encrypt/select_for_query_with_plain.xml
index 7dfd6b7..786333e 100644
--- a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-rewrite/src/test/resources/encrypt/select_for_query_with_plain.xml
+++ b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-rewrite/src/test/resources/encrypt/select_for_query_with_plain.xml
@@ -29,7 +29,7 @@
     
     <rewrite-assertion id="select_with_unqualified_shorthand">
         <input sql="SELECT * FROM t_account_bak" />
-        <output sql="SELECT `account_id`, `cipher_certificate_number` AS certificate_number, `plain_password` AS password, `plain_amount` AS amount, `status` FROM t_account_bak" />
+        <output sql="SELECT `t_account_bak`.`account_id`, `t_account_bak`.`cipher_certificate_number` AS certificate_number, `t_account_bak`.`plain_password` AS password, `t_account_bak`.`plain_amount` AS amount, `t_account_bak`.`status` FROM t_account_bak" />
     </rewrite-assertion>
     
     <rewrite-assertion id="select_with_qualified_shorthand">
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-rewrite/src/test/resources/mix/select_for_query_with_cipher.xml b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-rewrite/src/test/resources/mix/select_for_query_with_cipher.xml
index 7e9ac71..c1618a6 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-rewrite/src/test/resources/mix/select_for_query_with_cipher.xml
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-rewrite/src/test/resources/mix/select_for_query_with_cipher.xml
@@ -42,24 +42,25 @@
         <output sql="SELECT t_account_1.account_id, t_account_1.cipher_password AS password, t_account_1.cipher_amount AS a, status AS s FROM t_account_1 WHERE t_account_1.account_id = 1 AND t_account_1.assisted_query_password = 'assisted_query_aaa' AND t_account_1.cipher_amount = 'encrypt_1000' AND t_account_1.status = 'OK'" />
     </rewrite-assertion>
     
-    <rewrite-assertion id="select_with_unqualified_shorthand">
-        <input sql="SELECT * FROM t_account" />
-        <output sql="SELECT `account_id`, `cipher_password` AS password, `cipher_amount` AS amount, `status` FROM t_account_0" />
-        <output sql="SELECT `account_id`, `cipher_password` AS password, `cipher_amount` AS amount, `status` FROM t_account_1" />
-    </rewrite-assertion>
+    <!-- FIXME should rewrite owner table as sharding table -->
+<!--    <rewrite-assertion id="select_with_unqualified_shorthand">-->
+<!--        <input sql="SELECT * FROM t_account" />-->
+<!--        <output sql="SELECT `t_account_0`.`account_id`, `t_account_0`.`cipher_password` AS password, `t_account_0`.`cipher_amount` AS amount, `t_account_0`.`status` FROM t_account_0" />-->
+<!--        <output sql="SELECT `t_account_1`.`account_id`, `t_account_1`.`cipher_password` AS password, `t_account_1`.`cipher_amount` AS amount, `t_account_1`.`status` FROM t_account_1" />-->
+<!--    </rewrite-assertion>-->
     
     <rewrite-assertion id="select_with_qualified_shorthand">
         <input sql="SELECT a.* FROM t_account a" />
         <output sql="SELECT `a`.`account_id`, `a`.`cipher_password` AS password, `a`.`cipher_amount` AS amount, `a`.`status` FROM t_account_0 a" />
         <output sql="SELECT `a`.`account_id`, `a`.`cipher_password` AS password, `a`.`cipher_amount` AS amount, `a`.`status` FROM t_account_1 a" />
     </rewrite-assertion>
-
+    
     <rewrite-assertion id="select_with_sharding_qualified_shorthand_join_table">
         <input sql="SELECT b.* FROM t_account a, t_account_detail b where a.password = b.password" />
         <output sql="SELECT b.* FROM t_account_0 a, t_account_detail_0 b where a.assisted_query_password = b.password" />
         <output sql="SELECT b.* FROM t_account_1 a, t_account_detail_1 b where a.assisted_query_password = b.password" />
     </rewrite-assertion>
-
+    
     <rewrite-assertion id="select_with_encrypt_qualified_shorthand_join_table">
         <input sql="SELECT a.* FROM t_account a, t_account_detail b where a.password = b.password" />
         <output sql="SELECT `a`.`account_id`, `a`.`cipher_password` AS password, `a`.`cipher_amount` AS amount, `a`.`status` FROM t_account_0 a, t_account_detail_0 b where a.assisted_query_password = b.password" />
@@ -71,8 +72,8 @@
         <output sql="SELECT `a`.`account_id`, `a`.`cipher_password` AS password, `a`.`cipher_amount` AS amount, `a`.`status`, account_id, 1+1 FROM t_account_0 a" />
         <output sql="SELECT `a`.`account_id`, `a`.`cipher_password` AS password, `a`.`cipher_amount` AS amount, `a`.`status`, account_id, 1+1 FROM t_account_1 a" />
     </rewrite-assertion>
-    
-    <!-- FIXME -->
+
+    <!-- FIXME should rewrite owner table as sharding table -->
     <!--<rewrite-assertion id="select_with_table_qualified_shorthand">-->
         <!--<input sql="SELECT t_account.* FROM t_account" />-->
         <!--<output sql="SELECT t_account_0.account_id, t_account_0.cipher_password AS password, t_account_0.cipher_amount AS amount, t_account_0.status FROM t_account_0" />-->
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-rewrite/src/test/resources/mix/select_for_query_with_plain.xml b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-rewrite/src/test/resources/mix/select_for_query_with_plain.xml
index 1b0a6f3..501db9b 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-rewrite/src/test/resources/mix/select_for_query_with_plain.xml
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-rewrite/src/test/resources/mix/select_for_query_with_plain.xml
@@ -26,26 +26,27 @@
         <input sql="SELECT a.account_id, a.password, a.amount AS a, a.status AS s FROM t_account_bak AS a WHERE a.account_id = 1 AND a.password = 'aaa' AND a.amount = 1000 AND a.status = 'OK'" />
         <output sql="SELECT a.account_id, a.plain_password AS password, a.plain_amount AS a, a.status AS s FROM t_account_bak_1 AS a WHERE a.account_id = 1 AND a.plain_password = 'aaa' AND a.plain_amount = 1000 AND a.status = 'OK'" />
     </rewrite-assertion>
-
-    <rewrite-assertion id="select_with_unqualified_shorthand">
-        <input sql="SELECT * FROM t_account_bak" />
-        <output sql="SELECT `account_id`, `plain_password` AS password, `plain_amount` AS amount, `status` FROM t_account_bak_0" />
-        <output sql="SELECT `account_id`, `plain_password` AS password, `plain_amount` AS amount, `status` FROM t_account_bak_1" />
-    </rewrite-assertion>
+    
+    <!-- FIXME should rewrite owner table as sharding table -->
+<!--    <rewrite-assertion id="select_with_unqualified_shorthand">-->
+<!--        <input sql="SELECT * FROM t_account_bak" />-->
+<!--        <output sql="SELECT `t_account_bak_0`.`account_id`, `t_account_bak_0`.`plain_password` AS password, `t_account_bak_0`.`plain_amount` AS amount, `t_account_bak_0`.`status` FROM t_account_bak_0" />-->
+<!--        <output sql="SELECT `t_account_bak_1`.`account_id`, `t_account_bak_1`.`plain_password` AS password, `t_account_bak_1`.`plain_amount` AS amount, `t_account_bak_1`.`status` FROM t_account_bak_1" />-->
+<!--    </rewrite-assertion>-->
     
     <rewrite-assertion id="select_with_qualified_shorthand">
         <input sql="SELECT a.* FROM t_account_bak a" />
         <output sql="SELECT `a`.`account_id`, `a`.`plain_password` AS password, `a`.`plain_amount` AS amount, `a`.`status` FROM t_account_bak_0 a" />
         <output sql="SELECT `a`.`account_id`, `a`.`plain_password` AS password, `a`.`plain_amount` AS amount, `a`.`status` FROM t_account_bak_1 a" />
     </rewrite-assertion>
-
+    
     <rewrite-assertion id="select_with_mix_qualified_shorthand_and_other_projection">
         <input sql="SELECT a.*, account_id, 1+1 FROM t_account_bak a" />
         <output sql="SELECT `a`.`account_id`, `a`.`plain_password` AS password, `a`.`plain_amount` AS amount, `a`.`status`, account_id, 1+1 FROM t_account_bak_0 a" />
         <output sql="SELECT `a`.`account_id`, `a`.`plain_password` AS password, `a`.`plain_amount` AS amount, `a`.`status`, account_id, 1+1 FROM t_account_bak_1 a" />
     </rewrite-assertion>
     
-    <!-- FIXME -->
+    <!-- FIXME should rewrite owner table as sharding table -->
     <!--<rewrite-assertion id="select_with_table_qualified_shorthand">-->
         <!--<input sql="SELECT t_account_bak.* FROM t_account_bak" />-->
         <!--<output sql="SELECT t_account_bak_0.account_id, t_account_bak_0.plain_password AS password, t_account_bak_0.plain_amount AS amount, t_account_bak_0.status FROM t_account_bak_0" />-->
diff --git a/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/engine/ProjectionEngine.java b/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/engine/ProjectionEngine.java
index 887b510..94834a8 100644
--- a/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/engine/ProjectionEngine.java
+++ b/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/projection/engine/ProjectionEngine.java
@@ -123,8 +123,9 @@ public final class ProjectionEngine {
     private Collection<ColumnProjection> getUnqualifiedShorthandColumns(final Collection<SimpleTableSegment> tables) {
         Collection<ColumnProjection> result = new LinkedList<>();
         for (SimpleTableSegment each : tables) {
+            String owner = each.getAlias().orElse(each.getTableName().getIdentifier().getValue());
             result.addAll(schema.getAllColumnNames(
-                    each.getTableName().getIdentifier().getValue()).stream().map(columnName -> new ColumnProjection(null, columnName, null)).collect(Collectors.toList()));
+                    each.getTableName().getIdentifier().getValue()).stream().map(columnName -> new ColumnProjection(owner, columnName, null)).collect(Collectors.toList()));
         }
         return result;
     }
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dataset/encrypt/select_join_encrypt.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dataset/encrypt/select_join_encrypt.xml
index 5a8078e..2db62ac 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dataset/encrypt/select_join_encrypt.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dataset/encrypt/select_join_encrypt.xml
@@ -37,8 +37,8 @@
     <row values="12, hig, 120002, 1200, 12, init, 2017-08-08" />
     <row values="12, hig, 120101, 1201, 12, init, 2017-08-08" />
     <row values="12, hig, 120102, 1201, 12, init, 2017-08-08" />
-    <row values="13, hig, 130001, 1300, 13, init, 2017-08-08" />
-    <row values="13, hig, 130002, 1300, 13, init, 2017-08-08" />
-    <row values="13, hig, 130101, 1301, 13, init, 2017-08-08" />
-    <row values="13, hig, 130102, 1301, 13, init, 2017-08-08" />
+    <row values="13, kli, 130001, 1300, 13, init, 2017-08-08" />
+    <row values="13, kli, 130002, 1300, 13, init, 2017-08-08" />
+    <row values="13, kli, 130101, 1301, 13, init, 2017-08-08" />
+    <row values="13, kli, 130102, 1301, 13, init, 2017-08-08" />
 </dataset>
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dql-integration-test-cases.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dql-integration-test-cases.xml
index 9f3fa19..4669795 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dql-integration-test-cases.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dql-integration-test-cases.xml
@@ -478,21 +478,20 @@
     from t_order t left join t_order_item as o on o.order_id =t.order_id where t.order_id=1000 limit 1" db-types="MySQL,H2">
         <assertion expected-data-file="select_with_case_expression.xml" />
     </test-case>
-
+    
     <test-case sql="SELECT * FROM t_order o LEFT JOIN t_order_item m ON o.order_id = m.order_id" db-types="MySQL,H2">
         <assertion expected-data-file="select_for_left_join.xml"/>
     </test-case>
-
+    
     <test-case sql="SELECT * FROM t_broadcast_table">
         <assertion expected-data-file="select_for_broadcast_table.xml"/>
     </test-case>
-
+    
     <test-case sql="SELECT * FROM t_user">
         <assertion expected-data-file="select_encrypt.xml"/>
     </test-case>
-
-    <!--TODO fix me! about Column 'user_id' in field list is ambiguous -->
-    <!--    <test-case sql="SELECT * FROM t_user u INNER JOIN t_order_item m ON u.user_id=m.user_id">-->
-    <!--        <assertion expected-data-file="select_join_encrypt.xml"/>-->
-    <!--    </test-case>-->
+    
+    <test-case sql="SELECT * FROM t_user u INNER JOIN t_order_item m ON u.user_id=m.user_id">
+        <assertion expected-data-file="select_join_encrypt.xml"/>
+    </test-case>
 </integration-test-cases>