sqllens 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/LICENSE +0 -10
  2. package/README.md +95 -85
  3. package/THIRD-PARTY-NOTICES.md +70 -5
  4. package/dist/api.d.ts +5 -3
  5. package/dist/api.js +17 -4
  6. package/dist/bigquery/behavior.d.ts +2 -0
  7. package/dist/bigquery/behavior.js +20 -0
  8. package/dist/bigquery/dot-path.d.ts +0 -2
  9. package/dist/bigquery/dot-path.js +0 -1
  10. package/dist/bigquery/fold.d.ts +8 -0
  11. package/dist/bigquery/fold.js +39 -0
  12. package/dist/bigquery/index.d.ts +7 -0
  13. package/dist/bigquery/index.js +10 -0
  14. package/dist/{infer/bigquery.d.ts → bigquery/infer.d.ts} +2 -2
  15. package/dist/{infer/bigquery.js → bigquery/infer.js} +4 -3
  16. package/dist/bigquery/lower.js +35 -12
  17. package/dist/bigquery/signatures.generated.d.ts +6 -0
  18. package/dist/bigquery/signatures.generated.js +1068 -0
  19. package/dist/completion/atn-walk.d.ts +13 -2
  20. package/dist/completion/atn-walk.js +13 -10
  21. package/dist/completion/complete.d.ts +4 -3
  22. package/dist/completion/complete.js +101 -45
  23. package/dist/completion/config.js +66 -0
  24. package/dist/completion/jinja-slot.d.ts +24 -0
  25. package/dist/completion/jinja-slot.js +126 -0
  26. package/dist/completion/parser-factory.d.ts +13 -1
  27. package/dist/completion/parser-factory.js +48 -0
  28. package/dist/databricks/behavior.d.ts +2 -0
  29. package/dist/databricks/behavior.js +19 -0
  30. package/dist/databricks/fold.d.ts +8 -0
  31. package/dist/databricks/fold.js +27 -0
  32. package/dist/databricks/index.d.ts +7 -0
  33. package/dist/databricks/index.js +10 -0
  34. package/dist/databricks/infer.d.ts +6 -0
  35. package/dist/databricks/infer.js +638 -0
  36. package/dist/databricks/signatures.generated.d.ts +6 -0
  37. package/dist/databricks/signatures.generated.js +1745 -0
  38. package/dist/derived-dialects.js +19 -1
  39. package/dist/dialect-behavior/behavior.d.ts +26 -0
  40. package/dist/dialect-behavior/behavior.js +1 -0
  41. package/dist/dialect-behavior/carrier.d.ts +5 -0
  42. package/dist/dialect-behavior/carrier.js +5 -0
  43. package/dist/dialect-behavior/coerce-rules.d.ts +7 -0
  44. package/dist/dialect-behavior/coerce-rules.js +69 -0
  45. package/dist/dialect-behavior/public-fold.d.ts +6 -0
  46. package/dist/dialect-behavior/public-fold.js +9 -0
  47. package/dist/dialect-behavior/registry.d.ts +6 -0
  48. package/dist/dialect-behavior/registry.js +34 -0
  49. package/dist/dialect-symbols.js +22 -17
  50. package/dist/dialect.d.ts +2 -2
  51. package/dist/document/document.d.ts +1 -1
  52. package/dist/document/document.js +8 -7
  53. package/dist/duckdb/behavior.d.ts +2 -0
  54. package/dist/duckdb/behavior.js +21 -0
  55. package/dist/duckdb/fold.d.ts +8 -0
  56. package/dist/duckdb/fold.js +29 -0
  57. package/dist/duckdb/index.d.ts +7 -0
  58. package/dist/duckdb/index.js +10 -0
  59. package/dist/{infer/duckdb.d.ts → duckdb/infer.d.ts} +2 -2
  60. package/dist/{infer/duckdb.js → duckdb/infer.js} +4 -3
  61. package/dist/duckdb/lower.js +47 -15
  62. package/dist/duckdb/signatures.generated.d.ts +6 -0
  63. package/dist/duckdb/signatures.generated.js +1072 -0
  64. package/dist/generated/bigquery/GoogleSQLParser.js +0 -7060
  65. package/dist/generated/databricks/DatabricksParser.js +0 -4800
  66. package/dist/generated/duckdb/DuckdbParser.js +0 -9100
  67. package/dist/generated/minijinja/MinijinjaParser.js +0 -380
  68. package/dist/generated/mysql/MysqlLexer.js +7357 -0
  69. package/dist/generated/mysql/MysqlParser.js +78520 -0
  70. package/dist/generated/postgres/PostgresParser.js +0 -8530
  71. package/dist/generated/redshift/RedshiftParser.js +0 -10970
  72. package/dist/generated/snowflake/SnowflakeParser.js +0 -7320
  73. package/dist/generated/sqlite/SqliteLexer.js +945 -0
  74. package/dist/generated/sqlite/SqliteParser.js +14682 -0
  75. package/dist/generated/trino/TrinoParser.js +0 -3770
  76. package/dist/generated/tsql/TSqlParser.js +0 -8420
  77. package/dist/ident/fold.d.ts +24 -15
  78. package/dist/ident/fold.js +12 -145
  79. package/dist/index.d.ts +6 -2
  80. package/dist/index.js +14 -8
  81. package/dist/infer/functions.d.ts +22 -11
  82. package/dist/infer/functions.js +26 -888
  83. package/dist/infer/infer.js +16 -14
  84. package/dist/infer/nullability.js +3 -4
  85. package/dist/infer/types.d.ts +1 -1
  86. package/dist/infer/types.js +7 -7
  87. package/dist/ir/ir.d.ts +26 -17
  88. package/dist/ir/part-span.d.ts +16 -1
  89. package/dist/ir/part-span.js +38 -10
  90. package/dist/ir/span.js +0 -2
  91. package/dist/ir/walk.js +3 -3
  92. package/dist/lineage/hops.js +13 -10
  93. package/dist/lineage/lineage.js +10 -7
  94. package/dist/minijinja/apply-tags.d.ts +14 -7
  95. package/dist/minijinja/apply-tags.js +66 -121
  96. package/dist/minijinja/parse.js +6 -6
  97. package/dist/minijinja/tag-ast.d.ts +29 -36
  98. package/dist/minijinja/tag-ast.js +210 -90
  99. package/dist/mysql/behavior.d.ts +2 -0
  100. package/dist/mysql/behavior.js +21 -0
  101. package/dist/mysql/fold.d.ts +8 -0
  102. package/dist/mysql/fold.js +49 -0
  103. package/dist/mysql/index.d.ts +7 -0
  104. package/dist/mysql/index.js +10 -0
  105. package/dist/mysql/infer.d.ts +20 -0
  106. package/dist/mysql/infer.js +156 -0
  107. package/dist/mysql/lower.d.ts +13 -0
  108. package/dist/mysql/lower.js +1443 -0
  109. package/dist/mysql/parse.d.ts +10 -0
  110. package/dist/mysql/parse.js +70 -0
  111. package/dist/mysql/signatures.generated.d.ts +6 -0
  112. package/dist/mysql/signatures.generated.js +508 -0
  113. package/dist/postgres/behavior.d.ts +2 -0
  114. package/dist/postgres/behavior.js +19 -0
  115. package/dist/postgres/fold.d.ts +8 -0
  116. package/dist/postgres/fold.js +30 -0
  117. package/dist/postgres/index.d.ts +7 -0
  118. package/dist/postgres/index.js +10 -0
  119. package/dist/{infer/postgres.d.ts → postgres/infer.d.ts} +2 -2
  120. package/dist/{infer/postgres.js → postgres/infer.js} +4 -3
  121. package/dist/postgres/lower.js +2 -2
  122. package/dist/postgres/signatures.generated.d.ts +6 -0
  123. package/dist/postgres/signatures.generated.js +2973 -0
  124. package/dist/qualify/check-calls.js +80 -134
  125. package/dist/qualify/qualify.js +16 -14
  126. package/dist/qualify/schema-provider.js +2 -2
  127. package/dist/qualify/schema.js +3 -3
  128. package/dist/qualify/template-provider.d.ts +45 -12
  129. package/dist/qualify/template-provider.js +69 -38
  130. package/dist/redshift/behavior.d.ts +2 -0
  131. package/dist/redshift/behavior.js +19 -0
  132. package/dist/redshift/fold.d.ts +8 -0
  133. package/dist/redshift/fold.js +31 -0
  134. package/dist/redshift/index.d.ts +7 -0
  135. package/dist/redshift/index.js +10 -0
  136. package/dist/{infer/redshift.d.ts → redshift/infer.d.ts} +2 -2
  137. package/dist/{infer/redshift.js → redshift/infer.js} +4 -3
  138. package/dist/redshift/lower.js +2 -2
  139. package/dist/redshift/signatures.generated.d.ts +6 -0
  140. package/dist/redshift/signatures.generated.js +757 -0
  141. package/dist/references/references.js +17 -12
  142. package/dist/scope/like-pattern.d.ts +2 -0
  143. package/dist/scope/like-pattern.js +15 -0
  144. package/dist/scope/scope.d.ts +5 -5
  145. package/dist/scope/scope.js +48 -42
  146. package/dist/sema/resolve.js +17 -12
  147. package/dist/session.d.ts +2 -2
  148. package/dist/signature/signature.d.ts +14 -6
  149. package/dist/signature/signature.js +30 -22
  150. package/dist/signature/signatures.d.ts +14 -12
  151. package/dist/signature/signatures.js +42 -582
  152. package/dist/snowflake/behavior.d.ts +2 -0
  153. package/dist/snowflake/behavior.js +22 -0
  154. package/dist/snowflake/fold.d.ts +8 -0
  155. package/dist/snowflake/fold.js +25 -0
  156. package/dist/snowflake/index.d.ts +7 -0
  157. package/dist/snowflake/index.js +10 -0
  158. package/dist/{infer/snowflake.d.ts → snowflake/infer.d.ts} +2 -2
  159. package/dist/{infer/snowflake.js → snowflake/infer.js} +4 -3
  160. package/dist/snowflake/lower.js +59 -19
  161. package/dist/snowflake/signatures.generated.d.ts +6 -0
  162. package/dist/snowflake/signatures.generated.js +2080 -0
  163. package/dist/sqlite/behavior.d.ts +2 -0
  164. package/dist/sqlite/behavior.js +19 -0
  165. package/dist/sqlite/fold.d.ts +8 -0
  166. package/dist/sqlite/fold.js +41 -0
  167. package/dist/sqlite/index.d.ts +7 -0
  168. package/dist/sqlite/index.js +10 -0
  169. package/dist/sqlite/infer.d.ts +12 -0
  170. package/dist/sqlite/infer.js +122 -0
  171. package/dist/sqlite/lower.d.ts +11 -0
  172. package/dist/sqlite/lower.js +1093 -0
  173. package/dist/sqlite/parse.d.ts +10 -0
  174. package/dist/sqlite/parse.js +70 -0
  175. package/dist/sqlite/signatures.generated.d.ts +6 -0
  176. package/dist/sqlite/signatures.generated.js +277 -0
  177. package/dist/symbols/symbols.js +14 -12
  178. package/dist/token/classify.js +31 -0
  179. package/dist/token/tokenize.js +4 -0
  180. package/dist/trino/behavior.d.ts +2 -0
  181. package/dist/trino/behavior.js +21 -0
  182. package/dist/trino/fold.d.ts +8 -0
  183. package/dist/trino/fold.js +39 -0
  184. package/dist/trino/index.d.ts +7 -0
  185. package/dist/trino/index.js +10 -0
  186. package/dist/{infer/trino.d.ts → trino/infer.d.ts} +2 -2
  187. package/dist/{infer/trino.js → trino/infer.js} +4 -3
  188. package/dist/trino/lower.js +5 -5
  189. package/dist/trino/signatures.generated.d.ts +6 -0
  190. package/dist/trino/signatures.generated.js +968 -0
  191. package/dist/tsql/behavior.d.ts +2 -0
  192. package/dist/tsql/behavior.js +20 -0
  193. package/dist/tsql/fold.d.ts +8 -0
  194. package/dist/tsql/fold.js +34 -0
  195. package/dist/tsql/index.d.ts +7 -0
  196. package/dist/tsql/index.js +10 -0
  197. package/dist/tsql/infer.d.ts +16 -0
  198. package/dist/tsql/infer.js +289 -0
  199. package/dist/tsql/lower.js +4 -4
  200. package/dist/tsql/signatures.generated.d.ts +6 -0
  201. package/dist/tsql/signatures.generated.js +640 -0
  202. package/package.json +15 -11
  203. package/dist/generated/bigquery/GoogleSQLLexer.d.ts +0 -407
  204. package/dist/generated/bigquery/GoogleSQLParser.d.ts +0 -9558
  205. package/dist/generated/bigquery/GoogleSQLParserListener.d.ts +0 -7777
  206. package/dist/generated/bigquery/GoogleSQLParserListener.js +0 -7070
  207. package/dist/generated/databricks/DatabricksLexer.d.ts +0 -566
  208. package/dist/generated/databricks/DatabricksParser.d.ts +0 -7771
  209. package/dist/generated/databricks/DatabricksParserListener.d.ts +0 -5737
  210. package/dist/generated/databricks/DatabricksParserListener.js +0 -5256
  211. package/dist/generated/duckdb/DuckdbLexer.d.ts +0 -691
  212. package/dist/generated/duckdb/DuckdbParser.d.ts +0 -13932
  213. package/dist/generated/duckdb/DuckdbParserListener.d.ts +0 -10049
  214. package/dist/generated/duckdb/DuckdbParserListener.js +0 -9138
  215. package/dist/generated/minijinja/MinijinjaLexer.d.ts +0 -108
  216. package/dist/generated/minijinja/MinijinjaParser.d.ts +0 -604
  217. package/dist/generated/minijinja/MinijinjaParserListener.d.ts +0 -449
  218. package/dist/generated/minijinja/MinijinjaParserListener.js +0 -410
  219. package/dist/generated/postgres/PostgresLexer.d.ts +0 -663
  220. package/dist/generated/postgres/PostgresParser.d.ts +0 -12963
  221. package/dist/generated/postgres/PostgresParserListener.d.ts +0 -9408
  222. package/dist/generated/postgres/PostgresParserListener.js +0 -8554
  223. package/dist/generated/redshift/RedshiftLexer.d.ts +0 -954
  224. package/dist/generated/redshift/RedshiftParser.d.ts +0 -16939
  225. package/dist/generated/redshift/RedshiftParserListener.d.ts +0 -12092
  226. package/dist/generated/redshift/RedshiftParserListener.js +0 -10994
  227. package/dist/generated/snowflake/SnowflakeLexer.d.ts +0 -1046
  228. package/dist/generated/snowflake/SnowflakeParser.d.ts +0 -14196
  229. package/dist/generated/snowflake/SnowflakeParserListener.d.ts +0 -8063
  230. package/dist/generated/snowflake/SnowflakeParserListener.js +0 -7330
  231. package/dist/generated/trino/TrinoLexer.d.ts +0 -381
  232. package/dist/generated/trino/TrinoParser.d.ts +0 -5340
  233. package/dist/generated/trino/TrinoParserListener.d.ts +0 -4704
  234. package/dist/generated/trino/TrinoParserListener.js +0 -4326
  235. package/dist/generated/tsql/TSqlLexer.d.ts +0 -1278
  236. package/dist/generated/tsql/TSqlParser.d.ts +0 -17267
  237. package/dist/generated/tsql/TSqlParserListener.d.ts +0 -9697
  238. package/dist/generated/tsql/TSqlParserListener.js +0 -8854
  239. package/dist/infer/dialect.d.ts +0 -21
  240. package/dist/infer/dialect.js +0 -74
  241. package/dist/infer/literals.d.ts +0 -6
  242. package/dist/infer/literals.js +0 -44
  243. package/dist/signature/generated/tsql.d.ts +0 -3
  244. package/dist/signature/generated/tsql.js +0 -260
@@ -0,0 +1,10 @@
1
+ import type { ParseResult } from "../parse-result.js";
2
+ /** The CST rooted at `root` (a semicolon-separated batch of statements); see
3
+ * `ParseResult` for the full result shape. */
4
+ export type { ParseResult } from "../parse-result.js";
5
+ /**
6
+ * Lex + parse MySQL SQL (one statement or a `;`-separated batch). Two-stage parsing:
7
+ * try the fast SLL prediction mode first (bail on the first conflict), fall back to full LL
8
+ * only when SLL fails — same result LL alone would give, just faster on valid input.
9
+ */
10
+ export declare function parseMysql(sql: string): ParseResult;
@@ -0,0 +1,70 @@
1
+ import { BailErrorStrategy, CharStream, CommonTokenStream, PredictionMode, } from "antlr4ng";
2
+ import { MysqlLexer } from "../generated/mysql/MysqlLexer.js";
3
+ import { MysqlParser } from "../generated/mysql/MysqlParser.js";
4
+ import { makeErrorCollector } from "../parse-diagnostics.js";
5
+ import { mapTokens } from "../token/map.js";
6
+ /**
7
+ * Lex + parse MySQL SQL (one statement or a `;`-separated batch). Two-stage parsing:
8
+ * try the fast SLL prediction mode first (bail on the first conflict), fall back to full LL
9
+ * only when SLL fails — same result LL alone would give, just faster on valid input.
10
+ */
11
+ export function parseMysql(sql) {
12
+ const lexer = new MysqlLexer(CharStream.fromString(sql));
13
+ const tokens = new CommonTokenStream(lexer);
14
+ const parser = new MysqlParser(tokens);
15
+ const sim = parser.interpreter;
16
+ const collector = makeErrorCollector();
17
+ attachErrorCounter(lexer, parser, collector.listener);
18
+ // Force a full lex now so every lexer error fires eagerly (CommonTokenStream lexes lazily, and the
19
+ // SLL→LL retry reseeks the SAME buffered tokens without re-lexing — so lexer errors are NOT
20
+ // re-emitted on the LL path). Snapshot them so they can be re-pushed after the retry's
21
+ // collector.reset(), which clears parser AND lexer diagnostics.
22
+ tokens.fill();
23
+ const lexDiags = [...collector.diagnostics];
24
+ // The token list is stable once filled — the SLL→LL retry reseeks the same buffer, never re-lexes.
25
+ // Projecting it to neutral `Token`s is deferred behind a lazy getter: most consumers (the corpus
26
+ // gates especially) never read `.tokens`, so they should not pay for the mapping. `fill()` above
27
+ // still runs eagerly — it surfaces lexer diagnostics — but the projection maps once, on first read.
28
+ const withTokens = (base) => {
29
+ let cached;
30
+ return Object.defineProperty(base, "tokens", {
31
+ get: () => (cached ??= mapTokens(lexer, tokens.getTokens(), "mysql")),
32
+ enumerable: true,
33
+ configurable: true,
34
+ });
35
+ };
36
+ const defaultErrorHandler = parser.errorHandler;
37
+ parser.errorHandler = new BailErrorStrategy();
38
+ sim.predictionMode = PredictionMode.SLL;
39
+ try {
40
+ const tree = parser.root();
41
+ return withTokens({
42
+ tree,
43
+ errors: collector.diagnostics.length,
44
+ diagnostics: collector.diagnostics,
45
+ sllFallback: false,
46
+ });
47
+ }
48
+ catch {
49
+ tokens.seek(0);
50
+ parser.reset();
51
+ parser.errorHandler = defaultErrorHandler;
52
+ sim.predictionMode = PredictionMode.LL;
53
+ collector.reset(); // discount anything the SLL attempt may have reported
54
+ collector.diagnostics.push(...lexDiags); // restore lexer diagnostics (not re-emitted on the LL path)
55
+ attachErrorCounter(lexer, parser, collector.listener);
56
+ const tree = parser.root();
57
+ return withTokens({
58
+ tree,
59
+ errors: collector.diagnostics.length,
60
+ diagnostics: collector.diagnostics,
61
+ sllFallback: true,
62
+ });
63
+ }
64
+ }
65
+ function attachErrorCounter(lexer, parser, listener) {
66
+ lexer.removeErrorListeners();
67
+ lexer.addErrorListener(listener);
68
+ parser.removeErrorListeners();
69
+ parser.addErrorListener(listener);
70
+ }
@@ -0,0 +1,6 @@
1
+ import type { FnSignature } from "../signature/signatures.js";
2
+ /** The merged function-signature table for mysql: curated overrides folded over the harvested
3
+ * doc-derived long tail (overrides win by key, replacing the whole overload set), keyed by
4
+ * lowercased name. Each name maps to an ORDERED overload set - a name with one documented shape
5
+ * is a one-element array. `origin` says which layer produced the set. */
6
+ export declare const MYSQL_SIGNATURES: Record<string, FnSignature[]>;
@@ -0,0 +1,508 @@
1
+ /** The merged function-signature table for mysql: curated overrides folded over the harvested
2
+ * doc-derived long tail (overrides win by key, replacing the whole overload set), keyed by
3
+ * lowercased name. Each name maps to an ORDERED overload set - a name with one documented shape
4
+ * is a one-element array. `origin` says which layer produced the set. */
5
+ export const MYSQL_SIGNATURES = {
6
+ abs: [{ name: "ABS", params: [{ name: "X" }], origin: "harvested" }], // mathematical-functions/1.txt
7
+ acos: [{ name: "ACOS", params: [{ name: "X" }], origin: "harvested" }], // mathematical-functions/2.txt
8
+ adddate: [{ name: "ADDDATE", params: [{ name: "date" }, { name: "days" }], origin: "harvested" }], // date-and-time-functions/1.txt
9
+ addtime: [{ name: "ADDTIME", params: [{ name: "expr1" }, { name: "expr2" }], origin: "harvested" }], // date-and-time-functions/2.txt
10
+ any_value: [{ name: "ANY_VALUE", params: [{ name: "arg" }], origin: "harvested" }], // miscellaneous-functions/1.txt
11
+ ascii: [{ name: "ASCII", params: [{ name: "str" }], origin: "harvested" }], // string-functions/1.txt
12
+ asin: [{ name: "ASIN", params: [{ name: "X" }], origin: "harvested" }], // mathematical-functions/3.txt
13
+ atan: [
14
+ { name: "ATAN", params: [{ name: "Y" }, { name: "X" }], origin: "harvested" },
15
+ { name: "ATAN", params: [{ name: "X" }], origin: "harvested" },
16
+ ], // mathematical-functions/5.txt, mathematical-functions/4.txt
17
+ atan2: [{ name: "ATAN2", params: [{ name: "Y" }, { name: "X" }], origin: "harvested" }], // mathematical-functions/5.txt
18
+ avg: [{ name: "AVG", params: [{ name: "expr" }], origin: "harvested" }], // aggregate-functions/1.txt
19
+ benchmark: [{ name: "BENCHMARK", params: [{ name: "count" }, { name: "expr" }], origin: "harvested" }], // information-functions/1.txt
20
+ bin: [{ name: "BIN", params: [{ name: "N" }], origin: "harvested" }], // string-functions/2.txt
21
+ bin_to_uuid: [
22
+ {
23
+ name: "BIN_TO_UUID",
24
+ params: [{ name: "binary_uuid" }, { name: "swap_flag", optional: true }],
25
+ origin: "harvested",
26
+ },
27
+ ], // miscellaneous-functions/2.txt
28
+ bit_and: [{ name: "BIT_AND", params: [{ name: "expr" }], origin: "harvested" }], // aggregate-functions/2.txt
29
+ bit_count: [{ name: "BIT_COUNT", params: [{ name: "N" }], origin: "harvested" }], // bit-functions/7.txt
30
+ bit_length: [{ name: "BIT_LENGTH", params: [{ name: "str" }], origin: "harvested" }], // string-functions/3.txt
31
+ bit_or: [{ name: "BIT_OR", params: [{ name: "expr" }], origin: "harvested" }], // aggregate-functions/3.txt
32
+ bit_xor: [{ name: "BIT_XOR", params: [{ name: "expr" }], origin: "harvested" }], // aggregate-functions/4.txt
33
+ cast: [{ name: "CAST", params: [{ name: "expr" }, { name: "type" }], origin: "curated" }], // curated: CAST(expr AS type)
34
+ ceil: [{ name: "CEIL", params: [{ name: "X" }], origin: "harvested" }], // mathematical-functions/6.txt
35
+ ceiling: [{ name: "CEILING", params: [{ name: "X" }], origin: "harvested" }], // mathematical-functions/7.txt
36
+ char_length: [{ name: "CHAR_LENGTH", params: [{ name: "str" }], origin: "harvested" }], // string-functions/5.txt
37
+ character_length: [{ name: "CHARACTER_LENGTH", params: [{ name: "str" }], origin: "harvested" }], // string-functions/6.txt
38
+ charset: [{ name: "CHARSET", params: [{ name: "str" }], origin: "harvested" }], // information-functions/2.txt
39
+ coalesce: [{ name: "COALESCE", params: [{ name: "value" }], variadic: true, origin: "harvested" }], // comparison-operators/10.txt
40
+ coercibility: [{ name: "COERCIBILITY", params: [{ name: "str" }], origin: "harvested" }], // information-functions/3.txt
41
+ collation: [{ name: "COLLATION", params: [{ name: "str" }], origin: "harvested" }], // information-functions/4.txt
42
+ compress: [{ name: "COMPRESS", params: [{ name: "string_to_compress" }], origin: "harvested" }], // encryption-functions/3.txt
43
+ concat: [{ name: "CONCAT", params: [{ name: "str1" }, { name: "str2" }], variadic: true, origin: "harvested" }], // string-functions/7.txt
44
+ concat_ws: [
45
+ {
46
+ name: "CONCAT_WS",
47
+ params: [{ name: "separator" }, { name: "str1" }, { name: "str2" }],
48
+ variadic: true,
49
+ origin: "harvested",
50
+ },
51
+ ], // string-functions/8.txt
52
+ connection_id: [{ name: "CONNECTION_ID", params: [], origin: "harvested" }], // information-functions/5.txt
53
+ conv: [{ name: "CONV", params: [{ name: "N" }, { name: "from_base" }, { name: "to_base" }], origin: "harvested" }], // mathematical-functions/8.txt
54
+ convert: [{ name: "CONVERT", params: [{ name: "expr" }, { name: "type" }], origin: "harvested" }], // cast-functions/3.txt
55
+ convert_tz: [
56
+ { name: "CONVERT_TZ", params: [{ name: "dt" }, { name: "from_tz" }, { name: "to_tz" }], origin: "harvested" },
57
+ ], // date-and-time-functions/3.txt
58
+ cos: [{ name: "COS", params: [{ name: "X" }], origin: "harvested" }], // mathematical-functions/9.txt
59
+ cot: [{ name: "COT", params: [{ name: "X" }], origin: "harvested" }], // mathematical-functions/10.txt
60
+ count: [{ name: "COUNT", params: [{ name: "expr" }], origin: "harvested" }], // aggregate-functions/5.txt
61
+ crc32: [{ name: "CRC32", params: [{ name: "expr" }], origin: "harvested" }], // mathematical-functions/11.txt
62
+ cume_dist: [{ name: "CUME_DIST", params: [], origin: "harvested" }], // window-function-descriptions/1.txt
63
+ curdate: [{ name: "CURDATE", params: [], origin: "harvested" }], // date-and-time-functions/4.txt
64
+ current_date: [{ name: "CURRENT_DATE", params: [], origin: "harvested" }], // date-and-time-functions/5.txt
65
+ current_role: [{ name: "CURRENT_ROLE", params: [], origin: "harvested" }], // information-functions/6.txt
66
+ current_time: [{ name: "CURRENT_TIME", params: [{ name: "fsp", optional: true }], origin: "harvested" }], // date-and-time-functions/6.txt
67
+ current_timestamp: [{ name: "CURRENT_TIMESTAMP", params: [{ name: "fsp", optional: true }], origin: "harvested" }], // date-and-time-functions/7.txt
68
+ current_user: [{ name: "CURRENT_USER", params: [], origin: "harvested" }], // information-functions/7.txt
69
+ curtime: [{ name: "CURTIME", params: [{ name: "fsp", optional: true }], origin: "harvested" }], // date-and-time-functions/8.txt
70
+ database: [{ name: "DATABASE", params: [], origin: "harvested" }], // information-functions/8.txt
71
+ date: [{ name: "DATE", params: [{ name: "expr" }], origin: "harvested" }], // date-and-time-functions/9.txt
72
+ date_add: [
73
+ {
74
+ name: "DATE_ADD",
75
+ params: [
76
+ { name: "date", type: "date" },
77
+ { name: "expr", type: "interval" },
78
+ ],
79
+ origin: "curated",
80
+ },
81
+ ], // curated: DATE_ADD(date, INTERVAL expr unit)
82
+ date_format: [{ name: "DATE_FORMAT", params: [{ name: "date" }, { name: "format" }], origin: "harvested" }], // date-and-time-functions/12.txt
83
+ date_sub: [
84
+ {
85
+ name: "DATE_SUB",
86
+ params: [
87
+ { name: "date", type: "date" },
88
+ { name: "expr", type: "interval" },
89
+ ],
90
+ origin: "curated",
91
+ },
92
+ ], // curated: DATE_SUB(date, INTERVAL expr unit)
93
+ datediff: [{ name: "DATEDIFF", params: [{ name: "expr1" }, { name: "expr2" }], origin: "harvested" }], // date-and-time-functions/10.txt
94
+ day: [{ name: "DAY", params: [{ name: "date" }], origin: "harvested" }], // date-and-time-functions/14.txt
95
+ dayname: [{ name: "DAYNAME", params: [{ name: "date" }], origin: "harvested" }], // date-and-time-functions/15.txt
96
+ dayofmonth: [{ name: "DAYOFMONTH", params: [{ name: "date" }], origin: "harvested" }], // date-and-time-functions/16.txt
97
+ dayofweek: [{ name: "DAYOFWEEK", params: [{ name: "date" }], origin: "harvested" }], // date-and-time-functions/17.txt
98
+ dayofyear: [{ name: "DAYOFYEAR", params: [{ name: "date" }], origin: "harvested" }], // date-and-time-functions/18.txt
99
+ default: [{ name: "DEFAULT", params: [{ name: "col_name" }], origin: "harvested" }], // miscellaneous-functions/3.txt
100
+ degrees: [{ name: "DEGREES", params: [{ name: "X" }], origin: "harvested" }], // mathematical-functions/12.txt
101
+ dense_rank: [{ name: "DENSE_RANK", params: [], origin: "harvested" }], // window-function-descriptions/2.txt
102
+ elt: [
103
+ {
104
+ name: "ELT",
105
+ params: [{ name: "N" }, { name: "str1" }, { name: "str2" }, { name: "str3" }],
106
+ variadic: true,
107
+ origin: "harvested",
108
+ },
109
+ ], // string-functions/9.txt
110
+ exp: [{ name: "EXP", params: [{ name: "X" }], origin: "harvested" }], // mathematical-functions/13.txt
111
+ export_set: [
112
+ {
113
+ name: "EXPORT_SET",
114
+ params: [
115
+ { name: "bits" },
116
+ { name: "on" },
117
+ { name: "off" },
118
+ { name: "separator", optional: true },
119
+ { name: "number_of_bits", optional: true },
120
+ ],
121
+ origin: "harvested",
122
+ },
123
+ ], // string-functions/10.txt
124
+ field: [
125
+ {
126
+ name: "FIELD",
127
+ params: [{ name: "str" }, { name: "str1" }, { name: "str2" }, { name: "str3" }],
128
+ variadic: true,
129
+ origin: "harvested",
130
+ },
131
+ ], // string-functions/11.txt
132
+ find_in_set: [{ name: "FIND_IN_SET", params: [{ name: "str" }, { name: "strlist" }], origin: "harvested" }], // string-functions/12.txt
133
+ first_value: [{ name: "FIRST_VALUE", params: [{ name: "expr" }], origin: "harvested" }], // window-function-descriptions/3.txt
134
+ floor: [{ name: "FLOOR", params: [{ name: "X" }], origin: "harvested" }], // mathematical-functions/14.txt
135
+ format: [
136
+ {
137
+ name: "FORMAT",
138
+ params: [{ name: "X" }, { name: "D" }, { name: "locale", optional: true }],
139
+ origin: "harvested",
140
+ },
141
+ ], // string-functions/13.txt
142
+ found_rows: [{ name: "FOUND_ROWS", params: [], origin: "harvested" }], // information-functions/9.txt
143
+ from_base64: [{ name: "FROM_BASE64", params: [{ name: "str" }], origin: "harvested" }], // string-functions/14.txt
144
+ from_days: [{ name: "FROM_DAYS", params: [{ name: "N" }], origin: "harvested" }], // date-and-time-functions/20.txt
145
+ from_unixtime: [
146
+ {
147
+ name: "FROM_UNIXTIME",
148
+ params: [{ name: "unix_timestamp" }, { name: "format", optional: true }],
149
+ origin: "harvested",
150
+ },
151
+ ], // date-and-time-functions/21.txt
152
+ get_lock: [{ name: "GET_LOCK", params: [{ name: "str" }, { name: "timeout" }], origin: "harvested" }], // locking-functions/1.txt
153
+ greatest: [
154
+ { name: "GREATEST", params: [{ name: "value1" }, { name: "value2" }], variadic: true, origin: "harvested" },
155
+ ], // comparison-operators/13.txt
156
+ group_concat: [{ name: "GROUP_CONCAT", params: [{ name: "expr" }], origin: "harvested" }], // aggregate-functions/7.txt
157
+ hex: [
158
+ { name: "HEX", params: [{ name: "str" }], origin: "harvested" },
159
+ { name: "HEX", params: [{ name: "N" }], origin: "harvested" },
160
+ ], // string-functions/15.txt
161
+ hour: [{ name: "HOUR", params: [{ name: "time" }], origin: "harvested" }], // date-and-time-functions/23.txt
162
+ icu_version: [{ name: "ICU_VERSION", params: [], origin: "harvested" }], // information-functions/10.txt
163
+ if: [{ name: "IF", params: [{ name: "expr1" }, { name: "expr2" }, { name: "expr3" }], origin: "harvested" }], // flow-control-functions/2.txt
164
+ ifnull: [{ name: "IFNULL", params: [{ name: "expr1" }, { name: "expr2" }], origin: "harvested" }], // flow-control-functions/3.txt
165
+ inet6_aton: [{ name: "INET6_ATON", params: [{ name: "expr" }], origin: "harvested" }], // miscellaneous-functions/7.txt
166
+ inet6_ntoa: [{ name: "INET6_NTOA", params: [{ name: "expr" }], origin: "harvested" }], // miscellaneous-functions/8.txt
167
+ inet_aton: [{ name: "INET_ATON", params: [{ name: "expr" }], origin: "harvested" }], // miscellaneous-functions/5.txt
168
+ inet_ntoa: [{ name: "INET_NTOA", params: [{ name: "expr" }], origin: "harvested" }], // miscellaneous-functions/6.txt
169
+ insert: [
170
+ {
171
+ name: "INSERT",
172
+ params: [{ name: "str" }, { name: "pos" }, { name: "len" }, { name: "newstr" }],
173
+ origin: "harvested",
174
+ },
175
+ ], // string-functions/16.txt
176
+ instr: [{ name: "INSTR", params: [{ name: "str" }, { name: "substr" }], origin: "harvested" }], // string-functions/17.txt
177
+ interval: [
178
+ {
179
+ name: "INTERVAL",
180
+ params: [{ name: "N" }, { name: "N1" }, { name: "N2" }, { name: "N3" }],
181
+ variadic: true,
182
+ origin: "harvested",
183
+ },
184
+ ], // comparison-operators/16.txt
185
+ is_free_lock: [{ name: "IS_FREE_LOCK", params: [{ name: "str" }], origin: "harvested" }], // locking-functions/2.txt
186
+ is_ipv4: [{ name: "IS_IPV4", params: [{ name: "expr" }], origin: "harvested" }], // miscellaneous-functions/9.txt
187
+ is_ipv4_compat: [{ name: "IS_IPV4_COMPAT", params: [{ name: "expr" }], origin: "harvested" }], // miscellaneous-functions/10.txt
188
+ is_ipv4_mapped: [{ name: "IS_IPV4_MAPPED", params: [{ name: "expr" }], origin: "harvested" }], // miscellaneous-functions/11.txt
189
+ is_ipv6: [{ name: "IS_IPV6", params: [{ name: "expr" }], origin: "harvested" }], // miscellaneous-functions/12.txt
190
+ is_used_lock: [{ name: "IS_USED_LOCK", params: [{ name: "str" }], origin: "harvested" }], // locking-functions/3.txt
191
+ is_uuid: [{ name: "IS_UUID", params: [{ name: "string_uuid" }], origin: "harvested" }], // miscellaneous-functions/13.txt
192
+ isnull: [{ name: "ISNULL", params: [{ name: "expr" }], origin: "harvested" }], // comparison-operators/21.txt
193
+ json_arrayagg: [{ name: "JSON_ARRAYAGG", params: [{ name: "col_or_expr" }], origin: "harvested" }], // aggregate-functions/8.txt
194
+ json_contains: [
195
+ {
196
+ name: "JSON_CONTAINS",
197
+ params: [{ name: "target" }, { name: "candidate" }, { name: "path", optional: true }],
198
+ origin: "harvested",
199
+ },
200
+ ], // json-search-functions/1.txt
201
+ json_depth: [{ name: "JSON_DEPTH", params: [{ name: "json_doc" }], origin: "harvested" }], // json-attribute-functions/1.txt
202
+ json_extract: [
203
+ {
204
+ name: "JSON_EXTRACT",
205
+ params: [
206
+ { name: "json_doc", type: "json" },
207
+ { name: "path", type: "string" },
208
+ ],
209
+ variadic: true,
210
+ origin: "curated",
211
+ },
212
+ ], // curated: JSON_EXTRACT(json_doc,path[,path]...)
213
+ json_keys: [
214
+ { name: "JSON_KEYS", params: [{ name: "json_doc" }, { name: "path", optional: true }], origin: "harvested" },
215
+ ], // json-search-functions/6.txt
216
+ json_length: [
217
+ { name: "JSON_LENGTH", params: [{ name: "json_doc" }, { name: "path", optional: true }], origin: "harvested" },
218
+ ], // json-attribute-functions/2.txt
219
+ json_objectagg: [{ name: "JSON_OBJECTAGG", params: [{ name: "key" }, { name: "value" }], origin: "harvested" }], // aggregate-functions/9.txt
220
+ json_overlaps: [
221
+ { name: "JSON_OVERLAPS", params: [{ name: "json_doc1" }, { name: "json_doc2" }], origin: "harvested" },
222
+ ], // json-search-functions/7.txt
223
+ json_pretty: [{ name: "JSON_PRETTY", params: [{ name: "json_val" }], origin: "harvested" }], // json-utility-functions/1.txt
224
+ json_quote: [{ name: "JSON_QUOTE", params: [{ name: "string" }], origin: "harvested" }], // json-creation-functions/3.txt
225
+ json_schema_valid: [
226
+ { name: "JSON_SCHEMA_VALID", params: [{ name: "schema" }, { name: "document" }], origin: "harvested" },
227
+ ], // json-validation-functions/1.txt
228
+ json_schema_validation_report: [
229
+ {
230
+ name: "JSON_SCHEMA_VALIDATION_REPORT",
231
+ params: [{ name: "schema" }, { name: "document" }],
232
+ origin: "harvested",
233
+ },
234
+ ], // json-validation-functions/2.txt
235
+ json_storage_free: [{ name: "JSON_STORAGE_FREE", params: [{ name: "json_val" }], origin: "harvested" }], // json-utility-functions/2.txt
236
+ json_storage_size: [{ name: "JSON_STORAGE_SIZE", params: [{ name: "json_val" }], origin: "harvested" }], // json-utility-functions/3.txt
237
+ json_type: [{ name: "JSON_TYPE", params: [{ name: "json_val" }], origin: "harvested" }], // json-attribute-functions/3.txt
238
+ json_unquote: [{ name: "JSON_UNQUOTE", params: [{ name: "json_val" }], origin: "harvested" }], // json-modification-functions/10.txt
239
+ json_valid: [{ name: "JSON_VALID", params: [{ name: "val" }], origin: "harvested" }], // json-attribute-functions/4.txt
240
+ json_value: [{ name: "JSON_VALUE", params: [{ name: "json_doc" }, { name: "path" }], origin: "harvested" }], // json-search-functions/9.txt
241
+ lag: [
242
+ {
243
+ name: "LAG",
244
+ params: [{ name: "expr" }, { name: "N", optional: true }, { name: "default", optional: true }],
245
+ origin: "harvested",
246
+ },
247
+ ], // window-function-descriptions/4.txt
248
+ last_day: [{ name: "LAST_DAY", params: [{ name: "date" }], origin: "harvested" }], // date-and-time-functions/24.txt
249
+ last_insert_id: [{ name: "LAST_INSERT_ID", params: [{ name: "expr", optional: true }], origin: "harvested" }], // information-functions/11.txt
250
+ last_value: [{ name: "LAST_VALUE", params: [{ name: "expr" }], origin: "harvested" }], // window-function-descriptions/5.txt
251
+ lcase: [{ name: "LCASE", params: [{ name: "str" }], origin: "harvested" }], // string-functions/18.txt
252
+ lead: [
253
+ {
254
+ name: "LEAD",
255
+ params: [{ name: "expr" }, { name: "N", optional: true }, { name: "default", optional: true }],
256
+ origin: "harvested",
257
+ },
258
+ ], // window-function-descriptions/6.txt
259
+ least: [{ name: "LEAST", params: [{ name: "value1" }, { name: "value2" }], variadic: true, origin: "harvested" }], // comparison-operators/22.txt
260
+ left: [{ name: "LEFT", params: [{ name: "str" }, { name: "len" }], origin: "harvested" }], // string-functions/19.txt
261
+ length: [{ name: "LENGTH", params: [{ name: "str" }], origin: "harvested" }], // string-functions/20.txt
262
+ ln: [{ name: "LN", params: [{ name: "X" }], origin: "harvested" }], // mathematical-functions/15.txt
263
+ load_file: [{ name: "LOAD_FILE", params: [{ name: "file_name" }], origin: "harvested" }], // string-functions/21.txt
264
+ localtime: [{ name: "LOCALTIME", params: [{ name: "fsp", optional: true }], origin: "harvested" }], // date-and-time-functions/25.txt
265
+ localtimestamp: [{ name: "LOCALTIMESTAMP", params: [{ name: "fsp", optional: true }], origin: "harvested" }], // date-and-time-functions/26.txt
266
+ locate: [
267
+ {
268
+ name: "LOCATE",
269
+ params: [{ name: "substr" }, { name: "str" }, { name: "pos", optional: true }],
270
+ origin: "harvested",
271
+ },
272
+ ], // string-functions/22.txt
273
+ log: [
274
+ { name: "LOG", params: [{ name: "B" }, { name: "X" }], origin: "harvested" },
275
+ { name: "LOG", params: [{ name: "X" }], origin: "harvested" },
276
+ ], // mathematical-functions/16.txt
277
+ log10: [{ name: "LOG10", params: [{ name: "X" }], origin: "harvested" }], // mathematical-functions/18.txt
278
+ log2: [{ name: "LOG2", params: [{ name: "X" }], origin: "harvested" }], // mathematical-functions/17.txt
279
+ lower: [{ name: "LOWER", params: [{ name: "str" }], origin: "harvested" }], // string-functions/23.txt
280
+ lpad: [{ name: "LPAD", params: [{ name: "str" }, { name: "len" }, { name: "padstr" }], origin: "harvested" }], // string-functions/24.txt
281
+ ltrim: [{ name: "LTRIM", params: [{ name: "str" }], origin: "harvested" }], // string-functions/25.txt
282
+ make_set: [
283
+ {
284
+ name: "MAKE_SET",
285
+ params: [{ name: "bits" }, { name: "str1" }, { name: "str2" }],
286
+ variadic: true,
287
+ origin: "harvested",
288
+ },
289
+ ], // string-functions/26.txt
290
+ makedate: [{ name: "MAKEDATE", params: [{ name: "year" }, { name: "dayofyear" }], origin: "harvested" }], // date-and-time-functions/27.txt
291
+ maketime: [
292
+ { name: "MAKETIME", params: [{ name: "hour" }, { name: "minute" }, { name: "second" }], origin: "harvested" },
293
+ ], // date-and-time-functions/28.txt
294
+ max: [{ name: "MAX", params: [{ name: "expr" }], origin: "harvested" }], // aggregate-functions/10.txt
295
+ md5: [{ name: "MD5", params: [{ name: "str" }], origin: "harvested" }], // encryption-functions/4.txt
296
+ microsecond: [{ name: "MICROSECOND", params: [{ name: "expr" }], origin: "harvested" }], // date-and-time-functions/29.txt
297
+ mid: [
298
+ {
299
+ name: "MID",
300
+ params: [{ name: "str" }, { name: "pos" }, { name: "len", optional: true }],
301
+ origin: "harvested",
302
+ },
303
+ ], // string-functions/27.txt
304
+ min: [{ name: "MIN", params: [{ name: "expr" }], origin: "harvested" }], // aggregate-functions/11.txt
305
+ minute: [{ name: "MINUTE", params: [{ name: "time" }], origin: "harvested" }], // date-and-time-functions/30.txt
306
+ mod: [{ name: "MOD", params: [{ name: "N" }, { name: "M" }], origin: "harvested" }], // mathematical-functions/19.txt
307
+ month: [{ name: "MONTH", params: [{ name: "date" }], origin: "harvested" }], // date-and-time-functions/31.txt
308
+ monthname: [{ name: "MONTHNAME", params: [{ name: "date" }], origin: "harvested" }], // date-and-time-functions/32.txt
309
+ name_const: [{ name: "NAME_CONST", params: [{ name: "name" }, { name: "value" }], origin: "harvested" }], // miscellaneous-functions/14.txt
310
+ now: [{ name: "NOW", params: [{ name: "fsp", optional: true }], origin: "harvested" }], // date-and-time-functions/33.txt
311
+ nth_value: [{ name: "NTH_VALUE", params: [{ name: "expr" }, { name: "N" }], origin: "harvested" }], // window-function-descriptions/7.txt
312
+ ntile: [{ name: "NTILE", params: [{ name: "N" }], origin: "harvested" }], // window-function-descriptions/8.txt
313
+ nullif: [{ name: "NULLIF", params: [{ name: "expr1" }, { name: "expr2" }], origin: "harvested" }], // flow-control-functions/4.txt
314
+ oct: [{ name: "OCT", params: [{ name: "N" }], origin: "harvested" }], // string-functions/28.txt
315
+ octet_length: [{ name: "OCTET_LENGTH", params: [{ name: "str" }], origin: "harvested" }], // string-functions/29.txt
316
+ ord: [{ name: "ORD", params: [{ name: "str" }], origin: "harvested" }], // string-functions/30.txt
317
+ percent_rank: [{ name: "PERCENT_RANK", params: [], origin: "harvested" }], // window-function-descriptions/9.txt
318
+ period_add: [{ name: "PERIOD_ADD", params: [{ name: "P" }, { name: "N" }], origin: "harvested" }], // date-and-time-functions/34.txt
319
+ period_diff: [{ name: "PERIOD_DIFF", params: [{ name: "P1" }, { name: "P2" }], origin: "harvested" }], // date-and-time-functions/35.txt
320
+ pi: [{ name: "PI", params: [], origin: "harvested" }], // mathematical-functions/20.txt
321
+ pow: [{ name: "POW", params: [{ name: "X" }, { name: "Y" }], origin: "harvested" }], // mathematical-functions/21.txt
322
+ power: [{ name: "POWER", params: [{ name: "X" }, { name: "Y" }], origin: "harvested" }], // mathematical-functions/22.txt
323
+ quarter: [{ name: "QUARTER", params: [{ name: "date" }], origin: "harvested" }], // date-and-time-functions/36.txt
324
+ quote: [{ name: "QUOTE", params: [{ name: "str" }], origin: "harvested" }], // string-functions/32.txt
325
+ radians: [{ name: "RADIANS", params: [{ name: "X" }], origin: "harvested" }], // mathematical-functions/23.txt
326
+ rand: [{ name: "RAND", params: [{ name: "N", optional: true }], origin: "harvested" }], // mathematical-functions/24.txt
327
+ random_bytes: [{ name: "RANDOM_BYTES", params: [{ name: "len" }], origin: "harvested" }], // encryption-functions/5.txt
328
+ rank: [{ name: "RANK", params: [], origin: "harvested" }], // window-function-descriptions/10.txt
329
+ regexp_instr: [
330
+ {
331
+ name: "REGEXP_INSTR",
332
+ params: [
333
+ { name: "expr" },
334
+ { name: "pat" },
335
+ { name: "pos", optional: true },
336
+ { name: "occurrence", optional: true },
337
+ { name: "return_option", optional: true },
338
+ { name: "match_type", optional: true },
339
+ ],
340
+ origin: "harvested",
341
+ },
342
+ ], // regexp/3.txt
343
+ regexp_like: [
344
+ {
345
+ name: "REGEXP_LIKE",
346
+ params: [{ name: "expr" }, { name: "pat" }, { name: "match_type", optional: true }],
347
+ origin: "harvested",
348
+ },
349
+ ], // regexp/4.txt
350
+ regexp_replace: [
351
+ {
352
+ name: "REGEXP_REPLACE",
353
+ params: [
354
+ { name: "expr" },
355
+ { name: "pat" },
356
+ { name: "repl" },
357
+ { name: "pos", optional: true },
358
+ { name: "occurrence", optional: true },
359
+ { name: "match_type", optional: true },
360
+ ],
361
+ origin: "harvested",
362
+ },
363
+ ], // regexp/5.txt
364
+ regexp_substr: [
365
+ {
366
+ name: "REGEXP_SUBSTR",
367
+ params: [
368
+ { name: "expr" },
369
+ { name: "pat" },
370
+ { name: "pos", optional: true },
371
+ { name: "occurrence", optional: true },
372
+ { name: "match_type", optional: true },
373
+ ],
374
+ origin: "harvested",
375
+ },
376
+ ], // regexp/6.txt
377
+ release_all_locks: [{ name: "RELEASE_ALL_LOCKS", params: [], origin: "harvested" }], // locking-functions/4.txt
378
+ release_lock: [{ name: "RELEASE_LOCK", params: [{ name: "str" }], origin: "harvested" }], // locking-functions/5.txt
379
+ repeat: [{ name: "REPEAT", params: [{ name: "str" }, { name: "count" }], origin: "harvested" }], // string-functions/33.txt
380
+ replace: [
381
+ { name: "REPLACE", params: [{ name: "str" }, { name: "from_str" }, { name: "to_str" }], origin: "harvested" },
382
+ ], // string-functions/34.txt
383
+ reverse: [{ name: "REVERSE", params: [{ name: "str" }], origin: "harvested" }], // string-functions/35.txt
384
+ right: [{ name: "RIGHT", params: [{ name: "str" }, { name: "len" }], origin: "harvested" }], // string-functions/36.txt
385
+ roles_graphml: [{ name: "ROLES_GRAPHML", params: [], origin: "harvested" }], // information-functions/12.txt
386
+ round: [{ name: "ROUND", params: [{ name: "X" }, { name: "D", optional: true }], origin: "harvested" }], // mathematical-functions/25.txt
387
+ row_count: [{ name: "ROW_COUNT", params: [], origin: "harvested" }], // information-functions/13.txt
388
+ row_number: [{ name: "ROW_NUMBER", params: [], origin: "harvested" }], // window-function-descriptions/11.txt
389
+ rpad: [{ name: "RPAD", params: [{ name: "str" }, { name: "len" }, { name: "padstr" }], origin: "harvested" }], // string-functions/37.txt
390
+ rtrim: [{ name: "RTRIM", params: [{ name: "str" }], origin: "harvested" }], // string-functions/38.txt
391
+ schema: [{ name: "SCHEMA", params: [], origin: "harvested" }], // information-functions/14.txt
392
+ sec_to_time: [{ name: "SEC_TO_TIME", params: [{ name: "seconds" }], origin: "harvested" }], // date-and-time-functions/38.txt
393
+ second: [{ name: "SECOND", params: [{ name: "time" }], origin: "harvested" }], // date-and-time-functions/37.txt
394
+ session_user: [{ name: "SESSION_USER", params: [], origin: "harvested" }], // information-functions/15.txt
395
+ sha: [{ name: "SHA", params: [{ name: "str" }], origin: "harvested" }], // encryption-functions/6.txt
396
+ sha1: [{ name: "SHA1", params: [{ name: "str" }], origin: "harvested" }], // encryption-functions/6.txt
397
+ sha2: [{ name: "SHA2", params: [{ name: "str" }, { name: "hash_length" }], origin: "harvested" }], // encryption-functions/7.txt
398
+ sign: [{ name: "SIGN", params: [{ name: "X" }], origin: "harvested" }], // mathematical-functions/26.txt
399
+ sin: [{ name: "SIN", params: [{ name: "X" }], origin: "harvested" }], // mathematical-functions/27.txt
400
+ sleep: [{ name: "SLEEP", params: [{ name: "duration" }], origin: "harvested" }], // miscellaneous-functions/15.txt
401
+ soundex: [{ name: "SOUNDEX", params: [{ name: "str" }], origin: "harvested" }], // string-functions/39.txt
402
+ space: [{ name: "SPACE", params: [{ name: "N" }], origin: "harvested" }], // string-functions/41.txt
403
+ sqrt: [{ name: "SQRT", params: [{ name: "X" }], origin: "harvested" }], // mathematical-functions/28.txt
404
+ statement_digest: [{ name: "STATEMENT_DIGEST", params: [{ name: "statement" }], origin: "harvested" }], // encryption-functions/8.txt
405
+ statement_digest_text: [{ name: "STATEMENT_DIGEST_TEXT", params: [{ name: "statement" }], origin: "harvested" }], // encryption-functions/9.txt
406
+ std: [{ name: "STD", params: [{ name: "expr" }], origin: "harvested" }], // aggregate-functions/12.txt
407
+ stddev: [{ name: "STDDEV", params: [{ name: "expr" }], origin: "harvested" }], // aggregate-functions/13.txt
408
+ stddev_pop: [{ name: "STDDEV_POP", params: [{ name: "expr" }], origin: "harvested" }], // aggregate-functions/14.txt
409
+ stddev_samp: [{ name: "STDDEV_SAMP", params: [{ name: "expr" }], origin: "harvested" }], // aggregate-functions/15.txt
410
+ str_to_date: [{ name: "STR_TO_DATE", params: [{ name: "str" }, { name: "format" }], origin: "harvested" }], // date-and-time-functions/39.txt
411
+ strcmp: [
412
+ {
413
+ name: "STRCMP",
414
+ params: [
415
+ { name: "str1", type: "string" },
416
+ { name: "str2", type: "string" },
417
+ ],
418
+ origin: "curated",
419
+ },
420
+ ], // curated: STRCMP(str1,str2)
421
+ subdate: [{ name: "SUBDATE", params: [{ name: "expr" }, { name: "days" }], origin: "harvested" }], // date-and-time-functions/40.txt
422
+ substr: [
423
+ {
424
+ name: "SUBSTR",
425
+ params: [{ name: "str" }, { name: "pos" }, { name: "len", optional: true }],
426
+ origin: "harvested",
427
+ },
428
+ ], // string-functions/42.txt
429
+ substring: [
430
+ {
431
+ name: "SUBSTRING",
432
+ params: [{ name: "str" }, { name: "pos" }, { name: "len", optional: true }],
433
+ origin: "harvested",
434
+ },
435
+ ], // string-functions/43.txt
436
+ substring_index: [
437
+ {
438
+ name: "SUBSTRING_INDEX",
439
+ params: [{ name: "str" }, { name: "delim" }, { name: "count" }],
440
+ origin: "harvested",
441
+ },
442
+ ], // string-functions/44.txt
443
+ subtime: [{ name: "SUBTIME", params: [{ name: "expr1" }, { name: "expr2" }], origin: "harvested" }], // date-and-time-functions/41.txt
444
+ sum: [{ name: "SUM", params: [{ name: "expr" }], origin: "harvested" }], // aggregate-functions/16.txt
445
+ sysdate: [{ name: "SYSDATE", params: [{ name: "fsp", optional: true }], origin: "harvested" }], // date-and-time-functions/42.txt
446
+ system_user: [{ name: "SYSTEM_USER", params: [], origin: "harvested" }], // information-functions/16.txt
447
+ tan: [{ name: "TAN", params: [{ name: "X" }], origin: "harvested" }], // mathematical-functions/29.txt
448
+ time: [{ name: "TIME", params: [{ name: "expr" }], origin: "harvested" }], // date-and-time-functions/43.txt
449
+ time_format: [{ name: "TIME_FORMAT", params: [{ name: "time" }, { name: "format" }], origin: "harvested" }], // date-and-time-functions/48.txt
450
+ time_to_sec: [{ name: "TIME_TO_SEC", params: [{ name: "time" }], origin: "harvested" }], // date-and-time-functions/49.txt
451
+ timediff: [{ name: "TIMEDIFF", params: [{ name: "expr1" }, { name: "expr2" }], origin: "harvested" }], // date-and-time-functions/44.txt
452
+ timestamp: [
453
+ { name: "TIMESTAMP", params: [{ name: "expr1" }, { name: "expr2" }], origin: "harvested" },
454
+ { name: "TIMESTAMP", params: [{ name: "expr" }], origin: "harvested" },
455
+ ], // date-and-time-functions/45.txt
456
+ timestampadd: [
457
+ {
458
+ name: "TIMESTAMPADD",
459
+ params: [{ name: "unit" }, { name: "interval" }, { name: "datetime_expr" }],
460
+ origin: "harvested",
461
+ },
462
+ ], // date-and-time-functions/46.txt
463
+ timestampdiff: [
464
+ {
465
+ name: "TIMESTAMPDIFF",
466
+ params: [{ name: "unit" }, { name: "datetime_expr1" }, { name: "datetime_expr2" }],
467
+ origin: "harvested",
468
+ },
469
+ ], // date-and-time-functions/47.txt
470
+ to_base64: [{ name: "TO_BASE64", params: [{ name: "str" }], origin: "harvested" }], // string-functions/45.txt
471
+ to_days: [{ name: "TO_DAYS", params: [{ name: "date" }], origin: "harvested" }], // date-and-time-functions/50.txt
472
+ to_seconds: [{ name: "TO_SECONDS", params: [{ name: "expr" }], origin: "harvested" }], // date-and-time-functions/51.txt
473
+ truncate: [{ name: "TRUNCATE", params: [{ name: "X" }, { name: "D" }], origin: "harvested" }], // mathematical-functions/30.txt
474
+ ucase: [{ name: "UCASE", params: [{ name: "str" }], origin: "harvested" }], // string-functions/47.txt
475
+ uncompress: [{ name: "UNCOMPRESS", params: [{ name: "string_to_uncompress" }], origin: "harvested" }], // encryption-functions/10.txt
476
+ uncompressed_length: [
477
+ { name: "UNCOMPRESSED_LENGTH", params: [{ name: "compressed_string" }], origin: "harvested" },
478
+ ], // encryption-functions/11.txt
479
+ unhex: [{ name: "UNHEX", params: [{ name: "str" }], origin: "harvested" }], // string-functions/48.txt
480
+ unix_timestamp: [{ name: "UNIX_TIMESTAMP", params: [{ name: "date", optional: true }], origin: "harvested" }], // date-and-time-functions/52.txt
481
+ upper: [{ name: "UPPER", params: [{ name: "str" }], origin: "harvested" }], // string-functions/49.txt
482
+ user: [{ name: "USER", params: [], origin: "harvested" }], // information-functions/17.txt
483
+ utc_date: [{ name: "UTC_DATE", params: [], origin: "harvested" }], // date-and-time-functions/53.txt
484
+ utc_time: [{ name: "UTC_TIME", params: [{ name: "fsp", optional: true }], origin: "harvested" }], // date-and-time-functions/54.txt
485
+ utc_timestamp: [{ name: "UTC_TIMESTAMP", params: [{ name: "fsp", optional: true }], origin: "harvested" }], // date-and-time-functions/55.txt
486
+ uuid: [{ name: "UUID", params: [], origin: "harvested" }], // miscellaneous-functions/16.txt
487
+ uuid_short: [{ name: "UUID_SHORT", params: [], origin: "harvested" }], // miscellaneous-functions/17.txt
488
+ uuid_to_bin: [
489
+ {
490
+ name: "UUID_TO_BIN",
491
+ params: [{ name: "string_uuid" }, { name: "swap_flag", optional: true }],
492
+ origin: "harvested",
493
+ },
494
+ ], // miscellaneous-functions/18.txt
495
+ validate_password_strength: [
496
+ { name: "VALIDATE_PASSWORD_STRENGTH", params: [{ name: "str" }], origin: "harvested" },
497
+ ], // encryption-functions/12.txt
498
+ values: [{ name: "VALUES", params: [{ name: "col_name" }], origin: "harvested" }], // miscellaneous-functions/19.txt
499
+ var_pop: [{ name: "VAR_POP", params: [{ name: "expr" }], origin: "harvested" }], // aggregate-functions/17.txt
500
+ var_samp: [{ name: "VAR_SAMP", params: [{ name: "expr" }], origin: "harvested" }], // aggregate-functions/18.txt
501
+ variance: [{ name: "VARIANCE", params: [{ name: "expr" }], origin: "harvested" }], // aggregate-functions/19.txt
502
+ version: [{ name: "VERSION", params: [], origin: "harvested" }], // information-functions/18.txt
503
+ week: [{ name: "WEEK", params: [{ name: "date" }, { name: "mode", optional: true }], origin: "harvested" }], // date-and-time-functions/56.txt
504
+ weekday: [{ name: "WEEKDAY", params: [{ name: "date" }], origin: "harvested" }], // date-and-time-functions/57.txt
505
+ weekofyear: [{ name: "WEEKOFYEAR", params: [{ name: "date" }], origin: "harvested" }], // date-and-time-functions/58.txt
506
+ year: [{ name: "YEAR", params: [{ name: "date" }], origin: "harvested" }], // date-and-time-functions/59.txt
507
+ yearweek: [{ name: "YEARWEEK", params: [{ name: "date" }, { name: "mode", optional: true }], origin: "harvested" }], // date-and-time-functions/60.txt
508
+ };
@@ -0,0 +1,2 @@
1
+ import type { DialectBehavior } from "../dialect-behavior/behavior.js";
2
+ export declare const postgresBehavior: DialectBehavior;
@@ -0,0 +1,19 @@
1
+ import { acceptsFor } from "../dialect-behavior/coerce-rules.js";
2
+ import { likePatternToRegExp } from "../scope/like-pattern.js";
3
+ import { SIGNATURES } from "../signature/signatures.js";
4
+ import { displayName, fold, foldTableName, matchesSourceKey } from "./fold.js";
5
+ import { postgresLiteral, postgresParseType, POSTGRES_FUNCTION_RETURNS } from "./infer.js";
6
+ // PostgreSQL implicit coercion: str->num=true, bool<->num=false.
7
+ export const postgresBehavior = {
8
+ fold,
9
+ displayName,
10
+ foldTableName,
11
+ matchesSourceKey,
12
+ likeMatch: (pattern, value) => likePatternToRegExp(pattern).test(value),
13
+ literal: postgresLiteral,
14
+ parseType: postgresParseType,
15
+ functions: POSTGRES_FUNCTION_RETURNS,
16
+ division: "integer",
17
+ signatures: SIGNATURES.postgres,
18
+ accepts: (argType, paramText) => acceptsFor(postgresParseType, true, false, argType, paramText),
19
+ };