@hdnax/sqlingo.js 0.0.5 → 0.1.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 (243) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.repo.md +1 -2
  3. package/dist/chunk-2YNOERAO.cjs +2 -0
  4. package/dist/chunk-2YNOERAO.cjs.map +1 -0
  5. package/dist/chunk-2Z3O2CFM.cjs +19 -0
  6. package/dist/chunk-2Z3O2CFM.cjs.map +1 -0
  7. package/dist/chunk-4ZMKB6PV.cjs +2 -0
  8. package/dist/chunk-4ZMKB6PV.cjs.map +1 -0
  9. package/dist/chunk-53OWF4GG.js +2 -0
  10. package/dist/chunk-53OWF4GG.js.map +1 -0
  11. package/dist/chunk-C4CLTVOW.cjs +2 -0
  12. package/dist/chunk-C4CLTVOW.cjs.map +1 -0
  13. package/dist/chunk-DOKMTZYO.cjs +4 -0
  14. package/dist/chunk-DOKMTZYO.cjs.map +1 -0
  15. package/dist/chunk-FCGUTI7Y.js +2 -0
  16. package/dist/chunk-FCGUTI7Y.js.map +1 -0
  17. package/dist/chunk-IPCIXWCY.js +2 -0
  18. package/dist/chunk-IPCIXWCY.js.map +1 -0
  19. package/dist/chunk-KCNOE4DZ.js +19 -0
  20. package/dist/chunk-KCNOE4DZ.js.map +1 -0
  21. package/dist/chunk-NRJHX2GZ.js +2 -0
  22. package/dist/chunk-NRJHX2GZ.js.map +1 -0
  23. package/dist/chunk-O2J5RKBN.js +2 -0
  24. package/dist/chunk-O2J5RKBN.js.map +1 -0
  25. package/dist/chunk-PXUASP5I.js +2 -0
  26. package/dist/chunk-PXUASP5I.js.map +1 -0
  27. package/dist/chunk-R7C3ZHVK.cjs +2 -0
  28. package/dist/chunk-R7C3ZHVK.cjs.map +1 -0
  29. package/dist/chunk-UHWHUDLE.cjs +2 -0
  30. package/dist/chunk-UHWHUDLE.cjs.map +1 -0
  31. package/dist/chunk-WRNYJ54A.cjs +2 -0
  32. package/dist/chunk-WRNYJ54A.cjs.map +1 -0
  33. package/dist/chunk-XZQFOICX.cjs +3 -0
  34. package/dist/chunk-XZQFOICX.cjs.map +1 -0
  35. package/dist/chunk-YLOQRUXC.js +2 -0
  36. package/dist/chunk-YLOQRUXC.js.map +1 -0
  37. package/dist/chunk-YSS2WVCM.cjs +2 -0
  38. package/dist/chunk-YSS2WVCM.cjs.map +1 -0
  39. package/dist/chunk-Z5V6VOIN.js +3 -0
  40. package/dist/chunk-Z5V6VOIN.js.map +1 -0
  41. package/dist/chunk-ZBFGQPJR.js +4 -0
  42. package/dist/chunk-ZBFGQPJR.js.map +1 -0
  43. package/dist/dialects/athena.cjs +2 -0
  44. package/dist/dialects/athena.cjs.map +1 -0
  45. package/dist/dialects/athena.d.cts +66 -0
  46. package/dist/dialects/athena.d.ts +66 -0
  47. package/dist/dialects/athena.js +2 -0
  48. package/dist/dialects/athena.js.map +1 -0
  49. package/dist/dialects/bigquery.cjs +3 -0
  50. package/dist/dialects/bigquery.cjs.map +1 -0
  51. package/dist/dialects/bigquery.d.cts +651 -0
  52. package/dist/dialects/bigquery.d.ts +651 -0
  53. package/dist/dialects/bigquery.js +3 -0
  54. package/dist/dialects/bigquery.js.map +1 -0
  55. package/dist/dialects/clickhouse.cjs +2 -0
  56. package/dist/dialects/clickhouse.cjs.map +1 -0
  57. package/dist/dialects/clickhouse.d.cts +634 -0
  58. package/dist/dialects/clickhouse.d.ts +634 -0
  59. package/dist/dialects/clickhouse.js +2 -0
  60. package/dist/dialects/clickhouse.js.map +1 -0
  61. package/dist/dialects/databricks.cjs +2 -0
  62. package/dist/dialects/databricks.cjs.map +1 -0
  63. package/dist/dialects/databricks.d.cts +484 -0
  64. package/dist/dialects/databricks.d.ts +484 -0
  65. package/dist/dialects/databricks.js +2 -0
  66. package/dist/dialects/databricks.js.map +1 -0
  67. package/dist/dialects/doris.cjs +2 -0
  68. package/dist/dialects/doris.cjs.map +1 -0
  69. package/dist/dialects/doris.d.cts +484 -0
  70. package/dist/dialects/doris.d.ts +484 -0
  71. package/dist/dialects/doris.js +2 -0
  72. package/dist/dialects/doris.js.map +1 -0
  73. package/dist/dialects/dremio.cjs +2 -0
  74. package/dist/dialects/dremio.cjs.map +1 -0
  75. package/dist/dialects/dremio.d.cts +522 -0
  76. package/dist/dialects/dremio.d.ts +522 -0
  77. package/dist/dialects/dremio.js +2 -0
  78. package/dist/dialects/dremio.js.map +1 -0
  79. package/dist/dialects/drill.cjs +2 -0
  80. package/dist/dialects/drill.cjs.map +1 -0
  81. package/dist/dialects/drill.d.cts +512 -0
  82. package/dist/dialects/drill.d.ts +512 -0
  83. package/dist/dialects/drill.js +2 -0
  84. package/dist/dialects/drill.js.map +1 -0
  85. package/dist/dialects/druid.cjs +2 -0
  86. package/dist/dialects/druid.cjs.map +1 -0
  87. package/dist/dialects/druid.d.cts +17 -0
  88. package/dist/dialects/druid.d.ts +17 -0
  89. package/dist/dialects/druid.js +2 -0
  90. package/dist/dialects/druid.js.map +1 -0
  91. package/dist/dialects/duckdb.cjs +86 -0
  92. package/dist/dialects/duckdb.cjs.map +1 -0
  93. package/dist/dialects/duckdb.d.cts +756 -0
  94. package/dist/dialects/duckdb.d.ts +756 -0
  95. package/dist/dialects/duckdb.js +86 -0
  96. package/dist/dialects/duckdb.js.map +1 -0
  97. package/dist/dialects/dune.cjs +2 -0
  98. package/dist/dialects/dune.cjs.map +1 -0
  99. package/dist/dialects/dune.d.cts +21 -0
  100. package/dist/dialects/dune.d.ts +21 -0
  101. package/dist/dialects/dune.js +2 -0
  102. package/dist/dialects/dune.js.map +1 -0
  103. package/dist/dialects/exasol.cjs +2 -0
  104. package/dist/dialects/exasol.cjs.map +1 -0
  105. package/dist/dialects/exasol.d.cts +507 -0
  106. package/dist/dialects/exasol.d.ts +507 -0
  107. package/dist/dialects/exasol.js +2 -0
  108. package/dist/dialects/exasol.js.map +1 -0
  109. package/dist/dialects/fabric.cjs +2 -0
  110. package/dist/dialects/fabric.cjs.map +1 -0
  111. package/dist/dialects/fabric.d.cts +463 -0
  112. package/dist/dialects/fabric.d.ts +463 -0
  113. package/dist/dialects/fabric.js +2 -0
  114. package/dist/dialects/fabric.js.map +1 -0
  115. package/dist/dialects/hive.cjs +2 -0
  116. package/dist/dialects/hive.cjs.map +1 -0
  117. package/dist/dialects/hive.d.cts +585 -0
  118. package/dist/dialects/hive.d.ts +585 -0
  119. package/dist/dialects/hive.js +2 -0
  120. package/dist/dialects/hive.js.map +1 -0
  121. package/dist/dialects/materialize.cjs +2 -0
  122. package/dist/dialects/materialize.cjs.map +1 -0
  123. package/dist/dialects/materialize.d.cts +890 -0
  124. package/dist/dialects/materialize.d.ts +890 -0
  125. package/dist/dialects/materialize.js +2 -0
  126. package/dist/dialects/materialize.js.map +1 -0
  127. package/dist/dialects/mysql.cjs +2 -0
  128. package/dist/dialects/mysql.cjs.map +1 -0
  129. package/dist/dialects/mysql.d.cts +292 -0
  130. package/dist/dialects/mysql.d.ts +292 -0
  131. package/dist/dialects/mysql.js +2 -0
  132. package/dist/dialects/mysql.js.map +1 -0
  133. package/dist/dialects/oracle.cjs +2 -0
  134. package/dist/dialects/oracle.cjs.map +1 -0
  135. package/dist/dialects/oracle.d.cts +539 -0
  136. package/dist/dialects/oracle.d.ts +539 -0
  137. package/dist/dialects/oracle.js +2 -0
  138. package/dist/dialects/oracle.js.map +1 -0
  139. package/dist/dialects/postgres.cjs +2 -0
  140. package/dist/dialects/postgres.cjs.map +1 -0
  141. package/dist/dialects/postgres.d.cts +587 -0
  142. package/dist/dialects/postgres.d.ts +587 -0
  143. package/dist/dialects/postgres.js +2 -0
  144. package/dist/dialects/postgres.js.map +1 -0
  145. package/dist/dialects/presto.cjs +2 -0
  146. package/dist/dialects/presto.cjs.map +1 -0
  147. package/dist/dialects/presto.d.cts +173 -0
  148. package/dist/dialects/presto.d.ts +173 -0
  149. package/dist/dialects/presto.js +2 -0
  150. package/dist/dialects/presto.js.map +1 -0
  151. package/dist/dialects/prql.cjs +2 -0
  152. package/dist/dialects/prql.cjs.map +1 -0
  153. package/dist/dialects/prql.d.cts +496 -0
  154. package/dist/dialects/prql.d.ts +496 -0
  155. package/dist/dialects/prql.js +2 -0
  156. package/dist/dialects/prql.js.map +1 -0
  157. package/dist/dialects/redshift.cjs +2 -0
  158. package/dist/dialects/redshift.cjs.map +1 -0
  159. package/dist/dialects/redshift.d.cts +132 -0
  160. package/dist/dialects/redshift.d.ts +132 -0
  161. package/dist/dialects/redshift.js +2 -0
  162. package/dist/dialects/redshift.js.map +1 -0
  163. package/dist/dialects/risingwave.cjs +2 -0
  164. package/dist/dialects/risingwave.cjs.map +1 -0
  165. package/dist/dialects/risingwave.d.cts +478 -0
  166. package/dist/dialects/risingwave.d.ts +478 -0
  167. package/dist/dialects/risingwave.js +2 -0
  168. package/dist/dialects/risingwave.js.map +1 -0
  169. package/dist/dialects/singlestore.cjs +2 -0
  170. package/dist/dialects/singlestore.cjs.map +1 -0
  171. package/dist/dialects/singlestore.d.cts +73 -0
  172. package/dist/dialects/singlestore.d.ts +73 -0
  173. package/dist/dialects/singlestore.js +2 -0
  174. package/dist/dialects/singlestore.js.map +1 -0
  175. package/dist/dialects/snowflake.cjs +3 -0
  176. package/dist/dialects/snowflake.cjs.map +1 -0
  177. package/dist/dialects/snowflake.d.cts +320 -0
  178. package/dist/dialects/snowflake.d.ts +320 -0
  179. package/dist/dialects/snowflake.js +3 -0
  180. package/dist/dialects/snowflake.js.map +1 -0
  181. package/dist/dialects/solr.cjs +2 -0
  182. package/dist/dialects/solr.cjs.map +1 -0
  183. package/dist/dialects/solr.d.cts +458 -0
  184. package/dist/dialects/solr.d.ts +458 -0
  185. package/dist/dialects/solr.js +2 -0
  186. package/dist/dialects/solr.js.map +1 -0
  187. package/dist/dialects/spark.cjs +2 -0
  188. package/dist/dialects/spark.cjs.map +1 -0
  189. package/dist/dialects/spark.d.cts +484 -0
  190. package/dist/dialects/spark.d.ts +484 -0
  191. package/dist/dialects/spark.js +2 -0
  192. package/dist/dialects/spark.js.map +1 -0
  193. package/dist/dialects/spark2.cjs +2 -0
  194. package/dist/dialects/spark2.cjs.map +1 -0
  195. package/dist/dialects/spark2.d.cts +486 -0
  196. package/dist/dialects/spark2.d.ts +486 -0
  197. package/dist/dialects/spark2.js +2 -0
  198. package/dist/dialects/spark2.js.map +1 -0
  199. package/dist/dialects/sqlite.cjs +2 -0
  200. package/dist/dialects/sqlite.cjs.map +1 -0
  201. package/dist/dialects/sqlite.d.cts +510 -0
  202. package/dist/dialects/sqlite.d.ts +510 -0
  203. package/dist/dialects/sqlite.js +2 -0
  204. package/dist/dialects/sqlite.js.map +1 -0
  205. package/dist/dialects/starrocks.cjs +2 -0
  206. package/dist/dialects/starrocks.cjs.map +1 -0
  207. package/dist/dialects/starrocks.d.cts +518 -0
  208. package/dist/dialects/starrocks.d.ts +518 -0
  209. package/dist/dialects/starrocks.js +2 -0
  210. package/dist/dialects/starrocks.js.map +1 -0
  211. package/dist/dialects/tableau.cjs +2 -0
  212. package/dist/dialects/tableau.cjs.map +1 -0
  213. package/dist/dialects/tableau.d.cts +466 -0
  214. package/dist/dialects/tableau.d.ts +466 -0
  215. package/dist/dialects/tableau.js +2 -0
  216. package/dist/dialects/tableau.js.map +1 -0
  217. package/dist/dialects/teradata.cjs +2 -0
  218. package/dist/dialects/teradata.cjs.map +1 -0
  219. package/dist/dialects/teradata.d.cts +539 -0
  220. package/dist/dialects/teradata.d.ts +539 -0
  221. package/dist/dialects/teradata.js +2 -0
  222. package/dist/dialects/teradata.js.map +1 -0
  223. package/dist/dialects/trino.cjs +2 -0
  224. package/dist/dialects/trino.cjs.map +1 -0
  225. package/dist/dialects/trino.d.cts +465 -0
  226. package/dist/dialects/trino.d.ts +465 -0
  227. package/dist/dialects/trino.js +2 -0
  228. package/dist/dialects/trino.js.map +1 -0
  229. package/dist/dialects/tsql.cjs +2 -0
  230. package/dist/dialects/tsql.cjs.map +1 -0
  231. package/dist/dialects/tsql.d.cts +703 -0
  232. package/dist/dialects/tsql.d.ts +703 -0
  233. package/dist/dialects/tsql.js +2 -0
  234. package/dist/dialects/tsql.js.map +1 -0
  235. package/dist/index.cjs +5 -25
  236. package/dist/index.cjs.map +1 -1
  237. package/dist/index.d.cts +3 -14178
  238. package/dist/index.d.ts +3 -14178
  239. package/dist/index.js +5 -25
  240. package/dist/index.js.map +1 -1
  241. package/dist/tokens-VcMD09XM.d.cts +15805 -0
  242. package/dist/tokens-VcMD09XM.d.ts +15805 -0
  243. package/package.json +171 -5
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/huydna/projects/sqlingo.js/dist/dialects/redshift.cjs","../../src/dialects/redshift.ts"],"names":["DATE_DELTA_INTERVAL","buildDateDelta","ExprClass","args","unitBased","thisArg","unit","unitName","var_","VarExpr","expr","seqGet","TsOrDsAddExpr","DataTypeExpr","_TABLE_ALIAS_TOKENS_dec","_NO_PAREN_FUNCTION_PARSERS_dec","_FUNCTIONS_dec","_ID_VAR_TOKENS_dec","_a","_init","RedshiftParser","Postgres","cache","Parser","functions","_options","buildConvertTimezone","TsOrDsDiffExpr","CurrentTimestampExpr","GroupConcatExpr","RegexpExtractExpr","StringToArrayExpr","LiteralExpr","FromBaseExpr","options","unpivot","table","PivotExpr","safe","to","thisNode","TryCastExpr","index","func","CountExpr","DistinctExpr","ApproxDistinctExpr","__decoratorStart","__decorateElement","__decoratorMetadata","__runInitializers","_SINGLE_TOKENS_dec","_ORIGINAL_KEYWORDS_dec","_STRING_ESCAPES_dec","_HEX_STRINGS_dec","_BIT_STRINGS_dec","RedshiftTokenizer","keywords","singleTokens","_RESERVED_KEYWORDS_dec","_ORIGINAL_TRANSFORMS_dec","_TYPE_MAPPING_dec","_AFTER_HAVING_MODIFIER_TRANSFORMS_dec","RedshiftGenerator","modifiers","m","transforms","ArrayConcatExpr","arrayConcatSql","ConcatExpr","concatToDPipeSql","ConcatWsExpr","concatWsToDPipeSql","e","DateAddExpr","dateDeltaSql","DateDiffExpr","DistKeyPropertyExpr","DistStylePropertyExpr","ExplodeExpr","FarmFingerprintExpr","renameFunc","GeneratedAsIdentityColumnConstraintExpr","generatedAsIdentityColumnConstraintSql","JsonExtractExpr","jsonExtractSegments","JsonExtractScalarExpr","HexExpr","SelectExpr","preprocess","eliminateWindowClause","eliminateDistinctOn","eliminateSemiAndAntiJoins","unqualifyUnnest","unnestGenerateDateArrayUsingRecursiveCte","SortKeyPropertyExpr","value","sql","Expression","SchemaExpr","TupleExpr"],"mappings":"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","file":"/home/huydna/projects/sqlingo.js/dist/dialects/redshift.cjs","sourcesContent":[null,"import {\n cache,\n} from '../port_internals';\nimport type {\n CastExpr, UnnestExpr,\n ArrayExpr,\n AlterSetExpr,\n} from '../expressions';\nimport {\n AnyValueExpr,\n ApproxDistinctExpr,\n ArrayConcatExpr,\n ConcatExpr,\n ConcatWsExpr,\n CountExpr,\n CurrentTimestampExpr,\n DataTypeExpr,\n DataTypeExprKind,\n DateAddExpr,\n DateDiffExpr,\n DistinctExpr,\n DistKeyPropertyExpr,\n DistStylePropertyExpr,\n ExplodeExpr,\n FarmFingerprintExpr,\n FromBaseExpr,\n FromExpr,\n GeneratedAsIdentityColumnConstraintExpr,\n GetbitExpr,\n GroupConcatExpr,\n HexExpr,\n isType,\n JoinExpr,\n JsonExtractExpr,\n JsonExtractScalarExpr,\n LastDayExpr,\n LiteralExpr,\n ParseJsonExpr,\n PivotExpr,\n RegexpExtractExpr,\n RoundExpr, SelectExpr, Sha2DigestExpr, Sha2Expr, SortKeyPropertyExpr, StartsWithExpr, StringToArrayExpr, TableSampleExpr, TryCastExpr, TsOrDsAddExpr, TsOrDsDiffExpr, UnixToTimeExpr, var_,\n Expression, SchemaExpr, TupleExpr, VarExpr,\n} from '../expressions';\nimport type {\n Generator,\n} from '../generator';\nimport {\n seqGet,\n} from '../helper';\nimport {\n Parser, buildConvertTimezone,\n} from '../parser';\nimport {\n TokenType,\n} from '../tokens';\nimport {\n eliminateDistinctOn, eliminateSemiAndAntiJoins, eliminateWindowClause, preprocess, unnestGenerateDateArrayUsingRecursiveCte, unqualifyUnnest,\n} from '../transforms';\nimport {\n arrayConcatSql,\n concatToDPipeSql,\n concatWsToDPipeSql,\n Dialect,\n Dialects,\n generatedAsIdentityColumnConstraintSql,\n jsonExtractSegments,\n NormalizationStrategy,\n noTablesampleSql,\n renameFunc,\n dateDeltaSql,\n} from './dialect';\nimport {\n Postgres,\n} from './postgres';\n\n// Map for DATEADD unit normalization (lowercase variants map to normalized lowercase)\nconst DATE_DELTA_INTERVAL: Record<string, string> = {\n year: 'year',\n years: 'year',\n yyyy: 'year',\n yy: 'year',\n quarter: 'quarter',\n quarters: 'quarter',\n qq: 'quarter',\n q: 'quarter',\n month: 'month',\n months: 'month',\n mm: 'month',\n m: 'month',\n week: 'week',\n weeks: 'week',\n ww: 'week',\n wk: 'week',\n day: 'day',\n days: 'day',\n dd: 'day',\n d: 'day',\n hour: 'hour',\n hours: 'hour',\n hh: 'hour',\n h: 'hour',\n minute: 'minute',\n minutes: 'minute',\n mi: 'minute',\n second: 'second',\n seconds: 'second',\n ss: 'second',\n s: 'second',\n millisecond: 'millisecond',\n milliseconds: 'millisecond',\n ms: 'millisecond',\n microsecond: 'microsecond',\n microseconds: 'microsecond',\n us: 'microsecond',\n nanosecond: 'nanosecond',\n nanoseconds: 'nanosecond',\n ns: 'nanosecond',\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction buildDateDelta<T extends Expression> (ExprClass: new (args: any) => T) {\n return (args: Expression[]): T => {\n const unitBased = 3 <= args.length;\n const thisArg = unitBased ? args[2] : undefined;\n let unit = unitBased ? args[0] : undefined;\n\n if (unit) {\n const unitName = unit.name?.toLowerCase();\n if (unitName && DATE_DELTA_INTERVAL[unitName]) {\n unit = var_(DATE_DELTA_INTERVAL[unitName]);\n }\n if (unit instanceof VarExpr) {\n unit = new VarExpr({\n this: unit.name.toUpperCase(),\n });\n }\n }\n\n const expr = new ExprClass({\n this: thisArg,\n expression: seqGet(args, 1),\n unit,\n });\n\n if (ExprClass === TsOrDsAddExpr as unknown) {\n expr.setArgKey('returnType', DataTypeExpr.build('TIMESTAMP'));\n }\n\n return expr;\n };\n}\n\nclass RedshiftParser extends Postgres.Parser {\n @cache\n static get ID_VAR_TOKENS (): Set<TokenType> {\n return new Set([\n ...Parser.ID_VAR_TOKENS,\n TokenType.SESSION_USER,\n TokenType.CURRENT_CATALOG,\n TokenType.STRAIGHT_JOIN,\n ]);\n }\n\n @cache\n static get FUNCTIONS (): Record<string, (args: Expression[], options: {dialect: Dialect}) => Expression> {\n return (() => {\n const functions: Record<string, (args: Expression[], options: {dialect: Dialect}) => Expression> = {\n ...Postgres.Parser.FUNCTIONS,\n ADD_MONTHS: (args: Expression[], _options: {dialect: Dialect}) =>\n new TsOrDsAddExpr({\n this: seqGet(args, 0),\n expression: seqGet(args, 1),\n unit: var_('MONTH'),\n returnType: DataTypeExpr.build('TIMESTAMP'),\n }),\n CONVERT_TIMEZONE: (args: Expression[]) => buildConvertTimezone(args, {\n defaultSourceTz: 'UTC',\n }),\n DATEADD: buildDateDelta(TsOrDsAddExpr),\n DATE_ADD: buildDateDelta(TsOrDsAddExpr),\n DATEDIFF: buildDateDelta(TsOrDsDiffExpr),\n DATE_DIFF: buildDateDelta(TsOrDsDiffExpr),\n GETDATE: (args: unknown[]) => CurrentTimestampExpr.fromArgList(args),\n LISTAGG: (args: unknown[]) => GroupConcatExpr.fromArgList(args),\n REGEXP_SUBSTR: (args: Expression[]) =>\n new RegexpExtractExpr({\n this: seqGet(args, 0),\n expression: seqGet(args, 1),\n position: seqGet(args, 2),\n occurrence: seqGet(args, 3),\n parameters: seqGet(args, 4),\n }),\n SPLIT_TO_ARRAY: (args: Expression[]) =>\n new StringToArrayExpr({\n this: seqGet(args, 0),\n expression: seqGet(args, 1) || LiteralExpr.string(','),\n }),\n STRTOL: (args: unknown[]) => FromBaseExpr.fromArgList(args),\n };\n delete functions['GET_BIT'];\n return functions;\n })();\n }\n\n @cache\n static get NO_PAREN_FUNCTION_PARSERS (): Partial<Record<string, (this: Parser) => Expression | undefined>> {\n return {\n ...Postgres.Parser.NO_PAREN_FUNCTION_PARSERS,\n APPROXIMATE: function (this: Parser) {\n return (this as RedshiftParser).parseApproximateCount();\n },\n SYSDATE: function (this: Parser) {\n return this.expression(CurrentTimestampExpr, {\n sysdate: true,\n });\n },\n };\n }\n\n static SUPPORTS_IMPLICIT_UNNEST = true;\n\n parseTable (options: {\n schema?: boolean;\n joins?: boolean;\n aliasTokens?: Set<TokenType>;\n parseBracket?: boolean;\n isDbReference?: boolean;\n parsePartition?: boolean;\n consumePipe?: boolean;\n } = {}): Expression | undefined {\n const unpivot = this.match(TokenType.UNPIVOT);\n const table = super.parseTable(options);\n\n return unpivot\n ? this.expression(PivotExpr, {\n this: table,\n unpivot: true,\n })\n : table;\n }\n\n parseConvert (options: {\n strict: boolean;\n safe?: boolean;\n }): Expression | undefined {\n const {\n safe,\n } = options;\n const to = this.parseTypes();\n this.match(TokenType.COMMA);\n const thisNode = this.parseBitwise();\n return this.expression(TryCastExpr, {\n this: thisNode,\n to: to,\n safe,\n });\n }\n\n parseApproximateCount (): ApproxDistinctExpr | undefined {\n const index = this.index - 1;\n const func = this.parseFunction();\n\n if (func instanceof CountExpr && func.args.this instanceof DistinctExpr) {\n return this.expression(ApproxDistinctExpr, {\n this: seqGet(func.args.this.args.expressions || [\n ], 0),\n });\n }\n this.retreat(index);\n return undefined;\n }\n\n // port from _Dialect metaclass logic\n @cache\n static get TABLE_ALIAS_TOKENS (): Set<TokenType> {\n return new Set([\n ...Postgres.Parser.TABLE_ALIAS_TOKENS,\n TokenType.STRAIGHT_JOIN,\n ]);\n }\n}\nclass RedshiftTokenizer extends Postgres.Tokenizer {\n @cache\n static get BIT_STRINGS () {\n return [\n ];\n }\n\n @cache\n static get HEX_STRINGS () {\n return [\n ];\n }\n\n @cache\n static get STRING_ESCAPES () {\n return [\n '\\\\',\n '\\'',\n ];\n }\n\n @cache\n static get ORIGINAL_KEYWORDS (): Record<string, TokenType> {\n const keywords: Record<string, TokenType> = {\n ...Postgres.Tokenizer.KEYWORDS,\n '(+)': TokenType.JOIN_MARKER,\n 'HLLSKETCH': TokenType.HLLSKETCH,\n 'MINUS': TokenType.EXCEPT,\n 'SUPER': TokenType.SUPER,\n 'TOP': TokenType.TOP,\n 'UNLOAD': TokenType.COMMAND,\n 'VARBYTE': TokenType.VARBINARY,\n 'BINARY VARYING': TokenType.VARBINARY,\n };\n delete keywords['VALUES'];\n return keywords;\n }\n\n @cache\n static get SINGLE_TOKENS (): Record<string, TokenType> {\n const singleTokens: Record<string, TokenType> = {\n ...Postgres.Tokenizer.SINGLE_TOKENS,\n };\n delete singleTokens['#'];\n return singleTokens;\n }\n}\n\nclass RedshiftGenerator extends Postgres.Generator {\n // port from _Dialect metaclass logic\n @cache\n static get AFTER_HAVING_MODIFIER_TRANSFORMS () {\n const modifiers = new Map(super.AFTER_HAVING_MODIFIER_TRANSFORMS);\n [\n 'cluster',\n 'distribute',\n 'sort',\n ].forEach((m) => modifiers.delete(m));\n return modifiers;\n }\n\n // port from _Dialect metaclass logic\n static TRY_SUPPORTED = false;\n // port from _Dialect metaclass logic\n static SUPPORTS_UESCAPE = false;\n static LOCKING_READS_SUPPORTED = false;\n static QUERY_HINTS = false;\n static VALUES_AS_TABLE = false;\n static TZ_TO_WITH_TIME_ZONE = true;\n static NVL2_SUPPORTED = true;\n static LAST_DAY_SUPPORTS_DATE_PART = false;\n static CAN_IMPLEMENT_ARRAY_ANY = false;\n static MULTI_ARG_DISTINCT = true;\n static COPY_PARAMS_ARE_WRAPPED = false;\n static HEX_FUNC = 'TO_HEX';\n static PARSE_JSON_NAME = 'JSON_PARSE';\n static ARRAY_CONCAT_IS_VAR_LEN = false;\n static SUPPORTS_CONVERT_TIMEZONE = true;\n static EXCEPT_INTERSECT_SUPPORT_ALL_CLAUSE = false;\n static SUPPORTS_MEDIAN = true;\n static ALTER_SET_TYPE = 'TYPE';\n static SUPPORTS_DECODE_CASE = true;\n static SUPPORTS_BETWEEN_FLAGS = false;\n static LIMIT_FETCH = 'LIMIT';\n\n static WITH_PROPERTIES_PREFIX = ' ';\n\n @cache\n static get TYPE_MAPPING () {\n return new Map([\n ...Postgres.Generator.TYPE_MAPPING,\n [\n DataTypeExprKind.BINARY,\n 'VARBYTE',\n ],\n [\n DataTypeExprKind.BLOB,\n 'VARBYTE',\n ],\n [\n DataTypeExprKind.INT,\n 'INTEGER',\n ],\n [\n DataTypeExprKind.TIMETZ,\n 'TIME',\n ],\n [\n DataTypeExprKind.TIMESTAMPTZ,\n 'TIMESTAMP',\n ],\n [\n DataTypeExprKind.VARBINARY,\n 'VARBYTE',\n ],\n [\n DataTypeExprKind.ROWVERSION,\n 'VARBYTE',\n ],\n ]);\n }\n\n @cache\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static get ORIGINAL_TRANSFORMS (): Map<typeof Expression, (this: Generator, e: any) => string> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const transforms = new Map<typeof Expression, (this: Generator, e: any) => string>([\n ...Postgres.Generator.TRANSFORMS,\n [\n ArrayConcatExpr,\n arrayConcatSql('ARRAY_CONCAT'),\n ],\n [\n ConcatExpr,\n concatToDPipeSql,\n ],\n [\n ConcatWsExpr,\n concatWsToDPipeSql,\n ],\n [\n ApproxDistinctExpr,\n function (this: Generator, e: ApproxDistinctExpr) {\n return `APPROXIMATE COUNT(DISTINCT ${this.sql(e, 'this')})`;\n },\n ],\n [\n CurrentTimestampExpr,\n function (this: Generator, e: CurrentTimestampExpr) {\n return e.args.sysdate ? 'SYSDATE' : 'GETDATE()';\n },\n ],\n [\n DateAddExpr,\n dateDeltaSql('DATEADD'),\n ],\n [\n DateDiffExpr,\n dateDeltaSql('DATEDIFF'),\n ],\n [\n DistKeyPropertyExpr,\n function (this: Generator, e: DistKeyPropertyExpr) {\n return this.func('DISTKEY', [\n e.args.this,\n ]);\n },\n ],\n [\n DistStylePropertyExpr,\n function (this: Generator, e: DistStylePropertyExpr) {\n return (this as RedshiftGenerator).nakedProperty(e);\n },\n ],\n [\n ExplodeExpr,\n function (this: Generator, e: ExplodeExpr) {\n return (this as RedshiftGenerator).explodeSql(e);\n },\n ],\n [\n FarmFingerprintExpr,\n renameFunc('FARMFINGERPRINT64'),\n ],\n [\n FromBaseExpr,\n renameFunc('STRTOL'),\n ],\n [\n GeneratedAsIdentityColumnConstraintExpr,\n generatedAsIdentityColumnConstraintSql,\n ],\n [\n JsonExtractExpr,\n jsonExtractSegments('JSON_EXTRACT_PATH_TEXT'),\n ],\n [\n JsonExtractScalarExpr,\n jsonExtractSegments('JSON_EXTRACT_PATH_TEXT'),\n ],\n [\n GroupConcatExpr,\n renameFunc('LISTAGG'),\n ],\n [\n HexExpr,\n function (this: Generator, e: HexExpr) {\n return this.func('UPPER', [\n this.func('TO_HEX', [\n this.sql(e, 'this'),\n ]),\n ]);\n },\n ],\n [\n RegexpExtractExpr,\n renameFunc('REGEXP_SUBSTR'),\n ],\n [\n SelectExpr,\n preprocess([\n eliminateWindowClause,\n eliminateDistinctOn,\n eliminateSemiAndAntiJoins,\n unqualifyUnnest,\n unnestGenerateDateArrayUsingRecursiveCte,\n ]),\n ],\n [\n SortKeyPropertyExpr,\n function (this: Generator, e: SortKeyPropertyExpr) {\n const value = e.args.this;\n const sql = value instanceof Expression && (value instanceof SchemaExpr || value instanceof TupleExpr)\n ? this.expressions(value, {\n flat: true,\n })\n : this.sql(value);\n return `${e.args.compound ? 'COMPOUND ' : ''}SORTKEY(${sql})`;\n },\n ],\n [\n StartsWithExpr,\n function (this: Generator, e: StartsWithExpr) {\n return `${this.sql(e.args.this)} LIKE ${this.sql(e.args.expression)} || '%'`;\n },\n ],\n [\n StringToArrayExpr,\n renameFunc('SPLIT_TO_ARRAY'),\n ],\n [\n TableSampleExpr,\n noTablesampleSql,\n ],\n [\n TsOrDsAddExpr,\n dateDeltaSql('DATEADD'),\n ],\n [\n TsOrDsDiffExpr,\n dateDeltaSql('DATEDIFF'),\n ],\n [\n UnixToTimeExpr,\n function (this: Generator, e: UnixToTimeExpr) {\n return (this as RedshiftGenerator).unixToTimeSql(e);\n },\n ],\n [\n Sha2DigestExpr,\n function (this: Generator, e: Sha2DigestExpr) {\n return this.func('SHA2', [\n e.args.this,\n e.args.length || LiteralExpr.number(256),\n ]);\n },\n ],\n ]);\n\n transforms.delete(PivotExpr);\n transforms.delete(ParseJsonExpr);\n transforms.delete(AnyValueExpr);\n transforms.delete(LastDayExpr);\n transforms.delete(Sha2Expr);\n transforms.delete(GetbitExpr);\n transforms.delete(RoundExpr);\n\n return transforms;\n }\n\n @cache\n static get RESERVED_KEYWORDS () {\n return new Set([\n 'aes128',\n 'aes256',\n 'all',\n 'allowoverwrite',\n 'analyse',\n 'analyze',\n 'and',\n 'any',\n 'array',\n 'as',\n 'asc',\n 'authorization',\n 'az64',\n 'backup',\n 'between',\n 'binary',\n 'blanksasnull',\n 'both',\n 'bytedict',\n 'bzip2',\n 'case',\n 'cast',\n 'check',\n 'collate',\n 'column',\n 'constraint',\n 'create',\n 'credentials',\n 'cross',\n 'current_date',\n 'current_time',\n 'current_timestamp',\n 'current_user',\n 'current_user_id',\n 'default',\n 'deferrable',\n 'deflate',\n 'defrag',\n 'delta',\n 'delta32k',\n 'desc',\n 'disable',\n 'distinct',\n 'do',\n 'else',\n 'emptyasnull',\n 'enable',\n 'encode',\n 'encrypt',\n 'encryption',\n 'end',\n 'except',\n 'explicit',\n 'false',\n 'for',\n 'foreign',\n 'freeze',\n 'from',\n 'full',\n 'globaldict256',\n 'globaldict64k',\n 'grant',\n 'group',\n 'gzip',\n 'having',\n 'identity',\n 'ignore',\n 'ilike',\n 'in',\n 'initially',\n 'inner',\n 'intersect',\n 'interval',\n 'into',\n 'is',\n 'isnull',\n 'join',\n 'leading',\n 'left',\n 'like',\n 'limit',\n 'localtime',\n 'localtimestamp',\n 'lun',\n 'luns',\n 'lzo',\n 'lzop',\n 'minus',\n 'mostly16',\n 'mostly32',\n 'mostly8',\n 'natural',\n 'new',\n 'not',\n 'notnull',\n 'null',\n 'nulls',\n 'off',\n 'offline',\n 'offset',\n 'oid',\n 'old',\n 'on',\n 'only',\n 'open',\n 'or',\n 'order',\n 'outer',\n 'overlaps',\n 'parallel',\n 'partition',\n 'percent',\n 'permissions',\n 'pivot',\n 'placing',\n 'primary',\n 'raw',\n 'readratio',\n 'recover',\n 'references',\n 'rejectlog',\n 'resort',\n 'respect',\n 'restore',\n 'right',\n 'select',\n 'session_user',\n 'similar',\n 'snapshot',\n 'some',\n 'sysdate',\n 'system',\n 'table',\n 'tag',\n 'tdes',\n 'text255',\n 'text32k',\n 'then',\n 'timestamp',\n 'to',\n 'top',\n 'trailing',\n 'true',\n 'truncatecolumns',\n 'type',\n 'union',\n 'unique',\n 'unnest',\n 'unpivot',\n 'user',\n 'using',\n 'verbose',\n 'wallet',\n 'when',\n 'where',\n 'with',\n 'without',\n ]);\n }\n\n unnestSql (expression: UnnestExpr): string {\n const args = expression.args.expressions || [\n ];\n const numArgs = args.length;\n\n if (numArgs !== 1) {\n this.unsupported(`Unsupported number of arguments in UNNEST: ${numArgs}`);\n return '';\n }\n\n if (expression.findAncestor(SelectExpr) && !expression.findAncestor<FromExpr | JoinExpr>(FromExpr, JoinExpr)) {\n this.unsupported('Unsupported UNNEST when not used in FROM/JOIN clauses');\n return '';\n }\n\n const arg = this.sql(seqGet(args, 0));\n\n const alias = this.expressions(expression.args.alias, {\n key: 'columns',\n flat: true,\n });\n return alias ? `${arg} AS ${alias}` : arg;\n }\n\n castSql (expression: CastExpr, options: {safePrefix?: string} = {}): string {\n const {\n safePrefix,\n } = options;\n if (isType(expression.args.to, DataTypeExprKind.JSON)) {\n // Redshift doesn't support a JSON type, so casting to it is treated as a noop\n return this.sql(expression.args.this);\n }\n\n return super.castSql(expression, {\n safePrefix,\n });\n }\n\n /**\n * Redshift converts the `TEXT` data type to `VARCHAR(255)` by default when people more generally mean\n * VARCHAR of max length which is `VARCHAR(max)` in Redshift. Therefore if we get a `TEXT` data type\n * without precision we convert it to `VARCHAR(max)` and if it does have precision then we just convert\n * `TEXT` to `VARCHAR`.\n */\n dataTypeSql (expression: DataTypeExpr): string {\n if (expression.isType(DataTypeExprKind.TEXT)) {\n expression.setArgKey('this', DataTypeExprKind.VARCHAR);\n const precision = expression.args.expressions;\n\n if (!precision || precision.length === 0) {\n expression.append('expressions', var_('MAX'));\n }\n }\n\n return super.dataTypeSql(expression);\n }\n\n alterSetSql (expression: AlterSetExpr): string {\n let exprs = this.expressions(expression, {\n flat: true,\n });\n exprs = exprs ? ` TABLE PROPERTIES (${exprs})` : '';\n\n let location = this.sql(expression, 'location');\n location = location ? ` LOCATION ${location}` : '';\n\n let fileFormat = this.expressions(expression, {\n key: 'fileFormat',\n flat: true,\n sep: ' ',\n });\n fileFormat = fileFormat ? ` FILE FORMAT ${fileFormat}` : '';\n\n return `SET${exprs}${location}${fileFormat}`;\n }\n\n arraySql (expression: ArrayExpr): string {\n if (expression.args.bracketNotation) {\n return super.arraySql(expression);\n }\n\n return renameFunc('ARRAY').call(this, expression);\n }\n\n explodeSql (_expression: ExplodeExpr): string {\n this.unsupported('Unsupported EXPLODE() function');\n return '';\n }\n\n unixToTimeSql (expression: UnixToTimeExpr): string {\n const scale = expression.args.scale;\n let thisSql = this.sql(expression.args.this);\n\n if (scale !== undefined && scale !== UnixToTimeExpr.SECONDS && (scale as LiteralExpr).isNumber) {\n thisSql = `(${thisSql} / POWER(10, ${(scale as LiteralExpr).args.this}))`;\n }\n\n return `(TIMESTAMP 'epoch' + ${thisSql} * INTERVAL '1 SECOND')`;\n }\n}\n\nexport class Redshift extends Postgres {\n static DIALECT_NAME = Dialects.REDSHIFT;\n\n @cache\n static get NORMALIZATION_STRATEGY () {\n return NormalizationStrategy.CASE_INSENSITIVE;\n }\n\n static SUPPORTS_USER_DEFINED_TYPES = false;\n static INDEX_OFFSET = 0;\n static COPY_PARAMS_ARE_CSV = false;\n static HEX_LOWERCASE = true;\n static HAS_DISTINCT_ARRAY_CONSTRUCTORS = true;\n static COALESCE_COMPARISON_NON_STANDARD = true;\n static REGEXP_EXTRACT_POSITION_OVERFLOW_RETURNS_NULL = false;\n static ARRAY_FUNCS_PROPAGATES_NULLS = true;\n\n static TIME_FORMAT = '\\'YYYY-MM-DD HH24:MI:SS\\'';\n\n @cache\n static get TIME_MAPPING () {\n return {\n ...Postgres.TIME_MAPPING,\n MON: '%b',\n HH24: '%H',\n HH: '%I',\n };\n }\n\n static Tokenizer = RedshiftTokenizer;\n static Parser = RedshiftParser;\n static Generator = RedshiftGenerator;\n}\n\nDialect.register(Dialects.REDSHIFT, Redshift);\n"]}
@@ -0,0 +1,132 @@
1
+ import { d as Dialects, a0 as NormalizationStrategy, l as TokenType, E as Expression, c as Dialect, i as Parser, cQ as ApproxDistinctExpr, G as Generator, ag as UnnestExpr, at as CastExpr, b5 as DataTypeExpr, cR as AlterSetExpr, cS as ArrayExpr, cT as ExplodeExpr, bd as UnixToTimeExpr } from '../tokens-VcMD09XM.cjs';
2
+ import { Postgres } from './postgres.cjs';
3
+
4
+ declare class RedshiftParser extends Postgres.Parser {
5
+ static get ID_VAR_TOKENS(): Set<TokenType>;
6
+ static get FUNCTIONS(): Record<string, (args: Expression[], options: {
7
+ dialect: Dialect;
8
+ }) => Expression>;
9
+ static get NO_PAREN_FUNCTION_PARSERS(): Partial<Record<string, (this: Parser) => Expression | undefined>>;
10
+ static SUPPORTS_IMPLICIT_UNNEST: boolean;
11
+ parseTable(options?: {
12
+ schema?: boolean;
13
+ joins?: boolean;
14
+ aliasTokens?: Set<TokenType>;
15
+ parseBracket?: boolean;
16
+ isDbReference?: boolean;
17
+ parsePartition?: boolean;
18
+ consumePipe?: boolean;
19
+ }): Expression | undefined;
20
+ parseConvert(options: {
21
+ strict: boolean;
22
+ safe?: boolean;
23
+ }): Expression | undefined;
24
+ parseApproximateCount(): ApproxDistinctExpr | undefined;
25
+ static get TABLE_ALIAS_TOKENS(): Set<TokenType>;
26
+ }
27
+ declare class RedshiftTokenizer extends Postgres.Tokenizer {
28
+ static get BIT_STRINGS(): never[];
29
+ static get HEX_STRINGS(): never[];
30
+ static get STRING_ESCAPES(): string[];
31
+ static get ORIGINAL_KEYWORDS(): Record<string, TokenType>;
32
+ static get SINGLE_TOKENS(): Record<string, TokenType>;
33
+ }
34
+ declare class RedshiftGenerator extends Postgres.Generator {
35
+ static get AFTER_HAVING_MODIFIER_TRANSFORMS(): Map<string, (this: Generator, e: Expression) => string>;
36
+ static TRY_SUPPORTED: boolean;
37
+ static SUPPORTS_UESCAPE: boolean;
38
+ static LOCKING_READS_SUPPORTED: boolean;
39
+ static QUERY_HINTS: boolean;
40
+ static VALUES_AS_TABLE: boolean;
41
+ static TZ_TO_WITH_TIME_ZONE: boolean;
42
+ static NVL2_SUPPORTED: boolean;
43
+ static LAST_DAY_SUPPORTS_DATE_PART: boolean;
44
+ static CAN_IMPLEMENT_ARRAY_ANY: boolean;
45
+ static MULTI_ARG_DISTINCT: boolean;
46
+ static COPY_PARAMS_ARE_WRAPPED: boolean;
47
+ static HEX_FUNC: string;
48
+ static PARSE_JSON_NAME: string;
49
+ static ARRAY_CONCAT_IS_VAR_LEN: boolean;
50
+ static SUPPORTS_CONVERT_TIMEZONE: boolean;
51
+ static EXCEPT_INTERSECT_SUPPORT_ALL_CLAUSE: boolean;
52
+ static SUPPORTS_MEDIAN: boolean;
53
+ static ALTER_SET_TYPE: string;
54
+ static SUPPORTS_DECODE_CASE: boolean;
55
+ static SUPPORTS_BETWEEN_FLAGS: boolean;
56
+ static LIMIT_FETCH: string;
57
+ static WITH_PROPERTIES_PREFIX: string;
58
+ static get TYPE_MAPPING(): Map<string, string>;
59
+ static get ORIGINAL_TRANSFORMS(): Map<typeof Expression, (this: Generator, e: any) => string>;
60
+ static get RESERVED_KEYWORDS(): Set<string>;
61
+ unnestSql(expression: UnnestExpr): string;
62
+ castSql(expression: CastExpr, options?: {
63
+ safePrefix?: string;
64
+ }): string;
65
+ /**
66
+ * Redshift converts the `TEXT` data type to `VARCHAR(255)` by default when people more generally mean
67
+ * VARCHAR of max length which is `VARCHAR(max)` in Redshift. Therefore if we get a `TEXT` data type
68
+ * without precision we convert it to `VARCHAR(max)` and if it does have precision then we just convert
69
+ * `TEXT` to `VARCHAR`.
70
+ */
71
+ dataTypeSql(expression: DataTypeExpr): string;
72
+ alterSetSql(expression: AlterSetExpr): string;
73
+ arraySql(expression: ArrayExpr): string;
74
+ explodeSql(_expression: ExplodeExpr): string;
75
+ unixToTimeSql(expression: UnixToTimeExpr): string;
76
+ }
77
+ declare class Redshift extends Postgres {
78
+ static DIALECT_NAME: Dialects;
79
+ static get NORMALIZATION_STRATEGY(): NormalizationStrategy;
80
+ static SUPPORTS_USER_DEFINED_TYPES: boolean;
81
+ static INDEX_OFFSET: number;
82
+ static COPY_PARAMS_ARE_CSV: boolean;
83
+ static HEX_LOWERCASE: boolean;
84
+ static HAS_DISTINCT_ARRAY_CONSTRUCTORS: boolean;
85
+ static COALESCE_COMPARISON_NON_STANDARD: boolean;
86
+ static REGEXP_EXTRACT_POSITION_OVERFLOW_RETURNS_NULL: boolean;
87
+ static ARRAY_FUNCS_PROPAGATES_NULLS: boolean;
88
+ static TIME_FORMAT: string;
89
+ static get TIME_MAPPING(): {
90
+ MON: string;
91
+ HH24: string;
92
+ HH: string;
93
+ d: string;
94
+ D: string;
95
+ dd: string;
96
+ DD: string;
97
+ ddd: string;
98
+ DDD: string;
99
+ FMDD: string;
100
+ FMDDD: string;
101
+ FMHH12: string;
102
+ FMHH24: string;
103
+ FMMI: string;
104
+ FMMM: string;
105
+ FMSS: string;
106
+ HH12: string;
107
+ mi: string;
108
+ MI: string;
109
+ mm: string;
110
+ MM: string;
111
+ OF: string;
112
+ ss: string;
113
+ SS: string;
114
+ TMDay: string;
115
+ TMDy: string;
116
+ TMMon: string;
117
+ TMMonth: string;
118
+ TZ: string;
119
+ US: string;
120
+ ww: string;
121
+ WW: string;
122
+ yy: string;
123
+ YY: string;
124
+ yyyy: string;
125
+ YYYY: string;
126
+ };
127
+ static Tokenizer: typeof RedshiftTokenizer;
128
+ static Parser: typeof RedshiftParser;
129
+ static Generator: typeof RedshiftGenerator;
130
+ }
131
+
132
+ export { Redshift };
@@ -0,0 +1,132 @@
1
+ import { d as Dialects, a0 as NormalizationStrategy, l as TokenType, E as Expression, c as Dialect, i as Parser, cQ as ApproxDistinctExpr, G as Generator, ag as UnnestExpr, at as CastExpr, b5 as DataTypeExpr, cR as AlterSetExpr, cS as ArrayExpr, cT as ExplodeExpr, bd as UnixToTimeExpr } from '../tokens-VcMD09XM.js';
2
+ import { Postgres } from './postgres.js';
3
+
4
+ declare class RedshiftParser extends Postgres.Parser {
5
+ static get ID_VAR_TOKENS(): Set<TokenType>;
6
+ static get FUNCTIONS(): Record<string, (args: Expression[], options: {
7
+ dialect: Dialect;
8
+ }) => Expression>;
9
+ static get NO_PAREN_FUNCTION_PARSERS(): Partial<Record<string, (this: Parser) => Expression | undefined>>;
10
+ static SUPPORTS_IMPLICIT_UNNEST: boolean;
11
+ parseTable(options?: {
12
+ schema?: boolean;
13
+ joins?: boolean;
14
+ aliasTokens?: Set<TokenType>;
15
+ parseBracket?: boolean;
16
+ isDbReference?: boolean;
17
+ parsePartition?: boolean;
18
+ consumePipe?: boolean;
19
+ }): Expression | undefined;
20
+ parseConvert(options: {
21
+ strict: boolean;
22
+ safe?: boolean;
23
+ }): Expression | undefined;
24
+ parseApproximateCount(): ApproxDistinctExpr | undefined;
25
+ static get TABLE_ALIAS_TOKENS(): Set<TokenType>;
26
+ }
27
+ declare class RedshiftTokenizer extends Postgres.Tokenizer {
28
+ static get BIT_STRINGS(): never[];
29
+ static get HEX_STRINGS(): never[];
30
+ static get STRING_ESCAPES(): string[];
31
+ static get ORIGINAL_KEYWORDS(): Record<string, TokenType>;
32
+ static get SINGLE_TOKENS(): Record<string, TokenType>;
33
+ }
34
+ declare class RedshiftGenerator extends Postgres.Generator {
35
+ static get AFTER_HAVING_MODIFIER_TRANSFORMS(): Map<string, (this: Generator, e: Expression) => string>;
36
+ static TRY_SUPPORTED: boolean;
37
+ static SUPPORTS_UESCAPE: boolean;
38
+ static LOCKING_READS_SUPPORTED: boolean;
39
+ static QUERY_HINTS: boolean;
40
+ static VALUES_AS_TABLE: boolean;
41
+ static TZ_TO_WITH_TIME_ZONE: boolean;
42
+ static NVL2_SUPPORTED: boolean;
43
+ static LAST_DAY_SUPPORTS_DATE_PART: boolean;
44
+ static CAN_IMPLEMENT_ARRAY_ANY: boolean;
45
+ static MULTI_ARG_DISTINCT: boolean;
46
+ static COPY_PARAMS_ARE_WRAPPED: boolean;
47
+ static HEX_FUNC: string;
48
+ static PARSE_JSON_NAME: string;
49
+ static ARRAY_CONCAT_IS_VAR_LEN: boolean;
50
+ static SUPPORTS_CONVERT_TIMEZONE: boolean;
51
+ static EXCEPT_INTERSECT_SUPPORT_ALL_CLAUSE: boolean;
52
+ static SUPPORTS_MEDIAN: boolean;
53
+ static ALTER_SET_TYPE: string;
54
+ static SUPPORTS_DECODE_CASE: boolean;
55
+ static SUPPORTS_BETWEEN_FLAGS: boolean;
56
+ static LIMIT_FETCH: string;
57
+ static WITH_PROPERTIES_PREFIX: string;
58
+ static get TYPE_MAPPING(): Map<string, string>;
59
+ static get ORIGINAL_TRANSFORMS(): Map<typeof Expression, (this: Generator, e: any) => string>;
60
+ static get RESERVED_KEYWORDS(): Set<string>;
61
+ unnestSql(expression: UnnestExpr): string;
62
+ castSql(expression: CastExpr, options?: {
63
+ safePrefix?: string;
64
+ }): string;
65
+ /**
66
+ * Redshift converts the `TEXT` data type to `VARCHAR(255)` by default when people more generally mean
67
+ * VARCHAR of max length which is `VARCHAR(max)` in Redshift. Therefore if we get a `TEXT` data type
68
+ * without precision we convert it to `VARCHAR(max)` and if it does have precision then we just convert
69
+ * `TEXT` to `VARCHAR`.
70
+ */
71
+ dataTypeSql(expression: DataTypeExpr): string;
72
+ alterSetSql(expression: AlterSetExpr): string;
73
+ arraySql(expression: ArrayExpr): string;
74
+ explodeSql(_expression: ExplodeExpr): string;
75
+ unixToTimeSql(expression: UnixToTimeExpr): string;
76
+ }
77
+ declare class Redshift extends Postgres {
78
+ static DIALECT_NAME: Dialects;
79
+ static get NORMALIZATION_STRATEGY(): NormalizationStrategy;
80
+ static SUPPORTS_USER_DEFINED_TYPES: boolean;
81
+ static INDEX_OFFSET: number;
82
+ static COPY_PARAMS_ARE_CSV: boolean;
83
+ static HEX_LOWERCASE: boolean;
84
+ static HAS_DISTINCT_ARRAY_CONSTRUCTORS: boolean;
85
+ static COALESCE_COMPARISON_NON_STANDARD: boolean;
86
+ static REGEXP_EXTRACT_POSITION_OVERFLOW_RETURNS_NULL: boolean;
87
+ static ARRAY_FUNCS_PROPAGATES_NULLS: boolean;
88
+ static TIME_FORMAT: string;
89
+ static get TIME_MAPPING(): {
90
+ MON: string;
91
+ HH24: string;
92
+ HH: string;
93
+ d: string;
94
+ D: string;
95
+ dd: string;
96
+ DD: string;
97
+ ddd: string;
98
+ DDD: string;
99
+ FMDD: string;
100
+ FMDDD: string;
101
+ FMHH12: string;
102
+ FMHH24: string;
103
+ FMMI: string;
104
+ FMMM: string;
105
+ FMSS: string;
106
+ HH12: string;
107
+ mi: string;
108
+ MI: string;
109
+ mm: string;
110
+ MM: string;
111
+ OF: string;
112
+ ss: string;
113
+ SS: string;
114
+ TMDay: string;
115
+ TMDy: string;
116
+ TMMon: string;
117
+ TMMonth: string;
118
+ TZ: string;
119
+ US: string;
120
+ ww: string;
121
+ WW: string;
122
+ yy: string;
123
+ YY: string;
124
+ yyyy: string;
125
+ YYYY: string;
126
+ };
127
+ static Tokenizer: typeof RedshiftTokenizer;
128
+ static Parser: typeof RedshiftParser;
129
+ static Generator: typeof RedshiftGenerator;
130
+ }
131
+
132
+ export { Redshift };
@@ -0,0 +1,2 @@
1
+ import{b as c}from"../chunk-FCGUTI7Y.js";import"../chunk-ZBFGQPJR.js";import{$c as h,Aq as k,Bb as X,Bl as q,Ca as B,Eo as g,Ff as tt,Fj as pt,Hd as Q,Hp as Mt,Ik as Y,Lg as rt,Lm as b,Lo as mt,Nl as x,Ol as y,Pb as $,Pc as z,Pi as ot,Po as Ot,Qh as it,Qo as Pt,Ri as Et,So as Dt,Ub as M,Uk as lt,Um as _t,Vb as v,Vo as Rt,Wb as W,Wd as U,Yb as L,Zl as w,a as m,ac as f,b as O,bn as xt,bp as yt,c as P,ca as E,d as i,dn as Nt,dq as Lt,en as It,eq as ft,fd as Z,fh as R,gd as j,gl as ut,hg as et,il as St,in as H,ip as gt,nc as J,op as dt,pb as K,pp as u,pq as ht,r as a,rl as At,sq as D,uh as st,uj as ct,va as G,vg as F,wj as Tt,xh as nt,yi as at,yp as Ct,za as V}from"../chunk-KCNOE4DZ.js";var Ut={year:"year",years:"year",yyyy:"year",yy:"year",quarter:"quarter",quarters:"quarter",qq:"quarter",q:"quarter",month:"month",months:"month",mm:"month",m:"month",week:"week",weeks:"week",ww:"week",wk:"week",day:"day",days:"day",dd:"day",d:"day",hour:"hour",hours:"hour",hh:"hour",h:"hour",minute:"minute",minutes:"minute",mi:"minute",second:"second",seconds:"second",ss:"second",s:"second",millisecond:"millisecond",milliseconds:"millisecond",ms:"millisecond",microsecond:"microsecond",microseconds:"microsecond",us:"microsecond",nanosecond:"nanosecond",nanoseconds:"nanosecond",ns:"nanosecond"};function d(A){return l=>{let e=3<=l.length,t=e?l[2]:void 0,r=e?l[0]:void 0;if(r){let _=r.name?.toLowerCase();_&&Ut[_]&&(r=g(Ut[_])),r instanceof M&&(r=new M({this:r.name.toUpperCase()}))}let o=new A({this:t,expression:E(l,1),unit:r});return A===x&&o.setArgKey("returnType",f.build("TIMESTAMP")),o}}var Ft,Yt,qt,wt,bt,N,T=class extends(bt=c.Parser,wt=[a],qt=[a],Yt=[a],Ft=[a],bt){static get ID_VAR_TOKENS(){return new Set([...V.ID_VAR_TOKENS,"sessionUser","currentCatalog","straightJoin"])}static get FUNCTIONS(){return(()=>{let e={...c.Parser.FUNCTIONS,ADD_MONTHS:(t,r)=>new x({this:E(t,0),expression:E(t,1),unit:g("MONTH"),returnType:f.build("TIMESTAMP")}),CONVERT_TIMEZONE:t=>G(t,{defaultSourceTz:"UTC"}),DATEADD:d(x),DATE_ADD:d(x),DATEDIFF:d(y),DATE_DIFF:d(y),GETDATE:t=>R.fromArgList(t),LISTAGG:t=>H.fromArgList(t),REGEXP_SUBSTR:t=>new Y({this:E(t,0),expression:E(t,1),position:E(t,2),occurrence:E(t,3),parameters:E(t,4)}),SPLIT_TO_ARRAY:t=>new F({this:E(t,0),expression:E(t,1)||h.string(",")}),STRTOL:t=>q.fromArgList(t)};return delete e.GET_BIT,e})()}static get NO_PAREN_FUNCTION_PARSERS(){return{...c.Parser.NO_PAREN_FUNCTION_PARSERS,APPROXIMATE:function(){return this.parseApproximateCount()},SYSDATE:function(){return this.expression(R,{sysdate:!0})}}}parseTable(e={}){let t=this.match("unpivot"),r=super.parseTable(e);return t?this.expression(L,{this:r,unpivot:!0}):r}parseConvert(e){let{safe:t}=e,r=this.parseTypes();this.match("comma");let o=this.parseBitwise();return this.expression(xt,{this:o,to:r,safe:t})}parseApproximateCount(){let e=this.index-1,t=this.parseFunction();if(t instanceof It&&t.args.this instanceof J)return this.expression(b,{this:E(t.args.this.args.expressions||[],0)});this.retreat(e)}static get TABLE_ALIAS_TOKENS(){return new Set([...c.Parser.TABLE_ALIAS_TOKENS,"straightJoin"])}};N=m(bt),i(N,10,"ID_VAR_TOKENS",wt,T),i(N,10,"FUNCTIONS",qt,T),i(N,10,"NO_PAREN_FUNCTION_PARSERS",Yt,T),i(N,10,"TABLE_ALIAS_TOKENS",Ft,T),O(N,T),P(N,3,T),T.SUPPORTS_IMPLICIT_UNNEST=!0;var Ht,kt,Gt,Vt,Bt,Kt,S,p=class extends(Kt=c.Tokenizer,Bt=[a],Vt=[a],Gt=[a],kt=[a],Ht=[a],Kt){static get BIT_STRINGS(){return[]}static get HEX_STRINGS(){return[]}static get STRING_ESCAPES(){return["\\","'"]}static get ORIGINAL_KEYWORDS(){let e={...c.Tokenizer.KEYWORDS,"(+)":"joinMarker",HLLSKETCH:"hllsketch",MINUS:"except",SUPER:"super",TOP:"top",UNLOAD:"command",VARBYTE:"varbinary","BINARY VARYING":"varbinary"};return delete e.VALUES,e}static get SINGLE_TOKENS(){let e={...c.Tokenizer.SINGLE_TOKENS};return delete e["#"],e}};S=m(Kt),i(S,10,"BIT_STRINGS",Bt,p),i(S,10,"HEX_STRINGS",Vt,p),i(S,10,"STRING_ESCAPES",Gt,p),i(S,10,"ORIGINAL_KEYWORDS",kt,p),i(S,10,"SINGLE_TOKENS",Ht,p),O(S,p),P(S,3,p);var Xt,$t,vt,Wt,Jt,I,s=class extends(Jt=c.Generator,Wt=[a],vt=[a],$t=[a],Xt=[a],Jt){static get AFTER_HAVING_MODIFIER_TRANSFORMS(){let e=new Map(super.AFTER_HAVING_MODIFIER_TRANSFORMS);return["cluster","distribute","sort"].forEach(t=>e.delete(t)),e}static get TYPE_MAPPING(){return new Map([...c.Generator.TYPE_MAPPING,["binary","VARBYTE"],["blob","VARBYTE"],["int","INTEGER"],["timetz","TIME"],["timestamptz","TIMESTAMP"],["varbinary","VARBYTE"],["rowversion","VARBYTE"]])}static get ORIGINAL_TRANSFORMS(){let e=new Map([...c.Generator.TRANSFORMS,[et,Mt("ARRAY_CONCAT")],[rt,Lt],[Nt,ft],[b,function(t){return`APPROXIMATE COUNT(DISTINCT ${this.sql(t,"this")})`}],[R,function(t){return t.args.sysdate?"SYSDATE":"GETDATE()"}],[st,D("DATEADD")],[nt,D("DATEDIFF")],[Z,function(t){return this.func("DISTKEY",[t.args.this])}],[j,function(t){return this.nakedProperty(t)}],[at,function(t){return this.explodeSql(t)}],[tt,u("FARMFINGERPRINT64")],[q,u("STRTOL")],[z,ht],[ct,k("JSON_EXTRACT_PATH_TEXT")],[Tt,k("JSON_EXTRACT_PATH_TEXT")],[H,u("LISTAGG")],[Et,function(t){return this.func("UPPER",[this.func("TO_HEX",[this.sql(t,"this")])])}],[Y,u("REGEXP_SUBSTR")],[U,Ot([gt,Dt,yt,Rt,Pt])],[Q,function(t){let r=t.args.this,o=r instanceof B&&(r instanceof v||r instanceof $)?this.expressions(r,{flat:!0}):this.sql(r);return`${t.args.compound?"COMPOUND ":""}SORTKEY(${o})`}],[At,function(t){return`${this.sql(t.args.this)} LIKE ${this.sql(t.args.expression)} || '%'`}],[F,u("SPLIT_TO_ARRAY")],[W,Ct],[x,D("DATEADD")],[y,D("DATEDIFF")],[w,function(t){return this.unixToTimeSql(t)}],[St,function(t){return this.func("SHA2",[t.args.this,t.args.length||h.number(256)])}]]);return e.delete(L),e.delete(pt),e.delete(_t),e.delete(it),e.delete(ut),e.delete(ot),e.delete(lt),e}static get RESERVED_KEYWORDS(){return new Set(["aes128","aes256","all","allowoverwrite","analyse","analyze","and","any","array","as","asc","authorization","az64","backup","between","binary","blanksasnull","both","bytedict","bzip2","case","cast","check","collate","column","constraint","create","credentials","cross","current_date","current_time","current_timestamp","current_user","current_user_id","default","deferrable","deflate","defrag","delta","delta32k","desc","disable","distinct","do","else","emptyasnull","enable","encode","encrypt","encryption","end","except","explicit","false","for","foreign","freeze","from","full","globaldict256","globaldict64k","grant","group","gzip","having","identity","ignore","ilike","in","initially","inner","intersect","interval","into","is","isnull","join","leading","left","like","limit","localtime","localtimestamp","lun","luns","lzo","lzop","minus","mostly16","mostly32","mostly8","natural","new","not","notnull","null","nulls","off","offline","offset","oid","old","on","only","open","or","order","outer","overlaps","parallel","partition","percent","permissions","pivot","placing","primary","raw","readratio","recover","references","rejectlog","resort","respect","restore","right","select","session_user","similar","snapshot","some","sysdate","system","table","tag","tdes","text255","text32k","then","timestamp","to","top","trailing","true","truncatecolumns","type","union","unique","unnest","unpivot","user","using","verbose","wallet","when","where","with","without"])}unnestSql(e){let t=e.args.expressions||[],r=t.length;if(r!==1)return this.unsupported(`Unsupported number of arguments in UNNEST: ${r}`),"";if(e.findAncestor(U)&&!e.findAncestor(K,X))return this.unsupported("Unsupported UNNEST when not used in FROM/JOIN clauses"),"";let o=this.sql(E(t,0)),_=this.expressions(e.args.alias,{key:"columns",flat:!0});return _?`${o} AS ${_}`:o}castSql(e,t={}){let{safePrefix:r}=t;return mt(e.args.to,"json")?this.sql(e.args.this):super.castSql(e,{safePrefix:r})}dataTypeSql(e){if(e.isType("text")){e.setArgKey("this","varchar");let t=e.args.expressions;(!t||t.length===0)&&e.append("expressions",g("MAX"))}return super.dataTypeSql(e)}alterSetSql(e){let t=this.expressions(e,{flat:!0});t=t?` TABLE PROPERTIES (${t})`:"";let r=this.sql(e,"location");r=r?` LOCATION ${r}`:"";let o=this.expressions(e,{key:"fileFormat",flat:!0,sep:" "});return o=o?` FILE FORMAT ${o}`:"",`SET${t}${r}${o}`}arraySql(e){return e.args.bracketNotation?super.arraySql(e):u("ARRAY").call(this,e)}explodeSql(e){return this.unsupported("Unsupported EXPLODE() function"),""}unixToTimeSql(e){let t=e.args.scale,r=this.sql(e.args.this);return t!==void 0&&t!==w.SECONDS&&t.isNumber&&(r=`(${r} / POWER(10, ${t.args.this}))`),`(TIMESTAMP 'epoch' + ${r} * INTERVAL '1 SECOND')`}};I=m(Jt),i(I,10,"AFTER_HAVING_MODIFIER_TRANSFORMS",Wt,s),i(I,10,"TYPE_MAPPING",vt,s),i(I,10,"ORIGINAL_TRANSFORMS",$t,s),i(I,10,"RESERVED_KEYWORDS",Xt,s),O(I,s),P(I,3,s),s.TRY_SUPPORTED=!1,s.SUPPORTS_UESCAPE=!1,s.LOCKING_READS_SUPPORTED=!1,s.QUERY_HINTS=!1,s.VALUES_AS_TABLE=!1,s.TZ_TO_WITH_TIME_ZONE=!0,s.NVL2_SUPPORTED=!0,s.LAST_DAY_SUPPORTS_DATE_PART=!1,s.CAN_IMPLEMENT_ARRAY_ANY=!1,s.MULTI_ARG_DISTINCT=!0,s.COPY_PARAMS_ARE_WRAPPED=!1,s.HEX_FUNC="TO_HEX",s.PARSE_JSON_NAME="JSON_PARSE",s.ARRAY_CONCAT_IS_VAR_LEN=!1,s.SUPPORTS_CONVERT_TIMEZONE=!0,s.EXCEPT_INTERSECT_SUPPORT_ALL_CLAUSE=!1,s.SUPPORTS_MEDIAN=!0,s.ALTER_SET_TYPE="TYPE",s.SUPPORTS_DECODE_CASE=!0,s.SUPPORTS_BETWEEN_FLAGS=!1,s.LIMIT_FETCH="LIMIT",s.WITH_PROPERTIES_PREFIX=" ";var zt,Zt,jt,C,n=class extends(jt=c,Zt=[a],zt=[a],jt){static get NORMALIZATION_STRATEGY(){return"caseInsensitive"}static get TIME_MAPPING(){return{...c.TIME_MAPPING,MON:"%b",HH24:"%H",HH:"%I"}}};C=m(jt),i(C,10,"NORMALIZATION_STRATEGY",Zt,n),i(C,10,"TIME_MAPPING",zt,n),O(C,n),P(C,3,n),n.DIALECT_NAME="redshift",n.SUPPORTS_USER_DEFINED_TYPES=!1,n.INDEX_OFFSET=0,n.COPY_PARAMS_ARE_CSV=!1,n.HEX_LOWERCASE=!0,n.HAS_DISTINCT_ARRAY_CONSTRUCTORS=!0,n.COALESCE_COMPARISON_NON_STANDARD=!0,n.REGEXP_EXTRACT_POSITION_OVERFLOW_RETURNS_NULL=!1,n.ARRAY_FUNCS_PROPAGATES_NULLS=!0,n.TIME_FORMAT="'YYYY-MM-DD HH24:MI:SS'",n.Tokenizer=p,n.Parser=T,n.Generator=s;dt.register("redshift",n);export{n as Redshift};
2
+ //# sourceMappingURL=redshift.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/dialects/redshift.ts"],"sourcesContent":["import {\n cache,\n} from '../port_internals';\nimport type {\n CastExpr, UnnestExpr,\n ArrayExpr,\n AlterSetExpr,\n} from '../expressions';\nimport {\n AnyValueExpr,\n ApproxDistinctExpr,\n ArrayConcatExpr,\n ConcatExpr,\n ConcatWsExpr,\n CountExpr,\n CurrentTimestampExpr,\n DataTypeExpr,\n DataTypeExprKind,\n DateAddExpr,\n DateDiffExpr,\n DistinctExpr,\n DistKeyPropertyExpr,\n DistStylePropertyExpr,\n ExplodeExpr,\n FarmFingerprintExpr,\n FromBaseExpr,\n FromExpr,\n GeneratedAsIdentityColumnConstraintExpr,\n GetbitExpr,\n GroupConcatExpr,\n HexExpr,\n isType,\n JoinExpr,\n JsonExtractExpr,\n JsonExtractScalarExpr,\n LastDayExpr,\n LiteralExpr,\n ParseJsonExpr,\n PivotExpr,\n RegexpExtractExpr,\n RoundExpr, SelectExpr, Sha2DigestExpr, Sha2Expr, SortKeyPropertyExpr, StartsWithExpr, StringToArrayExpr, TableSampleExpr, TryCastExpr, TsOrDsAddExpr, TsOrDsDiffExpr, UnixToTimeExpr, var_,\n Expression, SchemaExpr, TupleExpr, VarExpr,\n} from '../expressions';\nimport type {\n Generator,\n} from '../generator';\nimport {\n seqGet,\n} from '../helper';\nimport {\n Parser, buildConvertTimezone,\n} from '../parser';\nimport {\n TokenType,\n} from '../tokens';\nimport {\n eliminateDistinctOn, eliminateSemiAndAntiJoins, eliminateWindowClause, preprocess, unnestGenerateDateArrayUsingRecursiveCte, unqualifyUnnest,\n} from '../transforms';\nimport {\n arrayConcatSql,\n concatToDPipeSql,\n concatWsToDPipeSql,\n Dialect,\n Dialects,\n generatedAsIdentityColumnConstraintSql,\n jsonExtractSegments,\n NormalizationStrategy,\n noTablesampleSql,\n renameFunc,\n dateDeltaSql,\n} from './dialect';\nimport {\n Postgres,\n} from './postgres';\n\n// Map for DATEADD unit normalization (lowercase variants map to normalized lowercase)\nconst DATE_DELTA_INTERVAL: Record<string, string> = {\n year: 'year',\n years: 'year',\n yyyy: 'year',\n yy: 'year',\n quarter: 'quarter',\n quarters: 'quarter',\n qq: 'quarter',\n q: 'quarter',\n month: 'month',\n months: 'month',\n mm: 'month',\n m: 'month',\n week: 'week',\n weeks: 'week',\n ww: 'week',\n wk: 'week',\n day: 'day',\n days: 'day',\n dd: 'day',\n d: 'day',\n hour: 'hour',\n hours: 'hour',\n hh: 'hour',\n h: 'hour',\n minute: 'minute',\n minutes: 'minute',\n mi: 'minute',\n second: 'second',\n seconds: 'second',\n ss: 'second',\n s: 'second',\n millisecond: 'millisecond',\n milliseconds: 'millisecond',\n ms: 'millisecond',\n microsecond: 'microsecond',\n microseconds: 'microsecond',\n us: 'microsecond',\n nanosecond: 'nanosecond',\n nanoseconds: 'nanosecond',\n ns: 'nanosecond',\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction buildDateDelta<T extends Expression> (ExprClass: new (args: any) => T) {\n return (args: Expression[]): T => {\n const unitBased = 3 <= args.length;\n const thisArg = unitBased ? args[2] : undefined;\n let unit = unitBased ? args[0] : undefined;\n\n if (unit) {\n const unitName = unit.name?.toLowerCase();\n if (unitName && DATE_DELTA_INTERVAL[unitName]) {\n unit = var_(DATE_DELTA_INTERVAL[unitName]);\n }\n if (unit instanceof VarExpr) {\n unit = new VarExpr({\n this: unit.name.toUpperCase(),\n });\n }\n }\n\n const expr = new ExprClass({\n this: thisArg,\n expression: seqGet(args, 1),\n unit,\n });\n\n if (ExprClass === TsOrDsAddExpr as unknown) {\n expr.setArgKey('returnType', DataTypeExpr.build('TIMESTAMP'));\n }\n\n return expr;\n };\n}\n\nclass RedshiftParser extends Postgres.Parser {\n @cache\n static get ID_VAR_TOKENS (): Set<TokenType> {\n return new Set([\n ...Parser.ID_VAR_TOKENS,\n TokenType.SESSION_USER,\n TokenType.CURRENT_CATALOG,\n TokenType.STRAIGHT_JOIN,\n ]);\n }\n\n @cache\n static get FUNCTIONS (): Record<string, (args: Expression[], options: {dialect: Dialect}) => Expression> {\n return (() => {\n const functions: Record<string, (args: Expression[], options: {dialect: Dialect}) => Expression> = {\n ...Postgres.Parser.FUNCTIONS,\n ADD_MONTHS: (args: Expression[], _options: {dialect: Dialect}) =>\n new TsOrDsAddExpr({\n this: seqGet(args, 0),\n expression: seqGet(args, 1),\n unit: var_('MONTH'),\n returnType: DataTypeExpr.build('TIMESTAMP'),\n }),\n CONVERT_TIMEZONE: (args: Expression[]) => buildConvertTimezone(args, {\n defaultSourceTz: 'UTC',\n }),\n DATEADD: buildDateDelta(TsOrDsAddExpr),\n DATE_ADD: buildDateDelta(TsOrDsAddExpr),\n DATEDIFF: buildDateDelta(TsOrDsDiffExpr),\n DATE_DIFF: buildDateDelta(TsOrDsDiffExpr),\n GETDATE: (args: unknown[]) => CurrentTimestampExpr.fromArgList(args),\n LISTAGG: (args: unknown[]) => GroupConcatExpr.fromArgList(args),\n REGEXP_SUBSTR: (args: Expression[]) =>\n new RegexpExtractExpr({\n this: seqGet(args, 0),\n expression: seqGet(args, 1),\n position: seqGet(args, 2),\n occurrence: seqGet(args, 3),\n parameters: seqGet(args, 4),\n }),\n SPLIT_TO_ARRAY: (args: Expression[]) =>\n new StringToArrayExpr({\n this: seqGet(args, 0),\n expression: seqGet(args, 1) || LiteralExpr.string(','),\n }),\n STRTOL: (args: unknown[]) => FromBaseExpr.fromArgList(args),\n };\n delete functions['GET_BIT'];\n return functions;\n })();\n }\n\n @cache\n static get NO_PAREN_FUNCTION_PARSERS (): Partial<Record<string, (this: Parser) => Expression | undefined>> {\n return {\n ...Postgres.Parser.NO_PAREN_FUNCTION_PARSERS,\n APPROXIMATE: function (this: Parser) {\n return (this as RedshiftParser).parseApproximateCount();\n },\n SYSDATE: function (this: Parser) {\n return this.expression(CurrentTimestampExpr, {\n sysdate: true,\n });\n },\n };\n }\n\n static SUPPORTS_IMPLICIT_UNNEST = true;\n\n parseTable (options: {\n schema?: boolean;\n joins?: boolean;\n aliasTokens?: Set<TokenType>;\n parseBracket?: boolean;\n isDbReference?: boolean;\n parsePartition?: boolean;\n consumePipe?: boolean;\n } = {}): Expression | undefined {\n const unpivot = this.match(TokenType.UNPIVOT);\n const table = super.parseTable(options);\n\n return unpivot\n ? this.expression(PivotExpr, {\n this: table,\n unpivot: true,\n })\n : table;\n }\n\n parseConvert (options: {\n strict: boolean;\n safe?: boolean;\n }): Expression | undefined {\n const {\n safe,\n } = options;\n const to = this.parseTypes();\n this.match(TokenType.COMMA);\n const thisNode = this.parseBitwise();\n return this.expression(TryCastExpr, {\n this: thisNode,\n to: to,\n safe,\n });\n }\n\n parseApproximateCount (): ApproxDistinctExpr | undefined {\n const index = this.index - 1;\n const func = this.parseFunction();\n\n if (func instanceof CountExpr && func.args.this instanceof DistinctExpr) {\n return this.expression(ApproxDistinctExpr, {\n this: seqGet(func.args.this.args.expressions || [\n ], 0),\n });\n }\n this.retreat(index);\n return undefined;\n }\n\n // port from _Dialect metaclass logic\n @cache\n static get TABLE_ALIAS_TOKENS (): Set<TokenType> {\n return new Set([\n ...Postgres.Parser.TABLE_ALIAS_TOKENS,\n TokenType.STRAIGHT_JOIN,\n ]);\n }\n}\nclass RedshiftTokenizer extends Postgres.Tokenizer {\n @cache\n static get BIT_STRINGS () {\n return [\n ];\n }\n\n @cache\n static get HEX_STRINGS () {\n return [\n ];\n }\n\n @cache\n static get STRING_ESCAPES () {\n return [\n '\\\\',\n '\\'',\n ];\n }\n\n @cache\n static get ORIGINAL_KEYWORDS (): Record<string, TokenType> {\n const keywords: Record<string, TokenType> = {\n ...Postgres.Tokenizer.KEYWORDS,\n '(+)': TokenType.JOIN_MARKER,\n 'HLLSKETCH': TokenType.HLLSKETCH,\n 'MINUS': TokenType.EXCEPT,\n 'SUPER': TokenType.SUPER,\n 'TOP': TokenType.TOP,\n 'UNLOAD': TokenType.COMMAND,\n 'VARBYTE': TokenType.VARBINARY,\n 'BINARY VARYING': TokenType.VARBINARY,\n };\n delete keywords['VALUES'];\n return keywords;\n }\n\n @cache\n static get SINGLE_TOKENS (): Record<string, TokenType> {\n const singleTokens: Record<string, TokenType> = {\n ...Postgres.Tokenizer.SINGLE_TOKENS,\n };\n delete singleTokens['#'];\n return singleTokens;\n }\n}\n\nclass RedshiftGenerator extends Postgres.Generator {\n // port from _Dialect metaclass logic\n @cache\n static get AFTER_HAVING_MODIFIER_TRANSFORMS () {\n const modifiers = new Map(super.AFTER_HAVING_MODIFIER_TRANSFORMS);\n [\n 'cluster',\n 'distribute',\n 'sort',\n ].forEach((m) => modifiers.delete(m));\n return modifiers;\n }\n\n // port from _Dialect metaclass logic\n static TRY_SUPPORTED = false;\n // port from _Dialect metaclass logic\n static SUPPORTS_UESCAPE = false;\n static LOCKING_READS_SUPPORTED = false;\n static QUERY_HINTS = false;\n static VALUES_AS_TABLE = false;\n static TZ_TO_WITH_TIME_ZONE = true;\n static NVL2_SUPPORTED = true;\n static LAST_DAY_SUPPORTS_DATE_PART = false;\n static CAN_IMPLEMENT_ARRAY_ANY = false;\n static MULTI_ARG_DISTINCT = true;\n static COPY_PARAMS_ARE_WRAPPED = false;\n static HEX_FUNC = 'TO_HEX';\n static PARSE_JSON_NAME = 'JSON_PARSE';\n static ARRAY_CONCAT_IS_VAR_LEN = false;\n static SUPPORTS_CONVERT_TIMEZONE = true;\n static EXCEPT_INTERSECT_SUPPORT_ALL_CLAUSE = false;\n static SUPPORTS_MEDIAN = true;\n static ALTER_SET_TYPE = 'TYPE';\n static SUPPORTS_DECODE_CASE = true;\n static SUPPORTS_BETWEEN_FLAGS = false;\n static LIMIT_FETCH = 'LIMIT';\n\n static WITH_PROPERTIES_PREFIX = ' ';\n\n @cache\n static get TYPE_MAPPING () {\n return new Map([\n ...Postgres.Generator.TYPE_MAPPING,\n [\n DataTypeExprKind.BINARY,\n 'VARBYTE',\n ],\n [\n DataTypeExprKind.BLOB,\n 'VARBYTE',\n ],\n [\n DataTypeExprKind.INT,\n 'INTEGER',\n ],\n [\n DataTypeExprKind.TIMETZ,\n 'TIME',\n ],\n [\n DataTypeExprKind.TIMESTAMPTZ,\n 'TIMESTAMP',\n ],\n [\n DataTypeExprKind.VARBINARY,\n 'VARBYTE',\n ],\n [\n DataTypeExprKind.ROWVERSION,\n 'VARBYTE',\n ],\n ]);\n }\n\n @cache\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static get ORIGINAL_TRANSFORMS (): Map<typeof Expression, (this: Generator, e: any) => string> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const transforms = new Map<typeof Expression, (this: Generator, e: any) => string>([\n ...Postgres.Generator.TRANSFORMS,\n [\n ArrayConcatExpr,\n arrayConcatSql('ARRAY_CONCAT'),\n ],\n [\n ConcatExpr,\n concatToDPipeSql,\n ],\n [\n ConcatWsExpr,\n concatWsToDPipeSql,\n ],\n [\n ApproxDistinctExpr,\n function (this: Generator, e: ApproxDistinctExpr) {\n return `APPROXIMATE COUNT(DISTINCT ${this.sql(e, 'this')})`;\n },\n ],\n [\n CurrentTimestampExpr,\n function (this: Generator, e: CurrentTimestampExpr) {\n return e.args.sysdate ? 'SYSDATE' : 'GETDATE()';\n },\n ],\n [\n DateAddExpr,\n dateDeltaSql('DATEADD'),\n ],\n [\n DateDiffExpr,\n dateDeltaSql('DATEDIFF'),\n ],\n [\n DistKeyPropertyExpr,\n function (this: Generator, e: DistKeyPropertyExpr) {\n return this.func('DISTKEY', [\n e.args.this,\n ]);\n },\n ],\n [\n DistStylePropertyExpr,\n function (this: Generator, e: DistStylePropertyExpr) {\n return (this as RedshiftGenerator).nakedProperty(e);\n },\n ],\n [\n ExplodeExpr,\n function (this: Generator, e: ExplodeExpr) {\n return (this as RedshiftGenerator).explodeSql(e);\n },\n ],\n [\n FarmFingerprintExpr,\n renameFunc('FARMFINGERPRINT64'),\n ],\n [\n FromBaseExpr,\n renameFunc('STRTOL'),\n ],\n [\n GeneratedAsIdentityColumnConstraintExpr,\n generatedAsIdentityColumnConstraintSql,\n ],\n [\n JsonExtractExpr,\n jsonExtractSegments('JSON_EXTRACT_PATH_TEXT'),\n ],\n [\n JsonExtractScalarExpr,\n jsonExtractSegments('JSON_EXTRACT_PATH_TEXT'),\n ],\n [\n GroupConcatExpr,\n renameFunc('LISTAGG'),\n ],\n [\n HexExpr,\n function (this: Generator, e: HexExpr) {\n return this.func('UPPER', [\n this.func('TO_HEX', [\n this.sql(e, 'this'),\n ]),\n ]);\n },\n ],\n [\n RegexpExtractExpr,\n renameFunc('REGEXP_SUBSTR'),\n ],\n [\n SelectExpr,\n preprocess([\n eliminateWindowClause,\n eliminateDistinctOn,\n eliminateSemiAndAntiJoins,\n unqualifyUnnest,\n unnestGenerateDateArrayUsingRecursiveCte,\n ]),\n ],\n [\n SortKeyPropertyExpr,\n function (this: Generator, e: SortKeyPropertyExpr) {\n const value = e.args.this;\n const sql = value instanceof Expression && (value instanceof SchemaExpr || value instanceof TupleExpr)\n ? this.expressions(value, {\n flat: true,\n })\n : this.sql(value);\n return `${e.args.compound ? 'COMPOUND ' : ''}SORTKEY(${sql})`;\n },\n ],\n [\n StartsWithExpr,\n function (this: Generator, e: StartsWithExpr) {\n return `${this.sql(e.args.this)} LIKE ${this.sql(e.args.expression)} || '%'`;\n },\n ],\n [\n StringToArrayExpr,\n renameFunc('SPLIT_TO_ARRAY'),\n ],\n [\n TableSampleExpr,\n noTablesampleSql,\n ],\n [\n TsOrDsAddExpr,\n dateDeltaSql('DATEADD'),\n ],\n [\n TsOrDsDiffExpr,\n dateDeltaSql('DATEDIFF'),\n ],\n [\n UnixToTimeExpr,\n function (this: Generator, e: UnixToTimeExpr) {\n return (this as RedshiftGenerator).unixToTimeSql(e);\n },\n ],\n [\n Sha2DigestExpr,\n function (this: Generator, e: Sha2DigestExpr) {\n return this.func('SHA2', [\n e.args.this,\n e.args.length || LiteralExpr.number(256),\n ]);\n },\n ],\n ]);\n\n transforms.delete(PivotExpr);\n transforms.delete(ParseJsonExpr);\n transforms.delete(AnyValueExpr);\n transforms.delete(LastDayExpr);\n transforms.delete(Sha2Expr);\n transforms.delete(GetbitExpr);\n transforms.delete(RoundExpr);\n\n return transforms;\n }\n\n @cache\n static get RESERVED_KEYWORDS () {\n return new Set([\n 'aes128',\n 'aes256',\n 'all',\n 'allowoverwrite',\n 'analyse',\n 'analyze',\n 'and',\n 'any',\n 'array',\n 'as',\n 'asc',\n 'authorization',\n 'az64',\n 'backup',\n 'between',\n 'binary',\n 'blanksasnull',\n 'both',\n 'bytedict',\n 'bzip2',\n 'case',\n 'cast',\n 'check',\n 'collate',\n 'column',\n 'constraint',\n 'create',\n 'credentials',\n 'cross',\n 'current_date',\n 'current_time',\n 'current_timestamp',\n 'current_user',\n 'current_user_id',\n 'default',\n 'deferrable',\n 'deflate',\n 'defrag',\n 'delta',\n 'delta32k',\n 'desc',\n 'disable',\n 'distinct',\n 'do',\n 'else',\n 'emptyasnull',\n 'enable',\n 'encode',\n 'encrypt',\n 'encryption',\n 'end',\n 'except',\n 'explicit',\n 'false',\n 'for',\n 'foreign',\n 'freeze',\n 'from',\n 'full',\n 'globaldict256',\n 'globaldict64k',\n 'grant',\n 'group',\n 'gzip',\n 'having',\n 'identity',\n 'ignore',\n 'ilike',\n 'in',\n 'initially',\n 'inner',\n 'intersect',\n 'interval',\n 'into',\n 'is',\n 'isnull',\n 'join',\n 'leading',\n 'left',\n 'like',\n 'limit',\n 'localtime',\n 'localtimestamp',\n 'lun',\n 'luns',\n 'lzo',\n 'lzop',\n 'minus',\n 'mostly16',\n 'mostly32',\n 'mostly8',\n 'natural',\n 'new',\n 'not',\n 'notnull',\n 'null',\n 'nulls',\n 'off',\n 'offline',\n 'offset',\n 'oid',\n 'old',\n 'on',\n 'only',\n 'open',\n 'or',\n 'order',\n 'outer',\n 'overlaps',\n 'parallel',\n 'partition',\n 'percent',\n 'permissions',\n 'pivot',\n 'placing',\n 'primary',\n 'raw',\n 'readratio',\n 'recover',\n 'references',\n 'rejectlog',\n 'resort',\n 'respect',\n 'restore',\n 'right',\n 'select',\n 'session_user',\n 'similar',\n 'snapshot',\n 'some',\n 'sysdate',\n 'system',\n 'table',\n 'tag',\n 'tdes',\n 'text255',\n 'text32k',\n 'then',\n 'timestamp',\n 'to',\n 'top',\n 'trailing',\n 'true',\n 'truncatecolumns',\n 'type',\n 'union',\n 'unique',\n 'unnest',\n 'unpivot',\n 'user',\n 'using',\n 'verbose',\n 'wallet',\n 'when',\n 'where',\n 'with',\n 'without',\n ]);\n }\n\n unnestSql (expression: UnnestExpr): string {\n const args = expression.args.expressions || [\n ];\n const numArgs = args.length;\n\n if (numArgs !== 1) {\n this.unsupported(`Unsupported number of arguments in UNNEST: ${numArgs}`);\n return '';\n }\n\n if (expression.findAncestor(SelectExpr) && !expression.findAncestor<FromExpr | JoinExpr>(FromExpr, JoinExpr)) {\n this.unsupported('Unsupported UNNEST when not used in FROM/JOIN clauses');\n return '';\n }\n\n const arg = this.sql(seqGet(args, 0));\n\n const alias = this.expressions(expression.args.alias, {\n key: 'columns',\n flat: true,\n });\n return alias ? `${arg} AS ${alias}` : arg;\n }\n\n castSql (expression: CastExpr, options: {safePrefix?: string} = {}): string {\n const {\n safePrefix,\n } = options;\n if (isType(expression.args.to, DataTypeExprKind.JSON)) {\n // Redshift doesn't support a JSON type, so casting to it is treated as a noop\n return this.sql(expression.args.this);\n }\n\n return super.castSql(expression, {\n safePrefix,\n });\n }\n\n /**\n * Redshift converts the `TEXT` data type to `VARCHAR(255)` by default when people more generally mean\n * VARCHAR of max length which is `VARCHAR(max)` in Redshift. Therefore if we get a `TEXT` data type\n * without precision we convert it to `VARCHAR(max)` and if it does have precision then we just convert\n * `TEXT` to `VARCHAR`.\n */\n dataTypeSql (expression: DataTypeExpr): string {\n if (expression.isType(DataTypeExprKind.TEXT)) {\n expression.setArgKey('this', DataTypeExprKind.VARCHAR);\n const precision = expression.args.expressions;\n\n if (!precision || precision.length === 0) {\n expression.append('expressions', var_('MAX'));\n }\n }\n\n return super.dataTypeSql(expression);\n }\n\n alterSetSql (expression: AlterSetExpr): string {\n let exprs = this.expressions(expression, {\n flat: true,\n });\n exprs = exprs ? ` TABLE PROPERTIES (${exprs})` : '';\n\n let location = this.sql(expression, 'location');\n location = location ? ` LOCATION ${location}` : '';\n\n let fileFormat = this.expressions(expression, {\n key: 'fileFormat',\n flat: true,\n sep: ' ',\n });\n fileFormat = fileFormat ? ` FILE FORMAT ${fileFormat}` : '';\n\n return `SET${exprs}${location}${fileFormat}`;\n }\n\n arraySql (expression: ArrayExpr): string {\n if (expression.args.bracketNotation) {\n return super.arraySql(expression);\n }\n\n return renameFunc('ARRAY').call(this, expression);\n }\n\n explodeSql (_expression: ExplodeExpr): string {\n this.unsupported('Unsupported EXPLODE() function');\n return '';\n }\n\n unixToTimeSql (expression: UnixToTimeExpr): string {\n const scale = expression.args.scale;\n let thisSql = this.sql(expression.args.this);\n\n if (scale !== undefined && scale !== UnixToTimeExpr.SECONDS && (scale as LiteralExpr).isNumber) {\n thisSql = `(${thisSql} / POWER(10, ${(scale as LiteralExpr).args.this}))`;\n }\n\n return `(TIMESTAMP 'epoch' + ${thisSql} * INTERVAL '1 SECOND')`;\n }\n}\n\nexport class Redshift extends Postgres {\n static DIALECT_NAME = Dialects.REDSHIFT;\n\n @cache\n static get NORMALIZATION_STRATEGY () {\n return NormalizationStrategy.CASE_INSENSITIVE;\n }\n\n static SUPPORTS_USER_DEFINED_TYPES = false;\n static INDEX_OFFSET = 0;\n static COPY_PARAMS_ARE_CSV = false;\n static HEX_LOWERCASE = true;\n static HAS_DISTINCT_ARRAY_CONSTRUCTORS = true;\n static COALESCE_COMPARISON_NON_STANDARD = true;\n static REGEXP_EXTRACT_POSITION_OVERFLOW_RETURNS_NULL = false;\n static ARRAY_FUNCS_PROPAGATES_NULLS = true;\n\n static TIME_FORMAT = '\\'YYYY-MM-DD HH24:MI:SS\\'';\n\n @cache\n static get TIME_MAPPING () {\n return {\n ...Postgres.TIME_MAPPING,\n MON: '%b',\n HH24: '%H',\n HH: '%I',\n };\n }\n\n static Tokenizer = RedshiftTokenizer;\n static Parser = RedshiftParser;\n static Generator = RedshiftGenerator;\n}\n\nDialect.register(Dialects.REDSHIFT, Redshift);\n"],"mappings":"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AAQ,CACvBA,EAAE,KAAK,KACPA,EAAE,KAAK,QAAUzC,EAAY,OAAO,GAAG,CACzC,CAAC,CACH,CACF,CACF,CAAC,EAED,OAAAkC,EAAW,OAAO7B,CAAS,EAC3B6B,EAAW,OAAOwC,EAAa,EAC/BxC,EAAW,OAAOyC,EAAY,EAC9BzC,EAAW,OAAO0C,EAAW,EAC7B1C,EAAW,OAAO2C,EAAQ,EAC1B3C,EAAW,OAAO4C,EAAU,EAC5B5C,EAAW,OAAO6C,EAAS,EAEpB7C,CACT,CAGA,WAAW,mBAAqB,CAC9B,OAAO,IAAI,IAAI,CACb,SACA,SACA,MACA,iBACA,UACA,UACA,MACA,MACA,QACA,KACA,MACA,gBACA,OACA,SACA,UACA,SACA,eACA,OACA,WACA,QACA,OACA,OACA,QACA,UACA,SACA,aACA,SACA,cACA,QACA,eACA,eACA,oBACA,eACA,kBACA,UACA,aACA,UACA,SACA,QACA,WACA,OACA,UACA,WACA,KACA,OACA,cACA,SACA,SACA,UACA,aACA,MACA,SACA,WACA,QACA,MACA,UACA,SACA,OACA,OACA,gBACA,gBACA,QACA,QACA,OACA,SACA,WACA,SACA,QACA,KACA,YACA,QACA,YACA,WACA,OACA,KACA,SACA,OACA,UACA,OACA,OACA,QACA,YACA,iBACA,MACA,OACA,MACA,OACA,QACA,WACA,WACA,UACA,UACA,MACA,MACA,UACA,OACA,QACA,MACA,UACA,SACA,MACA,MACA,KACA,OACA,OACA,KACA,QACA,QACA,WACA,WACA,YACA,UACA,cACA,QACA,UACA,UACA,MACA,YACA,UACA,aACA,YACA,SACA,UACA,UACA,QACA,SACA,eACA,UACA,WACA,OACA,UACA,SACA,QACA,MACA,OACA,UACA,UACA,OACA,YACA,KACA,MACA,WACA,OACA,kBACA,OACA,QACA,SACA,SACA,UACA,OACA,QACA,UACA,SACA,OACA,QACA,OACA,SACF,CAAC,CACH,CAEA,UAAW8C,EAAgC,CACzC,IAAM7G,EAAO6G,EAAW,KAAK,aAAe,CAC5C,EACMC,EAAU9G,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","names":["DATE_DELTA_INTERVAL","buildDateDelta","ExprClass","args","unitBased","thisArg","unit","unitName","var_","VarExpr","expr","seqGet","TsOrDsAddExpr","DataTypeExpr","_TABLE_ALIAS_TOKENS_dec","_NO_PAREN_FUNCTION_PARSERS_dec","_FUNCTIONS_dec","_ID_VAR_TOKENS_dec","_a","_init","RedshiftParser","Postgres","cache","Parser","functions","_options","buildConvertTimezone","TsOrDsDiffExpr","CurrentTimestampExpr","GroupConcatExpr","RegexpExtractExpr","StringToArrayExpr","LiteralExpr","FromBaseExpr","options","unpivot","table","PivotExpr","safe","to","thisNode","TryCastExpr","index","func","CountExpr","DistinctExpr","ApproxDistinctExpr","__decoratorStart","__decorateElement","__decoratorMetadata","__runInitializers","_SINGLE_TOKENS_dec","_ORIGINAL_KEYWORDS_dec","_STRING_ESCAPES_dec","_HEX_STRINGS_dec","_BIT_STRINGS_dec","RedshiftTokenizer","keywords","singleTokens","_RESERVED_KEYWORDS_dec","_ORIGINAL_TRANSFORMS_dec","_TYPE_MAPPING_dec","_AFTER_HAVING_MODIFIER_TRANSFORMS_dec","RedshiftGenerator","modifiers","m","transforms","ArrayConcatExpr","arrayConcatSql","ConcatExpr","concatToDPipeSql","ConcatWsExpr","concatWsToDPipeSql","e","DateAddExpr","dateDeltaSql","DateDiffExpr","DistKeyPropertyExpr","DistStylePropertyExpr","ExplodeExpr","FarmFingerprintExpr","renameFunc","GeneratedAsIdentityColumnConstraintExpr","generatedAsIdentityColumnConstraintSql","JsonExtractExpr","jsonExtractSegments","JsonExtractScalarExpr","HexExpr","SelectExpr","preprocess","eliminateWindowClause","eliminateDistinctOn","eliminateSemiAndAntiJoins","unqualifyUnnest","unnestGenerateDateArrayUsingRecursiveCte","SortKeyPropertyExpr","value","sql","Expression","SchemaExpr","TupleExpr","StartsWithExpr","TableSampleExpr","noTablesampleSql","UnixToTimeExpr","Sha2DigestExpr","ParseJsonExpr","AnyValueExpr","LastDayExpr","Sha2Expr","GetbitExpr","RoundExpr","expression","numArgs","FromExpr","JoinExpr","arg","alias","safePrefix","isType","precision","exprs","location","fileFormat","_expression","scale","thisSql","_TIME_MAPPING_dec","_NORMALIZATION_STRATEGY_dec","Redshift","Dialect"]}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkWRNYJ54Acjs = require('../chunk-WRNYJ54A.cjs');require('../chunk-DOKMTZYO.cjs');var _chunk2Z3O2CFMcjs = require('../chunk-2Z3O2CFM.cjs');var x,y,O,T=class extends(y=_chunkWRNYJ54Acjs.b.Tokenizer,x=[_chunk2Z3O2CFMcjs.r],y){static get ORIGINAL_KEYWORDS(){return{..._chunkWRNYJ54Acjs.b.Tokenizer.KEYWORDS,SINK:"sink",SOURCE:"source"}}};O=_chunk2Z3O2CFMcjs.a.call(void 0, y),_chunk2Z3O2CFMcjs.d.call(void 0, O,10,"ORIGINAL_KEYWORDS",x,T),_chunk2Z3O2CFMcjs.b.call(void 0, O,T),_chunk2Z3O2CFMcjs.c.call(void 0, O,3,T);var D,L,M,F,U,K,V,p,o=class extends(V=_chunkWRNYJ54Acjs.b.Parser,K=[_chunk2Z3O2CFMcjs.r],U=[_chunk2Z3O2CFMcjs.r],F=[_chunk2Z3O2CFMcjs.r],M=[_chunk2Z3O2CFMcjs.r],L=[_chunk2Z3O2CFMcjs.r],D=[_chunk2Z3O2CFMcjs.r],V){static get ID_VAR_TOKENS(){return new Set([..._chunk2Z3O2CFMcjs.za.ID_VAR_TOKENS,"sessionUser","currentCatalog","straightJoin"])}static get NO_PAREN_FUNCTIONS(){let t={..._chunkWRNYJ54Acjs.b.Parser.NO_PAREN_FUNCTIONS};return delete t.localtime,delete t.localtimestamp,t}static get PROPERTY_PARSERS(){return{..._chunkWRNYJ54Acjs.b.Parser.PROPERTY_PARSERS,ENCODE:function(){return this.parseEncodeProperty()},INCLUDE:function(){return this.parseIncludeProperty()},KEY:function(){return this.parseEncodeProperty(!0)}}}static get CONSTRAINT_PARSERS(){return{..._chunkWRNYJ54Acjs.b.Parser.CONSTRAINT_PARSERS,WATERMARK:function(){return this.expression(_chunk2Z3O2CFMcjs.eb,{this:this.match("for")&&this.parseColumn(),expression:this.match("alias")&&this.parseDisjunction()})}}}static get SCHEMA_UNNAMED_CONSTRAINTS(){return new Set([..._chunkWRNYJ54Acjs.b.Parser.SCHEMA_UNNAMED_CONSTRAINTS,"WATERMARK"])}parseTableHints(){}parseIncludeProperty(){let t,E,a=this.parseVarOrString();this.match("alias")||(t=this.parseField(),t&&(E=this.expression(_chunk2Z3O2CFMcjs.Za,{this:t,kind:this.parseTypes()}))),this.match("alias");let Y=this.parseIdVar({tokens:this.constructor.ALIAS_TOKENS});return this.expression(_chunk2Z3O2CFMcjs.Rd,{this:a,alias:Y,columnDef:E})}parseEncodeProperty(t){this.matchTextSeq("ENCODE");let E=this.parseVarOrString(),a;return this.match("lParen",{advance:!1})&&(a=this.expression(_chunk2Z3O2CFMcjs.Td,{expressions:this.parseWrappedProperties()})),this.expression(_chunk2Z3O2CFMcjs.Qd,{this:E,properties:a,key:t})}static get TABLE_ALIAS_TOKENS(){return new Set([..._chunkWRNYJ54Acjs.b.Parser.TABLE_ALIAS_TOKENS,"straightJoin"])}};p=_chunk2Z3O2CFMcjs.a.call(void 0, V),_chunk2Z3O2CFMcjs.d.call(void 0, p,10,"ID_VAR_TOKENS",K,o),_chunk2Z3O2CFMcjs.d.call(void 0, p,10,"NO_PAREN_FUNCTIONS",U,o),_chunk2Z3O2CFMcjs.d.call(void 0, p,10,"PROPERTY_PARSERS",F,o),_chunk2Z3O2CFMcjs.d.call(void 0, p,10,"CONSTRAINT_PARSERS",M,o),_chunk2Z3O2CFMcjs.d.call(void 0, p,10,"SCHEMA_UNNAMED_CONSTRAINTS",L,o),_chunk2Z3O2CFMcjs.d.call(void 0, p,10,"TABLE_ALIAS_TOKENS",D,o),_chunk2Z3O2CFMcjs.b.call(void 0, p,o),_chunk2Z3O2CFMcjs.c.call(void 0, p,3,o),o.WRAPPED_TRANSFORM_COLUMN_CONSTRAINT=!1;var q,H,k,w,G,i,e=class extends(G=_chunkWRNYJ54Acjs.b.Generator,w=[_chunk2Z3O2CFMcjs.r],k=[_chunk2Z3O2CFMcjs.r],H=[_chunk2Z3O2CFMcjs.r],q=[_chunk2Z3O2CFMcjs.r],G){static get AFTER_HAVING_MODIFIER_TRANSFORMS(){let t=new Map(super.AFTER_HAVING_MODIFIER_TRANSFORMS);return["cluster","distribute","sort"].forEach(E=>t.delete(E)),t}static get ORIGINAL_TRANSFORMS(){return new Map([..._chunkWRNYJ54Acjs.b.Generator.TRANSFORMS,[_chunk2Z3O2CFMcjs.kd,function(E){return`FORMAT ${this.sql(E.args.this)}`}]])}static get PROPERTIES_LOCATION(){let t=new Map(_chunkWRNYJ54Acjs.b.Generator.PROPERTIES_LOCATION);return t.set(_chunk2Z3O2CFMcjs.kd,"postExpression"),t}static get EXPRESSION_PRECEDES_PROPERTIES_CREATABLES(){return new Set(["SINK"])}computedColumnConstraintSql(t){return _chunk2Z3O2CFMcjs.lp.prototype.computedColumnConstraintSql.call(this,t)}dataTypeSql(t){if(t.isType("map")&&_optionalChain([t, 'access', _ => _.args, 'access', _2 => _2.expressions, 'optionalAccess', _3 => _3.length])===2){let[E,a]=t.args.expressions;return`MAP(${this.sql(E)}, ${this.sql(a)})`}return super.dataTypeSql(t)}};i=_chunk2Z3O2CFMcjs.a.call(void 0, G),_chunk2Z3O2CFMcjs.d.call(void 0, i,10,"AFTER_HAVING_MODIFIER_TRANSFORMS",w,e),_chunk2Z3O2CFMcjs.d.call(void 0, i,10,"ORIGINAL_TRANSFORMS",k,e),_chunk2Z3O2CFMcjs.d.call(void 0, i,10,"PROPERTIES_LOCATION",H,e),_chunk2Z3O2CFMcjs.d.call(void 0, i,10,"EXPRESSION_PRECEDES_PROPERTIES_CREATABLES",q,e),_chunk2Z3O2CFMcjs.b.call(void 0, i,e),_chunk2Z3O2CFMcjs.c.call(void 0, i,3,e),e.SUPPORTS_DECODE_CASE=!1,e.TRY_SUPPORTED=!1,e.SUPPORTS_UESCAPE=!1,e.LOCKING_READS_SUPPORTED=!1,e.SUPPORTS_BETWEEN_FLAGS=!1;var S=class extends _chunkWRNYJ54Acjs.b{};S.DIALECT_NAME="risingwave",S.REQUIRES_PARENTHESIZED_STRUCT_ACCESS=!0,S.SUPPORTS_STRUCT_STAR_EXPANSION=!0,S.Tokenizer=T,S.Parser=o,S.Generator=e;_chunk2Z3O2CFMcjs.op.register("risingwave",S);exports.RisingWave = S;
2
+ //# sourceMappingURL=risingwave.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/huydna/projects/sqlingo.js/dist/dialects/risingwave.cjs","../../src/dialects/risingwave.ts"],"names":["_ORIGINAL_KEYWORDS_dec","_a","_init","RisingWaveTokenizer","Postgres","cache","__decoratorStart","__decorateElement","__decoratorMetadata","__runInitializers","_TABLE_ALIAS_TOKENS_dec","_SCHEMA_UNNAMED_CONSTRAINTS_dec","_CONSTRAINT_PARSERS_dec","_PROPERTY_PARSERS_dec","_NO_PAREN_FUNCTIONS_dec","_ID_VAR_TOKENS_dec","RisingWaveParser","Parser","noParenFunctions","WatermarkColumnConstraintExpr","header","coldef","thisNode","ColumnDefExpr","alias","IncludePropertyExpr","key","properties","PropertiesExpr","EncodePropertyExpr","_EXPRESSION_PRECEDES_PROPERTIES_CREATABLES_dec","_PROPERTIES_LOCATION_dec","_ORIGINAL_TRANSFORMS_dec","_AFTER_HAVING_MODIFIER_TRANSFORMS_dec","RisingWaveGenerator","modifiers","m","FileFormatPropertyExpr","e"],"mappings":"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","file":"/home/huydna/projects/sqlingo.js/dist/dialects/risingwave.cjs","sourcesContent":[null,"import {\n Generator,\n} from '../generator';\nimport type {\n Expression,\n DataTypeExpr,\n ComputedColumnConstraintExpr,\n} from '../expressions';\nimport {\n PropertiesExpr,\n DataTypeExprKind,\n PropertiesLocation,\n FileFormatPropertyExpr,\n EncodePropertyExpr,\n WatermarkColumnConstraintExpr,\n ColumnDefExpr,\n IncludePropertyExpr,\n} from '../expressions';\nimport {\n TokenType,\n} from '../tokens';\nimport {\n Parser,\n} from '../parser';\nimport {\n cache,\n} from '../port_internals';\nimport {\n Dialect, Dialects,\n} from './dialect';\nimport {\n Postgres,\n} from './postgres';\n\nclass RisingWaveTokenizer extends Postgres.Tokenizer {\n @cache\n static get ORIGINAL_KEYWORDS () {\n return {\n ...Postgres.Tokenizer.KEYWORDS,\n SINK: TokenType.SINK,\n SOURCE: TokenType.SOURCE,\n };\n }\n}\n\nclass RisingWaveParser extends Postgres.Parser {\n @cache\n static get ID_VAR_TOKENS (): Set<TokenType> {\n return new Set([\n ...Parser.ID_VAR_TOKENS,\n TokenType.SESSION_USER,\n TokenType.CURRENT_CATALOG,\n TokenType.STRAIGHT_JOIN,\n ]);\n }\n\n // port from _Dialect metaclass logic\n @cache\n static get NO_PAREN_FUNCTIONS () {\n const noParenFunctions = {\n ...Postgres.Parser.NO_PAREN_FUNCTIONS,\n };\n delete noParenFunctions[TokenType.LOCALTIME];\n delete noParenFunctions[TokenType.LOCALTIMESTAMP];\n return noParenFunctions;\n }\n\n static WRAPPED_TRANSFORM_COLUMN_CONSTRAINT = false;\n\n @cache\n static get PROPERTY_PARSERS () {\n return {\n ...Postgres.Parser.PROPERTY_PARSERS,\n ENCODE: function (this: Parser) {\n return (this as RisingWaveParser).parseEncodeProperty();\n },\n INCLUDE: function (this: Parser) {\n return (this as RisingWaveParser).parseIncludeProperty();\n },\n KEY: function (this: Parser) {\n return (this as RisingWaveParser).parseEncodeProperty(true);\n },\n };\n }\n\n @cache\n static get CONSTRAINT_PARSERS () {\n return {\n ...Postgres.Parser.CONSTRAINT_PARSERS,\n WATERMARK: function (this: Parser) {\n return this.expression(WatermarkColumnConstraintExpr, {\n this: (this as RisingWaveParser).match(TokenType.FOR) && (this as RisingWaveParser).parseColumn(),\n expression: (this as RisingWaveParser).match(TokenType.ALIAS) && (this as RisingWaveParser).parseDisjunction(),\n });\n },\n };\n }\n\n @cache\n static get SCHEMA_UNNAMED_CONSTRAINTS () {\n return new Set([\n ...Postgres.Parser.SCHEMA_UNNAMED_CONSTRAINTS,\n 'WATERMARK',\n ]);\n }\n\n parseTableHints (): Expression[] | undefined {\n // There is no hint in risingwave.\n // Do nothing here to avoid WITH keywords conflict in CREATE SINK statement.\n return undefined;\n }\n\n parseIncludeProperty (): Expression | undefined {\n let header: Expression | undefined = undefined;\n let coldef: Expression | undefined = undefined;\n\n const thisNode = this.parseVarOrString();\n\n if (!this.match(TokenType.ALIAS)) {\n header = this.parseField();\n if (header) {\n coldef = this.expression(ColumnDefExpr, {\n this: header,\n kind: this.parseTypes(),\n });\n }\n }\n\n this.match(TokenType.ALIAS);\n const alias = this.parseIdVar({\n tokens: (this.constructor as typeof RisingWaveParser).ALIAS_TOKENS,\n });\n\n return this.expression(IncludePropertyExpr, {\n this: thisNode,\n alias: alias,\n columnDef: coldef,\n });\n }\n\n parseEncodeProperty (key?: boolean | undefined): EncodePropertyExpr {\n this.matchTextSeq('ENCODE');\n const thisNode = this.parseVarOrString();\n\n let properties: PropertiesExpr | undefined = undefined;\n if (this.match(TokenType.L_PAREN, {\n advance: false,\n })) {\n properties = this.expression(PropertiesExpr, {\n expressions: this.parseWrappedProperties(),\n });\n }\n\n return this.expression(EncodePropertyExpr, {\n this: thisNode,\n properties: properties,\n key: key,\n });\n }\n\n // port from _Dialect metaclass logic\n @cache\n static get TABLE_ALIAS_TOKENS (): Set<TokenType> {\n return new Set([\n ...Postgres.Parser.TABLE_ALIAS_TOKENS,\n TokenType.STRAIGHT_JOIN,\n ]);\n }\n}\nclass RisingWaveGenerator extends Postgres.Generator {\n // port from _Dialect metaclass logic\n @cache\n static get AFTER_HAVING_MODIFIER_TRANSFORMS () {\n const modifiers = new Map(super.AFTER_HAVING_MODIFIER_TRANSFORMS);\n [\n 'cluster',\n 'distribute',\n 'sort',\n ].forEach((m) => modifiers.delete(m));\n return modifiers;\n }\n\n // port from _Dialect metaclass logic\n static SUPPORTS_DECODE_CASE = false;\n // port from _Dialect metaclass logic\n static TRY_SUPPORTED = false;\n // port from _Dialect metaclass logic\n static SUPPORTS_UESCAPE = false;\n static LOCKING_READS_SUPPORTED = false;\n static SUPPORTS_BETWEEN_FLAGS = false;\n\n @cache\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static get ORIGINAL_TRANSFORMS (): Map<typeof Expression, (this: Generator, e: any) => string> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const transforms = new Map<typeof Expression, (this: Generator, e: any) => string>([\n ...Postgres.Generator.TRANSFORMS,\n [\n FileFormatPropertyExpr,\n function (this: Generator, e: FileFormatPropertyExpr) {\n return `FORMAT ${this.sql(e.args.this)}`;\n },\n ],\n ]);\n return transforms;\n }\n\n @cache\n static get PROPERTIES_LOCATION () {\n const m = new Map(Postgres.Generator.PROPERTIES_LOCATION);\n m.set(FileFormatPropertyExpr, PropertiesLocation.POST_EXPRESSION);\n return m;\n }\n\n @cache\n static get EXPRESSION_PRECEDES_PROPERTIES_CREATABLES () {\n return new Set([\n 'SINK',\n ]);\n }\n\n computedColumnConstraintSql (expression: ComputedColumnConstraintExpr): string {\n return Generator.prototype.computedColumnConstraintSql.call(this, expression);\n }\n\n dataTypeSql (expression: DataTypeExpr): string {\n if (expression.isType(DataTypeExprKind.MAP) && expression.args.expressions?.length === 2) {\n const [\n keyType,\n valueType,\n ] = expression.args.expressions;\n return `MAP(${this.sql(keyType)}, ${this.sql(valueType)})`;\n }\n\n return super.dataTypeSql(expression);\n }\n}\n\nexport class RisingWave extends Postgres {\n static DIALECT_NAME = Dialects.RISINGWAVE;\n static REQUIRES_PARENTHESIZED_STRUCT_ACCESS = true;\n static SUPPORTS_STRUCT_STAR_EXPANSION = true;\n\n static Tokenizer = RisingWaveTokenizer;\n static Parser = RisingWaveParser;\n static Generator = RisingWaveGenerator;\n}\n\nDialect.register(Dialects.RISINGWAVE, RisingWave);\n"]}