@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,2 @@
1
+ import{$c as x,$g as ir,$p as he,Ae as vt,Ap as oe,Aq as Ct,Bb as qt,Bg as sr,Bo as Nt,Bq as ge,Ca as g,Cg as _,Ck as mr,Cp as pe,Cq as De,Dl as qr,Ec as Bt,Eo as re,Ep as Te,Fj as Or,Fp as ce,Gd as Yt,Gp as dt,Hl as Tt,Hp as ue,Hq as Le,Ic as wt,Il as Ur,Iq as Me,Je as q,Jg as nr,Kc as Ft,Ke as Xt,Kk as B,Kl as Gr,Kp as b,Lk as gr,Lo as ee,Md as Ht,Mf as jt,Mi as hr,Mk as Dr,Ml as Br,Mm as F,Nc as bt,Nl as ct,Od as $t,Oj as _r,Ol as wr,Pc as H,Pi as it,Po as M,Qf as Qt,Qh as Sr,Qp as Se,Qq as Pe,Rj as at,Rn as Zr,Sn as zr,Tb as Ut,Te as Wt,To as se,Tq as ye,Uc as $,Uk as Lr,Um as Yr,Uq as qe,Ve as z,Vl as Fr,Wd as K,Wh as lr,Wp as le,Xj as dr,Xp as Ae,Xq as J,Y as Dt,Yb as Gt,Yc as Jt,Yg as rt,Za as D,Zc as k,Zl as w,Zo as Ot,_d as v,_p as Re,a as d,ac as R,ae as kt,aq as xe,b as C,bg as Zt,bi as Ar,bn as Hr,bp as ne,bq as fe,c as m,ca as u,cm as br,d as E,db as O,dm as ut,fe as X,fg as zt,fh as et,fk as Cr,fn as $r,gg as tt,gl as L,gm as St,go as It,hg as tr,ie as W,ii as st,il as Mr,in as kr,iq as Ie,je as j,jh as ar,ji as Rr,jo as te,jq as Ne,ke as Q,kh as Er,lh as or,lp as P,lq as Oe,me as Vt,mn as Vr,mq as _e,ng as rr,nm as Jr,nn as ht,ob as Mt,om as lt,on as xt,op as _t,pb as Pt,pl as Pr,pm as At,pn as ft,pp as c,qh as pr,qm as Rt,qn as Kr,r as o,rb as yt,rn as vr,rq as de,sj as xr,sn as Xr,ta as Lt,tj as fr,tl as yr,tp as ie,ud as V,uh as Tr,uj as U,vn as Wr,wg as er,wh as cr,wj as G,wl as ot,wp as ae,xh as ur,xj as Ir,xl as pt,xn as jr,xq as Ce,ye as Z,yi as nt,yj as Nr,yn as Qr,yq as me,za as A,ze as Kt,zk as Et,zp as Ee,zq as y}from"./chunk-KCNOE4DZ.js";var Rs={MICROSECOND:" * 1000000",MILLISECOND:" * 1000",SECOND:"",MINUTE:" / 60",HOUR:" / 3600",DAY:" / 86400"};function mt(e){return function(n){let t=n;t instanceof ct&&(t=de(t));let r=this.sql(t,"this"),s=t.args.unit,i=t.args.expression&&this.simplifyUnlessLiteral(t.args.expression);return i instanceof x?i.setArgKey("isString",!0):i&&i.isNumber?i=x.string(i.toValue()):this.unsupported("Cannot add non-literal"),`${r} ${e} ${this.sql(new X({this:i,unit:s}))}`}}function Ue(e){let n=e.text("unit").toUpperCase(),t=Rs[n],r=`CAST(${this.sql(e,"this")} AS TIMESTAMP)`,s=`CAST(${this.sql(e,"expression")} AS TIMESTAMP)`;if(t!==void 0)return`CAST(EXTRACT(epoch FROM ${r} - ${s})${t} AS BIGINT)`;let i=`AGE(${r}, ${s})`,p;return n==="WEEK"?p=`EXTRACT(days FROM (${r} - ${s})) / 7`:n==="MONTH"?p=`EXTRACT(year FROM ${i}) * 12 + EXTRACT(month FROM ${i})`:n==="QUARTER"?p=`EXTRACT(year FROM ${i}) * 4 + EXTRACT(month FROM ${i}) / 3`:n==="YEAR"?p=`EXTRACT(year FROM ${i})`:p=i,`CAST(${p} AS BIGINT)`}function hs(e){let n=this.sql(e,"this"),t=this.sql(e,"start"),r=this.sql(e,"length"),s=t?` FROM ${t}`:"",i=r?` FOR ${r}`:"";return`SUBSTRING(${n}${s}${i})`}function xs(e){let n=e.find(Ft);if(n&&e instanceof D){let t=e.args.constraints||[];e.setArgKey("constraints",t.filter(s=>s!==n.parent));let r=e.args.kind;r instanceof R&&(r.isType("int")?r.replace(new R({this:"serial"})):r.isType("smallint")?r.replace(new R({this:"smallserial"})):r.isType("bigint")&&r.replace(new R({this:"bigserial"})))}return e}function fs(e){if(!(e instanceof D))return e;let n=e.args.kind;if(!(n instanceof R))return e;let t;if(n.isType("serial")?t=new R({this:"int"}):n.isType("smallserial")?t=new R({this:"smallint"}):n.isType("bigserial")&&(t=new R({this:"bigint"})),t){n.replace(t);let r=e.args.constraints||[],s=new O({kind:new H({this:!1})}),i=new O({kind:new $({})});r.some(p=>p instanceof O&&p.args.kind instanceof $)||r.unshift(i),r.some(p=>p instanceof O&&p.args.kind instanceof H)||r.unshift(s),e.setArgKey("constraints",r)}return e}function Is(e){let n=u(e,2);return n&&(n instanceof x&&n.isString?e[2]=It(n.args.this):n instanceof X&&!n.args.unit&&(e[2]=It(n.args.this?.args.this))),F.fromArgList(e)}function Ns(e){return e.length===1?w.fromArgList(e):b(pt,{dialect:"postgres"})(e)}function Ge(e,n){return function(t){return t.args.onlyJsonTypes?Ct(e,{quotedIndex:!1,op:n}).call(this,t):Ct(e).call(this,t)}}function Os(e){let n;if(3<e.length){let t=e[e.length-1];t instanceof x&&t.isNumber||t instanceof x&&t.isString&&(n=B.fromArgList(e.slice(0,-1)),n.setArgKey("modifiers",t))}return n=n||B.fromArgList(e),n.setArgKey("singleReplace",!0),n}function _s(e){let n=e.args.scale,t=e.args.this;if(n===void 0||n?.toValue()===w.SECONDS.toValue())return this.func("TO_TIMESTAMP",[t,this.formatTime(e)]);let r=new Kt({this:t?.copy(),expression:new Et({this:x.number(10),expression:n?.copy()})});return this.func("TO_TIMESTAMP",[r,this.formatTime(e)])}function ds(e){let n=e.pop();return new at({this:u(e,0),expression:u(e,1),insCost:u(e,2),delCost:u(e,3),subCost:u(e,4),maxDist:n})}function Cs(e){let n=e.args.maxDist?"LEVENSHTEIN_LESS_EQUAL":"LEVENSHTEIN";return c(n).call(this,e)}function ms(e){return this.dialect.version.major<16?Oe.call(this,e):c("ANY_VALUE").call(this,e)}function gs(e){let n=this.sql(e,"this"),t=this.sql(e,"decimals");if(!t)return this.func("ROUND",[n]);let r=n;if(e.args.this instanceof g&&e.args.this.isType("double")){let s=R.build("decimal",{expressions:e.args.expressions});r=this.sql(new _({this:n,to:s}))}return this.func("ROUND",[r,t])}var Be,we,Fe,be,Je,Ye,He,$e,ke,f,h=class extends(ke=J,$e=[o],He=[o],Ye=[o],Je=[o],be=[o],Fe=[o],we=[o],Be=[o],ke){static get BIT_STRINGS(){return[["b'","'"],["B'","'"],"0b"]}static get HEX_STRINGS(){return[["x'","'"],["X'","'"],"0x"]}static get BYTE_STRINGS(){return[["e'","'"],["E'","'"]]}static get BYTE_STRING_ESCAPES(){return["'","\\"]}static get HEREDOC_STRINGS(){return["$"]}static get ORIGINAL_KEYWORDS(){let{"/*+":t,DIV:r,...s}=J.KEYWORDS;return{...s,"~":"rlike","@@":"dat","@>":"atGt","<@":"ltAt","?&":"qmarkAmp","?|":"qmarkPipe","#-":"hashDash","|/":"pipeSlash","||/":"dpipeSlash",BEGIN:"begin",BIGSERIAL:"bigserial","CONSTRAINT TRIGGER":"command",CSTRING:"pseudoType",DECLARE:"command",DO:"command",EXEC:"command",HSTORE:"hstore",INT8:"bigint",MONEY:"money",NAME:"name",OID:"objectIdentifier",ONLY:"only",POINT:"point",REFRESH:"command",REINDEX:"command",RESET:"command",SERIAL:"serial",SMALLSERIAL:"smallserial",TEMP:"temporary",REGCLASS:"objectIdentifier",REGCOLLATION:"objectIdentifier",REGCONFIG:"objectIdentifier",REGDICTIONARY:"objectIdentifier",REGNAMESPACE:"objectIdentifier",REGOPER:"objectIdentifier",REGOPERATOR:"objectIdentifier",REGPROC:"objectIdentifier",REGPROCEDURE:"objectIdentifier",REGROLE:"objectIdentifier",REGTYPE:"objectIdentifier",FLOAT:"double",XML:"xml",VARIADIC:"variadic",INOUT:"inout"}}static get SINGLE_TOKENS(){return{...J.SINGLE_TOKENS,$:"heredocString"}}static get VAR_SINGLE_TOKENS(){return new Set(["$"])}};f=d(ke),E(f,10,"BIT_STRINGS",$e,h),E(f,10,"HEX_STRINGS",He,h),E(f,10,"BYTE_STRINGS",Ye,h),E(f,10,"BYTE_STRING_ESCAPES",Je,h),E(f,10,"HEREDOC_STRINGS",be,h),E(f,10,"ORIGINAL_KEYWORDS",Fe,h),E(f,10,"SINGLE_TOKENS",we,h),E(f,10,"VAR_SINGLE_TOKENS",Be,h),C(f,h),m(f,3,h),h.HEREDOC_TAG_IS_IDENTIFIER=!0,h.HEREDOC_STRING_ALTERNATIVE="parameter";var Ve,Ke,ve,Xe,We,je,Qe,Ze,ze,ts,rs,es,ss,ns,is,as,S,T=class extends(as=A,is=[o],ns=[o],ss=[o],es=[o],rs=[o],ts=[o],ze=[o],Ze=[o],Qe=[o],je=[o],We=[o],Xe=[o],ve=[o],Ke=[o],Ve=[o],as){static get NO_PAREN_FUNCTIONS(){let t={...A.NO_PAREN_FUNCTIONS};return t.currentSchema=ar,t.sessionUser=pr,t.currentCatalog=or,t}static get PROPERTY_PARSERS(){return(()=>{let t={...A.PROPERTY_PARSERS,SET:function(){return this.expression(Yt,{this:this.parseSet()})}};return delete t.INPUT,t})()}static get PLACEHOLDER_PARSERS(){return{...A.PLACEHOLDER_PARSERS,placeholder:function(){return this.expression(v,{jdbc:!0})},mod:function(){return this.parseQueryParameter()}}}static get FUNCTIONS(){return{...A.FUNCTIONS,ARRAY_PREPEND:t=>new tt({this:u(t,1),expression:u(t,0)}),BIT_AND:t=>lt.fromArgList(t),BIT_OR:t=>At.fromArgList(t),BIT_XOR:t=>Rt.fromArgList(t),VERSION:t=>rt.fromArgList(t),DATE_TRUNC:Ne,DIV:t=>new _({this:Ie(q)(t),to:R.build("decimal")}),GENERATE_SERIES:Is,GET_BIT:t=>new it({this:u(t,0),expression:u(t,1),zeroIsMsb:!0}),JSON_EXTRACT_PATH:y(U),JSON_EXTRACT_PATH_TEXT:y(G),LENGTH:t=>new _r({this:u(t,0),encoding:u(t,1)}),MAKE_TIME:t=>st.fromArgList(t),MAKE_TIMESTAMP:t=>ut.fromArgList(t),NOW:t=>et.fromArgList(t),REGEXP_REPLACE:Os,TO_CHAR:b(Tt,{dialect:"postgres"}),TO_DATE:b(ot,{dialect:"postgres"}),TO_TIMESTAMP:Ns,UNNEST:t=>nt.fromArgList(t),SHA256:t=>new L({this:u(t,0),length:x.number(256)}),SHA384:t=>new L({this:u(t,0),length:x.number(384)}),SHA512:t=>new L({this:u(t,0),length:x.number(512)}),LEVENSHTEIN_LESS_EQUAL:ds,JSON_OBJECT_AGG:t=>ht.fromArgList(t),JSONB_OBJECT_AGG:t=>xt.fromArgList(t),WIDTH_BUCKET:t=>t.length===2?new St({this:u(t,0),threshold:u(t,1)}):St.fromArgList(t)}}static get NO_PAREN_FUNCTION_PARSERS(){return{...A.NO_PAREN_FUNCTION_PARSERS,VARIADIC:function(){return this.expression(Bt,{this:this.parseBitwise()})}}}static get FUNCTION_PARSERS(){return{...A.FUNCTION_PARSERS,DATE_PART:function(){return this.parseDatePart()},JSON_AGG:function(){return this.expression(ft,{this:this.parseLambda(),order:this.parseOrder()})},JSONB_EXISTS:function(){return this.parseJsonbExists()}}}static get BITWISE(){return{...A.BITWISE,hash:Z}}static get EXPONENT(){return{caret:Et}}static get RANGE_PARSERS(){return{...A.RANGE_PARSERS,damp:Lt(er),dat:function(t){return this.expression(Cr,{this:this.parseBitwise(),expressions:[t]})}}}static get STATEMENT_PARSERS(){return{...A.STATEMENT_PARSERS,end:function(){return this.parseCommitOrRollback()}}}static get UNARY_PARSERS(){return{...A.UNARY_PARSERS,rlike:function(){return this.expression(Wt,{this:this.parseUnary()})}}}static get COLUMN_OPERATORS(){return{...A.COLUMN_OPERATORS,arrow:function(t,r){return this.validateExpression(y(U,{arrowReqJsonType:this.constructor.JSON_ARROWS_REQUIRE_JSON_TYPE})([t,r]))},darrow:function(t,r){return this.validateExpression(y(G,{arrowReqJsonType:this.constructor.JSON_ARROWS_REQUIRE_JSON_TYPE})([t,r]))}}}static get ARG_MODE_TOKENS(){return new Set(["in","out","inout","variadic"])}parseParameterMode(){if(!this.matchSet(this.constructor.ARG_MODE_TOKENS,{advance:!1})||!this.next)return;let t=this.curr;if(this.tryParse(()=>(this.advance(),this.parseTypes({checkFunc:!1,allowIdentifiers:!1})),{retreat:!0})||!this.next||!this.constructor.ID_VAR_TOKENS.has(this.next.tokenType))return;if(this.tryParse(()=>(this.advance(2),this.parseTypes({checkFunc:!1,allowIdentifiers:!0})),{retreat:!0}))return t?.tokenType}createModeConstraint(t){return this.expression(k,{input:t==="in"||t==="inout",output:t==="out"||t==="inout",variadic:t==="variadic"})}parseFunctionParameter(){let t=this.parseParameterMode();t&&this.advance();let r=this.parseIdVar(),s=this.parseColumnDef(r,{computedColumn:!1});if(t&&s instanceof D){let i=this.createModeConstraint(t);s.args.constraints||s.setArgKey("constraints",[]),s.args.constraints?.unshift(new O({kind:i}))}return s}parseQueryParameter(){let t=this.match("lParen",{advance:!1})?this.parseWrapped(()=>this.parseIdVar()):void 0;return this.matchTextSeq("S"),this.expression(v,{this:t})}parseDatePart(){let t=this.parseType();this.match("comma");let r=this.parseBitwise();return t&&(t instanceof wt||t instanceof x)&&(t=re(t.name)),this.expression(lr,{this:t,expression:r})}parseUniqueKey(){}parseJsonbExists(){return this.expression(fr,{this:this.parseBitwise(),path:this.match("comma")&&this.dialect.toJsonPath(this.parseBitwise())})}parseGeneratedAsIdentity(){let t=super.parseGeneratedAsIdentity();return this.matchTextSeq("STORED")&&(t=this.expression(Jt,{this:t.args.expression})),t}parseUserDefinedType(t){let r=t;for(;this.match("dot");){let s=this.parseIdVar();s&&(r=new vt({this:r,expression:s}))}return R.build(r,{udt:!0})}static get ID_VAR_TOKENS(){return new Set([...A.ID_VAR_TOKENS,"straightJoin"])}static get TABLE_ALIAS_TOKENS(){return new Set([...A.TABLE_ALIAS_TOKENS,"straightJoin"])}};S=d(as),E(S,10,"NO_PAREN_FUNCTIONS",is,T),E(S,10,"PROPERTY_PARSERS",ns,T),E(S,10,"PLACEHOLDER_PARSERS",ss,T),E(S,10,"FUNCTIONS",es,T),E(S,10,"NO_PAREN_FUNCTION_PARSERS",rs,T),E(S,10,"FUNCTION_PARSERS",ts,T),E(S,10,"BITWISE",ze,T),E(S,10,"EXPONENT",Ze,T),E(S,10,"RANGE_PARSERS",Qe,T),E(S,10,"STATEMENT_PARSERS",je,T),E(S,10,"UNARY_PARSERS",We,T),E(S,10,"COLUMN_OPERATORS",Xe,T),E(S,10,"ARG_MODE_TOKENS",ve,T),E(S,10,"ID_VAR_TOKENS",Ke,T),E(S,10,"TABLE_ALIAS_TOKENS",Ve,T),C(S,T),m(S,3,T),T.SUPPORTS_OMITTED_INTERVAL_SPAN_UNIT=!0,T.JSON_ARROWS_REQUIRE_JSON_TYPE=!0;var Es,os,ps,Ts,cs,us,I,a=class extends(us=P,cs=[o],Ts=[o],ps=[o],os=[o],Es=[o],us){static get AFTER_HAVING_MODIFIER_TRANSFORMS(){let t=new Map(super.AFTER_HAVING_MODIFIER_TRANSFORMS);return["cluster","distribute","sort"].forEach(r=>t.delete(r)),t}static get SUPPORTED_JSON_PATH_PARTS(){return new Set([W,j,Q])}static get TYPE_MAPPING(){return new Map([...P.TYPE_MAPPING,["tinyint","SMALLINT"],["float","REAL"],["double","DOUBLE PRECISION"],["binary","BYTEA"],["varbinary","BYTEA"],["rowversion","BYTEA"],["datetime","TIMESTAMP"],["timestampntz","TIMESTAMP"],["blob","BYTEA"]])}lateralSql(t){let r=super.lateralSql(t);return t.args.crossApply!==void 0&&(r=`${r} ON TRUE`),r}jsonbExtractSql(t){return this.binary(t,"#>")}jsonbExtractScalarSql(t){return this.binary(t,"#>>")}explodeSql(t){return this.func("UNNEST",[t.args.this,...t.args.expressions||[]])}static get ORIGINAL_TRANSFORMS(){let t=new Map([...P.TRANSFORMS,[Yr,ms],[tr,ue("ARRAY_CAT")],[rr,De],[zt,dt("ARRAY_APPEND")],[tt,dt("ARRAY_PREPEND",{swapParams:!0})],[lt,c("BIT_AND")],[At,c("BIT_OR")],[Z,function(r){return this.binary(r,"#")}],[Rt,c("BIT_XOR")],[D,M([xs,fs])],[ir,ae],[et,()=>"CURRENT_TIMESTAMP"],[Er,()=>"CURRENT_USER"],[rt,c("VERSION")],[Tr,mt("+")],[ur,Ue],[Rr,Ae],[cr,mt("-")],[nt,c("UNNEST")],[F,c("GENERATE_SERIES")],[it,qe],[kr,function(r){return Pe.call(this,r,{funcName:"STRING_AGG",withinGroup:!1})}],[q,c("DIV")],[ft,function(r){let s=this.sql(r,"this"),i=this.sql(r,"order");return`JSON_AGG(${i?`${s}${i}`:s})`}],[U,Ge("JSON_EXTRACT_PATH","->")],[G,Ge("JSON_EXTRACT_PATH_TEXT","->>")],[Ir,function(r){return this.binary(r,"#>")}],[Nr,function(r){return this.binary(r,"#>>")}],[xr,function(r){return this.binary(r,"?")}],[Or,function(r){return this.sql(new _({this:r.args.this,to:R.build("json")}))}],[W,ge],[j,()=>""],[Q,function(r){return this.jsonPathPart(r.args.this)}],[Sr,Ce],[Kr,c("BOOL_OR")],[vr,c("BOOL_AND")],[Xr,he],[dr,pe],[Wr,Re],[Vt,me],[V,function(r){return`PARTITION BY ${this.sql(r,"this")}`}],[jr,M([Ot])],[Qr,M([Ot])],[Gt,Ee],[mr,c("RANDOM")],[gr,function(r){return this.binary(r,"~")}],[Dr,function(r){return this.binary(r,"~*")}],[B,function(r){return this.func("REGEXP_REPLACE",[r.args.this,r.args.expression,r.args.replacement,r.args.position,r.args.occurrence,ye(r)])}],[Lr,gs],[K,M([ne,se])],[L,Le],[Mr,Me],[yr,function(r){return Te.call(this,r,{funcName:"POSITION"})}],[ot,function(r){return this.func("TO_DATE",[r.args.this,this.formatTime(r)])}],[pt,function(r){return this.func("TO_TIMESTAMP",[r.args.this,this.formatTime(r)])}],[qr,ce],[Pr,hs],[st,c("MAKE_TIME")],[ut,c("MAKE_TIMESTAMP")],[Ar,Se({zone:!0})],[Gr,le],[Tt,function(r){return typeof r.args.format=="string"||r.args.format?.isString?this.func("TO_CHAR",[r.args.this,this.formatTime(r)]):this.func("TO_CHAR",[r.args.this,r.args.format])}],[Qt,function(r){return r.args.format?this.functionFallbackSql(r):this.toCharSql(r)}],[Br,fe],[Hr,oe],[ct,mt("+")],[wr,Ue],[w,_s],[br,()=>"GEN_RANDOM_UUID()"],[Ur,function(r){return this.func("DATE_PART",[x.string("epoch"),r.args.this])}],[zr,c("VAR_POP")],[Zr,c("VAR_SAMP")],[Vr,_e],[Fr,c("ASCII")],[at,Cs],[ht,c("JSON_OBJECT_AGG")],[xt,c("JSONB_OBJECT_AGG")],[$r,xe],[Mt,function(r){r.args.expressions&&0<r.args.expressions.length&&this.unsupported("Oracle-style SELECT INTO with variables is not supported in PostgreSQL");let s=r.args.temporary?" TEMPORARY":"",i=r.args.unlogged?" UNLOGGED":"",p=s||i;return`${this.seg("INTO")}${p} ${this.sql(r,"this")}`}]]);return t.delete(bt),t}static get PROPERTIES_LOCATION(){let t=new Map(P.PROPERTIES_LOCATION);return t.set(V,"postSchema"),t.set(Ht,"unsupported"),t.set($t,"unsupported"),t}schemaCommentPropertySql(t){return this.unsupported("Table comments are not supported in the CREATE statement"),""}commentColumnConstraintSql(t){return this.unsupported("Column comments are not supported in the CREATE statement"),""}columnDefSql(t,r={}){let{sep:s=" "}=r,i=t.find(k);if(i){let p=this.sql(i);i.pop();let N=super.columnDefSql(t,{sep:s});return`${p} ${N}`}return super.columnDefSql(t,{sep:s})}unnestSql(t){if(t.args.expressions?.length===1){let r=t.args.expressions[0];if(r instanceof hr){let i=new Zt({...r.args});return(t.parent instanceof Pt||t.parent instanceof qt)&&(i=te("value::date").from(new Ut({this:i}).as("_t",{table:["value"]})).subquery(t.args.alias instanceof g||typeof t.args.alias=="string"?t.args.alias:"_unnested_generate_series")),this.sql(i)}let s=r instanceof g?Dt(r,{dialect:this.dialect}):r;if(ee(s,"array<json>")){let i=s;for(;i instanceof _;){let gt=i.args.this;if(gt instanceof g)i=gt;else break}let p=this.sql(new _({this:i,to:R.build("json")})),N=this.sql(t,"alias");return N=N?` AS ${N}`:"",t.args.offset&&this.unsupported("Unsupported JSON_ARRAY_ELEMENTS with offset"),`JSON_ARRAY_ELEMENTS(${p})${N}`}}return super.unnestSql(t)}bracketSql(t){return t.args.this instanceof jt&&t.setArgKey("this",new z({this:t.args.this})),super.bracketSql(t)}matchAgainstSql(t){let r=this.sql(t,"this"),s=(t.args.expressions??[]).map(p=>`${this.sql(p)} @@ ${r}`),i=s.join(" OR ");return 1<s.length?`(${i})`:i}alterSetSql(t){let r=this.expressions(t,{flat:!0});r=r?`(${r})`:"";let s=this.sql(t,"accessMethod");s=s?`ACCESS METHOD ${s}`:"";let i=this.sql(t,"tablespace");i=i?`TABLESPACE ${i}`:"";let p=this.sql(t,"option");return`SET ${r}${s}${i}${p}`}dataTypeSql(t){if(t.isType("array")){if(t.args.expressions&&0<t.args.expressions.length){let r=this.expressions(t,{key:"values",flat:!0});return`${this.expressions(t,{flat:!0})}[${r}]`}return"ARRAY"}return t.isType(["double","float"])&&t.args.expressions&&0<t.args.expressions.length?`FLOAT(${this.expressions(t,{flat:!0})})`:super.dataTypeSql(t)}castSql(t,r={}){let{safePrefix:s}=r,i=t.args.this;return i instanceof q&&t.args.to instanceof R&&t.args.to.isType("decimal")&&!t.args.to.args.expressions?.length?this.sql(i):super.castSql(t,{safePrefix:s})}arraySql(t){let r=t.args.expressions||[],s=this.normalizeFunc("ARRAY");return r[0]instanceof K?`${s}(${this.sql(r[0])})`:`${s}${ie.call(this,t)}`}computedColumnConstraintSql(t){return`GENERATED ALWAYS AS (${this.sql(t,"this")}) STORED`}isAsciiSql(t){return`(${this.sql(t.args.this)} ~ '^[[:ascii:]]*$')`}ignoreNullsSql(t){return this.unsupported("PostgreSQL does not support IGNORE NULLS."),this.sql(t.args.this)}respectNullsSql(t){return this.unsupported("PostgreSQL does not support RESPECT NULLS."),this.sql(t.args.this)}currentSchemaSql(t){return t.args.this&&this.unsupported("Unsupported arg 'this' for CURRENT_SCHEMA"),"CURRENT_SCHEMA"}intervalSql(t){let r=t.text("unit").toLowerCase(),s=t.args.this;return r.startsWith("quarter")&&s instanceof x&&(s.setArgKey("this",(parseInt(s.args.this??"0")*3).toString()),t.args.unit?.replace(new yt({this:"MONTH"}))),super.intervalSql(t)}placeholderSql(t){if(t.args.jdbc)return"?";let r=t.args.this?`(${t.name})`:"";return`${this.constructor.NAMED_PLACEHOLDER_TOKEN}${r}s`}arrayContainsSql(t){let r=t.args.expression,s=t.args.this;if(!r)return"";let i=new nr({this:r.eq(new Jr({this:new z({this:s})})),expressions:[new kt({this:!1})]}),p=new sr({ifs:[]}).when(new Xt({this:r,expression:Nt()}),Nt()).else(i);return this.sql(p)}};I=d(us),E(I,10,"AFTER_HAVING_MODIFIER_TRANSFORMS",cs,a),E(I,10,"SUPPORTED_JSON_PATH_PARTS",Ts,a),E(I,10,"TYPE_MAPPING",ps,a),E(I,10,"ORIGINAL_TRANSFORMS",os,a),E(I,10,"PROPERTIES_LOCATION",Es,a),C(I,a),m(I,3,a),a.SUPPORTS_DECODE_CASE=!1,a.SELECT_KINDS=[],a.TRY_SUPPORTED=!1,a.SUPPORTS_UESCAPE=!1,a.SINGLE_STRING_INTERVAL=!0,a.RENAME_TABLE_WITH_DB=!1,a.LOCKING_READS_SUPPORTED=!0,a.JOIN_HINTS=!1,a.TABLE_HINTS=!1,a.QUERY_HINTS=!1,a.NVL2_SUPPORTED=!1,a.PARAMETER_TOKEN="$",a.NAMED_PLACEHOLDER_TOKEN="%",a.TABLESAMPLE_SIZE_IS_ROWS=!1,a.TABLESAMPLE_SEED_KEYWORD="REPEATABLE",a.SUPPORTS_SELECT_INTO=!0,a.JSON_TYPE_REQUIRED_FOR_EXTRACTION=!0,a.SUPPORTS_UNLOGGED_TABLES=!0,a.LIKE_PROPERTY_INSIDE_SCHEMA=!0,a.MULTI_ARG_DISTINCT=!1,a.CAN_IMPLEMENT_ARRAY_ANY=!0,a.SUPPORTS_WINDOW_EXCLUDE=!0,a.COPY_HAS_INTO_KEYWORD=!1,a.ARRAY_CONCAT_IS_VAR_LEN=!1,a.SUPPORTS_MEDIAN=!1,a.ARRAY_SIZE_DIM_REQUIRED=!0,a.SUPPORTS_BETWEEN_FLAGS=!0,a.INOUT_SEPARATOR="";var Ss,ls,As,Y,l=class extends(As=_t,ls=[o],Ss=[o],As){static get NULL_ORDERING(){return"nulls_are_large"}static get DEFAULT_FUNCTIONS_COLUMN_NAMES(){return new Map([[F.name,"generate_series"]])}static get TIME_MAPPING(){return{d:"%u",D:"%u",dd:"%d",DD:"%d",ddd:"%j",DDD:"%j",FMDD:"%-d",FMDDD:"%-j",FMHH12:"%-I",FMHH24:"%-H",FMMI:"%-M",FMMM:"%-m",FMSS:"%-S",HH12:"%I",HH24:"%H",mi:"%M",MI:"%M",mm:"%m",MM:"%m",OF:"%z",ss:"%S",SS:"%S",TMDay:"%A",TMDy:"%a",TMMon:"%b",TMMonth:"%B",TZ:"%Z",US:"%f",ww:"%U",WW:"%U",yy:"%y",YY:"%y",yyyy:"%Y",YYYY:"%Y"}}};Y=d(As),E(Y,10,"DEFAULT_FUNCTIONS_COLUMN_NAMES",ls,l),E(Y,10,"TIME_MAPPING",Ss,l),C(Y,l),m(Y,3,l),l.DIALECT_NAME="postgres",l.INDEX_OFFSET=1,l.TYPED_DIVISION=!0,l.CONCAT_COALESCE=!0,l.TIME_FORMAT="'YYYY-MM-DD HH24:MI:SS'",l.TABLESAMPLE_SIZE_IS_PERCENT=!0,l.TABLES_REFERENCEABLE_AS_COLUMNS=!0,l.Tokenizer=h,l.Parser=T,l.Generator=a;_t.register("postgres",l);export{h as a,l as b};
2
+ //# sourceMappingURL=chunk-FCGUTI7Y.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/dialects/postgres.ts"],"sourcesContent":["import {\n cache,\n} from '../port_internals';\nimport {\n Generator,\n} from '../generator';\nimport {\n Parser, binaryRangeParser,\n} from '../parser';\nimport type {\n TokenPair,\n} from '../tokens';\nimport {\n Tokenizer, TokenType,\n} from '../tokens';\nimport type {\n BracketExpr,\n LateralExpr,\n ArrayContainsExpr,\n IsAsciiExpr,\n RespectNullsExpr,\n IgnoreNullsExpr,\n AlterSetExpr,\n SchemaCommentPropertyExpr,\n UnnestExpr,\n GeneratedAsRowColumnConstraintExpr,\n} from '../expressions';\nimport {\n DataTypeExprKind,\n CastExpr,\n Expression,\n DataTypeExpr,\n DateAddExpr,\n DateSubExpr,\n DateDiffExpr,\n AnyValueExpr,\n RoundExpr,\n SubstringExpr,\n IdentifierExpr,\n BooleanExpr,\n ParenExpr,\n DotExpr,\n ComputedColumnConstraintExpr,\n DivExpr,\n select,\n CurrentTimestampExpr,\n GenerateSeriesExpr,\n ArrayExpr,\n SelectExpr,\n StrToTimeExpr,\n TimeToStrExpr,\n TryCastExpr,\n ArrayPrependExpr,\n BitwiseAndAggExpr,\n BitwiseOrAggExpr,\n BitwiseXorAggExpr,\n BitwiseXorExpr,\n CurrentVersionExpr,\n GetbitExpr,\n LevenshteinExpr,\n StrToDateExpr,\n UnixToTimeExpr,\n Sha2Expr,\n Sha2DigestExpr,\n TsOrDsAddExpr,\n TsOrDsDiffExpr,\n IntDivExpr,\n GroupConcatExpr,\n LogicalOrExpr,\n LogicalAndExpr,\n RandExpr,\n RegexpReplaceExpr,\n RegexpILikeExpr,\n RegexpLikeExpr,\n StrPositionExpr,\n TimeStrToTimeExpr,\n TimestampTruncExpr,\n VarianceExpr,\n VariancePopExpr,\n CountIfExpr,\n TimeFromPartsExpr,\n TimestampFromPartsExpr,\n DateStrToDateExpr,\n ExplodeExpr,\n ArrayAppendExpr,\n ArrayConcatExpr,\n ArrayFilterExpr,\n JsonExtractExpr,\n JsonExtractScalarExpr,\n XorExpr,\n MergeExpr,\n MinExpr,\n MaxExpr,\n PercentileContExpr,\n PercentileDiscExpr,\n JsonObjectAggExpr,\n TrimExpr,\n StructExtractExpr,\n ColumnDefExpr,\n CurrentDateExpr,\n CurrentUserExpr,\n JsonArrayAggExpr,\n JsonbObjectAggExpr,\n WidthBucketExpr,\n PlaceholderExpr,\n VariadicExpr,\n CurrentSchemaExpr,\n BitwiseNotExpr,\n IntervalExpr,\n ArrayOverlapsExpr,\n ExplodingGenerateSeriesExpr,\n AutoIncrementColumnConstraintExpr,\n GeneratedAsIdentityColumnConstraintExpr,\n ColumnConstraintExpr,\n NotNullColumnConstraintExpr,\n LiteralExpr,\n CaseExpr,\n IsExpr,\n CoalesceExpr,\n AnyExpr,\n JsonbExtractExpr,\n JsonbExtractScalarExpr,\n JsonbContainsExpr,\n JsonPathKeyExpr,\n JsonPathRootExpr,\n JsonPathSubscriptExpr,\n UuidExpr,\n TimeToUnixExpr,\n UnicodeExpr,\n PowExpr,\n MatchAgainstExpr,\n ColumnExpr,\n ExtractExpr,\n JsonbExistsExpr,\n null_,\n toInterval,\n SetConfigPropertyExpr,\n LengthExpr,\n ParseJsonExpr,\n LastDayExpr,\n MapFromEntriesExpr,\n PivotExpr,\n PartitionedByPropertyExpr,\n ToCharExpr,\n CommentColumnConstraintExpr,\n PropertiesLocation,\n TransientPropertyExpr,\n VolatilePropertyExpr,\n InOutColumnConstraintExpr,\n GenerateDateArrayExpr,\n JoinExpr,\n FromExpr,\n TableExpr,\n IntoExpr,\n isType,\n var_,\n CurrentCatalogExpr,\n SessionUserExpr,\n} from '../expressions';\nimport {\n seqGet,\n} from '../helper';\nimport {\n eliminateSemiAndAntiJoins, eliminateQualify,\n addWithinGroupForPercentiles, preprocess,\n} from '../transforms';\nimport {\n annotateTypes,\n} from '../optimizer';\nimport {\n anyValueToMaxSql,\n arrayConcatSql,\n arrayAppendSql,\n binaryFromFunction,\n boolXorSql,\n buildFormattedTime,\n buildJsonExtractPath,\n buildTimestampTrunc,\n countIfToSum,\n dateStrToDateSql,\n filterArrayUsingUnnest,\n getBitSql,\n groupConcatSql,\n maxOrGreatest,\n mergeWithoutTargetSql,\n minOrLeast,\n noTrycastSql,\n regexpReplaceGlobalModifier,\n renameFunc,\n sha256Sql,\n sha2DigestSql,\n strPositionSql,\n structExtractSql,\n timeStrToTimeSql,\n timestampTruncSql,\n trimSql,\n noParenCurrentDateSql,\n jsonExtractSegments,\n jsonPathKeyOnlyName,\n noLastDaySql,\n noMapFromEntriesSql,\n noPivotSql,\n inlineArraySql,\n tsOrDsAddCast,\n Dialect, Dialects,\n NullOrdering,\n} from './dialect';\n\nconst DATE_DIFF_FACTOR: Record<string, string> = {\n MICROSECOND: ' * 1000000',\n MILLISECOND: ' * 1000',\n SECOND: '',\n MINUTE: ' / 60',\n HOUR: ' / 3600',\n DAY: ' / 86400',\n};\n\nfunction dateAddSql (kind: string) {\n return function (this: Generator, expression: DateAddExpr | DateSubExpr | TsOrDsAddExpr): string {\n let expr = expression;\n if (expr instanceof TsOrDsAddExpr) {\n expr = tsOrDsAddCast(expr);\n }\n\n const thisSql = this.sql(expr, 'this');\n const unit = expr.args.unit;\n\n let e = expr.args.expression && this.simplifyUnlessLiteral(expr.args.expression);\n if (e instanceof LiteralExpr) {\n e.setArgKey('isString', true);\n } else if (e && e.isNumber) {\n e = LiteralExpr.string(e.toValue()!);\n } else {\n this.unsupported('Cannot add non-literal');\n }\n\n return `${thisSql} ${kind} ${this.sql(new IntervalExpr({\n this: e,\n unit,\n }))}`;\n };\n}\n\nfunction dateDiffSql (this: Generator, expression: DateDiffExpr): string {\n const unit = expression.text('unit').toUpperCase();\n const factor = DATE_DIFF_FACTOR[unit];\n\n const end = `CAST(${this.sql(expression, 'this')} AS TIMESTAMP)`;\n const start = `CAST(${this.sql(expression, 'expression')} AS TIMESTAMP)`;\n\n if (factor !== undefined) {\n return `CAST(EXTRACT(epoch FROM ${end} - ${start})${factor} AS BIGINT)`;\n }\n\n const age = `AGE(${end}, ${start})`;\n let unitSql: string;\n\n if (unit === 'WEEK') {\n unitSql = `EXTRACT(days FROM (${end} - ${start})) / 7`;\n } else if (unit === 'MONTH') {\n unitSql = `EXTRACT(year FROM ${age}) * 12 + EXTRACT(month FROM ${age})`;\n } else if (unit === 'QUARTER') {\n unitSql = `EXTRACT(year FROM ${age}) * 4 + EXTRACT(month FROM ${age}) / 3`;\n } else if (unit === 'YEAR') {\n unitSql = `EXTRACT(year FROM ${age})`;\n } else {\n unitSql = age;\n }\n\n return `CAST(${unitSql} AS BIGINT)`;\n}\n\nfunction substringSql (this: Generator, expression: SubstringExpr): string {\n const thisSql = this.sql(expression, 'this');\n const start = this.sql(expression, 'start');\n const length = this.sql(expression, 'length');\n\n const fromPart = start ? ` FROM ${start}` : '';\n const forPart = length ? ` FOR ${length}` : '';\n\n return `SUBSTRING(${thisSql}${fromPart}${forPart})`;\n}\n\nfunction autoIncrementToSerial (expression: Expression): Expression {\n const auto = expression.find(AutoIncrementColumnConstraintExpr);\n\n if (auto && expression instanceof ColumnDefExpr) {\n const constraints = expression.args.constraints || [\n ];\n expression.setArgKey('constraints', constraints.filter((c) => c !== auto.parent));\n\n const kind = expression.args.kind;\n if (kind instanceof DataTypeExpr) {\n if (kind.isType(DataTypeExprKind.INT)) {\n kind.replace(new DataTypeExpr({\n this: DataTypeExprKind.SERIAL,\n }));\n } else if (kind.isType(DataTypeExprKind.SMALLINT)) {\n kind.replace(new DataTypeExpr({\n this: DataTypeExprKind.SMALLSERIAL,\n }));\n } else if (kind.isType(DataTypeExprKind.BIGINT)) {\n kind.replace(new DataTypeExpr({\n this: DataTypeExprKind.BIGSERIAL,\n }));\n }\n }\n }\n\n return expression;\n}\n\nfunction serialToGenerated (expression: Expression): Expression {\n if (!(expression instanceof ColumnDefExpr)) return expression;\n\n const kind = expression.args.kind;\n if (!(kind instanceof DataTypeExpr)) return expression;\n\n let dataType: DataTypeExpr | undefined;\n if (kind.isType(DataTypeExprKind.SERIAL)) {\n dataType = new DataTypeExpr({\n this: DataTypeExprKind.INT,\n });\n } else if (kind.isType(DataTypeExprKind.SMALLSERIAL)) {\n dataType = new DataTypeExpr({\n this: DataTypeExprKind.SMALLINT,\n });\n } else if (kind.isType(DataTypeExprKind.BIGSERIAL)) {\n dataType = new DataTypeExpr({\n this: DataTypeExprKind.BIGINT,\n });\n }\n\n if (dataType) {\n kind.replace(dataType);\n const constraints = expression.args.constraints || [\n ];\n const generated = new ColumnConstraintExpr({\n kind: new GeneratedAsIdentityColumnConstraintExpr({\n this: false,\n }),\n });\n const notNull = new ColumnConstraintExpr({\n kind: new NotNullColumnConstraintExpr({}),\n });\n\n if (!constraints.some((c) => c instanceof ColumnConstraintExpr && c.args.kind instanceof NotNullColumnConstraintExpr)) {\n constraints.unshift(notNull);\n }\n if (!constraints.some((c) => c instanceof ColumnConstraintExpr && c.args.kind instanceof GeneratedAsIdentityColumnConstraintExpr)) {\n constraints.unshift(generated);\n }\n expression.setArgKey('constraints', constraints);\n }\n\n return expression;\n}\n\nfunction buildGenerateSeries (args: Expression[]): ExplodingGenerateSeriesExpr {\n const step = seqGet(args, 2);\n if (step) {\n if (step instanceof LiteralExpr && step.isString) {\n args[2] = toInterval(step.args.this);\n } else if (step instanceof IntervalExpr && !step.args.unit) {\n args[2] = toInterval(step.args.this?.args.this as string | LiteralExpr);\n }\n }\n\n return ExplodingGenerateSeriesExpr.fromArgList(args);\n}\n\nfunction buildToTimestamp (args: Expression[]): UnixToTimeExpr | StrToTimeExpr {\n if (args.length === 1) {\n return UnixToTimeExpr.fromArgList(args);\n }\n return buildFormattedTime(StrToTimeExpr, {\n dialect: 'postgres',\n })(args);\n}\n\nfunction jsonExtractSql (name: string, op: string) {\n return function (this: Generator, expression: JsonExtractExpr | JsonExtractScalarExpr): string {\n const onlyJsonTypes = expression.args.onlyJsonTypes;\n if (onlyJsonTypes) {\n return jsonExtractSegments(name, {\n quotedIndex: false,\n op,\n }).call(this, expression);\n }\n return jsonExtractSegments(name).call(this, expression);\n };\n}\n\nfunction buildRegexpReplace (args: Expression[]): RegexpReplaceExpr {\n let regexpReplace: RegexpReplaceExpr | undefined;\n\n if (3 < args.length) {\n const last = args[args.length - 1];\n if (!(last instanceof LiteralExpr && last.isNumber)) {\n // In TS we skip the complex type annotation check unless necessary,\n // but we assume if it's a string literal, it's the modifiers\n if (last instanceof LiteralExpr && last.isString) {\n regexpReplace = RegexpReplaceExpr.fromArgList(args.slice(0, -1));\n regexpReplace.setArgKey('modifiers', last);\n }\n }\n }\n\n regexpReplace = regexpReplace || RegexpReplaceExpr.fromArgList(args);\n regexpReplace.setArgKey('singleReplace', true);\n return regexpReplace;\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 || scale?.toValue() === UnixToTimeExpr.SECONDS.toValue()) {\n return this.func('TO_TIMESTAMP', [\n timestamp,\n this.formatTime(expression),\n ]);\n }\n\n const div = new DivExpr({\n this: timestamp?.copy(),\n expression: new PowExpr({\n this: LiteralExpr.number(10),\n expression: scale?.copy(),\n }),\n });\n\n return this.func('TO_TIMESTAMP', [\n div,\n this.formatTime(expression),\n ]);\n}\n\nfunction buildLevenshteinLessEqual (args: Expression[]): LevenshteinExpr {\n const maxDist = args.pop();\n\n return new LevenshteinExpr({\n this: seqGet(args, 0),\n expression: seqGet(args, 1),\n insCost: seqGet(args, 2),\n delCost: seqGet(args, 3),\n subCost: seqGet(args, 4),\n maxDist: maxDist,\n });\n}\n\nfunction levenshteinSql (this: Generator, expression: LevenshteinExpr): string {\n const name = expression.args.maxDist ? 'LEVENSHTEIN_LESS_EQUAL' : 'LEVENSHTEIN';\n return renameFunc(name).call(this, expression);\n}\n\nfunction versionedAnyValueSql (this: Generator, expression: AnyValueExpr): string {\n if (this.dialect.version.major < 16) {\n return anyValueToMaxSql.call(this, expression);\n }\n return renameFunc('ANY_VALUE').call(this, expression);\n}\n\nfunction roundSql (this: Generator, expression: RoundExpr): string {\n const thisSql = this.sql(expression, 'this');\n const decimals = this.sql(expression, 'decimals');\n\n if (!decimals) {\n return this.func('ROUND', [\n thisSql,\n ]);\n }\n\n let currentThis = thisSql;\n // If the input is double precision, we must cast to decimal in Postgres\n if (expression.args.this instanceof Expression && expression.args.this.isType(DataTypeExprKind.DOUBLE)) {\n const decimalType = DataTypeExpr.build(DataTypeExprKind.DECIMAL, {\n expressions: expression.args.expressions,\n });\n currentThis = this.sql(new CastExpr({\n this: thisSql,\n to: decimalType,\n }));\n }\n\n return this.func('ROUND', [\n currentThis,\n decimals,\n ]);\n}\n\nexport class PostgresTokenizer extends Tokenizer {\n @cache\n static get BIT_STRINGS (): TokenPair[] {\n return [\n [\n 'b\\'',\n '\\'',\n ],\n [\n 'B\\'',\n '\\'',\n ],\n '0b',\n ];\n }\n\n @cache\n static get HEX_STRINGS (): TokenPair[] {\n return [\n [\n 'x\\'',\n '\\'',\n ],\n [\n 'X\\'',\n '\\'',\n ],\n '0x',\n ];\n }\n\n @cache\n static get BYTE_STRINGS (): TokenPair[] {\n return [\n [\n 'e\\'',\n '\\'',\n ],\n [\n 'E\\'',\n '\\'',\n ],\n ];\n }\n\n @cache\n static get BYTE_STRING_ESCAPES () {\n return [\n '\\'',\n '\\\\',\n ];\n }\n\n @cache\n static get HEREDOC_STRINGS (): TokenPair[] {\n return [\n '$',\n ];\n }\n\n static HEREDOC_TAG_IS_IDENTIFIER = true;\n static HEREDOC_STRING_ALTERNATIVE = TokenType.PARAMETER;\n\n @cache\n static get ORIGINAL_KEYWORDS (): Record<string, TokenType> {\n const {\n '/*+': _1, DIV: _2, ...kw\n } = Tokenizer.KEYWORDS;\n return {\n ...kw,\n '~': TokenType.RLIKE,\n '@@': TokenType.DAT,\n '@>': TokenType.AT_GT,\n '<@': TokenType.LT_AT,\n '?&': TokenType.QMARK_AMP,\n '?|': TokenType.QMARK_PIPE,\n '#-': TokenType.HASH_DASH,\n '|/': TokenType.PIPE_SLASH,\n '||/': TokenType.DPIPE_SLASH,\n 'BEGIN': TokenType.BEGIN,\n 'BIGSERIAL': TokenType.BIGSERIAL,\n 'CONSTRAINT TRIGGER': TokenType.COMMAND,\n 'CSTRING': TokenType.PSEUDO_TYPE,\n 'DECLARE': TokenType.COMMAND,\n 'DO': TokenType.COMMAND,\n 'EXEC': TokenType.COMMAND,\n 'HSTORE': TokenType.HSTORE,\n 'INT8': TokenType.BIGINT,\n 'MONEY': TokenType.MONEY,\n 'NAME': TokenType.NAME,\n 'OID': TokenType.OBJECT_IDENTIFIER,\n 'ONLY': TokenType.ONLY,\n 'POINT': TokenType.POINT,\n 'REFRESH': TokenType.COMMAND,\n 'REINDEX': TokenType.COMMAND,\n 'RESET': TokenType.COMMAND,\n 'SERIAL': TokenType.SERIAL,\n 'SMALLSERIAL': TokenType.SMALLSERIAL,\n 'TEMP': TokenType.TEMPORARY,\n 'REGCLASS': TokenType.OBJECT_IDENTIFIER,\n 'REGCOLLATION': TokenType.OBJECT_IDENTIFIER,\n 'REGCONFIG': TokenType.OBJECT_IDENTIFIER,\n 'REGDICTIONARY': TokenType.OBJECT_IDENTIFIER,\n 'REGNAMESPACE': TokenType.OBJECT_IDENTIFIER,\n 'REGOPER': TokenType.OBJECT_IDENTIFIER,\n 'REGOPERATOR': TokenType.OBJECT_IDENTIFIER,\n 'REGPROC': TokenType.OBJECT_IDENTIFIER,\n 'REGPROCEDURE': TokenType.OBJECT_IDENTIFIER,\n 'REGROLE': TokenType.OBJECT_IDENTIFIER,\n 'REGTYPE': TokenType.OBJECT_IDENTIFIER,\n 'FLOAT': TokenType.DOUBLE,\n 'XML': TokenType.XML,\n 'VARIADIC': TokenType.VARIADIC,\n 'INOUT': TokenType.INOUT,\n };\n }\n\n @cache\n static get SINGLE_TOKENS (): Record<string, TokenType> {\n return {\n ...Tokenizer.SINGLE_TOKENS,\n $: TokenType.HEREDOC_STRING,\n };\n }\n\n @cache\n static get VAR_SINGLE_TOKENS () {\n return new Set([\n '$',\n ]);\n }\n}\n\nclass PostgresParser extends Parser {\n // port from _Dialect metaclass logic\n @cache\n static get NO_PAREN_FUNCTIONS () {\n const noParenFunctions = {\n ...Parser.NO_PAREN_FUNCTIONS,\n };\n noParenFunctions[TokenType.CURRENT_SCHEMA] = CurrentSchemaExpr;\n noParenFunctions[TokenType.SESSION_USER] = SessionUserExpr;\n noParenFunctions[TokenType.CURRENT_CATALOG] = CurrentCatalogExpr;\n return noParenFunctions;\n }\n\n static SUPPORTS_OMITTED_INTERVAL_SPAN_UNIT = true;\n\n @cache\n static get PROPERTY_PARSERS (): Record<string, (this: Parser, ...args: unknown[]) => Expression | Expression[] | undefined> {\n return (() => {\n const parsers: Record<string, (this: Parser, ...args: unknown[]) => Expression | Expression[] | undefined> = {\n ...Parser.PROPERTY_PARSERS,\n SET: function (this: Parser) {\n return this.expression(SetConfigPropertyExpr, {\n this: (this as PostgresParser).parseSet(),\n });\n },\n };\n delete parsers['INPUT'];\n return parsers;\n })();\n }\n\n @cache\n static get PLACEHOLDER_PARSERS (): Partial<Record<TokenType, (this: Parser) => Expression | undefined>> {\n return {\n ...Parser.PLACEHOLDER_PARSERS,\n [TokenType.PLACEHOLDER]: function (this: Parser) {\n return this.expression(PlaceholderExpr, {\n jdbc: true,\n });\n },\n [TokenType.MOD]: function (this: Parser) {\n return (this as PostgresParser).parseQueryParameter();\n },\n };\n }\n\n @cache\n static get FUNCTIONS (): Record<string, (args: Expression[], options: {dialect: Dialect}) => Expression> {\n return {\n ...Parser.FUNCTIONS,\n ARRAY_PREPEND: (args: Expression[]) => new ArrayPrependExpr({\n this: seqGet(args, 1),\n expression: seqGet(args, 0),\n }),\n BIT_AND: (args: unknown[]) => BitwiseAndAggExpr.fromArgList(args),\n BIT_OR: (args: unknown[]) => BitwiseOrAggExpr.fromArgList(args),\n BIT_XOR: (args: unknown[]) => BitwiseXorAggExpr.fromArgList(args),\n VERSION: (args: unknown[]) => CurrentVersionExpr.fromArgList(args),\n DATE_TRUNC: buildTimestampTrunc,\n DIV: (args: Expression[]) => new CastExpr({\n this: binaryFromFunction(IntDivExpr)(args),\n to: DataTypeExpr.build('decimal'),\n }),\n GENERATE_SERIES: buildGenerateSeries,\n GET_BIT: (args: Expression[]) => new GetbitExpr({\n this: seqGet(args, 0),\n expression: seqGet(args, 1),\n zeroIsMsb: true,\n }),\n JSON_EXTRACT_PATH: buildJsonExtractPath(JsonExtractExpr),\n JSON_EXTRACT_PATH_TEXT: buildJsonExtractPath(JsonExtractScalarExpr),\n LENGTH: (args: Expression[]) => new LengthExpr({\n this: seqGet(args, 0),\n encoding: seqGet(args, 1),\n }),\n MAKE_TIME: (args: unknown[]) => TimeFromPartsExpr.fromArgList(args),\n MAKE_TIMESTAMP: (args: unknown[]) => TimestampFromPartsExpr.fromArgList(args),\n NOW: (args: unknown[]) => CurrentTimestampExpr.fromArgList(args),\n REGEXP_REPLACE: buildRegexpReplace,\n TO_CHAR: buildFormattedTime(TimeToStrExpr, {\n dialect: 'postgres',\n }),\n TO_DATE: buildFormattedTime(StrToDateExpr, {\n dialect: 'postgres',\n }),\n TO_TIMESTAMP: buildToTimestamp,\n UNNEST: (args: unknown[]) => ExplodeExpr.fromArgList(args),\n SHA256: (args: Expression[]) => new Sha2Expr({\n this: seqGet(args, 0),\n length: LiteralExpr.number(256),\n }),\n SHA384: (args: Expression[]) => new Sha2Expr({\n this: seqGet(args, 0),\n length: LiteralExpr.number(384),\n }),\n SHA512: (args: Expression[]) => new Sha2Expr({\n this: seqGet(args, 0),\n length: LiteralExpr.number(512),\n }),\n LEVENSHTEIN_LESS_EQUAL: buildLevenshteinLessEqual,\n JSON_OBJECT_AGG: (args: unknown[]) => JsonObjectAggExpr.fromArgList(args),\n JSONB_OBJECT_AGG: (args: unknown[]) => JsonbObjectAggExpr.fromArgList(args),\n WIDTH_BUCKET: (args: Expression[]) => args.length === 2\n ? new WidthBucketExpr({\n this: seqGet(args, 0),\n threshold: seqGet(args, 1),\n })\n : WidthBucketExpr.fromArgList(args),\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 VARIADIC: function (this: Parser) {\n return this.expression(VariadicExpr, {\n this: (this as PostgresParser).parseBitwise(),\n });\n },\n };\n }\n\n @cache\n static get FUNCTION_PARSERS (): Partial<Record<string, (this: Parser) => Expression | undefined>> {\n return {\n ...Parser.FUNCTION_PARSERS,\n DATE_PART: function (this: Parser) {\n return (this as PostgresParser).parseDatePart();\n },\n JSON_AGG: function (this: Parser) {\n return this.expression(JsonArrayAggExpr, {\n this: (this as PostgresParser).parseLambda(),\n order: (this as PostgresParser).parseOrder(),\n });\n },\n JSONB_EXISTS: function (this: Parser) {\n return (this as PostgresParser).parseJsonbExists();\n },\n };\n }\n\n @cache\n static get BITWISE (): Partial<Record<TokenType, typeof Expression>> {\n return {\n ...Parser.BITWISE,\n [TokenType.HASH]: BitwiseXorExpr,\n };\n }\n\n @cache\n static get EXPONENT () {\n return {\n [TokenType.CARET]: PowExpr,\n };\n }\n\n @cache\n static get RANGE_PARSERS (): Partial<Record<TokenType, (this: Parser, this_: Expression) => Expression | undefined>> {\n return {\n ...Parser.RANGE_PARSERS,\n [TokenType.DAMP]: binaryRangeParser(ArrayOverlapsExpr),\n [TokenType.DAT]: function (this: Parser, thisNode: Expression) {\n return this.expression(MatchAgainstExpr, {\n this: (this as PostgresParser).parseBitwise(),\n expressions: [\n thisNode,\n ],\n });\n },\n };\n }\n\n @cache\n static get STATEMENT_PARSERS (): Partial<Record<TokenType, (this: Parser) => Expression | undefined>> {\n return {\n ...Parser.STATEMENT_PARSERS,\n [TokenType.END]: function (this: Parser) {\n return (this as PostgresParser).parseCommitOrRollback();\n },\n };\n }\n\n @cache\n static get UNARY_PARSERS (): Partial<Record<TokenType, (this: Parser) => Expression | undefined>> {\n return {\n ...Parser.UNARY_PARSERS,\n [TokenType.RLIKE]: function (this: Parser) {\n return this.expression(BitwiseNotExpr, {\n this: (this as PostgresParser).parseUnary(),\n });\n },\n };\n }\n\n static JSON_ARROWS_REQUIRE_JSON_TYPE = true;\n @cache\n static get COLUMN_OPERATORS (): Partial<Record<TokenType, undefined | ((this: Parser, this_?: Expression, to?: Expression) => Expression)>> {\n return {\n ...Parser.COLUMN_OPERATORS,\n [TokenType.ARROW]: function (this: Parser, thisNode?: Expression, path?: Expression) {\n return this.validateExpression(\n buildJsonExtractPath(JsonExtractExpr, {\n arrowReqJsonType: (this.constructor as typeof PostgresParser).JSON_ARROWS_REQUIRE_JSON_TYPE,\n })([\n thisNode,\n path,\n ]),\n );\n },\n [TokenType.DARROW]: function (this: Parser, thisNode?: Expression, path?: Expression) {\n return this.validateExpression(\n buildJsonExtractPath(JsonExtractScalarExpr, {\n arrowReqJsonType: (this.constructor as typeof PostgresParser).JSON_ARROWS_REQUIRE_JSON_TYPE,\n })([\n thisNode,\n path,\n ]),\n );\n },\n };\n }\n\n @cache\n static get ARG_MODE_TOKENS () {\n return new Set([\n TokenType.IN,\n TokenType.OUT,\n TokenType.INOUT,\n TokenType.VARIADIC,\n ]);\n }\n\n parseParameterMode (): TokenType | undefined {\n if (!this.matchSet((this.constructor as typeof PostgresParser).ARG_MODE_TOKENS, {\n advance: false,\n }) || !this.next) {\n return undefined;\n }\n\n const modeToken = this.curr;\n\n // Check Pattern 1: MODE TYPE\n const isFollowedByBuiltinType = this.tryParse(\n () => {\n this.advance();\n return this.parseTypes({\n checkFunc: false,\n allowIdentifiers: false,\n });\n },\n {\n retreat: true,\n },\n );\n\n if (isFollowedByBuiltinType) {\n return undefined;\n }\n\n // Check Pattern 2: MODE NAME TYPE\n if (!this.next || !(this.constructor as typeof PostgresParser).ID_VAR_TOKENS.has(this.next.tokenType)) {\n return undefined;\n }\n\n const isFollowedByAnyType = this.tryParse(\n () => {\n this.advance(2);\n return this.parseTypes({\n checkFunc: false,\n allowIdentifiers: true,\n });\n },\n {\n retreat: true,\n },\n );\n\n if (isFollowedByAnyType) {\n return modeToken?.tokenType;\n }\n\n return undefined;\n }\n\n createModeConstraint (paramMode: TokenType): InOutColumnConstraintExpr {\n return this.expression(InOutColumnConstraintExpr, {\n input: paramMode === TokenType.IN || paramMode === TokenType.INOUT,\n output: paramMode === TokenType.OUT || paramMode === TokenType.INOUT,\n variadic: paramMode === TokenType.VARIADIC,\n });\n }\n\n parseFunctionParameter (): Expression | undefined {\n const paramMode = this.parseParameterMode();\n\n if (paramMode) {\n this.advance();\n }\n\n const paramName = this.parseIdVar();\n const columnDef = this.parseColumnDef(paramName, {\n computedColumn: false,\n });\n\n if (paramMode && columnDef instanceof ColumnDefExpr) {\n const constraint = this.createModeConstraint(paramMode);\n if (!columnDef.args.constraints) {\n columnDef.setArgKey('constraints', [\n ]);\n }\n columnDef.args.constraints?.unshift(new ColumnConstraintExpr({\n kind: constraint,\n }));\n }\n\n return columnDef;\n }\n\n parseQueryParameter (): Expression | undefined {\n const thisNode = this.match(TokenType.L_PAREN, {\n advance: false,\n })\n ? this.parseWrapped(() => this.parseIdVar())\n : undefined;\n\n this.matchTextSeq('S');\n return this.expression(PlaceholderExpr, {\n this: thisNode,\n });\n }\n\n parseDatePart (): Expression {\n let part = this.parseType();\n this.match(TokenType.COMMA);\n const value = this.parseBitwise();\n\n if (part && (part instanceof ColumnExpr || part instanceof LiteralExpr)) {\n part = var_(part.name);\n }\n\n return this.expression(ExtractExpr, {\n this: part,\n expression: value,\n });\n }\n\n parseUniqueKey (): Expression | undefined {\n return undefined;\n }\n\n parseJsonbExists (): JsonbExistsExpr {\n return this.expression(JsonbExistsExpr, {\n this: this.parseBitwise(),\n path: this.match(TokenType.COMMA) && this.dialect.toJsonPath(this.parseBitwise()),\n });\n }\n\n parseGeneratedAsIdentity (): GeneratedAsIdentityColumnConstraintExpr | ComputedColumnConstraintExpr | GeneratedAsRowColumnConstraintExpr {\n let thisNode = super.parseGeneratedAsIdentity();\n\n if (this.matchTextSeq('STORED')) {\n thisNode = this.expression(ComputedColumnConstraintExpr, {\n this: thisNode.args.expression,\n });\n }\n\n return thisNode;\n }\n\n parseUserDefinedType (identifier: IdentifierExpr): Expression | undefined {\n let udtType: IdentifierExpr | DotExpr = identifier;\n\n while (this.match(TokenType.DOT)) {\n const part = this.parseIdVar();\n if (part) {\n udtType = new DotExpr({\n this: udtType,\n expression: part,\n });\n }\n }\n\n return DataTypeExpr.build(udtType, {\n udt: true,\n });\n }\n\n // port from _Dialect metaclass logic\n @cache\n static get ID_VAR_TOKENS (): Set<TokenType> {\n return new Set([\n ...Parser.ID_VAR_TOKENS,\n TokenType.STRAIGHT_JOIN,\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 PostgresGenerator extends Generator {\n // port from _Dialect metaclass logic\n @cache\n static get AFTER_HAVING_MODIFIER_TRANSFORMS () {\n const modifiers = new Map(super.AFTER_HAVING_MODIFIER_TRANSFORMS);\n [\n 'cluster',\n 'distribute',\n 'sort',\n ].forEach((m) => modifiers.delete(m));\n return modifiers;\n }\n\n // port from _Dialect metaclass logic\n static SUPPORTS_DECODE_CASE = false;\n // port from _Dialect metaclass logic\n static 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 SINGLE_STRING_INTERVAL = true;\n static RENAME_TABLE_WITH_DB = false;\n static LOCKING_READS_SUPPORTED = true;\n static JOIN_HINTS = false;\n static TABLE_HINTS = false;\n static QUERY_HINTS = false;\n static NVL2_SUPPORTED = false;\n static PARAMETER_TOKEN = '$';\n static NAMED_PLACEHOLDER_TOKEN = '%';\n static TABLESAMPLE_SIZE_IS_ROWS = false;\n static TABLESAMPLE_SEED_KEYWORD = 'REPEATABLE';\n static SUPPORTS_SELECT_INTO = true;\n static JSON_TYPE_REQUIRED_FOR_EXTRACTION = true;\n static SUPPORTS_UNLOGGED_TABLES = true;\n static LIKE_PROPERTY_INSIDE_SCHEMA = true;\n static MULTI_ARG_DISTINCT = false;\n static CAN_IMPLEMENT_ARRAY_ANY = true;\n static SUPPORTS_WINDOW_EXCLUDE = true;\n static COPY_HAS_INTO_KEYWORD = false;\n static ARRAY_CONCAT_IS_VAR_LEN = false;\n static SUPPORTS_MEDIAN = false;\n static ARRAY_SIZE_DIM_REQUIRED = true;\n static SUPPORTS_BETWEEN_FLAGS = true;\n static INOUT_SEPARATOR = '';\n\n @cache\n static get SUPPORTED_JSON_PATH_PARTS (): Set<typeof Expression> {\n return new Set([\n JsonPathKeyExpr,\n JsonPathRootExpr,\n JsonPathSubscriptExpr,\n ]);\n }\n\n @cache\n static get TYPE_MAPPING (): Map<DataTypeExprKind | string, string> {\n return new Map<DataTypeExprKind | string, string>([\n ...Generator.TYPE_MAPPING,\n [\n DataTypeExprKind.TINYINT,\n 'SMALLINT',\n ],\n [\n DataTypeExprKind.FLOAT,\n 'REAL',\n ],\n [\n DataTypeExprKind.DOUBLE,\n 'DOUBLE PRECISION',\n ],\n [\n DataTypeExprKind.BINARY,\n 'BYTEA',\n ],\n [\n DataTypeExprKind.VARBINARY,\n 'BYTEA',\n ],\n [\n DataTypeExprKind.ROWVERSION,\n 'BYTEA',\n ],\n [\n DataTypeExprKind.DATETIME,\n 'TIMESTAMP',\n ],\n [\n DataTypeExprKind.TIMESTAMPNTZ,\n 'TIMESTAMP',\n ],\n [\n DataTypeExprKind.BLOB,\n 'BYTEA',\n ],\n ]);\n }\n\n lateralSql (expression: LateralExpr): string {\n let sql = super.lateralSql(expression);\n\n if (expression.args.crossApply !== undefined) {\n sql = `${sql} ON TRUE`;\n }\n\n return sql;\n }\n\n jsonbExtractSql (e: JsonbExtractExpr): string {\n return this.binary(e, '#>');\n }\n\n jsonbExtractScalarSql (e: JsonbExtractScalarExpr): string {\n return this.binary(e, '#>>');\n }\n\n explodeSql (e: ExplodeExpr): string {\n return this.func('UNNEST', [\n e.args.this,\n ...e.args.expressions || [\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 AnyValueExpr,\n versionedAnyValueSql,\n ],\n [\n ArrayConcatExpr,\n arrayConcatSql('ARRAY_CAT'),\n ],\n [\n ArrayFilterExpr,\n filterArrayUsingUnnest,\n ],\n [\n ArrayAppendExpr,\n arrayAppendSql('ARRAY_APPEND'),\n ],\n [\n ArrayPrependExpr,\n arrayAppendSql('ARRAY_PREPEND', {\n swapParams: true,\n }),\n ],\n [\n BitwiseAndAggExpr,\n renameFunc('BIT_AND'),\n ],\n [\n BitwiseOrAggExpr,\n renameFunc('BIT_OR'),\n ],\n [\n BitwiseXorExpr,\n function (this: Generator, e: BitwiseXorExpr) {\n return this.binary(e, '#');\n },\n ],\n [\n BitwiseXorAggExpr,\n renameFunc('BIT_XOR'),\n ],\n [\n ColumnDefExpr,\n preprocess([\n autoIncrementToSerial,\n serialToGenerated,\n ]),\n ],\n [\n CurrentDateExpr,\n noParenCurrentDateSql,\n ],\n [\n CurrentTimestampExpr,\n () => 'CURRENT_TIMESTAMP',\n ],\n [\n CurrentUserExpr,\n () => 'CURRENT_USER',\n ],\n [\n CurrentVersionExpr,\n renameFunc('VERSION'),\n ],\n [\n DateAddExpr,\n dateAddSql('+'),\n ],\n [\n DateDiffExpr,\n dateDiffSql,\n ],\n [\n DateStrToDateExpr,\n dateStrToDateSql,\n ],\n [\n DateSubExpr,\n dateAddSql('-'),\n ],\n [\n ExplodeExpr,\n renameFunc('UNNEST'),\n ],\n [\n ExplodingGenerateSeriesExpr,\n renameFunc('GENERATE_SERIES'),\n ],\n [\n GetbitExpr,\n getBitSql,\n ],\n [\n GroupConcatExpr,\n function (this: Generator, e: GroupConcatExpr) {\n return groupConcatSql.call(this, e, {\n funcName: 'STRING_AGG',\n withinGroup: false,\n });\n },\n ],\n [\n IntDivExpr,\n renameFunc('DIV'),\n ],\n [\n JsonArrayAggExpr,\n function (this: Generator, e: JsonArrayAggExpr) {\n const thisSql = this.sql(e, 'this');\n const orderSql = this.sql(e, 'order');\n const inner = orderSql ? `${thisSql}${orderSql}` : thisSql;\n return `JSON_AGG(${inner})`;\n },\n ],\n [\n JsonExtractExpr,\n jsonExtractSql('JSON_EXTRACT_PATH', '->'),\n ],\n [\n JsonExtractScalarExpr,\n jsonExtractSql('JSON_EXTRACT_PATH_TEXT', '->>'),\n ],\n [\n JsonbExtractExpr,\n function (this: Generator, e: JsonbExtractExpr) {\n return this.binary(e, '#>');\n },\n ],\n [\n JsonbExtractScalarExpr,\n function (this: Generator, e: JsonbExtractScalarExpr) {\n return this.binary(e, '#>>');\n },\n ],\n [\n JsonbContainsExpr,\n function (this: Generator, e: JsonbContainsExpr) {\n return this.binary(e, '?');\n },\n ],\n [\n ParseJsonExpr,\n function (this: Generator, e: ParseJsonExpr) {\n return this.sql(new CastExpr({\n this: e.args.this,\n to: DataTypeExpr.build('json'),\n }));\n },\n ],\n [\n JsonPathKeyExpr,\n jsonPathKeyOnlyName,\n ],\n [\n JsonPathRootExpr,\n () => '',\n ],\n [\n JsonPathSubscriptExpr,\n function (this: Generator, e: JsonPathSubscriptExpr) {\n return this.jsonPathPart(e.args.this);\n },\n ],\n [\n LastDayExpr,\n noLastDaySql,\n ],\n [\n LogicalOrExpr,\n renameFunc('BOOL_OR'),\n ],\n [\n LogicalAndExpr,\n renameFunc('BOOL_AND'),\n ],\n [\n MaxExpr,\n maxOrGreatest,\n ],\n [\n MapFromEntriesExpr,\n noMapFromEntriesSql,\n ],\n [\n MinExpr,\n minOrLeast,\n ],\n [\n MergeExpr,\n mergeWithoutTargetSql,\n ],\n [\n PartitionedByPropertyExpr,\n function (this: Generator, e: PartitionedByPropertyExpr) {\n return `PARTITION BY ${this.sql(e, 'this')}`;\n },\n ],\n [\n PercentileContExpr,\n preprocess([\n addWithinGroupForPercentiles,\n ]),\n ],\n [\n PercentileDiscExpr,\n preprocess([\n addWithinGroupForPercentiles,\n ]),\n ],\n [\n PivotExpr,\n noPivotSql,\n ],\n [\n RandExpr,\n renameFunc('RANDOM'),\n ],\n [\n RegexpLikeExpr,\n function (this: Generator, e: RegexpLikeExpr) {\n return this.binary(e, '~');\n },\n ],\n [\n RegexpILikeExpr,\n function (this: Generator, e: RegexpILikeExpr) {\n return this.binary(e, '~*');\n },\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 e.args.occurrence,\n regexpReplaceGlobalModifier(e),\n ]);\n },\n ],\n [\n RoundExpr,\n roundSql,\n ],\n [\n SelectExpr,\n preprocess([\n eliminateSemiAndAntiJoins,\n eliminateQualify,\n ]),\n ],\n [\n Sha2Expr,\n sha256Sql,\n ],\n [\n Sha2DigestExpr,\n sha2DigestSql,\n ],\n [\n StrPositionExpr,\n function (this: Generator, e: StrPositionExpr) {\n return strPositionSql.call(this, e, {\n funcName: 'POSITION',\n });\n },\n ],\n [\n StrToDateExpr,\n function (this: Generator, e: StrToDateExpr) {\n return this.func('TO_DATE', [\n e.args.this,\n this.formatTime(e),\n ]);\n },\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 StructExtractExpr,\n structExtractSql,\n ],\n [\n SubstringExpr,\n substringSql,\n ],\n [\n TimeFromPartsExpr,\n renameFunc('MAKE_TIME'),\n ],\n [\n TimestampFromPartsExpr,\n renameFunc('MAKE_TIMESTAMP'),\n ],\n [\n TimestampTruncExpr,\n timestampTruncSql({\n zone: true,\n }),\n ],\n [\n TimeStrToTimeExpr,\n timeStrToTimeSql,\n ],\n [\n TimeToStrExpr,\n function (this: Generator, e: TimeToStrExpr) {\n if (typeof e.args.format === 'string' || e.args.format?.isString) {\n return this.func('TO_CHAR', [\n e.args.this,\n this.formatTime(e),\n ]);\n }\n return this.func('TO_CHAR', [\n e.args.this,\n e.args.format,\n ]);\n },\n ],\n [\n ToCharExpr,\n function (this: Generator, e: ToCharExpr) {\n return e.args.format ? this.functionFallbackSql(e) : (this as PostgresGenerator).toCharSql(e);\n },\n ],\n [\n TrimExpr,\n trimSql,\n ],\n [\n TryCastExpr,\n noTrycastSql,\n ],\n [\n TsOrDsAddExpr,\n dateAddSql('+'),\n ],\n [\n TsOrDsDiffExpr,\n dateDiffSql,\n ],\n [\n UnixToTimeExpr,\n unixToTimeSql,\n ],\n [\n UuidExpr,\n () => 'GEN_RANDOM_UUID()',\n ],\n [\n TimeToUnixExpr,\n function (this: Generator, e: TimeToUnixExpr) {\n return this.func('DATE_PART', [\n LiteralExpr.string('epoch'),\n e.args.this,\n ]);\n },\n ],\n [\n VariancePopExpr,\n renameFunc('VAR_POP'),\n ],\n [\n VarianceExpr,\n renameFunc('VAR_SAMP'),\n ],\n [\n XorExpr,\n boolXorSql,\n ],\n [\n UnicodeExpr,\n renameFunc('ASCII'),\n ],\n [\n LevenshteinExpr,\n levenshteinSql,\n ],\n [\n JsonObjectAggExpr,\n renameFunc('JSON_OBJECT_AGG'),\n ],\n [\n JsonbObjectAggExpr,\n renameFunc('JSONB_OBJECT_AGG'),\n ],\n [\n CountIfExpr,\n countIfToSum,\n ],\n [\n IntoExpr,\n function (this: Generator, e: IntoExpr) {\n // PostgreSQL SELECT INTO only supports INTO <table>, not INTO with variable list (Oracle syntax)\n if (e.args.expressions && 0 < e.args.expressions.length) {\n this.unsupported('Oracle-style SELECT INTO with variables is not supported in PostgreSQL');\n }\n const temporary = e.args.temporary ? ' TEMPORARY' : '';\n const unlogged = e.args.unlogged ? ' UNLOGGED' : '';\n const modifier = temporary || unlogged;\n return `${this.seg('INTO')}${modifier} ${this.sql(e, 'this')}`;\n },\n ],\n ]);\n transforms.delete(CommentColumnConstraintExpr);\n return transforms;\n }\n\n @cache\n static get PROPERTIES_LOCATION () {\n const m = new Map(Generator.PROPERTIES_LOCATION);\n m.set(PartitionedByPropertyExpr, PropertiesLocation.POST_SCHEMA);\n m.set(TransientPropertyExpr, PropertiesLocation.UNSUPPORTED);\n m.set(VolatilePropertyExpr, PropertiesLocation.UNSUPPORTED);\n return m;\n }\n\n schemaCommentPropertySql (_expression: SchemaCommentPropertyExpr): string {\n this.unsupported('Table comments are not supported in the CREATE statement');\n return '';\n }\n\n commentColumnConstraintSql (_expression: CommentColumnConstraintExpr): string {\n this.unsupported('Column comments are not supported in the CREATE statement');\n return '';\n }\n\n columnDefSql (expression: ColumnDefExpr, options: {sep?: string} = {}): string {\n const {\n sep = ' ',\n } = options;\n const paramConstraint = expression.find(InOutColumnConstraintExpr);\n\n if (paramConstraint) {\n const modeSql = this.sql(paramConstraint);\n paramConstraint.pop();\n const baseSql = super.columnDefSql(expression, {\n sep,\n });\n return `${modeSql} ${baseSql}`;\n }\n\n return super.columnDefSql(expression, {\n sep,\n });\n }\n\n unnestSql (expression: UnnestExpr): string {\n if (expression.args.expressions?.length === 1) {\n const arg = expression.args.expressions[0];\n if (arg instanceof GenerateDateArrayExpr) {\n let generateSeries: Expression = new GenerateSeriesExpr({\n ...arg.args,\n });\n if (expression.parent instanceof FromExpr || expression.parent instanceof JoinExpr) {\n generateSeries = select('value::date')\n .from(new TableExpr({\n this: generateSeries,\n }).as('_t', {\n table: [\n 'value',\n ],\n }))\n .subquery(expression.args.alias instanceof Expression ? expression.args.alias : (typeof expression.args.alias === 'string' ? expression.args.alias : '_unnested_generate_series'));\n }\n return this.sql(generateSeries);\n }\n\n const thisNode = arg instanceof Expression\n ? annotateTypes(arg, {\n dialect: this.dialect,\n })\n : arg;\n if (isType(thisNode, 'array<json>')) {\n let current = thisNode;\n while (current instanceof CastExpr) {\n const inner = current.args.this;\n if (inner instanceof Expression) {\n current = inner;\n } else {\n break;\n }\n }\n\n const argAsJson = this.sql(new CastExpr({\n this: current,\n to: DataTypeExpr.build('json'),\n }));\n let alias = this.sql(expression, 'alias');\n alias = alias ? ` AS ${alias}` : '';\n\n if (expression.args.offset) {\n this.unsupported('Unsupported JSON_ARRAY_ELEMENTS with offset');\n }\n\n return `JSON_ARRAY_ELEMENTS(${argAsJson})${alias}`;\n }\n }\n\n return super.unnestSql(expression);\n }\n\n bracketSql (expression: BracketExpr): string {\n if (expression.args.this instanceof ArrayExpr) {\n expression.setArgKey('this', new ParenExpr({\n this: expression.args.this,\n }));\n }\n\n return super.bracketSql(expression);\n }\n\n matchAgainstSql (expression: MatchAgainstExpr): string {\n const thisSql = this.sql(expression, 'this');\n const expressions = (expression.args.expressions ?? [\n ]).map((e) => `${this.sql(e)} @@ ${thisSql}`);\n const sql = expressions.join(' OR ');\n return 1 < expressions.length ? `(${sql})` : sql;\n }\n\n alterSetSql (expression: AlterSetExpr): string {\n let exprs = this.expressions(expression, {\n flat: true,\n });\n exprs = exprs ? `(${exprs})` : '';\n\n let accessMethod = this.sql(expression, 'accessMethod');\n accessMethod = accessMethod ? `ACCESS METHOD ${accessMethod}` : '';\n let tablespace = this.sql(expression, 'tablespace');\n tablespace = tablespace ? `TABLESPACE ${tablespace}` : '';\n const option = this.sql(expression, 'option');\n\n return `SET ${exprs}${accessMethod}${tablespace}${option}`;\n }\n\n dataTypeSql (expression: DataTypeExpr): string {\n if (expression.isType(DataTypeExprKind.ARRAY)) {\n if (expression.args.expressions && 0 < expression.args.expressions.length) {\n const values = this.expressions(expression, {\n key: 'values',\n flat: true,\n });\n return `${this.expressions(expression, {\n flat: true,\n })}[${values}]`;\n }\n return 'ARRAY';\n }\n\n if (\n expression.isType([\n DataTypeExprKind.DOUBLE,\n DataTypeExprKind.FLOAT,\n ])\n && expression.args.expressions\n && 0 < expression.args.expressions.length\n ) {\n return `FLOAT(${this.expressions(expression, {\n flat: true,\n })})`;\n }\n\n return super.dataTypeSql(expression);\n }\n\n castSql (expression: CastExpr, options: {safePrefix?: string} = {}): string {\n const {\n safePrefix,\n } = options;\n const thisNode = expression.args.this;\n\n if (\n thisNode instanceof IntDivExpr\n && expression.args.to instanceof DataTypeExpr\n && expression.args.to.isType(DataTypeExprKind.DECIMAL)\n && !expression.args.to.args.expressions?.length\n ) {\n return this.sql(thisNode);\n }\n\n return super.castSql(expression, {\n safePrefix,\n });\n }\n\n arraySql (expression: ArrayExpr): string {\n const exprs = expression.args.expressions || [\n ];\n const funcName = this.normalizeFunc('ARRAY');\n\n if (exprs[0] instanceof SelectExpr) {\n return `${funcName}(${this.sql(exprs[0])})`;\n }\n\n return `${funcName}${inlineArraySql.call(this, expression)}`;\n }\n\n computedColumnConstraintSql (expression: ComputedColumnConstraintExpr): string {\n return `GENERATED ALWAYS AS (${this.sql(expression, 'this')}) STORED`;\n }\n\n isAsciiSql (expression: IsAsciiExpr): string {\n return `(${this.sql(expression.args.this)} ~ '^[[:ascii:]]*$')`;\n }\n\n ignoreNullsSql (expression: IgnoreNullsExpr): string {\n this.unsupported('PostgreSQL does not support IGNORE NULLS.');\n return this.sql(expression.args.this);\n }\n\n respectNullsSql (expression: RespectNullsExpr): string {\n this.unsupported('PostgreSQL does not support RESPECT NULLS.');\n return this.sql(expression.args.this);\n }\n\n currentSchemaSql (expression: CurrentSchemaExpr): string {\n if (expression.args.this) {\n this.unsupported('Unsupported arg \\'this\\' for CURRENT_SCHEMA');\n }\n return 'CURRENT_SCHEMA';\n }\n\n intervalSql (expression: IntervalExpr): string {\n const unit = expression.text('unit').toLowerCase();\n const thisNode = expression.args.this;\n\n if (unit.startsWith('quarter') && thisNode instanceof LiteralExpr) {\n thisNode.setArgKey('this', (parseInt(thisNode.args.this ?? '0') * 3).toString());\n expression.args.unit?.replace(new IdentifierExpr({\n this: 'MONTH',\n }));\n }\n\n return super.intervalSql(expression);\n }\n\n placeholderSql (expression: PlaceholderExpr): string {\n if (expression.args.jdbc) {\n return '?';\n }\n\n const thisPart = expression.args.this ? `(${expression.name})` : '';\n return `${(this.constructor as typeof PostgresGenerator).NAMED_PLACEHOLDER_TOKEN}${thisPart}s`;\n }\n\n arrayContainsSql (expression: ArrayContainsExpr): string {\n const value = expression.args.expression;\n const array = expression.args.this;\n\n if (!value) return '';\n\n const coalesceExpr = new CoalesceExpr({\n this: value.eq(new AnyExpr({\n this: new ParenExpr({\n this: array,\n }),\n })),\n expressions: [\n new BooleanExpr({\n this: false,\n }),\n ],\n });\n\n const caseExpr = new CaseExpr({\n ifs: [\n ],\n })\n .when(new IsExpr({\n this: value,\n expression: null_(),\n }), null_())\n .else(coalesceExpr);\n\n return this.sql(caseExpr);\n }\n}\n\nexport class Postgres extends Dialect {\n static DIALECT_NAME = Dialects.POSTGRES;\n static INDEX_OFFSET = 1;\n static TYPED_DIVISION = true;\n static CONCAT_COALESCE = true;\n\n static get NULL_ORDERING () {\n return NullOrdering.NULLS_ARE_LARGE;\n }\n\n static TIME_FORMAT = '\\'YYYY-MM-DD HH24:MI:SS\\'';\n static TABLESAMPLE_SIZE_IS_PERCENT = true;\n static TABLES_REFERENCEABLE_AS_COLUMNS = true;\n\n @cache\n static get DEFAULT_FUNCTIONS_COLUMN_NAMES () {\n return new Map([\n [\n ExplodingGenerateSeriesExpr.name,\n 'generate_series',\n ],\n ]);\n }\n\n @cache\n static get TIME_MAPPING () {\n return {\n d: '%u',\n D: '%u',\n dd: '%d',\n DD: '%d',\n ddd: '%j',\n DDD: '%j',\n FMDD: '%-d',\n FMDDD: '%-j',\n FMHH12: '%-I',\n FMHH24: '%-H',\n FMMI: '%-M',\n FMMM: '%-m',\n FMSS: '%-S',\n HH12: '%I',\n HH24: '%H',\n mi: '%M',\n MI: '%M',\n mm: '%m',\n MM: '%m',\n OF: '%z',\n ss: '%S',\n SS: '%S',\n TMDay: '%A',\n TMDy: '%a',\n TMMon: '%b',\n TMMonth: '%B',\n TZ: '%Z',\n US: '%f',\n ww: '%U',\n WW: '%U',\n yy: '%y',\n YY: '%y',\n yyyy: '%Y',\n YYYY: '%Y',\n };\n }\n\n static Tokenizer = PostgresTokenizer;\n static Parser = PostgresParser;\n static Generator = PostgresGenerator;\n}\n\nDialect.register(Dialects.POSTGRES, Postgres);\n"],"mappings":"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CACH,CAzeA,IAAAK,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,EA2eaC,EAAN,cAAgCF,GAAAG,EACrCJ,GAAA,CAACK,GAeDN,GAAA,CAACM,GAeDP,GAAA,CAACO,GAcDR,GAAA,CAACQ,GAQDT,GAAA,CAACS,GAUDV,GAAA,CAACU,GAsDDX,GAAA,CAACW,GAQDZ,GAAA,CAACY,GA7HoCJ,GAAU,CAE/C,WAAW,aAA4B,CACrC,MAAO,CACL,CACE,KACA,GACF,EACA,CACE,KACA,GACF,EACA,IACF,CACF,CAGA,WAAW,aAA4B,CACrC,MAAO,CACL,CACE,KACA,GACF,EACA,CACE,KACA,GACF,EACA,IACF,CACF,CAGA,WAAW,cAA6B,CACtC,MAAO,CACL,CACE,KACA,GACF,EACA,CACE,KACA,GACF,CACF,CACF,CAGA,WAAW,qBAAuB,CAChC,MAAO,CACL,IACA,IACF,CACF,CAGA,WAAW,iBAAgC,CACzC,MAAO,CACL,GACF,CACF,CAMA,WAAW,mBAAgD,CACzD,GAAM,CACJ,MAAOK,EAAI,IAAKC,EAAI,GAAGC,CACzB,EAAIJ,EAAU,SACd,MAAO,CACL,GAAGI,EACH,YACA,WACA,YACA,YACA,gBACA,iBACA,gBACA,iBACA,mBACA,cACA,sBACA,+BACA,qBACA,kBACA,aACA,eACA,gBACA,cACA,cACA,YACA,uBACA,YACA,cACA,kBACA,kBACA,gBACA,gBACA,0BACA,iBACA,4BACA,gCACA,6BACA,iCACA,gCACA,2BACA,+BACA,2BACA,gCACA,2BACA,2BACA,eACA,UACA,oBACA,aACF,CACF,CAGA,WAAW,eAA4C,CACrD,MAAO,CACL,GAAGJ,EAAU,cACb,iBACF,CACF,CAGA,WAAW,mBAAqB,CAC9B,OAAO,IAAI,IAAI,CACb,GACF,CAAC,CACH,CACF,EAnIOF,EAAAO,EAAAR,IAELS,EAAAR,EAAA,GAAW,cADXF,GADWG,GAiBXO,EAAAR,EAAA,GAAW,cADXH,GAhBWI,GAgCXO,EAAAR,EAAA,GAAW,eADXJ,GA/BWK,GA8CXO,EAAAR,EAAA,GAAW,sBADXL,GA7CWM,GAsDXO,EAAAR,EAAA,GAAW,kBADXN,GArDWO,GAgEXO,EAAAR,EAAA,GAAW,oBADXP,GA/DWQ,GAsHXO,EAAAR,EAAA,GAAW,gBADXR,GArHWS,GA8HXO,EAAAR,EAAA,GAAW,oBADXT,GA7HWU,GAANQ,EAAAT,EAAMC,GAANS,EAAAV,EAAA,EAAMC,KA4DJ,0BAA4B,GA5DxBA,EA6DJ,2BAA6B,YAxiBtC,IAAAU,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAA1B,GAAAC,EAgnBM0B,EAAN,cAA6B3B,GAAA4B,EAE3BF,GAAA,CAACtB,GAaDqB,GAAA,CAACrB,GAgBDoB,GAAA,CAACpB,GAeDmB,GAAA,CAACnB,GAiEDkB,GAAA,CAAClB,GAYDiB,GAAA,CAACjB,GAmBDgB,GAAA,CAAChB,GAQDe,GAAA,CAACf,GAODc,GAAA,CAACd,GAgBDa,GAAA,CAACb,GAUDY,GAAA,CAACZ,GAaDW,GAAA,CAACX,GA2BDU,GAAA,CAACV,GAsKDS,GAAA,CAACT,GASDQ,GAAA,CAACR,GA9Y0BJ,GAAO,CAGlC,WAAW,oBAAsB,CAC/B,IAAM6B,EAAmB,CACvB,GAAGD,EAAO,kBACZ,EACA,OAAAC,EAAiB,cAA4BC,GAC7CD,EAAiB,YAA0BE,GAC3CF,EAAiB,eAA6BG,GACvCH,CACT,CAKA,WAAW,kBAAiH,CAC1H,OAAQ,IAAM,CACZ,IAAMI,EAAuG,CAC3G,GAAGL,EAAO,iBACV,IAAK,UAAwB,CAC3B,OAAO,KAAK,WAAWM,GAAuB,CAC5C,KAAO,KAAwB,SAAS,CAC1C,CAAC,CACH,CACF,EACA,cAAOD,EAAQ,MACRA,CACT,GAAG,CACL,CAGA,WAAW,qBAA6F,CACtG,MAAO,CACL,GAAGL,EAAO,oBACT,YAAwB,UAAwB,CAC/C,OAAO,KAAK,WAAWO,EAAiB,CACtC,KAAM,EACR,CAAC,CACH,EACC,IAAgB,UAAwB,CACvC,OAAQ,KAAwB,oBAAoB,CACtD,CACF,CACF,CAGA,WAAW,WAA8F,CACvG,MAAO,CACL,GAAGP,EAAO,UACV,cAAgBxE,GAAuB,IAAIgF,GAAiB,CAC1D,KAAM9E,EAAOF,EAAM,CAAC,EACpB,WAAYE,EAAOF,EAAM,CAAC,CAC5B,CAAC,EACD,QAAUA,GAAoBiF,GAAkB,YAAYjF,CAAI,EAChE,OAASA,GAAoBkF,GAAiB,YAAYlF,CAAI,EAC9D,QAAUA,GAAoBmF,GAAkB,YAAYnF,CAAI,EAChE,QAAUA,GAAoBoF,GAAmB,YAAYpF,CAAI,EACjE,WAAYqF,GACZ,IAAMrF,GAAuB,IAAImC,EAAS,CACxC,KAAMmD,GAAmBC,CAAU,EAAEvF,CAAI,EACzC,GAAIT,EAAa,MAAM,SAAS,CAClC,CAAC,EACD,gBAAiBQ,GACjB,QAAUC,GAAuB,IAAIwF,GAAW,CAC9C,KAAMtF,EAAOF,EAAM,CAAC,EACpB,WAAYE,EAAOF,EAAM,CAAC,EAC1B,UAAW,EACb,CAAC,EACD,kBAAmByF,EAAqBC,CAAe,EACvD,uBAAwBD,EAAqBE,CAAqB,EAClE,OAAS3F,GAAuB,IAAI4F,GAAW,CAC7C,KAAM1F,EAAOF,EAAM,CAAC,EACpB,SAAUE,EAAOF,EAAM,CAAC,CAC1B,CAAC,EACD,UAAYA,GAAoB6F,GAAkB,YAAY7F,CAAI,EAClE,eAAiBA,GAAoB8F,GAAuB,YAAY9F,CAAI,EAC5E,IAAMA,GAAoB+F,GAAqB,YAAY/F,CAAI,EAC/D,eAAgBa,GAChB,QAASN,EAAmByF,GAAe,CACzC,QAAS,UACX,CAAC,EACD,QAASzF,EAAmB0F,GAAe,CACzC,QAAS,UACX,CAAC,EACD,aAAc5F,GACd,OAASL,GAAoBkG,GAAY,YAAYlG,CAAI,EACzD,OAASA,GAAuB,IAAImG,EAAS,CAC3C,KAAMjG,EAAOF,EAAM,CAAC,EACpB,OAAQ3B,EAAY,OAAO,GAAG,CAChC,CAAC,EACD,OAAS2B,GAAuB,IAAImG,EAAS,CAC3C,KAAMjG,EAAOF,EAAM,CAAC,EACpB,OAAQ3B,EAAY,OAAO,GAAG,CAChC,CAAC,EACD,OAAS2B,GAAuB,IAAImG,EAAS,CAC3C,KAAMjG,EAAOF,EAAM,CAAC,EACpB,OAAQ3B,EAAY,OAAO,GAAG,CAChC,CAAC,EACD,uBAAwBkD,GACxB,gBAAkBvB,GAAoBoG,GAAkB,YAAYpG,CAAI,EACxE,iBAAmBA,GAAoBqG,GAAmB,YAAYrG,CAAI,EAC1E,aAAeA,GAAuBA,EAAK,SAAW,EAClD,IAAIsG,GAAgB,CACpB,KAAMpG,EAAOF,EAAM,CAAC,EACpB,UAAWE,EAAOF,EAAM,CAAC,CAC3B,CAAC,EACCsG,GAAgB,YAAYtG,CAAI,CACtC,CACF,CAGA,WAAW,2BAAgG,CACzG,MAAO,CACL,GAAGwE,EAAO,0BACV,SAAU,UAAwB,CAChC,OAAO,KAAK,WAAW+B,GAAc,CACnC,KAAO,KAAwB,aAAa,CAC9C,CAAC,CACH,CACF,CACF,CAGA,WAAW,kBAAuF,CAChG,MAAO,CACL,GAAG/B,EAAO,iBACV,UAAW,UAAwB,CACjC,OAAQ,KAAwB,cAAc,CAChD,EACA,SAAU,UAAwB,CAChC,OAAO,KAAK,WAAWgC,GAAkB,CACvC,KAAO,KAAwB,YAAY,EAC3C,MAAQ,KAAwB,WAAW,CAC7C,CAAC,CACH,EACA,aAAc,UAAwB,CACpC,OAAQ,KAAwB,iBAAiB,CACnD,CACF,CACF,CAGA,WAAW,SAA0D,CACnE,MAAO,CACL,GAAGhC,EAAO,QACT,KAAiBiC,CACpB,CACF,CAGA,WAAW,UAAY,CACrB,MAAO,CACJ,MAAkBnF,EACrB,CACF,CAGA,WAAW,eAA0G,CACnH,MAAO,CACL,GAAGkD,EAAO,cACT,KAAiBkC,GAAkBC,EAAiB,EACpD,IAAgB,SAAwBC,EAAsB,CAC7D,OAAO,KAAK,WAAWC,GAAkB,CACvC,KAAO,KAAwB,aAAa,EAC5C,YAAa,CACXD,CACF,CACF,CAAC,CACH,CACF,CACF,CAGA,WAAW,mBAA2F,CACpG,MAAO,CACL,GAAGpC,EAAO,kBACT,IAAgB,UAAwB,CACvC,OAAQ,KAAwB,sBAAsB,CACxD,CACF,CACF,CAGA,WAAW,eAAuF,CAChG,MAAO,CACL,GAAGA,EAAO,cACT,MAAkB,UAAwB,CACzC,OAAO,KAAK,WAAWsC,GAAgB,CACrC,KAAO,KAAwB,WAAW,CAC5C,CAAC,CACH,CACF,CACF,CAIA,WAAW,kBAAiI,CAC1I,MAAO,CACL,GAAGtC,EAAO,iBACT,MAAkB,SAAwBoC,EAAuBG,EAAmB,CACnF,OAAO,KAAK,mBACVtB,EAAqBC,EAAiB,CACpC,iBAAmB,KAAK,YAAsC,6BAChE,CAAC,EAAE,CACDkB,EACAG,CACF,CAAC,CACH,CACF,EACC,OAAmB,SAAwBH,EAAuBG,EAAmB,CACpF,OAAO,KAAK,mBACVtB,EAAqBE,EAAuB,CAC1C,iBAAmB,KAAK,YAAsC,6BAChE,CAAC,EAAE,CACDiB,EACAG,CACF,CAAC,CACH,CACF,CACF,CACF,CAGA,WAAW,iBAAmB,CAC5B,OAAO,IAAI,IAAI,8BAKf,CAAC,CACH,CAEA,oBAA6C,CAC3C,GAAI,CAAC,KAAK,SAAU,KAAK,YAAsC,gBAAiB,CAC9E,QAAS,EACX,CAAC,GAAK,CAAC,KAAK,KACV,OAGF,IAAMC,EAAY,KAAK,KAqBvB,GAlBgC,KAAK,SACnC,KACE,KAAK,QAAQ,EACN,KAAK,WAAW,CACrB,UAAW,GACX,iBAAkB,EACpB,CAAC,GAEH,CACE,QAAS,EACX,CACF,GAOI,CAAC,KAAK,MAAQ,CAAE,KAAK,YAAsC,cAAc,IAAI,KAAK,KAAK,SAAS,EAClG,OAgBF,GAb4B,KAAK,SAC/B,KACE,KAAK,QAAQ,CAAC,EACP,KAAK,WAAW,CACrB,UAAW,GACX,iBAAkB,EACpB,CAAC,GAEH,CACE,QAAS,EACX,CACF,EAGE,OAAOA,GAAW,SAItB,CAEA,qBAAsBC,EAAiD,CACrE,OAAO,KAAK,WAAWC,EAA2B,CAChD,MAAOD,IAAc,MAAgBA,IAAc,QACnD,OAAQA,IAAc,OAAiBA,IAAc,QACrD,SAAUA,IAAc,UAC1B,CAAC,CACH,CAEA,wBAAkD,CAChD,IAAMA,EAAY,KAAK,mBAAmB,EAEtCA,GACF,KAAK,QAAQ,EAGf,IAAME,EAAY,KAAK,WAAW,EAC5BC,EAAY,KAAK,eAAeD,EAAW,CAC/C,eAAgB,EAClB,CAAC,EAED,GAAIF,GAAaG,aAAqBhI,EAAe,CACnD,IAAMiI,EAAa,KAAK,qBAAqBJ,CAAS,EACjDG,EAAU,KAAK,aAClBA,EAAU,UAAU,cAAe,CACnC,CAAC,EAEHA,EAAU,KAAK,aAAa,QAAQ,IAAIzH,EAAqB,CAC3D,KAAM0H,CACR,CAAC,CAAC,CACJ,CAEA,OAAOD,CACT,CAEA,qBAA+C,CAC7C,IAAMR,EAAW,KAAK,eAAyB,CAC7C,QAAS,EACX,CAAC,EACG,KAAK,aAAa,IAAM,KAAK,WAAW,CAAC,EACzC,OAEJ,YAAK,aAAa,GAAG,EACd,KAAK,WAAW7B,EAAiB,CACtC,KAAM6B,CACR,CAAC,CACH,CAEA,eAA6B,CAC3B,IAAIU,EAAO,KAAK,UAAU,EAC1B,KAAK,aAAqB,EAC1B,IAAMC,EAAQ,KAAK,aAAa,EAEhC,OAAID,IAASA,aAAgBE,IAAcF,aAAgBjJ,KACzDiJ,EAAOG,GAAKH,EAAK,IAAI,GAGhB,KAAK,WAAWI,GAAa,CAClC,KAAMJ,EACN,WAAYC,CACd,CAAC,CACH,CAEA,gBAA0C,CAE1C,CAEA,kBAAqC,CACnC,OAAO,KAAK,WAAWI,GAAiB,CACtC,KAAM,KAAK,aAAa,EACxB,KAAM,KAAK,aAAqB,GAAK,KAAK,QAAQ,WAAW,KAAK,aAAa,CAAC,CAClF,CAAC,CACH,CAEA,0BAAyI,CACvI,IAAIf,EAAW,MAAM,yBAAyB,EAE9C,OAAI,KAAK,aAAa,QAAQ,IAC5BA,EAAW,KAAK,WAAWgB,GAA8B,CACvD,KAAMhB,EAAS,KAAK,UACtB,CAAC,GAGIA,CACT,CAEA,qBAAsBiB,EAAoD,CACxE,IAAIC,EAAoCD,EAExC,KAAO,KAAK,WAAmB,GAAG,CAChC,IAAMP,EAAO,KAAK,WAAW,EACzBA,IACFQ,EAAU,IAAIC,GAAQ,CACpB,KAAMD,EACN,WAAYR,CACd,CAAC,EAEL,CAEA,OAAO/H,EAAa,MAAMuI,EAAS,CACjC,IAAK,EACP,CAAC,CACH,CAIA,WAAW,eAAiC,CAC1C,OAAO,IAAI,IAAI,CACb,GAAGtD,EAAO,4BAEZ,CAAC,CACH,CAIA,WAAW,oBAAsC,CAC/C,OAAO,IAAI,IAAI,CACb,GAAGA,EAAO,iCAEZ,CAAC,CACH,CACF,EArZA3B,EAAAO,EAAAR,IAGES,EAAAR,EAAA,GAAW,qBADXyB,GAFIC,GAgBJlB,EAAAR,EAAA,GAAW,mBADXwB,GAfIE,GAgCJlB,EAAAR,EAAA,GAAW,sBADXuB,GA/BIG,GA+CJlB,EAAAR,EAAA,GAAW,YADXsB,GA9CII,GAgHJlB,EAAAR,EAAA,GAAW,4BADXqB,GA/GIK,GA4HJlB,EAAAR,EAAA,GAAW,mBADXoB,GA3HIM,GA+IJlB,EAAAR,EAAA,GAAW,UADXmB,GA9IIO,GAuJJlB,EAAAR,EAAA,GAAW,WADXkB,GAtJIQ,GA8JJlB,EAAAR,EAAA,GAAW,gBADXiB,GA7JIS,GA8KJlB,EAAAR,EAAA,GAAW,oBADXgB,GA7KIU,GAwLJlB,EAAAR,EAAA,GAAW,gBADXe,GAvLIW,GAqMJlB,EAAAR,EAAA,GAAW,mBADXc,GApMIY,GAgOJlB,EAAAR,EAAA,GAAW,kBADXa,GA/NIa,GAsYJlB,EAAAR,EAAA,GAAW,gBADXY,GArYIc,GA+YJlB,EAAAR,EAAA,GAAW,qBADXW,GA9YIe,GAANjB,EAAAT,EAAM0B,GAANhB,EAAAV,EAAA,EAAM0B,KAaG,oCAAsC,GAbzCA,EAmMG,8BAAgC,GAnzBzC,IAAAyD,GAAAC,GAAAC,GAAAC,GAAAC,GAAAxF,GAAAC,EAsgCMwF,EAAN,cAAgCzF,GAAA0F,EAE9BF,GAAA,CAACpF,GA6CDmF,GAAA,CAACnF,GASDkF,GAAA,CAAClF,GAqEDiF,GAAA,CAACjF,GAsaDgF,GAAA,CAAChF,GAniB6BJ,GAAU,CAGxC,WAAW,kCAAoC,CAC7C,IAAM2F,EAAY,IAAI,IAAI,MAAM,gCAAgC,EAChE,OACE,UACA,aACA,MACF,EAAE,QAASC,GAAMD,EAAU,OAAOC,CAAC,CAAC,EAC7BD,CACT,CAqCA,WAAW,2BAAqD,CAC9D,OAAO,IAAI,IAAI,CACbE,EACAC,EACAC,CACF,CAAC,CACH,CAGA,WAAW,cAAwD,CACjE,OAAO,IAAI,IAAuC,CAChD,GAAGL,EAAU,aACb,WAEE,UACF,EACA,SAEE,MACF,EACA,UAEE,kBACF,EACA,UAEE,OACF,EACA,aAEE,OACF,EACA,cAEE,OACF,EACA,YAEE,WACF,EACA,gBAEE,WACF,EACA,QAEE,OACF,CACF,CAAC,CACH,CAEA,WAAYxK,EAAiC,CAC3C,IAAI8K,EAAM,MAAM,WAAW9K,CAAU,EAErC,OAAIA,EAAW,KAAK,aAAe,SACjC8K,EAAM,GAAGA,CAAG,YAGPA,CACT,CAEA,gBAAiBxK,EAA6B,CAC5C,OAAO,KAAK,OAAOA,EAAG,IAAI,CAC5B,CAEA,sBAAuBA,EAAmC,CACxD,OAAO,KAAK,OAAOA,EAAG,KAAK,CAC7B,CAEA,WAAYA,EAAwB,CAClC,OAAO,KAAK,KAAK,SAAU,CACzBA,EAAE,KAAK,KACP,GAAGA,EAAE,KAAK,aAAe,CACzB,CACF,CAAC,CACH,CAIA,WAAW,qBAAoF,CAE7F,IAAMyK,EAAa,IAAI,IAA4D,CACjF,GAAGP,EAAU,WACb,CACEQ,GACAlH,EACF,EACA,CACEmH,GACAC,GAAe,WAAW,CAC5B,EACA,CACEC,GACAC,EACF,EACA,CACEC,GACAC,GAAe,cAAc,CAC/B,EACA,CACEpE,GACAoE,GAAe,gBAAiB,CAC9B,WAAY,EACd,CAAC,CACH,EACA,CACEnE,GACAtD,EAAW,SAAS,CACtB,EACA,CACEuD,GACAvD,EAAW,QAAQ,CACrB,EACA,CACE8E,EACA,SAA2BrI,EAAmB,CAC5C,OAAO,KAAK,OAAOA,EAAG,GAAG,CAC3B,CACF,EACA,CACE+G,GACAxD,EAAW,SAAS,CACtB,EACA,CACEvC,EACAiK,EAAW,CACTpK,GACAO,EACF,CAAC,CACH,EACA,CACE8J,GACAC,EACF,EACA,CACExD,GACA,IAAM,mBACR,EACA,CACEyD,GACA,IAAM,cACR,EACA,CACEpE,GACAzD,EAAW,SAAS,CACtB,EACA,CACE8H,GACA7L,GAAW,GAAG,CAChB,EACA,CACE8L,GACAnL,EACF,EACA,CACEoL,GACAC,EACF,EACA,CACEC,GACAjM,GAAW,GAAG,CAChB,EACA,CACEsI,GACAvE,EAAW,QAAQ,CACrB,EACA,CACEvB,EACAuB,EAAW,iBAAiB,CAC9B,EACA,CACE6D,GACAsE,EACF,EACA,CACEC,GACA,SAA2B3L,EAAoB,CAC7C,OAAO4L,GAAe,KAAK,KAAM5L,EAAG,CAClC,SAAU,aACV,YAAa,EACf,CAAC,CACH,CACF,EACA,CACEmH,EACA5D,EAAW,KAAK,CAClB,EACA,CACE6E,GACA,SAA2BpI,EAAqB,CAC9C,IAAMF,EAAU,KAAK,IAAIE,EAAG,MAAM,EAC5B6L,EAAW,KAAK,IAAI7L,EAAG,OAAO,EAEpC,MAAO,YADO6L,EAAW,GAAG/L,CAAO,GAAG+L,CAAQ,GAAK/L,CAC3B,GAC1B,CACF,EACA,CACEwH,EACAjF,GAAe,oBAAqB,IAAI,CAC1C,EACA,CACEkF,EACAlF,GAAe,yBAA0B,KAAK,CAChD,EACA,CACEyJ,GACA,SAA2B9L,EAAqB,CAC9C,OAAO,KAAK,OAAOA,EAAG,IAAI,CAC5B,CACF,EACA,CACE+L,GACA,SAA2B/L,EAA2B,CACpD,OAAO,KAAK,OAAOA,EAAG,KAAK,CAC7B,CACF,EACA,CACEgM,GACA,SAA2BhM,EAAsB,CAC/C,OAAO,KAAK,OAAOA,EAAG,GAAG,CAC3B,CACF,EACA,CACEiM,GACA,SAA2BjM,EAAkB,CAC3C,OAAO,KAAK,IAAI,IAAI+D,EAAS,CAC3B,KAAM/D,EAAE,KAAK,KACb,GAAImB,EAAa,MAAM,MAAM,CAC/B,CAAC,CAAC,CACJ,CACF,EACA,CACEkJ,EACA6B,EACF,EACA,CACE5B,EACA,IAAM,EACR,EACA,CACEC,EACA,SAA2BvK,EAA0B,CACnD,OAAO,KAAK,aAAaA,EAAE,KAAK,IAAI,CACtC,CACF,EACA,CACEmM,GACAC,EACF,EACA,CACEC,GACA9I,EAAW,SAAS,CACtB,EACA,CACE+I,GACA/I,EAAW,UAAU,CACvB,EACA,CACEgJ,GACAC,EACF,EACA,CACEC,GACAC,EACF,EACA,CACEC,GACAC,EACF,EACA,CACEC,GACAC,EACF,EACA,CACEC,EACA,SAA2B/M,EAA8B,CACvD,MAAO,gBAAgB,KAAK,IAAIA,EAAG,MAAM,CAAC,EAC5C,CACF,EACA,CACEgN,GACA/B,EAAW,CACTgC,EACF,CAAC,CACH,EACA,CACEC,GACAjC,EAAW,CACTgC,EACF,CAAC,CACH,EACA,CACEE,GACAC,EACF,EACA,CACEC,GACA9J,EAAW,QAAQ,CACrB,EACA,CACE+J,GACA,SAA2BtN,EAAmB,CAC5C,OAAO,KAAK,OAAOA,EAAG,GAAG,CAC3B,CACF,EACA,CACEuN,GACA,SAA2BvN,EAAoB,CAC7C,OAAO,KAAK,OAAOA,EAAG,IAAI,CAC5B,CACF,EACA,CACE4C,EACA,SAA2B5C,EAAsB,CAC/C,OAAO,KAAK,KAAK,iBAAkB,CACjCA,EAAE,KAAK,KACPA,EAAE,KAAK,WACPA,EAAE,KAAK,YACPA,EAAE,KAAK,SACPA,EAAE,KAAK,WACPwN,GAA4BxN,CAAC,CAC/B,CAAC,CACH,CACF,EACA,CACEyN,GACA/J,EACF,EACA,CACEgK,EACAzC,EAAW,CACT0C,GACAC,EACF,CAAC,CACH,EACA,CACE7F,EACA8F,EACF,EACA,CACEC,GACAC,EACF,EACA,CACEC,GACA,SAA2BhO,EAAoB,CAC7C,OAAOiO,GAAe,KAAK,KAAMjO,EAAG,CAClC,SAAU,UACZ,CAAC,CACH,CACF,EACA,CACE6H,GACA,SAA2B7H,EAAkB,CAC3C,OAAO,KAAK,KAAK,UAAW,CAC1BA,EAAE,KAAK,KACP,KAAK,WAAWA,CAAC,CACnB,CAAC,CACH,CACF,EACA,CACEoC,GACA,SAA2BpC,EAAkB,CAC3C,OAAO,KAAK,KAAK,eAAgB,CAC/BA,EAAE,KAAK,KACP,KAAK,WAAWA,CAAC,CACnB,CAAC,CACH,CACF,EACA,CACEkO,GACAC,EACF,EACA,CACEC,GACA3N,EACF,EACA,CACEgH,GACAlE,EAAW,WAAW,CACxB,EACA,CACEmE,GACAnE,EAAW,gBAAgB,CAC7B,EACA,CACE8K,GACAC,GAAkB,CAChB,KAAM,EACR,CAAC,CACH,EACA,CACEC,GACAC,EACF,EACA,CACE5G,GACA,SAA2B5H,EAAkB,CAC3C,OAAI,OAAOA,EAAE,KAAK,QAAW,UAAYA,EAAE,KAAK,QAAQ,SAC/C,KAAK,KAAK,UAAW,CAC1BA,EAAE,KAAK,KACP,KAAK,WAAWA,CAAC,CACnB,CAAC,EAEI,KAAK,KAAK,UAAW,CAC1BA,EAAE,KAAK,KACPA,EAAE,KAAK,MACT,CAAC,CACH,CACF,EACA,CACEyO,GACA,SAA2BzO,EAAe,CACxC,OAAOA,EAAE,KAAK,OAAS,KAAK,oBAAoBA,CAAC,EAAK,KAA2B,UAAUA,CAAC,CAC9F,CACF,EACA,CACE0O,GACAC,EACF,EACA,CACEC,GACAC,EACF,EACA,CACEjP,GACAJ,GAAW,GAAG,CAChB,EACA,CACEsP,GACA3O,EACF,EACA,CACE+B,EACAW,EACF,EACA,CACEkM,GACA,IAAM,mBACR,EACA,CACEC,GACA,SAA2BhP,EAAmB,CAC5C,OAAO,KAAK,KAAK,YAAa,CAC5BC,EAAY,OAAO,OAAO,EAC1BD,EAAE,KAAK,IACT,CAAC,CACH,CACF,EACA,CACEiP,GACA1L,EAAW,SAAS,CACtB,EACA,CACE2L,GACA3L,EAAW,UAAU,CACvB,EACA,CACE4L,GACAC,EACF,EACA,CACEC,GACA9L,EAAW,OAAO,CACpB,EACA,CACEF,GACAC,EACF,EACA,CACE0E,GACAzE,EAAW,iBAAiB,CAC9B,EACA,CACE0E,GACA1E,EAAW,kBAAkB,CAC/B,EACA,CACE+L,GACAC,EACF,EACA,CACEC,GACA,SAA2BxP,EAAa,CAElCA,EAAE,KAAK,aAAe,EAAIA,EAAE,KAAK,YAAY,QAC/C,KAAK,YAAY,wEAAwE,EAE3F,IAAMyP,EAAYzP,EAAE,KAAK,UAAY,aAAe,GAC9C0P,EAAW1P,EAAE,KAAK,SAAW,YAAc,GAC3C2P,EAAWF,GAAaC,EAC9B,MAAO,GAAG,KAAK,IAAI,MAAM,CAAC,GAAGC,CAAQ,IAAI,KAAK,IAAI3P,EAAG,MAAM,CAAC,EAC9D,CACF,CACF,CAAC,EACD,OAAAyK,EAAW,OAAOmF,EAA2B,EACtCnF,CACT,CAGA,WAAW,qBAAuB,CAChC,IAAML,EAAI,IAAI,IAAIF,EAAU,mBAAmB,EAC/C,OAAAE,EAAE,IAAI2C,cAAyD,EAC/D3C,EAAE,IAAIyF,gBAAqD,EAC3DzF,EAAE,IAAI0F,gBAAoD,EACnD1F,CACT,CAEA,yBAA0B2F,EAAgD,CACxE,YAAK,YAAY,0DAA0D,EACpE,EACT,CAEA,2BAA4BA,EAAkD,CAC5E,YAAK,YAAY,2DAA2D,EACrE,EACT,CAEA,aAAcrQ,EAA2BsQ,EAA0B,CAAC,EAAW,CAC7E,GAAM,CACJ,IAAAC,EAAM,GACR,EAAID,EACEE,EAAkBxQ,EAAW,KAAKoJ,CAAyB,EAEjE,GAAIoH,EAAiB,CACnB,IAAMC,EAAU,KAAK,IAAID,CAAe,EACxCA,EAAgB,IAAI,EACpB,IAAME,EAAU,MAAM,aAAa1Q,EAAY,CAC7C,IAAAuQ,CACF,CAAC,EACD,MAAO,GAAGE,CAAO,IAAIC,CAAO,EAC9B,CAEA,OAAO,MAAM,aAAa1Q,EAAY,CACpC,IAAAuQ,CACF,CAAC,CACH,CAEA,UAAWvQ,EAAgC,CACzC,GAAIA,EAAW,KAAK,aAAa,SAAW,EAAG,CAC7C,IAAM2Q,EAAM3Q,EAAW,KAAK,YAAY,CAAC,EACzC,GAAI2Q,aAAeC,GAAuB,CACxC,IAAIC,EAA6B,IAAIC,GAAmB,CACtD,GAAGH,EAAI,IACT,CAAC,EACD,OAAI3Q,EAAW,kBAAkB+Q,IAAY/Q,EAAW,kBAAkBgR,MACxEH,EAAiBI,GAAO,aAAa,EAClC,KAAK,IAAIC,GAAU,CAClB,KAAML,CACR,CAAC,EAAE,GAAG,KAAM,CACV,MAAO,CACL,OACF,CACF,CAAC,CAAC,EACD,SAAS7Q,EAAW,KAAK,iBAAiBmE,GAAsC,OAAOnE,EAAW,KAAK,OAAU,SAA1DA,EAAW,KAAK,MAA6E,2BAA4B,GAE9K,KAAK,IAAI6Q,CAAc,CAChC,CAEA,IAAM/H,EAAW6H,aAAexM,EAC5BgN,GAAcR,EAAK,CACnB,QAAS,KAAK,OAChB,CAAC,EACCA,EACJ,GAAIS,GAAOtI,EAAU,aAAa,EAAG,CACnC,IAAIuI,EAAUvI,EACd,KAAOuI,aAAmBhN,GAAU,CAClC,IAAMiN,GAAQD,EAAQ,KAAK,KAC3B,GAAIC,cAAiBnN,EACnBkN,EAAUC,OAEV,MAEJ,CAEA,IAAMC,EAAY,KAAK,IAAI,IAAIlN,EAAS,CACtC,KAAMgN,EACN,GAAI5P,EAAa,MAAM,MAAM,CAC/B,CAAC,CAAC,EACE+P,EAAQ,KAAK,IAAIxR,EAAY,OAAO,EACxC,OAAAwR,EAAQA,EAAQ,OAAOA,CAAK,GAAK,GAE7BxR,EAAW,KAAK,QAClB,KAAK,YAAY,6CAA6C,EAGzD,uBAAuBuR,CAAS,IAAIC,CAAK,EAClD,CACF,CAEA,OAAO,MAAM,UAAUxR,CAAU,CACnC,CAEA,WAAYA,EAAiC,CAC3C,OAAIA,EAAW,KAAK,gBAAgByR,IAClCzR,EAAW,UAAU,OAAQ,IAAI0R,EAAU,CACzC,KAAM1R,EAAW,KAAK,IACxB,CAAC,CAAC,EAGG,MAAM,WAAWA,CAAU,CACpC,CAEA,gBAAiBA,EAAsC,CACrD,IAAMI,EAAU,KAAK,IAAIJ,EAAY,MAAM,EACrC2R,GAAe3R,EAAW,KAAK,aAAe,CACpD,GAAG,IAAKM,GAAM,GAAG,KAAK,IAAIA,CAAC,CAAC,OAAOF,CAAO,EAAE,EACtC0K,EAAM6G,EAAY,KAAK,MAAM,EACnC,MAAO,GAAIA,EAAY,OAAS,IAAI7G,CAAG,IAAMA,CAC/C,CAEA,YAAa9K,EAAkC,CAC7C,IAAI4R,EAAQ,KAAK,YAAY5R,EAAY,CACvC,KAAM,EACR,CAAC,EACD4R,EAAQA,EAAQ,IAAIA,CAAK,IAAM,GAE/B,IAAIC,EAAe,KAAK,IAAI7R,EAAY,cAAc,EACtD6R,EAAeA,EAAe,iBAAiBA,CAAY,GAAK,GAChE,IAAIC,EAAa,KAAK,IAAI9R,EAAY,YAAY,EAClD8R,EAAaA,EAAa,cAAcA,CAAU,GAAK,GACvD,IAAMC,EAAS,KAAK,IAAI/R,EAAY,QAAQ,EAE5C,MAAO,OAAO4R,CAAK,GAAGC,CAAY,GAAGC,CAAU,GAAGC,CAAM,EAC1D,CAEA,YAAa/R,EAAkC,CAC7C,GAAIA,EAAW,cAA6B,EAAG,CAC7C,GAAIA,EAAW,KAAK,aAAe,EAAIA,EAAW,KAAK,YAAY,OAAQ,CACzE,IAAMgS,EAAS,KAAK,YAAYhS,EAAY,CAC1C,IAAK,SACL,KAAM,EACR,CAAC,EACD,MAAO,GAAG,KAAK,YAAYA,EAAY,CACrC,KAAM,EACR,CAAC,CAAC,IAAIgS,CAAM,GACd,CACA,MAAO,OACT,CAEA,OACEhS,EAAW,OAAO,iBAGlB,CAAC,GACEA,EAAW,KAAK,aAChB,EAAIA,EAAW,KAAK,YAAY,OAE5B,SAAS,KAAK,YAAYA,EAAY,CAC3C,KAAM,EACR,CAAC,CAAC,IAGG,MAAM,YAAYA,CAAU,CACrC,CAEA,QAASA,EAAsBsQ,EAAiC,CAAC,EAAW,CAC1E,GAAM,CACJ,WAAA2B,CACF,EAAI3B,EACExH,EAAW9I,EAAW,KAAK,KAEjC,OACE8I,aAAoBrB,GACjBzH,EAAW,KAAK,cAAcyB,GAC9BzB,EAAW,KAAK,GAAG,gBAA+B,GAClD,CAACA,EAAW,KAAK,GAAG,KAAK,aAAa,OAElC,KAAK,IAAI8I,CAAQ,EAGnB,MAAM,QAAQ9I,EAAY,CAC/B,WAAAiS,CACF,CAAC,CACH,CAEA,SAAUjS,EAA+B,CACvC,IAAM4R,EAAQ5R,EAAW,KAAK,aAAe,CAC7C,EACMkS,EAAW,KAAK,cAAc,OAAO,EAE3C,OAAIN,EAAM,CAAC,YAAa5D,EACf,GAAGkE,CAAQ,IAAI,KAAK,IAAIN,EAAM,CAAC,CAAC,CAAC,IAGnC,GAAGM,CAAQ,GAAGC,GAAe,KAAK,KAAMnS,CAAU,CAAC,EAC5D,CAEA,4BAA6BA,EAAkD,CAC7E,MAAO,wBAAwB,KAAK,IAAIA,EAAY,MAAM,CAAC,UAC7D,CAEA,WAAYA,EAAiC,CAC3C,MAAO,IAAI,KAAK,IAAIA,EAAW,KAAK,IAAI,CAAC,sBAC3C,CAEA,eAAgBA,EAAqC,CACnD,YAAK,YAAY,2CAA2C,EACrD,KAAK,IAAIA,EAAW,KAAK,IAAI,CACtC,CAEA,gBAAiBA,EAAsC,CACrD,YAAK,YAAY,4CAA4C,EACtD,KAAK,IAAIA,EAAW,KAAK,IAAI,CACtC,CAEA,iBAAkBA,EAAuC,CACvD,OAAIA,EAAW,KAAK,MAClB,KAAK,YAAY,2CAA6C,EAEzD,gBACT,CAEA,YAAaA,EAAkC,CAC7C,IAAMK,EAAOL,EAAW,KAAK,MAAM,EAAE,YAAY,EAC3C8I,EAAW9I,EAAW,KAAK,KAEjC,OAAIK,EAAK,WAAW,SAAS,GAAKyI,aAAoBvI,IACpDuI,EAAS,UAAU,QAAS,SAASA,EAAS,KAAK,MAAQ,GAAG,EAAI,GAAG,SAAS,CAAC,EAC/E9I,EAAW,KAAK,MAAM,QAAQ,IAAIoS,GAAe,CAC/C,KAAM,OACR,CAAC,CAAC,GAGG,MAAM,YAAYpS,CAAU,CACrC,CAEA,eAAgBA,EAAqC,CACnD,GAAIA,EAAW,KAAK,KAClB,MAAO,IAGT,IAAMqS,EAAWrS,EAAW,KAAK,KAAO,IAAIA,EAAW,IAAI,IAAM,GACjE,MAAO,GAAI,KAAK,YAAyC,uBAAuB,GAAGqS,CAAQ,GAC7F,CAEA,iBAAkBrS,EAAuC,CACvD,IAAMyJ,EAAQzJ,EAAW,KAAK,WACxBsS,EAAQtS,EAAW,KAAK,KAE9B,GAAI,CAACyJ,EAAO,MAAO,GAEnB,IAAM8I,EAAe,IAAIC,GAAa,CACpC,KAAM/I,EAAM,GAAG,IAAIgJ,GAAQ,CACzB,KAAM,IAAIf,EAAU,CAClB,KAAMY,CACR,CAAC,CACH,CAAC,CAAC,EACF,YAAa,CACX,IAAII,GAAY,CACd,KAAM,EACR,CAAC,CACH,CACF,CAAC,EAEKC,EAAW,IAAIC,GAAS,CAC5B,IAAK,CACL,CACF,CAAC,EACE,KAAK,IAAIC,GAAO,CACf,KAAMpJ,EACN,WAAYqJ,GAAM,CACpB,CAAC,EAAGA,GAAM,CAAC,EACV,KAAKP,CAAY,EAEpB,OAAO,KAAK,IAAII,CAAQ,CAC1B,CACF,EA/yBA5N,EAAAO,EAAAR,IAGES,EAAAR,EAAA,GAAW,mCADXuF,GAFIC,GAgDJhF,EAAAR,EAAA,GAAW,4BADXsF,GA/CIE,GAyDJhF,EAAAR,EAAA,GAAW,eADXqF,GAxDIG,GA+HJhF,EAAAR,EAAA,GAAW,sBAFXoF,GA7HII,GAoiBJhF,EAAAR,EAAA,GAAW,sBADXmF,GAniBIK,GAAN/E,EAAAT,EAAMwF,GAAN9E,EAAAV,EAAA,EAAMwF,KAcG,qBAAuB,GAd1BA,EAgBY,aAAyB,CACzC,EAjBIA,EAmBG,cAAgB,GAnBnBA,EAqBG,iBAAmB,GArBtBA,EAsBG,uBAAyB,GAtB5BA,EAuBG,qBAAuB,GAvB1BA,EAwBG,wBAA0B,GAxB7BA,EAyBG,WAAa,GAzBhBA,EA0BG,YAAc,GA1BjBA,EA2BG,YAAc,GA3BjBA,EA4BG,eAAiB,GA5BpBA,EA6BG,gBAAkB,IA7BrBA,EA8BG,wBAA0B,IA9B7BA,EA+BG,yBAA2B,GA/B9BA,EAgCG,yBAA2B,aAhC9BA,EAiCG,qBAAuB,GAjC1BA,EAkCG,kCAAoC,GAlCvCA,EAmCG,yBAA2B,GAnC9BA,EAoCG,4BAA8B,GApCjCA,EAqCG,mBAAqB,GArCxBA,EAsCG,wBAA0B,GAtC7BA,EAuCG,wBAA0B,GAvC7BA,EAwCG,sBAAwB,GAxC3BA,EAyCG,wBAA0B,GAzC7BA,EA0CG,gBAAkB,GA1CrBA,EA2CG,wBAA0B,GA3C7BA,EA4CG,uBAAyB,GA5C5BA,EA6CG,gBAAkB,GAnjC3B,IAAAwI,GAAAC,GAAAlO,GAAAC,EAuzDakO,EAAN,cAAuBnO,GAAAoO,GAc5BF,GAAA,CAAC9N,GAUD6N,GAAA,CAAC7N,GAxB2BJ,GAAQ,CAMpC,WAAW,eAAiB,CAC1B,uBACF,CAOA,WAAW,gCAAkC,CAC3C,OAAO,IAAI,IAAI,CACb,CACExC,EAA4B,KAC5B,iBACF,CACF,CAAC,CACH,CAGA,WAAW,cAAgB,CACzB,MAAO,CACL,EAAG,KACH,EAAG,KACH,GAAI,KACJ,GAAI,KACJ,IAAK,KACL,IAAK,KACL,KAAM,MACN,MAAO,MACP,OAAQ,MACR,OAAQ,MACR,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,KACN,KAAM,KACN,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,MAAO,KACP,KAAM,KACN,MAAO,KACP,QAAS,KACT,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,KAAM,KACN,KAAM,IACR,CACF,CAKF,EAnEOyC,EAAAO,EAAAR,IAeLS,EAAAR,EAAA,GAAW,iCADXiO,GAdWC,GAyBX1N,EAAAR,EAAA,GAAW,eADXgO,GAxBWE,GAANzN,EAAAT,EAAMkO,GAANxN,EAAAV,EAAA,EAAMkO,KACJ,aAAe,WADXA,EAEJ,aAAe,EAFXA,EAGJ,eAAiB,GAHbA,EAIJ,gBAAkB,GAJdA,EAUJ,YAAc,0BAVVA,EAWJ,4BAA8B,GAX1BA,EAYJ,gCAAkC,GAZ9BA,EAgEJ,UAAYjO,EAhERiO,EAiEJ,OAASxM,EAjELwM,EAkEJ,UAAY1I,EAGrB2I,GAAQ,oBAA4BD,CAAQ","names":["DATE_DIFF_FACTOR","dateAddSql","kind","expression","expr","TsOrDsAddExpr","tsOrDsAddCast","thisSql","unit","e","LiteralExpr","IntervalExpr","dateDiffSql","factor","end","start","age","unitSql","substringSql","length","fromPart","forPart","autoIncrementToSerial","auto","AutoIncrementColumnConstraintExpr","ColumnDefExpr","constraints","c","DataTypeExpr","serialToGenerated","dataType","generated","ColumnConstraintExpr","GeneratedAsIdentityColumnConstraintExpr","notNull","NotNullColumnConstraintExpr","buildGenerateSeries","args","step","seqGet","toInterval","ExplodingGenerateSeriesExpr","buildToTimestamp","UnixToTimeExpr","buildFormattedTime","StrToTimeExpr","jsonExtractSql","name","op","jsonExtractSegments","buildRegexpReplace","regexpReplace","last","RegexpReplaceExpr","unixToTimeSql","scale","timestamp","div","DivExpr","PowExpr","buildLevenshteinLessEqual","maxDist","LevenshteinExpr","levenshteinSql","renameFunc","versionedAnyValueSql","anyValueToMaxSql","roundSql","decimals","currentThis","Expression","decimalType","CastExpr","_VAR_SINGLE_TOKENS_dec","_SINGLE_TOKENS_dec","_ORIGINAL_KEYWORDS_dec","_HEREDOC_STRINGS_dec","_BYTE_STRING_ESCAPES_dec","_BYTE_STRINGS_dec","_HEX_STRINGS_dec","_BIT_STRINGS_dec","_a","_init","PostgresTokenizer","Tokenizer","cache","_1","_2","kw","__decoratorStart","__decorateElement","__decoratorMetadata","__runInitializers","_TABLE_ALIAS_TOKENS_dec","_ID_VAR_TOKENS_dec","_ARG_MODE_TOKENS_dec","_COLUMN_OPERATORS_dec","_UNARY_PARSERS_dec","_STATEMENT_PARSERS_dec","_RANGE_PARSERS_dec","_EXPONENT_dec","_BITWISE_dec","_FUNCTION_PARSERS_dec","_NO_PAREN_FUNCTION_PARSERS_dec","_FUNCTIONS_dec","_PLACEHOLDER_PARSERS_dec","_PROPERTY_PARSERS_dec","_NO_PAREN_FUNCTIONS_dec","PostgresParser","Parser","noParenFunctions","CurrentSchemaExpr","SessionUserExpr","CurrentCatalogExpr","parsers","SetConfigPropertyExpr","PlaceholderExpr","ArrayPrependExpr","BitwiseAndAggExpr","BitwiseOrAggExpr","BitwiseXorAggExpr","CurrentVersionExpr","buildTimestampTrunc","binaryFromFunction","IntDivExpr","GetbitExpr","buildJsonExtractPath","JsonExtractExpr","JsonExtractScalarExpr","LengthExpr","TimeFromPartsExpr","TimestampFromPartsExpr","CurrentTimestampExpr","TimeToStrExpr","StrToDateExpr","ExplodeExpr","Sha2Expr","JsonObjectAggExpr","JsonbObjectAggExpr","WidthBucketExpr","VariadicExpr","JsonArrayAggExpr","BitwiseXorExpr","binaryRangeParser","ArrayOverlapsExpr","thisNode","MatchAgainstExpr","BitwiseNotExpr","path","modeToken","paramMode","InOutColumnConstraintExpr","paramName","columnDef","constraint","part","value","ColumnExpr","var_","ExtractExpr","JsonbExistsExpr","ComputedColumnConstraintExpr","identifier","udtType","DotExpr","_PROPERTIES_LOCATION_dec","_ORIGINAL_TRANSFORMS_dec","_TYPE_MAPPING_dec","_SUPPORTED_JSON_PATH_PARTS_dec","_AFTER_HAVING_MODIFIER_TRANSFORMS_dec","PostgresGenerator","Generator","modifiers","m","JsonPathKeyExpr","JsonPathRootExpr","JsonPathSubscriptExpr","sql","transforms","AnyValueExpr","ArrayConcatExpr","arrayConcatSql","ArrayFilterExpr","filterArrayUsingUnnest","ArrayAppendExpr","arrayAppendSql","preprocess","CurrentDateExpr","noParenCurrentDateSql","CurrentUserExpr","DateAddExpr","DateDiffExpr","DateStrToDateExpr","dateStrToDateSql","DateSubExpr","getBitSql","GroupConcatExpr","groupConcatSql","orderSql","JsonbExtractExpr","JsonbExtractScalarExpr","JsonbContainsExpr","ParseJsonExpr","jsonPathKeyOnlyName","LastDayExpr","noLastDaySql","LogicalOrExpr","LogicalAndExpr","MaxExpr","maxOrGreatest","MapFromEntriesExpr","noMapFromEntriesSql","MinExpr","minOrLeast","MergeExpr","mergeWithoutTargetSql","PartitionedByPropertyExpr","PercentileContExpr","addWithinGroupForPercentiles","PercentileDiscExpr","PivotExpr","noPivotSql","RandExpr","RegexpLikeExpr","RegexpILikeExpr","regexpReplaceGlobalModifier","RoundExpr","SelectExpr","eliminateSemiAndAntiJoins","eliminateQualify","sha256Sql","Sha2DigestExpr","sha2DigestSql","StrPositionExpr","strPositionSql","StructExtractExpr","structExtractSql","SubstringExpr","TimestampTruncExpr","timestampTruncSql","TimeStrToTimeExpr","timeStrToTimeSql","ToCharExpr","TrimExpr","trimSql","TryCastExpr","noTrycastSql","TsOrDsDiffExpr","UuidExpr","TimeToUnixExpr","VariancePopExpr","VarianceExpr","XorExpr","boolXorSql","UnicodeExpr","CountIfExpr","countIfToSum","IntoExpr","temporary","unlogged","modifier","CommentColumnConstraintExpr","TransientPropertyExpr","VolatilePropertyExpr","_expression","options","sep","paramConstraint","modeSql","baseSql","arg","GenerateDateArrayExpr","generateSeries","GenerateSeriesExpr","FromExpr","JoinExpr","select","TableExpr","annotateTypes","isType","current","inner","argAsJson","alias","ArrayExpr","ParenExpr","expressions","exprs","accessMethod","tablespace","option","values","safePrefix","funcName","inlineArraySql","IdentifierExpr","thisPart","array","coalesceExpr","CoalesceExpr","AnyExpr","BooleanExpr","caseExpr","CaseExpr","IsExpr","null_","_TIME_MAPPING_dec","_DEFAULT_FUNCTIONS_COLUMN_NAMES_dec","Postgres","Dialect"]}
@@ -0,0 +1,2 @@
1
+ import{p as j,q as e}from"./chunk-PXUASP5I.js";import{Kl as D,Ml as y,Om as J,Po as F,Qq as b,So as W,To as G,Wd as x,Wp as V,Yg as N,Yo as M,a as c,b as p,bp as Q,bq as w,c as S,d as r,ie as m,in as q,je as C,ke as f,lh as U,me as g,op as Y,pd as O,pp as H,r as s,uj as L,wc as l,yq as K,zg as d}from"./chunk-KCNOE4DZ.js";var B,$,P,R=class extends($=e.Tokenizer,B=[s],$){static get ORIGINAL_KEYWORDS(){return{...e.Tokenizer.KEYWORDS,REFRESH:"refresh"}}};P=c($),r(P,10,"ORIGINAL_KEYWORDS",B,R),p(P,R),S(P,3,R);var k,v,X,Z,z,tt,et,a,i=class extends(et=e.Parser,tt=[s],z=[s],Z=[s],X=[s],v=[s],k=[s],et){static get ID_VAR_TOKENS(){return new Set([...e.Parser.ID_VAR_TOKENS,"sessionUser","straightJoin"])}static get NO_PAREN_FUNCTIONS(){let t={...e.Parser.NO_PAREN_FUNCTIONS};return t.currentCatalog=U,t}static get FUNCTIONS(){return{...e.Parser.FUNCTIONS,VERSION:t=>N.fromArgList(t)}}static get FUNCTION_PARSERS(){return{...e.Parser.FUNCTION_PARSERS,TRIM:function(){return this.parseTrim()},JSON_QUERY:function(){return this.parseJsonQuery()},JSON_VALUE:function(){return this.parseJsonValue()},LISTAGG:function(){return this.parseStringAgg()}}}static get JSON_QUERY_OPTIONS(){return{WITH:[["WRAPPER"],["ARRAY","WRAPPER"],["CONDITIONAL","WRAPPER"],["CONDITIONAL","ARRAY","WRAPPED"],["UNCONDITIONAL","WRAPPER"],["UNCONDITIONAL","ARRAY","WRAPPER"]],WITHOUT:[["WRAPPER"],["ARRAY","WRAPPER"],["CONDITIONAL","WRAPPER"],["CONDITIONAL","ARRAY","WRAPPED"],["UNCONDITIONAL","WRAPPER"],["UNCONDITIONAL","ARRAY","WRAPPER"]]}}parseJsonQueryQuote(){if(this.matchTextSeq(["KEEP","QUOTES"])||this.matchTextSeq(["OMIT","QUOTES"]))return this.expression(l,{option:this.tokens[this.index-2].text.toUpperCase(),scalar:this.matchTextSeq(["ON","SCALAR","STRING"])})}parseJsonQuery(){return this.expression(L,{this:this.parseBitwise(),expression:this.match("comma")?this.parseBitwise():void 0,option:this.parseVarFromOptions(this._constructor.JSON_QUERY_OPTIONS,{raiseUnmatched:!1}),jsonQuery:!0,quote:this.parseJsonQueryQuote(),onCondition:this.parseOnCondition()})}static get TABLE_ALIAS_TOKENS(){return new Set([...e.Parser.TABLE_ALIAS_TOKENS,"straightJoin"])}};a=c(et),r(a,10,"ID_VAR_TOKENS",tt,i),r(a,10,"NO_PAREN_FUNCTIONS",z,i),r(a,10,"FUNCTIONS",Z,i),r(a,10,"FUNCTION_PARSERS",X,i),r(a,10,"JSON_QUERY_OPTIONS",v,i),r(a,10,"TABLE_ALIAS_TOKENS",k,i),p(a,i),S(a,3,i);var rt,st,it,nt,ot,E,n=class extends(ot=e.Generator,nt=[s],it=[s],st=[s],rt=[s],ot){static get AFTER_HAVING_MODIFIER_TRANSFORMS(){let t=new Map(super.AFTER_HAVING_MODIFIER_TRANSFORMS);return["cluster","distribute","sort"].forEach(u=>t.delete(u)),t}static get PROPERTIES_LOCATION(){return new Map([...e.Generator.PROPERTIES_LOCATION,[O,"postWith"]])}static get ORIGINAL_TRANSFORMS(){return new Map([...e.Generator.TRANSFORMS,[d,function(t){return`REDUCE(${this.sql(t,"this")}, 0, (acc, x) -> acc + x, acc -> acc)`}],[J,function(t){return`ARRAY_AGG(DISTINCT ${this.sql(t,"this")})`}],[N,H("VERSION")],[q,function(t){return b.call(this,t,{onOverflow:!0})}],[O,function(t){return this.propertySql(t)}],[g,K],[x,F([G,W,M(1),Q,j])],[D,function(t){return V.call(this,t,{includePrecision:!0})}],[y,w]])}static get SUPPORTED_JSON_PATH_PARTS(){return new Set([m,C,f])}jsonExtractSql(t){if(!t.args.jsonQuery)return super.jsonExtractSql(t);let u=this.sql(t,"expression"),T=this.sql(t,"option"),at=T?` ${T}`:"",h=this.sql(t,"quote"),Et=h?` ${h}`:"",_=this.sql(t,"onCondition"),Rt=_?` ${_}`:"";return this.func("JSON_QUERY",[t.args.this,u+at+Et+Rt])}};E=c(ot),r(E,10,"AFTER_HAVING_MODIFIER_TRANSFORMS",nt,n),r(E,10,"PROPERTIES_LOCATION",it,n),r(E,10,"ORIGINAL_TRANSFORMS",st,n),r(E,10,"SUPPORTED_JSON_PATH_PARTS",rt,n),p(E,n),S(E,3,n),n.SUPPORTS_DECODE_CASE=!1,n.EXCEPT_INTERSECT_SUPPORT_ALL_CLAUSE=!0;var o=class extends e{};o.DIALECT_NAME="trino",o.SUPPORTS_USER_DEFINED_TYPES=!1,o.LOG_BASE_FIRST=!0,o.Tokenizer=R,o.Parser=i,o.Generator=n;Y.register("trino",o);export{o as a};
2
+ //# sourceMappingURL=chunk-IPCIXWCY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/dialects/trino.ts"],"sourcesContent":["import {\n cache,\n} from '../port_internals';\nimport type {\n Expression,\n} from '../expressions';\nimport {\n JsonExtractExpr, JsonExtractQuoteExpr,\n CurrentVersionExpr,\n LocationPropertyExpr,\n ArraySumExpr,\n ArrayUniqueAggExpr,\n GroupConcatExpr,\n PropertiesLocation,\n MergeExpr,\n SelectExpr,\n TimeStrToTimeExpr,\n TrimExpr,\n JsonPathKeyExpr,\n JsonPathRootExpr,\n JsonPathSubscriptExpr,\n CurrentCatalogExpr,\n} from '../expressions';\nimport type {\n Generator,\n} from '../generator';\nimport type {\n Parser,\n} from '../parser';\nimport {\n TokenType,\n} from '../tokens';\nimport {\n eliminateDistinctOn, eliminateQualify, eliminateSemiAndAntiJoins, explodeProjectionToUnnest, preprocess,\n} from '../transforms';\nimport {\n Dialect,\n Dialects,\n groupConcatSql, mergeWithoutTargetSql, renameFunc, timeStrToTimeSql, trimSql,\n} from './dialect';\nimport {\n Presto, amendExplodedColumnTable,\n} from './presto';\n\nclass TrinoTokenizer extends Presto.Tokenizer {\n @cache\n static get ORIGINAL_KEYWORDS (): Record<string, TokenType> {\n return {\n ...Presto.Tokenizer.KEYWORDS,\n REFRESH: TokenType.REFRESH,\n };\n }\n}\n\nclass TrinoParser extends Presto.Parser {\n // port from _Dialect metaclass logic\n @cache\n static get ID_VAR_TOKENS (): Set<TokenType> {\n return new Set([\n ...Presto.Parser.ID_VAR_TOKENS,\n TokenType.SESSION_USER,\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 ...Presto.Parser.NO_PAREN_FUNCTIONS,\n };\n noParenFunctions[TokenType.CURRENT_CATALOG] = CurrentCatalogExpr;\n return noParenFunctions;\n }\n\n @cache\n static get FUNCTIONS (): Record<string, (args: Expression[], options: {dialect: Dialect}) => Expression> {\n return {\n ...Presto.Parser.FUNCTIONS,\n VERSION: (args: Expression[]) => CurrentVersionExpr.fromArgList(args),\n };\n }\n\n @cache\n static get FUNCTION_PARSERS (): Partial<Record<string, (this: Parser) => Expression | undefined>> {\n return {\n ...Presto.Parser.FUNCTION_PARSERS,\n TRIM: function (this: Parser) {\n return this.parseTrim();\n },\n JSON_QUERY: function (this: Parser) {\n return (this as TrinoParser).parseJsonQuery();\n },\n JSON_VALUE: function (this: Parser) {\n return this.parseJsonValue();\n },\n LISTAGG: function (this: Parser) {\n return this.parseStringAgg();\n },\n };\n }\n\n @cache\n static get JSON_QUERY_OPTIONS (): Record<string, string[][]> {\n return {\n WITH: [\n [\n 'WRAPPER',\n ],\n [\n 'ARRAY',\n 'WRAPPER',\n ],\n [\n 'CONDITIONAL',\n 'WRAPPER',\n ],\n [\n 'CONDITIONAL',\n 'ARRAY',\n 'WRAPPED',\n ],\n [\n 'UNCONDITIONAL',\n 'WRAPPER',\n ],\n [\n 'UNCONDITIONAL',\n 'ARRAY',\n 'WRAPPER',\n ],\n ],\n WITHOUT: [\n [\n 'WRAPPER',\n ],\n [\n 'ARRAY',\n 'WRAPPER',\n ],\n [\n 'CONDITIONAL',\n 'WRAPPER',\n ],\n [\n 'CONDITIONAL',\n 'ARRAY',\n 'WRAPPED',\n ],\n [\n 'UNCONDITIONAL',\n 'WRAPPER',\n ],\n [\n 'UNCONDITIONAL',\n 'ARRAY',\n 'WRAPPER',\n ],\n ],\n };\n }\n\n public parseJsonQueryQuote (): JsonExtractQuoteExpr | undefined {\n if (\n !(this.matchTextSeq([\n 'KEEP',\n 'QUOTES',\n ]) || this.matchTextSeq([\n 'OMIT',\n 'QUOTES',\n ]))\n ) {\n return undefined;\n }\n\n // If matched, _matchTextSeq advanced the index by 2 tokens.\n // We look back to grab the KEEP or OMIT text.\n return this.expression(JsonExtractQuoteExpr, {\n option: this.tokens[this.index - 2].text.toUpperCase(),\n scalar: this.matchTextSeq([\n 'ON',\n 'SCALAR',\n 'STRING',\n ]),\n });\n }\n\n public parseJsonQuery (): JsonExtractExpr {\n return this.expression(JsonExtractExpr, {\n this: this.parseBitwise(),\n expression: this.match(TokenType.COMMA) ? this.parseBitwise() : undefined,\n option: this.parseVarFromOptions(\n (this._constructor as typeof TrinoParser).JSON_QUERY_OPTIONS,\n {\n raiseUnmatched: false,\n },\n ),\n jsonQuery: true,\n quote: this.parseJsonQueryQuote(),\n onCondition: this.parseOnCondition(),\n });\n }\n\n // port from _Dialect metaclass logic\n @cache\n static get TABLE_ALIAS_TOKENS (): Set<TokenType> {\n return new Set([\n ...Presto.Parser.TABLE_ALIAS_TOKENS,\n TokenType.STRAIGHT_JOIN,\n ]);\n }\n}\n\nclass TrinoGenerator extends Presto.Generator {\n // port from _Dialect metaclass logic\n static SUPPORTS_DECODE_CASE = false;\n static EXCEPT_INTERSECT_SUPPORT_ALL_CLAUSE = true;\n\n // port from _Dialect metaclass logic\n @cache\n static get AFTER_HAVING_MODIFIER_TRANSFORMS () {\n const modifiers = new Map(super.AFTER_HAVING_MODIFIER_TRANSFORMS);\n [\n 'cluster',\n 'distribute',\n 'sort',\n ].forEach((m) => modifiers.delete(m));\n return modifiers;\n }\n\n @cache\n static get PROPERTIES_LOCATION (): Map<typeof Expression, PropertiesLocation> {\n return new Map([\n ...Presto.Generator.PROPERTIES_LOCATION,\n [\n LocationPropertyExpr,\n PropertiesLocation.POST_WITH,\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 return new Map<typeof Expression, (this: Generator, e: any) => string>([\n ...Presto.Generator.TRANSFORMS,\n [\n ArraySumExpr,\n function (this: Generator, e) {\n return `REDUCE(${this.sql(e, 'this')}, 0, (acc, x) -> acc + x, acc -> acc)`;\n },\n ],\n [\n ArrayUniqueAggExpr,\n function (this: Generator, e) {\n return `ARRAY_AGG(DISTINCT ${this.sql(e, 'this')})`;\n },\n ],\n [\n CurrentVersionExpr,\n renameFunc('VERSION'),\n ],\n [\n GroupConcatExpr,\n function (this: Generator, e) {\n return groupConcatSql.call(this, e, {\n onOverflow: true,\n });\n },\n ],\n [\n LocationPropertyExpr,\n function (this: Generator, e) {\n return this.propertySql(e);\n },\n ],\n [\n MergeExpr,\n mergeWithoutTargetSql,\n ],\n [\n SelectExpr,\n preprocess([\n eliminateQualify,\n eliminateDistinctOn,\n explodeProjectionToUnnest(1),\n eliminateSemiAndAntiJoins,\n amendExplodedColumnTable,\n ]),\n ],\n [\n TimeStrToTimeExpr,\n function (this: Generator, e) {\n return timeStrToTimeSql.call(this, e, {\n includePrecision: true,\n });\n },\n ],\n [\n TrimExpr,\n trimSql,\n ],\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 ]);\n }\n\n public jsonExtractSql (expression: JsonExtractExpr): string {\n if (!expression.args.jsonQuery) {\n return super.jsonExtractSql(expression);\n }\n\n const jsonPath = this.sql(expression, 'expression');\n const option = this.sql(expression, 'option');\n const optionStr = option ? ` ${option}` : '';\n\n const quote = this.sql(expression, 'quote');\n const quoteStr = quote ? ` ${quote}` : '';\n\n const onCondition = this.sql(expression, 'onCondition');\n const onConditionStr = onCondition ? ` ${onCondition}` : '';\n\n return this.func(\n 'JSON_QUERY',\n [\n expression.args.this,\n jsonPath + optionStr + quoteStr + onConditionStr,\n ],\n );\n }\n}\n\nexport class Trino extends Presto {\n static DIALECT_NAME = Dialects.TRINO;\n static SUPPORTS_USER_DEFINED_TYPES = false;\n static LOG_BASE_FIRST = true;\n\n static Tokenizer = TrinoTokenizer;\n static Parser = TrinoParser;\n static Generator = TrinoGenerator;\n}\nDialect.register(Dialects.TRINO, Trino);\n"],"mappings":"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","names":["_ORIGINAL_KEYWORDS_dec","_a","_init","TrinoTokenizer","Presto","cache","__decoratorStart","__decorateElement","__decoratorMetadata","__runInitializers","_TABLE_ALIAS_TOKENS_dec","_JSON_QUERY_OPTIONS_dec","_FUNCTION_PARSERS_dec","_FUNCTIONS_dec","_NO_PAREN_FUNCTIONS_dec","_ID_VAR_TOKENS_dec","TrinoParser","noParenFunctions","CurrentCatalogExpr","args","CurrentVersionExpr","JsonExtractQuoteExpr","JsonExtractExpr","_SUPPORTED_JSON_PATH_PARTS_dec","_ORIGINAL_TRANSFORMS_dec","_PROPERTIES_LOCATION_dec","_AFTER_HAVING_MODIFIER_TRANSFORMS_dec","TrinoGenerator","modifiers","m","LocationPropertyExpr","ArraySumExpr","e","ArrayUniqueAggExpr","renameFunc","GroupConcatExpr","groupConcatSql","MergeExpr","mergeWithoutTargetSql","SelectExpr","preprocess","eliminateQualify","eliminateDistinctOn","explodeProjectionToUnnest","eliminateSemiAndAntiJoins","amendExplodedColumnTable","TimeStrToTimeExpr","timeStrToTimeSql","TrimExpr","trimSql","JsonPathKeyExpr","JsonPathRootExpr","JsonPathSubscriptExpr","expression","jsonPath","option","optionStr","quote","quoteStr","onCondition","onConditionStr","Trino","Dialect"]}