diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBUtils.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBUtils.java index aabc221d4e344779d5d3bbef1b41c133d71f1c9d..b3b9172fa706120d79f7f0fed3083c4447ad43e3 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBUtils.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBUtils.java @@ -127,7 +127,8 @@ public final class DBUtils { } // Check for keyword conflict - boolean hasBadChars = sqlDialect.getKeywordType(str) == DBPKeywordType.KEYWORD; + final DBPKeywordType keywordType = sqlDialect.getKeywordType(str); + boolean hasBadChars = (keywordType == DBPKeywordType.KEYWORD || keywordType == DBPKeywordType.TYPE); if (!hasBadChars) { hasBadChars = Character.isDigit(str.charAt(0)); diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/sql/BasicSQLDialect.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/sql/BasicSQLDialect.java index 496864bf4fc450a64b059e22de3ad64e9d5034a0..ac598e2c4eaf9e118e6f6db6f39680bc90876270 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/sql/BasicSQLDialect.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/sql/BasicSQLDialect.java @@ -294,7 +294,8 @@ public class BasicSQLDialect implements SQLDialect { protected void loadStandardKeywords() { // Add default set of keywords - Collections.addAll(reservedWords, SQLConstants.SQL2003_KEYWORDS); + Collections.addAll(reservedWords, SQLConstants.SQL2003_RESERVED_KEYWORDS); + Collections.addAll(reservedWords, SQLConstants.SQL2003_NON_RESERVED_KEYWORDS); Collections.addAll(reservedWords, SQLConstants.SQL_EX_KEYWORDS); Collections.addAll(tableQueryWords, SQLConstants.TABLE_KEYWORDS); Collections.addAll(columnQueryWords, SQLConstants.COLUMN_KEYWORDS); diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/sql/SQLConstants.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/sql/SQLConstants.java index 08083400b7356d605c4fdfb22119f3440e2c3135..43576e2ad8bd4e7350a4dca4cb55566e53d97cd5 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/sql/SQLConstants.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/sql/SQLConstants.java @@ -64,245 +64,8 @@ public class SQLConstants { "BY", "HAVING" }; - public static final String[] SQL92_KEYWORDS = { - "ABSOLUTE", - "ACTION", - "ADA", - "ADD", - "ALL", - "ALLOCATE", - "ALTER", - "AND", - "ANY", - "ARE", - "AS", - "ASC", - "ASSERTION", - "AT", - "AUTHORIZATION", - "AVG", - "BEGIN", - "BETWEEN", - "BIT", - "BIT_LENGTH", - "BOTH", - "BY", - "CASCADE", - "CASCADED", - "CASE", - "CAST", - "CATALOG", - "CHAR", - "CHAR_LENGTH", - "CHARACTER", - "CHARACTER_LENGTH", - "CHECK", - "CLOSE", - "COALESCE", - "COLLATE", - "COLLATION", - "COLUMN", - "COMMIT", - "CONNECT", - "CONNECTION", - "CONSTRAINT", - "CONSTRAINTS", - "CONTINUE", - "CONVERT", - "CORRESPONDING", - "COUNT", - "CREATE", - "CROSS", - "CURRENT", - "CURRENT_DATE", - "CURRENT_TIME", - "CURRENT_TIMESTAMP", - "CURRENT_USER", - "CURSOR", - "DATE", - "DAY", - "DEALLOCATE", - "DEC", - "DECIMAL", - "DECLARE", - "DEFAULT", - "DEFERRABLE", - "DEFERRED", - "DELETE", - "DESC", - "DESCRIBE", - "DESCRIPTOR", - "DIAGNOSTICS", - "DISCONNECT", - "DISTINCT", - "DOMAIN", - "DOUBLE", - "DROP", - "ELSE", - "END", - "END-EXEC", - "ESCAPE", - "EXCEPT", - "EXCEPTION", - "EXEC", - "EXECUTE", - "EXISTS", - "EXTERNAL", - "EXTRACT", - "FALSE", - "FETCH", - "FIRST", - "FLOAT", - "FOR", - "FOREIGN", - "FORTRAN", - "FOUND", - "FROM", - "FULL", - "GET", - "GLOBAL", -// "GO", - "GOTO", - "GRANT", - "GROUP", - "HAVING", - "HOUR", - "IDENTITY", - "IMMEDIATE", - "IN", - "INCLUDE", - "INDEX", - "INDICATOR", - "INITIALLY", - "INNER", - "INPUT", - "INSENSITIVE", - "INSERT", - "INT", - "INTEGER", - "INTERSECT", - "INTERVAL", - "INTO", - "IS", - "ISOLATION", - "JOIN", - "KEY", - "LANGUAGE", - "LAST", - "LEADING", - "LEFT", - "LEVEL", - "LIKE", - "LOCAL", - "LOWER", - "MATCH", - "MAX", - "MIN", - "MINUTE", - "MODULE", - "MONTH", - "NAMES", - "NATIONAL", - "NATURAL", - "NCHAR", - "NEXT", - "NO", - "NONE", - "NOT", - "NULL", - "NULLIF", - "NUMERIC", - "OCTET_LENGTH", - "OF", - "ON", - "ONLY", - "OPEN", - "OPTION", - "OR", - "ORDER", - "OUTER", - "OUTPUT", - "OVERLAPS", - "PAD", - "PARTIAL", - "PASCAL", - "POSITION", - "PRECISION", - "PREPARE", - "PRESERVE", - "PRIMARY", - "PRIOR", - "PRIVILEGES", - "PROCEDURE", -// "PUBLIC", - "READ", - "REAL", - "REFERENCES", - "RELATIVE", - "RESTRICT", - "REVOKE", - "RIGHT", - "ROLLBACK", - "ROWS", - "SCHEMA", - "SCROLL", - "SECOND", - "SECTION", - "SELECT", - "SESSION", - "SESSION_USER", - "SET", - "SIZE", - "SMALLINT", - "SOME", - "SPACE", - "SQL", - "SQLCA", - "SQLCODE", - "SQLERROR", - "SQLSTATE", - "SQLWARNING", - "SUBSTRING", - "SUM", - "SYSTEM_USER", - "TABLE", - "TEMPORARY", - "THEN", - "TIME", - "TIMESTAMP", - "TIMEZONE_HOUR", - "TIMEZONE_MINUTE", - "TO", - "TRAILING", - "TRANSACTION", - "TRANSLATE", - "TRANSLATION", - "TRIM", - "TRUE", - "UNION", - "UNIQUE", - "UNKNOWN", - "UPDATE", - "UPPER", - "USAGE", - "USER", - "USING", - "VALUE", - "VALUES", - "VARCHAR", - "VARYING", - "VIEW", - "WHEN", - "WHENEVER", - "WHERE", - "WITH", - "WORK", - "WRITE", - "YEAR", - "ZONE", - }; - public static final String[] SQL2003_KEYWORDS = { + public static final String[] SQL2003_RESERVED_KEYWORDS = { "ABS", "ALL", "ALLOCATE", @@ -593,6 +356,218 @@ public class SQLConstants { "YEAR", }; + public static final String[] SQL2003_NON_RESERVED_KEYWORDS = { + "A", + "ABSOLUTE", + "ACTION", + "ADA", + "ADD", + "ADMIN", + "AFTER", + "ALWAYS", + "ASC", + "ASSERTION", + "ASSIGNMENT", + "ATTRIBUTE", + "ATTRIBUTES", + "BEFORE", + "BERNOULLI", + "BREADTH", + "C", + "CASCADE", + "CATALOG", + "CATALOG_NAME", + "CHAIN", + "CHARACTER_SET_CATALOG", + "CHARACTER_SET_NAME", + "CHARACTER_SET_SCHEMA", + "CHARACTERISTICS", + "CHARACTERS", + "CLASS_ORIGIN", + "COBOL", + "COLLATION", + "COLLATION_CATALOG", + "COLLATION_NAME", + "COLLATION_SCHEMA", + "COLUMN_NAME", + "COMMAND_FUNCTION", + "COMMAND_FUNCTION_CODE", + "COMMITTED", + "CONDITION_NUMBER", + "CONNECTION", + "CONNECTION_NAME", + "CONSTRAINT_CATALOG", + "CONSTRAINT_NAME", + "CONSTRAINT_SCHEMA", + "CONSTRAINTS", + "CONSTRUCTOR", + "CONTAINS", + "CONTINUE", + "CURSOR_NAME", + "DATA", + "DATETIME_INTERVAL_CODE", + "DATETIME_INTERVAL_PRECISION", + "DEFAULTS", + "DEFERRABLE", + "DEFERRED", + "DEFINED", + "DEFINER", + "DEGREE", + "DEPTH", + "DERIVED", + "DESC", + "DESCRIPTOR", + "DIAGNOSTICS", + "DISPATCH", + "DOMAIN", + "DYNAMIC_FUNCTION", + "DYNAMIC_FUNCTION_CODE", + "EQUALS", + "EXCEPTION", + "EXCLUDE", + "EXCLUDING", + "FINAL", + "FIRST", + "FOLLOWING", + "FORTRAN", + "FOUND", + "G", + "GENERAL", + "GENERATED", + "GO", + "GOTO", + "GRANTED", + "HIERARCHY", + "IMMEDIATE", + "IMPLEMENTATION", + "INCLUDING", + "INCREMENT", + "INITIALLY", + "INPUT", + "INSTANCE", + "INSTANTIABLE", + "INVOKER", + "ISOLATION", + "K", + "KEY", + "KEY_MEMBER", + "KEY_TYPE", + "LAST", + "LENGTH", + "LEVEL", + "LOCATOR", + "M", + "MAP", + "MATCHED", + "MAXVALUE", + "MESSAGE_LENGTH", + "MESSAGE_OCTET_LENGTH", + "MESSAGE_TEXT", + "MINVALUE", + "MORE", + "MUMPS", + "NAME", + "NAMES", + "NESTING", + "NEXT", + "NORMALIZED", + "NULLABLE", + "NULLS", + "NUMBER", + "OBJECT", + "OCTETS", + "OPTION", + "OPTIONS", + "ORDERING", + "ORDINALITY", + "OTHERS", + "OUTPUT", + "OVERRIDING", + "PAD", + "PARAMETER_MODE", + "PARAMETER_NAME", + "PARAMETER_ORDINAL_POSITION", + "PARAMETER_SPECIFIC_CATALOG", + "PARAMETER_SPECIFIC_NAME", + "PARAMETER_SPECIFIC_SCHEMA", + "PARTIAL", + "PASCAL", + "PATH", + "PLACING", + "PLI", + "PRECEDING", + "PRESERVE", + "PRIOR", + "PRIVILEGES", + "PUBLIC", + "READ", + "RELATIVE", + "REPEATABLE", + "RESTART", + "RESTRICT", + "RETURNED_CARDINALITY", + "RETURNED_LENGTH", + "RETURNED_OCTET_LENGTH", + "RETURNED_SQLSTATE", + "ROLE", + "ROUTINE", + "ROUTINE_CATALOG", + "ROUTINE_NAME", + "ROUTINE_SCHEMA", + "ROW_COUNT", + "SCALE", + "SCHEMA", + "SCHEMA_NAME", + "SCOPE_CATALOG", + "SCOPE_NAME", + "SCOPE_SCHEMA", + "SECTION", + "SECURITY", + "SELF", + "SEQUENCE", + "SERIALIZABLE", + "SERVER_NAME", + "SESSION", + "SETS", + "SIMPLE", + "SIZE", + "SOURCE", + "SPACE", + "SPECIFIC_NAME", + "STATE", + "STATEMENT", + "STRUCTURE", + "STYLE", + "SUBCLASS_ORIGIN", + "TABLE_NAME", + "TEMPORARY", + "TIES", + "TOP_LEVEL_COUNT", + "TRANSACTION", + "TRANSACTION_ACTIVE", + "TRANSACTIONS_COMMITTED", + "TRANSACTIONS_ROLLED_BACK", + "TRANSFORM", + "TRANSFORMS", + "TRIGGER_CATALOG", + "TRIGGER_NAME", + "TRIGGER_SCHEMA", + "TYPE", + "UNBOUNDED", + "UNCOMMITTED", + "UNDER", + "UNNAMED", + "USAGE", + "USER_DEFINED_TYPE_CATALOG", + "USER_DEFINED_TYPE_CODE", + "USER_DEFINED_TYPE_NAME", + "USER_DEFINED_TYPE_SCHEMA", + "VIEW", + "WORK", + "WRITE", + "ZONE" + }; + public static final String[] SQL_EX_KEYWORDS = { "CHANGE", "MODIFY", @@ -602,7 +577,13 @@ public class SQLConstants { "VARCHAR", "VARBINARY", "INTEGER", + "SMALLINT", + "BIGINT", + "NUMBER", + "NUMERIC", + "DECIMAL", "FLOAT", + "DOUBLE", "DATE", "TIME", "TIMESTAMP", @@ -620,6 +601,7 @@ public class SQLConstants { ":NEW", ":OLD", }; + public static final char STRUCT_SEPARATOR = '.'; //$NON-NLS-1$ public static final String DEFAULT_STATEMENT_DELIMITER = ";"; public static final String CONFIG_COLOR_KEYWORD = "org.jkiss.dbeaver.sql.editor.color.keyword.foreground";