@hdnax/sqlingo.js 0.0.4 → 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 (245) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +8 -14
  3. package/README.npm.md +8 -14
  4. package/README.repo.md +1 -2
  5. package/dist/chunk-2YNOERAO.cjs +2 -0
  6. package/dist/chunk-2YNOERAO.cjs.map +1 -0
  7. package/dist/chunk-2Z3O2CFM.cjs +19 -0
  8. package/dist/chunk-2Z3O2CFM.cjs.map +1 -0
  9. package/dist/chunk-4ZMKB6PV.cjs +2 -0
  10. package/dist/chunk-4ZMKB6PV.cjs.map +1 -0
  11. package/dist/chunk-53OWF4GG.js +2 -0
  12. package/dist/chunk-53OWF4GG.js.map +1 -0
  13. package/dist/chunk-C4CLTVOW.cjs +2 -0
  14. package/dist/chunk-C4CLTVOW.cjs.map +1 -0
  15. package/dist/chunk-DOKMTZYO.cjs +4 -0
  16. package/dist/chunk-DOKMTZYO.cjs.map +1 -0
  17. package/dist/chunk-FCGUTI7Y.js +2 -0
  18. package/dist/chunk-FCGUTI7Y.js.map +1 -0
  19. package/dist/chunk-IPCIXWCY.js +2 -0
  20. package/dist/chunk-IPCIXWCY.js.map +1 -0
  21. package/dist/chunk-KCNOE4DZ.js +19 -0
  22. package/dist/chunk-KCNOE4DZ.js.map +1 -0
  23. package/dist/chunk-NRJHX2GZ.js +2 -0
  24. package/dist/chunk-NRJHX2GZ.js.map +1 -0
  25. package/dist/chunk-O2J5RKBN.js +2 -0
  26. package/dist/chunk-O2J5RKBN.js.map +1 -0
  27. package/dist/chunk-PXUASP5I.js +2 -0
  28. package/dist/chunk-PXUASP5I.js.map +1 -0
  29. package/dist/chunk-R7C3ZHVK.cjs +2 -0
  30. package/dist/chunk-R7C3ZHVK.cjs.map +1 -0
  31. package/dist/chunk-UHWHUDLE.cjs +2 -0
  32. package/dist/chunk-UHWHUDLE.cjs.map +1 -0
  33. package/dist/chunk-WRNYJ54A.cjs +2 -0
  34. package/dist/chunk-WRNYJ54A.cjs.map +1 -0
  35. package/dist/chunk-XZQFOICX.cjs +3 -0
  36. package/dist/chunk-XZQFOICX.cjs.map +1 -0
  37. package/dist/chunk-YLOQRUXC.js +2 -0
  38. package/dist/chunk-YLOQRUXC.js.map +1 -0
  39. package/dist/chunk-YSS2WVCM.cjs +2 -0
  40. package/dist/chunk-YSS2WVCM.cjs.map +1 -0
  41. package/dist/chunk-Z5V6VOIN.js +3 -0
  42. package/dist/chunk-Z5V6VOIN.js.map +1 -0
  43. package/dist/chunk-ZBFGQPJR.js +4 -0
  44. package/dist/chunk-ZBFGQPJR.js.map +1 -0
  45. package/dist/dialects/athena.cjs +2 -0
  46. package/dist/dialects/athena.cjs.map +1 -0
  47. package/dist/dialects/athena.d.cts +66 -0
  48. package/dist/dialects/athena.d.ts +66 -0
  49. package/dist/dialects/athena.js +2 -0
  50. package/dist/dialects/athena.js.map +1 -0
  51. package/dist/dialects/bigquery.cjs +3 -0
  52. package/dist/dialects/bigquery.cjs.map +1 -0
  53. package/dist/dialects/bigquery.d.cts +651 -0
  54. package/dist/dialects/bigquery.d.ts +651 -0
  55. package/dist/dialects/bigquery.js +3 -0
  56. package/dist/dialects/bigquery.js.map +1 -0
  57. package/dist/dialects/clickhouse.cjs +2 -0
  58. package/dist/dialects/clickhouse.cjs.map +1 -0
  59. package/dist/dialects/clickhouse.d.cts +634 -0
  60. package/dist/dialects/clickhouse.d.ts +634 -0
  61. package/dist/dialects/clickhouse.js +2 -0
  62. package/dist/dialects/clickhouse.js.map +1 -0
  63. package/dist/dialects/databricks.cjs +2 -0
  64. package/dist/dialects/databricks.cjs.map +1 -0
  65. package/dist/dialects/databricks.d.cts +484 -0
  66. package/dist/dialects/databricks.d.ts +484 -0
  67. package/dist/dialects/databricks.js +2 -0
  68. package/dist/dialects/databricks.js.map +1 -0
  69. package/dist/dialects/doris.cjs +2 -0
  70. package/dist/dialects/doris.cjs.map +1 -0
  71. package/dist/dialects/doris.d.cts +484 -0
  72. package/dist/dialects/doris.d.ts +484 -0
  73. package/dist/dialects/doris.js +2 -0
  74. package/dist/dialects/doris.js.map +1 -0
  75. package/dist/dialects/dremio.cjs +2 -0
  76. package/dist/dialects/dremio.cjs.map +1 -0
  77. package/dist/dialects/dremio.d.cts +522 -0
  78. package/dist/dialects/dremio.d.ts +522 -0
  79. package/dist/dialects/dremio.js +2 -0
  80. package/dist/dialects/dremio.js.map +1 -0
  81. package/dist/dialects/drill.cjs +2 -0
  82. package/dist/dialects/drill.cjs.map +1 -0
  83. package/dist/dialects/drill.d.cts +512 -0
  84. package/dist/dialects/drill.d.ts +512 -0
  85. package/dist/dialects/drill.js +2 -0
  86. package/dist/dialects/drill.js.map +1 -0
  87. package/dist/dialects/druid.cjs +2 -0
  88. package/dist/dialects/druid.cjs.map +1 -0
  89. package/dist/dialects/druid.d.cts +17 -0
  90. package/dist/dialects/druid.d.ts +17 -0
  91. package/dist/dialects/druid.js +2 -0
  92. package/dist/dialects/druid.js.map +1 -0
  93. package/dist/dialects/duckdb.cjs +86 -0
  94. package/dist/dialects/duckdb.cjs.map +1 -0
  95. package/dist/dialects/duckdb.d.cts +756 -0
  96. package/dist/dialects/duckdb.d.ts +756 -0
  97. package/dist/dialects/duckdb.js +86 -0
  98. package/dist/dialects/duckdb.js.map +1 -0
  99. package/dist/dialects/dune.cjs +2 -0
  100. package/dist/dialects/dune.cjs.map +1 -0
  101. package/dist/dialects/dune.d.cts +21 -0
  102. package/dist/dialects/dune.d.ts +21 -0
  103. package/dist/dialects/dune.js +2 -0
  104. package/dist/dialects/dune.js.map +1 -0
  105. package/dist/dialects/exasol.cjs +2 -0
  106. package/dist/dialects/exasol.cjs.map +1 -0
  107. package/dist/dialects/exasol.d.cts +507 -0
  108. package/dist/dialects/exasol.d.ts +507 -0
  109. package/dist/dialects/exasol.js +2 -0
  110. package/dist/dialects/exasol.js.map +1 -0
  111. package/dist/dialects/fabric.cjs +2 -0
  112. package/dist/dialects/fabric.cjs.map +1 -0
  113. package/dist/dialects/fabric.d.cts +463 -0
  114. package/dist/dialects/fabric.d.ts +463 -0
  115. package/dist/dialects/fabric.js +2 -0
  116. package/dist/dialects/fabric.js.map +1 -0
  117. package/dist/dialects/hive.cjs +2 -0
  118. package/dist/dialects/hive.cjs.map +1 -0
  119. package/dist/dialects/hive.d.cts +585 -0
  120. package/dist/dialects/hive.d.ts +585 -0
  121. package/dist/dialects/hive.js +2 -0
  122. package/dist/dialects/hive.js.map +1 -0
  123. package/dist/dialects/materialize.cjs +2 -0
  124. package/dist/dialects/materialize.cjs.map +1 -0
  125. package/dist/dialects/materialize.d.cts +890 -0
  126. package/dist/dialects/materialize.d.ts +890 -0
  127. package/dist/dialects/materialize.js +2 -0
  128. package/dist/dialects/materialize.js.map +1 -0
  129. package/dist/dialects/mysql.cjs +2 -0
  130. package/dist/dialects/mysql.cjs.map +1 -0
  131. package/dist/dialects/mysql.d.cts +292 -0
  132. package/dist/dialects/mysql.d.ts +292 -0
  133. package/dist/dialects/mysql.js +2 -0
  134. package/dist/dialects/mysql.js.map +1 -0
  135. package/dist/dialects/oracle.cjs +2 -0
  136. package/dist/dialects/oracle.cjs.map +1 -0
  137. package/dist/dialects/oracle.d.cts +539 -0
  138. package/dist/dialects/oracle.d.ts +539 -0
  139. package/dist/dialects/oracle.js +2 -0
  140. package/dist/dialects/oracle.js.map +1 -0
  141. package/dist/dialects/postgres.cjs +2 -0
  142. package/dist/dialects/postgres.cjs.map +1 -0
  143. package/dist/dialects/postgres.d.cts +587 -0
  144. package/dist/dialects/postgres.d.ts +587 -0
  145. package/dist/dialects/postgres.js +2 -0
  146. package/dist/dialects/postgres.js.map +1 -0
  147. package/dist/dialects/presto.cjs +2 -0
  148. package/dist/dialects/presto.cjs.map +1 -0
  149. package/dist/dialects/presto.d.cts +173 -0
  150. package/dist/dialects/presto.d.ts +173 -0
  151. package/dist/dialects/presto.js +2 -0
  152. package/dist/dialects/presto.js.map +1 -0
  153. package/dist/dialects/prql.cjs +2 -0
  154. package/dist/dialects/prql.cjs.map +1 -0
  155. package/dist/dialects/prql.d.cts +496 -0
  156. package/dist/dialects/prql.d.ts +496 -0
  157. package/dist/dialects/prql.js +2 -0
  158. package/dist/dialects/prql.js.map +1 -0
  159. package/dist/dialects/redshift.cjs +2 -0
  160. package/dist/dialects/redshift.cjs.map +1 -0
  161. package/dist/dialects/redshift.d.cts +132 -0
  162. package/dist/dialects/redshift.d.ts +132 -0
  163. package/dist/dialects/redshift.js +2 -0
  164. package/dist/dialects/redshift.js.map +1 -0
  165. package/dist/dialects/risingwave.cjs +2 -0
  166. package/dist/dialects/risingwave.cjs.map +1 -0
  167. package/dist/dialects/risingwave.d.cts +478 -0
  168. package/dist/dialects/risingwave.d.ts +478 -0
  169. package/dist/dialects/risingwave.js +2 -0
  170. package/dist/dialects/risingwave.js.map +1 -0
  171. package/dist/dialects/singlestore.cjs +2 -0
  172. package/dist/dialects/singlestore.cjs.map +1 -0
  173. package/dist/dialects/singlestore.d.cts +73 -0
  174. package/dist/dialects/singlestore.d.ts +73 -0
  175. package/dist/dialects/singlestore.js +2 -0
  176. package/dist/dialects/singlestore.js.map +1 -0
  177. package/dist/dialects/snowflake.cjs +3 -0
  178. package/dist/dialects/snowflake.cjs.map +1 -0
  179. package/dist/dialects/snowflake.d.cts +320 -0
  180. package/dist/dialects/snowflake.d.ts +320 -0
  181. package/dist/dialects/snowflake.js +3 -0
  182. package/dist/dialects/snowflake.js.map +1 -0
  183. package/dist/dialects/solr.cjs +2 -0
  184. package/dist/dialects/solr.cjs.map +1 -0
  185. package/dist/dialects/solr.d.cts +458 -0
  186. package/dist/dialects/solr.d.ts +458 -0
  187. package/dist/dialects/solr.js +2 -0
  188. package/dist/dialects/solr.js.map +1 -0
  189. package/dist/dialects/spark.cjs +2 -0
  190. package/dist/dialects/spark.cjs.map +1 -0
  191. package/dist/dialects/spark.d.cts +484 -0
  192. package/dist/dialects/spark.d.ts +484 -0
  193. package/dist/dialects/spark.js +2 -0
  194. package/dist/dialects/spark.js.map +1 -0
  195. package/dist/dialects/spark2.cjs +2 -0
  196. package/dist/dialects/spark2.cjs.map +1 -0
  197. package/dist/dialects/spark2.d.cts +486 -0
  198. package/dist/dialects/spark2.d.ts +486 -0
  199. package/dist/dialects/spark2.js +2 -0
  200. package/dist/dialects/spark2.js.map +1 -0
  201. package/dist/dialects/sqlite.cjs +2 -0
  202. package/dist/dialects/sqlite.cjs.map +1 -0
  203. package/dist/dialects/sqlite.d.cts +510 -0
  204. package/dist/dialects/sqlite.d.ts +510 -0
  205. package/dist/dialects/sqlite.js +2 -0
  206. package/dist/dialects/sqlite.js.map +1 -0
  207. package/dist/dialects/starrocks.cjs +2 -0
  208. package/dist/dialects/starrocks.cjs.map +1 -0
  209. package/dist/dialects/starrocks.d.cts +518 -0
  210. package/dist/dialects/starrocks.d.ts +518 -0
  211. package/dist/dialects/starrocks.js +2 -0
  212. package/dist/dialects/starrocks.js.map +1 -0
  213. package/dist/dialects/tableau.cjs +2 -0
  214. package/dist/dialects/tableau.cjs.map +1 -0
  215. package/dist/dialects/tableau.d.cts +466 -0
  216. package/dist/dialects/tableau.d.ts +466 -0
  217. package/dist/dialects/tableau.js +2 -0
  218. package/dist/dialects/tableau.js.map +1 -0
  219. package/dist/dialects/teradata.cjs +2 -0
  220. package/dist/dialects/teradata.cjs.map +1 -0
  221. package/dist/dialects/teradata.d.cts +539 -0
  222. package/dist/dialects/teradata.d.ts +539 -0
  223. package/dist/dialects/teradata.js +2 -0
  224. package/dist/dialects/teradata.js.map +1 -0
  225. package/dist/dialects/trino.cjs +2 -0
  226. package/dist/dialects/trino.cjs.map +1 -0
  227. package/dist/dialects/trino.d.cts +465 -0
  228. package/dist/dialects/trino.d.ts +465 -0
  229. package/dist/dialects/trino.js +2 -0
  230. package/dist/dialects/trino.js.map +1 -0
  231. package/dist/dialects/tsql.cjs +2 -0
  232. package/dist/dialects/tsql.cjs.map +1 -0
  233. package/dist/dialects/tsql.d.cts +703 -0
  234. package/dist/dialects/tsql.d.ts +703 -0
  235. package/dist/dialects/tsql.js +2 -0
  236. package/dist/dialects/tsql.js.map +1 -0
  237. package/dist/index.cjs +5 -25
  238. package/dist/index.cjs.map +1 -1
  239. package/dist/index.d.cts +3 -14178
  240. package/dist/index.d.ts +3 -14178
  241. package/dist/index.js +5 -25
  242. package/dist/index.js.map +1 -1
  243. package/dist/tokens-VcMD09XM.d.cts +15805 -0
  244. package/dist/tokens-VcMD09XM.d.ts +15805 -0
  245. package/package.json +171 -5
@@ -0,0 +1,3 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } 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 _chunk2Z3O2CFMcjs = require('./chunk-2Z3O2CFM.cjs');var es,_t;es=[_chunk2Z3O2CFMcjs.r];var P=class{static get EXPRESSION_METADATA(){let n=new Map(_chunk2Z3O2CFMcjs.np.EXPRESSION_METADATA),t=(r,e)=>{for(let i of r)n.set(i,e)};return t([_chunk2Z3O2CFMcjs.si,_chunk2Z3O2CFMcjs.Ul],{returns:"binary"}),t([_chunk2Z3O2CFMcjs.fm,_chunk2Z3O2CFMcjs.Oh],{returns:"double"}),t([_chunk2Z3O2CFMcjs.Tg,_chunk2Z3O2CFMcjs.jh,_chunk2Z3O2CFMcjs.kh,_chunk2Z3O2CFMcjs.Ri,_chunk2Z3O2CFMcjs.Rk,_chunk2Z3O2CFMcjs.Sk,_chunk2Z3O2CFMcjs.ll],{returns:"varchar"}),t([_chunk2Z3O2CFMcjs.yl,_chunk2Z3O2CFMcjs.xi],{returns:"bigint"}),t([_chunk2Z3O2CFMcjs.kk,_chunk2Z3O2CFMcjs.Wi],{returns:"int"}),n.set(_chunk2Z3O2CFMcjs.Jg,{annotator:(r,e)=>r.annotateByArgs(e,["this","expressions"],{promote:!0})}),n.set(_chunk2Z3O2CFMcjs._i,{annotator:(r,e)=>r.annotateByArgs(e,["true","false"],{promote:!0})}),n.set(_chunk2Z3O2CFMcjs.Pk,{returns:"ARRAY<STRING>"}),n.set(_chunk2Z3O2CFMcjs.Nj,{annotator:(r,e)=>r.annotateByArgs(e,["this"])}),n}};_t=_chunk2Z3O2CFMcjs.a.call(void 0, null),_chunk2Z3O2CFMcjs.d.call(void 0, _t,10,"EXPRESSION_METADATA",es,P),_chunk2Z3O2CFMcjs.b.call(void 0, _t,P),_chunk2Z3O2CFMcjs.c.call(void 0, _t,3,P);var ys={YEAR:["ADD_MONTHS",12],MONTH:["ADD_MONTHS",1],QUARTER:["ADD_MONTHS",3],WEEK:["DATE_ADD",7],DAY:["DATE_ADD",1]},Fs={MILLISECOND:" * 1000",SECOND:"",MINUTE:" / 60",HOUR:" / 3600"},qs=new Set(["YEAR","QUARTER","MONTH"]);function Dt(s){if(s instanceof _chunk2Z3O2CFMcjs.Nl&&!s.args.unit)return this.func("DATE_ADD",[s.args.this,s.args.expression]);let n=s.text("unit").toUpperCase(),[t,r]=ys[n]||["DATE_ADD",1];s instanceof _chunk2Z3O2CFMcjs.wh&&(r*=-1);let e=s.args.expression;if(e instanceof _chunk2Z3O2CFMcjs.$c){let i=e.isNumber?parseFloat(_nullishCoalesce(e.args.this, () => ("0"))):parseInt(_nullishCoalesce(e.args.this, () => ("0")));e=_chunk2Z3O2CFMcjs.$c.number(i*r)}else r!==1&&(e=new (0, _chunk2Z3O2CFMcjs.Qe)({this:e,expression:_chunk2Z3O2CFMcjs.$c.number(r)}));return this.func(t,[s.args.this,e])}function ss(s){let n=s.text("unit").toUpperCase(),t=Fs[n];if(t!==void 0){let O=this.sql(s,"this"),J=this.sql(s,"expression"),w=`UNIX_TIMESTAMP(${O}) - UNIX_TIMESTAMP(${J})`;return t?`(${w})${t}`:w}let r=qs.has(n),e=r?"MONTHS_BETWEEN":"DATEDIFF",i=_optionalChain([ys, 'access', _2 => _2[n], 'optionalAccess', _3 => _3[1]])||1,l=1<i?` / ${i}`:"",c=`${e}(${this.formatArgs([s.args.this,s.args.expression])})`;return(r||l)&&(c=`CAST(${c}${l} AS INT)`),c}function ws(s){let n=s.args.this;if(n&&_chunk2Z3O2CFMcjs.nq.call(void 0, n)){if(n.args.this instanceof _chunk2Z3O2CFMcjs.$c&&n.args.this.isString){let t=_chunk2Z3O2CFMcjs.$c.string(`[${n.args.this.args.this}]`),r=this.func("FROM_JSON",[t,this.func("SCHEMA_OF_JSON",[t])]),e=this.func("TO_JSON",[r]);return this.func("REGEXP_EXTRACT",[e,_chunk2Z3O2CFMcjs.$c.string("'^.(.*).$'"),_chunk2Z3O2CFMcjs.$c.number(1)])}return this.sql(n)}return this.func("TO_JSON",[n,s.args.options])}function Gs(s){return s.args.expression&&this.unsupported("Unsupported arg 'expression' for ArraySort"),this.func("SORT_ARRAY",[s.args.this])}function Bs(s){return this.func("UNIX_TIMESTAMP",[s.args.this,_chunk2Z3O2CFMcjs.Lp.call(void 0, "hive").call(this,s)])}function Ys(s){let n=this.sql(s,"this"),t=s.args.scale;return t===void 0||t.toValue()===_chunk2Z3O2CFMcjs.Zl.SECONDS.toValue()?_chunk2Z3O2CFMcjs.pp.call(void 0, "FROM_UNIXTIME").call(this,s):`FROM_UNIXTIME(${n} / POW(10, ${t}))`}function $s(s){let n=this.sql(s,"this"),t=this.formatTime(s);return t!=null&&![E.TIME_FORMAT,E.DATE_FORMAT].includes(t)&&(n=`FROM_UNIXTIME(UNIX_TIMESTAMP(${n}, ${t}))`),`CAST(${n} AS DATE)`}function bs(s){let n=this.sql(s,"this"),t=this.formatTime(s);return t!=null&&![E.TIME_FORMAT,E.DATE_FORMAT].includes(t)&&(n=`FROM_UNIXTIME(UNIX_TIMESTAMP(${n}, ${t}))`),`CAST(${n} AS TIMESTAMP)`}function Xs(s){let n=this.formatTime(s);return n&&![E.TIME_FORMAT,E.DATE_FORMAT].includes(n)?this.func("TO_DATE",[s.args.this,n]):s.parent instanceof _chunk2Z3O2CFMcjs.Ca&&this._constructor.TS_OR_DS_EXPRESSIONS.has(s.parent._constructor)?this.sql(s,"this"):this.func("TO_DATE",[s.args.this])}function V(s){return n=>{let t=new s({this:_chunk2Z3O2CFMcjs.ca.call(void 0, n,0)});return _chunk2Z3O2CFMcjs.ca.call(void 0, n,1)instanceof _chunk2Z3O2CFMcjs.ae&&_optionalChain([_chunk2Z3O2CFMcjs.ca.call(void 0, n,1), 'optionalAccess', _4 => _4.args, 'access', _5 => _5.this])===!0?new (0, _chunk2Z3O2CFMcjs.pc)({this:t}):t}}function Vs(s){let n=_chunk2Z3O2CFMcjs.Kp.call(void 0, _chunk2Z3O2CFMcjs.Pl,{dialect:"hive"})(s);return n.setArgKey("safe",!0),n}function Js(s){let n=_chunk2Z3O2CFMcjs.ca.call(void 0, s,1);return n&&(n=n.mul(-1)),new (0, _chunk2Z3O2CFMcjs.Nl)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, s,0),expression:n,unit:_chunk2Z3O2CFMcjs.Eo.call(void 0, "DAY")})}var ns,is,as,Es,os,ps,Ts,N,x=class extends(Ts=_chunk2Z3O2CFMcjs.Xq,ps=[_chunk2Z3O2CFMcjs.r],os=[_chunk2Z3O2CFMcjs.r],Es=[_chunk2Z3O2CFMcjs.r],as=[_chunk2Z3O2CFMcjs.r],is=[_chunk2Z3O2CFMcjs.r],ns=[_chunk2Z3O2CFMcjs.r],Ts){static get QUOTES(){return["'",'"']}static get IDENTIFIERS(){return["`"]}static get STRING_ESCAPES(){return["\\"]}static get SINGLE_TOKENS(){return{..._chunk2Z3O2CFMcjs.Xq.SINGLE_TOKENS,$:"parameter"}}static get ORIGINAL_KEYWORDS(){return{..._chunk2Z3O2CFMcjs.Xq.KEYWORDS,"ADD ARCHIVE":"command","ADD ARCHIVES":"command","ADD FILE":"command","ADD FILES":"command","ADD JAR":"command","ADD JARS":"command",MINUS:"except","MSCK REPAIR":"command",REFRESH:"refresh","TIMESTAMP AS OF":"timestampSnapshot","VERSION AS OF":"versionSnapshot",SERDEPROPERTIES:"serdeProperties"}}static get NUMERIC_LITERALS(){return{L:"BIGINT",S:"SMALLINT",Y:"TINYINT",D:"DOUBLE",F:"FLOAT",BD:"DECIMAL"}}};N=_chunk2Z3O2CFMcjs.a.call(void 0, Ts),_chunk2Z3O2CFMcjs.d.call(void 0, N,10,"QUOTES",ps,x),_chunk2Z3O2CFMcjs.d.call(void 0, N,10,"IDENTIFIERS",os,x),_chunk2Z3O2CFMcjs.d.call(void 0, N,10,"STRING_ESCAPES",Es,x),_chunk2Z3O2CFMcjs.d.call(void 0, N,10,"SINGLE_TOKENS",as,x),_chunk2Z3O2CFMcjs.d.call(void 0, N,10,"ORIGINAL_KEYWORDS",is,x),_chunk2Z3O2CFMcjs.d.call(void 0, N,10,"NUMERIC_LITERALS",ns,x),_chunk2Z3O2CFMcjs.b.call(void 0, N,x),_chunk2Z3O2CFMcjs.c.call(void 0, N,3,x);var us,Ss,cs,ls,hs,As,xs,fs,Rs,R,S=class extends(Rs=_chunk2Z3O2CFMcjs.za,fs=[_chunk2Z3O2CFMcjs.r],xs=[_chunk2Z3O2CFMcjs.r],As=[_chunk2Z3O2CFMcjs.r],hs=[_chunk2Z3O2CFMcjs.r],ls=[_chunk2Z3O2CFMcjs.r],cs=[_chunk2Z3O2CFMcjs.r],Ss=[_chunk2Z3O2CFMcjs.r],us=[_chunk2Z3O2CFMcjs.r],Rs){static get ID_VAR_TOKENS(){return new Set([..._chunk2Z3O2CFMcjs.za.ID_VAR_TOKENS,"sessionUser","currentCatalog","straightJoin"])}static get NO_PAREN_FUNCTIONS(){let t={..._chunk2Z3O2CFMcjs.za.NO_PAREN_FUNCTIONS};return delete t.currentTime,delete t.localtime,delete t.localtimestamp,t}static get FUNCTION_PARSERS(){return{..._chunk2Z3O2CFMcjs.za.FUNCTION_PARSERS,PERCENTILE:function(){return this.parseQuantileFunction(_chunk2Z3O2CFMcjs.An)},PERCENTILE_APPROX:function(){return this.parseQuantileFunction(_chunk2Z3O2CFMcjs.Zn)}}}static get FUNCTIONS(){return{..._chunk2Z3O2CFMcjs.za.FUNCTIONS,ADD_MONTHS:t=>new (0, _chunk2Z3O2CFMcjs.Nl)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, t,0),expression:_chunk2Z3O2CFMcjs.ca.call(void 0, t,1),unit:_chunk2Z3O2CFMcjs.Eo.call(void 0, "MONTH")}),BASE64:t=>_chunk2Z3O2CFMcjs.Di.fromArgList(t),COLLECT_LIST:t=>new (0, _chunk2Z3O2CFMcjs.Nm)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, t,0),nullsExcluded:!0}),COLLECT_SET:t=>_chunk2Z3O2CFMcjs.Om.fromArgList(t),DATE_ADD:t=>new (0, _chunk2Z3O2CFMcjs.Nl)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, t,0),expression:_chunk2Z3O2CFMcjs.ca.call(void 0, t,1),unit:new (0, _chunk2Z3O2CFMcjs.Ub)({this:"DAY"})}),DATE_FORMAT:t=>_chunk2Z3O2CFMcjs.Kp.call(void 0, _chunk2Z3O2CFMcjs.Hl,{dialect:"hive"})([new (0, _chunk2Z3O2CFMcjs.Kl)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, t,0)}),_chunk2Z3O2CFMcjs.ca.call(void 0, t,1)]),DATE_SUB:Js,DATEDIFF:t=>new (0, _chunk2Z3O2CFMcjs.xh)({this:new (0, _chunk2Z3O2CFMcjs.Pl)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, t,0)}),expression:new (0, _chunk2Z3O2CFMcjs.Pl)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, t,1)})}),DAY:t=>new (0, _chunk2Z3O2CFMcjs.mi)({this:new (0, _chunk2Z3O2CFMcjs.Pl)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, t,0)})}),FIRST:V(_chunk2Z3O2CFMcjs.Xm),FIRST_VALUE:V(_chunk2Z3O2CFMcjs.Zm),FROM_UNIXTIME:_chunk2Z3O2CFMcjs.Kp.call(void 0, _chunk2Z3O2CFMcjs.Yl,{dialect:"hive",defaultValue:!0}),GET_JSON_OBJECT:(t,{dialect:r})=>new (0, _chunk2Z3O2CFMcjs.wj)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, t,0),expression:r.toJsonPath(_chunk2Z3O2CFMcjs.ca.call(void 0, t,1))}),LAST:V(_chunk2Z3O2CFMcjs.Ym),LAST_VALUE:V(_chunk2Z3O2CFMcjs._m),MAP:t=>{if(t.length===1&&t[0].isStar)return new (0, _chunk2Z3O2CFMcjs.dk)({this:t[0]});let r=[],e=[];for(let i=0;i<t.length;i+=2)r.push(t[i]),t[i+1]&&e.push(t[i+1]);return new (0, _chunk2Z3O2CFMcjs.ek)({keys:new (0, _chunk2Z3O2CFMcjs.Mf)({expressions:r}),values:new (0, _chunk2Z3O2CFMcjs.Mf)({expressions:e})})},MONTH:t=>new (0, _chunk2Z3O2CFMcjs.kk)({this:new (0, _chunk2Z3O2CFMcjs.Pl)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, t,0)})}),REGEXP_EXTRACT:_chunk2Z3O2CFMcjs.Lq.call(void 0, _chunk2Z3O2CFMcjs.Ik),REGEXP_EXTRACT_ALL:_chunk2Z3O2CFMcjs.Lq.call(void 0, _chunk2Z3O2CFMcjs.Jk),SEQUENCE:t=>_chunk2Z3O2CFMcjs.bg.fromArgList(t),SIZE:t=>_chunk2Z3O2CFMcjs.xg.fromArgList(t),SPLIT:t=>_chunk2Z3O2CFMcjs.Pk.fromArgList(t),STR_TO_MAP:t=>new (0, _chunk2Z3O2CFMcjs.zl)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, t,0),pairDelim:_chunk2Z3O2CFMcjs.ca.call(void 0, t,1)||_chunk2Z3O2CFMcjs.$c.string(","),keyValueDelim:_chunk2Z3O2CFMcjs.ca.call(void 0, t,2)||_chunk2Z3O2CFMcjs.$c.string(":")}),TO_DATE:Vs,TO_JSON:t=>_chunk2Z3O2CFMcjs.zj.fromArgList(t),TRUNC:t=>_chunk2Z3O2CFMcjs.bi.fromArgList(t),UNBASE64:t=>_chunk2Z3O2CFMcjs.Ci.fromArgList(t),UNIX_TIMESTAMP:t=>_chunk2Z3O2CFMcjs.Kp.call(void 0, _chunk2Z3O2CFMcjs.yl,{dialect:"hive",defaultValue:!0})(0<t.length?t:[new (0, _chunk2Z3O2CFMcjs.fh)({})]),YEAR:t=>new (0, _chunk2Z3O2CFMcjs.km)({this:new (0, _chunk2Z3O2CFMcjs.Pl)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, t,0)})})}}static get NO_PAREN_FUNCTION_PARSERS(){return{..._chunk2Z3O2CFMcjs.za.NO_PAREN_FUNCTION_PARSERS,TRANSFORM:function(){return this.parseTransform()}}}static get PROPERTY_PARSERS(){return{..._chunk2Z3O2CFMcjs.za.PROPERTY_PARSERS,SERDEPROPERTIES:function(){return new (0, _chunk2Z3O2CFMcjs.Ed)({expressions:this.parseWrappedCsv(()=>this.parseProperty())})}}}static get ALTER_PARSERS(){return{..._chunk2Z3O2CFMcjs.za.ALTER_PARSERS,CHANGE:function(){return this.parseAlterTableChange()}}}parseTransform(){if(!this.match("lParen",{advance:!1})){this.retreat(this.index-1);return}let t=this.parseWrappedCsv(()=>this.parseLambda()),r=this.parseRowFormat({matchRow:!0}),e;if(this.matchTextSeq("RECORDWRITER")&&(e=this.parseString()),!this.match("using"))return _chunk2Z3O2CFMcjs.If.fromArgList(t);let i=this.parseString();this.match("alias");let l=this.parseSchema(),c=this.parseRowFormat({matchRow:!0}),O;return this.matchTextSeq("RECORDREADER")&&(O=this.parseString()),this.expression(_chunk2Z3O2CFMcjs.Lb,{expressions:t,commandScript:i,schema:l,rowFormatBefore:r,recordWriter:e,rowFormatAfter:c,recordReader:O})}parseQuantileFunction(t){let r;this.match("distinct")?r=this.expression(_chunk2Z3O2CFMcjs.nc,{expressions:[this.parseLambda()]}):(this.match("all"),r=this.parseLambda());let e=[r];return this.match("comma")&&e.push(...this.parseFunctionArgs()),t.fromArgList(e)}parseTypes(t={}){let{checkFunc:r=!1,schema:e=!1,allowIdentifiers:i=!0}=t,l=super.parseTypes({checkFunc:r,schema:e,allowIdentifiers:i});return l&&!e?l.transform((c,O)=>c instanceof _chunk2Z3O2CFMcjs.ac&&c.isType(["char","varchar"])?c.replace(_chunk2Z3O2CFMcjs.ac.build("text")):c,{copy:!1}):l}parseAlterTableChange(){this.match("column");let t=this.parseField({anyToken:!0});if(this.constructor.CHANGE_COLUMN_ALTER_SYNTAX&&this.matchTextSeq("TYPE"))return this.expression(_chunk2Z3O2CFMcjs._a,{this:t,dtype:this.parseTypes({schema:!0})});let r=this.parseField({anyToken:!0}),e=this.parseTypes({schema:!0}),i=this.match("comment")&&this.parseString();return(!t||!r||!e)&&this.raiseError("Expected 'CHANGE COLUMN' to be followed by 'column_name' 'column_name' 'data_type'"),this.expression(_chunk2Z3O2CFMcjs._a,{this:t,renameTo:r,dtype:e,comment:i})}parsePartitionAndOrder(){return[this.matchSet(["partitionBy","distributeBy"])?this.parseCsv(()=>this.parseAssignment()):[],_nullishCoalesce(super.parseOrder({skipOrderToken:this.match("sortBy")}), () => (void 0))]}parseParameter(){this.match("lBrace");let t=this.parseIdentifier()||this.parsePrimaryOrVar(),r=this.match("colon")&&(this.parseIdentifier()||this.parsePrimaryOrVar());return this.match("rBrace"),this.expression(_chunk2Z3O2CFMcjs.Zd,{this:t,expression:r})}toPropEq(t,r){if(t.isStar)return t;let e;return t instanceof _chunk2Z3O2CFMcjs.Ic?e=_nullishCoalesce(t.args.this, () => (_chunk2Z3O2CFMcjs.eo.call(void 0, `col${r+1}`))):e=_chunk2Z3O2CFMcjs.eo.call(void 0, `col${r+1}`),this.expression(_chunk2Z3O2CFMcjs.Fe,{this:e,expression:t})}static get TABLE_ALIAS_TOKENS(){return new Set([..._chunk2Z3O2CFMcjs.za.TABLE_ALIAS_TOKENS,"straightJoin"])}};R=_chunk2Z3O2CFMcjs.a.call(void 0, Rs),_chunk2Z3O2CFMcjs.d.call(void 0, R,10,"ID_VAR_TOKENS",fs,S),_chunk2Z3O2CFMcjs.d.call(void 0, R,10,"NO_PAREN_FUNCTIONS",xs,S),_chunk2Z3O2CFMcjs.d.call(void 0, R,10,"FUNCTION_PARSERS",As,S),_chunk2Z3O2CFMcjs.d.call(void 0, R,10,"FUNCTIONS",hs,S),_chunk2Z3O2CFMcjs.d.call(void 0, R,10,"NO_PAREN_FUNCTION_PARSERS",ls,S),_chunk2Z3O2CFMcjs.d.call(void 0, R,10,"PROPERTY_PARSERS",cs,S),_chunk2Z3O2CFMcjs.d.call(void 0, R,10,"ALTER_PARSERS",Ss,S),_chunk2Z3O2CFMcjs.d.call(void 0, R,10,"TABLE_ALIAS_TOKENS",us,S),_chunk2Z3O2CFMcjs.b.call(void 0, R,S),_chunk2Z3O2CFMcjs.c.call(void 0, R,3,S),S.LOG_DEFAULTS_TO_LN=!0,S.STRICT_CAST=!1,S.VALUES_FOLLOWED_BY_PAREN=!1,S.JOINS_HAVE_EQUAL_PRECEDENCE=!0,S.ADD_JOIN_ON_TRUE=!0,S.ALTER_TABLE_PARTITIONS=!0,S.CHANGE_COLUMN_ALTER_SYNTAX=!1;var ms,Ns,Is,Os,ds,_s,Ds,I,a=class extends(Ds=_chunk2Z3O2CFMcjs.lp,_s=[_chunk2Z3O2CFMcjs.r],ds=[_chunk2Z3O2CFMcjs.r],Os=[_chunk2Z3O2CFMcjs.r],Is=[_chunk2Z3O2CFMcjs.r],Ns=[_chunk2Z3O2CFMcjs.r],ms=[_chunk2Z3O2CFMcjs.r],Ds){static get EXPRESSIONS_WITHOUT_NESTED_CTES(){return new Set([_chunk2Z3O2CFMcjs._c,_chunk2Z3O2CFMcjs.Wd,_chunk2Z3O2CFMcjs.Xd,_chunk2Z3O2CFMcjs.Ud])}static get SUPPORTED_JSON_PATH_PARTS(){return new Set([_chunk2Z3O2CFMcjs.ie,_chunk2Z3O2CFMcjs.je,_chunk2Z3O2CFMcjs.ke,_chunk2Z3O2CFMcjs.le])}static get TYPE_MAPPING(){return new Map([..._chunk2Z3O2CFMcjs.lp.TYPE_MAPPING,["bit","BOOLEAN"],["blob","BINARY"],["datetime","TIMESTAMP"],["rowversion","BINARY"],["text","STRING"],["time","TIMESTAMP"],["timestampntz","TIMESTAMP"],["timestamptz","TIMESTAMP"],["utinyint","SMALLINT"],["varbinary","BINARY"]])}static get ORIGINAL_TRANSFORMS(){return new Map([..._chunk2Z3O2CFMcjs.lp.TRANSFORMS,[_chunk2Z3O2CFMcjs.Hb,_chunk2Z3O2CFMcjs.Dp],[_chunk2Z3O2CFMcjs.Um,_chunk2Z3O2CFMcjs.pp.call(void 0, "FIRST")],[_chunk2Z3O2CFMcjs.Lm,_chunk2Z3O2CFMcjs.qp],[_chunk2Z3O2CFMcjs.vm,_chunk2Z3O2CFMcjs.qq.call(void 0, "MAX_BY")],[_chunk2Z3O2CFMcjs.wm,_chunk2Z3O2CFMcjs.qq.call(void 0, "MIN_BY")],[_chunk2Z3O2CFMcjs.Mf,_chunk2Z3O2CFMcjs.Po.call(void 0, [_chunk2Z3O2CFMcjs.jp])],[_chunk2Z3O2CFMcjs.hg,_chunk2Z3O2CFMcjs.pp.call(void 0, "CONCAT")],[_chunk2Z3O2CFMcjs.qg,function(r){return this.func("CONCAT_WS",[r.args.expression,r.args.this])}],[_chunk2Z3O2CFMcjs.yg,function(r){return Gs.call(this,r)}],[_chunk2Z3O2CFMcjs.Va,_chunk2Z3O2CFMcjs.xp],[_chunk2Z3O2CFMcjs.uh,function(r){return Dt.call(this,r)}],[_chunk2Z3O2CFMcjs.xh,function(r){return ss.call(this,r)}],[_chunk2Z3O2CFMcjs.ji,_chunk2Z3O2CFMcjs.Xp],[_chunk2Z3O2CFMcjs.wh,function(r){return Dt.call(this,r)}],[_chunk2Z3O2CFMcjs.ki,function(r){return`CAST(DATE_FORMAT(${this.sql(r,"this")}, ${E.DATEINT_FORMAT}) AS INT)`}],[_chunk2Z3O2CFMcjs.ri,function(r){return`TO_DATE(CAST(${this.sql(r,"this")} AS STRING), ${E.DATEINT_FORMAT})`}],[_chunk2Z3O2CFMcjs.Jd,function(r){return`STORED BY ${this.sql(r,"this")}`}],[_chunk2Z3O2CFMcjs.Ci,_chunk2Z3O2CFMcjs.pp.call(void 0, "UNBASE64")],[_chunk2Z3O2CFMcjs.bg,_chunk2Z3O2CFMcjs.Jq],[_chunk2Z3O2CFMcjs.Mi,_chunk2Z3O2CFMcjs.Jq],[_chunk2Z3O2CFMcjs._i,_chunk2Z3O2CFMcjs.rp.call(void 0, )],[_chunk2Z3O2CFMcjs.Ie,_chunk2Z3O2CFMcjs.vp],[_chunk2Z3O2CFMcjs.Je,function(r){return this.binary(r,"DIV")}],[_chunk2Z3O2CFMcjs.cj,_chunk2Z3O2CFMcjs.pp.call(void 0, "ISNAN")],[_chunk2Z3O2CFMcjs.uj,function(r){return this.func("GET_JSON_OBJECT",[r.args.this,r.args.expression])}],[_chunk2Z3O2CFMcjs.wj,function(r){return this.func("GET_JSON_OBJECT",[r.args.this,r.args.expression])}],[_chunk2Z3O2CFMcjs.zj,function(r){return ws.call(this,r)}],[_chunk2Z3O2CFMcjs.Lj,_chunk2Z3O2CFMcjs.Up],[_chunk2Z3O2CFMcjs.Vj,_chunk2Z3O2CFMcjs.Ip],[_chunk2Z3O2CFMcjs.sn,_chunk2Z3O2CFMcjs.$p],[_chunk2Z3O2CFMcjs.hk,function(r){return this.func("UNHEX",[this.func("MD5",[r.args.this])])}],[_chunk2Z3O2CFMcjs.vn,_chunk2Z3O2CFMcjs._p],[_chunk2Z3O2CFMcjs.Oh,function(r){return this.func("MONTHS_BETWEEN",[r.args.this,r.args.expression])}],[_chunk2Z3O2CFMcjs.Uc,function(r){return r.args.allowNull?"":"NOT NULL"}],[_chunk2Z3O2CFMcjs.ek,_chunk2Z3O2CFMcjs.Ip],[_chunk2Z3O2CFMcjs.Ja,_chunk2Z3O2CFMcjs.Po.call(void 0, [_chunk2Z3O2CFMcjs.ep,_chunk2Z3O2CFMcjs.fp,_chunk2Z3O2CFMcjs.gp])],[_chunk2Z3O2CFMcjs.An,_chunk2Z3O2CFMcjs.pp.call(void 0, "PERCENTILE")],[_chunk2Z3O2CFMcjs.Zn,_chunk2Z3O2CFMcjs.pp.call(void 0, "PERCENTILE_APPROX")],[_chunk2Z3O2CFMcjs.Ik,_chunk2Z3O2CFMcjs.fq],[_chunk2Z3O2CFMcjs.Jk,_chunk2Z3O2CFMcjs.fq],[_chunk2Z3O2CFMcjs.Kk,_chunk2Z3O2CFMcjs.gq],[_chunk2Z3O2CFMcjs.Lk,function(r){return this.binary(r,"RLIKE")}],[_chunk2Z3O2CFMcjs.Pk,_chunk2Z3O2CFMcjs.pp.call(void 0, "SPLIT")],[_chunk2Z3O2CFMcjs.Mj,_chunk2Z3O2CFMcjs.Vp],[_chunk2Z3O2CFMcjs.Dd,function(r){return this.nakedProperty(r)}],[_chunk2Z3O2CFMcjs.Om,_chunk2Z3O2CFMcjs.pp.call(void 0, "COLLECT_SET")],[_chunk2Z3O2CFMcjs.nl,function(r){return this.func("SPLIT",[r.args.this,this.func("CONCAT",[_chunk2Z3O2CFMcjs.$c.string("\\Q"),r.args.expression,_chunk2Z3O2CFMcjs.$c.string("\\E")])])}],[_chunk2Z3O2CFMcjs.Wd,_chunk2Z3O2CFMcjs.Po.call(void 0, [_chunk2Z3O2CFMcjs.To,_chunk2Z3O2CFMcjs.So,r=>_chunk2Z3O2CFMcjs.Wo.call(void 0, r,{unnestUsingArraysZip:!1}),_chunk2Z3O2CFMcjs.Xo])],[_chunk2Z3O2CFMcjs.tl,function(r){return _chunk2Z3O2CFMcjs.Ep.call(this,r,{funcName:"LOCATE",supportsPosition:!0})}],[_chunk2Z3O2CFMcjs.wl,function(r){return $s.call(this,r)}],[_chunk2Z3O2CFMcjs.xl,function(r){return bs.call(this,r)}],[_chunk2Z3O2CFMcjs.yl,function(r){return Bs.call(this,r)}],[_chunk2Z3O2CFMcjs.Dl,_chunk2Z3O2CFMcjs.Fp],[_chunk2Z3O2CFMcjs.dk,_chunk2Z3O2CFMcjs.pp.call(void 0, "MAP")],[_chunk2Z3O2CFMcjs.Tb,_chunk2Z3O2CFMcjs.Po.call(void 0, [_chunk2Z3O2CFMcjs.Ro])],[_chunk2Z3O2CFMcjs.Jl,_chunk2Z3O2CFMcjs.pp.call(void 0, "TO_DATE")],[_chunk2Z3O2CFMcjs.Kl,_chunk2Z3O2CFMcjs.Wp],[_chunk2Z3O2CFMcjs.Ll,_chunk2Z3O2CFMcjs.pp.call(void 0, "UNIX_TIMESTAMP")],[_chunk2Z3O2CFMcjs.bi,function(r){return this.func("TRUNC",[r.args.this,_chunk2Z3O2CFMcjs.uq.call(void 0, r)])}],[_chunk2Z3O2CFMcjs.Il,_chunk2Z3O2CFMcjs.pp.call(void 0, "UNIX_TIMESTAMP")],[_chunk2Z3O2CFMcjs.Di,_chunk2Z3O2CFMcjs.pp.call(void 0, "BASE64")],[_chunk2Z3O2CFMcjs.Tl,function(r){return`CAST(SUBSTR(REPLACE(CAST(${this.sql(r,"this")} AS STRING), '-', ''), 1, 8) AS INT)`}],[_chunk2Z3O2CFMcjs.Nl,function(r){return Dt.call(this,r)}],[_chunk2Z3O2CFMcjs.Ol,function(r){return ss.call(this,r)}],[_chunk2Z3O2CFMcjs.Pl,function(r){return Xs.call(this,r)}],[_chunk2Z3O2CFMcjs.bn,_chunk2Z3O2CFMcjs.Ap],[_chunk2Z3O2CFMcjs.Ml,_chunk2Z3O2CFMcjs.bq],[_chunk2Z3O2CFMcjs.Vl,_chunk2Z3O2CFMcjs.pp.call(void 0, "ASCII")],[_chunk2Z3O2CFMcjs.Yl,function(r){return this.func("FROM_UNIXTIME",[r.args.this,_chunk2Z3O2CFMcjs.Lp.call(void 0, "hive").call(this,r)])}],[_chunk2Z3O2CFMcjs.Zl,function(r){return Ys.call(this,r)}],[_chunk2Z3O2CFMcjs._l,_chunk2Z3O2CFMcjs.pp.call(void 0, "FROM_UNIXTIME")],[_chunk2Z3O2CFMcjs.ud,function(r){return`PARTITIONED BY ${this.sql(r,"this")}`}],[_chunk2Z3O2CFMcjs.Al,_chunk2Z3O2CFMcjs.pp.call(void 0, "FORMAT_NUMBER")],[_chunk2Z3O2CFMcjs.tb,function(r){return this.nationalSql(r,{prefix:""})}],[_chunk2Z3O2CFMcjs.Mc,function(r){return`(${this.expressions(r,{key:"this",indent:!1})})`}],[_chunk2Z3O2CFMcjs.Rc,function(r){return`(${this.expressions(r,{key:"this",indent:!1})})`}],[_chunk2Z3O2CFMcjs.Sc,()=>""],[_chunk2Z3O2CFMcjs.sd,()=>""],[_chunk2Z3O2CFMcjs.vd,function(r){return this.func("BUCKET",[r.args.expression,r.args.this])}],[_chunk2Z3O2CFMcjs.wd,function(r){return this.func("TRUNCATE",[r.args.expression,r.args.this])}],[_chunk2Z3O2CFMcjs.Vc,()=>"PRIMARY KEY"],[_chunk2Z3O2CFMcjs.Lh,_chunk2Z3O2CFMcjs.pp.call(void 0, "WEEKOFYEAR")],[_chunk2Z3O2CFMcjs.Hh,_chunk2Z3O2CFMcjs.pp.call(void 0, "DAYOFMONTH")],[_chunk2Z3O2CFMcjs.Fh,_chunk2Z3O2CFMcjs.pp.call(void 0, "DAYOFWEEK")],[_chunk2Z3O2CFMcjs.Rj,function(r){return _chunk2Z3O2CFMcjs.kp.call(this,r,"insCost","delCost","subCost","maxDist"),_chunk2Z3O2CFMcjs.pp.call(void 0, "LEVENSHTEIN").call(this,r)}]])}static get PROPERTIES_LOCATION(){return new Map([..._chunk2Z3O2CFMcjs.lp.PROPERTIES_LOCATION,[_chunk2Z3O2CFMcjs.kd,"postSchema"],[_chunk2Z3O2CFMcjs.ud,"postSchema"],[_chunk2Z3O2CFMcjs.Od,"unsupported"],[_chunk2Z3O2CFMcjs.Pd,"unsupported"]])}static get TS_OR_DS_EXPRESSIONS(){return new Set([_chunk2Z3O2CFMcjs.xh,_chunk2Z3O2CFMcjs.mi,_chunk2Z3O2CFMcjs.kk,_chunk2Z3O2CFMcjs.km])}unnestSql(t){return _chunk2Z3O2CFMcjs.pp.call(void 0, "EXPLODE").call(this,t)}jsonPathKeySql(t){return t.args.this instanceof _chunk2Z3O2CFMcjs.le?(this.unsupported("Unsupported wildcard in JSONPathKey expression"),""):super.jsonPathKeySql(t)}parameterSql(t){let r=this.sql(t,"this"),e=this.sql(t,"expression"),i=t.parent;return r=e?`${r}:${e}`:r,i instanceof _chunk2Z3O2CFMcjs.Ce&&i.parent instanceof _chunk2Z3O2CFMcjs.Ra?r:`\${${r}}`}schemaSql(t){for(let r of t.findAll(_chunk2Z3O2CFMcjs.Gb))r.args.desc===!1&&r.setArgKey("desc",void 0);return super.schemaSql(t)}constraintSql(t){for(let i of Array.from(t.findAll(_chunk2Z3O2CFMcjs.Td)))i.pop();let r=this.sql(t,"this"),e=this.expressions(t,{sep:" ",flat:!0});return`CONSTRAINT ${r} ${e}`}rowFormatSerdePropertySql(t){let r=this.sql(t,"serdeProperties");return r=r?` ${r}`:"",`ROW FORMAT SERDE ${this.sql(t,"this")}${r}`}arrayAggSql(t){return this.func("COLLECT_LIST",[t.args.this instanceof _chunk2Z3O2CFMcjs.Fb?t.args.this.args.this:t.args.this])}truncSql(t){return t.args.decimals&&this.unsupported("Unsupported arg 'decimals' for TRUNC"),this.sql(new (0, _chunk2Z3O2CFMcjs.Cg)({this:t.args.this,to:_chunk2Z3O2CFMcjs.ac.build("bigint")}))}dataTypeSql(t){if(t.isType(_chunk2Z3O2CFMcjs.lp.PARAMETERIZABLE_TEXT_TYPES)&&(!t.args.expressions||t.args.expressions[0].name==="MAX"))t=_nullishCoalesce(_chunk2Z3O2CFMcjs.ac.build("text"), () => (t));else if(t.isType("text")&&t.args.expressions)t.setArgKey("this","varchar");else if(t.isType(_chunk2Z3O2CFMcjs.ac.TEMPORAL_TYPES))t=_nullishCoalesce(_chunk2Z3O2CFMcjs.ac.build(t.args.this), () => (t));else if(t.isType("float")){let r=t.find(_chunk2Z3O2CFMcjs.$b);r instanceof _chunk2Z3O2CFMcjs.$b&&(t=_nullishCoalesce((parseInt(_nullishCoalesce(_optionalChain([r, 'access', _6 => _6.args, 'access', _7 => _7.this, 'optionalAccess', _8 => _8.args, 'access', _9 => _9.this, 'optionalAccess', _10 => _10.toString, 'call', _11 => _11()]), () => ("0")))<=32?_chunk2Z3O2CFMcjs.ac.build("float"):_chunk2Z3O2CFMcjs.ac.build("double")), () => (t)))}return super.dataTypeSql(t)}versionSql(t){return super.versionSql(t).replace("FOR ","")}structSql(t){let r=[];return _optionalChain([t, 'access', _12 => _12.args, 'access', _13 => _13.expressions, 'optionalAccess', _14 => _14.forEach, 'call', _15 => _15(e=>{if(e instanceof _chunk2Z3O2CFMcjs.Fe){this.unsupported("Hive does not support named structs.");let i=e.args.expression;r.push(i instanceof _chunk2Z3O2CFMcjs.Ca||typeof i=="string"?i:"")}else r.push(e)})]),this.func("STRUCT",r)}columnDefSql(t,r={}){let{sep:e=" "}=r;return super.columnDefSql(t,{sep:t.parent instanceof _chunk2Z3O2CFMcjs.ac&&t.parent.isType("struct")?": ":e})}alterColumnSql(t){let r=this.sql(t,"this"),e=this.sql(t,"renameTo")||r,i=this.sql(t,"dtype"),l=this.sql(t,"comment"),c=l?` COMMENT ${l}`:"",O=this.sql(t,"default"),J=t.args.visible,w=t.args.allowNull,Ls=t.args.drop;return(O||Ls||J||w)&&this.unsupported("Unsupported CHANGE COLUMN syntax"),i||this.unsupported("CHANGE COLUMN without a type is not supported"),`CHANGE COLUMN ${r} ${e} ${i}${c}`}renameColumnSql(t){return this.unsupported("Cannot rename columns without data type defined in Hive"),""}alterSetSql(t){let r=this.expressions(t,{flat:!0});r=r?` ${r}`:"";let e=this.sql(t,"location");e=e?` LOCATION ${e}`:"";let i=this.expressions(t,{key:"fileFormat",flat:!0,sep:" "});i=i?` FILEFORMAT ${i}`:"";let l=this.sql(t,"serde");l=l?` SERDE ${l}`:"";let c=this.expressions(t,{key:"tag",flat:!0,sep:""});return c=c?` TAGS ${c}`:"",`SET${l}${r}${e}${i}${c}`}serdePropertiesSql(t){let r=t.args.with?"WITH ":"",e=this.expressions(t,{flat:!0});return`${r}SERDEPROPERTIES (${e})`}existsSql(t){return t.args.expression?this.functionFallbackSql(t):super.existsSql(t)}timeToStrSql(t){let r=t.args.this;return r instanceof _chunk2Z3O2CFMcjs.Kl&&(r=r.args.this),this.func("DATE_FORMAT",[r,this.formatTime(t)])}fileFormatPropertySql(t){let r;return t.args.this instanceof _chunk2Z3O2CFMcjs.Nb?r=this.sql(t,"this"):r=t.name.toUpperCase(),`STORED AS ${r}`}};I=_chunk2Z3O2CFMcjs.a.call(void 0, Ds),_chunk2Z3O2CFMcjs.d.call(void 0, I,10,"EXPRESSIONS_WITHOUT_NESTED_CTES",_s,a),_chunk2Z3O2CFMcjs.d.call(void 0, I,10,"SUPPORTED_JSON_PATH_PARTS",ds,a),_chunk2Z3O2CFMcjs.d.call(void 0, I,10,"TYPE_MAPPING",Os,a),_chunk2Z3O2CFMcjs.d.call(void 0, I,10,"ORIGINAL_TRANSFORMS",Is,a),_chunk2Z3O2CFMcjs.d.call(void 0, I,10,"PROPERTIES_LOCATION",Ns,a),_chunk2Z3O2CFMcjs.d.call(void 0, I,10,"TS_OR_DS_EXPRESSIONS",ms,a),_chunk2Z3O2CFMcjs.b.call(void 0, I,a),_chunk2Z3O2CFMcjs.c.call(void 0, I,3,a),a.SUPPORTS_DECODE_CASE=!1,a.SELECT_KINDS=[],a.TRY_SUPPORTED=!1,a.SUPPORTS_UESCAPE=!1,a.LIMIT_FETCH="LIMIT",a.TABLESAMPLE_WITH_METHOD=!1,a.JOIN_HINTS=!1,a.TABLE_HINTS=!1,a.QUERY_HINTS=!1,a.INDEX_ON="ON TABLE",a.EXTRACT_ALLOWS_QUOTES=!1,a.NVL2_SUPPORTED=!1,a.LAST_DAY_SUPPORTS_DATE_PART=!1,a.JSON_PATH_SINGLE_QUOTE_ESCAPE=!0,a.SUPPORTS_TO_NUMBER=!1,a.WITH_PROPERTIES_PREFIX="TBLPROPERTIES",a.PARSE_JSON_NAME=void 0,a.PAD_FILL_PATTERN_IS_REQUIRED=!0,a.SUPPORTS_MEDIAN=!1,a.ARRAY_SIZE_NAME="SIZE",a.ALTER_SET_TYPE="";var Ps,Ms,gs,Cs,q,E= exports.c =class extends(Cs=_chunk2Z3O2CFMcjs.op,gs=[_chunk2Z3O2CFMcjs.r],Ms=[_chunk2Z3O2CFMcjs.r],Ps=[_chunk2Z3O2CFMcjs.r],Cs){static get EXPRESSION_METADATA(){return new Map(P.EXPRESSION_METADATA)}static get COERCES_TO(){let t=new Map(_chunk2Z3O2CFMcjs.Z.COERCES_TO);for(let r of[..._chunk2Z3O2CFMcjs.ac.NUMERIC_TYPES,..._chunk2Z3O2CFMcjs.ac.TEMPORAL_TYPES,"interval"]){let e=_nullishCoalesce(t.get(r), () => (new Set));t.set(r,new Set([...e,..._chunk2Z3O2CFMcjs.ac.TEXT_TYPES]))}return t}static get NORMALIZATION_STRATEGY(){return"caseInsensitive"}static get TIME_MAPPING(){return{y:"%Y",Y:"%Y",YYYY:"%Y",yyyy:"%Y",YY:"%y",yy:"%y",MMMM:"%B",MMM:"%b",MM:"%m",M:"%-m",dd:"%d",d:"%-d",HH:"%H",H:"%-H",hh:"%I",h:"%-I",mm:"%M",m:"%-M",ss:"%S",s:"%-S",SSSSSS:"%f",a:"%p",DD:"%j",D:"%-j",E:"%a",EE:"%a",EEE:"%a",EEEE:"%A",z:"%Z",Z:"%z"}}};q=_chunk2Z3O2CFMcjs.a.call(void 0, Cs),_chunk2Z3O2CFMcjs.d.call(void 0, q,10,"COERCES_TO",gs,E),_chunk2Z3O2CFMcjs.d.call(void 0, q,10,"NORMALIZATION_STRATEGY",Ms,E),_chunk2Z3O2CFMcjs.d.call(void 0, q,10,"TIME_MAPPING",Ps,E),_chunk2Z3O2CFMcjs.b.call(void 0, q,E),_chunk2Z3O2CFMcjs.c.call(void 0, q,3,E),E.DIALECT_NAME="hive",E.ALIAS_POST_TABLESAMPLE=!0,E.IDENTIFIERS_CAN_START_WITH_DIGIT=!0,E.SUPPORTS_USER_DEFINED_TYPES=!1,E.SAFE_DIVISION=!0,E.ARRAY_AGG_INCLUDES_NULLS=void 0,E.REGEXP_EXTRACT_DEFAULT_GROUP=1,E.ALTER_TABLE_SUPPORTS_CASCADE=!0,E.INITCAP_DEFAULT_DELIMITER_CHARS=`
2
+ \r\f\v`,E.DATE_FORMAT="'yyyy-MM-dd'",E.DATEINT_FORMAT="'yyyyMMdd'",E.TIME_FORMAT="'yyyy-MM-dd HH:mm:ss'",E.Tokenizer=x,E.Parser=S,E.Generator=a;_chunk2Z3O2CFMcjs.op.register("hive",E);exports.a = P; exports.b = V; exports.c = E;
3
+ //# sourceMappingURL=chunk-XZQFOICX.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/huydna/projects/sqlingo.js/dist/chunk-XZQFOICX.cjs","../src/typing/hive.ts","../src/dialects/hive.ts"],"names":["_EXPRESSION_METADATA_dec","_init","cache","HiveTyping","map","DialectTyping","extend","types","data","type","EncodeExpr","UnhexExpr","CorrExpr","MonthsBetweenExpr","CurrentDatabaseExpr","CurrentSchemaExpr","CurrentUserExpr","HexExpr","RepeatExpr","ReplaceExpr","SoundexExpr","StrToUnixExpr","FactorialExpr","MonthExpr","SecondExpr","CoalesceExpr","s","IfExpr","RegexpSplitExpr","ReverseExpr","__decoratorStart","__decorateElement","__decoratorMetadata","__runInitializers","DATE_DELTA_INTERVAL","TIME_DIFF_FACTOR","DIFF_MONTH_SWITCH","addDateSql","expression","TsOrDsAddExpr","unit","func","multiplier","DateSubExpr","increment","LiteralExpr","value","MulExpr","dateDiffSql","factor","left","right","secDiff"],"mappings":"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","file":"/home/huydna/projects/sqlingo.js/dist/chunk-XZQFOICX.cjs","sourcesContent":[null,"import type {\n Expression,\n} from '../expressions/expressions';\nimport {\n cache,\n} from '../port_internals';\nimport {\n DataTypeExprKind,\n} from '../expressions/types';\nimport {\n EncodeExpr,\n UnhexExpr,\n CorrExpr,\n MonthsBetweenExpr,\n CurrentDatabaseExpr,\n CurrentSchemaExpr,\n CurrentUserExpr,\n HexExpr,\n RepeatExpr,\n ReplaceExpr,\n SoundexExpr,\n StrToUnixExpr,\n FactorialExpr,\n MonthExpr,\n SecondExpr,\n CoalesceExpr,\n IfExpr,\n RegexpSplitExpr,\n ReverseExpr,\n} from '../expressions/expressions';\nimport type {\n TypeAnnotator,\n} from '../optimizer';\nimport {\n DialectTyping,\n} from './dialect';\nimport type {\n ExpressionMetadata,\n} from './dialect';\n\nexport class HiveTyping {\n @cache\n static get EXPRESSION_METADATA (): ExpressionMetadata {\n // Clone the base metadata to apply dialect-specific overrides\n const map: ExpressionMetadata = new Map(DialectTyping.EXPRESSION_METADATA);\n\n const extend = (types: (typeof Expression)[], data: Record<string, unknown>) => {\n for (const type of types) map.set(type, data);\n };\n\n extend([\n EncodeExpr,\n UnhexExpr,\n ], {\n returns: DataTypeExprKind.BINARY,\n });\n\n extend([\n CorrExpr,\n MonthsBetweenExpr,\n ], {\n returns: DataTypeExprKind.DOUBLE,\n });\n\n extend([\n CurrentDatabaseExpr,\n CurrentSchemaExpr,\n CurrentUserExpr,\n HexExpr,\n RepeatExpr,\n ReplaceExpr,\n SoundexExpr,\n ], {\n returns: DataTypeExprKind.VARCHAR,\n });\n\n extend([\n StrToUnixExpr,\n FactorialExpr,\n ], {\n returns: DataTypeExprKind.BIGINT,\n });\n\n extend([\n MonthExpr,\n SecondExpr,\n ], {\n returns: DataTypeExprKind.INT,\n });\n\n map.set(CoalesceExpr, {\n annotator: (s: TypeAnnotator, e: CoalesceExpr) => s.annotateByArgs(e, [\n 'this',\n 'expressions',\n ], {\n promote: true,\n }),\n });\n\n map.set(IfExpr, {\n annotator: (s: TypeAnnotator, e: IfExpr) => s.annotateByArgs(e, [\n 'true',\n 'false',\n ], {\n promote: true,\n }),\n });\n\n map.set(RegexpSplitExpr, {\n returns: 'ARRAY<STRING>',\n });\n\n map.set(ReverseExpr, {\n annotator: (s: TypeAnnotator, e: ReverseExpr) => s.annotateByArgs(e, [\n 'this',\n ]),\n });\n\n return map;\n }\n}\n","import {\n cache,\n} from '../port_internals';\nimport type {\n AlterSetExpr,\n ColumnDefExpr,\n ConstraintExpr,\n ExistsExpr,\n RowFormatSerdePropertyExpr,\n SchemaExpr,\n StructExpr,\n TruncExpr,\n VersionExpr,\n IdentifierExpr,\n ExpressionValue,\n StarExpr,\n UnnestExpr,\n} from '../expressions';\nimport {\n AlterColumnExpr,\n AnyValueExpr,\n ApproxDistinctExpr,\n ApproxQuantileExpr,\n ArgMaxExpr,\n ArgMinExpr,\n ArrayAggExpr,\n ArrayConcatExpr,\n ArrayExpr,\n ArraySizeExpr,\n ArraySortExpr,\n ArrayToStringExpr,\n ArrayUniqueAggExpr,\n BooleanExpr,\n CastExpr,\n ClusteredColumnConstraintExpr,\n ColumnExpr,\n CreateExpr,\n CurrentTimestampExpr,\n DataTypeExpr,\n DataTypeExprKind,\n DataTypeParamExpr,\n DateAddExpr,\n DateDiffExpr,\n DateStrToDateExpr,\n DateSubExpr,\n DateToDiExpr,\n DayExpr,\n DayOfMonthExpr,\n DayOfWeekExpr,\n DiToDateExpr,\n DistinctExpr,\n EqExpr,\n Expression,\n FileFormatPropertyExpr,\n FirstExpr,\n FirstValueExpr,\n FromBase64Expr,\n GenerateDateArrayExpr,\n GenerateSeriesExpr,\n IfExpr,\n ILikeExpr,\n IgnoreNullsExpr,\n InputOutputFormatExpr,\n InsertExpr,\n IntDivExpr,\n IsNanExpr,\n JsonExtractExpr,\n JsonExtractScalarExpr,\n JsonFormatExpr,\n JsonPathKeyExpr,\n JsonPathRootExpr,\n JsonPathSubscriptExpr,\n JsonPathWildcardExpr,\n LastExpr,\n LastValueExpr,\n LeftExpr,\n LevenshteinExpr,\n LiteralExpr,\n MapExpr,\n MaxExpr,\n Md5DigestExpr,\n MinExpr,\n MonthExpr,\n MonthsBetweenExpr,\n MulExpr,\n NationalExpr,\n NonClusteredColumnConstraintExpr,\n NotForReplicationColumnConstraintExpr,\n NotNullColumnConstraintExpr,\n NumberToStrExpr,\n OnPropertyExpr,\n OrderExpr,\n OrderedExpr,\n ParameterExpr,\n PartitionByTruncateExpr,\n PartitionedByBucketExpr,\n PartitionedByPropertyExpr,\n PrimaryKeyColumnConstraintExpr,\n PropertiesExpr,\n PropertiesLocation,\n PropertyEqExpr,\n PropertyExpr,\n QuantileExpr,\n QueryTransformExpr,\n RegexpExtractAllExpr,\n RegexpExtractExpr,\n RegexpLikeExpr,\n RegexpReplaceExpr,\n RegexpSplitExpr,\n RightExpr,\n SchemaCommentPropertyExpr,\n SelectExpr,\n SerdePropertiesExpr,\n SetItemExpr,\n SetOperationExpr,\n SplitExpr,\n StarMapExpr,\n StorageHandlerPropertyExpr,\n StrToMapExpr,\n StrPositionExpr,\n StrToDateExpr,\n StrToTimeExpr,\n StrToUnixExpr,\n StructExtractExpr,\n SubqueryExpr,\n TableExpr,\n TimeStrToDateExpr,\n TimeStrToTimeExpr,\n TimeStrToUnixExpr,\n TimeToStrExpr,\n TimeToUnixExpr,\n TimestampTruncExpr,\n ToBase64Expr,\n TransformExpr,\n TrimExpr,\n TryCastExpr,\n TsOrDiToDiExpr,\n TsOrDsAddExpr,\n TsOrDsDiffExpr,\n TsOrDsToDateExpr,\n UnicodeExpr,\n UnixToStrExpr,\n UnixToTimeExpr,\n UnixToTimeStrExpr,\n VarExpr,\n VarMapExpr,\n VolatilePropertyExpr,\n WeekOfYearExpr,\n WithDataPropertyExpr,\n WithExpr,\n YearExpr,\n toIdentifier,\n var_,\n} from '../expressions';\nimport {\n Generator, unsupportedArgs,\n} from '../generator';\nimport {\n seqGet,\n} from '../helper';\nimport {\n Parser,\n} from '../parser';\nimport {\n Tokenizer, TokenType,\n} from '../tokens';\nimport {\n anyToExists,\n ctasWithTmpTablesToCreateTmpView,\n eliminateDistinctOn,\n eliminateQualify,\n inheritStructFieldNames,\n moveSchemaColumnsToPartitionedBy,\n preprocess,\n removeUniqueConstraints,\n unnestGenerateSeries,\n unnestToExplode,\n} from '../transforms';\nimport {\n HiveTyping,\n} from '../typing/hive';\nimport {\n TypeAnnotator,\n} from '../optimizer';\nimport {\n approxCountDistinctSql,\n argMaxOrMinNoCount,\n buildFormattedTime,\n buildRegexpExtract,\n dateStrToDateSql,\n Dialect,\n Dialects,\n ifSql,\n isParseJson,\n leftToSubstringSql,\n maxOrGreatest,\n minOrLeast,\n noIlikeSql,\n noRecursiveCteSql,\n noTrycastSql,\n NormalizationStrategy,\n propertySql,\n regexpExtractSql,\n regexpReplaceSql,\n renameFunc,\n rightToSubstringSql,\n sequenceSql,\n strPositionSql,\n structExtractSql,\n timeFormat,\n timeStrToTimeSql,\n trimSql,\n unitToStr,\n varMapSql,\n} from './dialect';\n\nconst DATE_DELTA_INTERVAL: Record<string, [string, number]> = {\n YEAR: [\n 'ADD_MONTHS',\n 12,\n ],\n MONTH: [\n 'ADD_MONTHS',\n 1,\n ],\n QUARTER: [\n 'ADD_MONTHS',\n 3,\n ],\n WEEK: [\n 'DATE_ADD',\n 7,\n ],\n DAY: [\n 'DATE_ADD',\n 1,\n ],\n};\n\nconst TIME_DIFF_FACTOR: Record<string, string> = {\n MILLISECOND: ' * 1000',\n SECOND: '',\n MINUTE: ' / 60',\n HOUR: ' / 3600',\n};\n\nconst DIFF_MONTH_SWITCH = new Set([\n 'YEAR',\n 'QUARTER',\n 'MONTH',\n]);\n\nfunction addDateSql (this: Generator, expression: DateAddExpr | DateSubExpr | TsOrDsAddExpr): string {\n if (expression instanceof TsOrDsAddExpr && !expression.args.unit) {\n return this.func('DATE_ADD', [\n expression.args.this,\n expression.args.expression,\n ]);\n }\n\n const unit = expression.text('unit').toUpperCase();\n\n let [\n // eslint-disable-next-line prefer-const\n func,\n multiplier,\n ] = DATE_DELTA_INTERVAL[unit] || [\n 'DATE_ADD',\n 1,\n ];\n\n if (expression instanceof DateSubExpr) {\n multiplier *= -1;\n }\n\n let increment = expression.args.expression;\n if (increment instanceof LiteralExpr) {\n const value = increment.isNumber ? parseFloat(increment.args.this ?? '0') : parseInt(increment.args.this ?? '0');\n increment = LiteralExpr.number(value * multiplier);\n } else if (multiplier !== 1) {\n increment = new MulExpr({\n this: increment,\n expression: LiteralExpr.number(multiplier),\n });\n }\n\n return this.func(func, [\n expression.args.this,\n increment,\n ]);\n}\n\nfunction dateDiffSql (this: Generator, expression: DateDiffExpr | TsOrDsDiffExpr): string {\n const unit = expression.text('unit').toUpperCase();\n\n const factor = TIME_DIFF_FACTOR[unit];\n if (factor !== undefined) {\n const left = this.sql(expression, 'this');\n const right = this.sql(expression, 'expression');\n const secDiff = `UNIX_TIMESTAMP(${left}) - UNIX_TIMESTAMP(${right})`;\n return factor ? `(${secDiff})${factor}` : secDiff;\n }\n\n const monthsBetween = DIFF_MONTH_SWITCH.has(unit);\n const sqlFunc = monthsBetween ? 'MONTHS_BETWEEN' : 'DATEDIFF';\n const multiplier = DATE_DELTA_INTERVAL[unit]?.[1] || 1;\n const multiplierSql = 1 < multiplier ? ` / ${multiplier}` : '';\n\n let diffSql = `${sqlFunc}(${this.formatArgs([\n expression.args.this,\n expression.args.expression,\n ])})`;\n\n if (monthsBetween || multiplierSql) {\n diffSql = `CAST(${diffSql}${multiplierSql} AS INT)`;\n }\n\n return diffSql;\n}\n\nfunction jsonFormatSql (this: Generator, expression: JsonFormatExpr): string {\n const thisNode = expression.args.this;\n\n if (thisNode && isParseJson(thisNode)) {\n if (thisNode.args.this instanceof LiteralExpr && thisNode.args.this.isString) {\n const wrappedJson = LiteralExpr.string(`[${thisNode.args.this.args.this}]`);\n\n const fromJson = this.func('FROM_JSON', [\n wrappedJson,\n this.func('SCHEMA_OF_JSON', [\n wrappedJson,\n ]),\n ]);\n const toJson = this.func('TO_JSON', [\n fromJson,\n ]);\n\n return this.func('REGEXP_EXTRACT', [\n toJson,\n LiteralExpr.string('\\'^.(.*).$\\''),\n LiteralExpr.number(1),\n ]);\n }\n return this.sql(thisNode);\n }\n\n return this.func('TO_JSON', [\n thisNode,\n expression.args.options,\n ]);\n}\n\nfunction arraySortSql (this: Generator, expression: ArraySortExpr): string {\n if (expression.args.expression) {\n this.unsupported('Unsupported arg \\'expression\\' for ArraySort');\n }\n return this.func('SORT_ARRAY', [\n expression.args.this,\n ]);\n}\n\nfunction strToUnixSql (this: Generator, expression: StrToUnixExpr): string {\n return this.func('UNIX_TIMESTAMP', [\n expression.args.this,\n timeFormat('hive').call(this, expression),\n ]);\n}\n\nfunction unixToTimeSql (this: Generator, expression: UnixToTimeExpr): string {\n const timestamp = this.sql(expression, 'this');\n const scale = expression.args.scale;\n\n if (scale === undefined || scale.toValue() === UnixToTimeExpr.SECONDS.toValue()) {\n return renameFunc('FROM_UNIXTIME').call(this, expression);\n }\n\n return `FROM_UNIXTIME(${timestamp} / POW(10, ${scale}))`;\n}\n\nfunction strToDateSql (this: Generator, expression: StrToDateExpr): string {\n let thisSql = this.sql(expression, 'this');\n const timeFormatSql = this.formatTime(expression);\n\n if (timeFormatSql !== null && timeFormatSql !== undefined && ![\n Hive.TIME_FORMAT,\n Hive.DATE_FORMAT,\n ].includes(timeFormatSql)) {\n thisSql = `FROM_UNIXTIME(UNIX_TIMESTAMP(${thisSql}, ${timeFormatSql}))`;\n }\n\n return `CAST(${thisSql} AS DATE)`;\n}\n\nfunction strToTimeSql (this: Generator, expression: StrToTimeExpr): string {\n let thisSql = this.sql(expression, 'this');\n const timeFormatSql = this.formatTime(expression);\n\n if (timeFormatSql !== null && timeFormatSql !== undefined && ![\n Hive.TIME_FORMAT,\n Hive.DATE_FORMAT,\n ].includes(timeFormatSql)) {\n thisSql = `FROM_UNIXTIME(UNIX_TIMESTAMP(${thisSql}, ${timeFormatSql}))`;\n }\n\n return `CAST(${thisSql} AS TIMESTAMP)`;\n}\n\nfunction toDateSql (this: Generator, expression: TsOrDsToDateExpr): string {\n const timeFormatSql = this.formatTime(expression);\n\n if (timeFormatSql && ![\n Hive.TIME_FORMAT,\n Hive.DATE_FORMAT,\n ].includes(timeFormatSql)) {\n return this.func('TO_DATE', [\n expression.args.this,\n timeFormatSql,\n ]);\n }\n\n if (expression.parent instanceof Expression && (this._constructor as typeof HiveGenerator).TS_OR_DS_EXPRESSIONS.has(expression.parent._constructor)) {\n return this.sql(expression, 'this');\n }\n\n return this.func('TO_DATE', [\n expression.args.this,\n ]);\n}\n\nexport function buildWithIgnoreNulls (ExpClass: typeof Expression) {\n return (args: Expression[]) => {\n const thisNode = new ExpClass({\n this: seqGet(args, 0),\n });\n if (seqGet(args, 1) instanceof BooleanExpr && seqGet(args, 1)?.args.this === true) {\n return new IgnoreNullsExpr({\n this: thisNode,\n });\n }\n return thisNode;\n };\n}\n\nfunction buildToDate (args: Expression[]): TsOrDsToDateExpr {\n const expr = buildFormattedTime(TsOrDsToDateExpr, {\n dialect: 'hive',\n })(args);\n expr.setArgKey('safe', true);\n return expr;\n}\n\nfunction buildDateAdd (args: Expression[]): TsOrDsAddExpr {\n let expression = seqGet(args, 1);\n if (expression) {\n expression = expression.mul(-1);\n }\n\n return new TsOrDsAddExpr({\n this: seqGet(args, 0),\n expression: expression,\n unit: var_('DAY'),\n });\n}\n\nclass HiveTokenizer extends Tokenizer {\n @cache\n static get QUOTES () {\n return [\n '\\'',\n '\"',\n ];\n }\n\n @cache\n static get IDENTIFIERS () {\n return [\n '`',\n ];\n }\n\n @cache\n static get STRING_ESCAPES () {\n return [\n '\\\\',\n ];\n }\n\n @cache\n static get SINGLE_TOKENS () {\n return {\n ...Tokenizer.SINGLE_TOKENS,\n $: TokenType.PARAMETER,\n };\n }\n\n @cache\n static get ORIGINAL_KEYWORDS (): Record<string, TokenType> {\n return {\n ...Tokenizer.KEYWORDS,\n 'ADD ARCHIVE': TokenType.COMMAND,\n 'ADD ARCHIVES': TokenType.COMMAND,\n 'ADD FILE': TokenType.COMMAND,\n 'ADD FILES': TokenType.COMMAND,\n 'ADD JAR': TokenType.COMMAND,\n 'ADD JARS': TokenType.COMMAND,\n 'MINUS': TokenType.EXCEPT,\n 'MSCK REPAIR': TokenType.COMMAND,\n 'REFRESH': TokenType.REFRESH,\n 'TIMESTAMP AS OF': TokenType.TIMESTAMP_SNAPSHOT,\n 'VERSION AS OF': TokenType.VERSION_SNAPSHOT,\n 'SERDEPROPERTIES': TokenType.SERDE_PROPERTIES,\n };\n }\n\n @cache\n static get NUMERIC_LITERALS () {\n return {\n L: 'BIGINT',\n S: 'SMALLINT',\n Y: 'TINYINT',\n D: 'DOUBLE',\n F: 'FLOAT',\n BD: 'DECIMAL',\n };\n }\n}\n\nclass HiveParser extends 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 ...Parser.NO_PAREN_FUNCTIONS,\n };\n delete noParenFunctions[TokenType.CURRENT_TIME];\n delete noParenFunctions[TokenType.LOCALTIME];\n delete noParenFunctions[TokenType.LOCALTIMESTAMP];\n return noParenFunctions;\n }\n\n static LOG_DEFAULTS_TO_LN = true;\n static STRICT_CAST = false;\n static VALUES_FOLLOWED_BY_PAREN = false;\n static JOINS_HAVE_EQUAL_PRECEDENCE = true;\n static ADD_JOIN_ON_TRUE = true;\n static ALTER_TABLE_PARTITIONS = true;\n static CHANGE_COLUMN_ALTER_SYNTAX = false;\n\n @cache\n static get FUNCTION_PARSERS (): Partial<Record<string, (this: Parser) => Expression | undefined>> {\n return {\n ...Parser.FUNCTION_PARSERS,\n PERCENTILE: function (this: Parser) {\n return (this as HiveParser).parseQuantileFunction(QuantileExpr);\n },\n PERCENTILE_APPROX: function (this: Parser) {\n return (this as HiveParser).parseQuantileFunction(ApproxQuantileExpr);\n },\n };\n }\n\n @cache\n static get FUNCTIONS (): Record<string, (expression: Expression[], options: {dialect: Dialect}) => Expression> {\n return {\n ...Parser.FUNCTIONS,\n ADD_MONTHS: (args: Expression[]): TsOrDsAddExpr => new TsOrDsAddExpr({\n this: seqGet(args, 0),\n expression: seqGet(args, 1),\n unit: var_('MONTH'),\n }),\n BASE64: (args: unknown[]) => ToBase64Expr.fromArgList(args),\n COLLECT_LIST: (args: Expression[]) => new ArrayAggExpr({\n this: seqGet(args, 0),\n nullsExcluded: true,\n }),\n COLLECT_SET: (args: unknown[]) => ArrayUniqueAggExpr.fromArgList(args),\n DATE_ADD: (args: Expression[]) => new TsOrDsAddExpr({\n this: seqGet(args, 0),\n expression: seqGet(args, 1),\n unit: new VarExpr({\n this: 'DAY',\n }),\n }),\n DATE_FORMAT: (args: Expression[]) => buildFormattedTime(TimeToStrExpr, {\n dialect: 'hive',\n })([\n new TimeStrToTimeExpr({\n this: seqGet(args, 0),\n }),\n seqGet(args, 1),\n ]),\n DATE_SUB: buildDateAdd,\n DATEDIFF: (args: Expression[]) => new DateDiffExpr({\n this: new TsOrDsToDateExpr({\n this: seqGet(args, 0),\n }),\n expression: new TsOrDsToDateExpr({\n this: seqGet(args, 1),\n }),\n }),\n DAY: (args: Expression[]) => new DayExpr({\n this: new TsOrDsToDateExpr({\n this: seqGet(args, 0),\n }),\n }),\n FIRST: buildWithIgnoreNulls(FirstExpr),\n FIRST_VALUE: buildWithIgnoreNulls(FirstValueExpr),\n FROM_UNIXTIME: buildFormattedTime(UnixToStrExpr, {\n dialect: 'hive',\n defaultValue: true,\n }),\n GET_JSON_OBJECT: (args: Expression[], {\n dialect,\n }: {dialect: Dialect}) => new JsonExtractScalarExpr({\n this: seqGet(args, 0),\n expression: dialect.toJsonPath(seqGet(args, 1)),\n }),\n LAST: buildWithIgnoreNulls(LastExpr),\n LAST_VALUE: buildWithIgnoreNulls(LastValueExpr),\n MAP: (args: Expression[]) => {\n if (args.length === 1 && args[0].isStar) {\n return new StarMapExpr({\n this: args[0],\n });\n }\n const keys: Expression[] = [\n ];\n const values: Expression[] = [\n ];\n for (let i = 0; i < args.length; i += 2) {\n keys.push(args[i]);\n if (args[i + 1]) values.push(args[i + 1]);\n }\n return new VarMapExpr({\n keys: new ArrayExpr({\n expressions: keys,\n }),\n values: new ArrayExpr({\n expressions: values,\n }),\n });\n },\n MONTH: (args: Expression[]) => new MonthExpr({\n this: new TsOrDsToDateExpr({\n this: seqGet(args, 0),\n }),\n }),\n REGEXP_EXTRACT: buildRegexpExtract(RegexpExtractExpr),\n REGEXP_EXTRACT_ALL: buildRegexpExtract(RegexpExtractAllExpr),\n SEQUENCE: (args: unknown[]) => GenerateSeriesExpr.fromArgList(args),\n SIZE: (args: unknown[]) => ArraySizeExpr.fromArgList(args),\n SPLIT: (args: unknown[]) => RegexpSplitExpr.fromArgList(args),\n STR_TO_MAP: (args: Expression[]) => new StrToMapExpr({\n this: seqGet(args, 0),\n pairDelim: seqGet(args, 1) || LiteralExpr.string(','),\n keyValueDelim: seqGet(args, 2) || LiteralExpr.string(':'),\n }),\n TO_DATE: buildToDate,\n TO_JSON: (args: unknown[]) => JsonFormatExpr.fromArgList(args),\n TRUNC: (args: unknown[]) => TimestampTruncExpr.fromArgList(args),\n UNBASE64: (args: unknown[]) => FromBase64Expr.fromArgList(args),\n UNIX_TIMESTAMP: (args: Expression[]) => buildFormattedTime(StrToUnixExpr, {\n dialect: 'hive',\n defaultValue: true,\n })(\n 0 < args.length\n ? args\n : [\n new CurrentTimestampExpr({}),\n ],\n ),\n YEAR: (args: Expression[]) => new YearExpr({\n this: new TsOrDsToDateExpr({\n this: seqGet(args, 0),\n }),\n }),\n };\n }\n\n @cache\n static get NO_PAREN_FUNCTION_PARSERS (): Partial<Record<string, (this: Parser) => Expression | undefined>> {\n return {\n ...Parser.NO_PAREN_FUNCTION_PARSERS,\n TRANSFORM: function (this: Parser) {\n return (this as HiveParser).parseTransform();\n },\n };\n }\n\n @cache\n static get PROPERTY_PARSERS (): Record<string, (this: Parser, ...args: unknown[]) => Expression | Expression[] | undefined> {\n return {\n ...Parser.PROPERTY_PARSERS,\n SERDEPROPERTIES: function (this: Parser) {\n return new SerdePropertiesExpr({\n expressions: this.parseWrappedCsv(() => this.parseProperty() as Expression | undefined),\n });\n },\n };\n }\n\n @cache\n static get ALTER_PARSERS (): Partial<Record<string, (this: Parser) => Expression | Expression[] | undefined>> {\n return {\n ...Parser.ALTER_PARSERS,\n CHANGE: function (this: Parser) {\n return (this as HiveParser).parseAlterTableChange();\n },\n };\n }\n\n parseTransform (): TransformExpr | QueryTransformExpr | undefined {\n if (!this.match(TokenType.L_PAREN, {\n advance: false,\n })) {\n this.retreat(this.index - 1);\n return undefined;\n }\n\n const args = this.parseWrappedCsv(() => (this as HiveParser).parseLambda());\n const rowFormatBefore = (this as HiveParser).parseRowFormat({\n matchRow: true,\n });\n\n let recordWriter: string | Expression | undefined = undefined;\n if (this.matchTextSeq('RECORDWRITER')) {\n recordWriter = (this as HiveParser).parseString();\n }\n\n if (!this.match(TokenType.USING)) {\n return TransformExpr.fromArgList(args);\n }\n\n const commandScript = (this as HiveParser).parseString();\n\n this.match(TokenType.ALIAS);\n const schema = this.parseSchema();\n\n const rowFormatAfter = (this as HiveParser).parseRowFormat({\n matchRow: true,\n });\n let recordReader: string | Expression | undefined = undefined;\n if (this.matchTextSeq('RECORDREADER')) {\n recordReader = (this as HiveParser).parseString();\n }\n\n return this.expression(QueryTransformExpr, {\n expressions: args,\n commandScript: commandScript,\n schema: schema,\n rowFormatBefore: rowFormatBefore,\n recordWriter: recordWriter,\n rowFormatAfter: rowFormatAfter,\n recordReader: recordReader,\n });\n }\n\n parseQuantileFunction (FuncClass: typeof QuantileExpr | typeof ApproxQuantileExpr): QuantileExpr | ApproxQuantileExpr {\n let firstArg: Expression | undefined;\n if (this.match(TokenType.DISTINCT)) {\n firstArg = this.expression(DistinctExpr, {\n expressions: [\n (this as HiveParser).parseLambda(),\n ],\n });\n } else {\n this.match(TokenType.ALL);\n firstArg = (this as HiveParser).parseLambda();\n }\n\n const args = [\n firstArg,\n ];\n if (this.match(TokenType.COMMA)) {\n args.push(...this.parseFunctionArgs());\n }\n\n return FuncClass.fromArgList(args);\n }\n\n parseTypes (options: {checkFunc?: boolean;\n schema?: boolean;\n allowIdentifiers?: boolean;} = {}): Expression | undefined {\n const {\n checkFunc = false, schema = false, allowIdentifiers = true,\n } = options;\n const thisNode = super.parseTypes({\n checkFunc,\n schema,\n allowIdentifiers,\n });\n\n if (thisNode && !schema) {\n return thisNode.transform((node: Expression, _opts: Record<string, unknown>): string | Expression | undefined => {\n if (node instanceof DataTypeExpr && node.isType([\n 'char',\n 'varchar',\n ])) {\n return node.replace(DataTypeExpr.build('text')) as Expression | undefined;\n }\n return node;\n }, {\n copy: false,\n });\n }\n\n return thisNode;\n }\n\n parseAlterTableChange (): Expression | undefined {\n this.match(TokenType.COLUMN);\n const thisNode = this.parseField({\n anyToken: true,\n });\n\n if ((this.constructor as typeof HiveParser).CHANGE_COLUMN_ALTER_SYNTAX && this.matchTextSeq('TYPE')) {\n return this.expression(AlterColumnExpr, {\n this: thisNode,\n dtype: this.parseTypes({\n schema: true,\n }),\n });\n }\n\n const columnNew = this.parseField({\n anyToken: true,\n });\n const dtype = this.parseTypes({\n schema: true,\n });\n\n const comment = this.match(TokenType.COMMENT) && (this as HiveParser).parseString();\n\n if (!thisNode || !columnNew || !dtype) {\n this.raiseError('Expected \\'CHANGE COLUMN\\' to be followed by \\'column_name\\' \\'column_name\\' \\'data_type\\'');\n }\n\n return this.expression(AlterColumnExpr, {\n this: thisNode,\n renameTo: columnNew,\n dtype: dtype,\n comment: comment,\n });\n }\n\n parsePartitionAndOrder (): [Expression[], Expression | undefined] {\n return [\n this.matchSet([\n TokenType.PARTITION_BY,\n TokenType.DISTRIBUTE_BY,\n ])\n ? this.parseCsv(() => this.parseAssignment())\n : [\n ],\n super.parseOrder({\n skipOrderToken: this.match(TokenType.SORT_BY),\n }) ?? undefined,\n ];\n }\n\n parseParameter (): ParameterExpr {\n this.match(TokenType.L_BRACE);\n const thisNode = this.parseIdentifier() || (this as HiveParser).parsePrimaryOrVar();\n const expression =\n this.match(TokenType.COLON) && (this.parseIdentifier() || (this as HiveParser).parsePrimaryOrVar());\n this.match(TokenType.R_BRACE);\n\n return this.expression(ParameterExpr, {\n this: thisNode,\n expression: expression,\n });\n }\n\n toPropEq (expression: Expression, index: number): Expression {\n if (expression.isStar) {\n return expression;\n }\n\n let key: ExpressionValue<IdentifierExpr | StarExpr>;\n if (expression instanceof ColumnExpr) {\n key = expression.args.this ?? toIdentifier(`col${index + 1}`);\n } else {\n key = toIdentifier(`col${index + 1}`);\n }\n\n return this.expression(PropertyEqExpr, {\n this: key,\n expression: expression,\n });\n }\n\n // port from _Dialect metaclass logic\n @cache\n static get TABLE_ALIAS_TOKENS (): Set<TokenType> {\n return new Set([\n ...Parser.TABLE_ALIAS_TOKENS,\n TokenType.STRAIGHT_JOIN,\n ]);\n }\n}\nclass HiveGenerator extends Generator {\n // port from _Dialect metaclass logic\n static SUPPORTS_DECODE_CASE = false;\n // port from _Dialect metaclass logic\n static readonly SELECT_KINDS: string[] = [\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 LIMIT_FETCH = 'LIMIT';\n static TABLESAMPLE_WITH_METHOD = false;\n static JOIN_HINTS = false;\n static TABLE_HINTS = false;\n static QUERY_HINTS = false;\n static INDEX_ON = 'ON TABLE';\n static EXTRACT_ALLOWS_QUOTES = false;\n static NVL2_SUPPORTED = false;\n static LAST_DAY_SUPPORTS_DATE_PART = false;\n static JSON_PATH_SINGLE_QUOTE_ESCAPE = true;\n static SUPPORTS_TO_NUMBER = false;\n static WITH_PROPERTIES_PREFIX = 'TBLPROPERTIES';\n static PARSE_JSON_NAME?: string = undefined;\n static PAD_FILL_PATTERN_IS_REQUIRED = true;\n static SUPPORTS_MEDIAN = false;\n static ARRAY_SIZE_NAME = 'SIZE';\n static ALTER_SET_TYPE = '';\n\n @cache\n static get EXPRESSIONS_WITHOUT_NESTED_CTES () {\n return new Set([\n InsertExpr,\n SelectExpr,\n SubqueryExpr,\n SetOperationExpr,\n ]);\n }\n\n @cache\n static get SUPPORTED_JSON_PATH_PARTS (): Set<typeof Expression> {\n return new Set([\n JsonPathKeyExpr,\n JsonPathRootExpr,\n JsonPathSubscriptExpr,\n JsonPathWildcardExpr,\n ]);\n }\n\n @cache\n static get TYPE_MAPPING () {\n return new Map([\n ...Generator.TYPE_MAPPING,\n [\n DataTypeExprKind.BIT,\n 'BOOLEAN',\n ],\n [\n DataTypeExprKind.BLOB,\n 'BINARY',\n ],\n [\n DataTypeExprKind.DATETIME,\n 'TIMESTAMP',\n ],\n [\n DataTypeExprKind.ROWVERSION,\n 'BINARY',\n ],\n [\n DataTypeExprKind.TEXT,\n 'STRING',\n ],\n [\n DataTypeExprKind.TIME,\n 'TIMESTAMP',\n ],\n [\n DataTypeExprKind.TIMESTAMPNTZ,\n 'TIMESTAMP',\n ],\n [\n DataTypeExprKind.TIMESTAMPTZ,\n 'TIMESTAMP',\n ],\n [\n DataTypeExprKind.UTINYINT,\n 'SMALLINT',\n ],\n [\n DataTypeExprKind.VARBINARY,\n 'BINARY',\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 ...Generator.TRANSFORMS,\n [\n PropertyExpr,\n propertySql,\n ],\n [\n AnyValueExpr,\n renameFunc('FIRST'),\n ],\n [\n ApproxDistinctExpr,\n approxCountDistinctSql,\n ],\n [\n ArgMaxExpr,\n argMaxOrMinNoCount('MAX_BY'),\n ],\n [\n ArgMinExpr,\n argMaxOrMinNoCount('MIN_BY'),\n ],\n [\n ArrayExpr,\n preprocess([\n inheritStructFieldNames,\n ]),\n ],\n [\n ArrayConcatExpr,\n renameFunc('CONCAT'),\n ],\n [\n ArrayToStringExpr,\n function (this: Generator, e: ArrayToStringExpr) {\n return this.func('CONCAT_WS', [\n e.args.expression,\n e.args.this,\n ]);\n },\n ],\n [\n ArraySortExpr,\n function (this: Generator, e: ArraySortExpr) {\n return arraySortSql.call(this as HiveGenerator, e);\n },\n ],\n [\n WithExpr,\n noRecursiveCteSql,\n ],\n [\n DateAddExpr,\n function (this: Generator, e: DateAddExpr) {\n return addDateSql.call(this as HiveGenerator, e);\n },\n ],\n [\n DateDiffExpr,\n function (this: Generator, e: DateDiffExpr) {\n return dateDiffSql.call(this as HiveGenerator, e);\n },\n ],\n [\n DateStrToDateExpr,\n dateStrToDateSql,\n ],\n [\n DateSubExpr,\n function (this: Generator, e: DateSubExpr) {\n return addDateSql.call(this as HiveGenerator, e);\n },\n ],\n [\n DateToDiExpr,\n function (this: Generator, e: DateToDiExpr) {\n return `CAST(DATE_FORMAT(${this.sql(e, 'this')}, ${Hive.DATEINT_FORMAT}) AS INT)`;\n },\n ],\n [\n DiToDateExpr,\n function (this: Generator, e: DiToDateExpr) {\n return `TO_DATE(CAST(${this.sql(e, 'this')} AS STRING), ${Hive.DATEINT_FORMAT})`;\n },\n ],\n [\n StorageHandlerPropertyExpr,\n function (this: Generator, e: StorageHandlerPropertyExpr) {\n return `STORED BY ${this.sql(e, 'this')}`;\n },\n ],\n [\n FromBase64Expr,\n renameFunc('UNBASE64'),\n ],\n [\n GenerateSeriesExpr,\n sequenceSql,\n ],\n [\n GenerateDateArrayExpr,\n sequenceSql,\n ],\n [\n IfExpr,\n ifSql(),\n ],\n [\n ILikeExpr,\n noIlikeSql,\n ],\n [\n IntDivExpr,\n function (this: Generator, e: IntDivExpr) {\n return this.binary(e, 'DIV');\n },\n ],\n [\n IsNanExpr,\n renameFunc('ISNAN'),\n ],\n [\n JsonExtractExpr,\n function (this: Generator, e: JsonExtractExpr) {\n return this.func('GET_JSON_OBJECT', [\n e.args.this,\n e.args.expression,\n ]);\n },\n ],\n [\n JsonExtractScalarExpr,\n function (this: Generator, e: JsonExtractScalarExpr) {\n return this.func('GET_JSON_OBJECT', [\n e.args.this,\n e.args.expression,\n ]);\n },\n ],\n [\n JsonFormatExpr,\n function (this: Generator, e: JsonFormatExpr) {\n return jsonFormatSql.call(this as HiveGenerator, e);\n },\n ],\n [\n LeftExpr,\n leftToSubstringSql,\n ],\n [\n MapExpr,\n varMapSql,\n ],\n [\n MaxExpr,\n maxOrGreatest,\n ],\n [\n Md5DigestExpr,\n function (this: Generator, e: Md5DigestExpr) {\n return this.func('UNHEX', [\n this.func('MD5', [\n e.args.this,\n ]),\n ]);\n },\n ],\n [\n MinExpr,\n minOrLeast,\n ],\n [\n MonthsBetweenExpr,\n function (this: Generator, e: MonthsBetweenExpr) {\n return this.func('MONTHS_BETWEEN', [\n e.args.this,\n e.args.expression,\n ]);\n },\n ],\n [\n NotNullColumnConstraintExpr,\n function (this: Generator, e: NotNullColumnConstraintExpr) {\n return e.args.allowNull ? '' : 'NOT NULL';\n },\n ],\n [\n VarMapExpr,\n varMapSql,\n ],\n [\n CreateExpr,\n preprocess([\n removeUniqueConstraints,\n ctasWithTmpTablesToCreateTmpView,\n moveSchemaColumnsToPartitionedBy,\n ]),\n ],\n [\n QuantileExpr,\n renameFunc('PERCENTILE'),\n ],\n [\n ApproxQuantileExpr,\n renameFunc('PERCENTILE_APPROX'),\n ],\n [\n RegexpExtractExpr,\n regexpExtractSql,\n ],\n [\n RegexpExtractAllExpr,\n regexpExtractSql,\n ],\n [\n RegexpReplaceExpr,\n regexpReplaceSql,\n ],\n [\n RegexpLikeExpr,\n function (this: Generator, e: RegexpLikeExpr) {\n return this.binary(e, 'RLIKE');\n },\n ],\n [\n RegexpSplitExpr,\n renameFunc('SPLIT'),\n ],\n [\n RightExpr,\n rightToSubstringSql,\n ],\n [\n SchemaCommentPropertyExpr,\n function (this: Generator, e: SchemaCommentPropertyExpr) {\n return this.nakedProperty(e);\n },\n ],\n [\n ArrayUniqueAggExpr,\n renameFunc('COLLECT_SET'),\n ],\n [\n SplitExpr,\n function (this: Generator, e: SplitExpr) {\n return this.func('SPLIT', [\n e.args.this,\n this.func('CONCAT', [\n LiteralExpr.string('\\\\Q'),\n e.args.expression,\n LiteralExpr.string('\\\\E'),\n ]),\n ]);\n },\n ],\n [\n SelectExpr,\n preprocess([\n eliminateQualify,\n eliminateDistinctOn,\n (e: Expression) => unnestToExplode(e, {\n unnestUsingArraysZip: false,\n }),\n anyToExists,\n ]),\n ],\n [\n StrPositionExpr,\n function (this: Generator, e: StrPositionExpr) {\n return strPositionSql.call(this, e, {\n funcName: 'LOCATE',\n supportsPosition: true,\n });\n },\n ],\n [\n StrToDateExpr,\n function (this: Generator, e: StrToDateExpr) {\n return strToDateSql.call(this as HiveGenerator, e);\n },\n ],\n [\n StrToTimeExpr,\n function (this: Generator, e: StrToTimeExpr) {\n return strToTimeSql.call(this as HiveGenerator, e);\n },\n ],\n [\n StrToUnixExpr,\n function (this: Generator, e: StrToUnixExpr) {\n return strToUnixSql.call(this as HiveGenerator, e);\n },\n ],\n [\n StructExtractExpr,\n structExtractSql,\n ],\n [\n StarMapExpr,\n renameFunc('MAP'),\n ],\n [\n TableExpr,\n preprocess([\n unnestGenerateSeries,\n ]),\n ],\n [\n TimeStrToDateExpr,\n renameFunc('TO_DATE'),\n ],\n [\n TimeStrToTimeExpr,\n timeStrToTimeSql,\n ],\n [\n TimeStrToUnixExpr,\n renameFunc('UNIX_TIMESTAMP'),\n ],\n [\n TimestampTruncExpr,\n function (this: Generator, e: TimestampTruncExpr) {\n return this.func('TRUNC', [\n e.args.this,\n unitToStr(e),\n ]);\n },\n ],\n [\n TimeToUnixExpr,\n renameFunc('UNIX_TIMESTAMP'),\n ],\n [\n ToBase64Expr,\n renameFunc('BASE64'),\n ],\n [\n TsOrDiToDiExpr,\n function (this: Generator, e: TsOrDiToDiExpr) {\n return `CAST(SUBSTR(REPLACE(CAST(${this.sql(e, 'this')} AS STRING), '-', ''), 1, 8) AS INT)`;\n },\n ],\n [\n TsOrDsAddExpr,\n function (this: Generator, e: TsOrDsAddExpr) {\n return addDateSql.call(this as HiveGenerator, e);\n },\n ],\n [\n TsOrDsDiffExpr,\n function (this: Generator, e: TsOrDsDiffExpr) {\n return dateDiffSql.call(this as HiveGenerator, e);\n },\n ],\n [\n TsOrDsToDateExpr,\n function (this: Generator, e: TsOrDsToDateExpr) {\n return toDateSql.call(this as HiveGenerator, e);\n },\n ],\n [\n TryCastExpr,\n noTrycastSql,\n ],\n [\n TrimExpr,\n trimSql,\n ],\n [\n UnicodeExpr,\n renameFunc('ASCII'),\n ],\n [\n UnixToStrExpr,\n function (this: Generator, e: UnixToStrExpr) {\n return this.func('FROM_UNIXTIME', [\n e.args.this,\n timeFormat('hive').call(this, e),\n ]);\n },\n ],\n [\n UnixToTimeExpr,\n function (this: Generator, e: UnixToTimeExpr) {\n return unixToTimeSql.call(this as HiveGenerator, e);\n },\n ],\n [\n UnixToTimeStrExpr,\n renameFunc('FROM_UNIXTIME'),\n ],\n [\n PartitionedByPropertyExpr,\n function (this: Generator, e: PartitionedByPropertyExpr) {\n return `PARTITIONED BY ${this.sql(e, 'this')}`;\n },\n ],\n [\n NumberToStrExpr,\n renameFunc('FORMAT_NUMBER'),\n ],\n [\n NationalExpr,\n function (this: Generator, e: NationalExpr) {\n return this.nationalSql(e, {\n prefix: '',\n });\n },\n ],\n [\n ClusteredColumnConstraintExpr,\n function (this: Generator, e: ClusteredColumnConstraintExpr) {\n return `(${this.expressions(e, {\n key: 'this',\n indent: false,\n })})`;\n },\n ],\n [\n NonClusteredColumnConstraintExpr,\n function (this: Generator, e: NonClusteredColumnConstraintExpr) {\n return `(${this.expressions(e, {\n key: 'this',\n indent: false,\n })})`;\n },\n ],\n [\n NotForReplicationColumnConstraintExpr,\n () => '',\n ],\n [\n OnPropertyExpr,\n () => '',\n ],\n [\n PartitionedByBucketExpr,\n function (this: Generator, e: PartitionedByBucketExpr) {\n return this.func('BUCKET', [\n e.args.expression,\n e.args.this,\n ]);\n },\n ],\n [\n PartitionByTruncateExpr,\n function (this: Generator, e: PartitionByTruncateExpr) {\n return this.func('TRUNCATE', [\n e.args.expression,\n e.args.this,\n ]);\n },\n ],\n [\n PrimaryKeyColumnConstraintExpr,\n () => 'PRIMARY KEY',\n ],\n [\n WeekOfYearExpr,\n renameFunc('WEEKOFYEAR'),\n ],\n [\n DayOfMonthExpr,\n renameFunc('DAYOFMONTH'),\n ],\n [\n DayOfWeekExpr,\n renameFunc('DAYOFWEEK'),\n ],\n [\n LevenshteinExpr,\n function (this: Generator, e: Expression) {\n unsupportedArgs.call(this, e, 'insCost', 'delCost', 'subCost', 'maxDist');\n return renameFunc('LEVENSHTEIN').call(this, e);\n },\n ],\n ]);\n return transforms;\n }\n\n @cache\n static get PROPERTIES_LOCATION (): Map<typeof Expression, PropertiesLocation> {\n return new Map([\n ...Generator.PROPERTIES_LOCATION,\n [\n FileFormatPropertyExpr,\n PropertiesLocation.POST_SCHEMA,\n ],\n [\n PartitionedByPropertyExpr,\n PropertiesLocation.POST_SCHEMA,\n ],\n [\n VolatilePropertyExpr,\n PropertiesLocation.UNSUPPORTED,\n ],\n [\n WithDataPropertyExpr,\n PropertiesLocation.UNSUPPORTED,\n ],\n ] as [typeof Expression, PropertiesLocation][]);\n }\n\n @cache\n static get TS_OR_DS_EXPRESSIONS (): Set<typeof Expression> {\n return new Set([\n DateDiffExpr,\n DayExpr,\n MonthExpr,\n YearExpr,\n ]);\n }\n\n unnestSql (expression: UnnestExpr): string {\n return renameFunc('EXPLODE').call(this, expression);\n }\n\n jsonPathKeySql (expression: JsonPathKeyExpr): string {\n if (expression.args.this instanceof JsonPathWildcardExpr) {\n this.unsupported('Unsupported wildcard in JSONPathKey expression');\n return '';\n }\n\n return super.jsonPathKeySql(expression);\n }\n\n parameterSql (expression: ParameterExpr): string {\n let thisSql = this.sql(expression, 'this');\n const expressionSql = this.sql(expression, 'expression');\n\n const parent = expression.parent;\n thisSql = expressionSql ? `${thisSql}:${expressionSql}` : thisSql;\n\n if (parent instanceof EqExpr && parent.parent instanceof SetItemExpr) {\n return thisSql;\n }\n\n return `\\${${thisSql}}`;\n }\n\n schemaSql (expression: SchemaExpr): string {\n for (const ordered of expression.findAll(OrderedExpr)) {\n if (ordered.args.desc === false) {\n ordered.setArgKey('desc', undefined);\n }\n }\n\n return super.schemaSql(expression);\n }\n\n constraintSql (expression: ConstraintExpr): string {\n for (const prop of Array.from(expression.findAll(PropertiesExpr))) {\n prop.pop();\n }\n\n const thisSql = this.sql(expression, 'this');\n const expressions = this.expressions(expression, {\n sep: ' ',\n flat: true,\n });\n return `CONSTRAINT ${thisSql} ${expressions}`;\n }\n\n rowFormatSerdePropertySql (expression: RowFormatSerdePropertyExpr): string {\n let serdeProps = this.sql(expression, 'serdeProperties');\n serdeProps = serdeProps ? ` ${serdeProps}` : '';\n return `ROW FORMAT SERDE ${this.sql(expression, 'this')}${serdeProps}`;\n }\n\n arrayAggSql (expression: ArrayAggExpr): string {\n return this.func(\n 'COLLECT_LIST',\n [\n expression.args.this instanceof OrderExpr ? expression.args.this.args.this : expression.args.this,\n ],\n );\n }\n\n truncSql (expression: TruncExpr): string {\n if (expression.args.decimals) {\n this.unsupported('Unsupported arg \\'decimals\\' for TRUNC');\n }\n return this.sql(new CastExpr({\n this: expression.args.this,\n to: DataTypeExpr.build('bigint'),\n }));\n }\n\n dataTypeSql (expression: DataTypeExpr): string {\n if (\n expression.isType(Generator.PARAMETERIZABLE_TEXT_TYPES)\n && (!expression.args.expressions || (expression.args.expressions[0] as IdentifierExpr).name === 'MAX')\n ) {\n expression = DataTypeExpr.build('text') ?? expression;\n } else if (expression.isType(DataTypeExprKind.TEXT) && expression.args.expressions) {\n expression.setArgKey('this', DataTypeExprKind.VARCHAR);\n } else if (expression.isType(DataTypeExpr.TEMPORAL_TYPES)) {\n expression = DataTypeExpr.build(expression.args.this) ?? expression;\n } else if (expression.isType('float')) {\n const sizeExpression = expression.find(DataTypeParamExpr);\n if (sizeExpression instanceof DataTypeParamExpr) {\n const size = parseInt(sizeExpression.args.this?.args.this?.toString() ?? '0');\n expression = (size <= 32 ? DataTypeExpr.build('float') : DataTypeExpr.build('double')) ?? expression;\n }\n }\n\n return super.dataTypeSql(expression);\n }\n\n versionSql (expression: VersionExpr): string {\n const sql = super.versionSql(expression);\n return sql.replace('FOR ', '');\n }\n\n structSql (expression: StructExpr): string {\n const values: (string | Expression)[] = [\n ];\n\n expression.args.expressions?.forEach((e) => {\n if (e instanceof PropertyEqExpr) {\n this.unsupported('Hive does not support named structs.');\n const exprVal = e.args.expression;\n values.push((exprVal instanceof Expression || typeof exprVal === 'string') ? exprVal : '');\n } else {\n values.push(e);\n }\n });\n\n return this.func('STRUCT', values);\n }\n\n columnDefSql (expression: ColumnDefExpr, options: {sep?: string} = {}): string {\n const {\n sep = ' ',\n } = options;\n return super.columnDefSql(expression, {\n sep:\n expression.parent instanceof DataTypeExpr && expression.parent.isType('struct')\n ? ': '\n : sep,\n });\n }\n\n alterColumnSql (expression: AlterColumnExpr): string {\n const thisSql = this.sql(expression, 'this');\n const newName = this.sql(expression, 'renameTo') || thisSql;\n const dtype = this.sql(expression, 'dtype');\n const commentSql = this.sql(expression, 'comment');\n const comment = commentSql ? ` COMMENT ${commentSql}` : '';\n\n const defaultVal = this.sql(expression, 'default');\n const visible = expression.args.visible;\n const allowNoNull = expression.args.allowNull;\n const drop = expression.args.drop;\n\n if (defaultVal || drop || visible || allowNoNull) {\n this.unsupported('Unsupported CHANGE COLUMN syntax');\n }\n\n if (!dtype) {\n this.unsupported('CHANGE COLUMN without a type is not supported');\n }\n\n return `CHANGE COLUMN ${thisSql} ${newName} ${dtype}${comment}`;\n }\n\n renameColumnSql (_expr: Expression): string {\n this.unsupported('Cannot rename columns without data type defined in Hive');\n return '';\n }\n\n alterSetSql (expression: AlterSetExpr): string {\n let exprs = this.expressions(expression, {\n flat: true,\n });\n exprs = exprs ? ` ${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 ? ` FILEFORMAT ${fileFormat}` : '';\n\n let serde = this.sql(expression, 'serde');\n serde = serde ? ` SERDE ${serde}` : '';\n\n let tags = this.expressions(expression, {\n key: 'tag',\n flat: true,\n sep: '',\n });\n tags = tags ? ` TAGS ${tags}` : '';\n\n return `SET${serde}${exprs}${location}${fileFormat}${tags}`;\n }\n\n serdePropertiesSql (expression: SerdePropertiesExpr): string {\n const prefix = expression.args.with ? 'WITH ' : '';\n const exprs = this.expressions(expression, {\n flat: true,\n });\n\n return `${prefix}SERDEPROPERTIES (${exprs})`;\n }\n\n existsSql (expression: ExistsExpr): string {\n if (expression.args.expression) {\n return this.functionFallbackSql(expression);\n }\n\n return super.existsSql(expression);\n }\n\n timeToStrSql (expression: TimeToStrExpr): string {\n let thisNode = expression.args.this;\n if (thisNode instanceof TimeStrToTimeExpr) {\n thisNode = thisNode.args.this;\n }\n\n return this.func('DATE_FORMAT', [\n thisNode,\n this.formatTime(expression),\n ]);\n }\n\n fileFormatPropertySql (expression: FileFormatPropertyExpr): string {\n let thisSql: string;\n if (expression.args.this instanceof InputOutputFormatExpr) {\n thisSql = this.sql(expression, 'this');\n } else {\n thisSql = expression.name.toUpperCase();\n }\n\n return `STORED AS ${thisSql}`;\n }\n}\n\nexport class Hive extends Dialect {\n static DIALECT_NAME = Dialects.HIVE;\n static ALIAS_POST_TABLESAMPLE = true;\n static IDENTIFIERS_CAN_START_WITH_DIGIT = true;\n static SUPPORTS_USER_DEFINED_TYPES = false;\n\n static get EXPRESSION_METADATA () {\n return new Map(HiveTyping.EXPRESSION_METADATA);\n }\n\n @cache\n static get COERCES_TO (): Map<DataTypeExprKind, Set<DataTypeExprKind>> {\n const coercesTo = new Map(TypeAnnotator.COERCES_TO);\n for (const targetType of [\n ...DataTypeExpr.NUMERIC_TYPES,\n ...DataTypeExpr.TEMPORAL_TYPES,\n DataTypeExprKind.INTERVAL,\n ]) {\n const existing = coercesTo.get(targetType as DataTypeExprKind) ?? new Set<DataTypeExprKind>();\n coercesTo.set(targetType as DataTypeExprKind, new Set([\n ...existing,\n ...DataTypeExpr.TEXT_TYPES,\n ]));\n }\n return coercesTo;\n }\n\n static SAFE_DIVISION = true;\n static ARRAY_AGG_INCLUDES_NULLS = undefined;\n static REGEXP_EXTRACT_DEFAULT_GROUP = 1;\n static ALTER_TABLE_SUPPORTS_CASCADE = true;\n\n @cache\n static get NORMALIZATION_STRATEGY () {\n return NormalizationStrategy.CASE_INSENSITIVE;\n }\n\n static INITCAP_DEFAULT_DELIMITER_CHARS = ' \\t\\n\\r\\f\\u000b\\u001c\\u001d\\u001e\\u001f';\n\n @cache\n static get TIME_MAPPING () {\n return {\n y: '%Y',\n Y: '%Y',\n YYYY: '%Y',\n yyyy: '%Y',\n YY: '%y',\n yy: '%y',\n MMMM: '%B',\n MMM: '%b',\n MM: '%m',\n M: '%-m',\n dd: '%d',\n d: '%-d',\n HH: '%H',\n H: '%-H',\n hh: '%I',\n h: '%-I',\n mm: '%M',\n m: '%-M',\n ss: '%S',\n s: '%-S',\n SSSSSS: '%f',\n a: '%p',\n DD: '%j',\n D: '%-j',\n E: '%a',\n EE: '%a',\n EEE: '%a',\n EEEE: '%A',\n z: '%Z',\n Z: '%z',\n };\n }\n\n static DATE_FORMAT = '\\'yyyy-MM-dd\\'';\n static DATEINT_FORMAT = '\\'yyyyMMdd\\'';\n static TIME_FORMAT = '\\'yyyy-MM-dd HH:mm:ss\\'';\n\n static Tokenizer = HiveTokenizer;\n static Parser = HiveParser;\n static Generator = HiveGenerator;\n}\n\nDialect.register(Dialects.HIVE, Hive);\n"]}
@@ -0,0 +1,2 @@
1
+ import{a as nr,c as p}from"./chunk-Z5V6VOIN.js";import{$c as L,Ca as _,Cg as V,Dk as Ft,Eo as H,Fh as F,Gh as Mt,Hh as d,Hk as z,Ie as ht,Ih as U,Ja as Tt,Kk as dt,Kp as rr,Lg as It,Lh as w,Lj as Lt,Lk as Ut,Lm as Kt,Mj as G,Oh as gt,Pf as Ot,Pl as g,Po as N,Sn as vt,So as bt,To as Xt,Vj as Q,Wa as pt,Wd as Rt,Wo as Vt,Xo as $t,Yb as J,Zl as D,Zn as Bt,_o as Zt,a as R,ac as I,ad as ut,b as m,bi as Z,c as h,ca as T,cd as At,cf as St,d as E,dd as ft,dp as Qt,ep as zt,fp as jt,gb as ct,gp as kt,hd as xt,hi as Dt,hj as M,hq as er,il as wt,iq as rt,jo as Wt,kc as v,kd as lt,lc as B,lp as tt,mo as k,n as ot,nq as et,op as tr,p as K,pb as y,pg as X,pl as Gt,pp as o,q as Et,qg as Pt,qn as Yt,r as a,rn as Jt,uj as Ct,uq as nt,ve as W,wa as Y,wj as yt,wl as Ht,xe as b,xl as j,yg as _t,yh as $,yl as qt,za as at,ze as mt,zg as Nt}from"./chunk-KCNOE4DZ.js";function sr(e,n,t){let r=[];for(let x of n){let l=e.args[x];if(l){let Or=Array.isArray(l)?l:[l];r.push(...Et(Or,_))}}let s,A=!1;for(let x of r)if(x.isType("unknown"))A=!0;else if(x.isType(t)){A=!1,s=t;break}else{let l=x.type;s=ot(l,I)?l:void 0}return this.setType(e,A?"unknown":s),e}var ir,st;ir=[a];var S=class{static get EXPRESSION_METADATA(){let n=new Map(nr.EXPRESSION_METADATA),t=(r,s)=>{for(let A of r)n.set(A,s)};return t([St,Ft],{returns:"double"}),t([M,G],{returns:"varchar"}),n.set(It,{annotator:(r,s)=>sr.call(r,s,["expressions"],"text")}),n.set(Ot,{annotator:(r,s)=>sr.call(r,s,["this","fillPattern"],"text")}),n.set(Gt,{annotator:(r,s)=>r.annotateByArgs(s,["this"])}),n}};st=R(null),E(st,10,"EXPRESSION_METADATA",ir,S),m(st,S),h(st,3,S);function _r(e){let n=e.args.keys,t=e.args.values;return!n||!t?this.func("MAP",[]):this.func("MAP_FROM_ARRAYS",[n,t])}function f(e){return n=>new V({this:T(n,0),to:I.build(e)})}function Nr(e){let n=this.formatTime(e);return n===p.DATE_FORMAT?this.func("TO_DATE",[e.args.this]):this.func("TO_DATE",[e.args.this,n])}function Ir(e){let n=e.args.scale,t=e.args.this;if(n===void 0)return this.sql(new V({this:this.func("from_unixtime",[t]),to:I.build("timestamp")}));let r=n.toValue();if(r===D.SECONDS.toValue())return this.func("TIMESTAMP_SECONDS",[t]);if(r===D.MILLIS.toValue())return this.func("TIMESTAMP_MILLIS",[t]);if(r===D.MICROS.toValue())return this.func("TIMESTAMP_MICROS",[t]);let s=new mt({this:t,expression:this.func("POW",[L.number(10),n])});return this.func("TIMESTAMP_SECONDS",[s])}function Mr(e){if(e instanceof y&&e.args.this?.args.pivots?.length){let n=e.args.this.args.pivots[0];if(n.args.alias){let t=K(n.args.alias,_)?.pop();return new y({this:e.args.this.replace(Wt("*").from(e.args.this.copy(),{copy:!1}).subquery(t,{copy:!1}))})}}return e}function gr(e){return e instanceof J&&e.setArgKey("fields",e.args.fields?.map(n=>Qt(n))),e}function Dr(e){let n=new lt({this:L.string("parquet")}),t=e.getArgKey("properties");return t instanceof _&&t.append("expressions",n),e}var or,Er,ar,q,P=class extends(ar=p.Tokenizer,Er=[a],or=[a],ar){static get HEX_STRINGS(){return[["X'","'"],["x'","'"]]}static get ORIGINAL_KEYWORDS(){return{...p.Tokenizer.KEYWORDS,TIMESTAMP:"timestamptz"}}};q=R(ar),E(q,10,"HEX_STRINGS",Er,P),E(q,10,"ORIGINAL_KEYWORDS",or,P),m(q,P),h(q,3,P);var Tr,pr,cr,ur,Ar,fr,O,c=class extends(fr=p.Parser,Ar=[a],ur=[a],cr=[a],pr=[a],Tr=[a],fr){static get ID_VAR_TOKENS(){return new Set([...at.ID_VAR_TOKENS,"sessionUser","currentCatalog","straightJoin"])}static get NO_PAREN_FUNCTIONS(){let t={...p.Parser.NO_PAREN_FUNCTIONS};return delete t.localtime,delete t.localtimestamp,t}static get FUNCTIONS(){return{...p.Parser.FUNCTIONS,AGGREGATE:t=>z.fromArgList(t),BOOLEAN:f("boolean"),DATE:f("date"),DATE_TRUNC:t=>new Z({this:T(t,1),unit:H(T(t,0))}),DAYOFMONTH:t=>new d({this:new g({this:T(t,0)})}),DAYOFWEEK:t=>new F({this:new g({this:T(t,0)})}),DAYOFYEAR:t=>new U({this:new g({this:T(t,0)})}),DOUBLE:f("double"),FLOAT:f("float"),FORMAT_STRING:t=>M.fromArgList(t),FROM_UTC_TIMESTAMP:(t,{dialect:r})=>new v({this:k(T(t,0)||H(""),"timestamp",{dialect:r}),zone:T(t,1)}),LTRIM:t=>Y(t,{reverseArgs:!0}),INT:f("int"),MAP_FROM_ARRAYS:t=>Q.fromArgList(t),RLIKE:t=>Ut.fromArgList(t),RTRIM:t=>Y(t,{isLeft:!1,reverseArgs:!0}),SHIFTLEFT:rt(W),SHIFTRIGHT:rt(b),STRING:f("string"),SLICE:t=>X.fromArgList(t),TIMESTAMP:f("timestamp"),TO_TIMESTAMP:t=>t.length===1?f("timestamp")(t):rr(j,{dialect:"spark"})(t),TO_UNIX_TIMESTAMP:t=>qt.fromArgList(t),TO_UTC_TIMESTAMP:(t,{dialect:r})=>new B({this:k(T(t,0)||H(""),"timestamp",{dialect:r}),zone:T(t,1)}),TRUNC:t=>new $({unit:T(t,1),this:T(t,0)}),WEEKOFYEAR:t=>new w({this:new g({this:T(t,0)})})}}static get FUNCTION_PARSERS(){return{...p.Parser.FUNCTION_PARSERS,APPROX_PERCENTILE:function(){return this.parseQuantileFunction(Bt)},BROADCAST:function(){return this.parseJoinHint("BROADCAST")},BROADCASTJOIN:function(){return this.parseJoinHint("BROADCASTJOIN")},MAPJOIN:function(){return this.parseJoinHint("MAPJOIN")},MERGE:function(){return this.parseJoinHint("MERGE")},SHUFFLEMERGE:function(){return this.parseJoinHint("SHUFFLEMERGE")},MERGEJOIN:function(){return this.parseJoinHint("MERGEJOIN")},SHUFFLE_HASH:function(){return this.parseJoinHint("SHUFFLE_HASH")},SHUFFLE_REPLICATE_NL:function(){return this.parseJoinHint("SHUFFLE_REPLICATE_NL")}}}parseDropColumn(){return(this.matchTextSeq(["DROP","COLUMNS"])||void 0)&&this.expression(ct,{this:this.parseSchema(),kind:"COLUMNS"})}pivotColumnNames(t){return t.length===1?[]:er(t,{dialect:"spark"})}static get TABLE_ALIAS_TOKENS(){return new Set([...p.Parser.TABLE_ALIAS_TOKENS,"straightJoin"])}};O=R(fr),E(O,10,"ID_VAR_TOKENS",Ar,c),E(O,10,"NO_PAREN_FUNCTIONS",ur,c),E(O,10,"FUNCTIONS",cr,c),E(O,10,"FUNCTION_PARSERS",pr,c),E(O,10,"TABLE_ALIAS_TOKENS",Tr,c),m(O,c),h(O,3,c),c.TRIM_PATTERN_FIRST=!0,c.CHANGE_COLUMN_ALTER_SYNTAX=!0;var xr,lr,Rr,mr,C,i=class extends(mr=p.Generator,Rr=[a],lr=[a],xr=[a],mr){static get PROPERTIES_LOCATION(){return new Map([...p.Generator.PROPERTIES_LOCATION,[xt,"unsupported"],[ut,"unsupported"],[At,"unsupported"],[ft,"unsupported"]])}static get TS_OR_DS_EXPRESSIONS(){return new Set([...p.Generator.TS_OR_DS_EXPRESSIONS,d,F,U,w])}static get ORIGINAL_TRANSFORMS(){let t=new Map([...p.Generator.TRANSFORMS,[Kt,o("APPROX_COUNT_DISTINCT")],[Nt,function(r){return`AGGREGATE(${this.sql(r,"this")}, 0, (acc, x) -> acc + x, acc -> acc)`}],[Pt,o("ARRAY_JOIN")],[X,o("SLICE")],[v,function(r){return this.func("FROM_UTC_TIMESTAMP",[r.args.this,r.args.zone])}],[W,o("SHIFTLEFT")],[b,o("SHIFTRIGHT")],[Tt,N([zt,r=>jt(r,Dr),kt])],[Dt,o("MAKE_DATE")],[$,function(r){return this.func("TRUNC",[r.args.this,nt(r)])}],[d,o("DAYOFMONTH")],[F,o("DAYOFWEEK")],[Mt,function(r){return"(( "+this.func("DAYOFWEEK",[r.args.this])+" % 7) + 1)"}],[U,o("DAYOFYEAR")],[M,o("FORMAT_STRING")],[y,N([Mr])],[B,function(r){return this.func("TO_UTC_TIMESTAMP",[r.args.this,r.args.zone])}],[Jt,o("BOOL_AND")],[Yt,o("BOOL_OR")],[Q,_r],[J,N([gr])],[z,o("AGGREGATE")],[dt,function(r){return this.func("REGEXP_REPLACE",[r.args.this,r.args.expression,r.args.replacement,r.args.position])}],[Rt,N([Xt,bt,Vt,$t])],[wt,function(r){return this.func("SHA2",[r.args.this,r.args.length||L.number(256)])}],[Ht,Nr],[j,function(r){return this.func("TO_TIMESTAMP",[r.args.this,this.formatTime(r)])}],[Z,function(r){return this.func("DATE_TRUNC",[nt(r),r.args.this])}],[D,Ir],[vt,o("VAR_POP")],[w,o("WEEKOFYEAR")],[pt,N([Zt])]]);return[_t,ht,Lt,gt,G].forEach(r=>t.delete(r)),t}structSql(t){return tt.prototype.structSql.call(this,t)}castSql(t,r={}){let s=t.args.this,A=(s instanceof Ct||s instanceof yt)&&!s.getArgKey("variantExtract");if(K(t.args.to,_)?.getArgKey("nested")&&(et(s)||A)){let x=`'${this.sql(t,"to")}'`;return this.func("FROM_JSON",[A?s:s.args.this,x])}return et(t)?this.func("TO_JSON",[s]):super.castSql(t,r)}fileFormatPropertySql(t){return t.args.hiveFormat?super.fileFormatPropertySql(t):`USING ${t.name.toUpperCase()}`}alterColumnSql(t){let r=this.sql(t,"this"),s=this.sql(t,"renameTo")||r,A=this.sql(t,"comment");return s===r?A?`ALTER COLUMN ${r} COMMENT ${A}`:tt.prototype.alterColumnSql.call(this,t):`RENAME COLUMN ${r} TO ${s}`}renameColumnSql(t){return super.renameColumnSql(t)}};C=R(mr),E(C,10,"PROPERTIES_LOCATION",Rr,i),E(C,10,"TS_OR_DS_EXPRESSIONS",lr,i),E(C,10,"ORIGINAL_TRANSFORMS",xr,i),m(C,i),h(C,3,i),i.SUPPORTS_DECODE_CASE=!1,i.TRY_SUPPORTED=!1,i.SUPPORTS_UESCAPE=!1,i.QUERY_HINTS=!0,i.NVL2_SUPPORTED=!0,i.CAN_IMPLEMENT_ARRAY_ANY=!0,i.ALTER_SET_TYPE="TYPE",i.PARSE_JSON_NAME=void 0,i.WRAP_DERIVED_VALUES=!1,i.CREATE_FUNCTION_RETURN_AS=!1;var hr,Sr,it,u=class extends(Sr=p,hr=[a],Sr){static get EXPRESSION_METADATA(){return new Map(S.EXPRESSION_METADATA)}};it=R(Sr),E(it,10,"EXPRESSION_METADATA",hr,u),m(it,u),h(it,3,u),u.DIALECT_NAME="spark2",u.ALTER_TABLE_SUPPORTS_CASCADE=!1,u.INITCAP_DEFAULT_DELIMITER_CHARS=" ",u.Tokenizer=P,u.Parser=c,u.Generator=i;tr.register("spark2",u);export{S as a,f as b,Dr as c,u as d};
2
+ //# sourceMappingURL=chunk-YLOQRUXC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/typing/spark2.ts","../src/dialects/spark2.ts"],"sourcesContent":["import {\n Expression,\n DataTypeExpr,\n Atan2Expr,\n RandnExpr,\n FormatExpr,\n RightExpr,\n ConcatExpr,\n PadExpr,\n SubstringExpr,\n} from '../expressions/expressions';\nimport {\n DataTypeExprKind,\n} from '../expressions/types';\nimport {\n cache,\n isInstanceOf, filterInstanceOf,\n} from '../port_internals';\nimport type {\n TypeAnnotator,\n} from '../optimizer';\nimport {\n HiveTyping,\n} from './hive';\nimport type {\n ExpressionMetadata,\n} from './dialect';\n\n/**\n * Infers the type of the expression according to the following rules:\n * - If all args are of the same type OR any arg is of targetType, the expr is inferred as such\n * - If any arg is of UNKNOWN type and none of targetType, the expr is inferred as UNKNOWN\n */\nfunction annotateBySimilarArgs (\n this: TypeAnnotator,\n expression: Expression,\n args: Iterable<string>,\n targetType: DataTypeExprKind | DataTypeExpr,\n): Expression {\n const expressions: Expression[] = [\n ];\n\n for (const arg of args) {\n const argExpr = (expression.args as Record<string, unknown>)[arg];\n if (argExpr) {\n const list = Array.isArray(argExpr)\n ? argExpr\n : [\n argExpr,\n ];\n expressions.push(...filterInstanceOf(list, Expression));\n }\n }\n\n let lastDatatype: DataTypeExprKind | DataTypeExpr | undefined;\n let hasUnknown = false;\n\n for (const expr of expressions) {\n if (expr.isType(DataTypeExprKind.UNKNOWN)) {\n hasUnknown = true;\n } else if (expr.isType(targetType)) {\n hasUnknown = false;\n lastDatatype = targetType;\n break;\n } else {\n const exprType = expr.type;\n lastDatatype = isInstanceOf(exprType, DataTypeExpr) ? exprType : undefined;\n }\n }\n\n this.setType(\n expression,\n hasUnknown ? DataTypeExprKind.UNKNOWN : lastDatatype,\n );\n\n return expression;\n}\n\nexport class Spark2Typing {\n @cache\n static get EXPRESSION_METADATA (): ExpressionMetadata {\n // Clone the Hive base metadata to apply Spark-specific overrides\n const map: ExpressionMetadata = new Map(HiveTyping.EXPRESSION_METADATA);\n\n const extend = (types: (typeof Expression)[], data: Record<string, unknown>) => {\n for (const type of types) map.set(type, data);\n };\n\n extend([\n Atan2Expr,\n RandnExpr,\n ], {\n returns: DataTypeExprKind.DOUBLE,\n });\n\n extend([\n FormatExpr,\n RightExpr,\n ], {\n returns: DataTypeExprKind.VARCHAR,\n });\n\n map.set(ConcatExpr, {\n annotator: (s: TypeAnnotator, e: ConcatExpr) => annotateBySimilarArgs.call(s, e, [\n 'expressions',\n ], DataTypeExprKind.TEXT),\n });\n\n map.set(PadExpr, {\n annotator: (s: TypeAnnotator, e: PadExpr) => annotateBySimilarArgs.call(s, e, [\n 'this',\n 'fillPattern',\n ], DataTypeExprKind.TEXT),\n });\n\n map.set(SubstringExpr, {\n annotator: (s: TypeAnnotator, e: SubstringExpr) => s.annotateByArgs(e, [\n 'this',\n ]),\n });\n\n return map;\n }\n}\n","import type {\n AlterColumnExpr,\n CommandExpr, StructExpr,\n} from '../expressions';\nimport {\n ApproxDistinctExpr,\n ApproxQuantileExpr,\n ArraySliceExpr,\n ArraySortExpr,\n ArraySumExpr,\n ArrayToStringExpr,\n AtTimeZoneExpr,\n AutoIncrementPropertyExpr,\n BitwiseLeftShiftExpr,\n BitwiseRightShiftExpr,\n cast,\n CastExpr,\n CharacterSetPropertyExpr,\n CollatePropertyExpr,\n CreateExpr,\n DataTypeExpr,\n DataTypeExprKind,\n DateFromPartsExpr,\n DateTruncExpr,\n DayOfMonthExpr,\n DayOfWeekExpr,\n DayOfWeekIsoExpr,\n DayOfYearExpr,\n DivExpr,\n DropExpr,\n EnginePropertyExpr,\n Expression,\n FileFormatPropertyExpr, FormatExpr, FromExpr, FromTimeZoneExpr, ILikeExpr, JsonExtractExpr, JsonExtractScalarExpr, LeftExpr, LiteralExpr, LogicalAndExpr, LogicalOrExpr, MapExpr, MonthsBetweenExpr,\n PivotExpr, PropertiesLocation, ReduceExpr, RegexpLikeExpr, RegexpReplaceExpr, RightExpr, select, SelectExpr, Sha2DigestExpr, StrToDateExpr, StrToTimeExpr,\n StrToUnixExpr, TimestampTruncExpr, TsOrDsToDateExpr, UnixToTimeExpr,\n var_,\n VariancePopExpr,\n WeekOfYearExpr,\n WithinGroupExpr,\n} from '../expressions';\nimport {\n Generator,\n} from '../generator';\nimport {\n seqGet,\n} from '../helper';\nimport {\n Parser, buildTrim,\n} from '../parser';\nimport {\n cache, narrowInstanceOf,\n} from '../port_internals';\nimport type {\n TokenPair,\n} from '../tokens';\nimport {\n TokenType,\n} from '../tokens';\nimport {\n anyToExists,\n ctasWithTmpTablesToCreateTmpView,\n eliminateDistinctOn,\n eliminateQualify,\n moveSchemaColumnsToPartitionedBy,\n preprocess, removeUniqueConstraints, removeWithinGroupForPercentiles, unnestToExplode, unqualifyColumns,\n} from '../transforms';\nimport {\n Spark2Typing,\n} from '../typing/spark2';\nimport {\n binaryFromFunction, buildFormattedTime, Dialect, Dialects, isParseJson, pivotColumnNames,\n renameFunc,\n unitToStr,\n} from './dialect';\nimport {\n Hive,\n} from './hive';\n\nfunction mapSql (this: Generator, expression: MapExpr): string {\n const keys = expression.args.keys;\n const values = expression.args.values;\n\n if (!keys || !values) {\n return this.func('MAP', [\n ]);\n }\n\n return this.func('MAP_FROM_ARRAYS', [\n keys,\n values,\n ]);\n}\n\nexport function buildAsCast (toType: string) {\n return (args: Expression[]): CastExpr => {\n return new CastExpr({\n this: seqGet(args, 0),\n to: DataTypeExpr.build(toType),\n });\n };\n}\n\nfunction strToDate (this: Generator, expression: StrToDateExpr): string {\n const timeFormat = this.formatTime(expression);\n if (timeFormat === Hive.DATE_FORMAT) {\n return this.func('TO_DATE', [\n expression.args.this,\n ]);\n }\n return this.func('TO_DATE', [\n expression.args.this,\n timeFormat,\n ]);\n}\n\nfunction unixToTimeSql (this: Generator, expression: UnixToTimeExpr): string {\n const scale = expression.args.scale;\n const timestamp = expression.args.this;\n\n if (scale === undefined) {\n return this.sql(\n new CastExpr({\n this: this.func('from_unixtime', [\n timestamp,\n ]),\n to: DataTypeExpr.build(DataTypeExprKind.TIMESTAMP),\n }),\n );\n }\n\n const scaleValue = scale.toValue();\n if (scaleValue === UnixToTimeExpr.SECONDS.toValue()) {\n return this.func('TIMESTAMP_SECONDS', [\n timestamp,\n ]);\n }\n if (scaleValue === UnixToTimeExpr.MILLIS.toValue()) {\n return this.func('TIMESTAMP_MILLIS', [\n timestamp,\n ]);\n }\n if (scaleValue === UnixToTimeExpr.MICROS.toValue()) {\n return this.func('TIMESTAMP_MICROS', [\n timestamp,\n ]);\n }\n\n const unixSeconds = new DivExpr({\n this: timestamp,\n expression: this.func('POW', [\n LiteralExpr.number(10),\n scale,\n ]),\n });\n\n return this.func('TIMESTAMP_SECONDS', [\n unixSeconds,\n ]);\n}\n\n/**\n * Spark doesn't allow PIVOT aliases, so we remove them and wrap\n * in a subquery to preserve semantics.\n */\nfunction unaliasPivot (expression: Expression): Expression {\n if (expression instanceof FromExpr && expression.args.this?.args.pivots?.length) {\n const pivot = expression.args.this.args.pivots[0];\n if (pivot.args.alias) {\n const aliasNode = narrowInstanceOf(pivot.args.alias, Expression)?.pop();\n return new FromExpr({\n this: expression.args.this.replace(\n select('*')\n .from(expression.args.this.copy(), {\n copy: false,\n })\n .subquery(aliasNode, {\n copy: false,\n }),\n ),\n });\n }\n }\n\n return expression;\n}\n\n/**\n * Spark doesn't allow qualified columns in PIVOT's field.\n */\nfunction unqualifyPivotColumns (expression: Expression): Expression {\n if (expression instanceof PivotExpr) {\n expression.setArgKey(\n 'fields',\n expression.args.fields?.map((field) => unqualifyColumns(field)),\n );\n }\n\n return expression;\n}\n\nexport function temporaryStorageProvider (expression: Expression): Expression {\n // Spark/Databricks require a storage provider for temporary tables\n const provider = new FileFormatPropertyExpr({\n this: LiteralExpr.string('parquet'),\n });\n\n const properties = expression.getArgKey('properties');\n if (properties instanceof Expression) {\n properties.append('expressions', provider);\n }\n\n return expression;\n}\n\nclass Spark2Tokenizer extends Hive.Tokenizer {\n @cache\n static get HEX_STRINGS (): TokenPair[] {\n return [\n [\n 'X\\'',\n '\\'',\n ],\n [\n 'x\\'',\n '\\'',\n ],\n ];\n }\n\n @cache\n static get ORIGINAL_KEYWORDS (): Record<string, TokenType> {\n return {\n ...Hive.Tokenizer.KEYWORDS,\n TIMESTAMP: TokenType.TIMESTAMPTZ,\n };\n }\n}\n\nclass Spark2Parser extends Hive.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 ...Hive.Parser.NO_PAREN_FUNCTIONS,\n };\n delete noParenFunctions[TokenType.LOCALTIME];\n delete noParenFunctions[TokenType.LOCALTIMESTAMP];\n return noParenFunctions;\n }\n\n static TRIM_PATTERN_FIRST = true;\n static CHANGE_COLUMN_ALTER_SYNTAX = true;\n\n @cache\n static get FUNCTIONS (): Record<string, (args: Expression[], options: {dialect: Dialect}) => Expression> {\n return {\n ...Hive.Parser.FUNCTIONS,\n AGGREGATE: (args: unknown[]) => ReduceExpr.fromArgList(args),\n BOOLEAN: buildAsCast('boolean'),\n DATE: buildAsCast('date'),\n DATE_TRUNC: (args: Expression[]) =>\n new TimestampTruncExpr({\n this: seqGet(args, 1),\n unit: var_(seqGet(args, 0)),\n }),\n DAYOFMONTH: (args: Expression[]) =>\n new DayOfMonthExpr({\n this: new TsOrDsToDateExpr({\n this: seqGet(args, 0),\n }),\n }),\n DAYOFWEEK: (args: Expression[]) =>\n new DayOfWeekExpr({\n this: new TsOrDsToDateExpr({\n this: seqGet(args, 0),\n }),\n }),\n DAYOFYEAR: (args: Expression[]) =>\n new DayOfYearExpr({\n this: new TsOrDsToDateExpr({\n this: seqGet(args, 0),\n }),\n }),\n DOUBLE: buildAsCast('double'),\n FLOAT: buildAsCast('float'),\n FORMAT_STRING: (args: unknown[]) => FormatExpr.fromArgList(args),\n FROM_UTC_TIMESTAMP: (args: Expression[], {\n dialect,\n }: {dialect: Dialect}) =>\n new AtTimeZoneExpr({\n this: cast(seqGet(args, 0) || var_(''), DataTypeExprKind.TIMESTAMP, {\n dialect,\n }),\n zone: seqGet(args, 1),\n }),\n LTRIM: (args: Expression[]) => buildTrim(args, {\n reverseArgs: true,\n }),\n INT: buildAsCast('int'),\n MAP_FROM_ARRAYS: (args: unknown[]) => MapExpr.fromArgList(args),\n RLIKE: (args: unknown[]) => RegexpLikeExpr.fromArgList(args),\n RTRIM: (args: Expression[]) => buildTrim(args, {\n isLeft: false,\n reverseArgs: true,\n }),\n SHIFTLEFT: binaryFromFunction(BitwiseLeftShiftExpr),\n SHIFTRIGHT: binaryFromFunction(BitwiseRightShiftExpr),\n STRING: buildAsCast('string'),\n SLICE: (args: unknown[]) => ArraySliceExpr.fromArgList(args),\n TIMESTAMP: buildAsCast('timestamp'),\n TO_TIMESTAMP: (args: Expression[]) =>\n args.length === 1\n ? buildAsCast('timestamp')(args)\n : buildFormattedTime(StrToTimeExpr, {\n dialect: 'spark',\n })(args),\n TO_UNIX_TIMESTAMP: (args: unknown[]) => StrToUnixExpr.fromArgList(args),\n TO_UTC_TIMESTAMP: (args: Expression[], {\n dialect,\n }: {dialect: Dialect}) =>\n new FromTimeZoneExpr({\n this: cast(seqGet(args, 0) || var_(''), DataTypeExprKind.TIMESTAMP, {\n dialect,\n }),\n zone: seqGet(args, 1),\n }),\n TRUNC: (args: Expression[]) => new DateTruncExpr({\n unit: seqGet(args, 1),\n this: seqGet(args, 0),\n }),\n WEEKOFYEAR: (args: Expression[]) =>\n new WeekOfYearExpr({\n this: new TsOrDsToDateExpr({\n this: seqGet(args, 0),\n }),\n }),\n };\n }\n\n @cache\n static get FUNCTION_PARSERS (): Partial<Record<string, (this: Parser) => Expression | undefined>> {\n return {\n ...Hive.Parser.FUNCTION_PARSERS,\n APPROX_PERCENTILE: function (this: Parser) {\n return (this as Spark2Parser).parseQuantileFunction(ApproxQuantileExpr);\n },\n BROADCAST: function (this: Parser) {\n return this.parseJoinHint('BROADCAST');\n },\n BROADCASTJOIN: function (this: Parser) {\n return this.parseJoinHint('BROADCASTJOIN');\n },\n MAPJOIN: function (this: Parser) {\n return this.parseJoinHint('MAPJOIN');\n },\n MERGE: function (this: Parser) {\n return this.parseJoinHint('MERGE');\n },\n SHUFFLEMERGE: function (this: Parser) {\n return this.parseJoinHint('SHUFFLEMERGE');\n },\n MERGEJOIN: function (this: Parser) {\n return this.parseJoinHint('MERGEJOIN');\n },\n SHUFFLE_HASH: function (this: Parser) {\n return this.parseJoinHint('SHUFFLE_HASH');\n },\n SHUFFLE_REPLICATE_NL: function (this: Parser) {\n return this.parseJoinHint('SHUFFLE_REPLICATE_NL');\n },\n };\n }\n\n parseDropColumn (): DropExpr | CommandExpr | undefined {\n return (\n (this.matchTextSeq([\n 'DROP',\n 'COLUMNS',\n ]) || undefined)\n && this.expression(DropExpr, {\n this: this.parseSchema(),\n kind: 'COLUMNS',\n })\n );\n }\n\n pivotColumnNames (aggregations: Expression[]): string[] {\n if (aggregations.length === 1) {\n return [\n ];\n }\n return pivotColumnNames(aggregations, {\n dialect: 'spark',\n });\n }\n\n // port from _Dialect metaclass logic\n @cache\n static get TABLE_ALIAS_TOKENS (): Set<TokenType> {\n return new Set([\n ...Hive.Parser.TABLE_ALIAS_TOKENS,\n TokenType.STRAIGHT_JOIN,\n ]);\n }\n}\nclass Spark2Generator extends Hive.Generator {\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 QUERY_HINTS = true;\n static NVL2_SUPPORTED = true;\n static CAN_IMPLEMENT_ARRAY_ANY = true;\n static ALTER_SET_TYPE = 'TYPE';\n static PARSE_JSON_NAME?: string;\n\n @cache\n static get PROPERTIES_LOCATION (): Map<typeof Expression, PropertiesLocation> {\n return new Map([\n ...Hive.Generator.PROPERTIES_LOCATION,\n [\n EnginePropertyExpr,\n PropertiesLocation.UNSUPPORTED,\n ],\n [\n AutoIncrementPropertyExpr,\n PropertiesLocation.UNSUPPORTED,\n ],\n [\n CharacterSetPropertyExpr,\n PropertiesLocation.UNSUPPORTED,\n ],\n [\n CollatePropertyExpr,\n PropertiesLocation.UNSUPPORTED,\n ],\n ]);\n }\n\n @cache\n static get TS_OR_DS_EXPRESSIONS (): Set<typeof Expression> {\n return new Set([\n ...Hive.Generator.TS_OR_DS_EXPRESSIONS,\n DayOfMonthExpr,\n DayOfWeekExpr,\n DayOfYearExpr,\n WeekOfYearExpr,\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 ...Hive.Generator.TRANSFORMS,\n [\n ApproxDistinctExpr,\n renameFunc('APPROX_COUNT_DISTINCT'),\n ],\n [\n ArraySumExpr,\n function (this: Generator, e: ArraySumExpr) {\n return `AGGREGATE(${this.sql(e, 'this')}, 0, (acc, x) -> acc + x, acc -> acc)`;\n },\n ],\n [\n ArrayToStringExpr,\n renameFunc('ARRAY_JOIN'),\n ],\n [\n ArraySliceExpr,\n renameFunc('SLICE'),\n ],\n [\n AtTimeZoneExpr,\n function (this: Generator, e: AtTimeZoneExpr) {\n return this.func('FROM_UTC_TIMESTAMP', [\n e.args.this,\n e.args.zone,\n ]);\n },\n ],\n [\n BitwiseLeftShiftExpr,\n renameFunc('SHIFTLEFT'),\n ],\n [\n BitwiseRightShiftExpr,\n renameFunc('SHIFTRIGHT'),\n ],\n [\n CreateExpr,\n preprocess([\n removeUniqueConstraints,\n (e: Expression) => ctasWithTmpTablesToCreateTmpView(e, temporaryStorageProvider),\n moveSchemaColumnsToPartitionedBy,\n ]),\n ],\n [\n DateFromPartsExpr,\n renameFunc('MAKE_DATE'),\n ],\n [\n DateTruncExpr,\n function (this: Generator, e: DateTruncExpr) {\n return this.func('TRUNC', [\n e.args.this,\n unitToStr(e),\n ]);\n },\n ],\n [\n DayOfMonthExpr,\n renameFunc('DAYOFMONTH'),\n ],\n [\n DayOfWeekExpr,\n renameFunc('DAYOFWEEK'),\n ],\n [\n DayOfWeekIsoExpr,\n function (this: Generator, e: DayOfWeekIsoExpr) {\n return '(( ' + this.func('DAYOFWEEK', [\n e.args.this,\n ]) + ' % 7) + 1)';\n },\n ],\n [\n DayOfYearExpr,\n renameFunc('DAYOFYEAR'),\n ],\n [\n FormatExpr,\n renameFunc('FORMAT_STRING'),\n ],\n [\n FromExpr,\n preprocess([\n unaliasPivot,\n ]),\n ],\n [\n FromTimeZoneExpr,\n function (this: Generator, e: FromTimeZoneExpr) {\n return this.func('TO_UTC_TIMESTAMP', [\n e.args.this,\n e.args.zone,\n ]);\n },\n ],\n [\n LogicalAndExpr,\n renameFunc('BOOL_AND'),\n ],\n [\n LogicalOrExpr,\n renameFunc('BOOL_OR'),\n ],\n [\n MapExpr,\n mapSql,\n ],\n [\n PivotExpr,\n preprocess([\n unqualifyPivotColumns,\n ]),\n ],\n [\n ReduceExpr,\n renameFunc('AGGREGATE'),\n ],\n [\n RegexpReplaceExpr,\n function (this: Generator, e: RegexpReplaceExpr) {\n return this.func('REGEXP_REPLACE', [\n e.args.this,\n e.args.expression,\n e.args.replacement,\n e.args.position,\n ]);\n },\n ],\n [\n SelectExpr,\n preprocess([\n eliminateQualify,\n eliminateDistinctOn,\n unnestToExplode,\n anyToExists,\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 StrToDateExpr,\n strToDate,\n ],\n [\n StrToTimeExpr,\n function (this: Generator, e: StrToTimeExpr) {\n return this.func('TO_TIMESTAMP', [\n e.args.this,\n this.formatTime(e),\n ]);\n },\n ],\n [\n TimestampTruncExpr,\n function (this: Generator, e: TimestampTruncExpr) {\n return this.func('DATE_TRUNC', [\n unitToStr(e),\n e.args.this,\n ]);\n },\n ],\n [\n UnixToTimeExpr,\n unixToTimeSql,\n ],\n [\n VariancePopExpr,\n renameFunc('VAR_POP'),\n ],\n [\n WeekOfYearExpr,\n renameFunc('WEEKOFYEAR'),\n ],\n [\n WithinGroupExpr,\n preprocess([\n removeWithinGroupForPercentiles,\n ]),\n ],\n ]);\n\n [\n ArraySortExpr,\n ILikeExpr,\n LeftExpr,\n MonthsBetweenExpr,\n RightExpr,\n ].forEach((expr) => transforms.delete(expr));\n\n return transforms;\n }\n\n static WRAP_DERIVED_VALUES = false;\n static CREATE_FUNCTION_RETURN_AS = false;\n\n structSql (expression: StructExpr): string {\n return Generator.prototype.structSql.call(this, expression);\n }\n\n castSql (expression: CastExpr, options: {safePrefix?: string} = {}): string {\n const arg = expression.args.this;\n const isJsonExtract =\n (arg instanceof JsonExtractExpr || arg instanceof JsonExtractScalarExpr)\n && !arg.getArgKey('variantExtract');\n\n if (narrowInstanceOf(expression.args.to, Expression)?.getArgKey('nested') && (isParseJson(arg) || isJsonExtract)) {\n const schema = `'${this.sql(expression, 'to')}'`;\n return this.func('FROM_JSON', [\n isJsonExtract ? arg : (arg as Expression).args.this,\n schema,\n ]);\n }\n\n if (isParseJson(expression)) {\n return this.func('TO_JSON', [\n arg,\n ]);\n }\n\n return super.castSql(expression, options);\n }\n\n fileFormatPropertySql (expression: FileFormatPropertyExpr): string {\n if (expression.args.hiveFormat) {\n return super.fileFormatPropertySql(expression);\n }\n\n return `USING ${expression.name.toUpperCase()}`;\n }\n\n alterColumnSql (expression: AlterColumnExpr): string {\n const thisNode = this.sql(expression, 'this');\n const newName = this.sql(expression, 'renameTo') || thisNode;\n const comment = this.sql(expression, 'comment');\n\n if (newName === thisNode) {\n if (comment) {\n return `ALTER COLUMN ${thisNode} COMMENT ${comment}`;\n }\n return Generator.prototype.alterColumnSql.call(this, expression);\n }\n return `RENAME COLUMN ${thisNode} TO ${newName}`;\n }\n\n renameColumnSql (expr: Expression): string {\n return super.renameColumnSql(expr);\n }\n}\n\nexport class Spark2 extends Hive {\n static DIALECT_NAME = Dialects.SPARK2;\n static ALTER_TABLE_SUPPORTS_CASCADE = false;\n @cache\n static get EXPRESSION_METADATA () {\n return new Map(Spark2Typing.EXPRESSION_METADATA);\n }\n\n static INITCAP_DEFAULT_DELIMITER_CHARS = ' ';\n\n static Tokenizer = Spark2Tokenizer;\n static Parser = Spark2Parser;\n static Generator = Spark2Generator;\n}\n\nDialect.register(Dialects.SPARK2, Spark2);\n"],"mappings":"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C,GACAH,EAAW,YAAY,CACzB,EACA,CACErB,EACAqB,EAAW,OAAO,CACpB,EACA,CACE7B,EACA,SAA2B+B,EAAmB,CAC5C,OAAO,KAAK,KAAK,qBAAsB,CACrCA,EAAE,KAAK,KACPA,EAAE,KAAK,IACT,CAAC,CACH,CACF,EACA,CACEzB,EACAuB,EAAW,WAAW,CACxB,EACA,CACEtB,EACAsB,EAAW,YAAY,CACzB,EACA,CACEI,GACAC,EAAW,CACTC,GACCJ,GAAkBK,GAAiCL,EAAG9D,EAAwB,EAC/EoE,EACF,CAAC,CACH,EACA,CACEC,GACAT,EAAW,WAAW,CACxB,EACA,CACEhB,EACA,SAA2BkB,EAAkB,CAC3C,OAAO,KAAK,KAAK,QAAS,CACxBA,EAAE,KAAK,KACPQ,GAAUR,CAAC,CACb,CAAC,CACH,CACF,EACA,CACErC,EACAmC,EAAW,YAAY,CACzB,EACA,CACEjC,EACAiC,EAAW,WAAW,CACxB,EACA,CACEW,GACA,SAA2BT,EAAqB,CAC9C,MAAO,MAAQ,KAAK,KAAK,YAAa,CACpCA,EAAE,KAAK,IACT,CAAC,EAAI,YACP,CACF,EACA,CACElC,EACAgC,EAAW,WAAW,CACxB,EACA,CACE/B,EACA+B,EAAW,eAAe,CAC5B,EACA,CACEtE,EACA2E,EAAW,CACT5E,EACF,CAAC,CACH,EACA,CACEsD,EACA,SAA2BmB,EAAqB,CAC9C,OAAO,KAAK,KAAK,mBAAoB,CACnCA,EAAE,KAAK,KACPA,EAAE,KAAK,IACT,CAAC,CACH,CACF,EACA,CACEU,GACAZ,EAAW,UAAU,CACvB,EACA,CACEa,GACAb,EAAW,SAAS,CACtB,EACA,CACE1B,EACAlE,EACF,EACA,CACE6B,EACAoE,EAAW,CACTrE,EACF,CAAC,CACH,EACA,CACE0B,EACAsC,EAAW,WAAW,CACxB,EACA,CACEc,GACA,SAA2BZ,EAAsB,CAC/C,OAAO,KAAK,KAAK,iBAAkB,CACjCA,EAAE,KAAK,KACPA,EAAE,KAAK,WACPA,EAAE,KAAK,YACPA,EAAE,KAAK,QACT,CAAC,CACH,CACF,EACA,CACEa,GACAV,E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","names":["annotateBySimilarArgs","expression","args","targetType","expressions","arg","argExpr","list","filterInstanceOf","Expression","lastDatatype","hasUnknown","expr","exprType","isInstanceOf","DataTypeExpr","_EXPRESSION_METADATA_dec","_init","cache","Spark2Typing","map","HiveTyping","extend","types","data","type","Atan2Expr","RandnExpr","FormatExpr","RightExpr","ConcatExpr","s","e","PadExpr","SubstringExpr","__decoratorStart","__decorateElement","__decoratorMetadata","__runInitializers","mapSql","expression","keys","values","buildAsCast","toType","args","CastExpr","seqGet","DataTypeExpr","strToDate","timeFormat","Hive","unixToTimeSql","scale","timestamp","scaleValue","UnixToTimeExpr","unixSeconds","DivExpr","LiteralExpr","unaliasPivot","FromExpr","pivot","aliasNode","narrowInstanceOf","Expression","select","unqualifyPivotColumns","PivotExpr","field","unqualifyColumns","temporaryStorageProvider","provider","FileFormatPropertyExpr","properties","_ORIGINAL_KEYWORDS_dec","_HEX_STRINGS_dec","_a","_init","Spark2Tokenizer","cache","__decoratorStart","__decorateElement","__decoratorMetadata","__runInitializers","_TABLE_ALIAS_TOKENS_dec","_FUNCTION_PARSERS_dec","_FUNCTIONS_dec","_NO_PAREN_FUNCTIONS_dec","_ID_VAR_TOKENS_dec","Spark2Parser","Parser","noParenFunctions","ReduceExpr","TimestampTruncExpr","var_","DayOfMonthExpr","TsOrDsToDateExpr","DayOfWeekExpr","DayOfYearExpr","FormatExpr","dialect","AtTimeZoneExpr","cast","buildTrim","MapExpr","RegexpLikeExpr","binaryFromFunction","BitwiseLeftShiftExpr","BitwiseRightShiftExpr","ArraySliceExpr","buildFormattedTime","StrToTimeExpr","StrToUnixExpr","FromTimeZoneExpr","DateTruncExpr","WeekOfYearExpr","ApproxQuantileExpr","DropExpr","aggregations","pivotColumnNames","_ORIGINAL_TRANSFORMS_dec","_TS_OR_DS_EXPRESSIONS_dec","_PROPERTIES_LOCATION_dec","Spark2Generator","EnginePropertyExpr","AutoIncrementPropertyExpr","CharacterSetPropertyExpr","CollatePropertyExpr","transforms","ApproxDistinctExpr","renameFunc","ArraySumExpr","e","ArrayToStringExpr","CreateExpr","preprocess","removeUniqueConstraints","ctasWithTmpTablesToCreateTmpView","moveSchemaColumnsToPartitionedBy","DateFromPartsExpr","unitToStr","DayOfWeekIsoExpr","LogicalAndExpr","LogicalOrExpr","RegexpReplaceExpr","SelectExpr","eliminateQualify","eliminateDistinctOn","unnestToExplode","anyToExists","Sha2DigestExpr","StrToDateExpr","VariancePopExpr","WithinGroupExpr","removeWithinGroupForPercentiles","ArraySortExpr","ILikeExpr","LeftExpr","MonthsBetweenExpr","RightExpr","expr","Generator","options","arg","isJsonExtract","JsonExtractExpr","JsonExtractScalarExpr","isParseJson","schema","thisNode","newName","comment","_EXPRESSION_METADATA_dec","Spark2","Spark2Typing","Dialect"]}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } 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 _chunkXZQFOICXcjs = require('./chunk-XZQFOICX.cjs');var _chunkR7C3ZHVKcjs = require('./chunk-R7C3ZHVK.cjs');var _chunk2Z3O2CFMcjs = require('./chunk-2Z3O2CFM.cjs');var Xe,Lt;Xe=[_chunk2Z3O2CFMcjs.r];var m=class{static get EXPRESSION_METADATA(){let i=new Map(_chunk2Z3O2CFMcjs.np.EXPRESSION_METADATA),t=(e,s)=>{for(let E of e)i.set(E,s)};return t([_chunk2Z3O2CFMcjs.ue,_chunk2Z3O2CFMcjs.Te,_chunk2Z3O2CFMcjs.we,_chunk2Z3O2CFMcjs.ye,_chunk2Z3O2CFMcjs.Oj,_chunk2Z3O2CFMcjs.Rj,_chunk2Z3O2CFMcjs.tl,_chunk2Z3O2CFMcjs.gm],{returns:"bigint"}),t([_chunk2Z3O2CFMcjs.Ig,_chunk2Z3O2CFMcjs.Bi,_chunk2Z3O2CFMcjs.Uk,_chunk2Z3O2CFMcjs.jl],{annotator:(e,s)=>e.annotateByArgs(s,["this"])}),i.set(_chunk2Z3O2CFMcjs.Pe,{annotator:(e,s)=>e.annotateByArgs(s,["this","expression"])}),i.set(_chunk2Z3O2CFMcjs.Ck,{annotator:(e,s)=>s.args.this?e.annotateByArgs(s,["this"]):e.setType(s,"double")}),i.set(_chunk2Z3O2CFMcjs.hk,{returns:"varbinary"}),i}};Lt=_chunk2Z3O2CFMcjs.a.call(void 0, null),_chunk2Z3O2CFMcjs.d.call(void 0, Lt,10,"EXPRESSION_METADATA",Xe,m),_chunk2Z3O2CFMcjs.b.call(void 0, Lt,m),_chunk2Z3O2CFMcjs.c.call(void 0, Lt,3,m);function ui(r){let i=r.args.expression;return i&&!(i.isString&&i.args.this===this.dialect._constructor.INITCAP_DEFAULT_DELIMITER_CHARS)&&this.unsupported("INITCAP does not support custom delimiters in Presto."),`REGEXP_REPLACE(${this.sql(r,"this")}, '(\\w)(\\w*)', x -> UPPER(x[1]) || LOWER(x[2]))`}function Ai(r){let i;return r.args.asc instanceof _chunk2Z3O2CFMcjs.ae&&!r.args.asc.args.this&&(i="(a, b) -> CASE WHEN a < b THEN 1 WHEN a > b THEN -1 ELSE 0 END"),this.func("ARRAY_SORT",[r.args.this,i])}function li(r){if(r.parent instanceof _chunk2Z3O2CFMcjs.ud){r.transform(t=>t instanceof _chunk2Z3O2CFMcjs.rb?t.name:t,{copy:!1});let i=_optionalChain([r, 'access', _2 => _2.args, 'access', _3 => _3.expressions, 'optionalAccess', _4 => _4.map, 'call', _5 => _5(t=>t instanceof _chunk2Z3O2CFMcjs.ge||t instanceof _chunk2Z3O2CFMcjs.Hb?this.sql(t):this.sql(t,"this"))])||[];return this.sql(new (0, _chunk2Z3O2CFMcjs.Mf)({expressions:i.map(t=>new (0, _chunk2Z3O2CFMcjs.$c)({this:t,isString:!0}))}))}if(r.parent){let i=r.parent.findAll(_chunk2Z3O2CFMcjs.Vb);for(let t of i){if(t===r)continue;let e=[...t.findAll(_chunk2Z3O2CFMcjs.Za)];0<e.length&&t.parent instanceof _chunk2Z3O2CFMcjs.Hb&&_optionalChain([r, 'access', _6 => _6.args, 'access', _7 => _7.expressions, 'optionalAccess', _8 => _8.push, 'call', _9 => _9(...e)])}}return this.schemaSql(r)}function Si(r){return this.unsupported("Presto does not support exact quantiles; using APPROX_PERCENTILE."),this.func("APPROX_PERCENTILE",[r.args.this,r.args.quantile])}function wt(r){return this.func("DATE_PARSE",[r.args.this,this.formatTime(r)])}function hi(r){let i=this.formatTime(r);if(i&&i!==T.TIME_FORMAT&&i!==T.DATE_FORMAT){let t=wt.call(this,r);return this.sql(new (0, _chunk2Z3O2CFMcjs.Cg)({this:t,to:"date".toUpperCase()}))}return this.sql(new (0, _chunk2Z3O2CFMcjs.Cg)({this:new (0, _chunk2Z3O2CFMcjs.Cg)({this:r.args.this,to:"timestamp".toUpperCase()}),to:"date".toUpperCase()}))}function fi(r){let i=_chunk2Z3O2CFMcjs.rq.call(void 0, r),t=_chunk2Z3O2CFMcjs.uq.call(void 0, i);return this.func("DATE_ADD",[t,i.args.expression,i.args.this])}function xi(r){let i=new (0, _chunk2Z3O2CFMcjs.Cg)({this:r.args.this,to:"timestamp".toUpperCase()}),t=new (0, _chunk2Z3O2CFMcjs.Cg)({this:r.args.expression,to:"timestamp".toUpperCase()}),e=_chunk2Z3O2CFMcjs.uq.call(void 0, r);return this.func("DATE_DIFF",[e,t,i])}function Ri(r){return r.length===4?new (0, _chunk2Z3O2CFMcjs.Zn)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, r,0),weight:_chunk2Z3O2CFMcjs.ca.call(void 0, r,1),quantile:_chunk2Z3O2CFMcjs.ca.call(void 0, r,2),accuracy:_chunk2Z3O2CFMcjs.ca.call(void 0, r,3)}):r.length===3?new (0, _chunk2Z3O2CFMcjs.Zn)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, r,0),quantile:_chunk2Z3O2CFMcjs.ca.call(void 0, r,1),accuracy:_chunk2Z3O2CFMcjs.ca.call(void 0, r,2)}):_chunk2Z3O2CFMcjs.Zn.fromArgList(r)}function Ii(r){return r.length===3?new (0, _chunk2Z3O2CFMcjs.Zl)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, r,0),hours:_chunk2Z3O2CFMcjs.ca.call(void 0, r,1),minutes:_chunk2Z3O2CFMcjs.ca.call(void 0, r,2)}):r.length===2?new (0, _chunk2Z3O2CFMcjs.Zl)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, r,0),zone:_chunk2Z3O2CFMcjs.ca.call(void 0, r,1)}):_chunk2Z3O2CFMcjs.Zl.fromArgList(r)}function ke(r){return r.findAncestor(_chunk2Z3O2CFMcjs.Cb,_chunk2Z3O2CFMcjs.Wd)?this.functionFallbackSql(r):_chunk2Z3O2CFMcjs.pp.call(void 0, "ARBITRARY").call(this,r)}function gi(r){let i=r.args.scale,t=this.sql(r,"this");return!i||i.toValue()===_chunk2Z3O2CFMcjs.Zl.SECONDS.toValue()?_chunk2Z3O2CFMcjs.pp.call(void 0, "FROM_UNIXTIME").call(this,r):`FROM_UNIXTIME(CAST(${t} AS DOUBLE) / POW(10, ${this.sql(i)}))`}function _i(r){return r.type||_chunk2Z3O2CFMcjs.Y.call(void 0, r,{dialect:this.dialect}),r.type instanceof _chunk2Z3O2CFMcjs.Ca&&!_chunk2Z3O2CFMcjs.ac.INTEGER_TYPES.has(r.type.args.this)?new (0, _chunk2Z3O2CFMcjs.Cg)({this:r,to:"bigint".toUpperCase()}):r}function Oi(r){let i=_chunk2Z3O2CFMcjs.ca.call(void 0, r,1);return i instanceof _chunk2Z3O2CFMcjs.$c&&i.setArgKey("this",(_nullishCoalesce(i.args.this, () => (""))).toUpperCase()),_chunk2Z3O2CFMcjs.Kp.call(void 0, _chunk2Z3O2CFMcjs.Hl,{dialect:"teradata"})(r)}function yt(r,i={}){let{negateInterval:t=!1}=i;return function(e){let s=e.args.expression?_i.call(this,e.args.expression):new (0, _chunk2Z3O2CFMcjs.$c)({this:"0",isString:!1}),E=t?s.mul(-1):s;return this.func(r,[_chunk2Z3O2CFMcjs.uq.call(void 0, e),this.sql(E),this.sql(e,"this")])}}function mi(r){let i=r.args.this;if(i instanceof _chunk2Z3O2CFMcjs.yi){let t=i.args.this instanceof _chunk2Z3O2CFMcjs.Ca?i.args.this.type:i.args.this,e=r.args.alias;if(e instanceof _chunk2Z3O2CFMcjs.Ya&&t instanceof _chunk2Z3O2CFMcjs.ac&&t.isType("array")&&0<(_optionalChain([t, 'access', _10 => _10.args, 'access', _11 => _11.expressions, 'optionalAccess', _12 => _12.length])||0)&&_optionalChain([t, 'access', _13 => _13.args, 'access', _14 => _14.expressions, 'optionalAccess', _15 => _15[0], 'access', _16 => _16.isType, 'call', _17 => _17("struct")])){let s=t.args.expressions[0].args.expressions;e.setArgKey("columns",_optionalChain([s, 'optionalAccess', _18 => _18.flatMap, 'call', _19 => _19(E=>E instanceof _chunk2Z3O2CFMcjs.Ca&&E.args.this instanceof _chunk2Z3O2CFMcjs.Ca?E.args.this.copy():[])]))}}else i instanceof _chunk2Z3O2CFMcjs.zi&&i.replace(new (0, _chunk2Z3O2CFMcjs.yi)({this:i.args.this instanceof _chunk2Z3O2CFMcjs.Ca?i.args.this.copy():_nullishCoalesce(_optionalChain([i, 'access', _20 => _20.args, 'access', _21 => _21.this, 'optionalAccess', _22 => _22.toString, 'call', _23 => _23()]), () => (""))}));return _chunk2Z3O2CFMcjs.Mq.call(this,r)}function Di(r){if(r instanceof _chunk2Z3O2CFMcjs.Wd&&r.type){let i=r.args.laterals||[];for(let t of i){let e=t.args.alias;if(!(t.args.this instanceof _chunk2Z3O2CFMcjs.yi)||!(e instanceof _chunk2Z3O2CFMcjs.Ya)||_optionalChain([e, 'access', _24 => _24.args, 'access', _25 => _25.columns, 'optionalAccess', _26 => _26.length])!==1)continue;let s=e.args.this,E=e.args.columns[0]instanceof _chunk2Z3O2CFMcjs.Ca?e.args.columns[0].name.toLowerCase():e.args.columns[0];for(let c of _chunk2Z3O2CFMcjs.W.call(void 0, r,[_chunk2Z3O2CFMcjs.Ic])){let p=_optionalChain([c, 'access', _27 => _27.args, 'access', _28 => _28.db, 'optionalAccess', _29 => _29.toString, 'call', _30 => _30(), 'access', _31 => _31.toLowerCase, 'call', _32 => _32()]),L=_optionalChain([c, 'access', _33 => _33.args, 'access', _34 => _34.table, 'optionalAccess', _35 => _35.toString, 'call', _36 => _36(), 'access', _37 => _37.toLowerCase, 'call', _38 => _38()]),tt=c.name.toLowerCase();p===E?c.setArgKey("table",c.args.db instanceof _chunk2Z3O2CFMcjs.Ca?c.args.db.pop():c.args.db):L===E?c.setArgKey("table",s instanceof _chunk2Z3O2CFMcjs.Ca?s.copy():s):tt===E&&c.parent instanceof _chunk2Z3O2CFMcjs.Ae&&c.parent.replace(new (0, _chunk2Z3O2CFMcjs.Ic)({this:c.parent.args.expression,table:_chunk2Z3O2CFMcjs.p.call(void 0, s,"string",_chunk2Z3O2CFMcjs.Ca)}))}}}return r}var Ye,$e,Ke,j,I=class extends(Ke=_chunk2Z3O2CFMcjs.Xq,$e=[_chunk2Z3O2CFMcjs.r],Ye=[_chunk2Z3O2CFMcjs.r],Ke){static get HEX_STRINGS(){return[["x'","'"],["X'","'"]]}static get UNICODE_STRINGS(){let t=["U&","u&"],e=_chunk2Z3O2CFMcjs.Xq.QUOTES,s=[];for(let E of e)for(let c of t)s.push([c+E,E]);return s}static get ORIGINAL_KEYWORDS(){let t={..._chunk2Z3O2CFMcjs.Xq.KEYWORDS,"DEALLOCATE PREPARE":"command","DESCRIBE INPUT":"command","DESCRIBE OUTPUT":"command","RESET SESSION":"command",START:"begin",MATCH_RECOGNIZE:"matchRecognize",ROW:"struct",IPADDRESS:"ipaddress",IPPREFIX:"ipprefix",TDIGEST:"tdigest",HYPERLOGLOG:"hllsketch"};return delete t["/*+"],delete t.QUALIFY,t}};j=_chunk2Z3O2CFMcjs.a.call(void 0, Ke),_chunk2Z3O2CFMcjs.d.call(void 0, j,10,"UNICODE_STRINGS",$e,I),_chunk2Z3O2CFMcjs.d.call(void 0, j,10,"ORIGINAL_KEYWORDS",Ye,I),_chunk2Z3O2CFMcjs.b.call(void 0, j,I),_chunk2Z3O2CFMcjs.c.call(void 0, j,3,I),I.NESTED_COMMENTS=!1;var Ve,ve,Je,Ze,Qe,M,f=class extends(Qe=_chunk2Z3O2CFMcjs.za,Ze=[_chunk2Z3O2CFMcjs.r],Je=[_chunk2Z3O2CFMcjs.r],ve=[_chunk2Z3O2CFMcjs.r],Ve=[_chunk2Z3O2CFMcjs.r],Qe){static get ID_VAR_TOKENS(){return new Set([..._chunk2Z3O2CFMcjs.za.ID_VAR_TOKENS,"sessionUser","currentCatalog","straightJoin"])}static get FUNCTIONS(){return{..._chunk2Z3O2CFMcjs.za.FUNCTIONS,ARBITRARY:t=>_chunk2Z3O2CFMcjs.Um.fromArgList(t),APPROX_DISTINCT:t=>_chunk2Z3O2CFMcjs.Lm.fromArgList(t),APPROX_PERCENTILE:Ri,BITWISE_AND:_chunk2Z3O2CFMcjs.iq.call(void 0, _chunk2Z3O2CFMcjs.ue),BITWISE_NOT:t=>new (0, _chunk2Z3O2CFMcjs.Te)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, t,0)}),BITWISE_OR:_chunk2Z3O2CFMcjs.iq.call(void 0, _chunk2Z3O2CFMcjs.we),BITWISE_XOR:_chunk2Z3O2CFMcjs.iq.call(void 0, _chunk2Z3O2CFMcjs.ye),CARDINALITY:t=>_chunk2Z3O2CFMcjs.xg.fromArgList(t),CONTAINS:t=>_chunk2Z3O2CFMcjs.mg.fromArgList(t),DATE_ADD:t=>new (0, _chunk2Z3O2CFMcjs.uh)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, t,2),expression:_chunk2Z3O2CFMcjs.ca.call(void 0, t,1),unit:_chunk2Z3O2CFMcjs.ca.call(void 0, t,0)}),DATE_DIFF:t=>new (0, _chunk2Z3O2CFMcjs.xh)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, t,2),expression:_chunk2Z3O2CFMcjs.ca.call(void 0, t,1),unit:_chunk2Z3O2CFMcjs.ca.call(void 0, t,0)}),DATE_FORMAT:_chunk2Z3O2CFMcjs.Kp.call(void 0, _chunk2Z3O2CFMcjs.Hl,{dialect:"presto"}),DATE_PARSE:_chunk2Z3O2CFMcjs.Kp.call(void 0, _chunk2Z3O2CFMcjs.xl,{dialect:"presto"}),DATE_TRUNC:_chunk2Z3O2CFMcjs.Op,DAY_OF_WEEK:t=>_chunk2Z3O2CFMcjs.Gh.fromArgList(t),DOW:t=>_chunk2Z3O2CFMcjs.Gh.fromArgList(t),DOY:t=>_chunk2Z3O2CFMcjs.Ih.fromArgList(t),ELEMENT_AT:t=>new (0, _chunk2Z3O2CFMcjs.de)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, t,0),expressions:[t[1]],offset:1,safe:!0}),FROM_HEX:t=>_chunk2Z3O2CFMcjs.Ul.fromArgList(t),FROM_UNIXTIME:Ii,FROM_UTF8:t=>new (0, _chunk2Z3O2CFMcjs.ni)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, t,0),replace:_chunk2Z3O2CFMcjs.ca.call(void 0, t,1),charset:new (0, _chunk2Z3O2CFMcjs.$c)({this:"utf-8",isString:!0})}),JSON_FORMAT:t=>new (0, _chunk2Z3O2CFMcjs.zj)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, t,0),options:_chunk2Z3O2CFMcjs.ca.call(void 0, t,1),isJson:!0}),LEVENSHTEIN_DISTANCE:t=>_chunk2Z3O2CFMcjs.Rj.fromArgList(t),NOW:t=>_chunk2Z3O2CFMcjs.fh.fromArgList(t),REGEXP_EXTRACT:_chunk2Z3O2CFMcjs.Lq.call(void 0, _chunk2Z3O2CFMcjs.Ik),REGEXP_EXTRACT_ALL:_chunk2Z3O2CFMcjs.Lq.call(void 0, _chunk2Z3O2CFMcjs.Jk),REGEXP_REPLACE:t=>new (0, _chunk2Z3O2CFMcjs.Kk)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, t,0),expression:_chunk2Z3O2CFMcjs.ca.call(void 0, t,1),replacement:_nullishCoalesce(_chunk2Z3O2CFMcjs.ca.call(void 0, t,2), () => (""))}),REPLACE:_chunk2Z3O2CFMcjs.Sq,ROW:t=>_chunk2Z3O2CFMcjs.Cl.fromArgList(t),SEQUENCE:t=>_chunk2Z3O2CFMcjs.bg.fromArgList(t),SET_AGG:t=>_chunk2Z3O2CFMcjs.Om.fromArgList(t),SPLIT_TO_MAP:t=>_chunk2Z3O2CFMcjs.zl.fromArgList(t),STRPOS:t=>new (0, _chunk2Z3O2CFMcjs.tl)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, t,0),substr:_chunk2Z3O2CFMcjs.ca.call(void 0, t,1),occurrence:_chunk2Z3O2CFMcjs.ca.call(void 0, t,2)}),SLICE:t=>_chunk2Z3O2CFMcjs.pg.fromArgList(t),TO_CHAR:Oi,TO_UNIXTIME:t=>_chunk2Z3O2CFMcjs.Il.fromArgList(t),TO_UTF8:t=>new (0, _chunk2Z3O2CFMcjs.si)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, t,0),charset:new (0, _chunk2Z3O2CFMcjs.$c)({this:"utf-8",isString:!0})}),MD5:t=>_chunk2Z3O2CFMcjs.hk.fromArgList(t),SHA256:t=>new (0, _chunk2Z3O2CFMcjs.gl)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, t,0),length:new (0, _chunk2Z3O2CFMcjs.$c)({this:"256",isString:!1})}),SHA512:t=>new (0, _chunk2Z3O2CFMcjs.gl)({this:_chunk2Z3O2CFMcjs.ca.call(void 0, t,0),length:new (0, _chunk2Z3O2CFMcjs.$c)({this:"512",isString:!1})}),WEEK:t=>_chunk2Z3O2CFMcjs.Lh.fromArgList(t)}}static get FUNCTION_PARSERS(){let t={..._chunk2Z3O2CFMcjs.za.FUNCTION_PARSERS};return delete t.TRIM,t}static get TABLE_ALIAS_TOKENS(){return new Set([..._chunk2Z3O2CFMcjs.za.TABLE_ALIAS_TOKENS,"straightJoin"])}};M=_chunk2Z3O2CFMcjs.a.call(void 0, Qe),_chunk2Z3O2CFMcjs.d.call(void 0, M,10,"ID_VAR_TOKENS",Ze,f),_chunk2Z3O2CFMcjs.d.call(void 0, M,10,"FUNCTIONS",Je,f),_chunk2Z3O2CFMcjs.d.call(void 0, M,10,"FUNCTION_PARSERS",ve,f),_chunk2Z3O2CFMcjs.d.call(void 0, M,10,"TABLE_ALIAS_TOKENS",Ve,f),_chunk2Z3O2CFMcjs.b.call(void 0, M,f),_chunk2Z3O2CFMcjs.c.call(void 0, M,3,f),f.VALUES_FOLLOWED_BY_PAREN=!1,f.ZONE_AWARE_TIMESTAMP_CONSTRUCTOR=!0;var ze,je,ti,ri,ei,ii,si,R,a=class extends(si=_chunk2Z3O2CFMcjs.lp,ii=[_chunk2Z3O2CFMcjs.r],ei=[_chunk2Z3O2CFMcjs.r],ri=[_chunk2Z3O2CFMcjs.r],ti=[_chunk2Z3O2CFMcjs.r],je=[_chunk2Z3O2CFMcjs.r],ze=[_chunk2Z3O2CFMcjs.r],si){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 STRUCT_DELIMITER(){return["(",")"]}static get PROPERTIES_LOCATION(){return new Map([..._chunk2Z3O2CFMcjs.lp.PROPERTIES_LOCATION,[_chunk2Z3O2CFMcjs.pd,"unsupported"],[_chunk2Z3O2CFMcjs.Od,"unsupported"]])}static get TYPE_MAPPING(){return new Map([..._chunk2Z3O2CFMcjs.lp.TYPE_MAPPING,["binary","VARBINARY"],["bit","BOOLEAN"],["datetime","TIMESTAMP"],["datetime64","TIMESTAMP"],["float","REAL"],["hllsketch","HYPERLOGLOG"],["int","INTEGER"],["struct","ROW"],["text","VARCHAR"],["timestamptz","TIMESTAMP"],["timestampntz","TIMESTAMP"],["timetz","TIME"]])}static get ORIGINAL_TRANSFORMS(){return new Map([..._chunk2Z3O2CFMcjs.lp.TRANSFORMS,[_chunk2Z3O2CFMcjs.Um,_chunk2Z3O2CFMcjs.pp.call(void 0, "ARBITRARY")],[_chunk2Z3O2CFMcjs.Zn,function(t){return this.func("APPROX_PERCENTILE",[t.args.this,t.args.weight,t.args.quantile,t.args.accuracy])}],[_chunk2Z3O2CFMcjs.vm,_chunk2Z3O2CFMcjs.pp.call(void 0, "MAX_BY")],[_chunk2Z3O2CFMcjs.wm,_chunk2Z3O2CFMcjs.pp.call(void 0, "MIN_BY")],[_chunk2Z3O2CFMcjs.Mf,_chunk2Z3O2CFMcjs.Po.call(void 0, [_chunk2Z3O2CFMcjs.jp],function(t){return`ARRAY[${this.expressions(t,{flat:!0})}]`})],[_chunk2Z3O2CFMcjs.eg,_chunk2Z3O2CFMcjs.pp.call(void 0, "ANY_MATCH")],[_chunk2Z3O2CFMcjs.hg,_chunk2Z3O2CFMcjs.pp.call(void 0, "CONCAT")],[_chunk2Z3O2CFMcjs.mg,_chunk2Z3O2CFMcjs.pp.call(void 0, "CONTAINS")],[_chunk2Z3O2CFMcjs.qg,_chunk2Z3O2CFMcjs.pp.call(void 0, "ARRAY_JOIN")],[_chunk2Z3O2CFMcjs.Om,_chunk2Z3O2CFMcjs.pp.call(void 0, "SET_AGG")],[_chunk2Z3O2CFMcjs.pg,_chunk2Z3O2CFMcjs.pp.call(void 0, "SLICE")],[_chunk2Z3O2CFMcjs.kc,_chunk2Z3O2CFMcjs.pp.call(void 0, "AT_TIMEZONE")],[_chunk2Z3O2CFMcjs.ue,function(t){return this.func("BITWISE_AND",[t.args.this,t.args.expression])}],[_chunk2Z3O2CFMcjs.ve,function(t){return this.func("BITWISE_ARITHMETIC_SHIFT_LEFT",[t.args.this,t.args.expression])}],[_chunk2Z3O2CFMcjs.Te,function(t){return this.func("BITWISE_NOT",[t.args.this])}],[_chunk2Z3O2CFMcjs.we,function(t){return this.func("BITWISE_OR",[t.args.this,t.args.expression])}],[_chunk2Z3O2CFMcjs.xe,function(t){return this.func("BITWISE_ARITHMETIC_SHIFT_RIGHT",[t.args.this,t.args.expression])}],[_chunk2Z3O2CFMcjs.ye,function(t){return this.func("BITWISE_XOR",[t.args.this,t.args.expression])}],[_chunk2Z3O2CFMcjs.Cg,_chunk2Z3O2CFMcjs.Po.call(void 0, [_chunk2Z3O2CFMcjs.ap])],[_chunk2Z3O2CFMcjs.bh,()=>"CURRENT_TIME"],[_chunk2Z3O2CFMcjs.fh,()=>"CURRENT_TIMESTAMP"],[_chunk2Z3O2CFMcjs.kh,()=>"CURRENT_USER"],[_chunk2Z3O2CFMcjs.uh,yt("DATE_ADD")],[_chunk2Z3O2CFMcjs.xh,function(t){return this.func("DATE_DIFF",[_chunk2Z3O2CFMcjs.uq.call(void 0, t),t.args.expression,t.args.this])}],[_chunk2Z3O2CFMcjs.ji,_chunk2Z3O2CFMcjs.Xp],[_chunk2Z3O2CFMcjs.ki,function(t){return`CAST(DATE_FORMAT(${this.sql(t,"this")}, ${this.dialect._constructor.DATEINT_FORMAT}) AS INT)`}],[_chunk2Z3O2CFMcjs.wh,yt("DATE_ADD",{negateInterval:!0})],[_chunk2Z3O2CFMcjs.Fh,function(t){return`((${this.func("DAY_OF_WEEK",[t.args.this])} % 7) + 1)`}],[_chunk2Z3O2CFMcjs.Gh,_chunk2Z3O2CFMcjs.pp.call(void 0, "DAY_OF_WEEK")],[_chunk2Z3O2CFMcjs.ni,function(t){return _chunk2Z3O2CFMcjs.Yp.call(this,t,"FROM_UTF8")}],[_chunk2Z3O2CFMcjs.ri,function(t){return`CAST(DATE_PARSE(CAST(${this.sql(t,"this")} AS VARCHAR), ${this.dialect._constructor.DATEINT_FORMAT}) AS DATE)`}],[_chunk2Z3O2CFMcjs.si,function(t){return _chunk2Z3O2CFMcjs.Yp.call(this,t,"TO_UTF8")}],[_chunk2Z3O2CFMcjs.kd,function(t){return`format=${this.sql(new (0, _chunk2Z3O2CFMcjs.$c)({this:t.name,isString:!0}))}`}],[_chunk2Z3O2CFMcjs.Xm,ke],[_chunk2Z3O2CFMcjs.lc,function(t){return`WITH_TIMEZONE(${this.sql(t,"this")}, ${this.sql(t,"zone")}) AT TIME ZONE 'UTC'`}],[_chunk2Z3O2CFMcjs.bg,_chunk2Z3O2CFMcjs.Jq],[_chunk2Z3O2CFMcjs.Mi,_chunk2Z3O2CFMcjs.Jq],[_chunk2Z3O2CFMcjs._i,_chunk2Z3O2CFMcjs.rp.call(void 0, )],[_chunk2Z3O2CFMcjs.Ie,_chunk2Z3O2CFMcjs.vp],[_chunk2Z3O2CFMcjs.aj,ui],[_chunk2Z3O2CFMcjs.Ym,ke],[_chunk2Z3O2CFMcjs.Qh,function(t){return this.func("LAST_DAY_OF_MONTH",[t.args.this])}],[_chunk2Z3O2CFMcjs.ne,mi],[_chunk2Z3O2CFMcjs.Lj,_chunk2Z3O2CFMcjs.Up],[_chunk2Z3O2CFMcjs.Rj,function(t){return _chunk2Z3O2CFMcjs.kp.call(this,t,"insCost","delCost","subCost","maxDist"),_chunk2Z3O2CFMcjs.pp.call(void 0, "LEVENSHTEIN_DISTANCE").call(this,t)}],[_chunk2Z3O2CFMcjs.rn,_chunk2Z3O2CFMcjs.pp.call(void 0, "BOOL_AND")],[_chunk2Z3O2CFMcjs.qn,_chunk2Z3O2CFMcjs.pp.call(void 0, "BOOL_OR")],[_chunk2Z3O2CFMcjs.Yb,_chunk2Z3O2CFMcjs.zp],[_chunk2Z3O2CFMcjs.An,Si],[_chunk2Z3O2CFMcjs.Ik,_chunk2Z3O2CFMcjs.fq],[_chunk2Z3O2CFMcjs.Jk,_chunk2Z3O2CFMcjs.fq],[_chunk2Z3O2CFMcjs.Mj,_chunk2Z3O2CFMcjs.Vp],[_chunk2Z3O2CFMcjs.Vb,li],[_chunk2Z3O2CFMcjs.Dd,function(t){return this.nakedProperty(t)}],[_chunk2Z3O2CFMcjs.Wd,_chunk2Z3O2CFMcjs.Po.call(void 0, [_chunk2Z3O2CFMcjs.ip,_chunk2Z3O2CFMcjs.To,_chunk2Z3O2CFMcjs.So,_chunk2Z3O2CFMcjs.Yo.call(void 0, 1),_chunk2Z3O2CFMcjs.bp,Di])],[_chunk2Z3O2CFMcjs.kl,Ai],[_chunk2Z3O2CFMcjs.tl,function(t){return _chunk2Z3O2CFMcjs.Ep.call(this,t,{supportsOccurrence:!0})}],[_chunk2Z3O2CFMcjs.wl,function(t){return`CAST(${wt.call(this,t)} AS DATE)`}],[_chunk2Z3O2CFMcjs.zl,_chunk2Z3O2CFMcjs.pp.call(void 0, "SPLIT_TO_MAP")],[_chunk2Z3O2CFMcjs.xl,wt],[_chunk2Z3O2CFMcjs.Dl,_chunk2Z3O2CFMcjs.Fp],[_chunk2Z3O2CFMcjs.Tb,_chunk2Z3O2CFMcjs.Po.call(void 0, [_chunk2Z3O2CFMcjs.Ro])],[_chunk2Z3O2CFMcjs.Zh,function(t){return`CAST(${this.sql(t.args.this)} AS TIMESTAMP)`}],[_chunk2Z3O2CFMcjs._h,yt("DATE_ADD")],[_chunk2Z3O2CFMcjs.bi,_chunk2Z3O2CFMcjs.Qp.call(void 0, )],[_chunk2Z3O2CFMcjs.Jl,_chunk2Z3O2CFMcjs.Wp],[_chunk2Z3O2CFMcjs.Kl,_chunk2Z3O2CFMcjs.Wp],[_chunk2Z3O2CFMcjs.Ll,function(t){return this.func("TO_UNIXTIME",[this.func("DATE_PARSE",[t.args.this,this.dialect._constructor.TIME_FORMAT])])}],[_chunk2Z3O2CFMcjs.Hl,function(t){return this.func("DATE_FORMAT",[t.args.this,this.formatTime(t)])}],[_chunk2Z3O2CFMcjs.Il,_chunk2Z3O2CFMcjs.pp.call(void 0, "TO_UNIXTIME")],[_chunk2Z3O2CFMcjs.Qf,function(t){return this.func("DATE_FORMAT",[t.args.this,this.formatTime(t)])}],[_chunk2Z3O2CFMcjs.bn,_chunk2Z3O2CFMcjs.Po.call(void 0, [_chunk2Z3O2CFMcjs.ap])],[_chunk2Z3O2CFMcjs.Tl,function(t){return`CAST(SUBSTR(REPLACE(CAST(${this.sql(t,"this")} AS VARCHAR), '-', ''), 1, 8) AS INT)`}],[_chunk2Z3O2CFMcjs.Nl,fi],[_chunk2Z3O2CFMcjs.Ol,xi],[_chunk2Z3O2CFMcjs.Pl,hi],[_chunk2Z3O2CFMcjs.Ul,_chunk2Z3O2CFMcjs.pp.call(void 0, "FROM_HEX")],[_chunk2Z3O2CFMcjs.Yl,function(t){return`DATE_FORMAT(FROM_UNIXTIME(${this.sql(t,"this")}), ${this.formatTime(t)})`}],[_chunk2Z3O2CFMcjs.Zl,gi],[_chunk2Z3O2CFMcjs._l,function(t){return`CAST(FROM_UNIXTIME(${this.sql(t,"this")}) AS VARCHAR)`}],[_chunk2Z3O2CFMcjs.Sn,_chunk2Z3O2CFMcjs.pp.call(void 0, "VAR_POP")],[_chunk2Z3O2CFMcjs.Va,_chunk2Z3O2CFMcjs.Po.call(void 0, [_chunk2Z3O2CFMcjs.$o])],[_chunk2Z3O2CFMcjs.Wa,_chunk2Z3O2CFMcjs.Po.call(void 0, [_chunk2Z3O2CFMcjs._o])],[_chunk2Z3O2CFMcjs.Vk,_chunk2Z3O2CFMcjs.pp.call(void 0, "TRUNCATE")],[_chunk2Z3O2CFMcjs.mn,_chunk2Z3O2CFMcjs.mq],[_chunk2Z3O2CFMcjs.hk,_chunk2Z3O2CFMcjs.pp.call(void 0, "MD5")],[_chunk2Z3O2CFMcjs.fl,_chunk2Z3O2CFMcjs.pp.call(void 0, "SHA1")],[_chunk2Z3O2CFMcjs.hl,_chunk2Z3O2CFMcjs.pp.call(void 0, "SHA1")],[_chunk2Z3O2CFMcjs.gl,_chunk2Z3O2CFMcjs.Hq],[_chunk2Z3O2CFMcjs.il,_chunk2Z3O2CFMcjs.Iq]])}static get RESERVED_KEYWORDS(){return new Set(["alter","and","as","between","by","case","cast","constraint","create","cross","current_time","current_timestamp","deallocate","delete","describe","distinct","drop","else","end","escape","except","execute","exists","extract","false","for","from","full","group","having","in","inner","insert","intersect","into","is","join","left","like","natural","not","undefined","on","or","order","outer","prepare","right","select","table","then","true","union","using","values","when","where","with"])}extractSql(t){let e=t.name.toUpperCase();if(!e.startsWith("EPOCH"))return super.extractSql(t);let s;e==="EPOCH_MILLISECOND"?s=10**3:e==="EPOCH_MICROSECOND"?s=10**6:e==="EPOCH_NANOSECOND"&&(s=10**9);let E=t.args.expression,c=new (0, _chunk2Z3O2CFMcjs.Cg)({this:E,to:_chunk2Z3O2CFMcjs.ac.build("TIMESTAMP")}),p=new (0, _chunk2Z3O2CFMcjs.Il)({this:c});return s&&(p=new (0, _chunk2Z3O2CFMcjs.Qe)({this:p,expression:new (0, _chunk2Z3O2CFMcjs.$c)({this:s.toString(),isString:!1})})),this.sql(p)}jsonFormatSql(t){let e=t.args.this,s=t.args.isJson;if(e&&!(s||e.type)&&(e=_chunk2Z3O2CFMcjs.Y.call(void 0, e,{dialect:this.dialect})),!(s||_optionalChain([e, 'optionalAccess', _39 => _39.isType, 'call', _40 => _40("json")]))){let E=new (0, _chunk2Z3O2CFMcjs.Cg)({to:"json".toUpperCase()});_optionalChain([e, 'optionalAccess', _41 => _41.replace, 'call', _42 => _42(E)]),E.setArgKey("this",e)}return this.functionFallbackSql(t)}md5Sql(t){let e=t.args.this;return!_optionalChain([e, 'optionalAccess', _43 => _43.type])&&e&&(e=_chunk2Z3O2CFMcjs.Y.call(void 0, e,{dialect:this.dialect})),_optionalChain([e, 'optionalAccess', _44 => _44.isType, 'call', _45 => _45(_chunk2Z3O2CFMcjs.ac.TEXT_TYPES)])&&(e=new (0, _chunk2Z3O2CFMcjs.si)({this:e,charset:new (0, _chunk2Z3O2CFMcjs.$c)({this:"utf-8",isString:!0})})),this.func("LOWER",[this.func("TO_HEX",[this.func("MD5",[this.sql(e)])])])}strToUnixSql(t){let e=t.args.this,s=new (0, _chunk2Z3O2CFMcjs.Cg)({this:e,to:"VARCHAR"}),E=_optionalChain([e, 'optionalAccess', _46 => _46.args, 'access', _47 => _47.isString])?new (0, _chunk2Z3O2CFMcjs.Cg)({this:e,to:"timestamp".toUpperCase()}):e,c=this.func("DATE_PARSE",[s,this.formatTime(t)]),p=this.func("DATE_FORMAT",[E,this.formatTime(t)]),L=this.func("PARSE_DATETIME",[p,this.formatTime(t,_chunkXZQFOICXcjs.c.INVERSE_TIME_MAPPING,_chunkXZQFOICXcjs.c.INVERSE_TIME_TRIE)]),tt=this.func("COALESCE",[this.func("TRY",[c]),L]);return this.func("TO_UNIXTIME",[tt])}bracketSql(t){return t.args.safe?this.func("ELEMENT_AT",[t.args.this,t.args.this instanceof _chunk2Z3O2CFMcjs.Ca?_chunk2Z3O2CFMcjs.ca.call(void 0, _chunk2Z3O2CFMcjs.la.call(void 0, t.args.this,_nullishCoalesce(t.args.expressions, () => ([])),1-(t.args.offset||0),{dialect:this.dialect}),0):void 0]):super.bracketSql(t)}structSql(t){t.type||_chunk2Z3O2CFMcjs.Y.call(void 0, t,{dialect:this.dialect});let e=[],s=[],E=!1;for(let p of t.args.expressions||[])if(p instanceof _chunk2Z3O2CFMcjs.Fe){if(_chunk2Z3O2CFMcjs.Lo.call(void 0, p.type,"unknown"))E=!0;else{let L=typeof p.type=="string"?new (0, _chunk2Z3O2CFMcjs.ac)({this:p.type}):p.type;s.push(`${this.sql(p,"this")} ${this.sql(L)}`)}e.push(this.sql(p,"expression"))}else e.push(this.sql(p));let c=_optionalChain([t, 'access', _48 => _48.args, 'access', _49 => _49.expressions, 'optionalAccess', _50 => _50.length]);return!c||s.length!==c?(E&&this.unsupported("Cannot convert untyped key-value definitions (try annotate_types)."),this.func("ROW",e)):`CAST(ROW(${e.join(", ")}) AS ROW(${s.join(", ")}))`}intervalSql(t){let e=t.text("unit").toUpperCase();return t.args.this&&e.startsWith("WEEK")?`(${t.args.this.name} * INTERVAL '7' DAY)`:super.intervalSql(t)}transactionSql(t){let e=t.args.modes;return`START TRANSACTION${e?` ${e.join(", ")}`:""}`}createSql(t){let e=t.args.this instanceof _chunk2Z3O2CFMcjs.Ca?t.args.this:void 0;return t.args.kind==="view"&&_optionalChain([e, 'optionalAccess', _51 => _51.args, 'access', _52 => _52.expressions])&&e.setArgKey("expressions",void 0),super.createSql(t)}deleteSql(t){let e=t.args.tables||[t.args.this];if(1<e.length)return super.deleteSql(t);let s=e[0];if(t.setArgKey("this",s),t.setArgKey("tables",void 0),s instanceof _chunk2Z3O2CFMcjs.Tb){let E=s.args.alias;E&&(E.pop(),t=t.transform(_chunk2Z3O2CFMcjs.dp))}return super.deleteSql(t)}jsonExtractSql(t){let e=_nullishCoalesce(this.dialect.settings.variantExtractIsJsonExtract, () => (!0));if(!t.args.variantExtract||e)return this.func("JSON_EXTRACT",[t.args.this,t.args.expression,...t.args.expressions||[]]);let s=this.sql(t,"this"),E=[];for(let c of _optionalChain([_chunk2Z3O2CFMcjs.p.call(void 0, t.args.expression,_chunk2Z3O2CFMcjs.Ca), 'optionalAccess', _53 => _53.args, 'access', _54 => _54.expressions, 'optionalAccess', _55 => _55.slice, 'call', _56 => _56(1)])||[]){if(!(c instanceof _chunk2Z3O2CFMcjs.ie)){this.unsupported(`Cannot transpile JSONPath segment '${c}' to ROW access`);continue}let p=_optionalChain([c, 'access', _57 => _57.args, 'access', _58 => _58.this, 'optionalAccess', _59 => _59.toString, 'call', _60 => _60()]);/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(_nullishCoalesce(p, () => ("")))||(p=`"${p}"`),E.push(`.${p}`)}return`${s}${E.join("")}`}groupConcatSql(t){return this.func("ARRAY_JOIN",[this.func("ARRAY_AGG",[t.args.this]),t.args.separator])}};R=_chunk2Z3O2CFMcjs.a.call(void 0, si),_chunk2Z3O2CFMcjs.d.call(void 0, R,10,"AFTER_HAVING_MODIFIER_TRANSFORMS",ii,a),_chunk2Z3O2CFMcjs.d.call(void 0, R,10,"STRUCT_DELIMITER",ei,a),_chunk2Z3O2CFMcjs.d.call(void 0, R,10,"PROPERTIES_LOCATION",ri,a),_chunk2Z3O2CFMcjs.d.call(void 0, R,10,"TYPE_MAPPING",ti,a),_chunk2Z3O2CFMcjs.d.call(void 0, R,10,"ORIGINAL_TRANSFORMS",je,a),_chunk2Z3O2CFMcjs.d.call(void 0, R,10,"RESERVED_KEYWORDS",ze,a),_chunk2Z3O2CFMcjs.b.call(void 0, R,a),_chunk2Z3O2CFMcjs.c.call(void 0, R,3,a),a.SUPPORTS_DECODE_CASE=!1,a.SELECT_KINDS=[],a.INTERVAL_ALLOWS_PLURAL_FORM=!1,a.JOIN_HINTS=!1,a.TABLE_HINTS=!1,a.QUERY_HINTS=!1,a.IS_BOOL_ALLOWED=!1,a.TZ_TO_WITH_TIME_ZONE=!0,a.NVL2_SUPPORTED=!1,a.LIMIT_ONLY_LITERALS=!0,a.SUPPORTS_SINGLE_ARG_CONCAT=!1,a.LIKE_PROPERTY_INSIDE_SCHEMA=!0,a.MULTI_ARG_DISTINCT=!1,a.SUPPORTS_TO_NUMBER=!1,a.HEX_FUNC="TO_HEX",a.PARSE_JSON_NAME="JSON_PARSE",a.PAD_FILL_PATTERN_IS_REQUIRED=!0,a.EXCEPT_INTERSECT_SUPPORT_ALL_CLAUSE=!1,a.SUPPORTS_MEDIAN=!1,a.ARRAY_SIZE_NAME="CARDINALITY";var ni,ai,Ei,oi,Ti,ci,D,T= exports.q =class extends(ci=_chunk2Z3O2CFMcjs.op,Ti=[_chunk2Z3O2CFMcjs.r],oi=[_chunk2Z3O2CFMcjs.r],Ei=[_chunk2Z3O2CFMcjs.r],ai=[_chunk2Z3O2CFMcjs.r],ni=[_chunk2Z3O2CFMcjs.r],ci){static get NULL_ORDERING(){return"nulls_are_last"}static get EXPRESSION_METADATA(){return new Map(m.EXPRESSION_METADATA)}static get TIME_FORMAT(){return _chunkR7C3ZHVKcjs.j.TIME_FORMAT}static get TIME_MAPPING(){return _chunkR7C3ZHVKcjs.j.TIME_MAPPING}static get NORMALIZATION_STRATEGY(){return"caseInsensitive"}static get SUPPORTED_SETTINGS(){return new Set([..._chunk2Z3O2CFMcjs.op.SUPPORTED_SETTINGS,"variantExtractIsJsonExtract"])}};D=_chunk2Z3O2CFMcjs.a.call(void 0, ci),_chunk2Z3O2CFMcjs.d.call(void 0, D,10,"NULL_ORDERING",Ti,T),_chunk2Z3O2CFMcjs.d.call(void 0, D,10,"TIME_FORMAT",oi,T),_chunk2Z3O2CFMcjs.d.call(void 0, D,10,"TIME_MAPPING",Ei,T),_chunk2Z3O2CFMcjs.d.call(void 0, D,10,"NORMALIZATION_STRATEGY",ai,T),_chunk2Z3O2CFMcjs.d.call(void 0, D,10,"SUPPORTED_SETTINGS",ni,T),_chunk2Z3O2CFMcjs.b.call(void 0, D,T),_chunk2Z3O2CFMcjs.c.call(void 0, D,3,T),T.DIALECT_NAME="presto",T.UNNEST_REQUIRES_CROSS_JOIN=!0,T.INDEX_OFFSET=1,T.STRICT_STRING_CONCAT=!0,T.SUPPORTS_SEMI_ANTI_JOIN=!1,T.TYPED_DIVISION=!0,T.TABLESAMPLE_SIZE_IS_PERCENT=!0,T.LOG_BASE_FIRST=void 0,T.SUPPORTS_VALUES_DEFAULT=!1,T.LEAST_GREATEST_IGNORES_NULLS=!1,T.Tokenizer=I,T.Parser=f,T.Generator=a;_chunk2Z3O2CFMcjs.op.register("presto",T);exports.a = ui; exports.b = Ai; exports.c = li; exports.d = Si; exports.e = wt; exports.f = hi; exports.g = fi; exports.h = xi; exports.i = Ri; exports.j = Ii; exports.k = ke; exports.l = gi; exports.m = Oi; exports.n = yt; exports.o = mi; exports.p = Di; exports.q = T;
2
+ //# sourceMappingURL=chunk-YSS2WVCM.cjs.map