All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.wda.sdbc.postgresql.Identifier.scala Maven / Gradle / Ivy

package com.wda.sdbc.postgresql

import com.wda.CISet
import com.wda.sdbc.base

import scala.util.matching.Regex

class Identifier extends base.Identifier {
  override val leftQuote = '"'
  override val rightQuote = leftQuote

  //http://www.postgresql.org/docs/9.4/static/sql-syntax-lexical.html
  override val identifierMatcher: Regex = """(?U)[\p{L}_][\p{L}\d_$]*""".r

  //non-reserved keywords from http://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/include/parser/kwlist.h;hb=HEAD
  //Thanks MatheusOI from #postgresql.
  override val reservedWords: Set[String] =
    CISet(
      "ALL",
      "ANALYSE",
      "ANALYZE",
      "AND",
      "ANY",
      "ARRAY",
      "AS",
      "ASC",
      "ASYMMETRIC",
      "AUTHORIZATION",
      "BETWEEN",
      "BIGINT",
      "BINARY",
      "BIT",
      "BOOLEAN",
      "BOTH",
      "CASE",
      "CAST",
      "CHAR",
      "CHARACTER",
      "CHECK",
      "COALESCE",
      "COLLATE",
      "COLLATION",
      "COLUMN",
      "CONCURRENTLY",
      "CONSTRAINT",
      "CREATE",
      "CROSS",
      "CURRENT_CATALOG",
      "CURRENT_DATE",
      "CURRENT_ROLE",
      "CURRENT_SCHEMA",
      "CURRENT_TIME",
      "CURRENT_TIMESTAMP",
      "CURRENT_USER",
      "DEC",
      "DECIMAL",
      "DEFAULT",
      "DEFERRABLE",
      "DESC",
      "DISTINCT",
      "DO",
      "ELSE",
      "END",
      "EXCEPT",
      "EXISTS",
      "EXTRACT",
      "FALSE",
      "FETCH",
      "FLOAT",
      "FOR",
      "FOREIGN",
      "FREEZE",
      "FROM",
      "FULL",
      "GRANT",
      "GREATEST",
      "GROUP",
      "HAVING",
      "ILIKE",
      "IN",
      "INITIALLY",
      "INNER",
      "INOUT",
      "INT",
      "INTEGER",
      "INTERSECT",
      "INTERVAL",
      "INTO",
      "IS",
      "ISNULL",
      "JOIN",
      "LATERAL",
      "LEADING",
      "LEAST",
      "LEFT",
      "LIKE",
      "LIMIT",
      "LOCALTIME",
      "LOCALTIMESTAMP",
      "NATIONAL",
      "NATURAL",
      "NCHAR",
      "NONE",
      "NOT",
      "NOTNULL",
      "NULL",
      "NULLIF",
      "NUMERIC",
      "OFFSET",
      "ON",
      "ONLY",
      "OR",
      "ORDER",
      "OUT",
      "OUTER",
      "OVERLAPS",
      "OVERLAY",
      "PLACING",
      "POSITION",
      "PRECISION",
      "PRIMARY",
      "REAL",
      "REFERENCES",
      "RETURNING",
      "RIGHT",
      "ROW",
      "SELECT",
      "SESSION_USER",
      "SETOF",
      "SIMILAR",
      "SMALLINT",
      "SOME",
      "SUBSTRING",
      "SYMMETRIC",
      "TABLE",
      "THEN",
      "TIME",
      "TIMESTAMP",
      "TO",
      "TRAILING",
      "TREAT",
      "TRIM",
      "TRUE",
      "UNION",
      "UNIQUE",
      "USER",
      "USING",
      "VALUES",
      "VARCHAR",
      "VARIADIC",
      "VERBOSE",
      "WHEN",
      "WHERE",
      "WINDOW",
      "WITH",
      "XMLATTRIBUTES",
      "XMLCONCAT",
      "XMLELEMENT",
      "XMLEXISTS",
      "XMLFOREST",
      "XMLPARSE",
      "XMLPI",
      "XMLROOT",
      "XMLSERIALIZE"
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy