UNPKG

@sap/cds-compiler

Version:

CDS (Core Data Services) compiler and backends

931 lines (927 loc) 16.5 kB
'use strict'; /* eslint @stylistic/no-multi-spaces: 0 */ const { functionsWithoutParentheses, cdlKeywords } = require('../parsers/identifiers'); module.exports = { cdl: cdlKeywords, // CDL functions, used for automatic quoting in 'toCdl' renderer, // only relevant for element references of path length 1. cdl_functions: functionsWithoutParentheses, // SQLite keywords, used to warn in 'toSql' renderer with dialect 'sqlite' // Taken from http://www.sqlite.org/draft/lang_keywords.html // Better use keywords in tool/mkkeywordhash.c of a sqlite distribution. sqlite: [ 'ABORT', 'ACTION', 'ADD', 'AFTER', 'ALL', 'ALTER', 'ALWAYS', 'ANALYZE', 'AND', 'AS', 'ASC', 'ATTACH', 'AUTOINCREMENT', 'BEFORE', 'BEGIN', 'BETWEEN', 'BY', 'CASCADE', 'CASE', 'CAST', 'CHECK', 'COLLATE', 'COLUMN', 'COMMIT', 'CONFLICT', 'CONSTRAINT', 'CREATE', 'CROSS', 'CURRENT', 'CURRENT_DATE', 'CURRENT_TIME', 'CURRENT_TIMESTAMP', 'DATABASE', 'DEFAULT', 'DEFERRABLE', 'DEFERRED', 'DELETE', 'DESC', 'DETACH', 'DISTINCT', 'DO', 'DROP', 'EACH', 'ELSE', 'END', 'ESCAPE', 'EXCEPT', 'EXCLUDE', 'EXCLUSIVE', 'EXISTS', 'EXPLAIN', 'FAIL', 'FILTER', 'FIRST', 'FOLLOWING', 'FOR', 'FOREIGN', 'FROM', 'FULL', 'GENERATED', 'GLOB', 'GROUP', 'GROUPS', 'HAVING', 'IF', 'IGNORE', 'IMMEDIATE', 'IN', 'INDEX', 'INDEXED', 'INITIALLY', 'INNER', 'INSERT', 'INSTEAD', 'INTERSECT', 'INTO', 'IS', 'ISNULL', 'JOIN', 'KEY', 'LAST', 'LEFT', 'LIKE', 'LIMIT', 'MATCH', 'MATERIALIZED', 'NATURAL', 'NO', 'NOT', 'NOTHING', 'NOTNULL', 'NULL', 'NULLS', 'OF', 'OFFSET', 'ON', 'OR', 'ORDER', 'OTHERS', 'OUTER', 'OVER', 'PARTITION', 'PLAN', 'PRAGMA', 'PRECEDING', 'PRIMARY', 'QUERY', 'RAISE', 'RANGE', 'RECURSIVE', 'REFERENCES', 'REGEXP', 'REINDEX', 'RELEASE', 'RENAME', 'REPLACE', 'RESTRICT', 'RETURNING', 'RIGHT', 'ROLLBACK', 'ROW', 'ROWS', 'SAVEPOINT', 'SELECT', 'SET', 'TABLE', 'TEMP', 'TEMPORARY', 'THEN', 'TIES', 'TO', 'TRANSACTION', 'TRIGGER', 'UNBOUNDED', 'UNION', 'UNIQUE', 'UPDATE', 'USING', 'VACUUM', 'VALUES', 'VIEW', 'VIRTUAL', 'WHEN', 'WHERE', 'WINDOW', 'WITH', 'WITHOUT', ], // SAP HANA keywords, used for smart quoting in to-hdi.plain // See './scripts/keywords/hana/generateSqlKeywords.js' hana: [ 'ABAPITAB', 'ABAPSTRUCT', 'ABAP_CHAR', 'ABAP_DATE', 'ABAP_DECFLOAT16', 'ABAP_DECFLOAT34', 'ABAP_FLOAT', 'ABAP_HEX', 'ABAP_INT', 'ABAP_INT1', 'ABAP_INT2', 'ABAP_NUM', 'ABAP_PACKED', 'ABAP_STRING', 'ABAP_TIME', 'ABAP_XSTRING', 'ABS', 'ABSOLUTE', 'ACOS', 'ADD_DAYS', 'ADD_MONTHS', 'ADD_SECONDS', 'ADD_YEARS', 'ADOPT', 'ALL', 'ALPHANUM', 'ALTER', 'ANY', 'APPLY_FILTER', 'ARRAY', 'ARRAY_AGG', 'AS', 'ASCII', 'ASIN', 'AT', 'ATAN', 'ATAN2', 'AUTHORIZATION', 'AUTO', 'AVG', 'BASIC', 'BEFORE', 'BEGIN', 'BETWEEN', 'BIGINT', 'BINARY', 'BIND_AS_PARAMETER', 'BIND_AS_VALUE', 'BIND_BIGINT', 'BIND_CHAR', 'BIND_DECIMAL', 'BIND_DOUBLE', 'BIND_NCHAR', 'BIND_REAL', 'BINTEXT', 'BINTOHEX', 'BITAND', 'BLOB', 'BOOLEAN', 'BOTH', 'BOUNDARY', 'BREAKUP', 'BULK', 'BY', 'CASE', 'CAST', 'CEIL', 'CEILING', 'CE_AGGREGATION', 'CE_CALC', 'CE_CALC_VIEW', 'CE_COLUMN_TABLE', 'CE_COMM2R', 'CE_CONVERSION', 'CE_FULL_OUTER_JOIN', 'CE_JOIN', 'CE_JOIN_VIEW', 'CE_LEFT_OUTER_JOIN', 'CE_MERGE', 'CE_OLAP_VIEW', 'CE_PARTITION', 'CE_PROJECTION', 'CE_RIGHT_OUTER_JOIN', 'CE_UNION_ALL', 'CE_VERTICAL_UNION', 'CHAR', 'CHARACTER', 'CLOB', 'COALESCE', 'COLLATE', 'CONCAT', 'CONDITION', 'CONNECT', 'CONSTANT', 'CONSTRAINT', 'COS', 'COSH', 'COT', 'COUNT', 'CROSS', 'CS_ALPHANUM', 'CS_DATE', 'CS_DAYDATE', 'CS_DECIMAL_FLOAT', 'CS_DOUBLE', 'CS_FIXED', 'CS_FIXEDSTRING', 'CS_FLOAT', 'CS_GEOMETRY', 'CS_INT', 'CS_LONGDATE', 'CS_POINT', 'CS_POINTZ', 'CS_RAW', 'CS_SDFLOAT', 'CS_SECONDDATE', 'CS_SECONDTIME', 'CS_SHORTTEXT', 'CS_STRING', 'CS_TEXT', 'CS_TEXT_AE', 'CS_TIME', 'CS_ZONE', 'CUBE', 'CUME_DIST', 'CURDATE', 'CURRENT_CONNECTION', 'CURRENT_DATABASE', 'CURRENT_DATE', 'CURRENT_SCHEMA', 'CURRENT_TIME', 'CURRENT_TIMESTAMP', 'CURRENT_TRANSACTION_ISOLATION_LEVEL', 'CURRENT_USER', 'CURRENT_UTCDATE', 'CURRENT_UTCTIME', 'CURRENT_UTCTIMESTAMP', 'CURRVAL', 'CURSOR', 'CURTIME', 'CURVE', 'DATABASE', 'DATASET', 'DATE', 'DATETIME', 'DATS_EXTRACT', 'DAYDATE', 'DAYOFMONTH', 'DAYOFWEEK', 'DAYS_BETWEEN', 'DDIC_ACCP', 'DDIC_ALNM', 'DDIC_CDAY', 'DDIC_CHAR', 'DDIC_CLNT', 'DDIC_CUKY', 'DDIC_CURR', 'DDIC_D16D', 'DDIC_D16R', 'DDIC_D16S', 'DDIC_D34D', 'DDIC_D34R', 'DDIC_D34S', 'DDIC_DATS', 'DDIC_DAY', 'DDIC_DEC', 'DDIC_FLTP', 'DDIC_GUID', 'DDIC_INT1', 'DDIC_INT2', 'DDIC_INT4', 'DDIC_INT8', 'DDIC_LANG', 'DDIC_LCHR', 'DDIC_LRAW', 'DDIC_MIN', 'DDIC_MON', 'DDIC_NUMC', 'DDIC_PREC', 'DDIC_QUAN', 'DDIC_RAW', 'DDIC_RSTR', 'DDIC_SEC', 'DDIC_SRST', 'DDIC_SSTR', 'DDIC_STRG', 'DDIC_STXT', 'DDIC_TEXT', 'DDIC_TIMS', 'DDIC_UNIT', 'DDIC_UTCL', 'DDIC_UTCM', 'DDIC_UTCS', 'DDIC_VARC', 'DDIC_WEEK', 'DEC', 'DECIMAL', 'DECLARE', 'DENSE_RANK', 'DEPTH', 'DISTANCE', 'DISTINCT', 'DOUBLE', 'ELSE', 'ELSEIF', 'EMPTY', 'END', 'EXCEPT', 'EXCEPTION', 'EXEC', 'EXISTS', 'EXP', 'EXTRACT', 'FALSE', 'FILTER', 'FIRST_VALUE', 'FLOAT', 'FLOOR', 'FOR', 'FROM', 'FULL', 'GET_NUM_SERVERS', 'GREATEST', 'GROUP', 'GROUPING', 'GROUPING_FILTER', 'GROUPING_ID', 'GROUP_SCORE', 'HASANYPRIVILEGES', 'HASSYSTEMPRIVILEGE', 'HAVING', 'HEXTOBIN', 'HIERARCHY', 'HIERARCHY_ANCESTORS', 'HIERARCHY_ANCESTORS_AGGREGATE', 'HIERARCHY_DESCENDANTS', 'HIERARCHY_DESCENDANTS_AGGREGATE', 'HIERARCHY_LEVELED', 'HIERARCHY_SIBLINGS', 'HIERARCHY_SPANTREE', 'HIERARCHY_TEMPORAL', 'HIGHLIGHTED', 'HILBERT', 'HOST', 'HOUR', 'IF', 'IFNULL', 'IN', 'INNER', 'INOUT', 'INSTR', 'INT', 'INTEGER', 'INTERNAL', 'INTERSECT', 'INTO', 'IS', 'ISAUTHORIZED', 'ISTOTAL', 'IS_EMPTY', 'JOIN', 'JSON_QUERY', 'JSON_TABLE', 'JSON_VALUE', 'LAG', 'LANGUAGE', 'LAST_DAY', 'LAST_VALUE', 'LATERAL', 'LAYOUT', 'LCASE', 'LEAD', 'LEADING', 'LEAST', 'LEAVES', 'LEFT', 'LENGTH', 'LENGTHB', 'LEVELS', 'LIMIT', 'LN', 'LOCATE', 'LOCATE_REGEXPR', 'LOG', 'LONGDATE', 'LOOP', 'LOWER', 'LPAD', 'LTRIM', 'MAP', 'MAP_MERGE', 'MAP_REDUCE', 'MAX', 'MEASURES', 'MIMETYPE', 'MIN', 'MINUS', 'MINUTE', 'MOD', 'MONTH', 'MULTIPARENT', 'NATURAL', 'NCHAR', 'NCLOB', 'NEXTVAL', 'NEXT_DAY', 'NO', 'NOT', 'NOW', 'NTEXT', 'NTH_VALUE', 'NTILE', 'NULL', 'NULLIF', 'NUMBER', 'NUMERIC', 'NVARCHAR', 'OCCURRENCES_REGEXPR', 'OF', 'OLYMP', 'ON', 'OPENCYPHER_TABLE', 'ORDER', 'ORDINALITY', 'ORPHAN', 'OUT', 'OVER', 'PERCENTILE_CONT', 'PERCENTILE_DISC', 'PERCENT_RANK', 'PLAIN', 'POWER', 'PRIOR', 'PRODUCT', 'RANGE', 'RANGE_RESTRICTION', 'RANK', 'RAW', 'RDICT', 'REAL', 'REAL_VECTOR', 'RECORD_COMMIT_TIMESTAMP', 'RECORD_COUNT', 'RECORD_ID', 'RECURSIVE', 'REMOTE_EXECUTE_QUERY', 'REPLACE', 'REPLACE_REGEXPR', 'RETURN', 'RETURNS', 'REVERSE', 'RIGHT', 'ROLLUP', 'ROUND', 'ROUNDROBIN', 'ROW', 'ROWID', 'ROW_NUMBER', 'RPAD', 'RTREE', 'RTRIM', 'SCORE', 'SECOND', 'SECONDDATE', 'SECONDS_BETWEEN', 'SECONDTIME', 'SELECT', 'SERIES_ELEMENT_TO_PERIOD', 'SERIES_PERIOD_TO_ELEMENT', 'SERIES_ROUND', 'SESSION_CONTEXT', 'SESSION_USER', 'SET', 'SHORTTEXT', 'SIBLING', 'SIGN', 'SIN', 'SINH', 'SMALLDECIMAL', 'SMALLINT', 'SNIPPETS', 'SOME', 'SQL', 'SQRT', 'START', 'STDDEV', 'STRING', 'STRING_AGG', 'ST_ALPHASHAPEAGGR', 'ST_ALPHASHAPEAREAAGGR', 'ST_ALPHASHAPEEDGEAGGR', 'ST_ASESRIJSON', 'ST_ASGEOJSON', 'ST_ASMVT', 'ST_ASSVGAGGR', 'ST_CIRCULARSTRING', 'ST_CLUSTERCELL', 'ST_CLUSTERCENTROID', 'ST_CLUSTERCONVEXHULL', 'ST_CLUSTERCOREPOINT', 'ST_CLUSTERENVELOPE', 'ST_COLLECTAGGR', 'ST_CONCAVEHULLAGGR', 'ST_CONVEXHULLAGGR', 'ST_DISK_LOB', 'ST_ENVELOPEAGGR', 'ST_FROMTEXT', 'ST_GEOMETRY', 'ST_GEOMETRYCOLLECTION', 'ST_GEOMFROMESRIJSON', 'ST_GEOMFROMEWKB', 'ST_GEOMFROMEWKT', 'ST_GEOMFROMGEOHASH', 'ST_GEOMFROMGEOJSON', 'ST_GEOMFROMTEXT', 'ST_GEOMFROMWKB', 'ST_GEOMFROMWKT', 'ST_INTERSECTIONAGGR', 'ST_LINESTRING', 'ST_MAKELINE', 'ST_MAKELINEAGGR', 'ST_MAKEPOLYGON', 'ST_MEMORY_LOB', 'ST_MULTILINESTRING', 'ST_MULTIPOINT', 'ST_MULTIPOLYGON', 'ST_POINT', 'ST_POINTFROMGEOHASH', 'ST_POINTFROMWKB', 'ST_POINTM', 'ST_POINTZ', 'ST_POINTZM', 'ST_POLYGON', 'ST_RECTANGLE', 'ST_UNIONAGGR', 'SUBSTR', 'SUBSTRING', 'SUBSTRING_REGEXPR', 'SUBSTR_AFTER', 'SUBSTR_BEFORE', 'SUBSTR_REGEXPR', 'SUM', 'SYSTEM_TIME', 'SYSUUID', 'TABLE', 'TABLESAMPLE', 'TAN', 'TANH', 'TEXT', 'TEXT_FILTER', 'TIME', 'TIMELINE', 'TIMESTAMP', 'TIMEZONE', 'TIMS_EXTRACT', 'TINYINT', 'TM_CATEGORIZE_KNN', 'TM_GET_RELATED_DOCUMENTS', 'TM_GET_RELATED_TERMS', 'TM_GET_RELEVANT_DOCUMENTS', 'TM_GET_RELEVANT_TERMS', 'TM_GET_SUGGESTED_TERMS', 'TO', 'TOP', 'TO_BIGINT', 'TO_BINARY', 'TO_BLOB', 'TO_CHAR', 'TO_CLOB', 'TO_DATE', 'TO_DATS', 'TO_DECIMAL', 'TO_DOUBLE', 'TO_INT', 'TO_INTEGER', 'TO_JSON_BOOLEAN', 'TO_JSON_NUMBER', 'TO_NCHAR', 'TO_NCLOB', 'TO_NUMBER', 'TO_NVARCHAR', 'TO_REAL', 'TO_SECONDDATE', 'TO_SMALLDECIMAL', 'TO_SMALLINT', 'TO_TIME', 'TO_TIMESTAMP', 'TO_TINYINT', 'TO_VARBINARY', 'TO_VARCHAR', 'TRACE', 'TRAILING', 'TRIGGER_UPDATE_COLUMN', 'TRIM', 'TRUE', 'UCASE', 'UNICODE', 'UNION', 'UNKNOWN', 'UNNEST', 'UPPER', 'USER', 'USING', 'UTCTIMESTAMP', 'VALUES', 'VAR', 'VARBINARY', 'VARCHAR', 'VARCHAR1', 'VARCHAR2', 'VARCHAR3', 'VERSIONING', 'WEEKDAY', 'WHEN', 'WHERE', 'WHILE', 'WHY_FOUND', 'WINDOW', 'WITH', 'WITHIN', 'XMLTABLE', 'YEAR', ], // SAP HANA CDS keywords, used for smart quoting in to-hdbcds.plain hdbcds: [ 'ALL', 'ALTER', 'AS', 'BEFORE', 'BEGIN', 'BOTH', 'CASE', 'CHAR', 'CONDITION', 'CONNECT', 'CROSS', 'CUBE', 'CURRENT_CONNECTION', 'CURRENT_DATE', 'CURRENT_SCHEMA', 'CURRENT_TIME', 'CURRENT_TIMESTAMP', 'CURRENT_USER', 'CURRENT_UTCDATE', 'CURRENT_UTCTIME', 'CURRENT_UTCTIMESTAMP', 'CURRVAL', 'CURSOR', 'DECLARE', 'DISTINCT', 'ELSE', 'ELSEIF', 'ELSIF', 'END', 'EXCEPT', 'EXCEPTION', 'EXEC', 'FOR', 'FROM', 'FULL', 'GROUP', 'HAVING', 'IF', 'IN', 'INNER', 'INOUT', 'INTERSECT', 'INTO', 'IS', 'JOIN', 'LEADING', 'LEFT', 'LIMIT', 'LOOP', 'MINUS', 'NATURAL', 'NEXTVAL', 'NULL', 'ON', 'ORDER', 'OUT', 'OUTER', 'PRIOR', 'RETURN', 'RETURNS', 'REVERSE', 'RIGHT', 'ROLLUP', 'ROWID', 'SELECT', 'SET', 'SQL', 'START', 'SYSDATE', 'SYSTIME', 'SYSTIMESTAMP', 'SYSUUID', 'TOP', 'TRAILING', 'UNION', 'USING', 'VALUES', 'WHEN', 'WHERE', 'WHILE', 'WITH', ], // Postgres keywords, used for smart quoting in to-sql.plain.postgres // Taken from https://www.postgresql.org/docs/current/sql-keywords-appendix.html // Generated via scripts/keywords/postgres/generateKeywords.js postgres: [ 'ALL', 'ANALYSE', 'ANALYZE', 'AND', 'ANY', 'ARRAY', 'AS', 'ASC', 'ASYMMETRIC', 'AUTHORIZATION', 'BINARY', 'BOTH', 'CASE', 'CAST', 'CHECK', 'COLLATE', 'COLLATION', 'COLUMN', 'CONCURRENTLY', 'CONSTRAINT', 'CREATE', 'CROSS', 'CURRENT_CATALOG', 'CURRENT_DATE', 'CURRENT_ROLE', 'CURRENT_SCHEMA', 'CURRENT_TIME', 'CURRENT_TIMESTAMP', 'CURRENT_USER', 'DEFAULT', 'DEFERRABLE', 'DESC', 'DISTINCT', 'DO', 'ELSE', 'END', 'EXCEPT', 'FALSE', 'FETCH', 'FOR', 'FOREIGN', 'FREEZE', 'FROM', 'FULL', 'GRANT', 'GROUP', 'HAVING', 'ILIKE', 'IN', 'INITIALLY', 'INNER', 'INTERSECT', 'INTO', 'IS', 'ISNULL', 'JOIN', 'LATERAL', 'LEADING', 'LEFT', 'LIKE', 'LIMIT', 'LOCALTIME', 'LOCALTIMESTAMP', 'NATURAL', 'NOT', 'NOTNULL', 'NULL', 'OFFSET', 'ON', 'ONLY', 'OR', 'ORDER', 'OUTER', 'OVERLAPS', 'PLACING', 'PRIMARY', 'REFERENCES', 'RETURNING', 'RIGHT', 'SELECT', 'SESSION_USER', 'SIMILAR', 'SOME', 'SYMMETRIC', 'SYSTEM_USER', 'TABLE', 'TABLESAMPLE', 'THEN', 'TO', 'TRAILING', 'TRUE', 'UNION', 'UNIQUE', 'USER', 'USING', 'VARIADIC', 'VERBOSE', 'WHEN', 'WHERE', 'WINDOW', 'WITH', ], // H2 keywords, used for smart quoting in to-sql.plain.postgres // Taken from http://www.h2database.com/html/advanced.html#keywords h2: [ 'ALL', 'AND', 'ANY', 'ARRAY', 'AS', 'ASYMMETRIC', 'AUTHORIZATION', 'BETWEEN', 'BOTH', 'CASE', 'CAST', 'CHECK', 'CONSTRAINT', 'CROSS', 'CURRENT_CATALOG', 'CURRENT_DATE', 'CURRENT_PATH', 'CURRENT_ROLE', 'CURRENT_SCHEMA', 'CURRENT_TIME', 'CURRENT_TIMESTAMP', 'CURRENT_USER', 'DAY', 'DEFAULT', 'DISTINCT', 'ELSE', 'END', 'EXCEPT', 'EXISTS', 'FALSE', 'FETCH', 'FOR', 'FOREIGN', 'FROM', 'FULL', 'GROUP', 'GROUPS', 'HAVING', 'HOUR', 'IF', 'ILIKE', 'IN', 'INNER', 'INTERSECT', 'INTERVAL', 'IS', 'JOIN', 'KEY', 'LEADING', 'LEFT', 'LIKE', 'LIMIT', 'LOCALTIME', 'LOCALTIMESTAMP', 'MINUS', 'MINUTE', 'MONTH', 'NATURAL', 'NOT', 'NULL', 'OFFSET', 'ON', 'OR', 'ORDER', 'OVER', 'PARTITION', 'PRIMARY', 'QUALIFY', 'RANGE', 'REGEXP', 'RIGHT', 'ROW', 'ROWNUM', 'ROWS', 'SECOND', 'SELECT', 'SESSION_USER', 'SET', 'SOME', 'SYMMETRIC', 'SYSTEM_USER', 'TABLE', 'TO', 'TOP', 'TRAILING', 'TRUE', 'UESCAPE', 'UNION', 'UNIQUE', 'UNKNOWN', 'USER', 'USING', 'VALUE', 'VALUES', 'WHEN', 'WHERE', 'WINDOW', 'WITH', 'YEAR', '_ROWID_', ], };