提交 02f3f639 编写于 作者: S Sergei.Rider

#2969 String escape configuration (Impala)

上级 9b9aba34
......@@ -118,6 +118,7 @@
<property id="script-delimiter-redefiner" label="Script delimiter redefiner" description="SQL clause which redefines script delimiter value" type="string" required="false" defaultValue=";"/>
<property id="script-delimiter-after-query" label="Use script delimiter after query" description="Keep SQL script delimiter after each SQL query" type="boolean" required="false" defaultValue="false"/>
<property id="script-delimiter-after-block" label="Use script delimiter after SQL block" description="Keep SQL script delimiter after SQL script blocks (BEGIN/END)" type="boolean" required="false" defaultValue="false"/>
<property id="string-escape-char" label="String escape character" description="Character used to escape special symbols in strings" type="string" required="false" defaultValue=""/>
<property id="meta-model" label="Meta model type" description="Type of metadata reading model - standard or indexed" type="string" required="false" defaultValue="" validValues="standard,indexed"/>
<property id="all-objects-pattern" label="All Objects Pattern" description="SQL pattern for all metadata objects" type="string" required="false" defaultValue="null" validValues="null,%"/>
<property id="omit-catalog" label="Omit catalog(s)" description="Do not read and use catalog (aka database) information" type="boolean" required="false" defaultValue="false"/>
......@@ -871,6 +872,7 @@
<parameter name="query-get-active-db" value="select current_database()"/>
<parameter name="query-set-active-db" value="use [?]"/>
<parameter name="string-escape-char" value="\"/>
</driver>
<!-- AWS -->
......
......@@ -43,6 +43,7 @@ public class GenericConstants {
public static final String PARAM_SCRIPT_DELIMITER_REDEFINER = "script-delimiter-redefiner";
public static final String PARAM_SQL_DELIMITER_AFTER_QUERY = "script-delimiter-after-query";
public static final String PARAM_SQL_DELIMITER_AFTER_BLOCK = "script-delimiter-after-block";
public static final String PARAM_STRING_ESCAPE_CHAR = "string-escape-char";
public static final String PARAM_EMBEDDED = "embedded";
public static final String PARAM_DDL_DROP_COLUMN_SHORT = "ddl-drop-column-short";
public static final String PARAM_LEGACY_DIALECT = "legacy-sql-dialect";
......
......@@ -34,6 +34,7 @@ public class GenericSQLDialect extends JDBCSQLDialect {
private static String[] EXEC_KEYWORDS = { "EXEC", "CALL" };
private String scriptDelimiter;
private char stringEscapeCharacter = '\0';
private String scriptDelimiterRedefiner;
private boolean legacySQLDialect;
private boolean suportsUpsert;
......@@ -55,6 +56,10 @@ public class GenericSQLDialect extends JDBCSQLDialect {
super.initDriverSettings(dataSource, metaData);
DBPDriver driver = dataSource.getContainer().getDriver();
this.scriptDelimiter = CommonUtils.toString(driver.getDriverParameter(GenericConstants.PARAM_SCRIPT_DELIMITER));
String escapeStr = CommonUtils.toString(driver.getDriverParameter(GenericConstants.PARAM_STRING_ESCAPE_CHAR));
if (!CommonUtils.isEmpty(escapeStr)) {
this.stringEscapeCharacter = escapeStr.charAt(0);
}
this.scriptDelimiterRedefiner = CommonUtils.toString(driver.getDriverParameter(GenericConstants.PARAM_SCRIPT_DELIMITER_REDEFINER));
this.hasDelimiterAfterQuery = CommonUtils.toBoolean(driver.getDriverParameter(GenericConstants.PARAM_SQL_DELIMITER_AFTER_QUERY));
this.hasDelimiterAfterBlock = CommonUtils.toBoolean(driver.getDriverParameter(GenericConstants.PARAM_SQL_DELIMITER_AFTER_BLOCK));
......@@ -76,11 +81,15 @@ public class GenericSQLDialect extends JDBCSQLDialect {
@NotNull
@Override
public String getScriptDelimiter()
{
public String getScriptDelimiter() {
return CommonUtils.isEmpty(scriptDelimiter) ? super.getScriptDelimiter() : scriptDelimiter;
}
@Override
public char getStringEscapeCharacter() {
return stringEscapeCharacter;
}
@Override
public String getScriptDelimiterRedefiner() {
return scriptDelimiterRedefiner;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册