1 module hunt.sql.util.FnvHash; 2 3 // import hunt.String; 4 import hunt.text; 5 6 public class FnvHash { 7 public enum long BASIC = 0xcbf29ce484222325L; 8 public enum long PRIME = 0x100000001b3L; 9 10 public static long fnv1a_64(string input) { 11 if (input is null) { 12 return 0; 13 } 14 15 long hash = BASIC; 16 for (int i = 0; i < input.length; ++i) { 17 char c = charAt(input, i); 18 hash ^= c; 19 hash *= PRIME; 20 } 21 22 return hash; 23 } 24 25 public static long fnv1a_64(string input, int offset, int end) { 26 if (input is null) { 27 return 0; 28 } 29 30 if (input.length < end) { 31 end = cast(int)input.length; 32 } 33 34 long hash = BASIC; 35 for (int i = offset; i < end; ++i) { 36 char c = charAt(input, i); 37 hash ^= c; 38 hash *= PRIME; 39 } 40 41 return hash; 42 } 43 44 public static long fnv1a_64(byte[] input, int offset, int end) { 45 if (input is null) { 46 return 0; 47 } 48 49 if (input.length < end) { 50 end = cast(int)input.length; 51 } 52 53 long hash = BASIC; 54 for (int i = offset; i < end; ++i) { 55 byte c = input[i]; 56 hash ^= c; 57 hash *= PRIME; 58 } 59 60 return hash; 61 } 62 63 public static long fnv1a_64(char[] chars) { 64 if (chars is null) { 65 return 0; 66 } 67 long hash = BASIC; 68 for (int i = 0; i < chars.length; ++i) { 69 char c = chars[i]; 70 hash ^= c; 71 hash *= PRIME; 72 } 73 74 return hash; 75 } 76 77 /** 78 * lower and normalized and fnv_1a_64 79 * @param name 80 * @return 81 */ 82 public static long hashCode64(string name) @trusted nothrow{ 83 if (name is null) { 84 return 0; 85 } 86 87 bool quote = false; 88 89 int len = cast(int)name.length; 90 if (len > 2) { 91 char c0 = charAt(name, 0); 92 char c1 = charAt(name, len - 1); 93 if ((c0 == '`' && c1 == '`') 94 || (c0 == '"' && c1 == '"') 95 || (c0 == '\'' && c1 == '\'') 96 || (c0 == '[' && c1 == ']')) { 97 quote = true; 98 } 99 } 100 if (quote) { 101 return FnvHash.hashCode64(name, 1, len - 1); 102 } else { 103 return FnvHash.hashCode64(name, 0, len); 104 } 105 } 106 107 public static long fnv1a_64_lower(string key) { 108 long hashCode = BASIC; 109 for (int i = 0; i < key.length; ++i) { 110 char ch = charAt(key, i); 111 112 if (ch >= 'A' && ch <= 'Z') { 113 ch = cast(char) (ch + 32); 114 } 115 116 hashCode ^= ch; 117 hashCode *= PRIME; 118 } 119 120 return hashCode; 121 } 122 123 public static long fnv1a_64_lower(StringBuilder key) { 124 long hashCode = BASIC; 125 for (int i = 0; i < key.length; ++i) { 126 char ch = key._buffer.data[i]; 127 128 if (ch >= 'A' && ch <= 'Z') { 129 ch = cast(char) (ch + 32); 130 } 131 132 hashCode ^= ch; 133 hashCode *= PRIME; 134 } 135 136 return hashCode; 137 } 138 139 public static long fnv1a_64_lower( long basic, StringBuilder key) { 140 long hashCode = basic; 141 for (int i = 0; i < key.length; ++i) { 142 char ch = key._buffer.data[i]; 143 144 if (ch >= 'A' && ch <= 'Z') { 145 ch = cast(char) (ch + 32); 146 } 147 148 hashCode ^= ch; 149 hashCode *= PRIME; 150 } 151 152 return hashCode; 153 } 154 155 public static long hashCode64(string key, int offset, int end) @trusted nothrow { 156 long hashCode = BASIC; 157 for (int i = offset; i < end; ++i) { 158 char ch = charAt(key, i); 159 160 if (ch >= 'A' && ch <= 'Z') { 161 ch = cast(char) (ch + 32); 162 } 163 164 hashCode ^= ch; 165 hashCode *= PRIME; 166 } 167 168 return hashCode; 169 } 170 171 public static long hashCode64(long basic, string name)@trusted nothrow { 172 if (name is null) { 173 return basic; 174 } 175 176 bool quote = false; 177 178 int len = cast(int)name.length; 179 if (len > 2) { 180 char c0 = charAt(name, 0); 181 char c1 = charAt(name, len - 1); 182 if ((c0 == '`' && c1 == '`') 183 || (c0 == '"' && c1 == '"') 184 || (c0 == '\'' && c1 == '\'') 185 || (c0 == '[' && c1 == ']')) { 186 quote = true; 187 } 188 } 189 if (quote) { 190 return FnvHash.hashCode64(basic, name, 1, len - 1); 191 } else { 192 return FnvHash.hashCode64(basic, name, 0, len); 193 } 194 } 195 196 public static long hashCode64(long basic, string key, int offset, int end)@trusted nothrow { 197 long hashCode = basic; 198 for (int i = offset; i < end; ++i) { 199 char ch = charAt(key, i); 200 201 if (ch >= 'A' && ch <= 'Z') { 202 ch = cast(char) (ch + 32); 203 } 204 205 hashCode ^= ch; 206 hashCode *= PRIME; 207 } 208 209 return hashCode; 210 } 211 212 public static long fnv_32_lower(string key) { 213 long hashCode = 0x811c9dc5; 214 for (int i = 0; i < key.length; ++i) { 215 char ch = charAt(key, i); 216 if (ch == '_' || ch == '-') { 217 continue; 218 } 219 220 if (ch >= 'A' && ch <= 'Z') { 221 ch = cast(char) (ch + 32); 222 } 223 224 hashCode ^= ch; 225 hashCode *= 0x01000193; 226 } 227 228 return hashCode; 229 } 230 231 public static long[] fnv1a_64_lower(string[] strings, bool sorted) { 232 long[] hashCodes = new long[strings.length]; 233 for (int i = 0; i < strings.length; i++) { 234 hashCodes[i] = fnv1a_64_lower(strings[i]); 235 } 236 if (sorted) { 237 import std.algorithm.sorting; 238 sort!("a < b")(hashCodes); 239 } 240 return hashCodes; 241 } 242 243 /** 244 * normalized and lower and fnv1a_64_hash 245 * @param owner 246 * @param name 247 * @return 248 */ 249 public static long hashCode64(string owner, string name)@trusted nothrow { 250 long hashCode = BASIC; 251 252 if (owner !is null) { 253 string item = owner; 254 255 bool quote = false; 256 257 int len = cast(int)item.length; 258 if (len > 2) { 259 char c0 = charAt(item, 0); 260 char c1 = charAt(item, len - 1); 261 if ((c0 == '`' && c1 == '`') 262 || (c0 == '"' && c1 == '"') 263 || (c0 == '\'' && c1 == '\'') 264 || (c0 == '[' && c1 == ']')) { 265 quote = true; 266 } 267 } 268 269 int start = quote ? 1 : 0; 270 int end = quote ? len - 1 : len; 271 for (int j = start; j < end; ++j) { 272 char ch = charAt(item, j); 273 274 if (ch >= 'A' && ch <= 'Z') { 275 ch = cast(char) (ch + 32); 276 } 277 278 hashCode ^= ch; 279 hashCode *= PRIME; 280 } 281 282 hashCode ^= '.'; 283 hashCode *= PRIME; 284 } 285 286 287 if (name !is null) { 288 string item = name; 289 290 bool quote = false; 291 292 int len = cast(int)item.length; 293 if (len > 2) { 294 char c0 = charAt(item, 0); 295 char c1 = charAt(item, len - 1); 296 if ((c0 == '`' && c1 == '`') 297 || (c0 == '"' && c1 == '"') 298 || (c0 == '\'' && c1 == '\'') 299 || (c0 == '[' && c1 == ']')) { 300 quote = true; 301 } 302 } 303 304 int start = quote ? 1 : 0; 305 int end = quote ? len - 1 : len; 306 for (int j = start; j < end; ++j) { 307 char ch = charAt(item, j); 308 309 if (ch >= 'A' && ch <= 'Z') { 310 ch = cast(char) (ch + 32); 311 } 312 313 hashCode ^= ch; 314 hashCode *= PRIME; 315 } 316 } 317 318 return hashCode; 319 } 320 321 public static interface Constants { 322 enum long HIGH_PRIORITY = fnv1a_64_lower("HIGH_PRIORITY"); 323 enum long DISTINCTROW = fnv1a_64_lower("DISTINCTROW"); 324 enum long STRAIGHT_JOIN = fnv1a_64_lower("STRAIGHT_JOIN"); 325 enum long SQL_SMALL_RESULT = fnv1a_64_lower("SQL_SMALL_RESULT"); 326 enum long SQL_BIG_RESULT = fnv1a_64_lower("SQL_BIG_RESULT"); 327 enum long SQL_BUFFER_RESULT = fnv1a_64_lower("SQL_BUFFER_RESULT"); 328 enum long CACHE = fnv1a_64_lower("CACHE"); 329 enum long SQL_CACHE = fnv1a_64_lower("SQL_CACHE"); 330 enum long SQL_NO_CACHE = fnv1a_64_lower("SQL_NO_CACHE"); 331 enum long SQL_CALC_FOUND_ROWS = fnv1a_64_lower("SQL_CALC_FOUND_ROWS"); 332 enum long OUTFILE = fnv1a_64_lower("OUTFILE"); 333 enum long SETS = fnv1a_64_lower("SETS"); 334 enum long REGEXP = fnv1a_64_lower("REGEXP"); 335 enum long RLIKE = fnv1a_64_lower("RLIKE"); 336 enum long USING = fnv1a_64_lower("USING"); 337 enum long IGNORE = fnv1a_64_lower("IGNORE"); 338 enum long FORCE = fnv1a_64_lower("FORCE"); 339 enum long CROSS = fnv1a_64_lower("CROSS"); 340 enum long NATURAL = fnv1a_64_lower("NATURAL"); 341 enum long APPLY = fnv1a_64_lower("APPLY"); 342 enum long CONNECT = fnv1a_64_lower("CONNECT"); 343 enum long START = fnv1a_64_lower("START"); 344 enum long BTREE = fnv1a_64_lower("BTREE"); 345 enum long HASH = fnv1a_64_lower("HASH"); 346 enum long NO_WAIT = fnv1a_64_lower("NO_WAIT"); 347 enum long WAIT = fnv1a_64_lower("WAIT"); 348 enum long NOWAIT = fnv1a_64_lower("NOWAIT"); 349 enum long ERRORS = fnv1a_64_lower("ERRORS"); 350 enum long VALUE = fnv1a_64_lower("VALUE"); 351 enum long NEXT = fnv1a_64_lower("NEXT"); 352 enum long NEXTVAL = fnv1a_64_lower("NEXTVAL"); 353 enum long CURRVAL = fnv1a_64_lower("CURRVAL"); 354 enum long PREVVAL = fnv1a_64_lower("PREVVAL"); 355 enum long PREVIOUS = fnv1a_64_lower("PREVIOUS"); 356 enum long LOW_PRIORITY = fnv1a_64_lower("LOW_PRIORITY"); 357 enum long COMMIT_ON_SUCCESS = fnv1a_64_lower("COMMIT_ON_SUCCESS"); 358 enum long ROLLBACK_ON_FAIL = fnv1a_64_lower("ROLLBACK_ON_FAIL"); 359 enum long QUEUE_ON_PK = fnv1a_64_lower("QUEUE_ON_PK"); 360 enum long TARGET_AFFECT_ROW = fnv1a_64_lower("TARGET_AFFECT_ROW"); 361 enum long COLLATE = fnv1a_64_lower("COLLATE"); 362 enum long BOOLEAN = fnv1a_64_lower("bool"); 363 enum long SMALLINT = fnv1a_64_lower("SMALLINT"); 364 enum long CHARSET = fnv1a_64_lower("CHARSET"); 365 enum long SEMI = fnv1a_64_lower("SEMI"); 366 enum long ANTI = fnv1a_64_lower("ANTI"); 367 enum long PRIOR = fnv1a_64_lower("PRIOR"); 368 enum long NOCYCLE = fnv1a_64_lower("NOCYCLE"); 369 enum long CONNECT_BY_ROOT = fnv1a_64_lower("CONNECT_BY_ROOT"); 370 371 enum long DATE = fnv1a_64_lower("DATE"); 372 enum long DATETIME = fnv1a_64_lower("DATETIME"); 373 enum long TIME = fnv1a_64_lower("TIME"); 374 enum long TIMESTAMP = fnv1a_64_lower("TIMESTAMP"); 375 enum long CLOB = fnv1a_64_lower("CLOB"); 376 enum long NCLOB = fnv1a_64_lower("NCLOB"); 377 enum long BLOB = fnv1a_64_lower("BLOB"); 378 enum long XMLTYPE = fnv1a_64_lower("XMLTYPE"); 379 enum long BFILE = fnv1a_64_lower("BFILE"); 380 enum long UROWID = fnv1a_64_lower("UROWID"); 381 enum long ROWID = fnv1a_64_lower("ROWID"); 382 enum long INTEGER = fnv1a_64_lower("INTEGER"); 383 enum long INT = fnv1a_64_lower("INT"); 384 enum long BINARY_FLOAT = fnv1a_64_lower("BINARY_FLOAT"); 385 enum long BINARY_DOUBLE = fnv1a_64_lower("BINARY_DOUBLE"); 386 enum long FLOAT = fnv1a_64_lower("FLOAT"); 387 enum long REAL = fnv1a_64_lower("REAL"); 388 enum long NUMBER = fnv1a_64_lower("NUMBER"); 389 enum long DEC = fnv1a_64_lower("DEC"); 390 enum long DECIMAL = fnv1a_64_lower("DECIMAL"); 391 392 enum long CURRENT = fnv1a_64_lower("CURRENT"); 393 enum long COUNT = fnv1a_64_lower("COUNT"); 394 enum long ROW_NUMBER = fnv1a_64_lower("ROW_NUMBER"); 395 enum long WM_CONCAT = fnv1a_64_lower("WM_CONCAT"); 396 enum long AVG = fnv1a_64_lower("AVG"); 397 enum long MAX = fnv1a_64_lower("MAX"); 398 enum long MIN = fnv1a_64_lower("MIN"); 399 enum long STDDEV = fnv1a_64_lower("STDDEV"); 400 enum long SUM = fnv1a_64_lower("SUM"); 401 enum long GROUP_CONCAT = fnv1a_64_lower("GROUP_CONCAT"); 402 enum long DEDUPLICATION = fnv1a_64_lower("DEDUPLICATION"); 403 enum long CONVERT = fnv1a_64_lower("CONVERT"); 404 enum long CHAR = fnv1a_64_lower("CHAR"); 405 enum long VARCHAR = fnv1a_64_lower("VARCHAR"); 406 enum long VARCHAR2 = fnv1a_64_lower("VARCHAR2"); 407 enum long NCHAR = fnv1a_64_lower("NCHAR"); 408 enum long NVARCHAR = fnv1a_64_lower("NVARCHAR"); 409 enum long NVARCHAR2 = fnv1a_64_lower("NVARCHAR2"); 410 enum long NCHAR_VARYING = fnv1a_64_lower("nchar varying"); 411 enum long TINYTEXT = fnv1a_64_lower("TINYTEXT"); 412 enum long TEXT = fnv1a_64_lower("TEXT"); 413 enum long MEDIUMTEXT = fnv1a_64_lower("MEDIUMTEXT"); 414 enum long LONGTEXT = fnv1a_64_lower("LONGTEXT"); 415 enum long TRIM = fnv1a_64_lower("TRIM"); 416 enum long LEADING = fnv1a_64_lower("LEADING"); 417 enum long BOTH = fnv1a_64_lower("BOTH"); 418 enum long TRAILING = fnv1a_64_lower("TRAILING"); 419 enum long MOD = fnv1a_64_lower("MOD"); 420 enum long MATCH = fnv1a_64_lower("MATCH"); 421 enum long EXTRACT = fnv1a_64_lower("EXTRACT"); 422 enum long POSITION = fnv1a_64_lower("POSITION"); 423 enum long DUAL = fnv1a_64_lower("DUAL"); 424 enum long LEVEL = fnv1a_64_lower("LEVEL"); 425 enum long CONNECT_BY_ISCYCLE = fnv1a_64_lower("CONNECT_BY_ISCYCLE"); 426 enum long CURRENT_TIMESTAMP = fnv1a_64_lower("CURRENT_TIMESTAMP"); 427 enum long CURRENT_USER = fnv1a_64_lower("CURRENT_USER"); 428 enum long FALSE = fnv1a_64_lower("FALSE"); 429 enum long TRUE = fnv1a_64_lower("TRUE"); 430 enum long SET = fnv1a_64_lower("SET"); 431 enum long LESS = fnv1a_64_lower("LESS"); 432 enum long MAXVALUE = fnv1a_64_lower("MAXVALUE"); 433 enum long OFFSET = fnv1a_64_lower("OFFSET"); 434 enum long RAW = fnv1a_64_lower("RAW"); 435 enum long LONG_RAW = fnv1a_64_lower("LONG RAW"); 436 enum long LONG = fnv1a_64_lower("LONG"); 437 enum long ROWNUM = fnv1a_64_lower("ROWNUM"); 438 enum long SYSDATE = fnv1a_64_lower("SYSDATE"); 439 enum long SQLCODE = fnv1a_64_lower("SQLCODE"); 440 enum long PRECISION = fnv1a_64_lower("PRECISION"); 441 enum long DOUBLE = fnv1a_64_lower("DOUBLE"); 442 enum long DOUBLE_PRECISION = fnv1a_64_lower("DOUBLE PRECISION"); 443 enum long WITHOUT = fnv1a_64_lower("WITHOUT"); 444 445 enum long DEFINER = fnv1a_64_lower("DEFINER"); 446 enum long EVENT = fnv1a_64_lower("EVENT"); 447 enum long DETERMINISTIC = fnv1a_64_lower("DETERMINISTIC"); 448 enum long CONTAINS = fnv1a_64_lower("CONTAINS"); 449 enum long SQL = fnv1a_64_lower("SQL"); 450 enum long CALL = fnv1a_64_lower("CALL"); 451 enum long CHARACTER = fnv1a_64_lower("CHARACTER"); 452 453 enum long VALIDATE = fnv1a_64_lower("VALIDATE"); 454 enum long NOVALIDATE = fnv1a_64_lower("NOVALIDATE"); 455 enum long SIMILAR = fnv1a_64_lower("SIMILAR"); 456 enum long CASCADE = fnv1a_64_lower("CASCADE"); 457 enum long RELY = fnv1a_64_lower("RELY"); 458 enum long NORELY = fnv1a_64_lower("NORELY"); 459 enum long ROW = fnv1a_64_lower("ROW"); 460 enum long ROWS = fnv1a_64_lower("ROWS"); 461 enum long RANGE = fnv1a_64_lower("RANGE"); 462 enum long PRECEDING = fnv1a_64_lower("PRECEDING"); 463 enum long FOLLOWING = fnv1a_64_lower("FOLLOWING"); 464 enum long UNBOUNDED = fnv1a_64_lower("UNBOUNDED"); 465 enum long SIBLINGS = fnv1a_64_lower("SIBLINGS"); 466 enum long RESPECT = fnv1a_64_lower("RESPECT"); 467 enum long NULLS = fnv1a_64_lower("NULLS"); 468 enum long FIRST = fnv1a_64_lower("FIRST"); 469 enum long LAST = fnv1a_64_lower("LAST"); 470 enum long AUTO_INCREMENT = fnv1a_64_lower("AUTO_INCREMENT"); 471 enum long STORAGE = fnv1a_64_lower("STORAGE"); 472 enum long STORED = fnv1a_64_lower("STORED"); 473 enum long VIRTUAL = fnv1a_64_lower("VIRTUAL"); 474 enum long UNSIGNED = fnv1a_64_lower("UNSIGNED"); 475 enum long ZEROFILL = fnv1a_64_lower("ZEROFILL"); 476 enum long GLOBAL = fnv1a_64_lower("GLOBAL"); 477 enum long SESSION = fnv1a_64_lower("SESSION"); 478 enum long NAMES = fnv1a_64_lower("NAMES"); 479 enum long PARTIAL = fnv1a_64_lower("PARTIAL"); 480 enum long SIMPLE = fnv1a_64_lower("SIMPLE"); 481 enum long RESTRICT = fnv1a_64_lower("RESTRICT"); 482 enum long ON = fnv1a_64_lower("ON"); 483 enum long ACTION = fnv1a_64_lower("ACTION"); 484 enum long SEPARATOR = fnv1a_64_lower("SEPARATOR"); 485 enum long DATA = fnv1a_64_lower("DATA"); 486 enum long MAX_ROWS = fnv1a_64_lower("MAX_ROWS"); 487 enum long MIN_ROWS = fnv1a_64_lower("MIN_ROWS"); 488 enum long ENGINE = fnv1a_64_lower("ENGINE"); 489 enum long SKIP = fnv1a_64_lower("SKIP"); 490 enum long RECURSIVE = fnv1a_64_lower("RECURSIVE"); 491 enum long ROLLUP = fnv1a_64_lower("ROLLUP"); 492 enum long CUBE = fnv1a_64_lower("CUBE"); 493 494 enum long YEAR = fnv1a_64_lower("YEAR"); 495 enum long MONTH = fnv1a_64_lower("MONTH"); 496 enum long DAY = fnv1a_64_lower("DAY"); 497 enum long HOUR = fnv1a_64_lower("HOUR"); 498 enum long MINUTE = fnv1a_64_lower("MINUTE"); 499 enum long SECOND = fnv1a_64_lower("SECOND"); 500 501 enum long SECONDS = fnv1a_64_lower("SECONDS"); 502 enum long MINUTES = fnv1a_64_lower("MINUTES"); 503 enum long HOURS = fnv1a_64_lower("HOURS"); 504 enum long DAYS = fnv1a_64_lower("DAYS"); 505 enum long MONTHS = fnv1a_64_lower("MONTHS"); 506 enum long YEARS = fnv1a_64_lower("YEARS"); 507 508 enum long BEFORE = fnv1a_64_lower("BEFORE"); 509 enum long AFTER = fnv1a_64_lower("AFTER"); 510 enum long INSTEAD = fnv1a_64_lower("INSTEAD"); 511 512 enum long DEFERRABLE = fnv1a_64_lower("DEFERRABLE"); 513 enum long AS = fnv1a_64_lower("AS"); 514 enum long DELAYED = fnv1a_64_lower("DELAYED"); 515 enum long GO = fnv1a_64_lower("GO"); 516 enum long WAITFOR = fnv1a_64_lower("WAITFOR"); 517 enum long EXEC = fnv1a_64_lower("EXEC"); 518 enum long EXECUTE = fnv1a_64_lower("EXECUTE"); 519 520 enum long SOURCE = fnv1a_64_lower("SOURCE"); 521 522 enum long STAR = fnv1a_64_lower("*"); 523 524 enum long TO_CHAR = fnv1a_64_lower("TO_CHAR"); 525 enum long SYS_GUID = fnv1a_64_lower("SYS_GUID"); 526 527 enum long STATISTICS = fnv1a_64_lower("STATISTICS"); 528 enum long TRANSACTION = fnv1a_64_lower("TRANSACTION"); 529 enum long OFF = fnv1a_64_lower("OFF"); 530 enum long IDENTITY_INSERT = fnv1a_64_lower("IDENTITY_INSERT"); 531 enum long PASSWORD = fnv1a_64_lower("PASSWORD"); 532 enum long SOCKET = fnv1a_64_lower("SOCKET"); 533 enum long OWNER = fnv1a_64_lower("OWNER"); 534 enum long PORT = fnv1a_64_lower("PORT"); 535 enum long PUBLIC = fnv1a_64_lower("PUBLIC"); 536 enum long SYNONYM = fnv1a_64_lower("SYNONYM"); 537 enum long MATERIALIZED = fnv1a_64_lower("MATERIALIZED"); 538 enum long BITMAP = fnv1a_64_lower("BITMAP"); 539 enum long PACKAGE = fnv1a_64_lower("PACKAGE"); 540 enum long TRUNC = fnv1a_64_lower("TRUNC"); 541 enum long SYSTIMESTAMP = fnv1a_64_lower("SYSTIMESTAMP"); 542 enum long TYPE = fnv1a_64_lower("TYPE"); 543 enum long RECORD = fnv1a_64_lower("RECORD"); 544 enum long MAP = fnv1a_64_lower("MAP"); 545 enum long ONLY = fnv1a_64_lower("ONLY"); 546 enum long MEMBER = fnv1a_64_lower("MEMBER"); 547 enum long STATIC = fnv1a_64_lower("STATIC"); 548 enum long FINAL = fnv1a_64_lower("FINAL"); 549 enum long INSTANTIABLE = fnv1a_64_lower("INSTANTIABLE"); 550 enum long UNSUPPORTED = fnv1a_64_lower("UNSUPPORTED"); 551 enum long VARRAY = fnv1a_64_lower("VARRAY"); 552 enum long WRAPPED = fnv1a_64_lower("WRAPPED"); 553 enum long AUTHID = fnv1a_64_lower("AUTHID"); 554 enum long UNDER = fnv1a_64_lower("UNDER"); 555 enum long USERENV = fnv1a_64_lower("USERENV"); 556 enum long NUMTODSINTERVAL = fnv1a_64_lower("NUMTODSINTERVAL"); 557 558 enum long LATERAL = fnv1a_64_lower("LATERAL"); 559 enum long NONE = fnv1a_64_lower("NONE"); 560 enum long PARTITIONING = fnv1a_64_lower("PARTITIONING"); 561 enum long VALIDPROC = fnv1a_64_lower("VALIDPROC"); 562 enum long COMPRESS = fnv1a_64_lower("COMPRESS"); 563 enum long YES = fnv1a_64_lower("YES"); 564 enum long WMSYS = fnv1a_64_lower("WMSYS"); 565 566 enum long DEPTH = fnv1a_64_lower("DEPTH"); 567 enum long BREADTH = fnv1a_64_lower("BREADTH"); 568 569 enum long SCHEDULE = fnv1a_64_lower("SCHEDULE"); 570 enum long COMPLETION = fnv1a_64_lower("COMPLETION"); 571 enum long RENAME = fnv1a_64_lower("RENAME"); 572 enum long DUMP = fnv1a_64_lower("DUMP"); 573 enum long AT = fnv1a_64_lower("AT"); 574 enum long LANGUAGE = fnv1a_64_lower("LANGUAGE"); 575 enum long LOGFILE = fnv1a_64_lower("LOGFILE"); 576 enum long INITIAL_SIZE = fnv1a_64_lower("INITIAL_SIZE"); 577 enum long MAX_SIZE = fnv1a_64_lower("MAX_SIZE"); 578 enum long NODEGROUP = fnv1a_64_lower("NODEGROUP"); 579 enum long EXTENT_SIZE = fnv1a_64_lower("EXTENT_SIZE"); 580 enum long AUTOEXTEND_SIZE = fnv1a_64_lower("AUTOEXTEND_SIZE"); 581 enum long FILE_BLOCK_SIZE = fnv1a_64_lower("FILE_BLOCK_SIZE"); 582 enum long SERVER = fnv1a_64_lower("SERVER"); 583 enum long HOST = fnv1a_64_lower("HOST"); 584 enum long ADD = fnv1a_64_lower("ADD"); 585 enum long ALGORITHM = fnv1a_64_lower("ALGORITHM"); 586 enum long EVERY = fnv1a_64_lower("EVERY"); 587 enum long STARTS = fnv1a_64_lower("STARTS"); 588 enum long ENDS = fnv1a_64_lower("ENDS"); 589 enum long BINARY = fnv1a_64_lower("BINARY"); 590 enum long ISOPEN = fnv1a_64_lower("ISOPEN"); 591 enum long CONFLICT = fnv1a_64_lower("CONFLICT"); 592 enum long NOTHING = fnv1a_64_lower("NOTHING"); 593 enum long COMMIT = fnv1a_64_lower("COMMIT"); 594 595 enum long RS = fnv1a_64_lower("RS"); 596 enum long RR = fnv1a_64_lower("RR"); 597 enum long CS = fnv1a_64_lower("CS"); 598 enum long UR = fnv1a_64_lower("UR"); 599 600 enum long INT4 = fnv1a_64_lower("INT4"); 601 enum long VARBIT = fnv1a_64_lower("VARBIT"); 602 enum long CLUSTERED = fnv1a_64_lower("CLUSTERED"); 603 enum long SORTED = fnv1a_64_lower("SORTED"); 604 enum long LIFECYCLE = fnv1a_64_lower("LIFECYCLE"); 605 enum long PARTITIONS = fnv1a_64_lower("PARTITIONS"); 606 enum long ARRAY = fnv1a_64_lower("ARRAY"); 607 enum long STRUCT = fnv1a_64_lower("STRUCT"); 608 609 enum long ROLLBACK = fnv1a_64_lower("ROLLBACK"); 610 enum long SAVEPOINT = fnv1a_64_lower("SAVEPOINT"); 611 enum long RELEASE = fnv1a_64_lower("RELEASE"); 612 enum long MERGE = fnv1a_64_lower("MERGE"); 613 enum long INHERITS = fnv1a_64_lower("INHERITS"); 614 enum long DELIMITED = fnv1a_64_lower("DELIMITED"); 615 enum long TABLES = fnv1a_64_lower("TABLES"); 616 enum long PARALLEL = fnv1a_64_lower("PARALLEL"); 617 enum long BUILD = fnv1a_64_lower("BUILD"); 618 enum long NOCACHE = fnv1a_64_lower("NOCACHE"); 619 enum long NOPARALLEL = fnv1a_64_lower("NOPARALLEL"); 620 enum long EXIST = fnv1a_64_lower("EXIST"); 621 622 enum long TBLPROPERTIES = fnv1a_64_lower("TBLPROPERTIES"); 623 enum long FULLTEXT = fnv1a_64_lower("FULLTEXT"); 624 enum long SPATIAL = fnv1a_64_lower("SPATIAL"); 625 enum long NO = fnv1a_64_lower("NO"); 626 enum long PATH = fnv1a_64_lower("PATH"); 627 enum long COMPRESSION = fnv1a_64_lower("COMPRESSION"); 628 enum long KEY_BLOCK_SIZE = fnv1a_64_lower("KEY_BLOCK_SIZE"); 629 enum long CHECKSUM = fnv1a_64_lower("CHECKSUM"); 630 enum long ROUTINE = fnv1a_64_lower("ROUTINE"); 631 enum long DATE_FORMAT = fnv1a_64_lower("DATE_FORMAT"); 632 enum long DBPARTITION = fnv1a_64_lower("DBPARTITION"); 633 enum long TBPARTITION = fnv1a_64_lower("TBPARTITION"); 634 enum long TBPARTITIONS = fnv1a_64_lower("TBPARTITIONS"); 635 enum long SOUNDS = fnv1a_64_lower("SOUNDS"); 636 enum long WINDOW = fnv1a_64_lower("WINDOW"); 637 enum long GENERATED = fnv1a_64_lower("GENERATED"); 638 enum long ALWAYS = fnv1a_64_lower("ALWAYS"); 639 enum long INCREMENT = fnv1a_64_lower("INCREMENT"); 640 641 enum long OVERWRITE = fnv1a_64_lower("OVERWRITE"); 642 enum long FILTER = fnv1a_64_lower("FILTER"); 643 } 644 }