001/* 002 * ModeShape (http://www.modeshape.org) 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package org.modeshape.sequencer.ddl.dialect.postgres; 017 018import java.util.Arrays; 019import java.util.List; 020import org.modeshape.sequencer.ddl.DdlConstants; 021import org.modeshape.sequencer.ddl.DdlTokenStream; 022import org.modeshape.sequencer.ddl.StandardDdlLexicon; 023 024/** 025 * 026 */ 027public interface PostgresDdlConstants extends DdlConstants { 028 public static final String[] CUSTOM_KEYWORDS = {"SHOW", "LISTEN", "UNLISTEN", "REINDEX", "MOVE", "ABORT", "ANALYZE", 029 "TRUNCATE", "REASSIGN", "RELEASE", "RESET", "REVOKE", "ROLLBACK", "FETCH", "EXPLAIN", "DISCARD", "COPY", "CLUSTER", 030 "NOTIFY", "LOAD", "COMMENT", "LOCK", "SERVER", "SEARCH", "PARSER", "DICTIONARY", "WRAPPER", "PROCEDURAL", "CONVERSION", 031 "AGGREGATE", "TEMPLATE", "MAPPING", "TRUSTED", "TRIGGER", "VACUUM", "FAMILTY", "BIGSERIAL", "BOX", "BOOLEAN", "BOX", 032 "BYTEA", "CIDR", "CIRCLE", "FLOAT4", "FLOAT8", "INET", "INT2", "INT4", "INT8", "LINE", "LSEG", "MACADDR", "MONEY", 033 "PATH", "POINT", "POLYGON", "SERIAL", "SERIAL4", "SERIAL8", "TEXT", "TIMESTAMPZ", "TSQUERY", "TSVECTOR", "TXID_SNAPSHOT", 034 "UUID", "XML"}; 035 036 interface PostgresStatementStartPhrases { 037 static final String[] STMT_ALTER_AGGREGATE = {ALTER, "AGGREGATE"}; 038 static final String[] STMT_ALTER_CONVERSION = {ALTER, "CONVERSION"}; 039 static final String[] STMT_ALTER_DATABASE = {ALTER, "DATABASE"}; 040 static final String[] STMT_ALTER_FOREIGN_DATA_WRAPPER = {ALTER, "FOREIGN", "DATA", "WRAPPER"}; 041 static final String[] STMT_ALTER_FUNCTION = {ALTER, "FUNCTION"}; 042 static final String[] STMT_ALTER_GROUP = {ALTER, "GROUP", DdlTokenStream.ANY_VALUE, DdlTokenStream.ANY_VALUE, 043 DdlTokenStream.ANY_VALUE}; 044 static final String[] STMT_ALTER_INDEX = {ALTER, "INDEX"}; 045 static final String[] STMT_ALTER_LANGUAGE = {ALTER, "LANGUAGE"}; 046 static final String[] STMT_ALTER_PROCEDURAL_LANGUAGE = {ALTER, "PROCEDURAL", "LANGUAGE"}; 047 static final String[] STMT_ALTER_OPERATOR = {ALTER, "OPERATOR"}; 048 static final String[] STMT_ALTER_OPERATOR_CLASS = {ALTER, "OPERATOR", "CLASS", DdlTokenStream.ANY_VALUE, 049 DdlTokenStream.ANY_VALUE, DdlTokenStream.ANY_VALUE, DdlTokenStream.ANY_VALUE}; 050 static final String[] STMT_ALTER_OPERATOR_FAMILY = {ALTER, "OPERATOR", "FAMILY", DdlTokenStream.ANY_VALUE, 051 DdlTokenStream.ANY_VALUE, DdlTokenStream.ANY_VALUE, DdlTokenStream.ANY_VALUE}; 052 static final String[] STMT_ALTER_ROLE = {ALTER, "ROLE"}; 053 static final String[] STMT_ALTER_SCHEMA = {ALTER, "SCHEMA"}; 054 static final String[] STMT_ALTER_SEQUENCE = {ALTER, "SEQUENCE"}; 055 static final String[] STMT_ALTER_SERVER = {ALTER, "SERVER"}; 056 static final String[] STMT_ALTER_TABLESPACE = {ALTER, "TABLESPACE"}; 057 static final String[] STMT_ALTER_TEXT_SEARCH_CONFIGURATION = {ALTER, "TEXT", "SEARCH", "CONFIGURATION"}; 058 static final String[] STMT_ALTER_TEXT_SEARCH_DICTIONARY = {ALTER, "TEXT", "SEARCH", "DICTIONARY"}; 059 static final String[] STMT_ALTER_TEXT_SEARCH_PARSER = {ALTER, "TEXT", "SEARCH", "PARSER"}; 060 static final String[] STMT_ALTER_TEXT_SEARCH_TEMPLATE = {ALTER, "TEXT", "SEARCH", "TEMPLATE"}; 061 static final String[] STMT_ALTER_TEXT_SEARCH = {ALTER, "TEXT", "SEARCH"}; 062 static final String[] STMT_ALTER_TRIGGER = {ALTER, "TRIGGER"}; 063 static final String[] STMT_ALTER_TYPE = {ALTER, "TYPE"}; 064 static final String[] STMT_ALTER_USER = {ALTER, "USER"}; 065 static final String[] STMT_ALTER_USER_MAPPING = {ALTER, "USER", "MAPPING"}; 066 static final String[] STMT_ALTER_VIEW = {ALTER, "VIEW"}; 067 068 static final String[][] ALTER_PHRASES = {STMT_ALTER_AGGREGATE, STMT_ALTER_CONVERSION, STMT_ALTER_DATABASE, 069 STMT_ALTER_FOREIGN_DATA_WRAPPER, STMT_ALTER_FUNCTION, STMT_ALTER_GROUP, STMT_ALTER_INDEX, 070 STMT_ALTER_PROCEDURAL_LANGUAGE, STMT_ALTER_LANGUAGE, STMT_ALTER_OPERATOR_CLASS, STMT_ALTER_OPERATOR_FAMILY, 071 STMT_ALTER_OPERATOR, STMT_ALTER_ROLE, STMT_ALTER_SCHEMA, STMT_ALTER_SEQUENCE, STMT_ALTER_SERVER, 072 STMT_ALTER_TABLESPACE, STMT_ALTER_TEXT_SEARCH_CONFIGURATION, STMT_ALTER_TEXT_SEARCH_DICTIONARY, 073 STMT_ALTER_TEXT_SEARCH_PARSER, STMT_ALTER_TEXT_SEARCH_TEMPLATE, STMT_ALTER_TEXT_SEARCH, STMT_ALTER_TRIGGER, 074 STMT_ALTER_TYPE, STMT_ALTER_USER_MAPPING, STMT_ALTER_USER, STMT_ALTER_VIEW}; 075 076 static final String[] STMT_CREATE_AGGREGATE = {CREATE, "AGGREGATE"}; 077 static final String[] STMT_CREATE_CAST = {CREATE, "CAST"}; 078 static final String[] STMT_CREATE_CONSTRAINT_TRIGGER = {CREATE, "CONSTRAINT", "TRIGGER"}; 079 static final String[] STMT_CREATE_CONVERSION = {CREATE, "CONVERSION"}; 080 static final String[] STMT_CREATE_DATABASE = {CREATE, "DATABASE"}; 081 static final String[] STMT_CREATE_FOREIGN_DATA_WRAPPER = {CREATE, "FOREIGN", "DATA", "WRAPPER"}; 082 static final String[] STMT_CREATE_FUNCTION = {CREATE, "FUNCTION"}; 083 static final String[] STMT_CREATE_OR_REPLACE_FUNCTION = {CREATE, "OR", "REPLACE", "FUNCTION"}; 084 static final String[] STMT_CREATE_GROUP = {CREATE, "GROUP"}; 085 static final String[] STMT_CREATE_INDEX = {CREATE, "INDEX"}; 086 static final String[] STMT_CREATE_UNIQUE_INDEX = {CREATE, "UNIQUE", "INDEX"}; 087 static final String[] STMT_CREATE_LANGUAGE = {CREATE, "LANGUAGE"}; 088 static final String[] STMT_CREATE_PROCEDURAL_LANGUAGE = {CREATE, "PROCEDURAL", "LANGUAGE"}; 089 static final String[] STMT_CREATE_TRUSTED_PROCEDURAL_LANGUAGE = {CREATE, "TRUSTED", "PROCEDURAL", "LANGUAGE"}; 090 static final String[] STMT_CREATE_OPERATOR = {CREATE, "OPERATOR"}; 091 static final String[] STMT_CREATE_OPERATOR_CLASS = {CREATE, "OPERATOR", "CLASS"}; 092 static final String[] STMT_CREATE_OPERATOR_FAMILY = {CREATE, "OPERATOR", "FAMILY"}; 093 static final String[] STMT_CREATE_ROLE = {CREATE, "ROLE"}; 094 static final String[] STMT_CREATE_RULE = {CREATE, "RULE"}; 095 static final String[] STMT_CREATE_OR_REPLACE_RULE = {CREATE, "OR", "REPLACE", "RULE"}; 096 static final String[] STMT_CREATE_TEMP_TABLE = {CREATE, "TEMP", TABLE}; 097 static final String[] STMT_CREATE_GLOBAL_TEMP_TABLE = {CREATE, "GLOBAL", "TEMP", TABLE}; 098 static final String[] STMT_CREATE_LOCAL_TEMP_TABLE = {CREATE, "LOCAL", "TEMP", TABLE}; 099 static final String[] STMT_CREATE_SEQUENCE = {CREATE, "SEQUENCE"}; 100 static final String[] STMT_CREATE_TEMP_SEQUENCE = {CREATE, "TEMP", "SEQUENCE"}; 101 static final String[] STMT_CREATE_TEMPORARY_SEQUENCE = {CREATE, "TEMPORARY", "SEQUENCE"}; 102 static final String[] STMT_CREATE_SERVER = {CREATE, "SERVER"}; 103 static final String[] STMT_CREATE_TABLESPACE = {CREATE, "TABLESPACE"}; 104 static final String[] STMT_CREATE_TEXT_SEARCH_CONFIGURATION = {CREATE, "TEXT", "SEARCH", "CONFIGURATION"}; 105 static final String[] STMT_CREATE_TEXT_SEARCH_DICTIONARY = {CREATE, "TEXT", "SEARCH", "DICTIONARY"}; 106 static final String[] STMT_CREATE_TEXT_SEARCH_PARSER = {CREATE, "TEXT", "SEARCH", "PARSER"}; 107 static final String[] STMT_CREATE_TEXT_SEARCH_TEMPLATE = {CREATE, "TEXT", "SEARCH", "TEMPLATE"}; 108 static final String[] STMT_CREATE_TEXT_SEARCH = {CREATE, "TEXT", "SEARCH"}; 109 static final String[] STMT_CREATE_TRIGGER = {CREATE, "TRIGGER"}; 110 static final String[] STMT_CREATE_TYPE = {CREATE, "TYPE"}; 111 static final String[] STMT_CREATE_USER = {CREATE, "USER"}; 112 static final String[] STMT_CREATE_USER_MAPPING = {CREATE, "USER", "MAPPING"}; 113 114 static final String[][] CREATE_PHRASES = {STMT_CREATE_AGGREGATE, STMT_CREATE_CAST, STMT_CREATE_CONSTRAINT_TRIGGER, 115 STMT_CREATE_CONVERSION, STMT_CREATE_DATABASE, STMT_CREATE_FOREIGN_DATA_WRAPPER, STMT_CREATE_FUNCTION, 116 STMT_CREATE_OR_REPLACE_FUNCTION, STMT_CREATE_GROUP, STMT_CREATE_INDEX, STMT_CREATE_UNIQUE_INDEX, 117 STMT_CREATE_PROCEDURAL_LANGUAGE, STMT_CREATE_TRUSTED_PROCEDURAL_LANGUAGE, STMT_CREATE_LANGUAGE, 118 STMT_CREATE_OPERATOR_CLASS, STMT_CREATE_OPERATOR_FAMILY, STMT_CREATE_OPERATOR, STMT_CREATE_ROLE, STMT_CREATE_RULE, 119 STMT_CREATE_OR_REPLACE_RULE, STMT_CREATE_TEMP_TABLE, STMT_CREATE_GLOBAL_TEMP_TABLE, STMT_CREATE_LOCAL_TEMP_TABLE, 120 STMT_CREATE_SEQUENCE, STMT_CREATE_TEMP_SEQUENCE, STMT_CREATE_TEMPORARY_SEQUENCE, STMT_CREATE_SERVER, 121 STMT_CREATE_TABLESPACE, STMT_CREATE_TEXT_SEARCH_CONFIGURATION, STMT_CREATE_TEXT_SEARCH_DICTIONARY, 122 STMT_CREATE_TEXT_SEARCH_PARSER, STMT_CREATE_TEXT_SEARCH_TEMPLATE, STMT_CREATE_TEXT_SEARCH, STMT_CREATE_TRIGGER, 123 STMT_CREATE_TYPE, STMT_CREATE_USER_MAPPING, STMT_CREATE_USER}; 124 125 static final String[] STMT_DROP_AGGREGATE = {DROP, "AGGREGATE"}; 126 static final String[] STMT_DROP_CAST = {DROP, "CAST"}; 127 static final String[] STMT_DROP_CONSTRAINT_TRIGGER = {DROP, "CONSTRAINT", "TRIGGER"}; 128 static final String[] STMT_DROP_CONVERSION = {DROP, "CONVERSION"}; 129 static final String[] STMT_DROP_DATABASE = {DROP, "DATABASE"}; 130 static final String[] STMT_DROP_FOREIGN_DATA_WRAPPER = {DROP, "FOREIGN", "DATA", "WRAPPER"}; 131 static final String[] STMT_DROP_FUNCTION = {DROP, "FUNCTION"}; 132 static final String[] STMT_DROP_GROUP = {DROP, "GROUP"}; 133 static final String[] STMT_DROP_INDEX = {DROP, "INDEX"}; 134 static final String[] STMT_DROP_LANGUAGE = {DROP, "LANGUAGE"}; 135 static final String[] STMT_DROP_PROCEDURAL_LANGUAGE = {DROP, "PROCEDURAL", "LANGUAGE"}; 136 static final String[] STMT_DROP_OPERATOR = {DROP, "OPERATOR"}; 137 static final String[] STMT_DROP_OPERATOR_CLASS = {DROP, "OPERATOR", "CLASS"}; 138 static final String[] STMT_DROP_OPERATOR_FAMILY = {DROP, "OPERATOR", "FAMILY"}; 139 static final String[] STMT_DROP_OWNED_BY = {DROP, "OWNED", "BY"}; 140 static final String[] STMT_DROP_ROLE = {DROP, "ROLE"}; 141 static final String[] STMT_DROP_RULE = {DROP, "RULE"}; 142 static final String[] STMT_DROP_SEQUENCE = {DROP, "SEQUENCE"}; 143 static final String[] STMT_DROP_SERVER = {DROP, "SERVER"}; 144 static final String[] STMT_DROP_TABLESPACE = {DROP, "TABLESPACE"}; 145 static final String[] STMT_DROP_TEXT_SEARCH_CONFIGURATION = {DROP, "TEXT", "SEARCH", "CONFIGURATION"}; 146 static final String[] STMT_DROP_TEXT_SEARCH_DICTIONARY = {DROP, "TEXT", "SEARCH", "DICTIONARY"}; 147 static final String[] STMT_DROP_TEXT_SEARCH_PARSER = {DROP, "TEXT", "SEARCH", "PARSER"}; 148 static final String[] STMT_DROP_TEXT_SEARCH_TEMPLATE = {DROP, "TEXT", "SEARCH", "TEMPLATE"}; 149 static final String[] STMT_DROP_TEXT_SEARCH = {DROP, "TEXT", "SEARCH"}; 150 static final String[] STMT_DROP_TRIGGER = {DROP, "TRIGGER"}; 151 static final String[] STMT_DROP_TYPE = {DROP, "TYPE"}; 152 static final String[] STMT_DROP_USER = {DROP, "USER"}; 153 static final String[] STMT_DROP_USER_MAPPING = {DROP, "USER", "MAPPING"}; 154 155 static final String[][] DROP_PHRASES = {STMT_DROP_AGGREGATE, STMT_DROP_CAST, STMT_DROP_CONSTRAINT_TRIGGER, 156 STMT_DROP_CONVERSION, STMT_DROP_DATABASE, STMT_DROP_FOREIGN_DATA_WRAPPER, STMT_DROP_FUNCTION, STMT_DROP_GROUP, 157 STMT_DROP_INDEX, STMT_DROP_PROCEDURAL_LANGUAGE, STMT_DROP_LANGUAGE, STMT_DROP_OPERATOR_CLASS, 158 STMT_DROP_OPERATOR_FAMILY, STMT_DROP_OWNED_BY, STMT_DROP_OPERATOR, STMT_DROP_ROLE, STMT_DROP_RULE, 159 STMT_DROP_SEQUENCE, STMT_DROP_SERVER, STMT_DROP_TABLESPACE, STMT_DROP_TEXT_SEARCH_CONFIGURATION, 160 STMT_DROP_TEXT_SEARCH_DICTIONARY, STMT_DROP_TEXT_SEARCH_PARSER, STMT_DROP_TEXT_SEARCH_TEMPLATE, 161 STMT_DROP_TEXT_SEARCH, STMT_DROP_TRIGGER, STMT_DROP_TYPE, STMT_DROP_USER_MAPPING, STMT_DROP_USER}; 162 163 static final String[] STMT_SET_CONSTRAINTS = {"SET", "CONSTRAINTS"}; 164 static final String[] STMT_SET_ROLE = {"SET", "ROLE"}; 165 static final String[] STMT_SET_SESSION_AUTHORIZATION = {"SET", "SESSION", "AUTHORIZATION"}; 166 static final String[] STMT_SET_TRANSACTION = {"SET", "TRANSACTION"}; 167 168 static final String[][] SET_PHRASES = {STMT_SET_CONSTRAINTS, STMT_SET_ROLE, STMT_SET_SESSION_AUTHORIZATION, 169 STMT_SET_TRANSACTION}; 170 171 static final String[] STMT_ABORT = {"ABORT"}; 172 static final String[] STMT_ANALYZE = {"ANALYZE"}; 173 static final String[] STMT_CLUSTER = {"CLUSTER"}; 174 static final String[] STMT_COMMENT_ON = {"COMMENT", "ON"}; 175 static final String[] STMT_COMMIT = {"COMMIT"}; 176 static final String[] STMT_COPY = {"COPY"}; 177 static final String[] STMT_DEALLOCATE_PREPARE = {"DEALLOCATE", "PREPARE"}; 178 static final String[] STMT_DEALLOCATE = {"DEALLOCATE"}; 179 static final String[] STMT_DECLARE = {"DECLARE"}; 180 static final String[] STMT_DISCARD = {"DISCARD"}; 181 static final String[] STMT_EXPLAIN_ANALYZE = {"EXPLAIN", "ANALYZE"}; 182 static final String[] STMT_EXPLAIN = {"EXPLAIN"}; 183 static final String[] STMT_FETCH = {"FETCH"}; 184 static final String[] STMT_LISTEN = {"LISTEN"}; 185 static final String[] STMT_LOAD = {"LOAD"}; 186 static final String[] STMT_LOCK_TABLE = {"LOCK", "TABLE"}; 187 static final String[] STMT_MOVE = {"MOVE"}; 188 static final String[] STMT_NOTIFY = {"NOTIFY"}; 189 static final String[] STMT_PREPARE = {"PREPARE"}; 190 static final String[] STMT_PREPARE_TRANSATION = {"PREPARE", "TRANSATION"}; 191 static final String[] STMT_REASSIGN_OWNED = {"REASSIGN", "OWNED"}; 192 static final String[] STMT_REINDEX = {"REINDEX"}; 193 static final String[] STMT_RELEASE_SAVEPOINT = {"RELEASE", "SAVEPOINT"}; 194 static final String[] STMT_REVOKE = {"REVOKE"}; 195 static final String[] STMT_ROLLBACK = {"ROLLBACK"}; 196 static final String[] STMT_ROLLBACK_PREPARED = {"ROLLBACK", "PREPARED"}; 197 static final String[] STMT_ROLLBACK_TO_SAVEPOINT = {"ROLLBACK", "TO", "SAVEPOINT"}; 198 static final String[] STMT_SELECT_INTO = {"SELECT", "INTO"}; 199 200 static final String[] STMT_SHOW = {"SHOW"}; 201 static final String[] STMT_TRUNCATE = {"TRUNCATE"}; 202 static final String[] STMT_UNLISTEN = {"UNLISTEN"}; 203 static final String[] STMT_VACUUM = {"VACUUM"}; 204 // static final String[] STMT_VALUES = {"VALUES"}; 205 206 static final String[][] MISC_PHRASES = {STMT_ABORT, STMT_ANALYZE, STMT_CLUSTER, STMT_COMMENT_ON, STMT_COMMIT, STMT_COPY, 207 STMT_DEALLOCATE_PREPARE, STMT_DEALLOCATE, STMT_DECLARE, STMT_DISCARD, STMT_EXPLAIN_ANALYZE, STMT_EXPLAIN, STMT_FETCH, 208 STMT_LISTEN, STMT_LOAD, STMT_LOCK_TABLE, STMT_MOVE, STMT_NOTIFY, STMT_PREPARE, STMT_PREPARE_TRANSATION, 209 STMT_REASSIGN_OWNED, STMT_REINDEX, STMT_RELEASE_SAVEPOINT, STMT_REVOKE, STMT_ROLLBACK_TO_SAVEPOINT, 210 STMT_ROLLBACK_PREPARED, STMT_ROLLBACK, STMT_SELECT_INTO, STMT_SHOW, STMT_TRUNCATE, STMT_UNLISTEN, STMT_VACUUM // , 211 // STMT_VALUES 212 }; 213 214 // CREATE TABLE, CREATE VIEW, CREATE INDEX, CREATE SEQUENCE, CREATE TRIGGER and GRANT 215 public final static String[] VALID_SCHEMA_CHILD_STMTS = {StandardDdlLexicon.TYPE_CREATE_TABLE_STATEMENT, 216 StandardDdlLexicon.TYPE_CREATE_VIEW_STATEMENT, StandardDdlLexicon.TYPE_GRANT_ON_TABLE_STATEMENT, 217 PostgresDdlLexicon.TYPE_CREATE_INDEX_STATEMENT, PostgresDdlLexicon.TYPE_CREATE_SEQUENCE_STATEMENT, 218 PostgresDdlLexicon.TYPE_CREATE_TRIGGER_STATEMENT, PostgresDdlLexicon.TYPE_GRANT_ON_SEQUENCE_STATEMENT, 219 PostgresDdlLexicon.TYPE_GRANT_ON_SCHEMA_STATEMENT}; 220 221 public final static String[] COMPLEX_STMT_TYPES = {PostgresDdlLexicon.TYPE_CREATE_FUNCTION_STATEMENT}; 222 } 223 224 // SPEC Name Aliases Description 225 // 226 // X bigint int8 signed eight-byte integer 227 // bigserial serial8 autoincrementing eight-byte integer 228 // X bit [ (n) ] fixed-length bit string 229 // X bit varying [ (n) ] varbit variable-length bit string 230 // boolean bool logical Boolean (true/false) 231 // box rectangular box on a plane 232 // bytea binary data ("byte array") 233 // X character varying [ (n) ] varchar [ (n) ] variable-length character string 234 // X character [ (n) ] char [ (n) ] fixed-length character string 235 // cidr IPv4 or IPv6 network address 236 // circle circle on a plane 237 // X date calendar date (year, month, day) 238 // X double precision float8 double precision floating-point number (8 bytes) 239 // inet IPv4 or IPv6 host address 240 // X integer int, int4 signed four-byte integer 241 // X interval [ fields ] [ (p) ] time span 242 // line infinite line on a plane 243 // lseg line segment on a plane 244 // macaddr MAC (Media Access Control) address 245 // money currency amount 246 // X numeric [ (p, s) ] decimal [ (p, s) ] exact numeric of selectable precision 247 // path geometric path on a plane 248 // point geometric point on a plane 249 // polygon closed geometric path on a plane 250 // X real float4 single precision floating-point number (4 bytes) 251 // X smallint int2 signed two-byte integer 252 // serial serial4 auto incrementing four-byte integer 253 // text variable-length character string 254 // time [ (p) ] [ without time zone ] time of day (no time zone) 255 // X time [ (p) ] with time zone timetz time of day, including time zone 256 // timestamp [ (p) ] [ without time zone ] date and time (no time zone) 257 // X timestamp [ (p) ] with time zone timestamptz date and time, including time zone 258 // tsquery text search query 259 // tsvector text search document 260 // txid_snapshot user-level transaction ID snapshot 261 // uuid universally unique identifier 262 // X xml XML data 263 // interval hour to minute 264 265 interface PostgresDataTypes { 266 static final String[] DTYPE_BIGSERIAL = {"BIGSERIAL"}; 267 static final String[] DTYPE_BOX = {"BOX"}; 268 static final String[] DTYPE_BYTEA = {"BYTEA"}; 269 static final String[] DTYPE_CIDR = {"CIDR"}; 270 static final String[] DTYPE_CIRCLE = {"CIRCLE"}; 271 static final String[] DTYPE_INET = {"INET"}; 272 static final String[] DTYPE_LINE = {"LINE"}; 273 static final String[] DTYPE_LSEG = {"LSEG"}; 274 static final String[] DTYPE_MACADDR = {"MACADDR"}; 275 static final String[] DTYPE_MONEY = {"MONEY"}; 276 static final String[] DTYPE_PATH = {"PATH"}; 277 static final String[] DTYPE_POINT = {"POINT"}; 278 static final String[] DTYPE_POLYGON = {"POLYGON"}; 279 static final String[] DTYPE_SERIAL = {"SERIAL"}; 280 static final String[] DTYPE_TEXT = {"TEXT"}; 281 static final String[] DTYPE_TSQUERY = {"TSQUERY"}; 282 static final String[] DTYPE_TSVECTOR = {"TSVECTOR"}; 283 static final String[] DTYPE_TXID_SNAPSHOT = {"TXID_SNAPSHOT"}; 284 static final String[] DTYPE_UUID = {"UUID"}; 285 static final String[] DTYPE_XML = {"XML"}; 286 static final String[] DTYPE_BOOLEAN = {"BOOLEAN"}; 287 static final String[] DTYPE_BOOL = {"BOOL"}; 288 static final String[] DTYPE_FLOAT4 = {"FLOAT4"}; 289 static final String[] DTYPE_FLOAT8 = {"FLOAT8"}; 290 static final String[] DTYPE_INT2 = {"INT2"}; 291 static final String[] DTYPE_INT4 = {"INT4"}; 292 static final String[] DTYPE_INT8 = {"INT8"}; 293 static final String[] DTYPE_SERIAL4 = {"SERIAL4"}; 294 static final String[] DTYPE_SERIAL8 = {"SERIAL8"}; 295 static final String[] DTYPE_TIMESTAMPZ = {"TIMESTAMPZ"}; 296 static final String[] DTYPE_VARBIT = {"VARBIT"}; 297 298 static final List<String[]> CUSTOM_DATATYPE_START_PHRASES = Arrays.asList(DTYPE_BIGSERIAL, 299 DTYPE_BOOL, 300 DTYPE_BOOLEAN, 301 DTYPE_BOX, 302 DTYPE_BYTEA, 303 DTYPE_CIDR, 304 DTYPE_CIRCLE, 305 DTYPE_FLOAT4, 306 DTYPE_FLOAT8, 307 DTYPE_INET, 308 DTYPE_INT2, 309 DTYPE_INT4, 310 DTYPE_INT8, 311 DTYPE_LINE, 312 DTYPE_LSEG, 313 DTYPE_MACADDR, 314 DTYPE_MONEY, 315 DTYPE_PATH, 316 DTYPE_POINT, 317 DTYPE_POLYGON, 318 DTYPE_SERIAL, 319 DTYPE_SERIAL4, 320 DTYPE_SERIAL8, 321 DTYPE_TEXT, 322 DTYPE_TIMESTAMPZ, 323 DTYPE_TSQUERY, 324 DTYPE_TSVECTOR, 325 DTYPE_TXID_SNAPSHOT, 326 DTYPE_UUID, 327 DTYPE_XML); 328 329 static final List<String> CUSTOM_DATATYPE_START_WORDS = Arrays.asList("BIGSERIAL", 330 "BOX", 331 "BOOLEAN", 332 "BOX", 333 "BYTEA", 334 "CIDR", 335 "CIRCLE", 336 "FLOAT4", 337 "FLOAT8", 338 "INET", 339 "INT2", 340 "INT4", 341 "INT8", 342 "LINE", 343 "LSEG", 344 "MACADDR", 345 "MONEY", 346 "PATH", 347 "POINT", 348 "POLYGON", 349 "SERIAL", 350 "SERIAL4", 351 "SERIAL8", 352 "TEXT", 353 "TIMESTAMPZ", 354 "TSQUERY", 355 "TSVECTOR", 356 "TXID_SNAPSHOT", 357 "UUID", 358 "XML"); 359 } 360}