Module: Pgsqlarbiter::Keywords

Defined in:
lib/pgsqlarbiter/keywords.rb

Constant Summary collapse

ALLOWED_STATEMENT_TYPES =
Set[
  "SELECT", "INSERT", "UPDATE", "DELETE", "MERGE", "VALUES", "WITH"
].freeze
NON_FUNCTION_KEYWORDS =

Keywords that take parentheses but are NOT function calls

Set[
  "EXISTS", "CASE", "CAST", "IN", "NOT", "ANY", "ALL", "SOME",
  "ARRAY", "ROW", "VALUES", "LATERAL", "TABLE"
].freeze
FUNCTION_KEYWORDS =

Keywords that ARE function calls despite being reserved words

Set[
  "COALESCE", "NULLIF", "GREATEST", "LEAST", "EXTRACT",
  "TRIM", "SUBSTRING", "OVERLAY", "POSITION", "NORMALIZE", "GROUPING",
  "XMLELEMENT", "XMLFOREST", "XMLPARSE", "XMLROOT", "XMLSERIALIZE"
].freeze
ALL =

Complete set of keywords the lexer recognizes

Set[
  # Statement types
  "SELECT", "INSERT", "UPDATE", "DELETE", "MERGE", "VALUES", "WITH",
  # Disallowed statement types (rejected by analyzer)
  "CREATE", "DROP", "ALTER", "TRUNCATE", "GRANT", "REVOKE",
  "SHOW", "SET", "RESET",
  "BEGIN", "START", "COMMIT", "ROLLBACK", "SAVEPOINT", "RELEASE",
  "PREPARE", "EXECUTE", "DEALLOCATE",
  "LISTEN", "NOTIFY", "UNLISTEN",
  "LOAD", "COPY", "VACUUM", "ANALYZE", "CLUSTER", "REINDEX",
  "LOCK", "DISCARD", "COMMENT", "SECURITY", "REASSIGN", "REFRESH",
  "IMPORT", "CALL", "DO", "EXPLAIN",
  # Structural keywords
  "FROM", "JOIN", "INNER", "LEFT", "RIGHT", "FULL", "CROSS",
  "NATURAL", "OUTER", "ON", "USING", "INTO", "AS",
  "WHERE", "GROUP", "HAVING", "ORDER", "LIMIT", "OFFSET", "FETCH",
  "UNION", "INTERSECT", "EXCEPT",
  "ALL", "DISTINCT", "LATERAL", "ONLY", "TABLE",
  "RETURNING", "RECURSIVE", "COLUMNS",
  "NOT", "MATERIALIZED",
  "MATCHED", "WHEN", "THEN", "BY", "CONFLICT",
  "AND", "OR", "IS", "IN", "BETWEEN",
  "LIKE", "ILIKE", "SIMILAR",
  "CASE", "CAST", "END", "ELSE",
  "EXISTS", "ANY", "SOME", "ARRAY", "ROW",
  "WINDOW", "OVER", "PARTITION", "WITHIN", "FILTER",
  "NOTHING",
  "FOR", "IF", "ELSE", "TRUE", "FALSE", "NULL",
  "ASC", "DESC", "NULLS", "FIRST", "LAST",
  # Function keywords
  "COALESCE", "NULLIF", "GREATEST", "LEAST", "EXTRACT",
  "TRIM", "SUBSTRING", "OVERLAY", "POSITION", "NORMALIZE", "GROUPING",
  "XMLELEMENT", "XMLFOREST", "XMLPARSE", "XMLROOT", "XMLSERIALIZE",
  # Type keywords (common)
  "INT", "INTEGER", "BIGINT", "SMALLINT", "REAL", "FLOAT",
  "DOUBLE", "PRECISION", "NUMERIC", "DECIMAL",
  "CHAR", "CHARACTER", "VARCHAR", "TEXT",
  "BOOLEAN", "DATE", "TIME", "TIMESTAMP", "INTERVAL",
  "BOTH", "LEADING", "TRAILING"
].freeze