sql-formatter-ggsrc-customized
Version:
Format whitespace in a SQL query to make it more readable
2,424 lines (2,414 loc) • 362 kB
JavaScript
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
var __objRest = (source, exclude) => {
var target = {};
for (var prop in source)
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
target[prop] = source[prop];
if (source != null && __getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(source)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
target[prop] = source[prop];
}
return target;
};
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
// src/allDialects.ts
var allDialects_exports = {};
__export(allDialects_exports, {
bigquery: () => bigquery,
db2: () => db2,
db2i: () => db2i,
hive: () => hive,
mariadb: () => mariadb,
mysql: () => mysql,
n1ql: () => n1ql,
plsql: () => plsql,
postgresql: () => postgresql,
redshift: () => redshift,
singlestoredb: () => singlestoredb,
snowflake: () => snowflake,
spark: () => spark,
sql: () => sql,
sqlite: () => sqlite,
tidb: () => tidb,
transactsql: () => transactsql,
trino: () => trino
});
// src/expandPhrases.ts
var expandPhrases = (phrases) => phrases.flatMap(expandSinglePhrase);
var expandSinglePhrase = (phrase) => buildCombinations(parsePhrase(phrase)).map(stripExtraWhitespace);
var stripExtraWhitespace = (text) => text.replace(/ +/g, " ").trim();
var parsePhrase = (text) => ({
type: "mandatory_block",
items: parseAlteration(text, 0)[0]
});
var parseAlteration = (text, index, expectClosing) => {
const alterations = [];
while (text[index]) {
const [term, newIndex] = parseConcatenation(text, index);
alterations.push(term);
index = newIndex;
if (text[index] === "|") {
index++;
} else if (text[index] === "}" || text[index] === "]") {
if (expectClosing !== text[index]) {
throw new Error(`Unbalanced parenthesis in: ${text}`);
}
index++;
return [alterations, index];
} else if (index === text.length) {
if (expectClosing) {
throw new Error(`Unbalanced parenthesis in: ${text}`);
}
return [alterations, index];
} else {
throw new Error(`Unexpected "${text[index]}"`);
}
}
return [alterations, index];
};
var parseConcatenation = (text, index) => {
const items = [];
while (true) {
const [term, newIndex] = parseTerm(text, index);
if (term) {
items.push(term);
index = newIndex;
} else {
break;
}
}
return items.length === 1 ? [items[0], index] : [{ type: "concatenation", items }, index];
};
var parseTerm = (text, index) => {
if (text[index] === "{") {
return parseMandatoryBlock(text, index + 1);
} else if (text[index] === "[") {
return parseOptionalBlock(text, index + 1);
} else {
let word = "";
while (text[index] && /[A-Za-z0-9_ ]/.test(text[index])) {
word += text[index];
index++;
}
return [word, index];
}
};
var parseMandatoryBlock = (text, index) => {
const [items, newIndex] = parseAlteration(text, index, "}");
return [{ type: "mandatory_block", items }, newIndex];
};
var parseOptionalBlock = (text, index) => {
const [items, newIndex] = parseAlteration(text, index, "]");
return [{ type: "optional_block", items }, newIndex];
};
var buildCombinations = (node) => {
if (typeof node === "string") {
return [node];
} else if (node.type === "concatenation") {
return node.items.map(buildCombinations).reduce(stringCombinations, [""]);
} else if (node.type === "mandatory_block") {
return node.items.flatMap(buildCombinations);
} else if (node.type === "optional_block") {
return ["", ...node.items.flatMap(buildCombinations)];
} else {
throw new Error(`Unknown node type: ${node}`);
}
};
var stringCombinations = (xs, ys) => {
const results = [];
for (const x of xs) {
for (const y of ys) {
results.push(x + y);
}
}
return results;
};
// src/lexer/token.ts
var TokenType = /* @__PURE__ */ ((TokenType2) => {
TokenType2["QUOTED_IDENTIFIER"] = "QUOTED_IDENTIFIER";
TokenType2["IDENTIFIER"] = "IDENTIFIER";
TokenType2["STRING"] = "STRING";
TokenType2["VARIABLE"] = "VARIABLE";
TokenType2["RESERVED_DATA_TYPE"] = "RESERVED_DATA_TYPE";
TokenType2["RESERVED_PARAMETERIZED_DATA_TYPE"] = "RESERVED_PARAMETERIZED_DATA_TYPE";
TokenType2["RESERVED_KEYWORD"] = "RESERVED_KEYWORD";
TokenType2["RESERVED_FUNCTION_NAME"] = "RESERVED_FUNCTION_NAME";
TokenType2["RESERVED_PHRASE"] = "RESERVED_PHRASE";
TokenType2["RESERVED_SET_OPERATION"] = "RESERVED_SET_OPERATION";
TokenType2["RESERVED_CLAUSE"] = "RESERVED_CLAUSE";
TokenType2["RESERVED_SELECT"] = "RESERVED_SELECT";
TokenType2["RESERVED_JOIN"] = "RESERVED_JOIN";
TokenType2["ARRAY_IDENTIFIER"] = "ARRAY_IDENTIFIER";
TokenType2["ARRAY_KEYWORD"] = "ARRAY_KEYWORD";
TokenType2["CASE"] = "CASE";
TokenType2["END"] = "END";
TokenType2["WHEN"] = "WHEN";
TokenType2["ELSE"] = "ELSE";
TokenType2["THEN"] = "THEN";
TokenType2["LIMIT"] = "LIMIT";
TokenType2["BETWEEN"] = "BETWEEN";
TokenType2["AND"] = "AND";
TokenType2["OR"] = "OR";
TokenType2["XOR"] = "XOR";
TokenType2["OPERATOR"] = "OPERATOR";
TokenType2["COMMA"] = "COMMA";
TokenType2["ASTERISK"] = "ASTERISK";
TokenType2["PROPERTY_ACCESS_OPERATOR"] = "PROPERTY_ACCESS_OPERATOR";
TokenType2["OPEN_PAREN"] = "OPEN_PAREN";
TokenType2["CLOSE_PAREN"] = "CLOSE_PAREN";
TokenType2["LINE_COMMENT"] = "LINE_COMMENT";
TokenType2["BLOCK_COMMENT"] = "BLOCK_COMMENT";
TokenType2["DISABLE_COMMENT"] = "DISABLE_COMMENT";
TokenType2["NUMBER"] = "NUMBER";
TokenType2["NAMED_PARAMETER"] = "NAMED_PARAMETER";
TokenType2["QUOTED_PARAMETER"] = "QUOTED_PARAMETER";
TokenType2["NUMBERED_PARAMETER"] = "NUMBERED_PARAMETER";
TokenType2["POSITIONAL_PARAMETER"] = "POSITIONAL_PARAMETER";
TokenType2["CUSTOM_PARAMETER"] = "CUSTOM_PARAMETER";
TokenType2["DELIMITER"] = "DELIMITER";
TokenType2["EOF"] = "EOF";
return TokenType2;
})(TokenType || {});
var createEofToken = (index) => ({
type: "EOF" /* EOF */,
raw: "\xABEOF\xBB",
text: "\xABEOF\xBB",
start: index
});
var EOF_TOKEN = createEofToken(Infinity);
var testToken = (compareToken) => (token) => token.type === compareToken.type && token.text === compareToken.text;
var isToken = {
ARRAY: testToken({ text: "ARRAY", type: "RESERVED_DATA_TYPE" /* RESERVED_DATA_TYPE */ }),
BY: testToken({ text: "BY", type: "RESERVED_KEYWORD" /* RESERVED_KEYWORD */ }),
SET: testToken({ text: "SET", type: "RESERVED_CLAUSE" /* RESERVED_CLAUSE */ }),
STRUCT: testToken({ text: "STRUCT", type: "RESERVED_DATA_TYPE" /* RESERVED_DATA_TYPE */ }),
WINDOW: testToken({ text: "WINDOW", type: "RESERVED_CLAUSE" /* RESERVED_CLAUSE */ }),
VALUES: testToken({ text: "VALUES", type: "RESERVED_CLAUSE" /* RESERVED_CLAUSE */ })
};
var isReserved = (type) => type === "RESERVED_DATA_TYPE" /* RESERVED_DATA_TYPE */ || type === "RESERVED_KEYWORD" /* RESERVED_KEYWORD */ || type === "RESERVED_FUNCTION_NAME" /* RESERVED_FUNCTION_NAME */ || type === "RESERVED_PHRASE" /* RESERVED_PHRASE */ || type === "RESERVED_CLAUSE" /* RESERVED_CLAUSE */ || type === "RESERVED_SELECT" /* RESERVED_SELECT */ || type === "RESERVED_SET_OPERATION" /* RESERVED_SET_OPERATION */ || type === "RESERVED_JOIN" /* RESERVED_JOIN */ || type === "ARRAY_KEYWORD" /* ARRAY_KEYWORD */ || type === "CASE" /* CASE */ || type === "END" /* END */ || type === "WHEN" /* WHEN */ || type === "ELSE" /* ELSE */ || type === "THEN" /* THEN */ || type === "LIMIT" /* LIMIT */ || type === "BETWEEN" /* BETWEEN */ || type === "AND" /* AND */ || type === "OR" /* OR */ || type === "XOR" /* XOR */;
var isLogicalOperator = (type) => type === "AND" /* AND */ || type === "OR" /* OR */ || type === "XOR" /* XOR */;
// src/languages/bigquery/bigquery.functions.ts
var functions = [
// https://cloud.google.com/bigquery/docs/reference/standard-sql/aead_encryption_functions
"KEYS.NEW_KEYSET",
"KEYS.ADD_KEY_FROM_RAW_BYTES",
"AEAD.DECRYPT_BYTES",
"AEAD.DECRYPT_STRING",
"AEAD.ENCRYPT",
"KEYS.KEYSET_CHAIN",
"KEYS.KEYSET_FROM_JSON",
"KEYS.KEYSET_TO_JSON",
"KEYS.ROTATE_KEYSET",
"KEYS.KEYSET_LENGTH",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/aggregate_analytic_functions
"ANY_VALUE",
"ARRAY_AGG",
"AVG",
"CORR",
"COUNT",
"COUNTIF",
"COVAR_POP",
"COVAR_SAMP",
"MAX",
"MIN",
"ST_CLUSTERDBSCAN",
"STDDEV_POP",
"STDDEV_SAMP",
"STRING_AGG",
"SUM",
"VAR_POP",
"VAR_SAMP",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/aggregate_functions
"ANY_VALUE",
"ARRAY_AGG",
"ARRAY_CONCAT_AGG",
"AVG",
"BIT_AND",
"BIT_OR",
"BIT_XOR",
"COUNT",
"COUNTIF",
"LOGICAL_AND",
"LOGICAL_OR",
"MAX",
"MIN",
"STRING_AGG",
"SUM",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/approximate_aggregate_functions
"APPROX_COUNT_DISTINCT",
"APPROX_QUANTILES",
"APPROX_TOP_COUNT",
"APPROX_TOP_SUM",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/array_functions
// 'ARRAY',
"ARRAY_CONCAT",
"ARRAY_LENGTH",
"ARRAY_TO_STRING",
"GENERATE_ARRAY",
"GENERATE_DATE_ARRAY",
"GENERATE_TIMESTAMP_ARRAY",
"ARRAY_REVERSE",
"OFFSET",
"SAFE_OFFSET",
"ORDINAL",
"SAFE_ORDINAL",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/bit_functions
"BIT_COUNT",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/conversion_functions
// 'CASE',
"PARSE_BIGNUMERIC",
"PARSE_NUMERIC",
"SAFE_CAST",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/date_functions
"CURRENT_DATE",
"EXTRACT",
"DATE",
"DATE_ADD",
"DATE_SUB",
"DATE_DIFF",
"DATE_TRUNC",
"DATE_FROM_UNIX_DATE",
"FORMAT_DATE",
"LAST_DAY",
"PARSE_DATE",
"UNIX_DATE",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/datetime_functions
"CURRENT_DATETIME",
"DATETIME",
"EXTRACT",
"DATETIME_ADD",
"DATETIME_SUB",
"DATETIME_DIFF",
"DATETIME_TRUNC",
"FORMAT_DATETIME",
"LAST_DAY",
"PARSE_DATETIME",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/debugging_functions
"ERROR",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/federated_query_functions
"EXTERNAL_QUERY",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/geography_functions
"S2_CELLIDFROMPOINT",
"S2_COVERINGCELLIDS",
"ST_ANGLE",
"ST_AREA",
"ST_ASBINARY",
"ST_ASGEOJSON",
"ST_ASTEXT",
"ST_AZIMUTH",
"ST_BOUNDARY",
"ST_BOUNDINGBOX",
"ST_BUFFER",
"ST_BUFFERWITHTOLERANCE",
"ST_CENTROID",
"ST_CENTROID_AGG",
"ST_CLOSESTPOINT",
"ST_CLUSTERDBSCAN",
"ST_CONTAINS",
"ST_CONVEXHULL",
"ST_COVEREDBY",
"ST_COVERS",
"ST_DIFFERENCE",
"ST_DIMENSION",
"ST_DISJOINT",
"ST_DISTANCE",
"ST_DUMP",
"ST_DWITHIN",
"ST_ENDPOINT",
"ST_EQUALS",
"ST_EXTENT",
"ST_EXTERIORRING",
"ST_GEOGFROM",
"ST_GEOGFROMGEOJSON",
"ST_GEOGFROMTEXT",
"ST_GEOGFROMWKB",
"ST_GEOGPOINT",
"ST_GEOGPOINTFROMGEOHASH",
"ST_GEOHASH",
"ST_GEOMETRYTYPE",
"ST_INTERIORRINGS",
"ST_INTERSECTION",
"ST_INTERSECTS",
"ST_INTERSECTSBOX",
"ST_ISCOLLECTION",
"ST_ISEMPTY",
"ST_LENGTH",
"ST_MAKELINE",
"ST_MAKEPOLYGON",
"ST_MAKEPOLYGONORIENTED",
"ST_MAXDISTANCE",
"ST_NPOINTS",
"ST_NUMGEOMETRIES",
"ST_NUMPOINTS",
"ST_PERIMETER",
"ST_POINTN",
"ST_SIMPLIFY",
"ST_SNAPTOGRID",
"ST_STARTPOINT",
"ST_TOUCHES",
"ST_UNION",
"ST_UNION_AGG",
"ST_WITHIN",
"ST_X",
"ST_Y",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/hash_functions
"FARM_FINGERPRINT",
"MD5",
"SHA1",
"SHA256",
"SHA512",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/hll_functions
"HLL_COUNT.INIT",
"HLL_COUNT.MERGE",
"HLL_COUNT.MERGE_PARTIAL",
"HLL_COUNT.EXTRACT",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/interval_functions
"MAKE_INTERVAL",
"EXTRACT",
"JUSTIFY_DAYS",
"JUSTIFY_HOURS",
"JUSTIFY_INTERVAL",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/json_functions
"JSON_EXTRACT",
"JSON_QUERY",
"JSON_EXTRACT_SCALAR",
"JSON_VALUE",
"JSON_EXTRACT_ARRAY",
"JSON_QUERY_ARRAY",
"JSON_EXTRACT_STRING_ARRAY",
"JSON_VALUE_ARRAY",
"TO_JSON_STRING",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/mathematical_functions
"ABS",
"SIGN",
"IS_INF",
"IS_NAN",
"IEEE_DIVIDE",
"RAND",
"SQRT",
"POW",
"POWER",
"EXP",
"LN",
"LOG",
"LOG10",
"GREATEST",
"LEAST",
"DIV",
"SAFE_DIVIDE",
"SAFE_MULTIPLY",
"SAFE_NEGATE",
"SAFE_ADD",
"SAFE_SUBTRACT",
"MOD",
"ROUND",
"TRUNC",
"CEIL",
"CEILING",
"FLOOR",
"COS",
"COSH",
"ACOS",
"ACOSH",
"SIN",
"SINH",
"ASIN",
"ASINH",
"TAN",
"TANH",
"ATAN",
"ATANH",
"ATAN2",
"RANGE_BUCKET",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/navigation_functions
"FIRST_VALUE",
"LAST_VALUE",
"NTH_VALUE",
"LEAD",
"LAG",
"PERCENTILE_CONT",
"PERCENTILE_DISC",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/net_functions
"NET.IP_FROM_STRING",
"NET.SAFE_IP_FROM_STRING",
"NET.IP_TO_STRING",
"NET.IP_NET_MASK",
"NET.IP_TRUNC",
"NET.IPV4_FROM_INT64",
"NET.IPV4_TO_INT64",
"NET.HOST",
"NET.PUBLIC_SUFFIX",
"NET.REG_DOMAIN",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/numbering_functions
"RANK",
"DENSE_RANK",
"PERCENT_RANK",
"CUME_DIST",
"NTILE",
"ROW_NUMBER",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/security_functions
"SESSION_USER",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/statistical_aggregate_functions
"CORR",
"COVAR_POP",
"COVAR_SAMP",
"STDDEV_POP",
"STDDEV_SAMP",
"STDDEV",
"VAR_POP",
"VAR_SAMP",
"VARIANCE",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/string_functions
"ASCII",
"BYTE_LENGTH",
"CHAR_LENGTH",
"CHARACTER_LENGTH",
"CHR",
"CODE_POINTS_TO_BYTES",
"CODE_POINTS_TO_STRING",
"CONCAT",
"CONTAINS_SUBSTR",
"ENDS_WITH",
"FORMAT",
"FROM_BASE32",
"FROM_BASE64",
"FROM_HEX",
"INITCAP",
"INSTR",
"LEFT",
"LENGTH",
"LPAD",
"LOWER",
"LTRIM",
"NORMALIZE",
"NORMALIZE_AND_CASEFOLD",
"OCTET_LENGTH",
"REGEXP_CONTAINS",
"REGEXP_EXTRACT",
"REGEXP_EXTRACT_ALL",
"REGEXP_INSTR",
"REGEXP_REPLACE",
"REGEXP_SUBSTR",
"REPLACE",
"REPEAT",
"REVERSE",
"RIGHT",
"RPAD",
"RTRIM",
"SAFE_CONVERT_BYTES_TO_STRING",
"SOUNDEX",
"SPLIT",
"STARTS_WITH",
"STRPOS",
"SUBSTR",
"SUBSTRING",
"TO_BASE32",
"TO_BASE64",
"TO_CODE_POINTS",
"TO_HEX",
"TRANSLATE",
"TRIM",
"UNICODE",
"UPPER",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/time_functions
"CURRENT_TIME",
"TIME",
"EXTRACT",
"TIME_ADD",
"TIME_SUB",
"TIME_DIFF",
"TIME_TRUNC",
"FORMAT_TIME",
"PARSE_TIME",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/timestamp_functions
"CURRENT_TIMESTAMP",
"EXTRACT",
"STRING",
"TIMESTAMP",
"TIMESTAMP_ADD",
"TIMESTAMP_SUB",
"TIMESTAMP_DIFF",
"TIMESTAMP_TRUNC",
"FORMAT_TIMESTAMP",
"PARSE_TIMESTAMP",
"TIMESTAMP_SECONDS",
"TIMESTAMP_MILLIS",
"TIMESTAMP_MICROS",
"UNIX_SECONDS",
"UNIX_MILLIS",
"UNIX_MICROS",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/uuid_functions
"GENERATE_UUID",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/conditional_expressions
"COALESCE",
"IF",
"IFNULL",
"NULLIF",
// https://cloud.google.com/bigquery/docs/reference/legacy-sql
// legacyAggregate
"AVG",
"BIT_AND",
"BIT_OR",
"BIT_XOR",
"CORR",
"COUNT",
"COVAR_POP",
"COVAR_SAMP",
"EXACT_COUNT_DISTINCT",
"FIRST",
"GROUP_CONCAT",
"GROUP_CONCAT_UNQUOTED",
"LAST",
"MAX",
"MIN",
"NEST",
"NTH",
"QUANTILES",
"STDDEV",
"STDDEV_POP",
"STDDEV_SAMP",
"SUM",
"TOP",
"UNIQUE",
"VARIANCE",
"VAR_POP",
"VAR_SAMP",
// legacyBitwise
"BIT_COUNT",
// legacyCasting
"BOOLEAN",
"BYTES",
"CAST",
"FLOAT",
"HEX_STRING",
"INTEGER",
"STRING",
// legacyComparison
// expr 'IN',
"COALESCE",
"GREATEST",
"IFNULL",
"IS_INF",
"IS_NAN",
"IS_EXPLICITLY_DEFINED",
"LEAST",
"NVL",
// legacyDatetime
"CURRENT_DATE",
"CURRENT_TIME",
"CURRENT_TIMESTAMP",
"DATE",
"DATE_ADD",
"DATEDIFF",
"DAY",
"DAYOFWEEK",
"DAYOFYEAR",
"FORMAT_UTC_USEC",
"HOUR",
"MINUTE",
"MONTH",
"MSEC_TO_TIMESTAMP",
"NOW",
"PARSE_UTC_USEC",
"QUARTER",
"SEC_TO_TIMESTAMP",
"SECOND",
"STRFTIME_UTC_USEC",
"TIME",
"TIMESTAMP",
"TIMESTAMP_TO_MSEC",
"TIMESTAMP_TO_SEC",
"TIMESTAMP_TO_USEC",
"USEC_TO_TIMESTAMP",
"UTC_USEC_TO_DAY",
"UTC_USEC_TO_HOUR",
"UTC_USEC_TO_MONTH",
"UTC_USEC_TO_WEEK",
"UTC_USEC_TO_YEAR",
"WEEK",
"YEAR",
// legacyIp
"FORMAT_IP",
"PARSE_IP",
"FORMAT_PACKED_IP",
"PARSE_PACKED_IP",
// legacyJson
"JSON_EXTRACT",
"JSON_EXTRACT_SCALAR",
// legacyMath
"ABS",
"ACOS",
"ACOSH",
"ASIN",
"ASINH",
"ATAN",
"ATANH",
"ATAN2",
"CEIL",
"COS",
"COSH",
"DEGREES",
"EXP",
"FLOOR",
"LN",
"LOG",
"LOG2",
"LOG10",
"PI",
"POW",
"RADIANS",
"RAND",
"ROUND",
"SIN",
"SINH",
"SQRT",
"TAN",
"TANH",
// legacyRegex
"REGEXP_MATCH",
"REGEXP_EXTRACT",
"REGEXP_REPLACE",
// legacyString
"CONCAT",
// expr CONTAINS 'str'
"INSTR",
"LEFT",
"LENGTH",
"LOWER",
"LPAD",
"LTRIM",
"REPLACE",
"RIGHT",
"RPAD",
"RTRIM",
"SPLIT",
"SUBSTR",
"UPPER",
// legacyTableWildcard
"TABLE_DATE_RANGE",
"TABLE_DATE_RANGE_STRICT",
"TABLE_QUERY",
// legacyUrl
"HOST",
"DOMAIN",
"TLD",
// legacyWindow
"AVG",
"COUNT",
"MAX",
"MIN",
"STDDEV",
"SUM",
"CUME_DIST",
"DENSE_RANK",
"FIRST_VALUE",
"LAG",
"LAST_VALUE",
"LEAD",
"NTH_VALUE",
"NTILE",
"PERCENT_RANK",
"PERCENTILE_CONT",
"PERCENTILE_DISC",
"RANK",
"RATIO_TO_REPORT",
"ROW_NUMBER",
// legacyMisc
"CURRENT_USER",
"EVERY",
"FROM_BASE64",
"HASH",
"FARM_FINGERPRINT",
"IF",
"POSITION",
"SHA1",
"SOME",
"TO_BASE64",
// other
"BQ.JOBS.CANCEL",
"BQ.REFRESH_MATERIALIZED_VIEW",
// ddl
"OPTIONS",
// pivot
"PIVOT",
"UNPIVOT"
];
// src/languages/bigquery/bigquery.keywords.ts
var keywords = [
// https://cloud.google.com/bigquery/docs/reference/standard-sql/lexical#reserved_keywords
"ALL",
"AND",
"ANY",
"AS",
"ASC",
"ASSERT_ROWS_MODIFIED",
"AT",
"BETWEEN",
"BY",
"CASE",
"CAST",
"COLLATE",
"CONTAINS",
"CREATE",
"CROSS",
"CUBE",
"CURRENT",
"DEFAULT",
"DEFINE",
"DESC",
"DISTINCT",
"ELSE",
"END",
"ENUM",
"ESCAPE",
"EXCEPT",
"EXCLUDE",
"EXISTS",
"EXTRACT",
"FALSE",
"FETCH",
"FOLLOWING",
"FOR",
"FROM",
"FULL",
"GROUP",
"GROUPING",
"GROUPS",
"HASH",
"HAVING",
"IF",
"IGNORE",
"IN",
"INNER",
"INTERSECT",
"INTO",
"IS",
"JOIN",
"LATERAL",
"LEFT",
"LIMIT",
"LOOKUP",
"MERGE",
"NATURAL",
"NEW",
"NO",
"NOT",
"NULL",
"NULLS",
"OF",
"ON",
"OR",
"ORDER",
"OUTER",
"OVER",
"PARTITION",
"PRECEDING",
"PROTO",
"RANGE",
"RECURSIVE",
"RESPECT",
"RIGHT",
"ROLLUP",
"ROWS",
"SELECT",
"SET",
"SOME",
"TABLE",
"TABLESAMPLE",
"THEN",
"TO",
"TREAT",
"TRUE",
"UNBOUNDED",
"UNION",
"UNNEST",
"USING",
"WHEN",
"WHERE",
"WINDOW",
"WITH",
"WITHIN",
// misc
"SAFE",
// https://cloud.google.com/bigquery/docs/reference/standard-sql/data-definition-language
"LIKE",
// CREATE TABLE LIKE
"COPY",
// CREATE TABLE COPY
"CLONE",
// CREATE TABLE CLONE
"IN",
"OUT",
"INOUT",
"RETURNS",
"LANGUAGE",
"CASCADE",
"RESTRICT",
"DETERMINISTIC"
];
var dataTypes = [
// https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types
"ARRAY",
// parametric, ARRAY<T>
"BOOL",
"BYTES",
// parameterised, BYTES(Length)
"DATE",
"DATETIME",
"GEOGRAPHY",
"INTERVAL",
"INT64",
"INT",
"SMALLINT",
"INTEGER",
"BIGINT",
"TINYINT",
"BYTEINT",
"NUMERIC",
// parameterised, NUMERIC(Precision[, Scale])
"DECIMAL",
// parameterised, DECIMAL(Precision[, Scale])
"BIGNUMERIC",
// parameterised, BIGNUMERIC(Precision[, Scale])
"BIGDECIMAL",
// parameterised, BIGDECIMAL(Precision[, Scale])
"FLOAT64",
"STRING",
// parameterised, STRING(Length)
"STRUCT",
// parametric, STRUCT<T>
"TIME",
"TIMEZONE"
];
// src/languages/bigquery/bigquery.formatter.ts
var reservedSelect = expandPhrases(["SELECT [ALL | DISTINCT] [AS STRUCT | AS VALUE]"]);
var reservedClauses = expandPhrases([
// Queries: https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax
"WITH [RECURSIVE]",
"FROM",
"WHERE",
"GROUP BY",
"HAVING",
"QUALIFY",
"WINDOW",
"PARTITION BY",
"ORDER BY",
"LIMIT",
"OFFSET",
"OMIT RECORD IF",
// legacy
// Data modification: https://cloud.google.com/bigquery/docs/reference/standard-sql/dml-syntax
// - insert:
"INSERT [INTO]",
"VALUES",
// - update:
"SET",
// - merge:
"MERGE [INTO]",
"WHEN [NOT] MATCHED [BY SOURCE | BY TARGET] [THEN]",
"UPDATE SET",
"CLUSTER BY",
"FOR SYSTEM_TIME AS OF",
// CREATE SNAPSHOT TABLE
"WITH CONNECTION",
"WITH PARTITION COLUMNS",
"REMOTE WITH CONNECTION"
]);
var standardOnelineClauses = expandPhrases([
"CREATE [OR REPLACE] [TEMP|TEMPORARY|SNAPSHOT|EXTERNAL] TABLE [IF NOT EXISTS]"
]);
var tabularOnelineClauses = expandPhrases([
// - create:
// https://cloud.google.com/bigquery/docs/reference/standard-sql/data-definition-language
"CREATE [OR REPLACE] [MATERIALIZED] VIEW [IF NOT EXISTS]",
// - update:
"UPDATE",
// - delete:
"DELETE [FROM]",
// - drop table:
"DROP [SNAPSHOT | EXTERNAL] TABLE [IF EXISTS]",
// - alter table:
"ALTER TABLE [IF EXISTS]",
"ADD COLUMN [IF NOT EXISTS]",
"DROP COLUMN [IF EXISTS]",
"RENAME TO",
"ALTER COLUMN [IF EXISTS]",
"SET DEFAULT COLLATE",
// for alter column
"SET OPTIONS",
// for alter column
"DROP NOT NULL",
// for alter column
"SET DATA TYPE",
// for alter column
// - alter schema
"ALTER SCHEMA [IF EXISTS]",
// - alter view
"ALTER [MATERIALIZED] VIEW [IF EXISTS]",
// - alter bi_capacity
"ALTER BI_CAPACITY",
// - truncate:
"TRUNCATE TABLE",
// - create schema
"CREATE SCHEMA [IF NOT EXISTS]",
"DEFAULT COLLATE",
// stored procedures
"CREATE [OR REPLACE] [TEMP|TEMPORARY|TABLE] FUNCTION [IF NOT EXISTS]",
"CREATE [OR REPLACE] PROCEDURE [IF NOT EXISTS]",
// row access policy
"CREATE [OR REPLACE] ROW ACCESS POLICY [IF NOT EXISTS]",
"GRANT TO",
"FILTER USING",
// capacity
"CREATE CAPACITY",
"AS JSON",
// reservation
"CREATE RESERVATION",
// assignment
"CREATE ASSIGNMENT",
// search index
"CREATE SEARCH INDEX [IF NOT EXISTS]",
// drop
"DROP SCHEMA [IF EXISTS]",
"DROP [MATERIALIZED] VIEW [IF EXISTS]",
"DROP [TABLE] FUNCTION [IF EXISTS]",
"DROP PROCEDURE [IF EXISTS]",
"DROP ROW ACCESS POLICY",
"DROP ALL ROW ACCESS POLICIES",
"DROP CAPACITY [IF EXISTS]",
"DROP RESERVATION [IF EXISTS]",
"DROP ASSIGNMENT [IF EXISTS]",
"DROP SEARCH INDEX [IF EXISTS]",
"DROP [IF EXISTS]",
// DCL, https://cloud.google.com/bigquery/docs/reference/standard-sql/data-control-language
"GRANT",
"REVOKE",
// Script, https://cloud.google.com/bigquery/docs/reference/standard-sql/scripting
"DECLARE",
"EXECUTE IMMEDIATE",
"LOOP",
"END LOOP",
"REPEAT",
"END REPEAT",
"WHILE",
"END WHILE",
"BREAK",
"LEAVE",
"CONTINUE",
"ITERATE",
"FOR",
"END FOR",
"BEGIN",
"BEGIN TRANSACTION",
"COMMIT TRANSACTION",
"ROLLBACK TRANSACTION",
"RAISE",
"RETURN",
"CALL",
// Debug, https://cloud.google.com/bigquery/docs/reference/standard-sql/debugging-statements
"ASSERT",
// Other, https://cloud.google.com/bigquery/docs/reference/standard-sql/other-statements
"EXPORT DATA"
]);
var reservedSetOperations = expandPhrases([
"UNION {ALL | DISTINCT}",
"EXCEPT DISTINCT",
"INTERSECT DISTINCT"
]);
var reservedJoins = expandPhrases([
"JOIN",
"{LEFT | RIGHT | FULL} [OUTER] JOIN",
"{INNER | CROSS} JOIN"
]);
var reservedPhrases = expandPhrases([
// https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax#tablesample_operator
"TABLESAMPLE SYSTEM",
// From DDL: https://cloud.google.com/bigquery/docs/reference/standard-sql/data-definition-language
"ANY TYPE",
"ALL COLUMNS",
"NOT DETERMINISTIC",
// inside window definitions
"{ROWS | RANGE} BETWEEN",
// comparison operator
"IS [NOT] DISTINCT FROM"
]);
var bigquery = {
name: "bigquery",
tokenizerOptions: {
reservedSelect,
reservedClauses: [...reservedClauses, ...tabularOnelineClauses, ...standardOnelineClauses],
reservedSetOperations,
reservedJoins,
reservedPhrases,
reservedKeywords: keywords,
reservedDataTypes: dataTypes,
reservedFunctionNames: functions,
extraParens: ["[]"],
stringTypes: [
// The triple-quoted strings are listed first, so they get matched first.
// Otherwise the first two quotes of """ will get matched as an empty "" string.
{ quote: '""".."""', prefixes: ["R", "B", "RB", "BR"] },
{ quote: "'''..'''", prefixes: ["R", "B", "RB", "BR"] },
'""-bs',
"''-bs",
{ quote: '""-raw', prefixes: ["R", "B", "RB", "BR"], requirePrefix: true },
{ quote: "''-raw", prefixes: ["R", "B", "RB", "BR"], requirePrefix: true }
],
identTypes: ["``"],
identChars: { dashes: true },
paramTypes: { positional: true, named: ["@"], quoted: ["@"] },
variableTypes: [{ regex: String.raw`@@\w+` }],
lineCommentTypes: ["--", "#"],
operators: ["&", "|", "^", "~", ">>", "<<", "||", "=>"],
postProcess
},
formatOptions: {
onelineClauses: [...standardOnelineClauses, ...tabularOnelineClauses],
tabularOnelineClauses
}
};
function postProcess(tokens) {
return detectArraySubscripts(combineParameterizedTypes(tokens));
}
function detectArraySubscripts(tokens) {
let prevToken = EOF_TOKEN;
return tokens.map((token) => {
if (token.text === "OFFSET" && prevToken.text === "[") {
prevToken = token;
return __spreadProps(__spreadValues({}, token), { type: "RESERVED_FUNCTION_NAME" /* RESERVED_FUNCTION_NAME */ });
} else {
prevToken = token;
return token;
}
});
}
function combineParameterizedTypes(tokens) {
var _a;
const processed = [];
for (let i = 0; i < tokens.length; i++) {
const token = tokens[i];
if ((isToken.ARRAY(token) || isToken.STRUCT(token)) && ((_a = tokens[i + 1]) == null ? void 0 : _a.text) === "<") {
const endIndex = findClosingAngleBracketIndex(tokens, i + 1);
const typeDefTokens = tokens.slice(i, endIndex + 1);
processed.push({
type: "IDENTIFIER" /* IDENTIFIER */,
raw: typeDefTokens.map(formatTypeDefToken("raw")).join(""),
text: typeDefTokens.map(formatTypeDefToken("text")).join(""),
start: token.start
});
i = endIndex;
} else {
processed.push(token);
}
}
return processed;
}
var formatTypeDefToken = (key) => (token) => {
if (token.type === "IDENTIFIER" /* IDENTIFIER */ || token.type === "COMMA" /* COMMA */) {
return token[key] + " ";
} else {
return token[key];
}
};
function findClosingAngleBracketIndex(tokens, startIndex) {
let level = 0;
for (let i = startIndex; i < tokens.length; i++) {
const token = tokens[i];
if (token.text === "<") {
level++;
} else if (token.text === ">") {
level--;
} else if (token.text === ">>") {
level -= 2;
}
if (level === 0) {
return i;
}
}
return tokens.length - 1;
}
// src/languages/db2/db2.functions.ts
var functions2 = [
// https://www.ibm.com/docs/en/db2/11.5?topic=bif-aggregate-functions
"ARRAY_AGG",
"AVG",
"CORRELATION",
"COUNT",
"COUNT_BIG",
"COVARIANCE",
"COVARIANCE_SAMP",
"CUME_DIST",
"GROUPING",
"LISTAGG",
"MAX",
"MEDIAN",
"MIN",
"PERCENTILE_CONT",
"PERCENTILE_DISC",
"PERCENT_RANK",
"REGR_AVGX",
"REGR_AVGY",
"REGR_COUNT",
"REGR_INTERCEPT",
"REGR_ICPT",
"REGR_R2",
"REGR_SLOPE",
"REGR_SXX",
"REGR_SXY",
"REGR_SYY",
"STDDEV",
"STDDEV_SAMP",
"SUM",
"VARIANCE",
"VARIANCE_SAMP",
"XMLAGG",
"XMLGROUP",
// https://www.ibm.com/docs/en/db2/11.5?topic=bif-scalar-functions
"ABS",
"ABSVAL",
"ACOS",
"ADD_DAYS",
"ADD_HOURS",
"ADD_MINUTES",
"ADD_MONTHS",
"ADD_SECONDS",
"ADD_YEARS",
"AGE",
"ARRAY_DELETE",
"ARRAY_FIRST",
"ARRAY_LAST",
"ARRAY_NEXT",
"ARRAY_PRIOR",
"ASCII",
"ASCII_STR",
"ASIN",
"ATAN",
"ATAN2",
"ATANH",
"BITAND",
"BITANDNOT",
"BITOR",
"BITXOR",
"BITNOT",
"BPCHAR",
"BSON_TO_JSON",
"BTRIM",
"CARDINALITY",
"CEILING",
"CEIL",
"CHARACTER_LENGTH",
"CHR",
"COALESCE",
"COLLATION_KEY",
"COLLATION_KEY_BIT",
"COMPARE_DECFLOAT",
"CONCAT",
"COS",
"COSH",
"COT",
"CURSOR_ROWCOUNT",
"DATAPARTITIONNUM",
"DATE_PART",
"DATE_TRUNC",
"DAY",
"DAYNAME",
"DAYOFMONTH",
"DAYOFWEEK",
"DAYOFWEEK_ISO",
"DAYOFYEAR",
"DAYS",
"DAYS_BETWEEN",
"DAYS_TO_END_OF_MONTH",
"DBPARTITIONNUM",
"DECFLOAT",
"DECFLOAT_FORMAT",
"DECODE",
"DECRYPT_BIN",
"DECRYPT_CHAR",
"DEGREES",
"DEREF",
"DIFFERENCE",
"DIGITS",
"DOUBLE_PRECISION",
"EMPTY_BLOB",
"EMPTY_CLOB",
"EMPTY_DBCLOB",
"EMPTY_NCLOB",
"ENCRYPT",
"EVENT_MON_STATE",
"EXP",
"EXTRACT",
"FIRST_DAY",
"FLOOR",
"FROM_UTC_TIMESTAMP",
"GENERATE_UNIQUE",
"GETHINT",
"GREATEST",
"HASH",
"HASH4",
"HASH8",
"HASHEDVALUE",
"HEX",
"HEXTORAW",
"HOUR",
"HOURS_BETWEEN",
"IDENTITY_VAL_LOCAL",
"IFNULL",
"INITCAP",
"INSERT",
"INSTR",
"INSTR2",
"INSTR4",
"INSTRB",
"INTNAND",
"INTNOR",
"INTNXOR",
"INTNNOT",
"ISNULL",
"JSON_ARRAY",
"JSON_OBJECT",
"JSON_QUERY",
"JSON_TO_BSON",
"JSON_VALUE",
"JULIAN_DAY",
"LAST_DAY",
"LCASE",
"LEAST",
"LEFT",
"LENGTH",
"LENGTH2",
"LENGTH4",
"LENGTHB",
"LN",
"LOCATE",
"LOCATE_IN_STRING",
"LOG10",
"LONG_VARCHAR",
"LONG_VARGRAPHIC",
"LOWER",
"LPAD",
"LTRIM",
"MAX",
"MAX_CARDINALITY",
"MICROSECOND",
"MIDNIGHT_SECONDS",
"MIN",
"MINUTE",
"MINUTES_BETWEEN",
"MOD",
"MONTH",
"MONTHNAME",
"MONTHS_BETWEEN",
"MULTIPLY_ALT",
"NEXT_DAY",
"NEXT_MONTH",
"NEXT_QUARTER",
"NEXT_WEEK",
"NEXT_YEAR",
"NORMALIZE_DECFLOAT",
"NOW",
"NULLIF",
"NVL",
"NVL2",
"OCTET_LENGTH",
"OVERLAY",
"PARAMETER",
"POSITION",
"POSSTR",
"POW",
"POWER",
"QUANTIZE",
"QUARTER",
"QUOTE_IDENT",
"QUOTE_LITERAL",
"RADIANS",
"RAISE_ERROR",
"RAND",
"RANDOM",
"RAWTOHEX",
"REC2XML",
"REGEXP_COUNT",
"REGEXP_EXTRACT",
"REGEXP_INSTR",
"REGEXP_LIKE",
"REGEXP_MATCH_COUNT",
"REGEXP_REPLACE",
"REGEXP_SUBSTR",
"REPEAT",
"REPLACE",
"RID",
"RID_BIT",
"RIGHT",
"ROUND",
"ROUND_TIMESTAMP",
"RPAD",
"RTRIM",
"SECLABEL",
"SECLABEL_BY_NAME",
"SECLABEL_TO_CHAR",
"SECOND",
"SECONDS_BETWEEN",
"SIGN",
"SIN",
"SINH",
"SOUNDEX",
"SPACE",
"SQRT",
"STRIP",
"STRLEFT",
"STRPOS",
"STRRIGHT",
"SUBSTR",
"SUBSTR2",
"SUBSTR4",
"SUBSTRB",
"SUBSTRING",
"TABLE_NAME",
"TABLE_SCHEMA",
"TAN",
"TANH",
"THIS_MONTH",
"THIS_QUARTER",
"THIS_WEEK",
"THIS_YEAR",
"TIMESTAMP_FORMAT",
"TIMESTAMP_ISO",
"TIMESTAMPDIFF",
"TIMEZONE",
"TO_CHAR",
"TO_CLOB",
"TO_DATE",
"TO_HEX",
"TO_MULTI_BYTE",
"TO_NCHAR",
"TO_NCLOB",
"TO_NUMBER",
"TO_SINGLE_BYTE",
"TO_TIMESTAMP",
"TO_UTC_TIMESTAMP",
"TOTALORDER",
"TRANSLATE",
"TRIM",
"TRIM_ARRAY",
"TRUNC_TIMESTAMP",
"TRUNCATE",
"TRUNC",
"TYPE_ID",
"TYPE_NAME",
"TYPE_SCHEMA",
"UCASE",
"UNICODE_STR",
"UPPER",
"VALUE",
"VARCHAR_BIT_FORMAT",
"VARCHAR_FORMAT",
"VARCHAR_FORMAT_BIT",
"VERIFY_GROUP_FOR_USER",
"VERIFY_ROLE_FOR_USER",
"VERIFY_TRUSTED_CONTEXT_ROLE_FOR_USER",
"WEEK",
"WEEK_ISO",
"WEEKS_BETWEEN",
"WIDTH_BUCKET",
"XMLATTRIBUTES",
"XMLCOMMENT",
"XMLCONCAT",
"XMLDOCUMENT",
"XMLELEMENT",
"XMLFOREST",
"XMLNAMESPACES",
"XMLPARSE",
"XMLPI",
"XMLQUERY",
"XMLROW",
"XMLSERIALIZE",
"XMLTEXT",
"XMLVALIDATE",
"XMLXSROBJECTID",
"XSLTRANSFORM",
"YEAR",
"YEARS_BETWEEN",
"YMD_BETWEEN",
// https://www.ibm.com/docs/en/db2/11.5?topic=bif-table-functions
"BASE_TABLE",
"JSON_TABLE",
"UNNEST",
"XMLTABLE",
// https://www.ibm.com/docs/en/db2/11.5?topic=expressions-olap-specification
// Additional function names not already present in the aggregate functions list
"RANK",
"DENSE_RANK",
"NTILE",
"LAG",
"LEAD",
"ROW_NUMBER",
"FIRST_VALUE",
"LAST_VALUE",
"NTH_VALUE",
"RATIO_TO_REPORT",
// Type casting
"CAST"
];
// src/languages/db2/db2.keywords.ts
var keywords2 = [
// https://www.ibm.com/docs/en/db2/11.5?topic=sql-reserved-schema-names-reserved-words
"ACTIVATE",
"ADD",
"AFTER",
"ALIAS",
"ALL",
"ALLOCATE",
"ALLOW",
"ALTER",
"AND",
"ANY",
"AS",
"ASENSITIVE",
"ASSOCIATE",
"ASUTIME",
"AT",
"ATTRIBUTES",
"AUDIT",
"AUTHORIZATION",
"AUX",
"AUXILIARY",
"BEFORE",
"BEGIN",
"BETWEEN",
"BINARY",
"BUFFERPOOL",
"BY",
"CACHE",
"CALL",
"CALLED",
"CAPTURE",
"CARDINALITY",
"CASCADED",
"CASE",
"CAST",
"CHECK",
"CLONE",
"CLOSE",
"CLUSTER",
"COLLECTION",
"COLLID",
"COLUMN",
"COMMENT",
"COMMIT",
"CONCAT",
"CONDITION",
"CONNECT",
"CONNECTION",
"CONSTRAINT",
"CONTAINS",
"CONTINUE",
"COUNT",
"COUNT_BIG",
"CREATE",
"CROSS",
"CURRENT",
"CURRENT_DATE",
"CURRENT_LC_CTYPE",
"CURRENT_PATH",
"CURRENT_SCHEMA",
"CURRENT_SERVER",
"CURRENT_TIME",
"CURRENT_TIMESTAMP",
"CURRENT_TIMEZONE",
"CURRENT_USER",
"CURSOR",
"CYCLE",
"DATA",
"DATABASE",
"DATAPARTITIONNAME",
"DATAPARTITIONNUM",
"DAY",
"DAYS",
"DB2GENERAL",
"DB2GENRL",
"DB2SQL",
"DBINFO",
"DBPARTITIONNAME",
"DBPARTITIONNUM",
"DEALLOCATE",
"DECLARE",
"DEFAULT",
"DEFAULTS",
"DEFINITION",
"DELETE",
"DENSERANK",
"DENSE_RANK",
"DESCRIBE",
"DESCRIPTOR",
"DETERMINISTIC",
"DIAGNOSTICS",
"DISABLE",
"DISALLOW",
"DISCONNECT",
"DISTINCT",
"DO",
"DOCUMENT",
"DROP",
"DSSIZE",
"DYNAMIC",
"EACH",
"EDITPROC",
"ELSE",
"ELSEIF",
"ENABLE",
"ENCODING",
"ENCRYPTION",
"END",
"END-EXEC",
"ENDING",
"ERASE",
"ESCAPE",
"EVERY",
"EXCEPT",
"EXCEPTION",
"EXCLUDING",
"EXCLUSIVE",
"EXECUTE",
"EXISTS",
"EXIT",
"EXPLAIN",
"EXTENDED",
"EXTERNAL",
"EXTRACT",
"FENCED",
"FETCH",
"FIELDPROC",
"FILE",
"FINAL",
"FIRST1",
"FOR",
"FOREIGN",
"FREE",
"FROM",
"FULL",
"FUNCTION",
"GENERAL",
"GENERATED",
"GET",
"GLOBAL",
"GO",
"GOTO",
"GRANT",
"GRAPHIC",
"GROUP",
"HANDLER",
"HASH",
"HASHED_VALUE",
"HAVING",
"HINT",
"HOLD",
"HOUR",
"HOURS",
"IDENTITY",
"IF",
"IMMEDIATE",
"IMPORT",
"IN",
"INCLUDING",
"INCLUSIVE",
"INCREMENT",
"INDEX",
"INDICATOR",
"INDICATORS",
"INF",
"INFINITY",
"INHERIT",
"INNER",
"INOUT",
"INSENSITIVE",
"INSERT",
"INTEGRITY",
"INTERSECT",
"INTO",
"IS",
"ISNULL",
"ISOBID",
"ISOLATION",
"ITERATE",
"JAR",
"JAVA",
"JOIN",
"KEEP",
"KEY",
"LABEL",
"LANGUAGE",
"LAST3",
"LATERAL",
"LC_CTYPE",
"LEAVE",
"LEFT",
"LIKE",
"LIMIT",
"LINKTYPE",
"LOCAL",
"LOCALDATE",
"LOCALE",
"LOCALTIME",
"LOCALTIMESTAMP",
"LOCATOR",
"LOCATORS",
"LOCK",
"LOCKMAX",
"LOCKSIZE",
"LOOP",
"MAINTAINED",
"MATERIALIZED",
"MAXVALUE",
"MICROSECOND",
"MICROSECONDS",
"MINUTE",
"MINUTES",
"MINVALUE",
"MODE",
"MODIFIES",
"MONTH",
"MONTHS",
"NAN",
"NEW",
"NEW_TABLE",
"NEXTVAL",
"NO",
"NOCACHE",
"NOCYCLE",
"NODENAME",
"NODENUMBER",
"NOMAXVALUE",
"NOMINVALUE",
"NONE",
"NOORDER",
"NORMALIZED",
"NOT2",
"NOTNULL",
"NULL",
"NULLS",
"NUMPARTS",
"OBID",
"OF",
"OFF",
"OFFSET",
"OLD",
"OLD_TABLE",
"ON",
"OPEN",
"OPTIMIZATION",
"OPTIMIZE",
"OPTION",
"OR",
"ORDER",
"OUT",
"OUTER",
"OVER",
"OVERRIDING",
"PACKAGE",
"PADDED",
"PAGESIZE",
"PARAMETER",
"PART",
"PARTITION",
"PARTITIONED",
"PARTITIONING",
"PARTITIONS",
"PASSWORD",
"PATH",
"PERCENT",
"PIECESIZE",
"PLAN",
"POSITION",
"PRECISION",
"PREPARE",
"PREVVAL",
"PRIMARY",
"PRIQTY",
"PRIVILEGES",
"PROCEDURE",
"PROGRAM",
"PSID",
"PUBLIC",
"QUERY",
"QUERYNO",
"RANGE",
"RANK",
"READ",
"READS",
"RECOVERY",
"REFERENCES",
"REFERENCING",
"REFRESH",
"RELEASE",
"RENAME",
"REPEAT",
"RESET",
"RESIGNAL",
"RESTART",
"RESTRICT",
"RESULT",
"RESULT_SET_LOCATOR",
"RETURN",
"RETURNS",
"REVOKE",
"RIGHT",
"ROLE",
"ROLLBACK",
"ROUND_CEILING",
"ROUND_DOWN",
"ROUND_FLOOR",
"ROUND_HALF_DOWN",
"ROUND_HALF_EVEN",
"ROUND_HALF_UP",
"ROUND_UP",
"ROUTINE",
"ROW",
"ROWNUMBER",
"ROWS",
"ROWSET",
"ROW_NUMBER",
"RRN",
"RUN",
"SAVEPOINT",
"SCHEMA",
"SCRATCHPAD",
"SCROLL",
"SEARCH",
"SECOND",
"SECONDS",
"SECQTY",
"SECURITY",
"SELECT",
"SENSITIVE",
"SEQUENCE",
"SESSION",
"SESSION_USER",
"SET",
"SIGNAL",
"SIMPLE",
"SNAN",
"SOME",
"SOURCE",
"SPECIFIC",
"SQL",
"SQLID",
"STACKED",
"STANDARD",
"START",
"STARTING",
"STATEMENT",
"STATIC",
"STATMENT",
"STAY",
"STOGROUP",
"STORES",
"STYLE",
"SUBSTRING",
"SUMMARY",
"SYNONYM",
"SYSFUN",
"SYSIBM",
"SYSPROC",
"SYSTEM",
"SYSTEM_USER",
"TABLE",
"TABLESPACE",
"THEN",
"TO",
"TRANSACTION",
"TRIGGER",
"TRIM",
"TRUNCATE",
"TYPE",
"UNDO",
"UNION",
"UNIQUE",
"UNTIL",
"UPDATE",
"USAGE",
"USER",
"USING",
"VALIDPROC",
"VALUE",
"VALUES",
"VARIABLE",
"VARIANT",
"VCAT",
"VERSION",
"VIEW",
"VOLATILE",
"VOLUMES",
"WHEN",
"WHENEVER",
"WHERE",
"WHILE",
"WITH",
"WITHOUT",
"WLM",
"WRITE",
"XMLELEMENT",
"XMLEXISTS",
"XMLNAMESPACES",
"YEAR",
"YEARS"
];
var dataTypes2 = [
// https://www.ibm.com/docs/en/db2-for-zos/12?topic=columns-data-types
"ARRAY",
"BIGINT",
"BINARY",
"BLOB",
"BOOLEAN",
"CCSID",
"CHAR",
"CHARACTER",
"CLOB",
"DATE",
"DATETIME",
"DBCLOB",
"DEC",
"DECIMAL",
"DOUBLE",
"DOUBLE PRECISION",
"FLOAT",
"FLOAT4",
"FLOAT8",
"GRAPHIC",
"INT",
"INT2",
"INT4",
"INT8",
"INTEGER",
"INTERVAL",
"LONG VARCHAR",
"LONG VARGRAPHIC",
"NCHAR",
"NCHR",
"NCLOB",
"NVARCHAR",
"NUMERIC",
"SMALLINT",
"REAL",
"TIME",
"TIMESTAMP",
"VARBINARY",
"VARCHAR",
"VARGRAPHIC"
];
// src/languages/db2/db2.formatter.ts
var reservedSelect2 = expandPhrases(["SELECT [ALL | DISTINCT]"]);
var reservedClauses2 = expandPhrases([
// queries
"WITH",
"FROM",
"WHERE",
"GROUP BY",
"HAVING",
"PARTITION BY",
"ORDER BY [INPUT SEQUENCE]",
"LIMIT",
"OFFSET",
"FETCH NEXT",
"FOR UPDATE [OF]",
"FOR {READ | FETCH} ONLY",
"FOR {RR | CS | UR | RS} [USE AND KEEP {SHARE | UPDATE | EXCLUSIVE} LOCKS]",
"WAIT FOR OUTCOME",
"SKIP LOCKED DATA",
"INTO",
// Data modification
// - insert:
"INSERT INTO",
"VALUES",
// - update:
"SET",
// - merge:
"MERGE INTO",
"WHEN [NOT] MATCHED [THEN]",
"UPDATE SET",
"INSERT"
]);
var standardOnelineClauses2 = expandPhrases([
"CREATE [GLOBAL TEMPORARY | EXTERNAL] TABLE [IF NOT EXISTS]"
]);
var tabularOnelineClauses2 = expandPhrases([
// - create:
"CREATE [OR REPLACE] VIEW",
// - update:
"UPDATE",
"WHERE CURRENT OF",
"WITH {RR | RS | CS | UR}",
// - delete:
"DELETE FROM",
// - drop table:
"DROP TABLE [IF EXISTS]",
// alter table:
"ALTER TABLE",
"ADD [COLUMN]",
"DROP [COLUMN]",
"RENAME COLUMN",
"ALTER [COLUMN]",
"SET DATA TYPE",
// for alter column
"SET NOT NULL",
// for alter column
"DROP {DEFAULT | GENERATED | NOT NULL}",
// for alter column
// - truncate:
"TRUNCATE [TABLE]",
// https://www.ibm.com/docs/en/db2/11.5?topic=s-statements
"ALLOCATE",
"ALTER AUDIT POLICY",
"ALTER BUFFERPOOL",
"ALTER DATABASE PARTITION GROUP",
"ALTER DATABASE",
"ALTER EVENT MONITOR",
"ALTER FUNCTION",
"ALTER HISTOGRAM TEMPLATE",
"ALTER INDEX",
"ALTER MASK",
"ALTER METHOD",
"ALTER MODULE",
"ALTER NICKNAME",
"ALTER PACKAGE",
"ALTER PERMISSION",
"ALTER PROCEDURE",
"ALTER SCHEMA",
"ALTER SECURITY LABEL COMPONENT",
"ALTER SECURITY POLICY",
"ALTER SEQUENCE",
"ALTER SERVER",
"ALTER SERVICE CLASS",
"ALTER STOGROUP",
"ALTER TABLESPACE",
"ALTER THRESHOLD",
"ALTER TRIGGER",
"ALTER TRUSTED CONTEXT",
"ALTER TYPE",
"ALTER USAGE LIST",
"ALTER USER MAPPING",
"ALTER VIEW",
"ALTER WORK ACTION SET",
"ALTER WORK CLASS SET",
"ALTER WORKLOAD",
"ALTER WRAPPER",
"ALTER XSROBJECT",
"ALTER STOGROUP",
"ALTER TABLESPACE",
"ALTER TRIGGER",
"ALTER TRUSTED CONTEXT",
"ALTER VIEW",
"ASSOCIATE [RESULT SET] {LOCATOR | LOCATORS}",
"AUDIT",
"BEGIN DECLARE SECTION",
"CALL",
"CLOSE",
"COMMENT ON",
"COMMIT [WORK]",
"CONNECT",
"CREATE [OR REPLACE] [PUBLIC] ALIAS",
"CREATE AUDIT POLICY",
"CREATE BUFFERPOOL",
"CREATE DATABASE PARTITION GROUP",
"CREATE EVENT MONITOR",
"CREATE [OR REPLACE] FUNCTION",
"CREATE FUNCTION MAPPING",
"CREATE HISTOGRAM TEMPLATE",
"CREATE [UNIQUE] INDEX",
"CREATE INDEX EXTENSION",
"CREATE [OR REPLACE] MASK",
"CREATE [SPECIFIC] METHOD",
"CREATE [OR REPLACE] MODULE",
"CREATE [OR REPLACE] NICKNAME",
"CREATE [OR REPLACE] PERMISSION",
"CREATE [OR REPLACE] PROCEDURE",
"CREATE ROLE",
"CREATE SCHEMA",
"CREATE SECURITY LABEL [COMPONENT]",
"CREATE SECURITY POLICY",
"CREATE [OR REPLACE] SEQUENCE",
"CREATE SERVICE CLASS",
"CREATE SERVER",
"CREATE STOGROUP",
"CREATE SYNONYM",
"CREATE [LARGE | REGULAR | {SYSTEM | USER} TEMPORARY] TABLESPACE",
"CREATE THRESHOLD",
"CREATE {TRANSFORM | TRANSFORMS} FOR",
"CREATE [OR REPLACE] TRIGGER",
"CREATE TRUSTED CONTEXT",
"CREATE [OR REPLACE] TYPE",
"CREATE TYPE MAPPING",
"CREATE USAGE LIST",
"CREATE USER MAPPING FOR",
"CREATE [OR REPLACE] VARIABLE",
"CREATE WORK ACTION SET",
"CREATE WORK CLASS SET",
"CREATE WORKLOAD",
"CREATE WRAPPER",
"DECLARE",
"DECLARE GLOBAL TEMPORARY TABLE",
"DESCRIBE [INPUT | OUTPUT]",
"DISCONNECT",
"DROP [PUBLIC] ALIAS",
"DROP AUDIT POLICY",
"DROP BUFFERPOOL",
"DROP DATABASE PARTITION GROUP",
"DROP EVENT MONITOR",
"DROP [SPECIFIC] FUNCTION",
"DROP FUNCTION MAPPING",
"DROP HISTOGRAM TEMPLATE",
"DROP INDEX [EXTENSION]",
"DROP MASK",
"DROP [SPECIFIC] METHOD",
"DROP MODULE",
"DROP NICKNAME",
"DROP PACKAGE",
"DROP PERMISSION",
"DROP [SPECIFIC] PROCEDURE",
"DROP ROLE",
"DROP SCHEMA",
"DROP SECURITY LABEL [COMPONENT]",
"DROP SECURITY POLICY",
"DROP SEQUENCE",
"DROP SERVER",
"DROP SERVICE CLASS",
"DROP STOGROUP",
"DROP TABLE HIERARCHY",
"DROP {TABLESPACE | TABLESPACES}",
"DROP {TRANSFORM | TRANSFORMS}",
"DROP THRESHOLD",
"DROP TRIGGER",
"DROP TRUSTED CONTEXT",
"DROP TYPE [MAPPING]",
"DROP USAGE LIST",
"DROP USER MAPPING FOR",
"DROP VARIABLE",
"DROP VIEW [HIERARCHY]",
"DROP WORK {ACTION | CLASS} SET",
"DROP WORKLOAD",
"DROP WRAPPER",
"DROP XSROBJECT",
"END DECLARE SECTION",
"EXECUTE [IMMEDIATE]",
"EXPLAIN {PLAN [SECTION] | ALL}",
"FETCH [FROM]",
"FLUSH {BUFFERPOOL | BUFFERPOOLS} ALL",
"FLUSH EVENT MONITOR",
"FLUSH FEDERATED CACHE",
"FLUSH OPTIMIZATION PROFILE CACHE",
"FLUSH PACKAGE CACHE [DYNAMIC]",
"FLUSH AUTHENTICATION CACHE [FOR ALL]",
"FREE LOCATOR",
"GET DIAGNOSTICS",
"GOTO",
"GRANT",
// TODO: lots of syntax here
"INCLUDE",
"ITERATE",
"LEAVE",
"LOCK TABLE",
"LOOP",
"OPEN",
"PIPE",
"PREPARE",
"REFRESH TABLE",
"RELEASE",
"RELEASE [TO] SAVEPOINT",
"RENAME [TABLE | INDEX | STOGROUP | TABLESPACE]",
"REPEAT",
"RESIGNAL",
"RETURN",
"REVOKE",
// TODO: lots of syntax here
"ROLLBACK [WORK] [TO SAVEPOINT]",
"SAVEPOINT",
"SET COMPILATION ENVIRONMENT",
"SET CONNECTION",
"SET CURRENT",
// TODO: bunch of syntax here
"SET ENCRYPTION PASSWORD",
"SET EVENT MONITOR STATE",
"SET INTEGRITY",
"SET PASSTHRU",
"SET PATH",
"SET ROLE",
"SET SCHEMA",
"SET SERVER OPTION",
"SET {SESSION AUTHORIZATION | SESSION_USER}",
"SET USAGE LIST",
"SIGNAL",
"TRANSFER OWNERSHIP OF",
"WHENEVER {NOT FOUND | SQLERROR | SQLWARNING}",
"WHILE"
]);
var reservedSetOperations2 = expandPhrases(["UNION [ALL]", "EXCEPT [ALL]", "INTERSECT [ALL]"]);
var reservedJoins2 = expandPhrases([
"JOIN",
"{LEFT | RIGHT | FULL} [OUTER] JOIN",
"{INNER | CROSS} JOIN"
]);
var reservedPhrases2 = expandPhrases([
"ON DELETE",
"ON UPDATE",
"SET NULL",
"{ROWS | RANGE} BETWEEN"
]);
var db2 = {
name: "db2",
tokenizerOptions: {
reservedSelect: reservedSelect2,
reservedClauses: [...reservedClauses2, ...standardOnelineClauses2, ...tabularOnelineClauses2],
reservedSetOperations: reservedSetOperations2,
reservedJoins: reservedJoins2,
reservedPhrases: reservedPhrases2,
reservedKeywords: keywords2,
reservedDataTypes: dataTypes2,
reservedFunctionNames: functions2,
extraParens: ["[]"],
stringTypes: [
{ quote: "''-qq", prefixes: ["G", "N", "U&"] },
{ quote: "''-raw", prefixes: ["X", "BX", "GX", "UX"], requirePrefix: true }
],
identTypes: [`""-qq`],
identChars: { first: "@#$", rest: "@#$" },
paramTypes: { positional: true, named: [":"] },
paramChars: { first: "@#$", rest: "@#$" },
operators: [
"**",
"%",
"|",
"&",
"^",
"~",
"\xAC=",
"\xAC>",
"\xAC<",
"!>",
"!<",
"^=",
"^>",
"^<",
"||",
"->",
"=>"
]
},
formatOptions: {
onelineClauses: [...standardOnelineClauses2, ...tabularOnelineClauses2],
tabularOnelineClauses: tabularOnelineClauses2
}
};
// src/languages/db2i/db2i.functions.ts
var functions3 = [
// https://www.ibm.com/docs/en/i/7.5?topic=functions-aggregate
// TODO: 'ANY', - conflicts with test for ANY predicate in 'operators.ys'!!
"ARRAY_AGG",
"AVG",
"CORR",
"CORRELATION",
"COUNT",
"COUNT_BIG",
"COVAR_POP",
"COVARIANCE",
"COVAR",
"COVAR_SAMP",
"COVARIANCE_SAMP",
"EVERY",
"GROUPING",
"JSON_ARRAYAGG",
"JSON_OBJECTAGG",
"LISTAGG",
"MAX",
"MEDIAN",
"MIN",
"PERCENTILE_CONT",
"PERCENTILE_DISC",
// https://www.ibm.com/docs/en/i/7.5?topic=functions-regression'
"REGR_AVGX",
"REGR_AVGY",
"REGR_COUNT",
"REGR_INTERCEPT",
"REGR_R2",
"REGR_SLOPE",
"REGR_SXX",
"REGR_SXY",
"REGR_SYY",
"SOME",
"STDDEV_POP",
"STDDEV",
"STDDEV_SAMP",
"SUM",
"VAR_POP",
"VARIANCE",
"VAR",
"VAR_SAMP",
"VARIANCE_SAMP",
"XMLAGG",
"XMLGROUP",
// https://www.ibm.com/docs/en/i/7.5?topic=functions-scalar
"ABS",
"ABSVAL",
"ACOS",
"ADD_DAYS",
"ADD_HOURS",
"ADD_MINUTES",
"ADD_MONTHS",
"ADD_SECONDS",
"ADD_YEARS",
"ANTILOG",
"ARRAY_MAX_CARDINALITY",
"ARRAY_TRIM",
"ASCII",
"ASIN",
"ATAN",
"ATAN2",
"ATANH",
"BASE64_DECODE",
"BASE64_ENCODE",
"BIT_LENGTH",
"BITAND",
"BITANDNOT",
"BITNOT",
"BITOR",
"BITXOR",
"BSON_TO_JSON",
"CARDINALITY",
"CEIL",
"CEILING",
"CHAR_LENGTH",
"CHARACTER_LENGTH",
"CHR",
"COALESCE",
"COMPARE_DECFLOAT",
"CONCAT",
"CONTAINS",
"COS",
"COSH",
"COT",
"CURDATE",
"CURTIME",
"DATABASE",
"DATAPARTITIONNAME",
"DATAPARTITIONNUM",
"DAY",
"DAYNAME",
"DAYOFMONTH",
"DAYOFWEEK_ISO",
"DAYOFWEEK",
"DAYOFYEAR",
"DAYS",
"DBPARTITIONNAME",
"DBPARTITIONNUM",
"DECFLOAT_FORMAT",
"DECFLOAT_SORTKEY",
"DECRYPT_BINARY",
"DECRYPT_BIT",
"DECRYPT_CHAR",
"DECRYPT_DB",
"DEGREES",
"DIFFERENCE",
"DIGITS",
"DLCOMMENT",
"DLLINKTYPE",
"DLURLCOMPLETE",
"DLURLPATH",
"DLURLPATHONLY",
"DLURLSCHEME",
"DLURLSERVER",
"DLVALUE",
"DOUBLE_PRECISION",
"DOUBLE",
"ENCRPYT",
"ENCRYPT_AES",
"ENCRYPT_AES256",
"ENCRYPT_RC2",
"ENCRYPT_TDES",
"EXP",
"EXTRACT",
"FIRST_DAY",
"FLOOR",
"GENERATE_UNIQUE",
"GET_BLOB_FROM_FILE",
"GET_CLOB_FROM_FILE",
"GET_DBCLOB_FROM_FILE",
"GET_XML_FILE",
"GETHINT",
"GREATEST",
"HASH_MD5",
"HASH_ROW",
"HASH_SHA1",
"HASH_SHA256",
"HASH_SHA512",
"HASH_VALUES",
"HASHED_VALUE",
"HEX",
"HEXTORAW",
"HOUR",
"HTML_ENTITY_DECODE",
"HTML_ENTITY_ENCODE",
"HTTP_DELETE_BLOB",
"HTTP_DELETE",
"HTTP_GET_BLOB",
"HTTP_GET",
"HTTP_PATCH_BLOB",
"HTTP_PATCH",
"HTTP_POST_BLOB",
"HTTP_POST",
"HTTP_PUT_BLOB",
"HTTP_PUT",
"IDENTITY_VAL_LOCAL",
"IFNULL",
"INSERT",
"INSTR",
"INTERPRET",
"ISFALSE",
"ISNOTFALSE",
"ISNOTTRUE",
"ISTRUE",
"JSON_ARRAY",
"JSON_OBJECT",
"JSON_QUERY",
"JSON_TO_BSON",
"JSON_UPDATE",
"JSON_VALUE",
"JULIAN_DAY",
"LAND",
"LAST_DAY",
"LCASE",
"LEAST",
"LEFT",
"LENGTH",
"LN",
"LNOT",
"LOCATE_IN_STRING",
"LOCATE",
"LOG10",
"LOR",
"LOWER",
"LPAD",
"LTRIM",
"MAX_CARDINALITY",
"MAX",
"MICROSECOND",
"MIDNIGHT_SECONDS"