From ed4215c9c48dc703c04b1192e7264927342e928f Mon Sep 17 00:00:00 2001 From: Elizabeth Date: Wed, 22 May 2024 21:50:14 +0300 Subject: [PATCH] dbeaver/pro#2861 Add block bound strings for db2 --- .../ext/db2/i/model/DB2ISQLDialect.java | 10 +++++++++ .../ext/db2/zos/model/DB2ZOSSQLDialect.java | 10 +++++++++ .../jkiss/dbeaver/ext/db2/DB2SQLDialect.java | 21 +++++++++++++------ 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.ext.db2.i/src/org/jkiss/dbeaver/ext/db2/i/model/DB2ISQLDialect.java b/plugins/org.jkiss.dbeaver.ext.db2.i/src/org/jkiss/dbeaver/ext/db2/i/model/DB2ISQLDialect.java index 74c2edf6f59f..3ec6018db3ad 100644 --- a/plugins/org.jkiss.dbeaver.ext.db2.i/src/org/jkiss/dbeaver/ext/db2/i/model/DB2ISQLDialect.java +++ b/plugins/org.jkiss.dbeaver.ext.db2.i/src/org/jkiss/dbeaver/ext/db2/i/model/DB2ISQLDialect.java @@ -21,8 +21,13 @@ import org.jkiss.dbeaver.model.exec.jdbc.JDBCDatabaseMetaData; import org.jkiss.dbeaver.model.exec.jdbc.JDBCSession; import org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource; +import org.jkiss.dbeaver.model.sql.SQLConstants; public class DB2ISQLDialect extends GenericSQLDialect { + private static final String[][] BEGIN_END_BLOCK = new String[][]{ + {SQLConstants.BLOCK_BEGIN, SQLConstants.BLOCK_END}, + {SQLConstants.KEYWORD_CASE, SQLConstants.BLOCK_END} + }; public DB2ISQLDialect() { super("IBM DB2 i", "db2_i"); @@ -38,6 +43,11 @@ public void initDriverSettings(JDBCSession session, JDBCDataSource dataSource, J turnFunctionIntoKeyword("TRUNCATE"); } + @Override + public String[][] getBlockBoundStrings() { + return BEGIN_END_BLOCK; + } + @Override public boolean supportsAliasInSelect() { return true; diff --git a/plugins/org.jkiss.dbeaver.ext.db2.zos/src/org/jkiss/dbeaver/ext/db2/zos/model/DB2ZOSSQLDialect.java b/plugins/org.jkiss.dbeaver.ext.db2.zos/src/org/jkiss/dbeaver/ext/db2/zos/model/DB2ZOSSQLDialect.java index 7dcbbdd1724f..6af8b01af351 100644 --- a/plugins/org.jkiss.dbeaver.ext.db2.zos/src/org/jkiss/dbeaver/ext/db2/zos/model/DB2ZOSSQLDialect.java +++ b/plugins/org.jkiss.dbeaver.ext.db2.zos/src/org/jkiss/dbeaver/ext/db2/zos/model/DB2ZOSSQLDialect.java @@ -20,8 +20,13 @@ import org.jkiss.dbeaver.model.exec.jdbc.JDBCDatabaseMetaData; import org.jkiss.dbeaver.model.exec.jdbc.JDBCSession; import org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource; +import org.jkiss.dbeaver.model.sql.SQLConstants; public class DB2ZOSSQLDialect extends GenericSQLDialect { + private static final String[][] BEGIN_END_BLOCK = new String[][]{ + {SQLConstants.BLOCK_BEGIN, SQLConstants.BLOCK_END}, + {SQLConstants.KEYWORD_CASE, SQLConstants.BLOCK_END} + }; public DB2ZOSSQLDialect() { super("DB2 for z/OS", "db2_zos"); @@ -37,6 +42,11 @@ public void initDriverSettings(JDBCSession session, JDBCDataSource dataSource, J turnFunctionIntoKeyword("TRUNCATE"); } + @Override + public String[][] getBlockBoundStrings() { + return BEGIN_END_BLOCK; + } + @Override public boolean supportsAliasInSelect() { return true; diff --git a/plugins/org.jkiss.dbeaver.ext.db2/src/org/jkiss/dbeaver/ext/db2/DB2SQLDialect.java b/plugins/org.jkiss.dbeaver.ext.db2/src/org/jkiss/dbeaver/ext/db2/DB2SQLDialect.java index 5457d1b8f61b..b1e2ff32a7e9 100644 --- a/plugins/org.jkiss.dbeaver.ext.db2/src/org/jkiss/dbeaver/ext/db2/DB2SQLDialect.java +++ b/plugins/org.jkiss.dbeaver.ext.db2/src/org/jkiss/dbeaver/ext/db2/DB2SQLDialect.java @@ -32,6 +32,7 @@ import org.jkiss.dbeaver.model.impl.data.formatters.BinaryFormatterHexString; import org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource; import org.jkiss.dbeaver.model.impl.jdbc.JDBCSQLDialect; +import org.jkiss.dbeaver.model.sql.SQLConstants; import org.jkiss.dbeaver.model.sql.parser.rules.SQLMultiWordRule; import org.jkiss.dbeaver.model.sql.parser.tokens.SQLTokenType; import org.jkiss.dbeaver.model.struct.rdb.DBSProcedure; @@ -48,7 +49,7 @@ /** * DB2 SQL dialect - * + * * @author Denis Forveille * */ @@ -59,6 +60,11 @@ public class DB2SQLDialect extends JDBCSQLDialect implements TPRuleProvider { public static final String[] EXEC_KEYWORDS = new String[]{"CALL"}; private static final boolean LOAD_ROUTINES_FROM_SYSCAT = false; + private static final String[][] BEGIN_END_BLOCK = new String[][]{ + {SQLConstants.BLOCK_BEGIN, SQLConstants.BLOCK_END}, + {SQLConstants.KEYWORD_CASE, SQLConstants.BLOCK_END} + }; + public DB2SQLDialect() { super("Db2 for LUW", "db2_luw"); @@ -74,8 +80,7 @@ public void initDriverSettings(JDBCSession session, JDBCDataSource dataSource, J @NotNull @Override - public MultiValueInsertMode getDefaultMultiValueInsertMode() - { + public MultiValueInsertMode getDefaultMultiValueInsertMode() { return MultiValueInsertMode.GROUP_ROWS; } @@ -86,11 +91,15 @@ public boolean supportsAliasInSelect() { @NotNull @Override - public String[] getExecuteKeywords() - { + public String[] getExecuteKeywords() { return EXEC_KEYWORDS; } + @Override + public String[][] getBlockBoundStrings() { + return BEGIN_END_BLOCK; + } + @Override protected void loadFunctions(JDBCSession session, JDBCDatabaseMetaData metaData, Set allFunctions) throws DBException, SQLException { if (LOAD_ROUTINES_FROM_SYSCAT) { @@ -152,7 +161,7 @@ public DBDBinaryFormatter getNativeBinaryFormatter() { @Override public String getScriptDelimiterRedefiner() { - return "--#SET TERMINATOR"; + return "--#SET TERMINATOR"; } @NotNull