content: /*
   * Copyright 1999-2017 Alibaba Group Holding Ltd.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package com.alibaba.druid.util;
  
  import java.util.Arrays;
  
  public final class FnvHash {
      public static final long BASIC = 0xcbf29ce484222325L;
      public static final long PRIME = 0x100000001b3L;
  
      public static long fnv1a_64(String input) {
          if (input == null) {
              return 0;
          }
  
          long hash = BASIC;
          for (int i = 0; i < input.length(); ++i) {
              char c = input.charAt(i);
              hash ^= c;
              hash *= PRIME;
          }
  
          return hash;
      }
  
      public static long fnv1a_64(StringBuilder input) {
          if (input == null) {
              return 0;
          }
  
          long hash = BASIC;
          for (int i = 0; i < input.length(); ++i) {
              char c = input.charAt(i);
              hash ^= c;
              hash *= PRIME;
          }
  
          return hash;
      }
  
      public static long fnv1a_64(String input, int offset, int end) {
          if (input == null) {
              return 0;
          }
  
          if (input.length() < end) {
              end = input.length();
          }
  
          long hash = BASIC;
          for (int i = offset; i < end; ++i) {
              char c = input.charAt(i);
              hash ^= c;
              hash *= PRIME;
          }
  
          return hash;
      }
  
      public static long fnv1a_64(byte[] input, int offset, int end) {
          if (input == null) {
              return 0;
          }
  
          if (input.length < end) {
              end = input.length;
          }
  
          long hash = BASIC;
          for (int i = offset; i < end; ++i) {
              byte c = input[i];
              hash ^= c;
              hash *= PRIME;
          }
  
          return hash;
      }
  
      public static long fnv1a_64(char[] chars) {
          if (chars == null) {
              return 0;
          }
          long hash = BASIC;
          for (int i = 0; i < chars.length; ++i) {
              char c = chars[i];
              hash ^= c;
              hash *= PRIME;
          }
  
          return hash;
      }
  
      /**
       * lower and normalized and fnv_1a_64
       *
       * @param name the string to calculate the hash code for
       * @return the 64-bit hash code of the string
       */
      public static long hashCode64(String name) {
          if (name == null) {
              return 0;
          }
  
          boolean quote = false;
  
          int len = name.length();
          if (len > 2) {
              char c0 = name.charAt(0);
              char c1 = name.charAt(len - 1);
              if ((c0 == '`' && c1 == '`')
                      || (c0 == '"' && c1 == '"')
                      || (c0 == '\'' && c1 == '\'')
                      || (c0 == '[' && c1 == ']')) {
                  quote = true;
              }
          }
          if (quote) {
              return FnvHash.hashCode64(name, 1, len - 1);
          } else {
              return FnvHash.hashCode64(name, 0, len);
          }
      }
  
      public static long fnv1a_64_lower(String key) {
          long hashCode = BASIC;
          for (int i = 0; i < key.length(); ++i) {
              char ch = key.charAt(i);
  
              if (ch >= 'A' && ch <= 'Z') {
                  ch = (char) (ch + 32);
              }
  
              hashCode ^= ch;
              hashCode *= PRIME;
          }
  
          return hashCode;
      }
  
      public static long fnv1a_64_lower(StringBuilder key) {
          long hashCode = BASIC;
          for (int i = 0; i < key.length(); ++i) {
              char ch = key.charAt(i);
  
              if (ch >= 'A' && ch <= 'Z') {
                  ch = (char) (ch + 32);
              }
  
              hashCode ^= ch;
              hashCode *= PRIME;
          }
  
          return hashCode;
      }
  
      public static long fnv1a_64_lower(long basic, StringBuilder key) {
          long hashCode = basic;
          for (int i = 0; i < key.length(); ++i) {
              char ch = key.charAt(i);
  
              if (ch >= 'A' && ch <= 'Z') {
                  ch = (char) (ch + 32);
              }
  
              hashCode ^= ch;
              hashCode *= PRIME;
          }
  
          return hashCode;
      }
  
      public static long hashCode64(String key, int offset, int end) {
          long hashCode = BASIC;
          for (int i = offset; i < end; ++i) {
              char ch = key.charAt(i);
  
              if (ch >= 'A' && ch <= 'Z') {
                  ch = (char) (ch + 32);
              }
  
              hashCode ^= ch;
              hashCode *= PRIME;
          }
  
          return hashCode;
      }
  
      public static long hashCode64(long basic, String name) {
          if (name == null) {
              return basic;
          }
  
          boolean quote = false;
  
          int len = name.length();
          if (len > 2) {
              char c0 = name.charAt(0);
              char c1 = name.charAt(len - 1);
              if ((c0 == '`' && c1 == '`')
                      || (c0 == '"' && c1 == '"')
                      || (c0 == '\'' && c1 == '\'')
                      || (c0 == '[' && c1 == ']')) {
                  quote = true;
              }
          }
          if (quote) {
              int offset = 1;
              int end = len - 1;
              for (int i = end - 1; i >= 0; --i) {
                  char ch = name.charAt(i);
                  if (ch == ' ') {
                      end--;
                  } else {
                      break;
                  }
              }
              return FnvHash.hashCode64(basic, name, offset, end);
          } else {
              return FnvHash.hashCode64(basic, name, 0, len);
          }
      }
  
      public static long hashCode64(long basic, String key, int offset, int end) {
          long hashCode = basic;
          for (int i = offset; i < end; ++i) {
              char ch = key.charAt(i);
  
              if (ch >= 'A' && ch <= 'Z') {
                  ch = (char) (ch + 32);
              }
  
              hashCode ^= ch;
              hashCode *= PRIME;
          }
  
          return hashCode;
      }
  
      public static long fnv_32_lower(String key) {
          long hashCode = 0x811c9dc5;
          for (int i = 0; i < key.length(); ++i) {
              char ch = key.charAt(i);
              if (ch == '_' || ch == '-') {
                  continue;
              }
  
              if (ch >= 'A' && ch <= 'Z') {
                  ch = (char) (ch + 32);
              }
  
              hashCode ^= ch;
              hashCode *= 0x01000193;
          }
  
          return hashCode;
      }
  
      public static long[] fnv1a_64_lower(String[] strings, boolean sort) {
          long[] hashCodes = new long[strings.length];
          for (int i = 0; i < strings.length; i++) {
              hashCodes[i] = fnv1a_64_lower(strings[i]);
          }
          if (sort) {
              Arrays.sort(hashCodes);
          }
          return hashCodes;
      }
  
      /**
       * normalized and lower and fnv1a_64_hash
       *
       * @param owner the owner string to include in the hash code calculation (can be null)
       * @param name  the name string to include in the hash code calculation (can be null)
       * @return the 64-bit hash code calculated from the owner and name strings
       */
      public static long hashCode64(String owner, String name) {
          long hashCode = BASIC;
  
          if (owner != null) {
              String item = owner;
  
              boolean quote = false;
  
              int len = item.length();
              if (len > 2) {
                  char c0 = item.charAt(0);
                  char c1 = item.charAt(len - 1);
                  if ((c0 == '`' && c1 == '`')
                          || (c0 == '"' && c1 == '"')
                          || (c0 == '\'' && c1 == '\'')
                          || (c0 == '[' && c1 == ']')) {
                      quote = true;
                  }
              }
  
              int start = quote ? 1 : 0;
              int end = quote ? len - 1 : len;
              for (int j = start; j < end; ++j) {
                  char ch = item.charAt(j);
  
                  if (ch >= 'A' && ch <= 'Z') {
                      ch = (char) (ch + 32);
                  }
  
                  hashCode ^= ch;
                  hashCode *= PRIME;
              }
  
              hashCode ^= '.';
              hashCode *= PRIME;
          }
  
          if (name != null) {
              String item = name;
  
              boolean quote = false;
  
              int len = item.length();
              if (len > 2) {
                  char c0 = item.charAt(0);
                  char c1 = item.charAt(len - 1);
                  if ((c0 == '`' && c1 == '`')
                          || (c0 == '"' && c1 == '"')
                          || (c0 == '\'' && c1 == '\'')
                          || (c0 == '[' && c1 == ']')) {
                      quote = true;
                  }
              }
  
              int start = quote ? 1 : 0;
              int end = quote ? len - 1 : len;
              for (int j = start; j < end; ++j) {
                  char ch = item.charAt(j);
  
                  if (ch >= 'A' && ch <= 'Z') {
                      ch = (char) (ch + 32);
                  }
  
                  hashCode ^= ch;
                  hashCode *= PRIME;
              }
          }
  
          return hashCode;
      }
  
      public interface Constants {
          long HIGH_PRIORITY = fnv1a_64_lower("HIGH_PRIORITY");
          long DISTINCTROW = fnv1a_64_lower("DISTINCTROW");
          long STRAIGHT = fnv1a_64_lower("STRAIGHT");
          long STRAIGHT_JOIN = fnv1a_64_lower("STRAIGHT_JOIN");
          long SQL_SMALL_RESULT = fnv1a_64_lower("SQL_SMALL_RESULT");
          long SQL_BIG_RESULT = fnv1a_64_lower("SQL_BIG_RESULT");
          long SQL_BUFFER_RESULT = fnv1a_64_lower("SQL_BUFFER_RESULT");
          long CACHE = fnv1a_64_lower("CACHE");
          long CACHED = fnv1a_64_lower("CACHED");
          long UNCACHED = fnv1a_64_lower("UNCACHED");
          long SQL_CACHE = fnv1a_64_lower("SQL_CACHE");
          long SQL_NO_CACHE = fnv1a_64_lower("SQL_NO_CACHE");
          long SQL_CALC_FOUND_ROWS = fnv1a_64_lower("SQL_CALC_FOUND_ROWS");
          long TOP = fnv1a_64_lower("TOP");
          long OUTFILE = fnv1a_64_lower("OUTFILE");
          long SETS = fnv1a_64_lower("SETS");
          long REGEXP = fnv1a_64_lower("REGEXP");
          long RLIKE = fnv1a_64_lower("RLIKE");
          long USING = fnv1a_64_lower("USING");
          long IGNORE = fnv1a_64_lower("IGNORE");
          long FORCE = fnv1a_64_lower("FORCE");
          long CROSS = fnv1a_64_lower("CROSS");
          long NATURAL = fnv1a_64_lower("NATURAL");
          long APPLY = fnv1a_64_lower("APPLY");
          long CONNECT = fnv1a_64_lower("CONNECT");
          long START = fnv1a_64_lower("START");
          long BTREE = fnv1a_64_lower("BTREE");
          long HASH = fnv1a_64_lower("HASH");
          long DUPLICATE = fnv1a_64_lower("DUPLICATE");
          long LIST = fnv1a_64_lower("LIST");
          long NO_WAIT = fnv1a_64_lower("NO_WAIT");
          long WAIT = fnv1a_64_lower("WAIT");
          long NOWAIT = fnv1a_64_lower("NOWAIT");
          long ERRORS = fnv1a_64_lower("ERRORS");
          long VALUE = fnv1a_64_lower("VALUE");
          long OBJECT = fnv1a_64_lower("OBJECT");
          long NEXT = fnv1a_64_lower("NEXT");
          long NEXTVAL = fnv1a_64_lower("NEXTVAL");
          long CURRVAL = fnv1a_64_lower("CURRVAL");
          long PREVVAL = fnv1a_64_lower("PREVVAL");
          long PREVIOUS = fnv1a_64_lower("PREVIOUS");
          long LOW_PRIORITY = fnv1a_64_lower("LOW_PRIORITY");
          long COMMIT_ON_SUCCESS = fnv1a_64_lower("COMMIT_ON_SUCCESS");
          long ROLLBACK_ON_FAIL = fnv1a_64_lower("ROLLBACK_ON_FAIL");
          long QUEUE_ON_PK = fnv1a_64_lower("QUEUE_ON_PK");
          long TARGET_AFFECT_ROW = fnv1a_64_lower("TARGET_AFFECT_ROW");
          long COLLATE = fnv1a_64_lower("COLLATE");
          long BOOLEAN = fnv1a_64_lower("BOOLEAN");
          long SMALLINT = fnv1a_64_lower("SMALLINT");
          long MEDIUMINT = fnv1a_64_lower("MEDIUMINT");
          long SHORT = fnv1a_64_lower("SHORT");
          long TINY = fnv1a_64_lower("TINY");
          long TINYINT = fnv1a_64_lower("TINYINT");
          long CHARSET = fnv1a_64_lower("CHARSET");
          long SEMI = fnv1a_64_lower("SEMI");
          long ANTI = fnv1a_64_lower("ANTI");
          long PRIOR = fnv1a_64_lower("PRIOR");
          long NOCYCLE = fnv1a_64_lower("NOCYCLE");
          long CYCLE = fnv1a_64_lower("CYCLE");
          long CONNECT_BY_ROOT = fnv1a_64_lower("CONNECT_BY_ROOT");
  
          long DATE = fnv1a_64_lower("DATE");
          long GSON = fnv1a_64_lower("GSON");
          long NEW = fnv1a_64_lower("NEW");
          long NEWDATE = fnv1a_64_lower("NEWDATE");
          long DATETIME = fnv1a_64_lower("DATETIME");
          long TIME = fnv1a_64_lower("TIME");
          long ZONE = fnv1a_64_lower("ZONE");
          long JSON = fnv1a_64_lower("JSON");
          long TIMESTAMP = fnv1a_64_lower("TIMESTAMP");
          long TIMESTAMPTZ = fnv1a_64_lower("TIMESTAMPTZ");
          long CLOB = fnv1a_64_lower("CLOB");
          long NCLOB = fnv1a_64_lower("NCLOB");
          long TINYBLOB = fnv1a_64_lower("TINYBLOB");
          long BLOB = fnv1a_64_lower("BLOB");
          long XMLTYPE = fnv1a_64_lower("XMLTYPE");
          long BFILE = fnv1a_64_lower("BFILE");
          long UROWID = fnv1a_64_lower("UROWID");
          long ROWID = fnv1a_64_lower("ROWID");
          long REF = fnv1a_64_lower("REF");
          long INTEGER = fnv1a_64_lower("INTEGER");
          long INT = fnv1a_64_lower("INT");
          long INT24 = fnv1a_64_lower("INT24");
          long BINARY_FLOAT = fnv1a_64_lower("BINARY_FLOAT");
          long BINARY_DOUBLE = fnv1a_64_lower("BINARY_DOUBLE");
          long FLOAT = fnv1a_64_lower("FLOAT");
          long REAL = fnv1a_64_lower("REAL");
          long NUMBER = fnv1a_64_lower("NUMBER");
          long NUMERIC = fnv1a_64_lower("NUMERIC");
          long DEC = fnv1a_64_lower("DEC");
          long DECIMAL = fnv1a_64_lower("DECIMAL");
  
          long CURRENT = fnv1a_64_lower("CURRENT");
          long COUNT = fnv1a_64_lower("COUNT");
          long ROW_NUMBER = fnv1a_64_lower("ROW_NUMBER");
          long FIRST_VALUE = fnv1a_64_lower("FIRST_VALUE");
          long LAST_VALUE = fnv1a_64_lower("LAST_VALUE");
          long WM_CONCAT = fnv1a_64_lower("WM_CONCAT");
          long AVG = fnv1a_64_lower("AVG");
          long MAX = fnv1a_64_lower("MAX");
          long MIN = fnv1a_64_lower("MIN");
          long STDDEV = fnv1a_64_lower("STDDEV");
          long RANK = fnv1a_64_lower("RANK");
          long SUM = fnv1a_64_lower("SUM");
          long ARBITRARY = fnv1a_64_lower("ARBITRARY");
          long GROUP_CONCAT = fnv1a_64_lower("GROUP_CONCAT");
          long CONVERT_TZ = fnv1a_64_lower("CONVERT_TZ");
          long DEDUPLICATION = fnv1a_64_lower("DEDUPLICATION");
          long CONVERT = fnv1a_64_lower("CONVERT");
          long CHAR = fnv1a_64_lower("CHAR");
          long ENUM = fnv1a_64_lower("ENUM");
          long STRING = fnv1a_64_lower("STRING");
          long VARCHAR = fnv1a_64_lower("VARCHAR");
          long VARCHAR2 = fnv1a_64_lower("VARCHAR2");
          long NCHAR = fnv1a_64_lower("NCHAR");
          long NVARCHAR = fnv1a_64_lower("NVARCHAR");
          long NVARCHAR2 = fnv1a_64_lower("NVARCHAR2");
          long NCHAR_VARYING = fnv1a_64_lower("nchar varying");
          long VARBINARY = fnv1a_64_lower("VARBINARY");
          long TINYTEXT = fnv1a_64_lower("TINYTEXT");
          long TEXT = fnv1a_64_lower("TEXT");
          long MEDIUMTEXT = fnv1a_64_lower("MEDIUMTEXT");
          long LONGTEXT = fnv1a_64_lower("LONGTEXT");
          long TRIM = fnv1a_64_lower("TRIM");
          long LEADING = fnv1a_64_lower("LEADING");
          long BOTH = fnv1a_64_lower("BOTH");
          long TRAILING = fnv1a_64_lower("TRAILING");
          long MOD = fnv1a_64_lower("MOD");
          long MATCH = fnv1a_64_lower("MATCH");
          long AGAINST = fnv1a_64_lower("AGAINST");
          long EXTRACT = fnv1a_64_lower("EXTRACT");
          long POLYGON = fnv1a_64_lower("POLYGON");
          long CIRCLE = fnv1a_64_lower("CIRCLE");
          long LSEG = fnv1a_64_lower("LSEG");
          long POINT = fnv1a_64_lower("POINT");
          long E = fnv1a_64_lower("E");
          long BOX = fnv1a_64_lower("BOX");
          long MACADDR = fnv1a_64_lower("MACADDR");
          long INET = fnv1a_64_lower("INET");
          long CIDR = fnv1a_64_lower("CIDR");
          long POSITION = fnv1a_64_lower("POSITION");
          long DUAL = fnv1a_64_lower("DUAL");
          long LEVEL = fnv1a_64_lower("LEVEL");
          long CONNECT_BY_ISCYCLE = fnv1a_64_lower("CONNECT_BY_ISCYCLE");
          long CURRENT_TIMESTAMP = fnv1a_64_lower("CURRENT_TIMESTAMP");
          long LOCALTIMESTAMP = fnv1a_64_lower("LOCALTIMESTAMP");
          long LOCALTIME = fnv1a_64_lower("LOCALTIME");
          long SESSIONTIMEZONE = fnv1a_64_lower("SESSIONTIMEZONE");
          long DBTIMEZONE = fnv1a_64_lower("DBTIMEZONE");
          long CURRENT_DATE = fnv1a_64_lower("CURRENT_DATE");
          long CURRENT_TIME = fnv1a_64_lower("CURRENT_TIME");
          long CURTIME = fnv1a_64_lower("CURTIME");
          long CURRENT_USER = fnv1a_64_lower("CURRENT_USER");
          long FALSE = fnv1a_64_lower("FALSE");
          long TRUE = fnv1a_64_lower("TRUE");
          long LESS = fnv1a_64_lower("LESS");
          long MAXVALUE = fnv1a_64_lower("MAXVALUE");
          long OFFSET = fnv1a_64_lower("OFFSET");
          long LIMIT = fnv1a_64_lower("LIMIT");
          long RAW = fnv1a_64_lower("RAW");
          long LONG_RAW = fnv1a_64_lower("LONG RAW");
          long LONG = fnv1a_64_lower("LONG");
          long BYTE = fnv1a_64_lower("BYTE");
          long ROWNUM = fnv1a_64_lower("ROWNUM");
          long SYSDATE = fnv1a_64_lower("SYSDATE");
          long NOW = fnv1a_64_lower("NOW");
          long ADDTIME = fnv1a_64_lower("ADDTIME");
          long SUBTIME = fnv1a_64_lower("SUBTIME");
          long TIMEDIFF = fnv1a_64_lower("TIMEDIFF");
          long SQLCODE = fnv1a_64_lower("SQLCODE");
          long SQLERRM = fnv1a_64_lower("SQLERRM");
          long PRECISION = fnv1a_64_lower("PRECISION");
          long DOUBLE = fnv1a_64_lower("DOUBLE");
          long DOUBLE_PRECISION = fnv1a_64_lower("DOUBLE PRECISION");
          long WITHOUT = fnv1a_64_lower("WITHOUT");
          long BITAND = fnv1a_64_lower("BITAND");
  
          long DEFINER = fnv1a_64_lower("DEFINER");
          long EVENT = fnv1a_64_lower("EVENT");
          long RESOURCE = fnv1a_64_lower("RESOURCE");
          long RESOURCES = fnv1a_64_lower("RESOURCES");
          long FILE = fnv1a_64_lower("FILE");
          long JAR = fnv1a_64_lower("JAR");
          long PY = fnv1a_64_lower("PY");
          long ARCHIVE = fnv1a_64_lower("archive");
          long DETERMINISTIC = fnv1a_64_lower("DETERMINISTIC");
          long CONTAINS = fnv1a_64_lower("CONTAINS");
          long SQL = fnv1a_64_lower("SQL");
          long CALL = fnv1a_64_lower("CALL");
          long CHARACTER = fnv1a_64_lower("CHARACTER");
          long UNNEST = fnv1a_64_lower("UNNEST");
  
          long VALIDATE = fnv1a_64_lower("VALIDATE");
          long NOVALIDATE = fnv1a_64_lower("NOVALIDATE");
          long SIMILAR = fnv1a_64_lower("SIMILAR");
          long CASCADE = fnv1a_64_lower("CASCADE");
          long RELY = fnv1a_64_lower("RELY");
          long NORELY = fnv1a_64_lower("NORELY");
          long ROW = fnv1a_64_lower("ROW");
          long ROWS = fnv1a_64_lower("ROWS");
          long RANGE = fnv1a_64_lower("RANGE");
          long PRECEDING = fnv1a_64_lower("PRECEDING");
          long FOLLOWING = fnv1a_64_lower("FOLLOWING");
          long UNBOUNDED = fnv1a_64_lower("UNBOUNDED");
          long SIBLINGS = fnv1a_64_lower("SIBLINGS");
          long RESPECT = fnv1a_64_lower("RESPECT");
          long NULLS = fnv1a_64_lower("NULLS");
          long FIRST = fnv1a_64_lower("FIRST");
          long LAST = fnv1a_64_lower("LAST");
          long AUTO_INCREMENT = fnv1a_64_lower("AUTO_INCREMENT");
          long STORAGE = fnv1a_64_lower("STORAGE");
          long STORED = fnv1a_64_lower("STORED");
          long VIRTUAL = fnv1a_64_lower("VIRTUAL");
          long SIGNED = fnv1a_64_lower("SIGNED");
          long UNSIGNED = fnv1a_64_lower("UNSIGNED");
          long ZEROFILL = fnv1a_64_lower("ZEROFILL");
          long GLOBAL = fnv1a_64_lower("GLOBAL");
          long LOCAL = fnv1a_64_lower("LOCAL");
          long TEMPORARY = fnv1a_64_lower("TEMPORARY");
          long NONCLUSTERED = fnv1a_64_lower("NONCLUSTERED");
          long SESSION = fnv1a_64_lower("SESSION");
          long NAMES = fnv1a_64_lower("NAMES");
          long PARTIAL = fnv1a_64_lower("PARTIAL");
          long SIMPLE = fnv1a_64_lower("SIMPLE");
          long RESTRICT = fnv1a_64_lower("RESTRICT");
          long ON = fnv1a_64_lower("ON");
          long ONLINE = fnv1a_64_lower("ONLINE");
          long ACTION = fnv1a_64_lower("ACTION");
          long SEPARATOR = fnv1a_64_lower("SEPARATOR");
          long DATA = fnv1a_64_lower("DATA");
          long MIGRATE = fnv1a_64_lower("MIGRATE");
          long MAX_ROWS = fnv1a_64_lower("MAX_ROWS");
          long MIN_ROWS = fnv1a_64_lower("MIN_ROWS");
          long PACK_KEYS = fnv1a_64_lower("PACK_KEYS");
          long ENGINE = fnv1a_64_lower("ENGINE");
          long SKIP = fnv1a_64_lower("SKIP");
          long RECURSIVE = fnv1a_64_lower("RECURSIVE");
          long ROLLUP = fnv1a_64_lower("ROLLUP");
          long CUBE = fnv1a_64_lower("CUBE");
          long TEMPLATE = fnv1a_64_lower("TEMPLATE");
          long ALLOW_CONNECTIONS = fnv1a_64_lower("ALLOW_CONNECTIONS");
          long IS_TEMPLATE = fnv1a_64_lower("IS_TEMPLATE");
  
          long YEAR = fnv1a_64_lower("YEAR");
          long QUARTER = fnv1a_64_lower("QUARTER");
          long MONTH = fnv1a_64_lower("MONTH");
          long WEEK = fnv1a_64_lower("WEEK");
          long WEEKDAY = fnv1a_64_lower("WEEKDAY");
          long WEEKOFYEAR = fnv1a_64_lower("WEEKOFYEAR");
          long YEARWEEK = fnv1a_64_lower("YEARWEEK");
          long YEAR_OF_WEEK = fnv1a_64_lower("YEAR_OF_WEEK");
          long YOW = fnv1a_64_lower("YOW");
          long YEARMONTH = fnv1a_64_lower("YEARMONTH");
          long TO_TIMESTAMP = fnv1a_64_lower("TO_TIMESTAMP");
          long DAY = fnv1a_64_lower("DAY");
          long DAYOFMONTH = fnv1a_64_lower("DAYOFMONTH");
          long DAYOFWEEK = fnv1a_64_lower("DAYOFWEEK");
          long DATE_TRUNC = fnv1a_64_lower("DATE_TRUNC");
          long DAYOFYEAR = fnv1a_64_lower("DAYOFYEAR");
          long MONTH_BETWEEN = fnv1a_64_lower("MONTH_BETWEEN");
          long TIMESTAMPADD = fnv1a_64_lower("TIMESTAMPADD");
          long HOUR = fnv1a_64_lower("HOUR");
          long MINUTE = fnv1a_64_lower("MINUTE");
          long SECOND = fnv1a_64_lower("SECOND");
          long MICROSECOND = fnv1a_64_lower("MICROSECOND");
          long CURDATE = fnv1a_64_lower("CURDATE");
          long CUR_DATE = fnv1a_64_lower("CUR_DATE");
          long DATE_DIFF = fnv1a_64_lower("DATE_DIFF");
  
          long SECONDS = fnv1a_64_lower("SECONDS");
          long MINUTES = fnv1a_64_lower("MINUTES");
          long HOURS = fnv1a_64_lower("HOURS");
          long DAYS = fnv1a_64_lower("DAYS");
          long MONTHS = fnv1a_64_lower("MONTHS");
          long YEARS = fnv1a_64_lower("YEARS");
  
          long BEFORE = fnv1a_64_lower("BEFORE");
          long AFTER = fnv1a_64_lower("AFTER");
          long INSTEAD = fnv1a_64_lower("INSTEAD");
  
          long DEFERRABLE = fnv1a_64_lower("DEFERRABLE");
          long AS = fnv1a_64_lower("AS");
          long DELAYED = fnv1a_64_lower("DELAYED");
          long GO = fnv1a_64_lower("GO");
          long WAITFOR = fnv1a_64_lower("WAITFOR");
          long EXEC = fnv1a_64_lower("EXEC");
          long EXECUTE = fnv1a_64_lower("EXECUTE");
  
          long SOURCE = fnv1a_64_lower("SOURCE");
  
          long STAR = fnv1a_64_lower("*");
  
          long TO_CHAR = fnv1a_64_lower("TO_CHAR");
          long UNIX_TIMESTAMP = fnv1a_64_lower("UNIX_TIMESTAMP");
          long FROM_UNIXTIME = fnv1a_64_lower("FROM_UNIXTIME");
          long TO_UNIXTIME = fnv1a_64_lower("TO_UNIXTIME");
          long SYS_GUID = fnv1a_64_lower("SYS_GUID");
          long LAST_DAY = fnv1a_64_lower("LAST_DAY");
          long MAKEDATE = fnv1a_64_lower("MAKEDATE");
          long ASCII = fnv1a_64_lower("ASCII");
          long DAYNAME = fnv1a_64_lower("DAYNAME");
  
          long STATISTICS = fnv1a_64_lower("STATISTICS");
          long TRANSACTION = fnv1a_64_lower("TRANSACTION");
          long OFF = fnv1a_64_lower("OFF");
          long OFFLINE = fnv1a_64_lower("OFFLINE");
          long IDENTITY_INSERT = fnv1a_64_lower("IDENTITY_INSERT");
          long PASSWORD = fnv1a_64_lower("PASSWORD");
          long SOCKET = fnv1a_64_lower("SOCKET");
          long OWNER = fnv1a_64_lower("OWNER");
          long PORT = fnv1a_64_lower("PORT");
          long PUBLIC = fnv1a_64_lower("PUBLIC");
          long SYNONYM = fnv1a_64_lower("SYNONYM");
          long MATERIALIZED = fnv1a_64_lower("MATERIALIZED");
          long BITMAP = fnv1a_64_lower("BITMAP");
          long LABEL = fnv1a_64_lower("LABEL");
          long PACKAGE = fnv1a_64_lower("PACKAGE");
          long PACKAGES = fnv1a_64_lower("PACKAGES");
          long TRUNC = fnv1a_64_lower("TRUNC");
          long SYSTIMESTAMP = fnv1a_64_lower("SYSTIMESTAMP");
          long TYPE = fnv1a_64_lower("TYPE");
          long RECORD = fnv1a_64_lower("RECORD");
          long MAP = fnv1a_64_lower("MAP");
          long MAPJOIN = fnv1a_64_lower("MAPJOIN");
          long MAPPED = fnv1a_64_lower("MAPPED");
          long MAPPING = fnv1a_64_lower("MAPPING");
          long COLPROPERTIES = fnv1a_64_lower("COLPROPERTIES");
          long ONLY = fnv1a_64_lower("ONLY");
          long MEMBER = fnv1a_64_lower("MEMBER");
          long STATIC = fnv1a_64_lower("STATIC");
          long FINAL = fnv1a_64_lower("FINAL");
          long INSTANTIABLE = fnv1a_64_lower("INSTANTIABLE");
          long UNSUPPORTED = fnv1a_64_lower("UNSUPPORTED");
          long VARRAY = fnv1a_64_lower("VARRAY");
          long WRAPPED = fnv1a_64_lower("WRAPPED");
          long AUTHID = fnv1a_64_lower("AUTHID");
          long UNDER = fnv1a_64_lower("UNDER");
          long USERENV = fnv1a_64_lower("USERENV");
          long NUMTODSINTERVAL = fnv1a_64_lower("NUMTODSINTERVAL");
  
          long LATERAL = fnv1a_64_lower("LATERAL");
          long NONE = fnv1a_64_lower("NONE");
          long PARTITIONING = fnv1a_64_lower("PARTITIONING");
          long VALIDPROC = fnv1a_64_lower("VALIDPROC");
          long COMPRESS = fnv1a_64_lower("COMPRESS");
          long YES = fnv1a_64_lower("YES");
          long WMSYS = fnv1a_64_lower("WMSYS");
  
          long DEPTH = fnv1a_64_lower("DEPTH");
          long BREADTH = fnv1a_64_lower("BREADTH");
  
          long SCHEDULE = fnv1a_64_lower("SCHEDULE");
          long COMPLETION = fnv1a_64_lower("COMPLETION");
          long RENAME = fnv1a_64_lower("RENAME");
          long AT = fnv1a_64_lower("AT");
          long LANGUAGE = fnv1a_64_lower("LANGUAGE");
          long LOGFILE = fnv1a_64_lower("LOGFILE");
          long LOG = fnv1a_64_lower("LOG");
          long INITIAL_SIZE = fnv1a_64_lower("INITIAL_SIZE");
          long MAX_SIZE = fnv1a_64_lower("MAX_SIZE");
          long NODEGROUP = fnv1a_64_lower("NODEGROUP");
          long EXTENT_SIZE = fnv1a_64_lower("EXTENT_SIZE");
          long AUTOEXTEND_SIZE = fnv1a_64_lower("AUTOEXTEND_SIZE");
          long FILE_BLOCK_SIZE = fnv1a_64_lower("FILE_BLOCK_SIZE");
          long BLOCK_SIZE = fnv1a_64_lower("BLOCK_SIZE");
          long REPLICA_NUM = fnv1a_64_lower("REPLICA_NUM");
          long REPLICATION = fnv1a_64_lower("REPLICATION");
          long TABLET_SIZE = fnv1a_64_lower("TABLET_SIZE");
          long PCTFREE = fnv1a_64_lower("PCTFREE");
          long USE_BLOOM_FILTER = fnv1a_64_lower("USE_BLOOM_FILTER");
          long SERVER = fnv1a_64_lower("SERVER");
          long HOST = fnv1a_64_lower("HOST");
          long ADD = fnv1a_64_lower("ADD");
          long REMOVE = fnv1a_64_lower("REMOVE");
          long MOVE = fnv1a_64_lower("MOVE");
          long ALGORITHM = fnv1a_64_lower("ALGORITHM");
          long LINEAR = fnv1a_64_lower("LINEAR");
          long EVERY = fnv1a_64_lower("EVERY");
          long STARTS = fnv1a_64_lower("STARTS");
          long END = fnv1a_64_lower("END");
          long ENDS = fnv1a_64_lower("ENDS");
          long BINARY = fnv1a_64_lower("BINARY");
          long GEOMETRY = fnv1a_64_lower("GEOMETRY");
          long FOUND = fnv1a_64_lower("FOUND");
          long NOTFOUND = fnv1a_64_lower("NOTFOUND");
          long ROWCOUNT = fnv1a_64_lower("ROWCOUNT");
          long BULK_ROWCOUNT = fnv1a_64_lower("BULK_ROWCOUNT");
          long BULK_EXCEPTIONS = fnv1a_64_lower("BULK_EXCEPTIONS");
          long ISOPEN = fnv1a_64_lower("ISOPEN");
          long CONFLICT = fnv1a_64_lower("CONFLICT");
          long NOTHING = fnv1a_64_lower("NOTHING");
          long COMMIT = fnv1a_64_lower("COMMIT");
          long DESCRIBE = fnv1a_64_lower("DESCRIBE");
          long SQLXML = fnv1a_64_lower("SQLXML");
          long BIT = fnv1a_64_lower("BIT");
          long LONGBLOB = fnv1a_64_lower("LONGBLOB");
  
          long RS = fnv1a_64_lower("RS");
          long RR = fnv1a_64_lower("RR");
          long CS = fnv1a_64_lower("CS");
          long UR = fnv1a_64_lower("UR");
  
          long INT4 = fnv1a_64_lower("INT4");
          long VARBIT = fnv1a_64_lower("VARBIT");
          long DECODE = fnv1a_64_lower("DECODE");
          long IF = fnv1a_64_lower("IF");
          long FUNCTION = fnv1a_64_lower("FUNCTION");
          long EXTERNAL = fnv1a_64_lower("EXTERNAL");
          long SORTED = fnv1a_64_lower("SORTED");
          long CLUSTERED = fnv1a_64_lower("CLUSTERED");
          long LIFECYCLE = fnv1a_64_lower("LIFECYCLE");
          long LOCATION = fnv1a_64_lower("LOCATION");
          long PARTITIONS = fnv1a_64_lower("PARTITIONS");
          long FORMAT = fnv1a_64_lower("FORMAT");
          long ENCODE = fnv1a_64_lower("ENCODE");
  
          long SELECT = fnv1a_64_lower("SELECT");
          long DELETE = fnv1a_64_lower("DELETE");
          long UPDATE = fnv1a_64_lower("UPDATE");
          long INSERT = fnv1a_64_lower("INSERT");
          long REPLACE = fnv1a_64_lower("REPLACE");
          long TRUNCATE = fnv1a_64_lower("TRUNCATE");
          long CREATE = fnv1a_64_lower("CREATE");
          long MERGE = fnv1a_64_lower("MERGE");
          long SHOW = fnv1a_64_lower("SHOW");
          long ALTER = fnv1a_64_lower("ALTER");
          long DESC = fnv1a_64_lower("DESC");
          long SET = fnv1a_64_lower("SET");
          long MULTISET = fnv1a_64_lower("MULTISET");
          long VOLATILE = fnv1a_64_lower("VOLATILE");
          long KILL = fnv1a_64_lower("KILL");
          long MSCK = fnv1a_64_lower("MSCK");
          long USE = fnv1a_64_lower("USE");
          long ROLLBACK = fnv1a_64_lower("ROLLBACK");
          long GRANT = fnv1a_64_lower("GRANT");
          long REVOKE = fnv1a_64_lower("REVOKE");
          long DROP = fnv1a_64_lower("DROP");
          long USER = fnv1a_64_lower("USER");
  
          long USAGE = fnv1a_64_lower("USAGE");
          long PCTUSED = fnv1a_64_lower("PCTUSED");
          long OPAQUE = fnv1a_64_lower("OPAQUE");
          long INHERITS = fnv1a_64_lower("INHERITS");
          long DELIMITED = fnv1a_64_lower("DELIMITED");
          long ARRAY = fnv1a_64_lower("ARRAY");
          long SCALAR = fnv1a_64_lower("SCALAR");
          long STRUCT = fnv1a_64_lower("STRUCT");
          long TABLE = fnv1a_64_lower("TABLE");
          long UNIONTYPE = fnv1a_64_lower("UNIONTYPE");
  
          long TDDL = fnv1a_64_lower("TDDL");
          long CONCURRENTLY = fnv1a_64_lower("CONCURRENTLY");
          long TABLES = fnv1a_64_lower("TABLES");
          long ROLES = fnv1a_64_lower("ROLES");
          long NOCACHE = fnv1a_64_lower("NOCACHE");
          long NOPARALLEL = fnv1a_64_lower("NOPARALLEL");
          long EXIST = fnv1a_64_lower("EXIST");
          long EXISTS = fnv1a_64_lower("EXISTS");
          long SOUNDS = fnv1a_64_lower("SOUNDS");
          long TBLPROPERTIES = fnv1a_64_lower("TBLPROPERTIES");
          long TABLEGROUP = fnv1a_64_lower("TABLEGROUP");
          long TABLEGROUPS = fnv1a_64_lower("TABLEGROUPS");
          long DIMENSION = fnv1a_64_lower("DIMENSION");
          long OPTIONS = fnv1a_64_lower("OPTIONS");
          long OPTIMIZER = fnv1a_64_lower("OPTIMIZER");
  
          long FULLTEXT = fnv1a_64_lower("FULLTEXT");
          long SPATIAL = fnv1a_64_lower("SPATIAL");
  
          long SUBPARTITION_AVAILABLE_PARTITION_NUM = fnv1a_64_lower("SUBPARTITION_AVAILABLE_PARTITION_NUM");
          long EXTRA = fnv1a_64_lower("EXTRA");
          long DATABASES = fnv1a_64_lower("DATABASES");
          long COLUMNS = fnv1a_64_lower("COLUMNS");
          long PROCESS = fnv1a_64_lower("PROCESS");
          long PROCESSLIST = fnv1a_64_lower("PROCESSLIST");
          long MPP = fnv1a_64_lower("MPP");
          long SERDE = fnv1a_64_lower("SERDE");
          long SERDEPROPERTIES = fnv1a_64_lower("SERDEPROPERTIES");
          long SORT = fnv1a_64_lower("SORT");
          long ZORDER = fnv1a_64_lower("ZORDER");
          long FIELDS = fnv1a_64_lower("FIELDS");
          long COLLECTION = fnv1a_64_lower("COLLECTION");
          long SKEWED = fnv1a_64_lower("SKEWED");
          long SYMBOL = fnv1a_64_lower("SYMBOL");
          long LOAD = fnv1a_64_lower("LOAD");
          long VIEWS = fnv1a_64_lower("VIEWS");
          long SUBSTR = fnv1a_64_lower("SUBSTR");
          long TO_BASE64 = fnv1a_64_lower("TO_BASE64");
          long REGEXP_SUBSTR = fnv1a_64_lower("REGEXP_SUBSTR");
          long REGEXP_COUNT = fnv1a_64_lower("REGEXP_COUNT");
          long REGEXP_EXTRACT = fnv1a_64_lower("REGEXP_EXTRACT");
          long REGEXP_EXTRACT_ALL = fnv1a_64_lower("REGEXP_EXTRACT_ALL");
          long REGEXP_LIKE = fnv1a_64_lower("REGEXP_LIKE");
          long REGEXP_REPLACE = fnv1a_64_lower("REGEXP_REPLACE");
          long REGEXP_SPLIT = fnv1a_64_lower("REGEXP_SPLIT");
          long CONCAT = fnv1a_64_lower("CONCAT");
          long LCASE = fnv1a_64_lower("LCASE");
          long UCASE = fnv1a_64_lower("UCASE");
          long LOWER = fnv1a_64_lower("LOWER");
          long UPPER = fnv1a_64_lower("UPPER");
          long LENGTH = fnv1a_64_lower("LENGTH");
          long LOCATE = fnv1a_64_lower("LOCATE");
          long UDF_SYS_ROWCOUNT = fnv1a_64_lower("UDF_SYS_ROWCOUNT");
          long CHAR_LENGTH = fnv1a_64_lower("CHAR_LENGTH");
          long CHARACTER_LENGTH = fnv1a_64_lower("CHARACTER_LENGTH");
          long SUBSTRING = fnv1a_64_lower("SUBSTRING");
          long SUBSTRING_INDEX = fnv1a_64_lower("SUBSTRING_INDEX");
          long LEFT = fnv1a_64_lower("LEFT");
          long RIGHT = fnv1a_64_lower("RIGHT");
          long RTRIM = fnv1a_64_lower("RTRIM");
          long LEN = fnv1a_64_lower("LEN");
          long GREAST = fnv1a_64_lower("GREAST");
          long LEAST = fnv1a_64_lower("LEAST");
          long IFNULL = fnv1a_64_lower("IFNULL");
          long NULLIF = fnv1a_64_lower("NULLIF");
          long GREATEST = fnv1a_64_lower("GREATEST");
          long COALESCE = fnv1a_64_lower("COALESCE");
          long ISNULL = fnv1a_64_lower("ISNULL");
          long NVL = fnv1a_64_lower("NVL");
          long NVL2 = fnv1a_64_lower("NVL2");
          long TO_DATE = fnv1a_64_lower("TO_DATE");
          long DATEADD = fnv1a_64_lower("DATEADD");
          long DATE_ADD = fnv1a_64_lower("DATE_ADD");
          long ADDDATE = fnv1a_64_lower("ADDDATE");
          long DATE_SUB = fnv1a_64_lower("DATE_SUB");
          long SUBDATE = fnv1a_64_lower("SUBDATE");
          long DATE_PARSE = fnv1a_64_lower("DATE_PARSE");
          long STR_TO_DATE = fnv1a_64_lower("STR_TO_DATE");
          long CLOTHES_FEATURE_EXTRACT_V1 = fnv1a_64_lower("CLOTHES_FEATURE_EXTRACT_V1");
          long CLOTHES_ATTRIBUTE_EXTRACT_V1 = fnv1a_64_lower("CLOTHES_ATTRIBUTE_EXTRACT_V1");
  
          long GENERIC_FEATURE_EXTRACT_V1 = fnv1a_64_lower("GENERIC_FEATURE_EXTRACT_V1");
          long FACE_FEATURE_EXTRACT_V1 = fnv1a_64_lower("FACE_FEATURE_EXTRACT_V1");
          long TEXT_FEATURE_EXTRACT_V1 = fnv1a_64_lower("TEXT_FEATURE_EXTRACT_V1");
  
          long JSON_TABLE = fnv1a_64_lower("JSON_TABLE");
          long JSON_EXTRACT = fnv1a_64_lower("JSON_EXTRACT");
          long JSON_EXTRACT_SCALAR = fnv1a_64_lower("json_extract_scalar");
          long JSON_ARRAY_GET = fnv1a_64_lower("JSON_ARRAY_GET");
          long ADD_MONTHS = fnv1a_64_lower("ADD_MONTHS");
          long ABS = fnv1a_64_lower("ABS");
          long ACOS = fnv1a_64_lower("ACOS");
          long ASIN = fnv1a_64_lower("ASIN");
          long ATAN = fnv1a_64_lower("ATAN");
          long ATAN2 = fnv1a_64_lower("ATAN2");
          long COS = fnv1a_64_lower("COS");
          long FLOOR = fnv1a_64_lower("FLOOR");
          long CEIL = fnv1a_64_lower("CEIL");
          long SQRT = fnv1a_64_lower("SQRT");
          long LEAD = fnv1a_64_lower("LEAD");
          long LAG = fnv1a_64_lower("LAG");
          long CEILING = fnv1a_64_lower("CEILING");
          long POWER = fnv1a_64_lower("POWER");
          long EXP = fnv1a_64_lower("EXP");
          long LN = fnv1a_64_lower("LN");
          long LOG10 = fnv1a_64_lower("LOG10");
          long INTERVAL = fnv1a_64_lower("INTERVAL");
          long FROM_DAYS = fnv1a_64_lower("FROM_DAYS");
          long TO_DAYS = fnv1a_64_lower("TO_DAYS");
  
          long BIGINT = fnv1a_64_lower("BIGINT");
          long LONGLONG = fnv1a_64_lower("LONGLONG");
          long DISCARD = fnv1a_64_lower("DISCARD");
          long EXCHANGE = fnv1a_64_lower("EXCHANGE");
          long ROLE = fnv1a_64_lower("ROLE");
          long OVERWRITE = fnv1a_64_lower("OVERWRITE");
          long NO = fnv1a_64_lower("NO");
          long CATALOG = fnv1a_64_lower("CATALOG");
          long CATALOGS = fnv1a_64_lower("CATALOGS");
          long FUNCTIONS = fnv1a_64_lower("FUNCTIONS");
          long SCHEMAS = fnv1a_64_lower("SCHEMAS");
          long CHANGE = fnv1a_64_lower("CHANGE");
          long MODIFY = fnv1a_64_lower("MODIFY");
          long BEGIN = fnv1a_64_lower("BEGIN");
          long PATH = fnv1a_64_lower("PATH");
          long ENCRYPTION = fnv1a_64_lower("ENCRYPTION");
          long COMPRESSION = fnv1a_64_lower("COMPRESSION");
          long KEY_BLOCK_SIZE = fnv1a_64_lower("KEY_BLOCK_SIZE");
          long CHECKSUM = fnv1a_64_lower("CHECKSUM");
          long CONNECTION = fnv1a_64_lower("CONNECTION");
          long DATASOURCES = fnv1a_64_lower("DATASOURCES");
          long NODE = fnv1a_64_lower("NODE");
          long HELP = fnv1a_64_lower("HELP");
          long BROADCASTS = fnv1a_64_lower("BROADCASTS");
          long MASTER = fnv1a_64_lower("MASTER");
          long SLAVE = fnv1a_64_lower("SLAVE");
          long SQL_DELAY_CUTOFF = fnv1a_64_lower("SQL_DELAY_CUTOFF");
          long SOCKET_TIMEOUT = fnv1a_64_lower("SOCKET_TIMEOUT");
          long FORBID_EXECUTE_DML_ALL = fnv1a_64_lower("FORBID_EXECUTE_DML_ALL");
          long SCAN = fnv1a_64_lower("SCAN");
          long NOLOGFILE = fnv1a_64_lower("NOLOGFILE");
          long NOBADFILE = fnv1a_64_lower("NOBADFILE");
          long TERMINATED = fnv1a_64_lower("TERMINATED");
          long LTRIM = fnv1a_64_lower("LTRIM");
          long MISSING = fnv1a_64_lower("MISSING");
          long SUBPARTITION = fnv1a_64_lower("SUBPARTITION");
          long SUBPARTITIONS = fnv1a_64_lower("SUBPARTITIONS");
          long GENERATED = fnv1a_64_lower("GENERATED");
          long ALWAYS = fnv1a_64_lower("ALWAYS");
          long VISIBLE = fnv1a_64_lower("VISIBLE");
          long INCLUDING = fnv1a_64_lower("INCLUDING");
          long EXCLUDE = fnv1a_64_lower("EXCLUDE");
          long EXCLUDING = fnv1a_64_lower("EXCLUDING");
          long ROUTINE = fnv1a_64_lower("ROUTINE");
          long IDENTIFIED = fnv1a_64_lower("IDENTIFIED");
          long DELIMITER = fnv1a_64_lower("DELIMITER");
          long UNKNOWN = fnv1a_64_lower("UNKNOWN");
          long WEIGHT_STRING = fnv1a_64_lower("WEIGHT_STRING");
          long REVERSE = fnv1a_64_lower("REVERSE");
          long DATE_FORMAT = fnv1a_64_lower("DATE_FORMAT");
          long DAY_OF_WEEK = fnv1a_64_lower("DAY_OF_WEEK");
          long DATEDIFF = fnv1a_64_lower("DATEDIFF");
          long GET_FORMAT = fnv1a_64_lower("GET_FORMAT");
          long TIMESTAMPDIFF = fnv1a_64_lower("TIMESTAMPDIFF");
          long MONTHNAME = fnv1a_64_lower("MONTHNAME");
          long PERIOD_ADD = fnv1a_64_lower("PERIOD_ADD");
          long PERIOD_DIFF = fnv1a_64_lower("PERIOD_DIFF");
          long ROUND = fnv1a_64_lower("ROUND");
          long ROUNDROBIN = fnv1a_64_lower("ROUNDROBIN");
          long DBPARTITION = fnv1a_64_lower("DBPARTITION");
          long TBPARTITION = fnv1a_64_lower("TBPARTITION");
          long EXTPARTITION = fnv1a_64_lower("EXTPARTITION");
          long STARTWITH = fnv1a_64_lower("STARTWITH");
          long TBPARTITIONS = fnv1a_64_lower("TBPARTITIONS");
          long DBPARTITIONS = fnv1a_64_lower("DBPARTITIONS");
          long PARTITIONED = fnv1a_64_lower("PARTITIONED");
          long PARALLEL = fnv1a_64_lower("PARALLEL");
          long ALLOW = fnv1a_64_lower("ALLOW");
          long DISALLOW = fnv1a_64_lower("DISALLOW");
          long PIVOT = fnv1a_64_lower("PIVOT");
          long MODEL = fnv1a_64_lower("MODEL");
          long KEEP = fnv1a_64_lower("KEEP");
          long REFERENCE = fnv1a_64_lower("REFERENCE");
          long RETURN = fnv1a_64_lower("RETURN");
          long RETURNS = fnv1a_64_lower("RETURNS");
          long ROWTYPE = fnv1a_64_lower("ROWTYPE");
          long WINDOW = fnv1a_64_lower("WINDOW");
          long QUALIFY = fnv1a_64_lower("QUALIFY");
          long MULTIVALUE = fnv1a_64_lower("MULTIVALUE");
          long OPTIONALLY = fnv1a_64_lower("OPTIONALLY");
          long ENCLOSED = fnv1a_64_lower("ENCLOSED");
          long ESCAPED = fnv1a_64_lower("ESCAPED");
          long ESCAPE = fnv1a_64_lower("ESCAPE");
          long LINES = fnv1a_64_lower("LINES");
          long STARTING = fnv1a_64_lower("STARTING");
          long DISTRIBUTE = fnv1a_64_lower("DISTRIBUTE");
          long DISTRIBUTED = fnv1a_64_lower("DISTRIBUTED");
          long CLUSTER = fnv1a_64_lower("CLUSTER");
          long RUNNING = fnv1a_64_lower("RUNNING");
          long CLUSTERING = fnv1a_64_lower("CLUSTERING");
          long PCTVERSION = fnv1a_64_lower("PCTVERSION");
          long IDENTITY = fnv1a_64_lower("IDENTITY");
          long INCREMENT = fnv1a_64_lower("INCREMENT");
          long MINVALUE = fnv1a_64_lower("MINVALUE");
          long ANN = fnv1a_64_lower("ANN");
          long ANN_DISTANCE = fnv1a_64_lower("ANN_DISTANCE");
          long SUPPLEMENTAL = fnv1a_64_lower("SUPPLEMENTAL");
          long SUBSTITUTABLE = fnv1a_64_lower("SUBSTITUTABLE");
          long BASICFILE = fnv1a_64_lower("BASICFILE");
          long IN_MEMORY_METADATA = fnv1a_64_lower("IN_MEMORY_METADATA");
          long CURSOR_SPECIFIC_SEGMENT = fnv1a_64_lower("CURSOR_SPECIFIC_SEGMENT");
          long DEFER = fnv1a_64_lower("DEFER");
          long UNDO_LOG_LIMIT = fnv1a_64_lower("UNDO_LOG_LIMIT");
          long DBPROPERTIES = fnv1a_64_lower("DBPROPERTIES");
          long ANNINDEX = fnv1a_64_lower("ANNINDEX");
          long RTTYPE = fnv1a_64_lower("RTTYPE");
          long DISTANCE = fnv1a_64_lower("DISTANCE");
          long IDXPROPERTIES = fnv1a_64_lower("IDXPROPERTIES");
          long RECOVER = fnv1a_64_lower("RECOVER");
          long BACKUP = fnv1a_64_lower("BACKUP");
          long RESTORE = fnv1a_64_lower("RESTORE");
          long EXSTORE = fnv1a_64_lower("EXSTORE");
          long UNDO = fnv1a_64_lower("UNDO");
          long NOSCAN = fnv1a_64_lower("NOSCAN");
          long EXTENDED = fnv1a_64_lower("EXTENDED");
          long FORMATTED = fnv1a_64_lower("FORMATTED");
          long DEPENDENCY = fnv1a_64_lower("DEPENDENCY");
          long AUTHORIZATION = fnv1a_64_lower("AUTHORIZATION");
          long ANALYZE = fnv1a_64_lower("ANALYZE");
          long EXPORT = fnv1a_64_lower("EXPORT");
          long IMPORT = fnv1a_64_lower("IMPORT");
          long TABLESAMPLE = fnv1a_64_lower("TABLESAMPLE");
          long BUCKET = fnv1a_64_lower("BUCKET");
          long BUCKETS = fnv1a_64_lower("BUCKETS");
          long UNARCHIVE = fnv1a_64_lower("UNARCHIVE");
          long SEQUENCES = fnv1a_64_lower("SEQUENCES");
          long OUTLINE = fnv1a_64_lower("OUTLINE");
          long ORD = fnv1a_64_lower("ORD");
          long SPACE = fnv1a_64_lower("SPACE");
          long REPEAT = fnv1a_64_lower("REPEAT");
          long SLOW = fnv1a_64_lower("SLOW");
          long PLAN = fnv1a_64_lower("PLAN");
          long PLANCACHE = fnv1a_64_lower("PLANCACHE");
          long RECYCLEBIN = fnv1a_64_lower("RECYCLEBIN");
          long PURGE = fnv1a_64_lower("PURGE");
          long FLASHBACK = fnv1a_64_lower("FLASHBACK");
          long INPUTFORMAT = fnv1a_64_lower("INPUTFORMAT");
          long OUTPUTFORMAT = fnv1a_64_lower("OUTPUTFORMAT");
          long DUMP = fnv1a_64_lower("DUMP");
          long BROADCAST = fnv1a_64_lower("BROADCAST");
          long GROUP = fnv1a_64_lower("GROUP");
          long GROUPING = fnv1a_64_lower("GROUPING");
          long WITH = fnv1a_64_lower("WITH");
          long FROM = fnv1a_64_lower("FROM");
          long WHO = fnv1a_64_lower("WHO");
          long WHOAMI = fnv1a_64_lower("WHOAMI");
          long GRANTS = fnv1a_64_lower("GRANTS");
          long STATISTIC = fnv1a_64_lower("STATISTIC");
          long STATISTIC_LIST = fnv1a_64_lower("STATISTIC_LIST");
          long STATUS = fnv1a_64_lower("STATUS");
          long FULL = fnv1a_64_lower("FULL");
          long STATS = fnv1a_64_lower("STATS");
          long OUTLINES = fnv1a_64_lower("OUTLINES");
          long VERSION = fnv1a_64_lower("VERSION");
          long CONFIG = fnv1a_64_lower("CONFIG");
          long USERS = fnv1a_64_lower("USERS");
          long PHYSICAL_PROCESSLIST = fnv1a_64_lower("PHYSICAL_PROCESSLIST");
          long PHYSICAL = fnv1a_64_lower("PHYSICAL");
          long DISTANCEMEASURE = fnv1a_64_lower("DISTANCEMEASURE");
          long UNIT = fnv1a_64_lower("UNIT");
          long DB = fnv1a_64_lower("DB");
          long STEP = fnv1a_64_lower("STEP");
          long HEX = fnv1a_64_lower("HEX");
          long UNHEX = fnv1a_64_lower("UNHEX");
          long POLICY = fnv1a_64_lower("POLICY");
          long QUERY_TASK = fnv1a_64_lower("QUERY_TASK");
          long UUID = fnv1a_64_lower("UUID");
          long PCTTHRESHOLD = fnv1a_64_lower("PCTTHRESHOLD");
          long UNUSABLE = fnv1a_64_lower("UNUSABLE");
          long FILTER = fnv1a_64_lower("FILTER");
          long BIT_COUNT = fnv1a_64_lower("BIT_COUNT");
          long STDDEV_SAMP = fnv1a_64_lower("STDDEV_SAMP");
          long PERCENT_RANK = fnv1a_64_lower("PERCENT_RANK");
          long DENSE_RANK = fnv1a_64_lower("DENSE_RANK");
          long CUME_DIST = fnv1a_64_lower("CUME_DIST");
          long CARDINALITY = fnv1a_64_lower("CARDINALITY");
          long TRY_CAST = fnv1a_64_lower("TRY_CAST");
          long COVERING = fnv1a_64_lower("COVERING");
  
          long CHARFILTER = fnv1a_64_lower("CHARFILTER");
          long CHARFILTERS = fnv1a_64_lower("CHARFILTERS");
          long TOKENIZER = fnv1a_64_lower("TOKENIZER");
          long TOKENIZERS = fnv1a_64_lower("TOKENIZERS");
          long TOKENFILTER = fnv1a_64_lower("TOKENFILTER");
          long TOKENFILTERS = fnv1a_64_lower("TOKENFILTERS");
          long ANALYZER = fnv1a_64_lower("ANALYZER");
          long ANALYZERS = fnv1a_64_lower("ANALYZERS");
          long DICTIONARY = fnv1a_64_lower("DICTIONARY");
          long DICTIONARIES = fnv1a_64_lower("DICTIONARIES");
          long QUERY = fnv1a_64_lower("QUERY");
          long META = fnv1a_64_lower("META");
          long TRY = fnv1a_64_lower("TRY");
          long D = fnv1a_64_lower("D");
          long T = fnv1a_64_lower("T");
          long TS = fnv1a_64_lower("TS");
          long FN = fnv1a_64_lower("FN");
          long COPY = fnv1a_64_lower("COPY");
          long CREDENTIALS = fnv1a_64_lower("CREDENTIALS");
          long ACCESS_KEY_ID = fnv1a_64_lower("ACCESS_KEY_ID");
          long ACCESS_KEY_SECRET = fnv1a_64_lower("ACCESS_KEY_SECRET");
          long BERNOULLI = fnv1a_64_lower("BERNOULLI");
          long SYSTEM = fnv1a_64_lower("SYSTEM");
          long SYNC = fnv1a_64_lower("SYNC");
          long INIT = fnv1a_64_lower("INIT");
          long BD = fnv1a_64_lower("BD");
          long FORMAT_DATETIME = fnv1a_64_lower("FORMAT_DATETIME");
          long WITHIN = fnv1a_64_lower("WITHIN");
          long RULE = fnv1a_64_lower("RULE");
          long EXPLAIN = fnv1a_64_lower("EXPLAIN");
          long ISOLATION = fnv1a_64_lower("ISOLATION");
          long READ = fnv1a_64_lower("READ");
          long UNCOMMITTED = fnv1a_64_lower("UNCOMMITTED");
          long COMMITTED = fnv1a_64_lower("COMMITTED");
          long REPEATABLE = fnv1a_64_lower("REPEATABLE");
          long SERIALIZABLE = fnv1a_64_lower("SERIALIZABLE");
  
          long _LATIN1 = fnv1a_64_lower("_LATIN1");
          long _GBK = fnv1a_64_lower("_GBK");
          long _BIG5 = fnv1a_64_lower("_BIG5");
          long _UTF8 = fnv1a_64_lower("_UTF8");
          long _UTF8MB4 = fnv1a_64_lower("_UTF8MB4");
          long _UTF16 = fnv1a_64_lower("_UTF16");
          long _UTF16LE = fnv1a_64_lower("_UTF16LE");
          long _UTF32 = fnv1a_64_lower("_UTF32");
          long _UCS2 = fnv1a_64_lower("_UCS2");
          long _UJIS = fnv1a_64_lower("_UJIS");
          long X = fnv1a_64_lower("X");
          long TRANSFORM = fnv1a_64_lower("TRANSFORM");
          long NESTED = fnv1a_64_lower("NESTED");
          long RESTART = fnv1a_64_lower("RESTART");
  
          long ASOF = fnv1a_64_lower("ASOF");
          long JSON_SET = fnv1a_64_lower("JSON_SET");
          long JSONB_SET = fnv1a_64_lower("JSONB_SET");
  
          long TUNNEL = fnv1a_64_lower("TUNNEL");
          long DOWNLOAD = fnv1a_64_lower("DOWNLOAD");
          long UPLOAD = fnv1a_64_lower("UPLOAD");
          long CLONE = fnv1a_64_lower("CLONE");
          long INSTALL = fnv1a_64_lower("INSTALL");
          long UNLOAD = fnv1a_64_lower("UNLOAD");
  
          long AGGREGATE = fnv1a_64_lower("AGGREGATE");
          long UNIQUE = fnv1a_64_lower("UNIQUE");
          long PRIMARY = fnv1a_64_lower("PRIMARY");
          long THAN = fnv1a_64_lower("THAN");
          long PROPERTIES = fnv1a_64_lower("PROPERTIES");
          long SINGLE = fnv1a_64_lower("SINGLE");
          long RANDOM = fnv1a_64_lower("RANDOM");
  
          long TABLESPACE = fnv1a_64_lower("TABLESPACE");
          long DATANODE = fnv1a_64_lower("DATANODE");
          long DELTA = fnv1a_64_lower("DELTA");
          long PREFIX = fnv1a_64_lower("PREFIX");
          long NUMSTR = fnv1a_64_lower("NUMSTR");
          long NOCOMPRESS = fnv1a_64_lower("NOCOMPRESS");
          long COMPRESS_MODE = fnv1a_64_lower("COMPRESS_MODE");
          long BROKER = fnv1a_64_lower("BROKER");
          long INDEX = fnv1a_64_lower("INDEX");
          long SETPROJECT = fnv1a_64_lower("SETPROJECT");
          long NAMED_STRUCT = fnv1a_64_lower("NAMED_STRUCT");
      }
  }
  