diff --git a/README.md b/README.md index 74d08825a863888d95c4d312fd352b2dc0254641..806e3cb29963a67914f9354f7cece260b85f791a 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ openGauss-tools-sql-translator是一个使用java编写的实现MySQL向openGaus ### [13.1.11 CREATE DATABASE Statement](https://dev.mysql.com/doc/refman/5.7/en/create-database.html) -> 1. 翻译成openGauss的CREATE DATABASE,MySQL的create_option有 CHARACTER SET或 COLLATE字段,openGauss不支持 +> 1. 翻译成openGauss的CREATE SCHEMA,MySQL的create_option有 CHARACTER SET或 COLLATE字段,openGauss不兼容 ### [13.1.12 CREATE EVENT Statement](https://dev.mysql.com/doc/refman/5.7/en/create-event.html) @@ -137,7 +137,7 @@ openGauss-tools-sql-translator是一个使用java编写的实现MySQL向openGaus ### [13.1.22 DROP DATABASE Statement](https://dev.mysql.com/doc/refman/5.7/en/drop-database.html) -> 1. 完全支持 +> 1. 翻译成openGauss的DROP SCHEMA语句 ### [13.1.23 DROP EVENT Statement](https://dev.mysql.com/doc/refman/5.7/en/drop-event.html) diff --git a/src/main/java/org/opengauss/sqltranslator/dialect/mysql/MySqlToOpenGaussOutputVisitor.java b/src/main/java/org/opengauss/sqltranslator/dialect/mysql/MySqlToOpenGaussOutputVisitor.java index f762fbd08fdc41372ad60e6e7403e1c227966199..e95ff62a32be969d77799d8584f072b221a14241 100644 --- a/src/main/java/org/opengauss/sqltranslator/dialect/mysql/MySqlToOpenGaussOutputVisitor.java +++ b/src/main/java/org/opengauss/sqltranslator/dialect/mysql/MySqlToOpenGaussOutputVisitor.java @@ -715,11 +715,18 @@ public class MySqlToOpenGaussOutputVisitor extends MySqlOutputVisitor { if (x.isDeterministic()) { print(ucase ? " IMMUTABLE" : " immutable"); } - SQLStatement block = x.getBlock(); println(); print0("AS $$"); println(); - block.accept(this); + if ((x.getBlock().getClass()) == SQLBlockStatement.class) { + x.getBlock().accept(this); + } else { + println("BEGIN"); + x.getBlock().accept(this); + print0(";"); + println(); + printUcase("END"); + } return false; } @@ -810,7 +817,15 @@ public class MySqlToOpenGaussOutputVisitor extends MySqlOutputVisitor { println(); print0("AS "); println(); - x.getBlock().accept(this); + if ((x.getBlock().getClass()) == SQLBlockStatement.class) { + x.getBlock().accept(this); + } else { + println("BEGIN"); + x.getBlock().accept(this); + print0(";"); + println(); + printUcase("END"); + } return false; }