/* Copyright (c) 2001-2008, The HSQL Development Group * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of the HSQL Development Group nor the names of its * contributors may be used to endorse or promote products derived from this * software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG, * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.hsqldb; import org.hsqldb.lib.HashSet; import org.hsqldb.lib.IntValueHashMap; /** * Defines and enumerates reserved and non-reserved SQL * keywords. <p> * * @author Nitin Chauhan * @author fredt@users * @since 1.7.2 * @version 1.7.2 */ public class Token { private static IntValueHashMap commandSet; // static final String T_ASTERISK = "*"; static final String T_COMMA = ","; static final String T_CLOSEBRACKET = ")"; static final String T_EQUALS = "="; public static final String T_DIVIDE = "/"; static final String T_OPENBRACKET = "("; static final String T_SEMICOLON = ";"; static final String T_MULTIPLY = "*"; static final String T_PERCENT = "%"; static final String T_PLUS = "+"; static final String T_QUESTION = "?"; // SQL 200n reserved tokens static final String T_ADD = "ADD"; //reserved static final String T_ALL = "ALL"; //reserved static final String T_ALLOCATE = "ALLOCATE"; //reserved public static final String T_ALTER = "ALTER"; //reserved static final String T_AND = "AND"; //reserved static final String T_ANY = "ANY"; //reserved static final String T_ARE = "ARE"; //reserved static final String T_ARRAY = "ARRAY"; //reserved static final String T_AS = "AS"; //reserved static final String T_ASENSITIVE = "ASENSITIVE"; //reserved static final String T_ASYMMETRIC = "ASYMMETRIC"; //reserved static final String T_AT = "AT"; //reserved static final String T_ATOMIC = "ATOMIC"; //reserved static final String T_AUTHORIZATION = "AUTHORIZATION"; //reserved static final String T_BEGIN = "BEGIN"; //reserved static final String T_BETWEEN = "BETWEEN"; static final String T_BIGINT = "BIGINT"; //reserved public static final String T_BINARY = "BINARY"; //reserved static final String T_BLOB = "BLOB"; //reserved static final String T_BOOLEAN = "BOOLEAN"; //reserved static final String T_BOTH = "BOTH"; static final String T_BY = "BY"; //reserved static final String T_CALL = "CALL"; //reserved static final String T_CALLED = "CALLED"; //reserved static final String T_CASCADED = "CASCADED"; //reserved static final String T_CASE = "CASE"; //reserved static final String T_CAST = "CAST"; //reserved static final String T_CHAR = "CHAR"; //reserved static final String T_CHARACTER = "CHARACTER"; //reserved static final String T_CHECK = "CHECK"; //reserved static final String T_CLOB = "CLOB"; //reserved static final String T_CLOSE = "CLOSE"; //reserved static final String T_COLLATE = "COLLATE"; //reserved static final String T_COLUMN = "COLUMN"; //reserved public static final String T_COMMIT = "COMMIT"; //reserved static final String T_CONDITION = "CONDIITON"; //reserved static final String T_CONNECT = "CONNECT"; //reserved static final String T_CONSTRAINT = "CONSTRAINT"; //reserved static final String T_CONTINUE = "CONTINUE"; //reserved static final String T_CORRESPONDING = "CORRESPONDING"; //reserved static final String T_CREATE = "CREATE"; //reserved static final String T_CROSS = "CROSS"; //reserved static final String T_CUBE = "CUBE"; //reserved static final String T_CURRENT = "CURRENT"; //reserved static final String T_CURRENT_DATE = "CURRENT_DATE"; //reserved static final String T_CURRENT_DEFAULT_TRANS_GROUP = "CURRENT_DEFAULT_TRANSFORM_GROUP"; //reserved static final String T_CURRENT_PATH = "CURRENT_PATH"; //reserved static final String T_CURRENT_ROLE = "CURRENT_ROLE"; //reserved static final String T_CURRENT_TIME = "CURRENT_TIME"; //reserved static final String T_CURRENT_TIMESTAMP = "CURRENT_TIMESTAMP"; //reserved static final String T_CURRENT_TRANS_GROUP_FOR_TYPE = "CURRENT_TRANSFORM_GROUP_FOR_TYPE"; //reserved static final String T_CURRENT_USER = "CURRENT_USER"; //reserved static final String T_CURSOR = "CURSOR"; //reserved static final String T_CYCLE = "CYCLE"; //reserved static final String T_DATE = "DATE"; //reserved static final String T_DAY = "DAY"; //reserved static final String T_DEALLOCATE = "DEALLOCATE"; //reserved static final String T_DEC = "DEC"; //reserved static final String T_DECIMAL = "DECIMAL"; //reserved static final String T_DECLARE = "DECLARE"; //reserved static final String T_DEFAULT = "DEFAULT"; //reserved public static final String T_DELETE = "DELETE"; //reserved static final String T_DEREF = "DEREF"; //reserved static final String T_DESCRIBE = "DESCRIBE"; //reserved static final String T_DETERMINISTIC = "DETERMINISTIC"; //reserved static final String T_DISCONNECT = "DISCONNECT"; //reserved static final String T_DISTINCT = "DISTINCT"; //reserved static final String T_DO = "DO"; //reserved static final String T_DOUBLE = "DOUBLE"; //reserved static final String T_DOW = "DAYOFWEEK"; //reserved static final String T_DROP = "DROP"; //reserved static final String T_DYNAMIC = "DYNAMIC"; //reserved static final String T_EACH = "EACH"; //reserved static final String T_ELEMENT = "ELEMENT"; //reserved static final String T_ELSE = "ELSE"; //reserved static final String T_ELSEIF = "ELSEIF"; //reserved static final String T_END = "END"; //reserved static final String T_ESCAPE = "ESCAPE"; //reserved static final String T_EXCEPT = "EXCEPT"; //reserved static final String T_EXEC = "EXEC"; //reserved static final String T_EXECUTE = "EXECUTE"; //reserved static final String T_EXISTS = "EXISTS"; //reserved static final String T_EXIT = "EXIT"; //reserved static final String T_EXTERNAL = "EXTERNAL"; //reserved static final String T_FALSE = "FALSE"; //reserved static final String T_FETCH = "FETCH"; //reserved static final String T_FILTER = "FILTER"; //reserved static final String T_FLOAT = "FLOAT"; //reserved static final String T_FOR = "FOR"; //reserved static final String T_FOREIGN = "FOREIGN"; //reserved static final String T_FREE = "FREE"; //reserved static final String T_FROM = "FROM"; //reserved static final String T_FULL = "FULL"; //reserved static final String T_FUNCTION = "FUNCTION"; //reserved static final String T_GET = "GET"; //reserved static final String T_GLOBAL = "GLOBAL"; //reserved static final String T_GRANT = "GRANT"; //reserved static final String T_GROUP = "GROUP"; //reserved static final String T_GROUPING = "GROUPING"; //reserved static final String T_HANDLER = "HANDLER"; //reserved static final String T_HAVING = "HAVING"; //reserved static final String T_HEADER = "HEADER"; //reserved static final String T_HOLD = "HOLD"; //reserved static final String T_HOUR = "HOUR"; //reserved static final String T_IDENTITY = "IDENTITY"; //reserved static final String T_IF = "IF"; //reserved static final String T_IMMEDIATE = "IMMEDIATE"; //reserved static final String T_IN = "IN"; //reserved static final String T_INDICATOR = "INDICATOR"; //reserved static final String T_INNER = "INNER"; //reserved static final String T_INOUT = "INOUT"; //reserved static final String T_INPUT = "INPUT"; //reserved static final String T_INSENSITIVE = "INSENSITIVE"; //reserved public static final String T_INSERT = "INSERT"; //reserved static final String T_INT = "INT"; //reserved static final String T_INTEGER = "INTEGER"; //reserved static final String T_INTERSECT = "INTERSECT"; //reserved static final String T_INTERVAL = "INTERVAL"; //reserved static final String T_INTO = "INTO"; //reserved static final String T_IS = "IS"; //reserved static final String T_ITERATE = "ITERATE"; //reserved static final String T_JOIN = "JOIN"; //reserved static final String T_LANGUAGE = "LANGUAGE"; //reserved static final String T_LARGE = "LARGE"; //reserved static final String T_LATERAL = "LATERAL"; //reserved static final String T_LEADING = "LEADING"; //reserved static final String T_LEAVE = "LEAVE"; //reserved static final String T_LEFT = "LEFT"; //reserved static final String T_LIKE = "LIKE"; //reserved static final String T_LOCAL = "LOCAL"; //reserved static final String T_LOCALTIME = "LOCALTIME"; //reserved static final String T_LOCALTIMESTAMP = "LOCALTIMESTAMP"; //reserved static final String T_LOOP = "LOOP"; //reserved static final String T_MATCH = "MATCH"; //reserved static final String T_MEMBER = "MEMBER"; //reserved static final String T_METHOD = "METHOD"; //reserved static final String T_MINUTE = "MINUTE"; //reserved static final String T_MODIFIES = "MODIFIES"; //reserved static final String T_MODULE = "MODULE"; //reserved static final String T_MONTH = "MONTH"; //reserved static final String T_MULTISET = "MULTISET"; //reserved static final String T_NATIONAL = "NATIONAL"; //reserved static final String T_NATURAL = "NAUTRAL"; //reserved static final String T_NCHAR = "NCHAR"; //reserved static final String T_NCLOB = "NCLOB"; //reserved static final String T_NEW = "NEW"; //reserved static final String T_NEXT = "NEXT"; //reserved static final String T_NO = "NO"; //reserved static final String T_NONE = "NONE"; //reserved static final String T_NOT = "NOT"; //reserved static final String T_NULL = "NULL"; //reserved static final String T_NUMERIC = "NUMERIC"; //reserved static final String T_OF = "OF"; //reserved static final String T_OLD = "OLD"; //reserved static final String T_ON = "ON"; //reserved static final String T_ONLY = "ONLY"; //reserved static final String T_OPEN = "OPEN"; //reserved static final String T_OR = "OR"; //reserved static final String T_ORDER = "ORDER"; //reserved static final String T_OUT = "OUT"; //reserved static final String T_OUTER = "OUTER"; //reserved static final String T_OUTPUT = "OUTPUT"; //reserved static final String T_OVER = "OVER"; //reserved static final String T_OVERLAPS = "OVERLAPS"; //reserved static final String T_PARAMETER = "PARAMETER"; //reserved static final String T_PARTITION = "PARTITION"; //reserved static final String T_PRECISION = "PRECISION"; //reserved static final String T_PREPARE = "PREPARE"; //reserved static final String T_PRIMARY = "PRIMARY"; //reserved static final String T_PROCEDURE = "PROCEDURE"; //reserved static final String T_RANGE = "RANGE"; //reserved static final String T_READS = "READS"; //reserved static final String T_REAL = "REAL"; //reserved static final String T_RECURSIVE = "RECURSIVE"; //reserved static final String T_REF = "REF"; //reserved static final String T_REFERENCES = "REFERENCES"; //reserved static final String T_REFERENCING = "REFERENCING"; //reserved static final String T_RELEASE = "RELEASE"; //reserved static final String T_REPEAT = "REPEAT"; //reserved static final String T_RESIGNAL = "RESIGNAL"; //reserved static final String T_RESULT = "RESULT"; //reserved static final String T_RETURN = "RETURN"; //reserved static final String T_RETURNS = "RETURNS"; //reserved static final String T_REVOKE = "REVOKE"; //reserved static final String T_RIGHT = "RIGHT"; //reserved static final String T_ROLLBACK = "ROLLBACK"; //reserved static final String T_ROLLUP = "ROLLUP"; //reserved static final String T_ROW = "ROW"; //reserved static final String T_ROWS = "ROWS"; //reserved static final String T_SAVEPOINT = "SAVEPOINT"; //reserved static final String T_SCOPE = "SCOPE"; //reserved static final String T_SCROLL = "SCROLL"; //reserved static final String T_SECOND = "SECOND"; //reserved static final String T_SEARCH = "SEARCH"; //reserved static final String T_SELECT = "SELECT"; //reserved static final String T_SENSITIVE = "SENSITIVE"; //reserved static final String T_SESSION_USER = "SESSION_USER"; //reserved public static final String T_SET = "SET"; //reserved static final String T_SIGNAL = "SIGNAL"; //reserved static final String T_SIMILAR = "SIMILAR"; //reserved static final String T_SMALLINT = "SMALLINT"; //reserved static final String T_SOME = "SOME"; //reserved static final String T_SPECIFIC = "SPECIFIC"; //reserved static final String T_SPECIFICTYPE = "SPECIFICTYPE"; //reserved static final String T_SQL = "SQL"; //reserved static final String T_SQLEXCEPTION = "SQLEXCEPTION"; //reserved static final String T_SQLSTATE = "SQLSTATE"; //reserved static final String T_SQLWARNING = "SQLWARNING"; //reserved static final String T_START = "START"; //reserved static final String T_STATIC = "STATIC"; //reserved static final String T_SUBMULTISET = "SUBMULTISET"; //reserved static final String T_SYMMETRIC = "SYMMETRIC"; //reserved static final String T_SYSTEM = "SYSTEM"; //reserved static final String T_SYSTEM_USER = "SYSTEM_USER"; //reserved public static final String T_TABLE = "TABLE"; //reserved static final String T_TABLESAMPLE = "TABLESAMPLE"; //reserved static final String T_THEN = "THEN"; //reserved static final String T_TIME = "TIME"; //reserved static final String T_TIMESTAMP = "TIMESTAMP"; //reserved static final String T_TIMEZONE_HOUR = "TIMEZONE_HOUR"; //reserved static final String T_TIMEZONE_MINUTE = "TIMEZONE_MINUTE"; //reserved static final String T_TO = "TO"; //reserved static final String T_TRAILING = "TRAILING"; //reserved static final String T_TRANSLATION = "TRANSLATION"; //reserved static final String T_TREAT = "TREAT"; //reserved static final String T_TRIGGER = "TRIGGER"; //reserved static final String T_TRUE = "TRUE"; //reserved static final String T_UNDO = "UNDO"; //reserved static final String T_UNION = "UNION"; //reserved static final String T_UNIQUE = "UNIQUE"; //reserved static final String T_UNKNOWN = "UNKNOWN"; //reserved static final String T_UNNEST = "UNNEST"; //reserved static final String T_UNTIL = "UNTIL"; //reserved static final String T_UPDATE = "UPDATE"; //reserved static final String T_USER = "USER"; //reserved static final String T_USING = "USING"; //reserved static final String T_VALUE = "VALUE"; //reserved static final String T_VALUES = "VALUES"; //reserved static final String T_VARCHAR = "VARCHAR"; //reserved static final String T_VARYING = "VARYING"; //reserved static final String T_WHEN = "WHEN"; //reserved static final String T_WHENEVER = "WHENEVER"; //reserved static final String T_WHERE = "WHERE"; //reserved static final String T_WHILE = "WHILE"; //reserved static final String T_WINDOW = "WINDOW"; //reserved static final String T_WITH = "WITH"; //reserved static final String T_WITHIN = "WITHIN"; //reserved static final String T_WITHOUT = "WITHOUT"; //reserved static final String T_YEAR = "YEAR"; //reserved // other tokens static final String T_ALWAYS = "ALWAYS"; static final String T_ACTION = "ACTION"; static final String T_ADMIN = "ADMIN"; static final String T_AFTER = "AFTER"; static final String T_ALIAS = "ALIAS"; static final String T_ASC = "ASC"; static final String T_AUTOCOMMIT = "AUTOCOMMIT"; static final String T_AVG = "AVG"; static final String T_BACKUP = "BACKUP"; static final String T_BEFORE = "BEFORE"; static final String T_CACHED = "CACHED"; static final String T_CASCADE = "CASCADE"; static final String T_CASEWHEN = "CASEWHEN"; static final String T_CHECKPOINT = "CHECKPOINT"; static final String T_CLASS = "CLASS"; static final String T_COALESCE = "COALESCE"; static final String T_COLLATION = "COLLATION"; static final String T_COMPACT = "COMPACT"; public static final String T_COMPRESSED = "COMPRESSED"; static final String T_CONVERT = "CONVERT"; static final String T_COUNT = "COUNT"; static final String T_DATABASE = "DATABASE"; static final String T_DEFRAG = "DEFRAG"; static final String T_DESC = "DESC"; static final String T_EVERY = "EVERY"; static final String T_EXPLAIN = "EXPLAIN"; static final String T_EXTRACT = "EXTRACT"; static final String T_GENERATED = "GENERATED"; static final String T_IFNULL = "IFNULL"; static final String T_IGNORECASE = "IGNORECASE"; static final String T_IMMEDIATELY = "IMMEDIATELY"; static final String T_INCREMENT = "INCREMENT"; static final String T_INDEX = "INDEX"; static final String T_INITIAL = "INITIAL"; static final String T_KEY = "KEY"; static final String T_LIMIT = "LIMIT"; static final String T_LOGSIZE = "LOGSIZE"; static final String T_MAX = "MAX"; static final String T_MAXROWS = "MAXROWS"; static final String T_MEMORY = "MEMORY"; static final String T_MERGE = "MERGE"; static final String T_MIN = "MIN"; static final String T_MINUS = "MINUS"; static final String T_NOW = "NOW"; static final String T_NOWAIT = "NOWAIT"; static final String T_NULLIF = "NULLIF"; static final String T_NVL = "NVL"; static final String T_OFFSET = "OFFSET"; static final String T_PASSWORD = "PASSWORD"; public static final String T_SCHEMA = "SCHEMA"; static final String T_PLAN = "PLAN"; static final String T_PRESERVE = "PRESERVE"; static final String T_PRIVILEGES = "PRIVILEGES"; static final String T_POSITION = "POSITION"; static final String T_PROPERTY = "PROPERTY"; static final String T_PUBLIC = "PUBLIC"; static final String T_QUEUE = "QUEUE"; static final String T_READONLY = "READONLY"; static final String T_REFERENTIAL_INTEGRITY = "REFERENTIAL_INTEGRITY"; static final String T_RENAME = "RENAME"; static final String T_RESTART = "RESTART"; static final String T_RESTRICT = "RESTRICT"; static final String T_ROLE = "ROLE"; static final String T_SCRIPT = "SCRIPT"; static final String T_SCRIPTFORMAT = "SCRIPTFORMAT"; static final String T_SEQUENCE = "SEQUENCE"; static final String T_SHUTDOWN = "SHUTDOWN"; public static final String T_SOURCE = "SOURCE"; static final String T_STDDEV_POP = "STDDEV_POP"; static final String T_STDDEV_SAMP = "STDDEV_SAMP"; static final String T_SUBSTRING = "SUBSTRING"; static final String T_SUM = "SUM"; static final String T_SYSDATE = "SYSDATE"; static final String T_TEMP = "TEMP"; static final String T_TEMPORARY = "TEMPORARY"; public static final String T_TEXT = "TEXT"; static final String T_TODAY = "TODAY"; static final String T_TOP = "TOP"; static final String T_TRIM = "TRIM"; static final String T_VAR_POP = "VAR_POP"; static final String T_VAR_SAMP = "VAR_SAMP"; static final String T_VIEW = "VIEW"; static final String T_WORK = "WORK"; static final String T_WRITE_DELAY = "WRITE_DELAY"; public static final String T_OFF = "OFF"; // SQL 200n token values static final int ADD = 1; static final int ALL = 2; static final int ALLOCATE = 3; static final int ALTER = 4; static final int AND = 5; static final int ANY = 6; static final int ARE = 7; static final int ARRAY = 8; static final int AS = 9; static final int ASENSITIVE = 10; static final int ASYMMETRIC = 11; static final int AT = 12; static final int ATOMIC = 13; static final int AUTHORIZATION = 14; static final int BEGIN = 15; static final int BETWEEN = 16; static final int BIGINT = 17; static final int BINARY = 18; static final int BLOB = 19; static final int BOOLEAN = 20; static final int BOTH = 21; static final int BY = 22; public static final int CALL = 23; static final int CALLED = 24; static final int CASCADED = 25; static final int CASE = 26; static final int CAST = 27; static final int CHAR = 28; static final int CHARACTER = 29; static final int CHECK = 30; static final int CLOB = 31; static final int CLOSE = 32; static final int COLLATE = 33; static final int COLUMN = 34; static final int COMMIT = 35; static final int CONDITION = 36; static final int CONNECT = 37; static final int CONSTRAINT = 38; static final int CONTINUE = 39; static final int CORRESPONDING = 40; static final int CREATE = 41; static final int CROSS = 42; static final int CUBE = 43; static final int CURRENT = 44; static final int CURRENT_DATE = 45; static final int CURRENT_DEFAULT_TRANSFORM_GRO = 46; static final int CURRENT_PATH = 47; static final int CURRENT_ROLE = 48; static final int CURRENT_TIME = 49; static final int CURRENT_TIMESTAMP = 50; static final int CURRENT_TRANSFORM_GROUP_FOR_T = 51; static final int CURRENT_USER = 52; static final int CURSOR = 53; static final int CYCLE = 54; static final int DATE = 55; static final int DAY = 56; static final int DEALLOCATE = 57; static final int DEC = 58; static final int DECIMAL = 59; static final int DECLARE = 60; static final int DEFAULT = 61; public static final int DELETE = 62; static final int DEREF = 63; static final int DESCRIBE = 64; static final int DETERMINISTIC = 65; static final int DISCONNECT = 66; static final int DISTINCT = 67; static final int DO = 68; static final int DOUBLE = 69; static final int DROP = 70; static final int DYNAMIC = 71; static final int EACH = 72; static final int ELEMENT = 73; static final int ELSE = 74; static final int ELSEIF = 75; static final int END = 76; static final int ESCAPE = 77; static final int EXCEPT = 78; static final int EXEC = 79; static final int EXECUTE = 80; static final int EXISTS = 81; static final int EXIT = 82; static final int EXTERNAL = 83; static final int FALSE = 84; static final int FETCH = 85; static final int FILTER = 86; static final int FLOAT = 87; static final int FOR = 88; static final int FOREIGN = 89; static final int FREE = 90; static final int FROM = 91; static final int FULL = 92; static final int FUNCTION = 93; static final int GET = 94; static final int GLOBAL = 95; static final int GRANT = 96; static final int GROUP = 97; static final int GROUPING = 98; static final int HANDLER = 99; static final int HAVING = 100; static final int HOLD = 101; static final int HOUR = 102; static final int IDENTITY = 103; static final int IF = 104; static final int IMMEDIATE = 105; static final int IN = 106; static final int INDICATOR = 107; static final int INNER = 108; static final int INOUT = 109; static final int INPUT = 110; static final int INSENSITIVE = 111; public static final int INSERT = 112; static final int INT = 113; static final int INTEGER = 114; static final int INTERSECT = 115; static final int INTERVAL = 116; static final int INTO = 117; static final int IS = 118; static final int ITERATE = 119; static final int JOIN = 120; static final int LANGUAGE = 121; static final int LARGE = 122; static final int LATERAL = 123; static final int LEADING = 124; static final int LEAVE = 125; static final int LEFT = 126; static final int LIKE = 127; static final int LOCAL = 128; static final int LOCALTIME = 129; static final int LOCALTIMESTAMP = 130; static final int LOOP = 131; static final int MATCH = 132; static final int MEMBER = 133; static final int MERGE = 134; static final int METHOD = 135; static final int MINUTE = 136; static final int MODIFIES = 137; static final int MODULE = 138; static final int MONTH = 139; static final int MULTISET = 140; static final int NATIONAL = 141; static final int NATURAL = 142; static final int NCHAR = 143; static final int NCLOB = 144; static final int NEW = 145; static final int NO = 146; static final int NONE = 147; static final int NOT = 148; static final int NULL = 149; static final int NUMERIC = 150; static final int OF = 151; static final int OLD = 152; static final int ON = 153; static final int ONLY = 154; static final int OPEN = 155; static final int OR = 156; static final int ORDER = 157; static final int OUT = 158; static final int OUTER = 159; static final int OUTPUT = 160; static final int OVER = 161; static final int OVERLAPS = 162; static final int PARAMETER = 163; static final int PARTITION = 164; static final int PRECISION = 165; static final int PREPARE = 166; static final int PRIMARY = 167; static final int PROCEDURE = 168; static final int RANGE = 169; static final int READS = 170; static final int REAL = 171; static final int RECURSIVE = 172; static final int REF = 173; static final int REFERENCES = 174; static final int REFERENCING = 175; static final int RELEASE = 176; static final int REPEAT = 177; static final int RESIGNAL = 178; static final int RESULT = 179; static final int RETURN = 180; static final int RETURNS = 181; static final int REVOKE = 182; static final int RIGHT = 183; static final int ROLLBACK = 184; static final int ROLLUP = 185; static final int ROW = 186; static final int ROWS = 187; static final int SAVEPOINT = 188; static final int SCOPE = 189; static final int SCROLL = 190; static final int SEARCH = 191; static final int SECOND = 192; public static final int SELECT = 193; static final int SENSITIVE = 194; static final int SESSION_USER = 195; static final int SET = 196; static final int SIGNAL = 197; static final int SIMILAR = 198; static final int SMALLINT = 199; static final int SOME = 200; static final int SPECIFIC = 201; static final int SPECIFICTYPE = 202; static final int SQL = 203; static final int SQLEXCEPTION = 204; static final int SQLSTATE = 205; static final int SQLWARNING = 206; static final int START = 207; static final int STATIC = 208; static final int SUBMULTISET = 209; static final int SYMMETRIC = 210; static final int SYSTEM = 211; static final int SYSTEM_USER = 212; static final int TABLE = 213; static final int TABLESAMPLE = 214; static final int THEN = 215; static final int TIME = 216; static final int TIMESTAMP = 217; static final int TIMEZONE_HOUR = 218; static final int TIMEZONE_MINUTE = 219; static final int TO = 220; static final int TRAILING = 221; static final int TRANSLATION = 222; static final int TREAT = 223; static final int TRIGGER = 224; static final int TRUE = 225; static final int UNDO = 226; static final int UNION = 227; static final int UNIQUE = 228; static final int UNKNOWN = 229; static final int UNNEST = 220; static final int UNTIL = 221; public static final int UPDATE = 222; static final int USER = 223; static final int USING = 224; static final int VALUE = 225; static final int VALUES = 226; static final int VARCHAR = 227; static final int VARYING = 228; static final int WHEN = 229; static final int WHENEVER = 230; static final int WHERE = 231; static final int WHILE = 232; static final int WINDOW = 233; static final int WITH = 234; static final int WITHIN = 235; static final int WITHOUT = 236; static final int YEAR = 237; // other token values used as switch cases public static final int UNKNOWNTOKEN = -1; static final int ALIAS = 300; static final int AUTOCOMMIT = 301; static final int CACHED = 302; static final int CHECKPOINT = 303; static final int EXPLAIN = 304; static final int IGNORECASE = 305; static final int INDEX = 306; static final int LOGSIZE = 307; static final int MATCHED = 308; static final int MAXROWS = 309; static final int MEMORY = 310; static final int MINUS = 311; static final int NEXT = 312; static final int OPENBRACKET = 313; static final int PASSWORD = 314; static final int PLAN = 315; static final int PROPERTY = 316; static final int READONLY = 317; static final int REFERENTIAL_INTEGRITY = 318; static final int RENAME = 319; static final int RESTART = 320; static final int SCRIPT = 321; static final int SCRIPTFORMAT = 322; static final int SEMICOLON = 323; static final int SEQUENCE = 324; static final int SHUTDOWN = 325; static final int SOURCE = 326; static final int TEMP = 327; static final int TEXT = 328; static final int VIEW = 329; static final int WRITE_DELAY = 330; // added stuff static final int VAR_POP = 330; static final int VAR_SAMP = 331; static final int STDDEV_POP = 332; static final int STDDEV_SAMP = 333; static final int DEFRAG = 334; static final int INCREMENT = 335; static final int TOCHAR = 336; static final int DATABASE = 337; static final int SCHEMA = 338; static final int ROLE = 339; static final int DOW = 340; static final int INITIAL = 341; // static { commandSet = newCommandSet(); } /** * Retrieves a new map from set of string tokens to numeric tokens for * commonly encountered database command token occurences. * * @return a new map for the database command token set */ private static IntValueHashMap newCommandSet() { IntValueHashMap commandSet; commandSet = new IntValueHashMap(67); commandSet.put(T_ADD, ADD); commandSet.put(T_ALIAS, ALIAS); commandSet.put(T_ALTER, ALTER); commandSet.put(T_AUTOCOMMIT, AUTOCOMMIT); commandSet.put(T_CACHED, CACHED); commandSet.put(T_CALL, CALL); commandSet.put(T_CHECK, CHECK); commandSet.put(T_CHECKPOINT, CHECKPOINT); commandSet.put(T_COLUMN, COLUMN); commandSet.put(T_COMMIT, COMMIT); commandSet.put(T_CONNECT, CONNECT); commandSet.put(T_CONSTRAINT, CONSTRAINT); commandSet.put(T_CREATE, CREATE); commandSet.put(T_DATABASE, DATABASE); commandSet.put(T_DELETE, DELETE); commandSet.put(T_DEFRAG, DEFRAG); commandSet.put(T_DISCONNECT, DISCONNECT); commandSet.put(T_DROP, DROP); commandSet.put(T_EXCEPT, EXCEPT); commandSet.put(T_EXPLAIN, EXPLAIN); commandSet.put(T_FOREIGN, FOREIGN); commandSet.put(T_GRANT, GRANT); commandSet.put(T_IGNORECASE, IGNORECASE); commandSet.put(T_INCREMENT, INCREMENT); commandSet.put(T_INDEX, INDEX); commandSet.put(T_INITIAL, INITIAL); commandSet.put(T_INSERT, INSERT); commandSet.put(T_INTERSECT, INTERSECT); commandSet.put(T_LOGSIZE, LOGSIZE); commandSet.put(T_MAXROWS, MAXROWS); commandSet.put(T_MEMORY, MEMORY); commandSet.put(T_MINUS, MINUS); commandSet.put(T_NEXT, NEXT); commandSet.put(T_NOT, NOT); commandSet.put(T_OPENBRACKET, OPENBRACKET); commandSet.put(T_PASSWORD, PASSWORD); commandSet.put(T_PLAN, PLAN); commandSet.put(T_PRIMARY, PRIMARY); commandSet.put(T_PROPERTY, PROPERTY); commandSet.put(T_READONLY, READONLY); commandSet.put(T_REFERENTIAL_INTEGRITY, REFERENTIAL_INTEGRITY); commandSet.put(T_RELEASE, RELEASE); commandSet.put(T_RENAME, RENAME); commandSet.put(T_RESTART, RESTART); commandSet.put(T_REVOKE, REVOKE); commandSet.put(T_ROLE, ROLE); commandSet.put(T_ROLLBACK, ROLLBACK); commandSet.put(T_SAVEPOINT, SAVEPOINT); commandSet.put(T_SCRIPT, SCRIPT); commandSet.put(T_SCRIPTFORMAT, SCRIPTFORMAT); commandSet.put(T_SELECT, SELECT); commandSet.put(T_SEMICOLON, SEMICOLON); commandSet.put(T_SEQUENCE, SEQUENCE); commandSet.put(T_SET, SET); commandSet.put(T_SHUTDOWN, SHUTDOWN); commandSet.put(T_SOURCE, SOURCE); commandSet.put(T_TABLE, TABLE); commandSet.put(T_TEMP, TEMP); commandSet.put(T_TEXT, TEXT); commandSet.put(T_TRIGGER, TRIGGER); commandSet.put(T_UNIQUE, UNIQUE); commandSet.put(T_UPDATE, UPDATE); commandSet.put(T_UNION, UNION); commandSet.put(T_USER, USER); commandSet.put(T_VALUES, VALUES); commandSet.put(T_VIEW, VIEW); commandSet.put(T_WRITE_DELAY, WRITE_DELAY); commandSet.put(T_SCHEMA, SCHEMA); return commandSet; } public static int get(String token) { return commandSet.get(token, -1); } private static HashSet keywords; static IntValueHashMap valueTokens; static { // literals not allowed as table / column names keywords = new HashSet(67); // fredt - if we add MONTH, DAY, YEAR etc. MONTH(), DAY() et al will no longer work // following tokens are values /* "FALSE",*/ /* "TRUE",*/ /* "NULL", */ /** @todo perhaps rename LEFT() */ // following token is excluded to allow LEFT() function to work /* "LEFT" ,*/ String[] keyword = { Token.T_AS, Token.T_AND, Token.T_ALL, Token.T_ANY, Token.T_AVG, Token.T_BY, Token.T_BETWEEN, Token.T_BOTH, Token.T_CALL, Token.T_CASE, Token.T_CASEWHEN, Token.T_CAST, Token.T_CONVERT, Token.T_COUNT, Token.T_COALESCE, Token.T_DISTINCT, Token.T_ELSE, Token.T_END, Token.T_EVERY, Token.T_EXISTS, Token.T_EXCEPT, Token.T_EXTRACT, Token.T_FOR, Token.T_FROM, Token.T_GROUP, Token.T_HAVING, Token.T_IF, Token.T_INTO, Token.T_IFNULL, Token.T_IS, Token.T_IN, Token.T_INTERSECT, Token.T_JOIN, Token.T_INNER, Token.T_LEADING, Token.T_LIKE, Token.T_MAX, Token.T_MIN, Token.T_NEXT, Token.T_NULLIF, Token.T_NOT, Token.T_NVL, Token.T_MINUS, Token.T_ON, Token.T_ORDER, Token.T_OR, Token.T_OUTER, Token.T_POSITION, Token.T_PRIMARY, Token.T_SELECT, Token.T_SET, Token.T_SOME, Token.T_STDDEV_POP, Token.T_STDDEV_SAMP, Token.T_SUBSTRING, Token.T_SUM, Token.T_THEN, Token.T_TO, Token.T_TRAILING, Token.T_TRIM, Token.T_UNIQUE, Token.T_UNION, Token.T_VALUES, Token.T_VAR_POP, Token.T_VAR_SAMP, Token.T_WHEN, Token.T_WHERE, }; for (int i = 0; i < keyword.length; i++) { keywords.add(keyword[i]); } } public static boolean isKeyword(String token) { return keywords.contains(token); } }