diff --git a/src/main/java/org/opengauss/sqltranslator/ExecuteTranslate.java b/src/main/java/org/opengauss/sqltranslator/ExecuteTranslate.java index 1275072c712d5d2afaea574b2af8f1b98b79d735..e124d17e5ea803fdb418fb81cfaf70f31c599d6b 100644 --- a/src/main/java/org/opengauss/sqltranslator/ExecuteTranslate.java +++ b/src/main/java/org/opengauss/sqltranslator/ExecuteTranslate.java @@ -7,6 +7,8 @@ import org.opengauss.sqltranslator.dialect.mysql.MySqlToOpenGaussOutputVisitor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.UnsupportedEncodingException; +import java.util.Base64; import java.util.List; public class ExecuteTranslate { @@ -14,8 +16,21 @@ public class ExecuteTranslate { private static final Logger logger = LoggerFactory.getLogger(ExecuteTranslate.class); public static void main(String[] args) { + String raw_sql = ""; + //if the encoded sql is passed in through the --base64 parameter, the sql needs to be decoded + if (args.length == 2 && args[0].equals("--base64")) { + //decode sql + byte[] decode = Base64.getDecoder().decode(args[1]); + try { + raw_sql = new String(decode, "utf-8"); + } catch (UnsupportedEncodingException e) { + logger.error(e.getLocalizedMessage()); + } + } else { + raw_sql = args[0]; + } try { - System.out.println(translateMysql2openGauss(args[0], false)); + System.out.println(translateMysql2openGauss(raw_sql, false)); } catch (Exception e) { logger.error(e.getLocalizedMessage()); } 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 1a9743c484dc68efdb4133cd86c035cfc23128d9..a3cf4133a1a30b730db325eba76b4e1cb3f6b07d 100644 --- a/src/main/java/org/opengauss/sqltranslator/dialect/mysql/MySqlToOpenGaussOutputVisitor.java +++ b/src/main/java/org/opengauss/sqltranslator/dialect/mysql/MySqlToOpenGaussOutputVisitor.java @@ -450,14 +450,22 @@ public class MySqlToOpenGaussOutputVisitor extends MySqlOutputVisitor { boolean mysqlSpecial = false; if (DbType.mysql == this.dbType) mysqlSpecial = ("NAMES".equalsIgnoreCase(tagetString) || "CHARACTER SET".equalsIgnoreCase(tagetString) - || "CHARSET".equalsIgnoreCase(tagetString) || tagetString.startsWith("@")); + || "CHARSET".equalsIgnoreCase(tagetString) || "AUTOCOMMIT".equalsIgnoreCase(tagetString) + || tagetString.startsWith("@")); if (!mysqlSpecial) { x.getTarget().accept(this); print0(" := "); x.getValue().accept(this); } else { - logger.error("openGauss does not support set " + tagetString.toUpperCase() + getTypeAttribute(x)); - errHandle(x); + if ("AUTOCOMMIT".equalsIgnoreCase(tagetString)) { + print0("SET "); + x.getTarget().accept(this); + print0(" = "); + x.getValue().accept(this); + } else { + logger.error("openGauss does not support set " + tagetString.toUpperCase() + getTypeAttribute(x)); + errHandle(x); + } } return false; } @@ -3310,7 +3318,7 @@ public class MySqlToOpenGaussOutputVisitor extends MySqlOutputVisitor { gaussFeatureNotSupportLog("GLOBAL when it sets transaction" + getTypeAttribute(x)); } if (x.getSession() != null && x.getSession().booleanValue()) { - printUcase("SET SESSION CHARACTERISTICS AS TRANSACTION"); + printUcase("SESSION CHARACTERISTICS AS TRANSACTION "); } else printUcase("LOCAL TRANSACTION "); if (x.getIsolationLevel() != null) {