diff --git a/core/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCheck.java b/core/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCheck.java index a8aafc2b74..f71111100f 100644 --- a/core/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCheck.java +++ b/core/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCheck.java @@ -60,7 +60,7 @@ public class SQLCheck extends SQLConstraintImpl implements SQLTableElement, SQLT super.cloneTo(x); if (expr != null) { - expr = expr.clone(); + x.expr = expr.clone(); } x.enforced = enforced; diff --git a/core/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlRepCheckTest.java b/core/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlRepCheckTest.java new file mode 100644 index 0000000000..ce546889d4 --- /dev/null +++ b/core/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlRepCheckTest.java @@ -0,0 +1,41 @@ +package com.alibaba.druid.bvt.sql.mysql; + +import com.alibaba.druid.sql.repository.Schema; +import com.alibaba.druid.sql.repository.SchemaObject; +import com.alibaba.druid.sql.repository.SchemaRepository; +import com.alibaba.druid.util.JdbcUtils; + +import java.util.HashMap; +import java.util.Map; + +public class MySqlRepCheckTest { + final private SchemaRepository repository = new SchemaRepository(JdbcUtils.MYSQL); + + public static void main(String[] args) { + MySqlRepCheckTest testRep = new MySqlRepCheckTest(); + String schemaName = "test_db"; + testRep.repository.setDefaultSchema(schemaName); + testRep.repository.console("CREATE TABLE `test_table` (\n" + + " `id` int NOT NULL AUTO_INCREMENT,\n" + + " `action_flag` smallint unsigned NOT NULL,\n" + + " CONSTRAINT `chk_1` CHECK ((`action_flag` >= 0))\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci"); + Map snapshot = testRep.snapshot(); + System.out.println(snapshot.get(schemaName)); + } + + public Map snapshot() { + Map schemaDdls = new HashMap(); + for (Schema schema : repository.getSchemas()) { + StringBuffer data = new StringBuffer(4 * 1024); + for (String table : schema.showTables()) { + SchemaObject schemaObject = schema.findTable(table); + schemaObject.getStatement().output(data); + data.append("; \n"); + } + schemaDdls.put(schema.getName(), data.toString()); + } + + return schemaDdls; + } +} \ No newline at end of file