YoWuwuuuw commented on code in PR #7219:
URL: https://github.com/apache/incubator-seata/pull/7219#discussion_r1994909103


##########
sqlparser/seata-sqlparser-druid/src/test/java/org/apache/seata/sqlparser/druid/DruidSQLRecognizerFactoryTest.java:
##########
@@ -48,75 +48,159 @@ public void testSqlRecognizerCreation() {
         Assertions.assertEquals(recognizers.size(), 1);
         Assertions.assertEquals(SQLType.DELETE, 
recognizers.get(0).getSQLType());
 
+        recognizers = recognizerFactory.create("delete from t1", 
JdbcConstants.DM);
+        Assertions.assertNotNull(recognizers);
+        Assertions.assertEquals(recognizers.size(), 1);
+        Assertions.assertEquals(SQLType.DELETE, 
recognizers.get(0).getSQLType());
+
+        recognizers = recognizerFactory.create("delete from t1", 
JdbcConstants.KINGBASE);
+        Assertions.assertNotNull(recognizers);
+        Assertions.assertEquals(recognizers.size(), 1);
+        Assertions.assertEquals(SQLType.DELETE, 
recognizers.get(0).getSQLType());
+
+        recognizers = recognizerFactory.create("delete from t1", 
JdbcConstants.OSCAR);
+        Assertions.assertNotNull(recognizers);
+        Assertions.assertEquals(recognizers.size(), 1);
+        Assertions.assertEquals(SQLType.DELETE, 
recognizers.get(0).getSQLType());
+
         //test sql syntax
         String sql = "update d.t set d.t.a = ?, d.t.b = ?, d.t.c = ?";
         Assertions.assertNotNull(recognizerFactory.create(sql, 
JdbcConstants.MYSQL));
         Assertions.assertNotNull(recognizerFactory.create(sql, 
JdbcConstants.MARIADB));
         Assertions.assertNotNull(recognizerFactory.create(sql, 
JdbcConstants.POLARDBX));
         Assertions.assertNotNull(recognizerFactory.create(sql, 
JdbcConstants.ORACLE));
         Assertions.assertNotNull(recognizerFactory.create(sql, 
JdbcConstants.POSTGRESQL));
+        Assertions.assertNotNull(recognizerFactory.create(sql, 
JdbcConstants.DM));
+        Assertions.assertNotNull(recognizerFactory.create(sql, 
JdbcConstants.KINGBASE));
+        Assertions.assertNotNull(recognizerFactory.create(sql, 
JdbcConstants.OSCAR));
 
-        String sql1 = "update a set a.id = (select id from b where a.pid = 
b.pid)";
-        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql1, JdbcConstants.ORACLE));
-        String sql2 = "update (select a.id,a.name from a inner join b on a.id 
= b.id) t set t.name = 'xxx'";
-        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql2, JdbcConstants.ORACLE));
-        String sql3 = "update a set id = b.pid from b where a.id = b.id";
-        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql3, JdbcConstants.POSTGRESQL));
 
-        String sql4 = "update t set id = 1 where id in (select id from b)";
-        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql4, JdbcConstants.MYSQL));
-        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql4, JdbcConstants.MARIADB));
-        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql4, JdbcConstants.POLARDBX));
-        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql4, JdbcConstants.ORACLE));
-        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql4, JdbcConstants.POSTGRESQL));
 
         String sql5 = "insert into a values (1, 2)";
         Assertions.assertNotNull(recognizerFactory.create(sql5, 
JdbcConstants.MYSQL));
         Assertions.assertNotNull(recognizerFactory.create(sql5, 
JdbcConstants.MARIADB));
         Assertions.assertNotNull(recognizerFactory.create(sql5, 
JdbcConstants.POLARDBX));
         Assertions.assertNotNull(recognizerFactory.create(sql5, 
JdbcConstants.ORACLE));
         Assertions.assertNotNull(recognizerFactory.create(sql5, 
JdbcConstants.POSTGRESQL));
+        Assertions.assertNotNull(recognizerFactory.create(sql5, 
JdbcConstants.DM));
+        Assertions.assertNotNull(recognizerFactory.create(sql5, 
JdbcConstants.KINGBASE));
+        Assertions.assertNotNull(recognizerFactory.create(sql5, 
JdbcConstants.OSCAR));
 
         String sql6 = "insert into a (id, name) values (1, 2), (3, 4)";
         Assertions.assertNotNull(recognizerFactory.create(sql6, 
JdbcConstants.MYSQL));
         Assertions.assertNotNull(recognizerFactory.create(sql6, 
JdbcConstants.MARIADB));
         Assertions.assertNotNull(recognizerFactory.create(sql6, 
JdbcConstants.POLARDBX));
         Assertions.assertNotNull(recognizerFactory.create(sql6, 
JdbcConstants.ORACLE));
         Assertions.assertNotNull(recognizerFactory.create(sql6, 
JdbcConstants.POSTGRESQL));
+        Assertions.assertNotNull(recognizerFactory.create(sql6, 
JdbcConstants.DM));
+        Assertions.assertNotNull(recognizerFactory.create(sql6, 
JdbcConstants.KINGBASE));
+        Assertions.assertNotNull(recognizerFactory.create(sql6, 
JdbcConstants.OSCAR));
+
 
-        String sql7 = "insert into a select * from b";
-        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql7, JdbcConstants.MYSQL));
-        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql7, JdbcConstants.MARIADB));
-        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql7, JdbcConstants.POLARDBX));
-        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql7, JdbcConstants.ORACLE));
-        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql7, JdbcConstants.POSTGRESQL));
 
         String sql8 = "delete from t where id = ?";
         Assertions.assertNotNull(recognizerFactory.create(sql8, 
JdbcConstants.MYSQL));
         Assertions.assertNotNull(recognizerFactory.create(sql8, 
JdbcConstants.MARIADB));
         Assertions.assertNotNull(recognizerFactory.create(sql8, 
JdbcConstants.POLARDBX));
         Assertions.assertNotNull(recognizerFactory.create(sql8, 
JdbcConstants.ORACLE));
         Assertions.assertNotNull(recognizerFactory.create(sql8, 
JdbcConstants.POSTGRESQL));
+        Assertions.assertNotNull(recognizerFactory.create(sql8, 
JdbcConstants.DM));
+        Assertions.assertNotNull(recognizerFactory.create(sql8, 
JdbcConstants.KINGBASE));
+        Assertions.assertNotNull(recognizerFactory.create(sql8, 
JdbcConstants.OSCAR));
+
 
-        String sql9 = "delete from t where id in (select id from b)";
-        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql9, JdbcConstants.MYSQL));
-        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql9, JdbcConstants.MARIADB));
-        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql9, JdbcConstants.POLARDBX));
-        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql9, JdbcConstants.ORACLE));
-        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql9, JdbcConstants.POSTGRESQL));
 
         String sql10 = "select * from t for update";
         Assertions.assertNotNull(recognizerFactory.create(sql10, 
JdbcConstants.MYSQL));
         Assertions.assertNotNull(recognizerFactory.create(sql10, 
JdbcConstants.MARIADB));
         Assertions.assertNotNull(recognizerFactory.create(sql10, 
JdbcConstants.POLARDBX));
         Assertions.assertNotNull(recognizerFactory.create(sql10, 
JdbcConstants.ORACLE));
         Assertions.assertNotNull(recognizerFactory.create(sql10, 
JdbcConstants.POSTGRESQL));
+        Assertions.assertNotNull(recognizerFactory.create(sql10, 
JdbcConstants.KINGBASE));
+        Assertions.assertNotNull(recognizerFactory.create(sql10, 
JdbcConstants.DM));
+        Assertions.assertNotNull(recognizerFactory.create(sql10, 
JdbcConstants.OSCAR));
+
+
 
-        String sql11 = "select * from (select * from t) for update";
-        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql11, JdbcConstants.MYSQL));
-        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql11, JdbcConstants.MARIADB));
-        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql11, JdbcConstants.POLARDBX));
-        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql11, JdbcConstants.ORACLE));
-        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql11, JdbcConstants.POSTGRESQL));
+
+    }
+
+    @Test
+    public void testIsSqlSyntaxSupports() {
+        SQLRecognizerFactory recognizerFactory = 
EnhancedServiceLoader.load(SQLRecognizerFactory.class, 
SqlParserType.SQL_PARSER_TYPE_DRUID);
+
+        String sql1 = "delete from t where id in (select id from b)";
+        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql1, JdbcConstants.MYSQL));
+        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql1, JdbcConstants.MARIADB));
+        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql1, JdbcConstants.POLARDBX));
+        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql1, JdbcConstants.DM));
+
+        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql1, JdbcConstants.SQLSERVER));
+        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql1, JdbcConstants.KINGBASE));
+        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql1, JdbcConstants.OSCAR));
+        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql1, JdbcConstants.POSTGRESQL));
+        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql1, JdbcConstants.ORACLE));
+
+        String sql2 = "select * from (select * from t) for update";
+        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql2, JdbcConstants.MYSQL));
+        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql2, JdbcConstants.MARIADB));
+        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql2, JdbcConstants.POLARDBX));
+        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql2, JdbcConstants.DM));
+
+        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql2, JdbcConstants.KINGBASE));
+        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql2, JdbcConstants.OSCAR));
+        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql2, JdbcConstants.POSTGRESQL));
+        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql2, JdbcConstants.ORACLE));
+
+        String sql3 = "replace into t (id,dr) values (1,'2'), (2,'3')";
+        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql3, JdbcConstants.MYSQL));
+        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql3, JdbcConstants.MARIADB));
+        Assertions.assertThrows(NotSupportYetException.class, () -> 
recognizerFactory.create(sql3, JdbcConstants.POLARDBX));
+
+        // When dbtype are DM and SQLSERVER, druid cannot parse
+//        try {
+//            recognizerFactory.create(sql3, JdbcConstants.DM);
+//        } catch (Exception e) {
+//            //e.printStackTrace();
+//        }

Review Comment:
   This is a bad habit I developed in the past. I have deleted the comments so 
that later people can understand them easily



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@seata.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@seata.apache.org
For additional commands, e-mail: notifications-h...@seata.apache.org

Reply via email to