sandynz commented on a change in pull request #12621:
URL: https://github.com/apache/shardingsphere/pull/12621#discussion_r713885298



##########
File path: 
shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-opengauss/src/main/java/org/apache/shardingsphere/scaling/opengauss/component/checker/OpenGaussDataSourcePreparer.java
##########
@@ -57,7 +60,14 @@ public void prepareTargetTables(final JobConfiguration 
jobConfig) {
              Connection targetConnection = targetDataSource.getConnection()) {
             for (Entry<String, Collection<String>> entry : 
createLogicTableSQLs.entrySet()) {
                 for (String each : entry.getValue()) {
-                    executeTargetTableSQL(targetConnection, each);
+                    try {
+                        executeTargetTableSQL(targetConnection, each);
+                    } catch (SQLException sqlExp) {

Review comment:
       Could be `final SQLException ex`.

##########
File path: 
shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-opengauss/src/main/java/org/apache/shardingsphere/scaling/opengauss/component/checker/OpenGaussDataSourcePreparer.java
##########
@@ -123,18 +133,51 @@ private String queryTableDefinition(final Connection 
sourceConnection, final int
                     case CREATE_TABLE:
                         sql = addIfNotExistsForCreateTableSQL(sql);
                         sql = replaceActualTableNameToLogicTableName(sql, 
each.getActualTableName(), each.getLogicTableName());
+                        sql = skipCreateTableExtendSet(sql);
                         return sql;
                     case ALTER_TABLE:
                         sql = replaceActualTableNameToLogicTableName(sql, 
each.getActualTableName(), each.getLogicTableName());
                         return sql;
-                    case UNKNOWN:
-                        return sql;
                     default:
-                        return sql;
+                        return "";
                 }
-            }).collect(Collectors.toList());
+            }).filter(sql -> !"".equals(sql)).collect(Collectors.toList());
             result.put(each.getLogicTableName(), logicTableSQLs);
         }
         return result;
     }
+    
+    @Override
+    protected String replaceActualTableNameToLogicTableName(final String 
createOrAlterTableSQL, final String actualTableName, final String 
logicTableName) {
+        StringBuilder sb = new StringBuilder(createOrAlterTableSQL);

Review comment:
       `sb` could be meaningful variable name.

##########
File path: 
shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-opengauss/src/main/java/org/apache/shardingsphere/scaling/opengauss/component/checker/OpenGaussDataSourcePreparer.java
##########
@@ -123,18 +133,51 @@ private String queryTableDefinition(final Connection 
sourceConnection, final int
                     case CREATE_TABLE:
                         sql = addIfNotExistsForCreateTableSQL(sql);
                         sql = replaceActualTableNameToLogicTableName(sql, 
each.getActualTableName(), each.getLogicTableName());
+                        sql = skipCreateTableExtendSet(sql);
                         return sql;
                     case ALTER_TABLE:
                         sql = replaceActualTableNameToLogicTableName(sql, 
each.getActualTableName(), each.getLogicTableName());
                         return sql;
-                    case UNKNOWN:
-                        return sql;
                     default:
-                        return sql;
+                        return "";
                 }
-            }).collect(Collectors.toList());
+            }).filter(sql -> !"".equals(sql)).collect(Collectors.toList());
             result.put(each.getLogicTableName(), logicTableSQLs);
         }
         return result;
     }
+    
+    @Override
+    protected String replaceActualTableNameToLogicTableName(final String 
createOrAlterTableSQL, final String actualTableName, final String 
logicTableName) {
+        StringBuilder sb = new StringBuilder(createOrAlterTableSQL);
+        while (true) {
+            int start = sb.indexOf(actualTableName);
+            if (start <= 0) {
+                return sb.toString();
+            }
+            int end = start + actualTableName.length();
+            sb.replace(start, end, logicTableName);
+        }
+    }
+    
+    private String skipCreateTableExtendSet(final String createSql) {
+        String lowerCreateSql = createSql.toLowerCase();
+        String[] search = {WITH_OF_TABLE_EXTEND, ")"};
+        List<Integer> searchPos = new ArrayList<>(2);
+        int startPos = 0;
+        for (String str: search) {
+            int curSearch = lowerCreateSql.indexOf(str, startPos);
+            if (curSearch <= 0) {
+                break;
+            }
+            searchPos.add(curSearch);
+            startPos = curSearch;
+        }
+        // if not search with ( and ), nothing to do.

Review comment:
       Could be removed.
   Code of conduct: Split codes that need to add notes with it into small 
methods, which are explained with method names.

##########
File path: 
shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-opengauss/src/main/java/org/apache/shardingsphere/scaling/opengauss/component/checker/OpenGaussDataSourcePreparer.java
##########
@@ -123,18 +133,51 @@ private String queryTableDefinition(final Connection 
sourceConnection, final int
                     case CREATE_TABLE:
                         sql = addIfNotExistsForCreateTableSQL(sql);
                         sql = replaceActualTableNameToLogicTableName(sql, 
each.getActualTableName(), each.getLogicTableName());
+                        sql = skipCreateTableExtendSet(sql);
                         return sql;
                     case ALTER_TABLE:
                         sql = replaceActualTableNameToLogicTableName(sql, 
each.getActualTableName(), each.getLogicTableName());
                         return sql;
-                    case UNKNOWN:
-                        return sql;
                     default:
-                        return sql;
+                        return "";
                 }
-            }).collect(Collectors.toList());
+            }).filter(sql -> !"".equals(sql)).collect(Collectors.toList());
             result.put(each.getLogicTableName(), logicTableSQLs);
         }
         return result;
     }
+    
+    @Override
+    protected String replaceActualTableNameToLogicTableName(final String 
createOrAlterTableSQL, final String actualTableName, final String 
logicTableName) {
+        StringBuilder sb = new StringBuilder(createOrAlterTableSQL);
+        while (true) {
+            int start = sb.indexOf(actualTableName);
+            if (start <= 0) {
+                return sb.toString();
+            }
+            int end = start + actualTableName.length();
+            sb.replace(start, end, logicTableName);
+        }
+    }
+    
+    private String skipCreateTableExtendSet(final String createSql) {
+        String lowerCreateSql = createSql.toLowerCase();
+        String[] search = {WITH_OF_TABLE_EXTEND, ")"};
+        List<Integer> searchPos = new ArrayList<>(2);
+        int startPos = 0;
+        for (String str: search) {
+            int curSearch = lowerCreateSql.indexOf(str, startPos);
+            if (curSearch <= 0) {
+                break;
+            }
+            searchPos.add(curSearch);
+            startPos = curSearch;
+        }
+        // if not search with ( and ), nothing to do.
+        if (searchPos.size() != 2) {
+            return createSql;
+        }
+

Review comment:
       Blank line could be removed.

##########
File path: 
shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-opengauss/src/main/java/org/apache/shardingsphere/scaling/opengauss/component/checker/OpenGaussDataSourcePreparer.java
##########
@@ -123,18 +133,51 @@ private String queryTableDefinition(final Connection 
sourceConnection, final int
                     case CREATE_TABLE:
                         sql = addIfNotExistsForCreateTableSQL(sql);
                         sql = replaceActualTableNameToLogicTableName(sql, 
each.getActualTableName(), each.getLogicTableName());
+                        sql = skipCreateTableExtendSet(sql);
                         return sql;
                     case ALTER_TABLE:
                         sql = replaceActualTableNameToLogicTableName(sql, 
each.getActualTableName(), each.getLogicTableName());
                         return sql;
-                    case UNKNOWN:
-                        return sql;
                     default:
-                        return sql;
+                        return "";
                 }
-            }).collect(Collectors.toList());
+            }).filter(sql -> !"".equals(sql)).collect(Collectors.toList());
             result.put(each.getLogicTableName(), logicTableSQLs);
         }
         return result;
     }
+    
+    @Override
+    protected String replaceActualTableNameToLogicTableName(final String 
createOrAlterTableSQL, final String actualTableName, final String 
logicTableName) {
+        StringBuilder sb = new StringBuilder(createOrAlterTableSQL);
+        while (true) {
+            int start = sb.indexOf(actualTableName);
+            if (start <= 0) {
+                return sb.toString();
+            }
+            int end = start + actualTableName.length();
+            sb.replace(start, end, logicTableName);
+        }
+    }
+    
+    private String skipCreateTableExtendSet(final String createSql) {
+        String lowerCreateSql = createSql.toLowerCase();

Review comment:
       `Sql` could be `SQL`

##########
File path: 
shardingsphere-scaling/shardingsphere-scaling-dialect/shardingsphere-scaling-opengauss/src/main/java/org/apache/shardingsphere/scaling/opengauss/component/checker/OpenGaussDataSourcePreparer.java
##########
@@ -123,18 +133,51 @@ private String queryTableDefinition(final Connection 
sourceConnection, final int
                     case CREATE_TABLE:
                         sql = addIfNotExistsForCreateTableSQL(sql);
                         sql = replaceActualTableNameToLogicTableName(sql, 
each.getActualTableName(), each.getLogicTableName());
+                        sql = skipCreateTableExtendSet(sql);
                         return sql;
                     case ALTER_TABLE:
                         sql = replaceActualTableNameToLogicTableName(sql, 
each.getActualTableName(), each.getLogicTableName());
                         return sql;
-                    case UNKNOWN:
-                        return sql;
                     default:
-                        return sql;
+                        return "";
                 }
-            }).collect(Collectors.toList());
+            }).filter(sql -> !"".equals(sql)).collect(Collectors.toList());
             result.put(each.getLogicTableName(), logicTableSQLs);
         }
         return result;
     }
+    
+    @Override
+    protected String replaceActualTableNameToLogicTableName(final String 
createOrAlterTableSQL, final String actualTableName, final String 
logicTableName) {
+        StringBuilder sb = new StringBuilder(createOrAlterTableSQL);
+        while (true) {
+            int start = sb.indexOf(actualTableName);
+            if (start <= 0) {
+                return sb.toString();
+            }
+            int end = start + actualTableName.length();
+            sb.replace(start, end, logicTableName);
+        }
+    }
+    
+    private String skipCreateTableExtendSet(final String createSql) {
+        String lowerCreateSql = createSql.toLowerCase();
+        String[] search = {WITH_OF_TABLE_EXTEND, ")"};
+        List<Integer> searchPos = new ArrayList<>(2);
+        int startPos = 0;
+        for (String str: search) {

Review comment:
       `String str` could be `String each`




-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to