This is an automated email from the ASF dual-hosted git repository.

doebele pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/empire-db.git


The following commit(s) were added to refs/heads/master by this push:
     new 447a9390 EMPIREDB-456 DBMSHandler: optimized reservered sql keywords
447a9390 is described below

commit 447a9390ced93bafed896a2f70ab77c8ceb3a052
Author: Rainer Döbele <[email protected]>
AuthorDate: Mon Apr 7 10:22:40 2025 +0200

    EMPIREDB-456
    DBMSHandler: optimized reservered sql keywords
---
 .../main/java/org/apache/empire/db/DBRowSet.java   |   4 +-
 .../org/apache/empire/dbms/DBMSHandlerBase.java    |  35 +-
 .../apache/empire/dbms/derby/DBMSHandlerDerby.java |   5 +-
 .../apache/empire/dbms/hsql/DBMSHandlerHSql.java   |   7 +-
 .../apache/empire/dbms/mysql/DBMSHandlerMySQL.java | 683 ++-------------------
 .../empire/dbms/oracle/DBMSHandlerOracle.java      |   8 +-
 .../dbms/postgresql/DBMSHandlerPostgreSQL.java     | 121 +---
 .../empire/dbms/sqlite/DBMSHandlerSQLite.java      | 153 +----
 .../empire/dbms/sqlserver/DBMSHandlerMSSQL.java    |  11 +-
 9 files changed, 120 insertions(+), 907 deletions(-)

diff --git a/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java 
b/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java
index 44f0dcc6..5cc87393 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java
@@ -438,7 +438,7 @@ public abstract class DBRowSet extends DBExpr implements 
EntityType
     }
 
     /**
-     * Gets all columns of this rowset (e.g. for cmd.select()).
+     * Returns a list of all columns of this rowset (e.g. for cmd.select()).
      * @return all columns of this rowset
      */
     @Override
@@ -448,7 +448,7 @@ public abstract class DBRowSet extends DBExpr implements 
EntityType
     }
 
     /**
-     * Gets all columns of this rowset as an array
+     * Returns an array of all columns of this rowset
      * @return all columns of this rowset
      */
     public DBColumn[] getAllColumns()
diff --git 
a/empire-db/src/main/java/org/apache/empire/dbms/DBMSHandlerBase.java 
b/empire-db/src/main/java/org/apache/empire/dbms/DBMSHandlerBase.java
index 8bc7ab61..dbb22d43 100644
--- a/empire-db/src/main/java/org/apache/empire/dbms/DBMSHandlerBase.java
+++ b/empire-db/src/main/java/org/apache/empire/dbms/DBMSHandlerBase.java
@@ -73,10 +73,11 @@ public abstract class DBMSHandlerBase implements DBMSHandler
                                                                     '/', '.', 
'-', ',', '+', '*', ')', '(',
                                                                     '\'', '&', 
'%', '!', ' '
                                                                   };        
-    protected static final String[] GENERAL_SQL_KEYWORDS = new String[] { 
"user", "group", 
+    protected static final String[] GENERAL_SQL_KEYWORDS = new String[] {
                                                            "table", "column", 
"view", "index", "constraint", 
                                                            "select", "udpate", 
"insert", "alter", "delete", 
-                                                           "order" };        
+                                                           "join", "on", 
"group", "by", "order", "asc", "desc", "all", 
+                                                           "with", "user" };   
     
     protected final Set<String> reservedSQLKeywords;
 
     // Postfix for auto-generated Sequence names
@@ -229,14 +230,36 @@ public abstract class DBMSHandlerBase implements 
DBMSHandler
     /**
      * Constructor
      */
-    protected DBMSHandlerBase()
+    protected DBMSHandlerBase(String[] specificSqlKeywords)
     {
         // Initialize List of reserved Keywords
-        reservedSQLKeywords = new HashSet<String>(GENERAL_SQL_KEYWORDS.length);
-        for (String keyWord:GENERAL_SQL_KEYWORDS){
-             reservedSQLKeywords.add(keyWord);
+        int capacity = GENERAL_SQL_KEYWORDS.length + 
(specificSqlKeywords!=null ? specificSqlKeywords.length : 0);
+        reservedSQLKeywords = new HashSet<String>(capacity);
+        for (String keyWord : GENERAL_SQL_KEYWORDS) {
+            reservedSQLKeywords.add(keyWord);
+        }
+        // Initialize List of reserved Keywords
+        for (String keyWord : specificSqlKeywords) {
+            addSQLKeyword(keyWord);
         }
     }
+    
+    /**
+     * Constructor
+     */
+    protected DBMSHandlerBase()
+    {
+        this(null);
+    }
+
+    /**
+     * Adds an additional SQL Keyword to the keyword list
+     * @param keyWord
+     */
+    protected void addSQLKeyword(String keyWord)
+    {
+        reservedSQLKeywords.add(keyWord.toLowerCase());
+    }
 
     /**
      * checks if the database exists
diff --git 
a/empire-db/src/main/java/org/apache/empire/dbms/derby/DBMSHandlerDerby.java 
b/empire-db/src/main/java/org/apache/empire/dbms/derby/DBMSHandlerDerby.java
index 2c31b380..5d91d41a 100644
--- a/empire-db/src/main/java/org/apache/empire/dbms/derby/DBMSHandlerDerby.java
+++ b/empire-db/src/main/java/org/apache/empire/dbms/derby/DBMSHandlerDerby.java
@@ -49,6 +49,8 @@ public class DBMSHandlerDerby extends DBMSHandlerBase
        // *Deprecated* private static final long serialVersionUID = 1L;
     private static final Logger log = 
LoggerFactory.getLogger(DBMSHandlerDerby.class);
     
+    protected static final String[] DERBY_SQL_KEYWORDS = new String[] { 
"count", "year" };        
+    
     // Properties
     private String databaseName = null;
     // Sequence treatment
@@ -64,8 +66,7 @@ public class DBMSHandlerDerby extends DBMSHandlerBase
     public DBMSHandlerDerby()
     {
         // Add additional reserved keywords
-        reservedSQLKeywords.add("count");
-        reservedSQLKeywords.add("year");
+        super(DERBY_SQL_KEYWORDS);
     }
 
     /**
diff --git 
a/empire-db/src/main/java/org/apache/empire/dbms/hsql/DBMSHandlerHSql.java 
b/empire-db/src/main/java/org/apache/empire/dbms/hsql/DBMSHandlerHSql.java
index 3c16610c..fd3abcc8 100644
--- a/empire-db/src/main/java/org/apache/empire/dbms/hsql/DBMSHandlerHSql.java
+++ b/empire-db/src/main/java/org/apache/empire/dbms/hsql/DBMSHandlerHSql.java
@@ -54,6 +54,9 @@ public class DBMSHandlerHSql extends DBMSHandlerBase
     // *Deprecated* private static final long serialVersionUID = 1L;
     private static final Logger log = 
LoggerFactory.getLogger(DBMSHandlerHSql.class);
     
+    // Additional HSql Keywords
+    protected static final String[] HSQL_KEYWORDS = new String[] { "count" };  
      
+    
     private DBDDLGenerator<?> ddlGenerator = null; // lazy creation
        
     /**
@@ -61,8 +64,8 @@ public class DBMSHandlerHSql extends DBMSHandlerBase
      */
     public DBMSHandlerHSql()
     {
-        // Add "count" to list of reserved keywords
-        reservedSQLKeywords.add("count");
+        // Add additional Keywords
+        super(HSQL_KEYWORDS);
     }
 
     /**
diff --git 
a/empire-db/src/main/java/org/apache/empire/dbms/mysql/DBMSHandlerMySQL.java 
b/empire-db/src/main/java/org/apache/empire/dbms/mysql/DBMSHandlerMySQL.java
index 542093fe..382bc8ba 100644
--- a/empire-db/src/main/java/org/apache/empire/dbms/mysql/DBMSHandlerMySQL.java
+++ b/empire-db/src/main/java/org/apache/empire/dbms/mysql/DBMSHandlerMySQL.java
@@ -57,6 +57,51 @@ public class DBMSHandlerMySQL extends DBMSHandlerBase
     // *Deprecated* private static final long serialVersionUID = 1L;
     private static final Logger log = 
LoggerFactory.getLogger(DBMSHandlerMySQL.class);
 
+    // Additional MySQL Keywords
+    protected static final String[] MYSQL_KEYWORDS = new String[] {     
+        "ACCESSIBLE", "ACCOUNT", "ACTION", "ADD", "AFTER", "AGAINST", 
"AGGREGATE", "ALGORITHM", "ALL", "ALTER", "ALWAYS", "ANALYSE", "ANALYZE", 
"AND", "ANY", "AS", "ASC", "ASCII", 
+        "ASENSITIVE", "AT", "AUTOEXTEND_SIZE", "AUTO_INCREMENT", "AVG", 
"AVG_ROW_LENGTH", "BACKUP", "BEFORE", "BEGIN", "BETWEEN", "BIGINT", "BINARY", 
"BINLOG", "BIT", "BLOB", "BLOCK", 
+        "BOOL", "BOOLEAN", "BOTH", "BTREE", "BY", "BYTE", "CACHE", "CALL", 
"CASCADE", "CASCADED", "CASE", "CATALOG_NAME", "CHAIN", "CHANGE", "CHANGED", 
"CHANNEL", "CHAR", "CHARACTER", 
+        "CHARSET", "CHECK", "CHECKSUM", "CIPHER", "CLASS_ORIGIN", "CLIENT", 
"CLOSE", "COALESCE", "CODE", "COLLATE", "COLLATION", "COLUMN", "COLUMNS", 
"COLUMN_FORMAT", "COLUMN_NAME", 
+        "COMMENT", "COMMIT", "COMMITTED", "COMPACT", "COMPLETION", 
"COMPRESSED", "COMPRESSION", "CONCURRENT", "CONDITION", "CONNECTION", 
"CONSISTENT", "CONSTRAINT", "CONSTRAINT_CATALOG", 
+        "CONSTRAINT_NAME", "CONSTRAINT_SCHEMA", "CONTAINS", "CONTEXT", 
"CONTINUE", "CONVERT", "CPU", "CREATE", "CROSS", "CUBE", "CURRENT", 
"CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", 
+        "CURRENT_USER", "CURSOR", "CURSOR_NAME", "DATA", "DATABASE", 
"DATABASES", "DATAFILE", "DATE", "DATETIME", "DAY", "DAY_HOUR", 
"DAY_MICROSECOND", "DAY_MINUTE", "DAY_SECOND", 
+        "DEALLOCATE", "DEC", "DECIMAL", "DECLARE", "DEFAULT", "DEFAULT_AUTH", 
"DEFINER", "DELAYED", "DELAY_KEY_WRITE", "DELETE", "DESC", "DESCRIBE", 
"DES_KEY_FILE", "DETERMINISTIC", 
+        "DIAGNOSTICS", "DIRECTORY", "DISABLE", "DISCARD", "DISK", "DISTINCT", 
"DISTINCTROW", "DIV", "DO", "DOUBLE", "DROP", "DUAL", "DUMPFILE", "DUPLICATE", 
"DYNAMIC", "EACH", "ELSE", 
+        "ELSEIF", "ENABLE", "ENCLOSED", "ENCRYPTION", "END", "ENDS", "ENGINE", 
"ENGINES", "ENUM", "ERROR", "ERRORS", "ESCAPE", "ESCAPED", "EVENT", "EVENTS", 
"EVERY", "EXCHANGE", "EXECUTE", 
+        "EXISTS", "EXIT", "EXPANSION", "EXPIRE", "EXPLAIN", "EXPORT", 
"EXTENDED", "EXTENT_SIZE", "FALSE", "FAST", "FAULTS", "FETCH", "FIELDS", 
"FILE", "FILE_BLOCK_SIZE", "FILTER", "FIRST", 
+        "FIXED", "FLOAT", "FLOAT4", "FLOAT8", "FLUSH", "FOLLOWS", "FOR", 
"FORCE", "FOREIGN", "FORMAT", "FOUND", "FROM", "FULL", "FULLTEXT", "FUNCTION", 
"GENERAL", "GENERATED", "GEOMETRY", 
+        "GEOMETRYCOLLECTION", "GET", "GET_FORMAT", "GLOBAL", "GRANT", 
"GRANTS", "GROUP", "GROUP_REPLICATION", "HANDLER", "HASH", "HAVING", "HELP", 
"HIGH_PRIORITY", "HOST", "HOSTS", "HOUR", 
+        "HOUR_MICROSECOND", "HOUR_MINUTE", "HOUR_SECOND", "IDENTIFIED", "IF", 
"IGNORE", "IGNORE_SERVER_IDS", "IMPORT", "IN", "INDEX", "INDEXES", "INFILE", 
"INITIAL_SIZE", "INNER", "INOUT", 
+        "INSENSITIVE", "INSERT", "INSERT_METHOD", "INSTALL", "INSTANCE", 
"INT", "INT1", "INT2", "INT3", "INT4", "INT8", "INTEGER", "INTERVAL", "INTO", 
"INVOKER", "IO", "IO_AFTER_GTIDS", 
+        "IO_BEFORE_GTIDS", "IO_THREAD", "IPC", "IS", "ISOLATION", "ISSUER", 
"ITERATE", "JOIN", "JSON", "KEY", "KEYS", "KEY_BLOCK_SIZE", "KILL", "LANGUAGE", 
"LAST", "LEADING", "LEAVE", "LEAVES", 
+        "LEFT", "LESS", "LEVEL", "LIKE", "LIMIT", "LINEAR", "LINES", 
"LINESTRING", "LIST", "LOAD", "LOCAL", "LOCALTIME", "LOCALTIMESTAMP", "LOCK", 
"LOCKS", "LOGFILE", "LOGS", "LONG", "LONGBLOB", 
+        "LONGTEXT", "LOOP", "LOW_PRIORITY", "MASTER", "MASTER_AUTO_POSITION", 
"MASTER_BIND", "MASTER_CONNECT_RETRY", "MASTER_DELAY", 
"MASTER_HEARTBEAT_PERIOD", "MASTER_HOST", "MASTER_LOG_FILE", 
+        "MASTER_LOG_POS", "MASTER_PASSWORD", "MASTER_PORT", 
"MASTER_RETRY_COUNT", "MASTER_SERVER_ID", "MASTER_SSL", "MASTER_SSL_CA", 
"MASTER_SSL_CAPATH", "MASTER_SSL_CERT", "MASTER_SSL_CIPHER", 
+        "MASTER_SSL_CRL", "MASTER_SSL_CRLPATH", "MASTER_SSL_KEY", 
"MASTER_SSL_VERIFY_SERVER_CERT", "MASTER_TLS_VERSION", "MASTER_USER", "MATCH", 
"MAXVALUE", "MAX_CONNECTIONS_PER_HOUR", 
+        "MAX_QUERIES_PER_HOUR", "MAX_ROWS", "MAX_SIZE", "MAX_STATEMENT_TIME", 
"MAX_UPDATES_PER_HOUR", "MAX_USER_CONNECTIONS", "MEDIUM", "MEDIUMBLOB", 
"MEDIUMINT", "MEDIUMTEXT", "MEMORY", "MERGE", 
+        "MESSAGE_TEXT", "MICROSECOND", "MIDDLEINT", "MIGRATE", "MINUTE", 
"MINUTE_MICROSECOND", "MINUTE_SECOND", "MIN_ROWS", "MOD", "MODE", "MODIFIES", 
"MODIFY", "MONTH", "MULTILINESTRING", 
+        "MULTIPOINT", "MULTIPOLYGON", "MUTEX", "MYSQL_ERRNO", "NAME", "NAMES", 
"NATIONAL", "NATURAL", "NCHAR", "NDB", "NDBCLUSTER", "NEVER", "NEW", "NEXT", 
"NO", "NODEGROUP", "NONBLOCKING", "NONE", 
+        "NOT", "NO_WAIT", "NO_WRITE_TO_BINLOG", "NULL", "NUMBER", "NUMERIC", 
"NVARCHAR", "OFFSET", "OLD_PASSWORD", "ON", "ONE", "ONLY", "OPEN", "OPTIMIZE", 
"OPTIMIZER_COSTS", "OPTION", "OPTIONALLY", 
+        "OPTIONS", "OR", "ORDER", "OUT", "OUTER", "OUTFILE", "OWNER", 
"PACK_KEYS", "PAGE", "PARSER", "PARSE_GCOL_EXPR", "PARTIAL", "PARTITION", 
"PARTITIONING", "PARTITIONS", "PASSWORD", "PHASE", 
+        "PLUGIN", "PLUGINS", "PLUGIN_DIR", "POINT", "POLYGON", "PORT", 
"PRECEDES", "PRECISION", "PREPARE", "PRESERVE", "PREV", "PRIMARY", 
"PRIVILEGES", "PROCEDURE", "PROCESSLIST", "PROFILE", 
+        "PROFILES", "PROXY", "PURGE", "QUARTER", "QUERY", "QUICK", "RANGE", 
"READ", "READS", "READ_ONLY", "READ_WRITE", "REAL", "REBUILD", "RECOVER", 
"REDOFILE", "REDO_BUFFER_SIZE", "REDUNDANT", 
+        "REFERENCES", "REGEXP", "RELAY", "RELAYLOG", "RELAY_LOG_FILE", 
"RELAY_LOG_POS", "RELAY_THREAD", "RELEASE", "RELOAD", "REMOVE", "RENAME", 
"REORGANIZE", "REPAIR", "REPEAT", "REPEATABLE", 
+        "REPLACE", "REPLICATE_DO_DB", "REPLICATE_DO_TABLE", 
"REPLICATE_IGNORE_DB", "REPLICATE_IGNORE_TABLE", "REPLICATE_REWRITE_DB", 
"REPLICATE_WILD_DO_TABLE", "REPLICATE_WILD_IGNORE_TABLE", 
+        "REPLICATION", "REQUIRE", "RESET", "RESIGNAL", "RESTORE", "RESTRICT", 
"RESUME", "RETURN", "RETURNED_SQLSTATE", "RETURNS", "REVERSE", "REVOKE", 
"RIGHT", "RLIKE", "ROLLBACK", "ROLLUP", 
+        "ROTATE", "ROUTINE", "ROW", "ROWS", "ROW_COUNT", "ROW_FORMAT", 
"RTREE", "SAVEPOINT", "SCHEDULE", "SCHEMA", "SCHEMAS", "SCHEMA_NAME", "SECOND", 
"SECOND_MICROSECOND", "SECURITY", "SELECT", 
+        "SENSITIVE", "SEPARATOR", "SERIAL", "SERIALIZABLE", "SERVER", 
"SESSION", "SET", "SHARE", "SHOW", "SHUTDOWN", "SIGNAL", "SIGNED", "SIMPLE", 
"SLAVE", "SLOW", "SMALLINT", "SNAPSHOT", "SOCKET", 
+        "SOME", "SONAME", "SOUNDS", "SOURCE", "SPATIAL", "SPECIFIC", "SQL", 
"SQLEXCEPTION", "SQLSTATE", "SQLWARNING", "SQL_AFTER_GTIDS", 
"SQL_AFTER_MTS_GAPS", "SQL_BEFORE_GTIDS", "SQL_BIG_RESULT", 
+        "SQL_BUFFER_RESULT", "SQL_CACHE", "SQL_CALC_FOUND_ROWS", 
"SQL_NO_CACHE", "SQL_SMALL_RESULT", "SQL_THREAD", "SQL_TSI_DAY", 
"SQL_TSI_HOUR", "SQL_TSI_MINUTE", "SQL_TSI_MONTH", "SQL_TSI_QUARTER", 
+        "SQL_TSI_SECOND", "SQL_TSI_WEEK", "SQL_TSI_YEAR", "SSL", "STACKED", 
"START", "STARTING", "STARTS", "STATS_AUTO_RECALC", "STATS_PERSISTENT", 
"STATS_SAMPLE_PAGES", "STATUS", "STOP", "STORAGE", 
+        "STORED", "STRAIGHT_JOIN", "STRING", "SUBCLASS_ORIGIN", "SUBJECT", 
"SUBPARTITION", "SUBPARTITIONS", "SUPER", "SUSPEND", "SWAPS", "SWITCHES", 
"TABLE", "TABLES", "TABLESPACE", "TABLE_CHECKSUM", 
+        "TABLE_NAME", "TEMPORARY", "TEMPTABLE", "TERMINATED", "TEXT", "THAN", 
"THEN", "TIME", "TIMESTAMP", "TIMESTAMPADD", "TIMESTAMPDIFF", "TINYBLOB", 
"TINYINT", "TINYTEXT", "TO", "TRAILING", 
+        "TRANSACTION", "TRIGGER", "TRIGGERS", "TRUE", "TRUNCATE", "TYPE", 
"TYPES", "UNCOMMITTED", "UNDEFINED", "UNDO", "UNDOFILE", "UNDO_BUFFER_SIZE", 
"UNICODE", "UNINSTALL", "UNION", "UNIQUE", 
+        "UNKNOWN", "UNLOCK", "UNSIGNED", "UNTIL", "UPDATE", "UPGRADE", 
"USAGE", "USE", "USER", "USER_RESOURCES", "USE_FRM", "USING", "UTC_DATE", 
"UTC_TIME", "UTC_TIMESTAMP", "VALIDATION", "VALUE", 
+        "VALUES", "VARBINARY", "VARCHAR", "VARCHARACTER", "VARIABLES", 
"VARYING", "VIEW", "VIRTUAL", "WAIT", "WARNINGS", "WEEK", "WEIGHT_STRING", 
"WHEN", "WHERE", "WHILE", "WITH", "WITHOUT", "WORK", 
+        "WRAPPER", "WRITE", "X509", "XA", "XID", "XML", "XOR", "YEAR", 
"YEAR_MONTH", "ZEROFILL"
+    };
+    
     /**
      * Defines the MySQL command type.
      */ 
@@ -174,642 +219,8 @@ public class DBMSHandlerMySQL extends DBMSHandlerBase
      */
     public DBMSHandlerMySQL()
     {
-        // Default Constructor
-       setReservedKeywords();
-    }
-
-    private void addReservedKeyWord(final String keyWord){
-        boolean added = reservedSQLKeywords.add(keyWord.toLowerCase());
-        if(!added){
-            log.debug("Existing keyWord added: " + keyWord);
-        }
-    }
-    
-    private void setReservedKeywords(){
-        // list of reserved keywords
-        // https://dev.mysql.com/doc/refman/5.7/en/keywords.html
-       addReservedKeyWord("ACCESSIBLE".toLowerCase());
-       addReservedKeyWord("ACCOUNT".toLowerCase());
-       addReservedKeyWord("ACTION".toLowerCase());
-       addReservedKeyWord("ADD".toLowerCase());
-       addReservedKeyWord("AFTER".toLowerCase());
-       addReservedKeyWord("AGAINST".toLowerCase());
-       addReservedKeyWord("AGGREGATE".toLowerCase());
-       addReservedKeyWord("ALGORITHM".toLowerCase());
-       addReservedKeyWord("ALL".toLowerCase());
-       addReservedKeyWord("ALTER".toLowerCase());
-       addReservedKeyWord("ALWAYS".toLowerCase());
-       addReservedKeyWord("ANALYSE".toLowerCase());
-       addReservedKeyWord("ANALYZE".toLowerCase());
-       addReservedKeyWord("AND".toLowerCase());
-       addReservedKeyWord("ANY".toLowerCase());
-       addReservedKeyWord("AS".toLowerCase());
-       addReservedKeyWord("ASC".toLowerCase());
-       addReservedKeyWord("ASCII".toLowerCase());
-       addReservedKeyWord("ASENSITIVE".toLowerCase());
-       addReservedKeyWord("AT".toLowerCase());
-       addReservedKeyWord("AUTOEXTEND_SIZE".toLowerCase());
-       addReservedKeyWord("AUTO_INCREMENT".toLowerCase());
-       addReservedKeyWord("AVG".toLowerCase());
-       addReservedKeyWord("AVG_ROW_LENGTH".toLowerCase());
-       addReservedKeyWord("BACKUP".toLowerCase());
-       addReservedKeyWord("BEFORE".toLowerCase());
-       addReservedKeyWord("BEGIN".toLowerCase());
-       addReservedKeyWord("BETWEEN".toLowerCase());
-       addReservedKeyWord("BIGINT".toLowerCase());
-       addReservedKeyWord("BINARY".toLowerCase());
-       addReservedKeyWord("BINLOG".toLowerCase());
-       addReservedKeyWord("BIT".toLowerCase());
-       addReservedKeyWord("BLOB".toLowerCase());
-       addReservedKeyWord("BLOCK".toLowerCase());
-       addReservedKeyWord("BOOL".toLowerCase());
-       addReservedKeyWord("BOOLEAN".toLowerCase());
-       addReservedKeyWord("BOTH".toLowerCase());
-       addReservedKeyWord("BTREE".toLowerCase());
-       addReservedKeyWord("BY".toLowerCase());
-       addReservedKeyWord("BYTE".toLowerCase());
-       addReservedKeyWord("CACHE".toLowerCase());
-       addReservedKeyWord("CALL".toLowerCase());
-       addReservedKeyWord("CASCADE".toLowerCase());
-       addReservedKeyWord("CASCADED".toLowerCase());
-       addReservedKeyWord("CASE".toLowerCase());
-       addReservedKeyWord("CATALOG_NAME".toLowerCase());
-       addReservedKeyWord("CHAIN".toLowerCase());
-       addReservedKeyWord("CHANGE".toLowerCase());
-       addReservedKeyWord("CHANGED".toLowerCase());
-       addReservedKeyWord("CHANNEL".toLowerCase());
-       addReservedKeyWord("CHAR".toLowerCase());
-       addReservedKeyWord("CHARACTER".toLowerCase());
-       addReservedKeyWord("CHARSET".toLowerCase());
-       addReservedKeyWord("CHECK".toLowerCase());
-       addReservedKeyWord("CHECKSUM".toLowerCase());
-       addReservedKeyWord("CIPHER".toLowerCase());
-       addReservedKeyWord("CLASS_ORIGIN".toLowerCase());
-       addReservedKeyWord("CLIENT".toLowerCase());
-       addReservedKeyWord("CLOSE".toLowerCase());
-       addReservedKeyWord("COALESCE".toLowerCase());
-       addReservedKeyWord("CODE".toLowerCase());
-       addReservedKeyWord("COLLATE".toLowerCase());
-       addReservedKeyWord("COLLATION".toLowerCase());
-       addReservedKeyWord("COLUMN".toLowerCase());
-       addReservedKeyWord("COLUMNS".toLowerCase());
-       addReservedKeyWord("COLUMN_FORMAT".toLowerCase());
-       addReservedKeyWord("COLUMN_NAME".toLowerCase());
-       addReservedKeyWord("COMMENT".toLowerCase());
-       addReservedKeyWord("COMMIT".toLowerCase());
-       addReservedKeyWord("COMMITTED".toLowerCase());
-       addReservedKeyWord("COMPACT".toLowerCase());
-       addReservedKeyWord("COMPLETION".toLowerCase());
-       addReservedKeyWord("COMPRESSED".toLowerCase());
-       addReservedKeyWord("COMPRESSION".toLowerCase());
-       addReservedKeyWord("CONCURRENT".toLowerCase());
-       addReservedKeyWord("CONDITION".toLowerCase());
-       addReservedKeyWord("CONNECTION".toLowerCase());
-       addReservedKeyWord("CONSISTENT".toLowerCase());
-       addReservedKeyWord("CONSTRAINT".toLowerCase());
-       addReservedKeyWord("CONSTRAINT_CATALOG".toLowerCase());
-       addReservedKeyWord("CONSTRAINT_NAME".toLowerCase());
-       addReservedKeyWord("CONSTRAINT_SCHEMA".toLowerCase());
-       addReservedKeyWord("CONTAINS".toLowerCase());
-       addReservedKeyWord("CONTEXT".toLowerCase());
-       addReservedKeyWord("CONTINUE".toLowerCase());
-       addReservedKeyWord("CONVERT".toLowerCase());
-       addReservedKeyWord("CPU".toLowerCase());
-       addReservedKeyWord("CREATE".toLowerCase());
-       addReservedKeyWord("CROSS".toLowerCase());
-       addReservedKeyWord("CUBE".toLowerCase());
-       addReservedKeyWord("CURRENT".toLowerCase());
-       addReservedKeyWord("CURRENT_DATE".toLowerCase());
-       addReservedKeyWord("CURRENT_TIME".toLowerCase());
-       addReservedKeyWord("CURRENT_TIMESTAMP".toLowerCase());
-       addReservedKeyWord("CURRENT_USER".toLowerCase());
-       addReservedKeyWord("CURSOR".toLowerCase());
-       addReservedKeyWord("CURSOR_NAME".toLowerCase());
-       addReservedKeyWord("DATA".toLowerCase());
-       addReservedKeyWord("DATABASE".toLowerCase());
-       addReservedKeyWord("DATABASES".toLowerCase());
-       addReservedKeyWord("DATAFILE".toLowerCase());
-       addReservedKeyWord("DATE".toLowerCase());
-       addReservedKeyWord("DATETIME".toLowerCase());
-       addReservedKeyWord("DAY".toLowerCase());
-       addReservedKeyWord("DAY_HOUR".toLowerCase());
-       addReservedKeyWord("DAY_MICROSECOND".toLowerCase());
-       addReservedKeyWord("DAY_MINUTE".toLowerCase());
-       addReservedKeyWord("DAY_SECOND".toLowerCase());
-       addReservedKeyWord("DEALLOCATE".toLowerCase());
-       addReservedKeyWord("DEC".toLowerCase());
-       addReservedKeyWord("DECIMAL".toLowerCase());
-       addReservedKeyWord("DECLARE".toLowerCase());
-       addReservedKeyWord("DEFAULT".toLowerCase());
-       addReservedKeyWord("DEFAULT_AUTH".toLowerCase());
-       addReservedKeyWord("DEFINER".toLowerCase());
-       addReservedKeyWord("DELAYED".toLowerCase());
-       addReservedKeyWord("DELAY_KEY_WRITE".toLowerCase());
-       addReservedKeyWord("DELETE".toLowerCase());
-       addReservedKeyWord("DESC".toLowerCase());
-       addReservedKeyWord("DESCRIBE".toLowerCase());
-       addReservedKeyWord("DES_KEY_FILE".toLowerCase());
-       addReservedKeyWord("DETERMINISTIC".toLowerCase());
-       addReservedKeyWord("DIAGNOSTICS".toLowerCase());
-       addReservedKeyWord("DIRECTORY".toLowerCase());
-       addReservedKeyWord("DISABLE".toLowerCase());
-       addReservedKeyWord("DISCARD".toLowerCase());
-       addReservedKeyWord("DISK".toLowerCase());
-       addReservedKeyWord("DISTINCT".toLowerCase());
-       addReservedKeyWord("DISTINCTROW".toLowerCase());
-       addReservedKeyWord("DIV".toLowerCase());
-       addReservedKeyWord("DO".toLowerCase());
-       addReservedKeyWord("DOUBLE".toLowerCase());
-       addReservedKeyWord("DROP".toLowerCase());
-       addReservedKeyWord("DUAL".toLowerCase());
-       addReservedKeyWord("DUMPFILE".toLowerCase());
-       addReservedKeyWord("DUPLICATE".toLowerCase());
-       addReservedKeyWord("DYNAMIC".toLowerCase());
-       addReservedKeyWord("EACH".toLowerCase());
-       addReservedKeyWord("ELSE".toLowerCase());
-       addReservedKeyWord("ELSEIF".toLowerCase());
-       addReservedKeyWord("ENABLE".toLowerCase());
-       addReservedKeyWord("ENCLOSED".toLowerCase());
-       addReservedKeyWord("ENCRYPTION".toLowerCase());
-       addReservedKeyWord("END".toLowerCase());
-       addReservedKeyWord("ENDS".toLowerCase());
-       addReservedKeyWord("ENGINE".toLowerCase());
-       addReservedKeyWord("ENGINES".toLowerCase());
-       addReservedKeyWord("ENUM".toLowerCase());
-       addReservedKeyWord("ERROR".toLowerCase());
-       addReservedKeyWord("ERRORS".toLowerCase());
-       addReservedKeyWord("ESCAPE".toLowerCase());
-       addReservedKeyWord("ESCAPED".toLowerCase());
-       addReservedKeyWord("EVENT".toLowerCase());
-       addReservedKeyWord("EVENTS".toLowerCase());
-       addReservedKeyWord("EVERY".toLowerCase());
-       addReservedKeyWord("EXCHANGE".toLowerCase());
-       addReservedKeyWord("EXECUTE".toLowerCase());
-       addReservedKeyWord("EXISTS".toLowerCase());
-       addReservedKeyWord("EXIT".toLowerCase());
-       addReservedKeyWord("EXPANSION".toLowerCase());
-       addReservedKeyWord("EXPIRE".toLowerCase());
-       addReservedKeyWord("EXPLAIN".toLowerCase());
-       addReservedKeyWord("EXPORT".toLowerCase());
-       addReservedKeyWord("EXTENDED".toLowerCase());
-       addReservedKeyWord("EXTENT_SIZE".toLowerCase());
-       addReservedKeyWord("FALSE".toLowerCase());
-       addReservedKeyWord("FAST".toLowerCase());
-       addReservedKeyWord("FAULTS".toLowerCase());
-       addReservedKeyWord("FETCH".toLowerCase());
-       addReservedKeyWord("FIELDS".toLowerCase());
-       addReservedKeyWord("FILE".toLowerCase());
-       addReservedKeyWord("FILE_BLOCK_SIZE".toLowerCase());
-       addReservedKeyWord("FILTER".toLowerCase());
-       addReservedKeyWord("FIRST".toLowerCase());
-       addReservedKeyWord("FIXED".toLowerCase());
-       addReservedKeyWord("FLOAT".toLowerCase());
-       addReservedKeyWord("FLOAT4".toLowerCase());
-       addReservedKeyWord("FLOAT8".toLowerCase());
-       addReservedKeyWord("FLUSH".toLowerCase());
-       addReservedKeyWord("FOLLOWS".toLowerCase());
-       addReservedKeyWord("FOR".toLowerCase());
-       addReservedKeyWord("FORCE".toLowerCase());
-       addReservedKeyWord("FOREIGN".toLowerCase());
-       addReservedKeyWord("FORMAT".toLowerCase());
-       addReservedKeyWord("FOUND".toLowerCase());
-       addReservedKeyWord("FROM".toLowerCase());
-       addReservedKeyWord("FULL".toLowerCase());
-       addReservedKeyWord("FULLTEXT".toLowerCase());
-       addReservedKeyWord("FUNCTION".toLowerCase());
-       addReservedKeyWord("GENERAL".toLowerCase());
-       addReservedKeyWord("GENERATED".toLowerCase());
-       addReservedKeyWord("GEOMETRY".toLowerCase());
-       addReservedKeyWord("GEOMETRYCOLLECTION".toLowerCase());
-       addReservedKeyWord("GET".toLowerCase());
-       addReservedKeyWord("GET_FORMAT".toLowerCase());
-       addReservedKeyWord("GLOBAL".toLowerCase());
-       addReservedKeyWord("GRANT".toLowerCase());
-       addReservedKeyWord("GRANTS".toLowerCase());
-       addReservedKeyWord("GROUP".toLowerCase());
-       addReservedKeyWord("GROUP_REPLICATION".toLowerCase());
-       addReservedKeyWord("HANDLER".toLowerCase());
-       addReservedKeyWord("HASH".toLowerCase());
-       addReservedKeyWord("HAVING".toLowerCase());
-       addReservedKeyWord("HELP".toLowerCase());
-       addReservedKeyWord("HIGH_PRIORITY".toLowerCase());
-       addReservedKeyWord("HOST".toLowerCase());
-       addReservedKeyWord("HOSTS".toLowerCase());
-       addReservedKeyWord("HOUR".toLowerCase());
-       addReservedKeyWord("HOUR_MICROSECOND".toLowerCase());
-       addReservedKeyWord("HOUR_MINUTE".toLowerCase());
-       addReservedKeyWord("HOUR_SECOND".toLowerCase());
-       addReservedKeyWord("IDENTIFIED".toLowerCase());
-       addReservedKeyWord("IF".toLowerCase());
-       addReservedKeyWord("IGNORE".toLowerCase());
-       addReservedKeyWord("IGNORE_SERVER_IDS".toLowerCase());
-       addReservedKeyWord("IMPORT".toLowerCase());
-       addReservedKeyWord("IN".toLowerCase());
-       addReservedKeyWord("INDEX".toLowerCase());
-       addReservedKeyWord("INDEXES".toLowerCase());
-       addReservedKeyWord("INFILE".toLowerCase());
-       addReservedKeyWord("INITIAL_SIZE".toLowerCase());
-       addReservedKeyWord("INNER".toLowerCase());
-       addReservedKeyWord("INOUT".toLowerCase());
-       addReservedKeyWord("INSENSITIVE".toLowerCase());
-       addReservedKeyWord("INSERT".toLowerCase());
-       addReservedKeyWord("INSERT_METHOD".toLowerCase());
-       addReservedKeyWord("INSTALL".toLowerCase());
-       addReservedKeyWord("INSTANCE".toLowerCase());
-       addReservedKeyWord("INT".toLowerCase());
-       addReservedKeyWord("INT1".toLowerCase());
-       addReservedKeyWord("INT2".toLowerCase());
-       addReservedKeyWord("INT3".toLowerCase());
-       addReservedKeyWord("INT4".toLowerCase());
-       addReservedKeyWord("INT8".toLowerCase());
-       addReservedKeyWord("INTEGER".toLowerCase());
-       addReservedKeyWord("INTERVAL".toLowerCase());
-       addReservedKeyWord("INTO".toLowerCase());
-       addReservedKeyWord("INVOKER".toLowerCase());
-       addReservedKeyWord("IO".toLowerCase());
-       addReservedKeyWord("IO_AFTER_GTIDS".toLowerCase());
-       addReservedKeyWord("IO_BEFORE_GTIDS".toLowerCase());
-       addReservedKeyWord("IO_THREAD".toLowerCase());
-       addReservedKeyWord("IPC".toLowerCase());
-       addReservedKeyWord("IS".toLowerCase());
-       addReservedKeyWord("ISOLATION".toLowerCase());
-       addReservedKeyWord("ISSUER".toLowerCase());
-       addReservedKeyWord("ITERATE".toLowerCase());
-       addReservedKeyWord("JOIN".toLowerCase());
-       addReservedKeyWord("JSON".toLowerCase());
-       addReservedKeyWord("KEY".toLowerCase());
-       addReservedKeyWord("KEYS".toLowerCase());
-       addReservedKeyWord("KEY_BLOCK_SIZE".toLowerCase());
-       addReservedKeyWord("KILL".toLowerCase());
-       addReservedKeyWord("LANGUAGE".toLowerCase());
-       addReservedKeyWord("LAST".toLowerCase());
-       addReservedKeyWord("LEADING".toLowerCase());
-       addReservedKeyWord("LEAVE".toLowerCase());
-       addReservedKeyWord("LEAVES".toLowerCase());
-       addReservedKeyWord("LEFT".toLowerCase());
-       addReservedKeyWord("LESS".toLowerCase());
-       addReservedKeyWord("LEVEL".toLowerCase());
-       addReservedKeyWord("LIKE".toLowerCase());
-       addReservedKeyWord("LIMIT".toLowerCase());
-       addReservedKeyWord("LINEAR".toLowerCase());
-       addReservedKeyWord("LINES".toLowerCase());
-       addReservedKeyWord("LINESTRING".toLowerCase());
-       addReservedKeyWord("LIST".toLowerCase());
-       addReservedKeyWord("LOAD".toLowerCase());
-       addReservedKeyWord("LOCAL".toLowerCase());
-       addReservedKeyWord("LOCALTIME".toLowerCase());
-       addReservedKeyWord("LOCALTIMESTAMP".toLowerCase());
-       addReservedKeyWord("LOCK".toLowerCase());
-       addReservedKeyWord("LOCKS".toLowerCase());
-       addReservedKeyWord("LOGFILE".toLowerCase());
-       addReservedKeyWord("LOGS".toLowerCase());
-       addReservedKeyWord("LONG".toLowerCase());
-       addReservedKeyWord("LONGBLOB".toLowerCase());
-       addReservedKeyWord("LONGTEXT".toLowerCase());
-       addReservedKeyWord("LOOP".toLowerCase());
-       addReservedKeyWord("LOW_PRIORITY".toLowerCase());
-       addReservedKeyWord("MASTER".toLowerCase());
-       addReservedKeyWord("MASTER_AUTO_POSITION".toLowerCase());
-       addReservedKeyWord("MASTER_BIND".toLowerCase());
-       addReservedKeyWord("MASTER_CONNECT_RETRY".toLowerCase());
-       addReservedKeyWord("MASTER_DELAY".toLowerCase());
-       addReservedKeyWord("MASTER_HEARTBEAT_PERIOD".toLowerCase());
-       addReservedKeyWord("MASTER_HOST".toLowerCase());
-       addReservedKeyWord("MASTER_LOG_FILE".toLowerCase());
-       addReservedKeyWord("MASTER_LOG_POS".toLowerCase());
-       addReservedKeyWord("MASTER_PASSWORD".toLowerCase());
-       addReservedKeyWord("MASTER_PORT".toLowerCase());
-       addReservedKeyWord("MASTER_RETRY_COUNT".toLowerCase());
-       addReservedKeyWord("MASTER_SERVER_ID".toLowerCase());
-       addReservedKeyWord("MASTER_SSL".toLowerCase());
-       addReservedKeyWord("MASTER_SSL_CA".toLowerCase());
-       addReservedKeyWord("MASTER_SSL_CAPATH".toLowerCase());
-       addReservedKeyWord("MASTER_SSL_CERT".toLowerCase());
-       addReservedKeyWord("MASTER_SSL_CIPHER".toLowerCase());
-       addReservedKeyWord("MASTER_SSL_CRL".toLowerCase());
-       addReservedKeyWord("MASTER_SSL_CRLPATH".toLowerCase());
-       addReservedKeyWord("MASTER_SSL_KEY".toLowerCase());
-       addReservedKeyWord("MASTER_SSL_VERIFY_SERVER_CERT".toLowerCase());
-       addReservedKeyWord("MASTER_TLS_VERSION".toLowerCase());
-       addReservedKeyWord("MASTER_USER".toLowerCase());
-       addReservedKeyWord("MATCH".toLowerCase());
-       addReservedKeyWord("MAXVALUE".toLowerCase());
-       addReservedKeyWord("MAX_CONNECTIONS_PER_HOUR".toLowerCase());
-       addReservedKeyWord("MAX_QUERIES_PER_HOUR".toLowerCase());
-       addReservedKeyWord("MAX_ROWS".toLowerCase());
-       addReservedKeyWord("MAX_SIZE".toLowerCase());
-       addReservedKeyWord("MAX_STATEMENT_TIME".toLowerCase());
-       addReservedKeyWord("MAX_UPDATES_PER_HOUR".toLowerCase());
-       addReservedKeyWord("MAX_USER_CONNECTIONS".toLowerCase());
-       addReservedKeyWord("MEDIUM".toLowerCase());
-       addReservedKeyWord("MEDIUMBLOB".toLowerCase());
-       addReservedKeyWord("MEDIUMINT".toLowerCase());
-       addReservedKeyWord("MEDIUMTEXT".toLowerCase());
-       addReservedKeyWord("MEMORY".toLowerCase());
-       addReservedKeyWord("MERGE".toLowerCase());
-       addReservedKeyWord("MESSAGE_TEXT".toLowerCase());
-       addReservedKeyWord("MICROSECOND".toLowerCase());
-       addReservedKeyWord("MIDDLEINT".toLowerCase());
-       addReservedKeyWord("MIGRATE".toLowerCase());
-       addReservedKeyWord("MINUTE".toLowerCase());
-       addReservedKeyWord("MINUTE_MICROSECOND".toLowerCase());
-       addReservedKeyWord("MINUTE_SECOND".toLowerCase());
-       addReservedKeyWord("MIN_ROWS".toLowerCase());
-       addReservedKeyWord("MOD".toLowerCase());
-       addReservedKeyWord("MODE".toLowerCase());
-       addReservedKeyWord("MODIFIES".toLowerCase());
-       addReservedKeyWord("MODIFY".toLowerCase());
-       addReservedKeyWord("MONTH".toLowerCase());
-       addReservedKeyWord("MULTILINESTRING".toLowerCase());
-       addReservedKeyWord("MULTIPOINT".toLowerCase());
-       addReservedKeyWord("MULTIPOLYGON".toLowerCase());
-       addReservedKeyWord("MUTEX".toLowerCase());
-       addReservedKeyWord("MYSQL_ERRNO".toLowerCase());
-       addReservedKeyWord("NAME".toLowerCase());
-       addReservedKeyWord("NAMES".toLowerCase());
-       addReservedKeyWord("NATIONAL".toLowerCase());
-       addReservedKeyWord("NATURAL".toLowerCase());
-       addReservedKeyWord("NCHAR".toLowerCase());
-       addReservedKeyWord("NDB".toLowerCase());
-       addReservedKeyWord("NDBCLUSTER".toLowerCase());
-       addReservedKeyWord("NEVER".toLowerCase());
-       addReservedKeyWord("NEW".toLowerCase());
-       addReservedKeyWord("NEXT".toLowerCase());
-       addReservedKeyWord("NO".toLowerCase());
-       addReservedKeyWord("NODEGROUP".toLowerCase());
-       addReservedKeyWord("NONBLOCKING".toLowerCase());
-       addReservedKeyWord("NONE".toLowerCase());
-       addReservedKeyWord("NOT".toLowerCase());
-       addReservedKeyWord("NO_WAIT".toLowerCase());
-       addReservedKeyWord("NO_WRITE_TO_BINLOG".toLowerCase());
-       addReservedKeyWord("NULL".toLowerCase());
-       addReservedKeyWord("NUMBER".toLowerCase());
-       addReservedKeyWord("NUMERIC".toLowerCase());
-       addReservedKeyWord("NVARCHAR".toLowerCase());
-       addReservedKeyWord("OFFSET".toLowerCase());
-       addReservedKeyWord("OLD_PASSWORD".toLowerCase());
-       addReservedKeyWord("ON".toLowerCase());
-       addReservedKeyWord("ONE".toLowerCase());
-       addReservedKeyWord("ONLY".toLowerCase());
-       addReservedKeyWord("OPEN".toLowerCase());
-       addReservedKeyWord("OPTIMIZE".toLowerCase());
-       addReservedKeyWord("OPTIMIZER_COSTS".toLowerCase());
-       addReservedKeyWord("OPTION".toLowerCase());
-       addReservedKeyWord("OPTIONALLY".toLowerCase());
-       addReservedKeyWord("OPTIONS".toLowerCase());
-       addReservedKeyWord("OR".toLowerCase());
-       addReservedKeyWord("ORDER".toLowerCase());
-       addReservedKeyWord("OUT".toLowerCase());
-       addReservedKeyWord("OUTER".toLowerCase());
-       addReservedKeyWord("OUTFILE".toLowerCase());
-       addReservedKeyWord("OWNER".toLowerCase());
-       addReservedKeyWord("PACK_KEYS".toLowerCase());
-       addReservedKeyWord("PAGE".toLowerCase());
-       addReservedKeyWord("PARSER".toLowerCase());
-       addReservedKeyWord("PARSE_GCOL_EXPR".toLowerCase());
-       addReservedKeyWord("PARTIAL".toLowerCase());
-       addReservedKeyWord("PARTITION".toLowerCase());
-       addReservedKeyWord("PARTITIONING".toLowerCase());
-       addReservedKeyWord("PARTITIONS".toLowerCase());
-       addReservedKeyWord("PASSWORD".toLowerCase());
-       addReservedKeyWord("PHASE".toLowerCase());
-       addReservedKeyWord("PLUGIN".toLowerCase());
-       addReservedKeyWord("PLUGINS".toLowerCase());
-       addReservedKeyWord("PLUGIN_DIR".toLowerCase());
-       addReservedKeyWord("POINT".toLowerCase());
-       addReservedKeyWord("POLYGON".toLowerCase());
-       addReservedKeyWord("PORT".toLowerCase());
-       addReservedKeyWord("PRECEDES".toLowerCase());
-       addReservedKeyWord("PRECISION".toLowerCase());
-       addReservedKeyWord("PREPARE".toLowerCase());
-       addReservedKeyWord("PRESERVE".toLowerCase());
-       addReservedKeyWord("PREV".toLowerCase());
-       addReservedKeyWord("PRIMARY".toLowerCase());
-       addReservedKeyWord("PRIVILEGES".toLowerCase());
-       addReservedKeyWord("PROCEDURE".toLowerCase());
-       addReservedKeyWord("PROCESSLIST".toLowerCase());
-       addReservedKeyWord("PROFILE".toLowerCase());
-       addReservedKeyWord("PROFILES".toLowerCase());
-       addReservedKeyWord("PROXY".toLowerCase());
-       addReservedKeyWord("PURGE".toLowerCase());
-       addReservedKeyWord("QUARTER".toLowerCase());
-       addReservedKeyWord("QUERY".toLowerCase());
-       addReservedKeyWord("QUICK".toLowerCase());
-       addReservedKeyWord("RANGE".toLowerCase());
-       addReservedKeyWord("READ".toLowerCase());
-       addReservedKeyWord("READS".toLowerCase());
-       addReservedKeyWord("READ_ONLY".toLowerCase());
-       addReservedKeyWord("READ_WRITE".toLowerCase());
-       addReservedKeyWord("REAL".toLowerCase());
-       addReservedKeyWord("REBUILD".toLowerCase());
-       addReservedKeyWord("RECOVER".toLowerCase());
-       addReservedKeyWord("REDOFILE".toLowerCase());
-       addReservedKeyWord("REDO_BUFFER_SIZE".toLowerCase());
-       addReservedKeyWord("REDUNDANT".toLowerCase());
-       addReservedKeyWord("REFERENCES".toLowerCase());
-       addReservedKeyWord("REGEXP".toLowerCase());
-       addReservedKeyWord("RELAY".toLowerCase());
-       addReservedKeyWord("RELAYLOG".toLowerCase());
-       addReservedKeyWord("RELAY_LOG_FILE".toLowerCase());
-       addReservedKeyWord("RELAY_LOG_POS".toLowerCase());
-       addReservedKeyWord("RELAY_THREAD".toLowerCase());
-       addReservedKeyWord("RELEASE".toLowerCase());
-       addReservedKeyWord("RELOAD".toLowerCase());
-       addReservedKeyWord("REMOVE".toLowerCase());
-       addReservedKeyWord("RENAME".toLowerCase());
-       addReservedKeyWord("REORGANIZE".toLowerCase());
-       addReservedKeyWord("REPAIR".toLowerCase());
-       addReservedKeyWord("REPEAT".toLowerCase());
-       addReservedKeyWord("REPEATABLE".toLowerCase());
-       addReservedKeyWord("REPLACE".toLowerCase());
-       addReservedKeyWord("REPLICATE_DO_DB".toLowerCase());
-       addReservedKeyWord("REPLICATE_DO_TABLE".toLowerCase());
-       addReservedKeyWord("REPLICATE_IGNORE_DB".toLowerCase());
-       addReservedKeyWord("REPLICATE_IGNORE_TABLE".toLowerCase());
-       addReservedKeyWord("REPLICATE_REWRITE_DB".toLowerCase());
-       addReservedKeyWord("REPLICATE_WILD_DO_TABLE".toLowerCase());
-       addReservedKeyWord("REPLICATE_WILD_IGNORE_TABLE".toLowerCase());
-       addReservedKeyWord("REPLICATION".toLowerCase());
-       addReservedKeyWord("REQUIRE".toLowerCase());
-       addReservedKeyWord("RESET".toLowerCase());
-       addReservedKeyWord("RESIGNAL".toLowerCase());
-       addReservedKeyWord("RESTORE".toLowerCase());
-       addReservedKeyWord("RESTRICT".toLowerCase());
-       addReservedKeyWord("RESUME".toLowerCase());
-       addReservedKeyWord("RETURN".toLowerCase());
-       addReservedKeyWord("RETURNED_SQLSTATE".toLowerCase());
-       addReservedKeyWord("RETURNS".toLowerCase());
-       addReservedKeyWord("REVERSE".toLowerCase());
-       addReservedKeyWord("REVOKE".toLowerCase());
-       addReservedKeyWord("RIGHT".toLowerCase());
-       addReservedKeyWord("RLIKE".toLowerCase());
-       addReservedKeyWord("ROLLBACK".toLowerCase());
-       addReservedKeyWord("ROLLUP".toLowerCase());
-       addReservedKeyWord("ROTATE".toLowerCase());
-       addReservedKeyWord("ROUTINE".toLowerCase());
-       addReservedKeyWord("ROW".toLowerCase());
-       addReservedKeyWord("ROWS".toLowerCase());
-       addReservedKeyWord("ROW_COUNT".toLowerCase());
-       addReservedKeyWord("ROW_FORMAT".toLowerCase());
-       addReservedKeyWord("RTREE".toLowerCase());
-       addReservedKeyWord("SAVEPOINT".toLowerCase());
-       addReservedKeyWord("SCHEDULE".toLowerCase());
-       addReservedKeyWord("SCHEMA".toLowerCase());
-       addReservedKeyWord("SCHEMAS".toLowerCase());
-       addReservedKeyWord("SCHEMA_NAME".toLowerCase());
-       addReservedKeyWord("SECOND".toLowerCase());
-       addReservedKeyWord("SECOND_MICROSECOND".toLowerCase());
-       addReservedKeyWord("SECURITY".toLowerCase());
-       addReservedKeyWord("SELECT".toLowerCase());
-       addReservedKeyWord("SENSITIVE".toLowerCase());
-       addReservedKeyWord("SEPARATOR".toLowerCase());
-       addReservedKeyWord("SERIAL".toLowerCase());
-       addReservedKeyWord("SERIALIZABLE".toLowerCase());
-       addReservedKeyWord("SERVER".toLowerCase());
-       addReservedKeyWord("SESSION".toLowerCase());
-       addReservedKeyWord("SET".toLowerCase());
-       addReservedKeyWord("SHARE".toLowerCase());
-       addReservedKeyWord("SHOW".toLowerCase());
-       addReservedKeyWord("SHUTDOWN".toLowerCase());
-       addReservedKeyWord("SIGNAL".toLowerCase());
-       addReservedKeyWord("SIGNED".toLowerCase());
-       addReservedKeyWord("SIMPLE".toLowerCase());
-       addReservedKeyWord("SLAVE".toLowerCase());
-       addReservedKeyWord("SLOW".toLowerCase());
-       addReservedKeyWord("SMALLINT".toLowerCase());
-       addReservedKeyWord("SNAPSHOT".toLowerCase());
-       addReservedKeyWord("SOCKET".toLowerCase());
-       addReservedKeyWord("SOME".toLowerCase());
-       addReservedKeyWord("SONAME".toLowerCase());
-       addReservedKeyWord("SOUNDS".toLowerCase());
-       addReservedKeyWord("SOURCE".toLowerCase());
-       addReservedKeyWord("SPATIAL".toLowerCase());
-       addReservedKeyWord("SPECIFIC".toLowerCase());
-       addReservedKeyWord("SQL".toLowerCase());
-       addReservedKeyWord("SQLEXCEPTION".toLowerCase());
-       addReservedKeyWord("SQLSTATE".toLowerCase());
-       addReservedKeyWord("SQLWARNING".toLowerCase());
-       addReservedKeyWord("SQL_AFTER_GTIDS".toLowerCase());
-       addReservedKeyWord("SQL_AFTER_MTS_GAPS".toLowerCase());
-       addReservedKeyWord("SQL_BEFORE_GTIDS".toLowerCase());
-       addReservedKeyWord("SQL_BIG_RESULT".toLowerCase());
-       addReservedKeyWord("SQL_BUFFER_RESULT".toLowerCase());
-       addReservedKeyWord("SQL_CACHE".toLowerCase());
-       addReservedKeyWord("SQL_CALC_FOUND_ROWS".toLowerCase());
-       addReservedKeyWord("SQL_NO_CACHE".toLowerCase());
-       addReservedKeyWord("SQL_SMALL_RESULT".toLowerCase());
-       addReservedKeyWord("SQL_THREAD".toLowerCase());
-       addReservedKeyWord("SQL_TSI_DAY".toLowerCase());
-       addReservedKeyWord("SQL_TSI_HOUR".toLowerCase());
-       addReservedKeyWord("SQL_TSI_MINUTE".toLowerCase());
-       addReservedKeyWord("SQL_TSI_MONTH".toLowerCase());
-       addReservedKeyWord("SQL_TSI_QUARTER".toLowerCase());
-       addReservedKeyWord("SQL_TSI_SECOND".toLowerCase());
-       addReservedKeyWord("SQL_TSI_WEEK".toLowerCase());
-       addReservedKeyWord("SQL_TSI_YEAR".toLowerCase());
-       addReservedKeyWord("SSL".toLowerCase());
-       addReservedKeyWord("STACKED".toLowerCase());
-       addReservedKeyWord("START".toLowerCase());
-       addReservedKeyWord("STARTING".toLowerCase());
-       addReservedKeyWord("STARTS".toLowerCase());
-       addReservedKeyWord("STATS_AUTO_RECALC".toLowerCase());
-       addReservedKeyWord("STATS_PERSISTENT".toLowerCase());
-       addReservedKeyWord("STATS_SAMPLE_PAGES".toLowerCase());
-       addReservedKeyWord("STATUS".toLowerCase());
-       addReservedKeyWord("STOP".toLowerCase());
-       addReservedKeyWord("STORAGE".toLowerCase());
-       addReservedKeyWord("STORED".toLowerCase());
-       addReservedKeyWord("STRAIGHT_JOIN".toLowerCase());
-       addReservedKeyWord("STRING".toLowerCase());
-       addReservedKeyWord("SUBCLASS_ORIGIN".toLowerCase());
-       addReservedKeyWord("SUBJECT".toLowerCase());
-       addReservedKeyWord("SUBPARTITION".toLowerCase());
-       addReservedKeyWord("SUBPARTITIONS".toLowerCase());
-       addReservedKeyWord("SUPER".toLowerCase());
-       addReservedKeyWord("SUSPEND".toLowerCase());
-       addReservedKeyWord("SWAPS".toLowerCase());
-       addReservedKeyWord("SWITCHES".toLowerCase());
-       addReservedKeyWord("TABLE".toLowerCase());
-       addReservedKeyWord("TABLES".toLowerCase());
-       addReservedKeyWord("TABLESPACE".toLowerCase());
-       addReservedKeyWord("TABLE_CHECKSUM".toLowerCase());
-       addReservedKeyWord("TABLE_NAME".toLowerCase());
-       addReservedKeyWord("TEMPORARY".toLowerCase());
-       addReservedKeyWord("TEMPTABLE".toLowerCase());
-       addReservedKeyWord("TERMINATED".toLowerCase());
-       addReservedKeyWord("TEXT".toLowerCase());
-       addReservedKeyWord("THAN".toLowerCase());
-       addReservedKeyWord("THEN".toLowerCase());
-       addReservedKeyWord("TIME".toLowerCase());
-       addReservedKeyWord("TIMESTAMP".toLowerCase());
-       addReservedKeyWord("TIMESTAMPADD".toLowerCase());
-       addReservedKeyWord("TIMESTAMPDIFF".toLowerCase());
-       addReservedKeyWord("TINYBLOB".toLowerCase());
-       addReservedKeyWord("TINYINT".toLowerCase());
-       addReservedKeyWord("TINYTEXT".toLowerCase());
-       addReservedKeyWord("TO".toLowerCase());
-       addReservedKeyWord("TRAILING".toLowerCase());
-       addReservedKeyWord("TRANSACTION".toLowerCase());
-       addReservedKeyWord("TRIGGER".toLowerCase());
-       addReservedKeyWord("TRIGGERS".toLowerCase());
-       addReservedKeyWord("TRUE".toLowerCase());
-       addReservedKeyWord("TRUNCATE".toLowerCase());
-       addReservedKeyWord("TYPE".toLowerCase());
-       addReservedKeyWord("TYPES".toLowerCase());
-       addReservedKeyWord("UNCOMMITTED".toLowerCase());
-       addReservedKeyWord("UNDEFINED".toLowerCase());
-       addReservedKeyWord("UNDO".toLowerCase());
-       addReservedKeyWord("UNDOFILE".toLowerCase());
-       addReservedKeyWord("UNDO_BUFFER_SIZE".toLowerCase());
-       addReservedKeyWord("UNICODE".toLowerCase());
-       addReservedKeyWord("UNINSTALL".toLowerCase());
-       addReservedKeyWord("UNION".toLowerCase());
-       addReservedKeyWord("UNIQUE".toLowerCase());
-       addReservedKeyWord("UNKNOWN".toLowerCase());
-       addReservedKeyWord("UNLOCK".toLowerCase());
-       addReservedKeyWord("UNSIGNED".toLowerCase());
-       addReservedKeyWord("UNTIL".toLowerCase());
-       addReservedKeyWord("UPDATE".toLowerCase());
-       addReservedKeyWord("UPGRADE".toLowerCase());
-       addReservedKeyWord("USAGE".toLowerCase());
-       addReservedKeyWord("USE".toLowerCase());
-       addReservedKeyWord("USER".toLowerCase());
-       addReservedKeyWord("USER_RESOURCES".toLowerCase());
-       addReservedKeyWord("USE_FRM".toLowerCase());
-       addReservedKeyWord("USING".toLowerCase());
-       addReservedKeyWord("UTC_DATE".toLowerCase());
-       addReservedKeyWord("UTC_TIME".toLowerCase());
-       addReservedKeyWord("UTC_TIMESTAMP".toLowerCase());
-       addReservedKeyWord("VALIDATION".toLowerCase());
-       addReservedKeyWord("VALUE".toLowerCase());
-       addReservedKeyWord("VALUES".toLowerCase());
-       addReservedKeyWord("VARBINARY".toLowerCase());
-       addReservedKeyWord("VARCHAR".toLowerCase());
-       addReservedKeyWord("VARCHARACTER".toLowerCase());
-       addReservedKeyWord("VARIABLES".toLowerCase());
-       addReservedKeyWord("VARYING".toLowerCase());
-       addReservedKeyWord("VIEW".toLowerCase());
-       addReservedKeyWord("VIRTUAL".toLowerCase());
-       addReservedKeyWord("WAIT".toLowerCase());
-       addReservedKeyWord("WARNINGS".toLowerCase());
-       addReservedKeyWord("WEEK".toLowerCase());
-       addReservedKeyWord("WEIGHT_STRING".toLowerCase());
-       addReservedKeyWord("WHEN".toLowerCase());
-       addReservedKeyWord("WHERE".toLowerCase());
-       addReservedKeyWord("WHILE".toLowerCase());
-       addReservedKeyWord("WITH".toLowerCase());
-       addReservedKeyWord("WITHOUT".toLowerCase());
-       addReservedKeyWord("WORK".toLowerCase());
-       addReservedKeyWord("WRAPPER".toLowerCase());
-       addReservedKeyWord("WRITE".toLowerCase());
-       addReservedKeyWord("X509".toLowerCase());
-       addReservedKeyWord("XA".toLowerCase());
-       addReservedKeyWord("XID".toLowerCase());
-       addReservedKeyWord("XML".toLowerCase());
-       addReservedKeyWord("XOR".toLowerCase());
-       addReservedKeyWord("YEAR".toLowerCase());
-       addReservedKeyWord("YEAR_MONTH".toLowerCase());
-       addReservedKeyWord("ZEROFILL".toLowerCase());
+        // Add additional Keywords
+        super(MYSQL_KEYWORDS);
     }
     
     /**
diff --git 
a/empire-db/src/main/java/org/apache/empire/dbms/oracle/DBMSHandlerOracle.java 
b/empire-db/src/main/java/org/apache/empire/dbms/oracle/DBMSHandlerOracle.java
index dfea4bc4..143c73ba 100644
--- 
a/empire-db/src/main/java/org/apache/empire/dbms/oracle/DBMSHandlerOracle.java
+++ 
b/empire-db/src/main/java/org/apache/empire/dbms/oracle/DBMSHandlerOracle.java
@@ -74,6 +74,9 @@ public class DBMSHandlerOracle extends DBMSHandlerBase
         NUMBER      // as NUMBER(1) with 1 for true and 0 for false
     }
     
+    // Additional Oracle Keywords
+    protected static final String[] ORACLE_KEYWORDS = new String[] { "date", 
"number" };        
+    
     private boolean oracle8Compatibilty = false;
 
     private BooleanType booleanType = BooleanType.NUMBER;
@@ -88,11 +91,10 @@ public class DBMSHandlerOracle extends DBMSHandlerBase
      */
     public DBMSHandlerOracle()
     {
+        // Add additional Keywords
+        super(ORACLE_KEYWORDS);
         // Info
         log.info("DBMSHandlerOracle created. Boolean Type is " + booleanType);
-        // Additional reserved names 
-        this.reservedSQLKeywords.add("date");
-        this.reservedSQLKeywords.add("number");
     }
 
     public boolean isOracle8Compatibilty()
diff --git 
a/empire-db/src/main/java/org/apache/empire/dbms/postgresql/DBMSHandlerPostgreSQL.java
 
b/empire-db/src/main/java/org/apache/empire/dbms/postgresql/DBMSHandlerPostgreSQL.java
index c49f4443..f561cf44 100644
--- 
a/empire-db/src/main/java/org/apache/empire/dbms/postgresql/DBMSHandlerPostgreSQL.java
+++ 
b/empire-db/src/main/java/org/apache/empire/dbms/postgresql/DBMSHandlerPostgreSQL.java
@@ -58,6 +58,16 @@ public class DBMSHandlerPostgreSQL extends DBMSHandlerBase
   
     private static final Logger log = 
LoggerFactory.getLogger(DBMSHandlerPostgreSQL.class);
     
+    // Additional Postgres Keywords
+    protected static final String[] POSTGRES_KEYWORDS = new String[] {     
+        "ALL", "ANALYSE", "ANALYZE", "AND", "ANY", "ARRAY", "AS", "ASC", 
"ASYMMETRIC", "AUTHORIZATION", "BETWEEN", "BINARY", "BOTH", 
+        "CASE", "CAST", "CHECK", "COLLATE", "CREATE", "CROSS", "CURRENT_DATE", 
"CURRENT_ROLE", "CURRENT_TIME", "CURRENT_TIMESTAMP", "CURRENT_USER", 
+        "DEFAULT", "DEFERRABLE", "DESC", "DISTINCT", "DO", "ELSE", "END", 
"EXCEPT", "FALSE", "FOR", "FOREIGN", "FREEZE", "FROM", "FULL", 
+        "GRANT", "HAVING", "ILIKE", "IN", "INITIALLY", "INNER", "INTERSECT", 
"INTO", "IS", "ISNULL", "JOIN", "LEADING", "LEFT", "LIKE", "LIMIT", 
"LOCALTIME", "LOCALTIMESTAMP", 
+        "NATURAL", "NEW", "NOT", "NOTNULL", "NULL", "OFF", "OFFSET", "OLD", 
"ON", "ONLY", "OR", "ORDER", "OUTER", "OVERLAPS", 
+        "PLACING", "PRIMARY", "REFERENCES", "RETURNING", "RIGHT", 
"SESSION_USER", "SIMILAR", "SOME", "SYMMETRIC", 
+        "THEN", "TO", "TRAILING", "TRUE", "UNION", "UNIQUE", "USING", 
"VERBOSE", "WHEN", "WHERE", "WITH"
+    };
     
     private String databaseName;
     
@@ -70,7 +80,8 @@ public class DBMSHandlerPostgreSQL extends DBMSHandlerBase
      */
     public DBMSHandlerPostgreSQL()
     {
-        setReservedKeywords();
+        // Add additional Keywords
+        super(POSTGRES_KEYWORDS);
     }
 
     /**
@@ -344,114 +355,6 @@ public class DBMSHandlerPostgreSQL extends DBMSHandlerBase
                default:   return super.getResultValue(rset, columnIndex, 
dataType);
        }
     }
-
-    
-    protected void addReservedKeyWord(final String keyWord){
-        boolean added = reservedSQLKeywords.add(keyWord.toLowerCase());
-        if(!added){
-            log.debug("Existing keyWord added: " + keyWord);
-        }
-    }
-    
-    protected void setReservedKeywords(){
-        // list of reserved keywords
-        // 
http://www.postgresql.org/docs/current/static/sql-keywords-appendix.html
-        addReservedKeyWord("ALL".toLowerCase());
-        addReservedKeyWord("ANALYSE".toLowerCase());
-        addReservedKeyWord("ANALYZE".toLowerCase());
-        addReservedKeyWord("AND".toLowerCase());
-        addReservedKeyWord("ANY".toLowerCase());
-        addReservedKeyWord("ARRAY".toLowerCase());
-        addReservedKeyWord("AS".toLowerCase());
-        addReservedKeyWord("ASC".toLowerCase());
-        addReservedKeyWord("ASYMMETRIC".toLowerCase());
-        addReservedKeyWord("AUTHORIZATION".toLowerCase());
-        addReservedKeyWord("BETWEEN".toLowerCase());
-        addReservedKeyWord("BINARY".toLowerCase());
-        addReservedKeyWord("BOTH".toLowerCase());
-        addReservedKeyWord("CASE".toLowerCase());
-        addReservedKeyWord("CAST".toLowerCase());
-        addReservedKeyWord("CHECK".toLowerCase());
-        addReservedKeyWord("COLLATE".toLowerCase());
-        //addReservedKeyWord("COLUMN".toLowerCase());
-        //addReservedKeyWord("CONSTRAINT".toLowerCase());
-        addReservedKeyWord("CREATE".toLowerCase());
-        addReservedKeyWord("CROSS".toLowerCase());
-        addReservedKeyWord("CURRENT_DATE".toLowerCase());
-        addReservedKeyWord("CURRENT_ROLE".toLowerCase());
-        addReservedKeyWord("CURRENT_TIME".toLowerCase());
-        addReservedKeyWord("CURRENT_TIMESTAMP".toLowerCase());
-        addReservedKeyWord("CURRENT_USER".toLowerCase());
-        addReservedKeyWord("DEFAULT".toLowerCase());
-        addReservedKeyWord("DEFERRABLE".toLowerCase());
-        addReservedKeyWord("DESC".toLowerCase());
-        addReservedKeyWord("DISTINCT".toLowerCase());
-        addReservedKeyWord("DO".toLowerCase());
-        addReservedKeyWord("ELSE".toLowerCase());
-        addReservedKeyWord("END".toLowerCase());
-        addReservedKeyWord("EXCEPT".toLowerCase());
-        addReservedKeyWord("FALSE".toLowerCase());
-        addReservedKeyWord("FOR".toLowerCase());
-        addReservedKeyWord("FOREIGN".toLowerCase());
-        addReservedKeyWord("FREEZE".toLowerCase());
-        addReservedKeyWord("FROM".toLowerCase());
-        addReservedKeyWord("FULL".toLowerCase());
-        addReservedKeyWord("GRANT".toLowerCase());
-        //addReservedKeyWord("GROUP".toLowerCase());
-        addReservedKeyWord("HAVING".toLowerCase());
-        addReservedKeyWord("ILIKE".toLowerCase());
-        addReservedKeyWord("IN".toLowerCase());
-        addReservedKeyWord("INITIALLY".toLowerCase());
-        addReservedKeyWord("INNER".toLowerCase());
-        addReservedKeyWord("INTERSECT".toLowerCase());
-        addReservedKeyWord("INTO".toLowerCase());
-        addReservedKeyWord("IS".toLowerCase());
-        addReservedKeyWord("ISNULL".toLowerCase());
-        addReservedKeyWord("JOIN".toLowerCase());
-        addReservedKeyWord("LEADING".toLowerCase());
-        addReservedKeyWord("LEFT".toLowerCase());
-        addReservedKeyWord("LIKE".toLowerCase());
-        addReservedKeyWord("LIMIT".toLowerCase());
-        addReservedKeyWord("LOCALTIME".toLowerCase());
-        addReservedKeyWord("LOCALTIMESTAMP".toLowerCase());
-        addReservedKeyWord("NATURAL".toLowerCase());
-        addReservedKeyWord("NEW".toLowerCase());
-        addReservedKeyWord("NOT".toLowerCase());
-        addReservedKeyWord("NOTNULL".toLowerCase());
-        addReservedKeyWord("NULL".toLowerCase());
-        addReservedKeyWord("OFF".toLowerCase());
-        addReservedKeyWord("OFFSET".toLowerCase());
-        addReservedKeyWord("OLD".toLowerCase());
-        addReservedKeyWord("ON".toLowerCase());
-        addReservedKeyWord("ONLY".toLowerCase());
-        addReservedKeyWord("OR".toLowerCase());
-        addReservedKeyWord("ORDER".toLowerCase());
-        addReservedKeyWord("OUTER".toLowerCase());
-        addReservedKeyWord("OVERLAPS".toLowerCase());
-        addReservedKeyWord("PLACING".toLowerCase());
-        addReservedKeyWord("PRIMARY".toLowerCase());
-        addReservedKeyWord("REFERENCES".toLowerCase());
-        addReservedKeyWord("RETURNING".toLowerCase());
-        addReservedKeyWord("RIGHT".toLowerCase());
-        //addReservedKeyWord("SELECT".toLowerCase());
-        addReservedKeyWord("SESSION_USER".toLowerCase());
-        addReservedKeyWord("SIMILAR".toLowerCase());
-        addReservedKeyWord("SOME".toLowerCase());
-        addReservedKeyWord("SYMMETRIC".toLowerCase());
-        //addReservedKeyWord("TABLE".toLowerCase());
-        addReservedKeyWord("THEN".toLowerCase());
-        addReservedKeyWord("TO".toLowerCase());
-        addReservedKeyWord("TRAILING".toLowerCase());
-        addReservedKeyWord("TRUE".toLowerCase());
-        addReservedKeyWord("UNION".toLowerCase());
-        addReservedKeyWord("UNIQUE".toLowerCase());
-        //addReservedKeyWord("USER".toLowerCase());
-        addReservedKeyWord("USING".toLowerCase());
-        addReservedKeyWord("VERBOSE".toLowerCase());
-        addReservedKeyWord("WHEN".toLowerCase());
-        addReservedKeyWord("WHERE".toLowerCase());
-        addReservedKeyWord("WITH".toLowerCase()); 
-    }
     
     /**
      * Initializes the Sequence names of SERIAL and BIGSERIAL columns
diff --git 
a/empire-db/src/main/java/org/apache/empire/dbms/sqlite/DBMSHandlerSQLite.java 
b/empire-db/src/main/java/org/apache/empire/dbms/sqlite/DBMSHandlerSQLite.java
index 31921a6b..0772aa57 100644
--- 
a/empire-db/src/main/java/org/apache/empire/dbms/sqlite/DBMSHandlerSQLite.java
+++ 
b/empire-db/src/main/java/org/apache/empire/dbms/sqlite/DBMSHandlerSQLite.java
@@ -61,6 +61,16 @@ public class DBMSHandlerSQLite extends DBMSHandlerBase
     // *Deprecated* private static final long serialVersionUID = 1L;
     private static final Logger log              = 
LoggerFactory.getLogger(DBMSHandlerSQLite.class);
     
+    protected static final String[] SQLITE_KEYWORDS = new String[] {        
+        "ABORT", "ACTION", "ADD", "AFTER", "ALL", "ALTER", "ANALYZE", "AND", 
"AS", "ASC", "ATTACH", "AUTOINCREMENT", "BEFORE", "BEGIN", "BETWEEN", "BY", 
+        "CASCADE", "CASE", "CAST", "CHECK", "COLLATE", "COLUMN", "COMMIT", 
"CONFLICT", "CONSTRAINT", "CREATE", "CROSS", "CURRENT_DATE", "CURRENT_TIME", 
"CURRENT_DATETIME", 
+        "DATABASE", "DEFAULT", "DEFERRABLE", "DEFERRED", "DELETE", "DESC", 
"DETACH", "DISTINCT", "DROP", "EACH", "ELSE", "END", "ESCAPE", "EXCEPT", 
"EXCLUSIVE", "EXISTS", "EXPLAIN", 
+        "FAIL", "FOR", "FOREIGN", "FROM", "FULL", "GLOB", "GROUP", "HAVING", 
"IF", "IGNORE", "IMMEDIATE", "IN", "INDEX", "INDEXED", "INITIALLY", "INNER", 
"INSERT", "INSTEAD", "INTERSECT", "INTO", "IS", "ISNULL", 
+        "JOIN", "KEY", "LEFT", "LIKE", "LIMIT", "MATCH", "NATURAL", "NO", 
"NOT", "NOTNULL", "NULL", "OF", "OFFSET", "ON", "OR", "ORDER", "OUTER", "PLAN", 
"PRAGMA", "PRIMARY", 
+        "QUERY", "RAISE", "REFERENCES", "REGEXP", "REINDEX", "RELEASE", 
"RENAME", "REPLACE", "RESTRICT", "RIGHT", "ROLLBACK", "ROW", "SAVEPOINT", 
"SELECT", "SET", 
+        "TABLE", "TEMP", "TEMPORARY", "THEN", "TO", "TRANSACTION", "TRIGGER", 
"UNION", "UNIQUE", "UPDATE", "USING", "VACUUM", "VALUES", "VIEW", "VIRTUAL", 
"WHEN", "WHERE",
+    };
+    
     /**
      * Defines the SQLite command type.
      */
@@ -119,147 +129,8 @@ public class DBMSHandlerSQLite extends DBMSHandlerBase
      */
     public DBMSHandlerSQLite()
     {
-        setReservedKeywords();
-    }
-    
-    private void addReservedKeyWord(final String keyWord)
-    {
-        boolean added = reservedSQLKeywords.add(keyWord.toLowerCase());
-        if (!added)
-        {
-            log.debug("Existing keyWord added: " + keyWord);
-        }
-    }
-    
-    private void setReservedKeywords()
-    {
-        // list of reserved keywords
-        // http://www.sqlite.org/lang_keywords.html
-        addReservedKeyWord("ABORT".toLowerCase());
-        addReservedKeyWord("ACTION".toLowerCase());
-        addReservedKeyWord("ADD".toLowerCase());
-        addReservedKeyWord("AFTER".toLowerCase());
-        addReservedKeyWord("ALL".toLowerCase());
-        addReservedKeyWord("ALTER".toLowerCase());
-        addReservedKeyWord("ANALYZE".toLowerCase());
-        addReservedKeyWord("AND".toLowerCase());
-        addReservedKeyWord("AS".toLowerCase());
-        addReservedKeyWord("ASC".toLowerCase());
-        addReservedKeyWord("ATTACH".toLowerCase());
-        addReservedKeyWord("AUTOINCREMENT".toLowerCase());
-        addReservedKeyWord("BEFORE".toLowerCase());
-        addReservedKeyWord("BEGIN".toLowerCase());
-        addReservedKeyWord("BETWEEN".toLowerCase());
-        addReservedKeyWord("BY".toLowerCase());
-        addReservedKeyWord("CASCADE".toLowerCase());
-        addReservedKeyWord("CASE".toLowerCase());
-        addReservedKeyWord("CAST".toLowerCase());
-        addReservedKeyWord("CHECK".toLowerCase());
-        addReservedKeyWord("COLLATE".toLowerCase());
-        addReservedKeyWord("COLUMN".toLowerCase());
-        addReservedKeyWord("COMMIT".toLowerCase());
-        addReservedKeyWord("CONFLICT".toLowerCase());
-        addReservedKeyWord("CONSTRAINT".toLowerCase());
-        
-        addReservedKeyWord("CREATE".toLowerCase());
-        addReservedKeyWord("CROSS".toLowerCase());
-        addReservedKeyWord("CURRENT_DATE".toLowerCase());
-        addReservedKeyWord("CURRENT_TIME".toLowerCase());
-        addReservedKeyWord("CURRENT_DATETIME".toLowerCase());
-        addReservedKeyWord("DATABASE".toLowerCase());
-        addReservedKeyWord("DEFAULT".toLowerCase());
-        addReservedKeyWord("DEFERRABLE".toLowerCase());
-        addReservedKeyWord("DEFERRED".toLowerCase());
-        addReservedKeyWord("DELETE".toLowerCase());
-        addReservedKeyWord("DESC".toLowerCase());
-        addReservedKeyWord("DETACH".toLowerCase());
-        addReservedKeyWord("DISTINCT".toLowerCase());
-        addReservedKeyWord("DROP".toLowerCase());
-        addReservedKeyWord("EACH".toLowerCase());
-        addReservedKeyWord("ELSE".toLowerCase());
-        addReservedKeyWord("END".toLowerCase());
-        addReservedKeyWord("ESCAPE".toLowerCase());
-        addReservedKeyWord("EXCEPT".toLowerCase());
-        addReservedKeyWord("EXCLUSIVE".toLowerCase());
-        addReservedKeyWord("EXISTS".toLowerCase());
-        addReservedKeyWord("EXPLAIN".toLowerCase());
-        addReservedKeyWord("FAIL".toLowerCase());
-        addReservedKeyWord("FOR".toLowerCase());
-        addReservedKeyWord("FOREIGN".toLowerCase());
-        
-        addReservedKeyWord("FROM".toLowerCase());
-        addReservedKeyWord("FULL".toLowerCase());
-        addReservedKeyWord("GLOB".toLowerCase());
-        addReservedKeyWord("GROUP".toLowerCase());
-        addReservedKeyWord("HAVING".toLowerCase());
-        addReservedKeyWord("IF".toLowerCase());
-        addReservedKeyWord("IGNORE".toLowerCase());
-        addReservedKeyWord("IMMEDIATE".toLowerCase());
-        addReservedKeyWord("IN".toLowerCase());
-        addReservedKeyWord("INDEX".toLowerCase());
-        addReservedKeyWord("INDEXED".toLowerCase());
-        addReservedKeyWord("INITIALLY".toLowerCase());
-        addReservedKeyWord("INNER".toLowerCase());
-        addReservedKeyWord("INSERT".toLowerCase());
-        addReservedKeyWord("INSTEAD".toLowerCase());
-        addReservedKeyWord("INTERSECT".toLowerCase());
-        addReservedKeyWord("INTO".toLowerCase());
-        addReservedKeyWord("IS".toLowerCase());
-        addReservedKeyWord("ISNULL".toLowerCase());
-        addReservedKeyWord("JOIN".toLowerCase());
-        addReservedKeyWord("KEY".toLowerCase());
-        addReservedKeyWord("LEFT".toLowerCase());
-        addReservedKeyWord("LIKE".toLowerCase());
-        addReservedKeyWord("LIMIT".toLowerCase());
-        addReservedKeyWord("MATCH".toLowerCase());
-        
-        addReservedKeyWord("NATURAL".toLowerCase());
-        addReservedKeyWord("NO".toLowerCase());
-        addReservedKeyWord("NOT".toLowerCase());
-        addReservedKeyWord("NOTNULL".toLowerCase());
-        addReservedKeyWord("NULL".toLowerCase());
-        addReservedKeyWord("OF".toLowerCase());
-        addReservedKeyWord("OFFSET".toLowerCase());
-        addReservedKeyWord("ON".toLowerCase());
-        addReservedKeyWord("OR".toLowerCase());
-        addReservedKeyWord("ORDER".toLowerCase());
-        addReservedKeyWord("OUTER".toLowerCase());
-        addReservedKeyWord("PLAN".toLowerCase());
-        addReservedKeyWord("PRAGMA".toLowerCase());
-        addReservedKeyWord("PRIMARY".toLowerCase());
-        addReservedKeyWord("QUERY".toLowerCase());
-        addReservedKeyWord("RAISE".toLowerCase());
-        addReservedKeyWord("REFERENCES".toLowerCase());
-        addReservedKeyWord("REGEXP".toLowerCase());
-        addReservedKeyWord("REINDEX".toLowerCase());
-        addReservedKeyWord("RELEASE".toLowerCase());
-        addReservedKeyWord("RENAME".toLowerCase());
-        addReservedKeyWord("REPLACE".toLowerCase());
-        addReservedKeyWord("RESTRICT".toLowerCase());
-        addReservedKeyWord("RIGHT".toLowerCase());
-        addReservedKeyWord("ROLLBACK".toLowerCase());
-        
-        addReservedKeyWord("ROW".toLowerCase());
-        addReservedKeyWord("SAVEPOINT".toLowerCase());
-        addReservedKeyWord("SELECT".toLowerCase());
-        addReservedKeyWord("SET".toLowerCase());
-        addReservedKeyWord("TABLE".toLowerCase());
-        addReservedKeyWord("TEMP".toLowerCase());
-        addReservedKeyWord("TEMPORARY".toLowerCase());
-        addReservedKeyWord("THEN".toLowerCase());
-        addReservedKeyWord("TO".toLowerCase());
-        addReservedKeyWord("TRANSACTION".toLowerCase());
-        addReservedKeyWord("TRIGGER".toLowerCase());
-        addReservedKeyWord("UNION".toLowerCase());
-        addReservedKeyWord("UNIQUE".toLowerCase());
-        addReservedKeyWord("UPDATE".toLowerCase());
-        addReservedKeyWord("USING".toLowerCase());
-        addReservedKeyWord("VACUUM".toLowerCase());
-        addReservedKeyWord("VALUES".toLowerCase());
-        addReservedKeyWord("VIEW".toLowerCase());
-        addReservedKeyWord("VIRTUAL".toLowerCase());
-        addReservedKeyWord("WHEN".toLowerCase());
-        addReservedKeyWord("WHERE".toLowerCase());
+        // Add additional Keywords
+        super(SQLITE_KEYWORDS);
     }
     
     /**
diff --git 
a/empire-db/src/main/java/org/apache/empire/dbms/sqlserver/DBMSHandlerMSSQL.java
 
b/empire-db/src/main/java/org/apache/empire/dbms/sqlserver/DBMSHandlerMSSQL.java
index dd86a5b7..2c0bcd11 100644
--- 
a/empire-db/src/main/java/org/apache/empire/dbms/sqlserver/DBMSHandlerMSSQL.java
+++ 
b/empire-db/src/main/java/org/apache/empire/dbms/sqlserver/DBMSHandlerMSSQL.java
@@ -57,6 +57,9 @@ public class DBMSHandlerMSSQL extends DBMSHandlerBase
 {
     // *Deprecated* private static final long serialVersionUID = 1L;
     private static final Logger log = 
LoggerFactory.getLogger(DBMSHandlerMSSQL.class);
+
+    // Additional SQL-Server Keywords
+    protected static final String[] MSSQL_SQL_KEYWORDS = new String[] { 
"case", "when", "type", "key", "plan" };        
   
     /**
      * Provides a DBCommand implementation for Microsoft SQL-Server
@@ -172,18 +175,14 @@ public class DBMSHandlerMSSQL extends DBMSHandlerBase
     private boolean useDateTime2 = true;
     
     protected DBDDLGenerator<?> ddlGenerator = null; // lazy creation
-
-    protected static final String[] MSSQL_SQL_KEYWORDS = new String[] { 
"type", "key", "plan" };        
     
     /**
      * Constructor for the MSSQL database dbms.<br>
      */
     public DBMSHandlerMSSQL()
     {
-        // Initialize List of reserved Keywords
-        for (String keyWord:MSSQL_SQL_KEYWORDS){
-             reservedSQLKeywords.add(keyWord);
-        }
+        // Add additional Keywords
+        super(MSSQL_SQL_KEYWORDS);
     }
 
     public String getDatabaseName()

Reply via email to