@hdnax/sqlingo.js 0.0.5 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.repo.md +1 -2
  3. package/dist/chunk-2YNOERAO.cjs +2 -0
  4. package/dist/chunk-2YNOERAO.cjs.map +1 -0
  5. package/dist/chunk-2Z3O2CFM.cjs +19 -0
  6. package/dist/chunk-2Z3O2CFM.cjs.map +1 -0
  7. package/dist/chunk-4ZMKB6PV.cjs +2 -0
  8. package/dist/chunk-4ZMKB6PV.cjs.map +1 -0
  9. package/dist/chunk-53OWF4GG.js +2 -0
  10. package/dist/chunk-53OWF4GG.js.map +1 -0
  11. package/dist/chunk-C4CLTVOW.cjs +2 -0
  12. package/dist/chunk-C4CLTVOW.cjs.map +1 -0
  13. package/dist/chunk-DOKMTZYO.cjs +4 -0
  14. package/dist/chunk-DOKMTZYO.cjs.map +1 -0
  15. package/dist/chunk-FCGUTI7Y.js +2 -0
  16. package/dist/chunk-FCGUTI7Y.js.map +1 -0
  17. package/dist/chunk-IPCIXWCY.js +2 -0
  18. package/dist/chunk-IPCIXWCY.js.map +1 -0
  19. package/dist/chunk-KCNOE4DZ.js +19 -0
  20. package/dist/chunk-KCNOE4DZ.js.map +1 -0
  21. package/dist/chunk-NRJHX2GZ.js +2 -0
  22. package/dist/chunk-NRJHX2GZ.js.map +1 -0
  23. package/dist/chunk-O2J5RKBN.js +2 -0
  24. package/dist/chunk-O2J5RKBN.js.map +1 -0
  25. package/dist/chunk-PXUASP5I.js +2 -0
  26. package/dist/chunk-PXUASP5I.js.map +1 -0
  27. package/dist/chunk-R7C3ZHVK.cjs +2 -0
  28. package/dist/chunk-R7C3ZHVK.cjs.map +1 -0
  29. package/dist/chunk-UHWHUDLE.cjs +2 -0
  30. package/dist/chunk-UHWHUDLE.cjs.map +1 -0
  31. package/dist/chunk-WRNYJ54A.cjs +2 -0
  32. package/dist/chunk-WRNYJ54A.cjs.map +1 -0
  33. package/dist/chunk-XZQFOICX.cjs +3 -0
  34. package/dist/chunk-XZQFOICX.cjs.map +1 -0
  35. package/dist/chunk-YLOQRUXC.js +2 -0
  36. package/dist/chunk-YLOQRUXC.js.map +1 -0
  37. package/dist/chunk-YSS2WVCM.cjs +2 -0
  38. package/dist/chunk-YSS2WVCM.cjs.map +1 -0
  39. package/dist/chunk-Z5V6VOIN.js +3 -0
  40. package/dist/chunk-Z5V6VOIN.js.map +1 -0
  41. package/dist/chunk-ZBFGQPJR.js +4 -0
  42. package/dist/chunk-ZBFGQPJR.js.map +1 -0
  43. package/dist/dialects/athena.cjs +2 -0
  44. package/dist/dialects/athena.cjs.map +1 -0
  45. package/dist/dialects/athena.d.cts +66 -0
  46. package/dist/dialects/athena.d.ts +66 -0
  47. package/dist/dialects/athena.js +2 -0
  48. package/dist/dialects/athena.js.map +1 -0
  49. package/dist/dialects/bigquery.cjs +3 -0
  50. package/dist/dialects/bigquery.cjs.map +1 -0
  51. package/dist/dialects/bigquery.d.cts +651 -0
  52. package/dist/dialects/bigquery.d.ts +651 -0
  53. package/dist/dialects/bigquery.js +3 -0
  54. package/dist/dialects/bigquery.js.map +1 -0
  55. package/dist/dialects/clickhouse.cjs +2 -0
  56. package/dist/dialects/clickhouse.cjs.map +1 -0
  57. package/dist/dialects/clickhouse.d.cts +634 -0
  58. package/dist/dialects/clickhouse.d.ts +634 -0
  59. package/dist/dialects/clickhouse.js +2 -0
  60. package/dist/dialects/clickhouse.js.map +1 -0
  61. package/dist/dialects/databricks.cjs +2 -0
  62. package/dist/dialects/databricks.cjs.map +1 -0
  63. package/dist/dialects/databricks.d.cts +484 -0
  64. package/dist/dialects/databricks.d.ts +484 -0
  65. package/dist/dialects/databricks.js +2 -0
  66. package/dist/dialects/databricks.js.map +1 -0
  67. package/dist/dialects/doris.cjs +2 -0
  68. package/dist/dialects/doris.cjs.map +1 -0
  69. package/dist/dialects/doris.d.cts +484 -0
  70. package/dist/dialects/doris.d.ts +484 -0
  71. package/dist/dialects/doris.js +2 -0
  72. package/dist/dialects/doris.js.map +1 -0
  73. package/dist/dialects/dremio.cjs +2 -0
  74. package/dist/dialects/dremio.cjs.map +1 -0
  75. package/dist/dialects/dremio.d.cts +522 -0
  76. package/dist/dialects/dremio.d.ts +522 -0
  77. package/dist/dialects/dremio.js +2 -0
  78. package/dist/dialects/dremio.js.map +1 -0
  79. package/dist/dialects/drill.cjs +2 -0
  80. package/dist/dialects/drill.cjs.map +1 -0
  81. package/dist/dialects/drill.d.cts +512 -0
  82. package/dist/dialects/drill.d.ts +512 -0
  83. package/dist/dialects/drill.js +2 -0
  84. package/dist/dialects/drill.js.map +1 -0
  85. package/dist/dialects/druid.cjs +2 -0
  86. package/dist/dialects/druid.cjs.map +1 -0
  87. package/dist/dialects/druid.d.cts +17 -0
  88. package/dist/dialects/druid.d.ts +17 -0
  89. package/dist/dialects/druid.js +2 -0
  90. package/dist/dialects/druid.js.map +1 -0
  91. package/dist/dialects/duckdb.cjs +86 -0
  92. package/dist/dialects/duckdb.cjs.map +1 -0
  93. package/dist/dialects/duckdb.d.cts +756 -0
  94. package/dist/dialects/duckdb.d.ts +756 -0
  95. package/dist/dialects/duckdb.js +86 -0
  96. package/dist/dialects/duckdb.js.map +1 -0
  97. package/dist/dialects/dune.cjs +2 -0
  98. package/dist/dialects/dune.cjs.map +1 -0
  99. package/dist/dialects/dune.d.cts +21 -0
  100. package/dist/dialects/dune.d.ts +21 -0
  101. package/dist/dialects/dune.js +2 -0
  102. package/dist/dialects/dune.js.map +1 -0
  103. package/dist/dialects/exasol.cjs +2 -0
  104. package/dist/dialects/exasol.cjs.map +1 -0
  105. package/dist/dialects/exasol.d.cts +507 -0
  106. package/dist/dialects/exasol.d.ts +507 -0
  107. package/dist/dialects/exasol.js +2 -0
  108. package/dist/dialects/exasol.js.map +1 -0
  109. package/dist/dialects/fabric.cjs +2 -0
  110. package/dist/dialects/fabric.cjs.map +1 -0
  111. package/dist/dialects/fabric.d.cts +463 -0
  112. package/dist/dialects/fabric.d.ts +463 -0
  113. package/dist/dialects/fabric.js +2 -0
  114. package/dist/dialects/fabric.js.map +1 -0
  115. package/dist/dialects/hive.cjs +2 -0
  116. package/dist/dialects/hive.cjs.map +1 -0
  117. package/dist/dialects/hive.d.cts +585 -0
  118. package/dist/dialects/hive.d.ts +585 -0
  119. package/dist/dialects/hive.js +2 -0
  120. package/dist/dialects/hive.js.map +1 -0
  121. package/dist/dialects/materialize.cjs +2 -0
  122. package/dist/dialects/materialize.cjs.map +1 -0
  123. package/dist/dialects/materialize.d.cts +890 -0
  124. package/dist/dialects/materialize.d.ts +890 -0
  125. package/dist/dialects/materialize.js +2 -0
  126. package/dist/dialects/materialize.js.map +1 -0
  127. package/dist/dialects/mysql.cjs +2 -0
  128. package/dist/dialects/mysql.cjs.map +1 -0
  129. package/dist/dialects/mysql.d.cts +292 -0
  130. package/dist/dialects/mysql.d.ts +292 -0
  131. package/dist/dialects/mysql.js +2 -0
  132. package/dist/dialects/mysql.js.map +1 -0
  133. package/dist/dialects/oracle.cjs +2 -0
  134. package/dist/dialects/oracle.cjs.map +1 -0
  135. package/dist/dialects/oracle.d.cts +539 -0
  136. package/dist/dialects/oracle.d.ts +539 -0
  137. package/dist/dialects/oracle.js +2 -0
  138. package/dist/dialects/oracle.js.map +1 -0
  139. package/dist/dialects/postgres.cjs +2 -0
  140. package/dist/dialects/postgres.cjs.map +1 -0
  141. package/dist/dialects/postgres.d.cts +587 -0
  142. package/dist/dialects/postgres.d.ts +587 -0
  143. package/dist/dialects/postgres.js +2 -0
  144. package/dist/dialects/postgres.js.map +1 -0
  145. package/dist/dialects/presto.cjs +2 -0
  146. package/dist/dialects/presto.cjs.map +1 -0
  147. package/dist/dialects/presto.d.cts +173 -0
  148. package/dist/dialects/presto.d.ts +173 -0
  149. package/dist/dialects/presto.js +2 -0
  150. package/dist/dialects/presto.js.map +1 -0
  151. package/dist/dialects/prql.cjs +2 -0
  152. package/dist/dialects/prql.cjs.map +1 -0
  153. package/dist/dialects/prql.d.cts +496 -0
  154. package/dist/dialects/prql.d.ts +496 -0
  155. package/dist/dialects/prql.js +2 -0
  156. package/dist/dialects/prql.js.map +1 -0
  157. package/dist/dialects/redshift.cjs +2 -0
  158. package/dist/dialects/redshift.cjs.map +1 -0
  159. package/dist/dialects/redshift.d.cts +132 -0
  160. package/dist/dialects/redshift.d.ts +132 -0
  161. package/dist/dialects/redshift.js +2 -0
  162. package/dist/dialects/redshift.js.map +1 -0
  163. package/dist/dialects/risingwave.cjs +2 -0
  164. package/dist/dialects/risingwave.cjs.map +1 -0
  165. package/dist/dialects/risingwave.d.cts +478 -0
  166. package/dist/dialects/risingwave.d.ts +478 -0
  167. package/dist/dialects/risingwave.js +2 -0
  168. package/dist/dialects/risingwave.js.map +1 -0
  169. package/dist/dialects/singlestore.cjs +2 -0
  170. package/dist/dialects/singlestore.cjs.map +1 -0
  171. package/dist/dialects/singlestore.d.cts +73 -0
  172. package/dist/dialects/singlestore.d.ts +73 -0
  173. package/dist/dialects/singlestore.js +2 -0
  174. package/dist/dialects/singlestore.js.map +1 -0
  175. package/dist/dialects/snowflake.cjs +3 -0
  176. package/dist/dialects/snowflake.cjs.map +1 -0
  177. package/dist/dialects/snowflake.d.cts +320 -0
  178. package/dist/dialects/snowflake.d.ts +320 -0
  179. package/dist/dialects/snowflake.js +3 -0
  180. package/dist/dialects/snowflake.js.map +1 -0
  181. package/dist/dialects/solr.cjs +2 -0
  182. package/dist/dialects/solr.cjs.map +1 -0
  183. package/dist/dialects/solr.d.cts +458 -0
  184. package/dist/dialects/solr.d.ts +458 -0
  185. package/dist/dialects/solr.js +2 -0
  186. package/dist/dialects/solr.js.map +1 -0
  187. package/dist/dialects/spark.cjs +2 -0
  188. package/dist/dialects/spark.cjs.map +1 -0
  189. package/dist/dialects/spark.d.cts +484 -0
  190. package/dist/dialects/spark.d.ts +484 -0
  191. package/dist/dialects/spark.js +2 -0
  192. package/dist/dialects/spark.js.map +1 -0
  193. package/dist/dialects/spark2.cjs +2 -0
  194. package/dist/dialects/spark2.cjs.map +1 -0
  195. package/dist/dialects/spark2.d.cts +486 -0
  196. package/dist/dialects/spark2.d.ts +486 -0
  197. package/dist/dialects/spark2.js +2 -0
  198. package/dist/dialects/spark2.js.map +1 -0
  199. package/dist/dialects/sqlite.cjs +2 -0
  200. package/dist/dialects/sqlite.cjs.map +1 -0
  201. package/dist/dialects/sqlite.d.cts +510 -0
  202. package/dist/dialects/sqlite.d.ts +510 -0
  203. package/dist/dialects/sqlite.js +2 -0
  204. package/dist/dialects/sqlite.js.map +1 -0
  205. package/dist/dialects/starrocks.cjs +2 -0
  206. package/dist/dialects/starrocks.cjs.map +1 -0
  207. package/dist/dialects/starrocks.d.cts +518 -0
  208. package/dist/dialects/starrocks.d.ts +518 -0
  209. package/dist/dialects/starrocks.js +2 -0
  210. package/dist/dialects/starrocks.js.map +1 -0
  211. package/dist/dialects/tableau.cjs +2 -0
  212. package/dist/dialects/tableau.cjs.map +1 -0
  213. package/dist/dialects/tableau.d.cts +466 -0
  214. package/dist/dialects/tableau.d.ts +466 -0
  215. package/dist/dialects/tableau.js +2 -0
  216. package/dist/dialects/tableau.js.map +1 -0
  217. package/dist/dialects/teradata.cjs +2 -0
  218. package/dist/dialects/teradata.cjs.map +1 -0
  219. package/dist/dialects/teradata.d.cts +539 -0
  220. package/dist/dialects/teradata.d.ts +539 -0
  221. package/dist/dialects/teradata.js +2 -0
  222. package/dist/dialects/teradata.js.map +1 -0
  223. package/dist/dialects/trino.cjs +2 -0
  224. package/dist/dialects/trino.cjs.map +1 -0
  225. package/dist/dialects/trino.d.cts +465 -0
  226. package/dist/dialects/trino.d.ts +465 -0
  227. package/dist/dialects/trino.js +2 -0
  228. package/dist/dialects/trino.js.map +1 -0
  229. package/dist/dialects/tsql.cjs +2 -0
  230. package/dist/dialects/tsql.cjs.map +1 -0
  231. package/dist/dialects/tsql.d.cts +703 -0
  232. package/dist/dialects/tsql.d.ts +703 -0
  233. package/dist/dialects/tsql.js +2 -0
  234. package/dist/dialects/tsql.js.map +1 -0
  235. package/dist/index.cjs +5 -25
  236. package/dist/index.cjs.map +1 -1
  237. package/dist/index.d.cts +3 -14178
  238. package/dist/index.d.ts +3 -14178
  239. package/dist/index.js +5 -25
  240. package/dist/index.js.map +1 -1
  241. package/dist/tokens-VcMD09XM.d.cts +15805 -0
  242. package/dist/tokens-VcMD09XM.d.ts +15805 -0
  243. package/package.json +171 -5
@@ -0,0 +1,86 @@
1
+ import"../chunk-ZBFGQPJR.js";import{$c as o,$h as Fr,$i as an,$l as jn,$m as Ti,Ac as Ce,Af as er,Ah as dr,Ai as qs,Be as $e,Bg as v,Bh as Nr,Bi as bs,Bk as dn,Bm as ii,Bo as f,Bp as Ci,Ca as R,Cd as us,Ce as et,Cf as rr,Cg as u,Ch as Ir,Ci as Qr,Ck as b,Cl as Kt,De as Je,Df as Nt,Dh as _r,Di as jr,Dn as Zs,Dq as Ki,En as Ni,Ep as yi,Eq as ki,Fb as lt,Fe as Rt,Fh as Ut,Fi as zr,Fj as Tn,Gb as Re,Gc as ye,Ge as Ts,Gh as wr,Gi as tn,Gl as Bn,Gp as zs,Gq as $i,Hh as Gt,Hl as ks,Ho as y,Hp as qi,Ic as qe,If as As,Ig as ur,Ih as Ft,Ik as Nn,Il as wt,Je as bt,Jh as Or,Jk as In,Jl as Yn,Jp as bi,Ka as ue,Kd as Ue,Ke as k,Kf as P,Kg as lr,Kh as Lr,Kj as Sn,Kk as Wt,Kl as vn,Kp as te,Le as Ze,Lg as Tr,Lh as Pr,Lk as Vs,Ll as Vn,Lm as ai,Lo as U,Lq as re,Ma as le,Mf as Y,Mh as Mr,Mi as Ds,Mk as _n,Ml as Wn,Mq as Ji,Na as Te,Nc as be,Nh as Cr,Ni as sn,Nk as wn,Nl as Xn,Nm as oi,Oa as Se,Ob as me,Of as nr,Oh as yr,Oj as $,Ol as Kn,Om as Ei,Op as se,Oq as Zi,Pe as rt,Ph as qr,Pi as Us,Pk as Xt,Po as js,Qe as nt,Qh as br,Qi as Gs,Qj as fn,Qq as Qi,Rh as Dr,Rj as Ys,Rk as Ws,Rl as kn,Rp as Di,Se as q,Sk as On,Sn as Ii,Sp as Ui,Ta as fe,Tb as cs,Tl as $n,Tp as Gi,Tq as ji,Ua as Ae,Ub as I,Ue as mt,Ui as en,Uk as Xs,Ul as Jn,Um as Ot,Uq as zi,Vb as de,Ve as d,Vi as rn,Vj as vs,Vm as ci,Wd as Tt,We as Qe,Wh as Ht,Wi as nn,Wj as An,Wm as hi,Wp as Fi,Xk as Ln,Xm as pi,Xp as Hi,Xq as Pt,Y as pt,Ya as xt,Yb as Ne,Yd as yt,Ye as je,Yg as _s,Yk as Pn,Yl as Zn,Yp as ee,Zb as Ie,Zh as Ur,Zk as Mn,Zl as V,Zm as ui,Zn as Qs,Zp as Bi,_b as _e,_d as Ge,_h as Gr,_i as ft,_k as Cn,_l as Qn,_m as li,a as z,ac as c,ae as St,ai as Hr,aj as on,am as zn,aq as Yi,b as tt,be as qt,bg as gs,bh as Sr,bm as ti,bn as Si,c as st,ca as x,cf as ze,cg as ir,ch as fr,cj as Fs,cq as vi,d as l,de as C,di as Br,dm as si,dp as _i,ei as Yr,ej as En,ek as gn,em as kt,fc as we,fe as F,fg as xs,fh as ws,fi as vr,fj as cn,fl as yn,fm as it,gg as Rs,gj as hn,gl as Ks,hc as hs,he as Fe,hg as ar,hi as Ms,hk as xn,hl as qn,hm as ei,hn as fi,hq as Vi,ib as Ct,ie as He,ig as ms,ii as Bt,il as bn,im as $s,in as Ai,iq as Wi,ja as as,jc as Oe,je as Be,jg as or,ji as Vr,jp as wi,kc as Z,ke as Ye,kg as Er,ki as Wr,kk as Rn,kl as It,km as ri,kn as Lt,kp as jt,le as ve,lg as cr,lh as Ar,li as Xr,lk as mn,ln as at,lp as At,ma as he,mg as ds,mi as Kr,mn as gi,nc as ps,ne as Ve,ng as Ns,ni as Yt,nl as _t,nn as xi,np as Oi,od as De,of as Ss,oi as kr,om as $t,on as Ri,op as zt,p as H,pb as Es,pc as Le,pj as Hs,pl as Dn,pm as Jt,pp as A,qb as ge,qf as fs,qh as gr,qm as Js,qn as mi,qp as Li,r as T,rb as ut,rc as Pe,ri as $r,rl as Un,rm as ni,rn as di,sf as dt,si as Cs,sp as Pi,ta as Mt,tc as Me,te as m,tj as pn,tl as Gn,tq as Xi,ua as os,ue as We,uh as Os,uj as vt,up as Mi,uq as gt,ve as ls,vh as Ls,vi as Jr,vj as un,vo as D,we as Xe,wg as Is,wh as xr,wj as Bs,xe as Ke,xf as Dt,xh as Ps,xi as Zr,xl as Fn,xn as Zt,ya as pe,yc as B,ye as ke,yf as tr,yg as hr,yh as Rr,yi as ys,yl as Hn,yn as Qt,za as M,zb as xe,ze as K,zf as sr,zg as pr,zh as mr,zj as ln,zk as Vt}from"../chunk-KCNOE4DZ.js";var ta,ne;ta=[T];var ot=class{static get EXPRESSION_METADATA(){let i=new Map(Oi.EXPRESSION_METADATA),s=(t,e)=>{for(let n of t)i.set(n,e)};return s([fn,Kr,Gt,Ut,Ft,en,$,rn,Rn,dn,nn,ei,ri],{returns:"bigint"}),s([Zr],{returns:"int128"}),s([ze,dt,b,wt],{returns:"double"}),i.set(Lr,{returns:"interval"}),i.set(Bt,{returns:"time"}),i}};ne=z(null),l(ne,10,"EXPRESSION_METADATA",ta,ot),tt(ne,ot),st(ne,3,ot);var Ro=/:\d{2}.*?[+\-]\d{2}(?::\d{2})?/,sa={"\\":"\\\\","-":"\\-","^":"\\^","[":"\\[","]":"\\]"},mo="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",No=123456,ts={"\v":11,"":28,"":29,"":30,"":31},ns={MONDAY:1,TUESDAY:2,WEDNESDAY:3,THURSDAY:4,FRIDAY:5,SATURDAY:6,SUNDAY:7},Io=o.number(32768),ss="(ROW_NUMBER() OVER (ORDER BY 1) - 1)",_o=[Ie,ge,Fe,lt,Tt];function Ao(r,i,s={}){let{reverse:t=!1}=s;if(i instanceof o&&i.isString){let n=i.args.this??"";for(let a=0;a<Math.min(3,n.length);a++){let E="+/="[a],p=n[a]??"";if(p!==E){let[S,g]=t?[p,E]:[E,p];r=new On({this:r,expression:o.string(S),replacement:o.string(g)})}}}return r}function ea(r,i){let{toString:s=!1}=i,t=r.args.this,e=r.args.alphabet;return t=Ao(t??f(),e,{reverse:!0}),t=new Qr({this:t}),s&&(t=new Yt({this:t})),this.sql(t)}function wo(r){let i=r.args.this,s=r.text("unit").toUpperCase();if(!s||s==="MONTH")return this.func("LAST_DAY",[i]);if(s==="YEAR"){let t=this.func("EXTRACT",[new I({this:"YEAR"}),i]),e=this.func("MAKE_DATE",[t,o.number(12),o.number(31)]);return this.sql(e)}if(s==="QUARTER"){let t=this.func("EXTRACT",[new I({this:"YEAR"}),i]),e=this.func("EXTRACT",[new I({this:"QUARTER"}),i]),n=new nt({this:e,expression:o.number(3)}),a=this.func("MAKE_DATE",[t,n,o.number(1)]),E=this.func("LAST_DAY",[a]);return this.sql(E)}if(s==="WEEK"){let t=this.func("EXTRACT",[new I({this:"DAYOFWEEK"}),i]),e=new rt({this:new d({this:new q({this:o.number(7),expression:t})}),expression:o.number(7)}),n=new F({this:e,unit:new I({this:"DAY"})}),a=new m({this:i,expression:n}),E=new u({this:a,to:new c({this:"date"})});return this.sql(E)}return this.unsupported(`Unsupported date part '${s}' in LAST_DAY function`),this.functionFallbackSql(r)}function ce(r){return(r instanceof I||r instanceof o)&&r.name.toUpperCase()==="NANOSECOND"}function go(r,i){let s=new u({this:r,to:new c({this:"timestampNs"})}),t=new u({this:i,to:new c({this:"timestampNs"})});return this.sql(new q({this:this.func("EPOCH_NS",[s]),expression:this.func("EPOCH_NS",[t])}))}function Oo(r){let i=r.args.this,s=r.args.safe??!1,t=new v({}).when(new kt({this:new u({this:i,to:new c({this:"varchar"})})}).eq(o.string("ON")),new St({this:!0})).when(new kt({this:new u({this:i,to:new c({this:"varchar"})})}).eq(o.string("OFF")),new St({this:!1}));if(s)t.else(this.func("TRY_CAST",[i,c.build("BOOLEAN")]));else{let e=this.func("TRY_CAST",[i,c.build("REAL")]),n=new at({this:this.func("ISNAN",[e]),expression:this.func("ISINF",[e])});t.when(n,this.func("ERROR",[o.string("TO_BOOLEAN: Non-numeric values NaN and INF are not supported")])).else(new u({this:i,to:new c({this:"boolean"})}))}return this.sql(t)}function Lo(r){let i=r.args.this,s=this.sql(r,"zone");if(s){i=new u({this:i,to:new c({this:"timestamp"})});let t=new Z({this:i,zone:o.string("UTC")});i=new Z({this:t,zone:s})}return this.sql(new u({this:i,to:new c({this:"date"})}))}function Po(r){let i=r.args.unit;if(ce(i))return go.call(this,r.args.expression??f(),r.args.this??f());let s=new u({this:r.args.this,to:new c({this:"time"})}),t=new u({this:r.args.expression,to:new c({this:"time"})});return this.func("DATE_DIFF",[gt(r),t,s])}function J(r={}){let{cast:i=!0}=r,s=Xi({cast:i});return function(t){let e=H(t.getArgKey("unit"),"string",R),n=t.args.expression;if(ce(e instanceof R?e:void 0)){n instanceof F&&(n=n.args.this);let a=new u({this:H(t.args.this,"string",R),to:new c({this:"timestampNs"})});return this.sql(this.func("MAKE_TIMESTAMP_NS",[new m({this:this.func("EPOCH_NS",[a]),expression:H(n,"string",R)})]))}return!n||n instanceof F?s.call(this,t):(U(n,c.REAL_TYPES)&&t.setArgKey("expression",new u({this:this.func("ROUND",[n]),to:new c({this:"int"})})),s.call(this,t))}}function Mo(r){let i=r.args.this,s=r.args.position,t=r.args.expression,e=new Y({expressions:[t??f()]}),n=r.args.offset??0;if(!s?.isNumber)return this.unsupported("ARRAY_INSERT can only be transpiled with a literal position"),this.func("ARRAY_INSERT",[i,s,t]);let a=s.toValue();0<a?a-=n:a<0&&(a+=n);let E;if(a===0)E=[e,i??f()];else if(0<a){let p=new C({this:i,expressions:[new B({this:o.number(1),expression:o.number(a)})]}),S=new C({this:i,expressions:[new B({this:o.number(a+1)})]});E=[p,e,S]}else{let p=new $({this:i}),S=new m({this:p,expression:o.number(a)}),g=new m({this:S,expression:o.number(1)}),O=new C({this:i,expressions:[new B({this:o.number(1),expression:S})]}),is=new C({this:i,expressions:[new B({this:g})]});E=[O,e,is]}return this.sql(new ft({this:new k({this:i,expression:f()}),true:f(),false:this.func("LIST_CONCAT",E)}))}function Co(r){let i=r.args.this,s=r.args.position;if(!s?.isNumber)return this.unsupported("ARRAY_REMOVE_AT can only be transpiled with a literal position"),this.func("ARRAY_REMOVE_AT",[i,s]);let t=s.toValue(),e;if(t===0)e=new C({this:i,expressions:[new B({this:o.number(2)})]});else if(0<t){let n=new C({this:i,expressions:[new B({this:o.number(1),expression:o.number(t)})]}),a=new C({this:i,expressions:[new B({this:o.number(t+2)})]});e=this.func("LIST_CONCAT",[n,a])}else if(t===-1){let n=new $({this:i}),a=new m({this:n,expression:o.number(-1)});e=new C({this:i,expressions:[new B({this:o.number(1),expression:a})]})}else{let n=new $({this:i}),a=new m({this:n,expression:o.number(t)}),E=new m({this:a,expression:o.number(2)}),p=new C({this:i,expressions:[new B({this:o.number(1),expression:a})]}),S=new C({this:i,expressions:[new B({this:E})]});e=this.func("LIST_CONCAT",[p,S])}return this.sql(new ft({this:new k({this:i,expression:f()}),true:f(),false:e}))}function yo(r){return r.args.expression&&this.unsupported("DuckDB's ARRAY_SORT does not support a comparator."),this.func("ARRAY_SORT",[r.args.this])}function qo(r){let i=r.args.asc instanceof St&&!r.args.asc.args.this?"ARRAY_REVERSE_SORT":"ARRAY_SORT";return this.func(i,[r.args.this])}function ra(r){return new It({this:x(r,0),asc:new St({this:!1})})}function na(r){return new Rs({this:x(r,1),expression:x(r,0)})}function ia(r){return new Ps({this:x(r,2),expression:x(r,1),unit:x(r,0)})}function aa(r={}){let{endExclusive:i=!1}=r;return s=>{s.length===1&&s.unshift(o.number("0"));let t=gs.fromArgList(s);return t.setArgKey("isEndExclusive",i),t}}function bo(r){return r.length===1?new V({this:x(r,0),scale:V.MICROS}):new si({year:x(r,0),month:x(r,1),day:x(r,2),hour:x(r,3),min:x(r,4),sec:x(r,5)})}function oa(...r){return function(){return this.parseShowDuckdb(r[0])}}function Do(r){let i=r.findAncestor(u,Tt);if(i=i instanceof Tt?void 0:i,(!r.args.expressions||r.args.expressions.length===0)&&i instanceof u&&U(i.args.to,"map"))return"MAP()";let s=[],t=!r.find(Rt)&&i instanceof u&&[...i.findAll(c)].some(n=>U(n,"struct"));r.args.expressions?.forEach((n,a)=>{let E=n instanceof Rt,p=n.args.this,S=E?n.args.expression:n;if(t)s.push(this.sql(S));else{let g;p instanceof ut?g=this.sql(o.string(n.name)):E?g=this.sql(n.args.this):g=this.sql(o.string(`_${a}`)),s.push(`${g}: ${this.sql(S)}`)}});let e=s.join(", ");return t?`ROW(${e})`:`{${e}}`}function Uo(r){if(U(r,"array")){let i=this.expressions(r,{flat:!0}),s=this.expressions(r,{key:"values",flat:!0});return`${i}[${s}]`}if(U(r,["time","timetz","timestamptz"])){let i=r.args.this;return i instanceof R?i.name:i?he(i):""}return At.prototype.dataTypeSql.call(this,r)}function Go(r){return`CAST(${this.func("TO_JSON",[r.args.this,r.args.options])} AS TEXT)`}function es(r,i){let s=r.findAncestor(..._o);s&&(!(s instanceof lt||s instanceof Tt)||s instanceof lt&&s.parent instanceof yt)&&this.unsupported("SEQ in restricted context is not supported - use CTE or subquery");let t=i*8,e=o.number(Math.pow(2,t)),n;if(r.name==="1"){let a=o.number(Math.pow(2,t-1));n=y(this._constructor.SEQ_SIGNED.copy(),[e,a])}else n=y(this._constructor.SEQ_UNSIGNED.copy(),[e]);return this.sql(n)}function Fo(r){let i=r.args.scale,s=i?.toValue(),t=r.args.this,e=r.args.targetType,n=U(e,["timestamp","timestampntz"]);if(s===V.MILLIS.toValue())return this.func("EPOCH_MS",[t]);if(s===V.MICROS.toValue())return this.func("MAKE_TIMESTAMP",[t]);s!==void 0&&s!==V.SECONDS.toValue()&&(t=new K({this:t,expression:this.func("POW",[o.number(10),i])}));let a=new P({this:"TO_TIMESTAMP",expressions:[t??f()]});return n&&(a=new Z({this:a,zone:o.string("UTC")})),this.sql(a)}var Ho=[qt,C,je,mt];function Ea(r){let i=Pi.call(this,r);return!r.sameParent&&Ho.some(s=>r.parent instanceof s)&&(i=this.wrap(i)),i}function ct(r,i="date"){if(r instanceof o&&r.isString){let s=r.args.this??"",t=i;return i==="date"&&s.includes(":")&&(t=Ro.test(s)?"timestamptz":"timestamp"),new u({this:r,to:new c({this:t})})}return r}function Bo(r){if(r instanceof I&&r.name.toUpperCase()==="ISOWEEK")return 1;if(r instanceof Ce)return ns[r.name.toUpperCase()]}function ca(r,i){let s=i===7?1:1-i,t=s!==0?new Os({this:r,expression:new F({this:o.string(s.toString()),unit:new I({this:"DAY"})})}):r;return new Rr({unit:new I({this:"WEEK"}),this:t})}function ha(r){let i=r.args.unit;if(ce(i))return go.call(this,r.args.this??f(),r.args.expression??f());let s=ct(r.args.this),t=ct(r.args.expression),e=r.args.datePartBoundary,n=Bo(i);return e&&n!==void 0&&s&&t&&(r.setArgKey("unit",o.string("WEEK")),s=ca(s,n),t=ca(t,n)),this.func("DATE_DIFF",[gt(r),t,s])}function pa(r){let i=r instanceof Ds,s=i?"date":"timestamp",t=ct(r.args.start,s),e=ct(r.args.end,s),n=new gs({start:t,end:e,step:r.args.step});return i&&(n=new u({this:n,to:c.build("ARRAY<DATE>")})),this.sql(n)}function ua(r){let i=r.args.expression instanceof R?r.args.expression:void 0,s=new vt({this:r.args.this,expression:i}),t=r instanceof Hs?"ARRAY<STRING>":"ARRAY<JSON>";return this.sql(new u({this:s,to:c.build(t)}))}function W(r){if(r!==void 0)return r instanceof R&&r.type&&!U(r,[...c.TEXT_TYPES,"unknown"])?new u({this:r,to:new c({this:"varchar"})}):r instanceof R?r:o.string(r.toString())}function ae(r){return r&&!U(r,"boolean")?new u({this:r,to:new c({this:"boolean"})}):r}function X(r){return U(r,["binary","varbinary","blob"])}function Q(r,i){if(X(r)){let s=c.build("BLOB",{dialect:"duckdb"});i=this.sql(new u({this:i,to:s}))}return i}function oe(r){if(!X(r))return r;let i=r;return r instanceof ye&&(i=new Jn({this:o.string(r.args.this)})),new u({this:i,to:new c({this:"bit"})})}function la(r){r.args.this instanceof R&&X(r.args.this)&&r.setArgKey("this",oe(r.args.this)),r.args.expression instanceof R&&X(r.args.expression)&&r.setArgKey("expression",oe(r.args.expression))}function Ta(r){let i=r.args.this,s=r.args.expression,t=this.func("ISODOW",[i]),e;if(s instanceof o){let a=(s.args.this??"").toUpperCase(),E=Object.keys(ns).find(p=>p.startsWith(a));if(E)e=o.number(ns[E]);else return this.functionFallbackSql(r)}else{let a=new kt({this:s});e=new v({ifs:Object.entries(ns).map(([E,p])=>new ft({this:this.func("STARTS_WITH",[a.copy(),o.string(E.substring(0,2))]),true:o.number(p)}))})}let n;if(r instanceof $s){let a=new rt({this:new d({this:new m({this:new q({this:e,expression:t}),expression:o.number(6)})}),expression:o.number(7)}).add(1);n=new m({this:i,expression:new F({this:a,unit:new I({this:"DAY"})})})}else{let a=new rt({this:new d({this:new m({this:new q({this:t,expression:e}),expression:o.number(6)})}),expression:o.number(7)}).add(1);n=new q({this:i,expression:new F({this:a,unit:new I({this:"DAY"})})})}return this.sql(new u({this:n,to:new c({this:"date"})}))}function Yo(r){let i=r.args.this;if(i instanceof Pe){let s=i.args.max?"ARG_MAX_NULL":"ARG_MIN_NULL";return this.func(s,[i.args.this,i.args.expression])}return this.functionFallbackSql(r)}function ie(r){let i="BIT_XOR";r instanceof Jt?i="BIT_OR":r instanceof $t&&(i="BIT_AND");let s=r.args.this;return U(s,[...c.REAL_TYPES,...c.TEXT_TYPES])&&(U(s,c.FLOAT_TYPES)&&(s=this.func("ROUND",[s])),s=new u({this:s,to:new c({this:"int"})})),this.func(i,[s])}function vo(r){let i=r.split("");if(!i.some(a=>a in ts))return this.sql(o.string(r));let s=[],t=[],e=!1;for(let a of i){let E=a in ts;E!==e&&(0<t.length&&(e?t.forEach(p=>s.push(this.func("CHR",[o.number(ts[p])]))):s.push(this.sql(o.string(t.join(""))))),t=[],e=E),t.push(a)}0<t.length&&(e?t.forEach(a=>s.push(this.func("CHR",[o.number(ts[a])]))):s.push(this.sql(o.string(t.join("")))));let n=s.join(" || ");return s.length===1?n:`(${n})`}function Vo(r,i){if(!r)return i;if(r instanceof o&&r.isString){let e=(r.args.this??"").split("").map(n=>sa[n]??n).join("");return vo.call(this,e)}let s=i;return Object.entries(sa).forEach(([t,e])=>{s=this.func("REPLACE",[s,this.sql(o.string(t)),this.sql(o.string(e))])}),s}function Wo(r,i){if(i==="''")return`UPPER(LEFT(${r}, 1)) || LOWER(SUBSTRING(${r}, 2))`;let s=`CONCAT('[', ${i}, ']')`,t=`CONCAT('([', ${i}, ']+|[^', ${i}, ']+)')`;return this.func("ARRAY_TO_STRING",[new v({}).when(`REGEXP_MATCHES(LEFT(${r}, 1), ${s})`,this.func("LIST_TRANSFORM",[this.func("REGEXP_EXTRACT_ALL",[r,t]),"(seg, idx) -> CASE WHEN idx % 2 = 0 THEN UPPER(LEFT(seg, 1)) || LOWER(SUBSTRING(seg, 2)) ELSE seg END"])).else(this.func("LIST_TRANSFORM",[this.func("REGEXP_EXTRACT_ALL",[r,t]),"(seg, idx) -> CASE WHEN idx % 2 = 1 THEN UPPER(LEFT(seg, 1)) || LOWER(SUBSTRING(seg, 2)) ELSE seg END"])),"''"])}function Xo(r){let i=this.sql(r,"this"),s=r.args.expression;s||(s=o.string(this.dialect._constructor.INITCAP_DEFAULT_DELIMITER_CHARS));let t=this.sql(s),e=Vo.call(this,s,t);return Wo.call(this,i,e)}function Ko(r){return this.sql(new et({this:ae(r.args.this)??r.args.this,expression:o.number(1)}))}function Sa(r){let i=r instanceof ls?"<<":">>",s=!1,t=r.args.this;t instanceof R&&X(t)?(s=!0,r.setArgKey("this",new u({this:t,to:new c({this:"bit"})}))):r.args.requiresInt128&&t instanceof R&&t.replace(new u({this:t,to:new c({this:"int128"})}));let e=this.binary(r,i);return r.parent instanceof qt&&(e=`(${e})`),s&&(e=this.sql(new u({this:e,to:c.build("BLOB",{dialect:"duckdb"})}))),e}function ko(r,i){let s=r.args.decimals;if(!s||r.args.to!==void 0)return;let t=r.args.this;t instanceof qt&&(t=new d({this:t}));let e=s instanceof o&&(s.isNumber||s.isInteger)?s:new u({this:s,to:new c({this:"int"})}),n=new Vt({this:o.number("10"),expression:e}),a=new i({this:new nt({this:t,expression:n})}),E=new K({this:a,expression:n.copy()});return this.roundSql(new Xs({this:E,decimals:s,castsNonIntegerDecimals:!0}))}function fa(r){let i=ko.call(this,r,r._constructor);return i!==void 0?i:this.ceilFloor(r)}function Aa(r){let i=r.args.this??f(),s=r.args.expression??f(),t,e,n;r instanceof Zs?(t=i,e=s,n="expression"):(t=s,e=i,n="this");let a=e.type;if(!a||typeof a=="string"||a.args.this==="unknown")try{let S=pt(r.copy(),{dialect:this.dialect}).args[n];a=S instanceof R?S.type:void 0}catch{}(!a||typeof a=="string"||a.args.this==="unknown")&&(a=c.build("DOUBLE"));let E=new u({this:f(),to:a});return this.sql(new ft({this:new k({this:t.copy(),expression:f()}),true:E,false:e.copy()}))}function $o(r){let i=r;for(;i instanceof yt||i instanceof Ct;)i=i.args.this??f();if(!(!(i instanceof it)||!i.args.nullOnZeroVariance))return i.setArgKey("nullOnZeroVariance",!1),r}function Jo(r){let i=r.args.year,s=r.args.month,t=r.args.day;if(r.args.allowOverflow){let e=new P({this:"MAKE_DATE",expressions:[i??f(),o.number(1),o.number(1)]});return s&&(e=new m({this:e,expression:new F({this:new q({this:s,expression:o.number(1)}),unit:new I({this:"MONTH"})})})),t&&(e=new m({this:e,expression:new F({this:new q({this:t,expression:o.number(1)}),unit:new I({this:"DAY"})})})),this.sql(new u({this:e,to:new c({this:"date"})}))}return this.func("MAKE_DATE",[i,s,t])}function ht(r,i){return i?new Xs({this:r,decimals:o.number(0)}):r}function Zo(r){let i=ht(r.args.this??f(),r.args.roundInput);return this.sql(new mt({this:new d({this:i})}))}function Qo(r){let i=r.args.roundInput,s=ht(r.args.this??f(),i),t=ht(r.args.expression??f(),i);return this.sql(new d({this:new Lt({this:new d({this:s}),expression:new d({this:t})})}))}function jo(r){let i=r.args.roundInput,s=ht(r.args.this??f(),i),t=ht(r.args.expression??f(),i);return this.sql(new d({this:new at({this:new d({this:s}),expression:new d({this:t})})}))}function zo(r){let i=r.args.roundInput,s=r.args.this&&ht(r.args.this,i),t=r.args.expression&&ht(r.args.expression,i),e=new mt({this:new d({this:s?.copy()})}),n=new mt({this:new d({this:t?.copy()})});return this.sql(new at({this:new d({this:new Lt({this:s?.copy(),expression:n})}),expression:new d({this:new Lt({this:e,expression:t?.copy()})})}))}function rs(r,i,s={}){let{isBinary:t=!1}=s,e=r.args.this;i==="SHA256"&&(r.text("length")||"256")!=="256"&&this.unsupported("DuckDB only supports SHA256 hashing algorithm."),e instanceof R&&e.type&&(!(e.type instanceof R)||e.type.args.this!=="unknown")&&!e.isType(c.TEXT_TYPES)&&!X(e)&&(e=new u({this:e,to:new c({this:"varchar"})}));let n=this.func(i,[e]);return t?this.func("UNHEX",[n]):n}var ga,xa,Ra,ma,da,Na,Ia,j,G=class extends(Ia=Pt,Na=[T],da=[T],ma=[T],Ra=[T],xa=[T],ga=[T],Ia){static get BYTE_STRINGS(){return[["e'","'"],["E'","'"]]}static get BYTE_STRING_ESCAPES(){return["'","\\"]}static get HEREDOC_STRINGS(){return["$"]}static get ORIGINAL_KEYWORDS(){let s={...Pt.KEYWORDS,"//":"div","**":"dstar","^@":"caretAt","@>":"atGt","<@":"ltAt",ATTACH:"attach",BINARY:"varbinary",BITSTRING:"bit",BPCHAR:"text",CHAR:"text",DATETIME:"timestampntz",DETACH:"detach",FORCE:"force",INSTALL:"install",INT8:"bigint",LOGICAL:"boolean",MACRO:"function",ONLY:"only",PIVOT_WIDER:"pivot",POSITIONAL:"positional",RESET:"command",ROW:"struct",SIGNED:"int",STRING:"text",SUMMARIZE:"summarize",TIMESTAMP:"timestampntz",TIMESTAMP_S:"timestampS",TIMESTAMP_MS:"timestampMs",TIMESTAMP_NS:"timestampNs",TIMESTAMP_US:"timestamp",UBIGINT:"ubigint",UINTEGER:"uint",USMALLINT:"usmallint",UTINYINT:"utinyint",VARCHAR:"text"};return delete s["/*+"],s}static get SINGLE_TOKENS(){return{...Pt.SINGLE_TOKENS,$:"parameter"}}static get COMMANDS(){let s=new Set(Pt.COMMANDS);return s.delete("show"),s}};j=z(Ia),l(j,10,"BYTE_STRINGS",Na,G),l(j,10,"BYTE_STRING_ESCAPES",da,G),l(j,10,"HEREDOC_STRINGS",ma,G),l(j,10,"ORIGINAL_KEYWORDS",Ra,G),l(j,10,"SINGLE_TOKENS",xa,G),l(j,10,"COMMANDS",ga,G),tt(j,G),st(j,3,G),G.HEREDOC_TAG_IS_IDENTIFIER=!0,G.HEREDOC_STRING_ALTERNATIVE="parameter";var _a,wa,Oa,La,Pa,Ma,Ca,ya,qa,ba,Da,Ua,Ga,Fa,Ha,Ba,L,w=class extends(Ba=M,Ha=[T],Fa=[T],Ga=[T],Ua=[T],Da=[T],ba=[T],qa=[T],ya=[T],Ca=[T],Ma=[T],Pa=[T],La=[T],Oa=[T],wa=[T],_a=[T],Ba){static get NO_PAREN_FUNCTIONS(){let s={...M.NO_PAREN_FUNCTIONS};return s.sessionUser=gr,s.currentCatalog=Ar,s}static get BITWISE(){return(()=>{let s={...M.BITWISE};return delete s.caret,s})()}static get RANGE_PARSERS(){return{...M.RANGE_PARSERS,damp:Mt(Is),caretAt:Mt(Un),tilde:Mt(wn)}}static get EXPONENT(){return{...M.EXPONENT,caret:Vt,dstar:Vt}}static get FUNCTIONS_WITH_ALIASED_ARGS(){return new Set([...M.FUNCTIONS_WITH_ALIASED_ARGS,"STRUCT_PACK"])}static get SHOW_PARSERS(){return{TABLES:oa("TABLES"),"ALL TABLES":oa("ALL TABLES")}}static get FUNCTIONS(){return(()=>{let s={...M.FUNCTIONS,ANY_VALUE:t=>new Le({this:Ot.fromArgList(t)}),APPROX_QUANTILE:t=>Qs.fromArgList(t),ARRAY_PREPEND:na,ARRAY_REVERSE_SORT:ra,ARRAY_SORT:t=>It.fromArgList(t),BIT_AND:t=>$t.fromArgList(t),BIT_OR:t=>Jt.fromArgList(t),BIT_XOR:t=>Js.fromArgList(t),DATEDIFF:ia,DATE_DIFF:ia,DATE_TRUNC:t=>se([x(t,0),x(t,1)]),DATETRUNC:t=>se([x(t,0),x(t,1)]),DECODE:t=>new Yt({this:x(t,0),charset:o.string("utf-8")}),EDITDIST3:t=>Ys.fromArgList(t),JARO_WINKLER_SIMILARITY:t=>dt.fromArgList(t),ENCODE:t=>new Cs({this:x(t,0),charset:o.string("utf-8")}),EPOCH:t=>wt.fromArgList(t),EPOCH_MS:t=>new V({this:x(t,0),scale:V.MILLIS}),GENERATE_SERIES:aa(),GET_BIT:t=>new Us({this:x(t,0),expression:x(t,1),zeroIsMsb:!0}),JSON:t=>Tn.fromArgList(t),JSON_EXTRACT_PATH:os(vt),JSON_EXTRACT_STRING:os(Bs),LIST_APPEND:t=>xs.fromArgList(t),LIST_CONCAT:pe,LIST_CONTAINS:t=>ds.fromArgList(t),LIST_COSINE_DISTANCE:t=>Ss.fromArgList(t),LIST_DISTANCE:t=>fs.fromArgList(t),LIST_FILTER:t=>Ns.fromArgList(t),LIST_HAS:t=>ds.fromArgList(t),LIST_HAS_ANY:t=>Is.fromArgList(t),LIST_PREPEND:na,LIST_REVERSE_SORT:ra,LIST_SORT:t=>It.fromArgList(t),LIST_TRANSFORM:t=>As.fromArgList(t),LIST_VALUE:t=>new Y({expressions:t}),MAKE_DATE:t=>Ms.fromArgList(t),MAKE_TIME:t=>Bt.fromArgList(t),MAKE_TIMESTAMP:bo,QUANTILE_CONT:t=>Zt.fromArgList(t),QUANTILE_DISC:t=>Qt.fromArgList(t),RANGE:aa({endExclusive:!0}),REGEXP_EXTRACT:re(Nn),REGEXP_EXTRACT_ALL:re(In),REGEXP_MATCHES:t=>Vs.fromArgList(t),REGEXP_REPLACE:t=>new Wt({this:x(t,0),expression:x(t,1),replacement:x(t,2),modifiers:x(t,3),singleReplace:!0}),SHA256:t=>new Ks({this:x(t,0),length:o.number(256)}),STRFTIME:te(ks,{dialect:"duckdb"}),STRING_SPLIT:t=>_t.fromArgList(t),STRING_SPLIT_REGEX:t=>Xt.fromArgList(t),STRING_TO_ARRAY:t=>_t.fromArgList(t),STRPTIME:te(Fn,{dialect:"duckdb"}),STRUCT_PACK:t=>Kt.fromArgList(t),STR_SPLIT:t=>_t.fromArgList(t),STR_SPLIT_REGEX:t=>Xt.fromArgList(t),TIME_BUCKET:t=>Ls.fromArgList(t),TO_TIMESTAMP:t=>V.fromArgList(t),UNNEST:t=>ys.fromArgList(t),VERSION:t=>_s.fromArgList(t),XOR:Wi(ke)};return delete s.DATE_SUB,delete s.GLOB,s})()}static get FUNCTION_PARSERS(){return(()=>{let s={...M.FUNCTION_PARSERS,...Object.fromEntries(["GROUP_CONCAT","LISTAGG","STRINGAGG"].map(t=>[t,function(){return this.parseStringAgg()}]))};return delete s.DECODE,s})()}static get NO_PAREN_FUNCTION_PARSERS(){return{...M.NO_PAREN_FUNCTION_PARSERS,MAP:function(){return this.parseMap()},"@":function(){return new Nt({this:this.parseBitwise()})}}}static get ID_VAR_TOKENS(){return new Set([...M.ID_VAR_TOKENS,"straightJoin"])}static get TABLE_ALIAS_TOKENS(){return(()=>{let s=new Set(M.TABLE_ALIAS_TOKENS);return s.delete("semi"),s.delete("anti"),s.add("straightJoin"),s})()}static get PLACEHOLDER_PARSERS(){return{...M.PLACEHOLDER_PARSERS,parameter:function(){return this.match("number")||this.matchSet(this._constructor.ID_VAR_TOKENS)?this.expression(Ge,{this:this.prev?.text}):void 0}}}static get TYPE_CONVERTERS(){return{decimal:$i(18,3),text:()=>c.build("TEXT")??new c({this:"text"})}}static get STATEMENT_PARSERS(){return{...M.STATEMENT_PARSERS,attach:function(){return this.parseAttachDetach()},detach:function(){return this.parseAttachDetach({isAttach:!1})},force:function(){return this.parseForce()},install:function(){return this.parseInstall()},show:function(){return this.parseShow()}}}static get SET_PARSERS(){return{...M.SET_PARSERS,VARIABLE:function(){return this.parseSetItemAssignment({kind:"VARIABLE"})}}}parseLambda(s={}){let t=this.index;if(!this.matchTextSeq("LAMBDA"))return super.parseLambda(s);let e=this.parseCsv(()=>this.parseLambdaArg());if(!this.match("colon")){this.retreat(t);return}let n=this.replaceLambda(this.parseAssignment(),e);return this.expression(xe,{this:n,expressions:e,colon:!0})}parseExpression(){if(this.next&&this.next.tokenType==="colon"){let s=this.parseIdVar({tokens:this._constructor.ALIAS_TOKENS});this.match("colon");let t=this.prevComments??[],e=this.parseAssignment();return e instanceof R&&(t=[...t,...e.popComments()??[]]),this.expression(hs,{comments:t,this:e,alias:s})}return super.parseExpression()}parseTable(s={}){let t,e=[];this.next&&this.next.tokenType==="colon"&&(t=this.parseTableAlias({aliasTokens:s.aliasTokens??this._constructor.TABLE_ALIAS_TOKENS}),this.match("colon"),e=this.prevComments??[]);let n=super.parseTable(s);return n instanceof R&&t instanceof xt&&(e=[...e,...n.popComments()??[]],t.comments=[...t.popComments()??[],...e],n.setArgKey("alias",t)),n}parseTableSample(s={}){let t=super.parseTableSample(s);return t&&!t.args.method&&(t.args.size?t.setArgKey("method",new I({this:"RESERVOIR"})):t.setArgKey("method",new I({this:"SYSTEM"}))),t}parseBracket(s){let t=super.parseBracket(s);return this.dialect.version.major<=1&&this.dialect.version.minor<=2&&(this.dialect.version.major!==1||this.dialect.version.minor!==2)&&t instanceof C&&t.setArgKey("returnsListForMaps",!0),t}parseMap(){if(this.match("lBrace",{advance:!1}))return this.expression(An,{this:this.parseBracket()});let s=this.parseWrappedCsv(()=>this.parseAssignment());return this.expression(vs,{keys:x(s,0),values:x(s,1)})}parseStructTypes(s={}){return this.parseFieldDef()}pivotColumnNames(s){return s.length===1?super.pivotColumnNames(s):Vi(s,{dialect:"duckdb"})}parseAttachDetach(s={}){let{isAttach:t=!0}=s,e=()=>this.expression(we,{this:this.parseVar({anyToken:!0}),expression:this.parseField({anyToken:!0})});this.match("database");let n=this.parseExists({not:t}),a=this.parseAlias(this.parsePrimaryOrVar(),{explicit:!0}),E;return this.match("lParen",{advance:!1})&&(E=this.parseWrappedCsv(e)),t?this.expression(le,{this:a,exists:n,expressions:E}):this.expression(Te,{this:a,exists:n})}parseShowDuckdb(s){return this.expression(fe,{this:s})}parseForce(){return this.match("install")?this.parseInstall({force:!0}):this.parseAsCommand(this.prev)}parseInstall(s={}){return this.expression(Se,{this:this.parseIdVar(),from:this.match("from")?this.parseVarOrString():void 0,force:s.force??!1})}parsePrimary(){return this.matchPair("hash","number")?new Me({this:o.number(this.prev?.text||0)}):super.parsePrimary()}};L=z(Ba),l(L,10,"NO_PAREN_FUNCTIONS",Ha,w),l(L,10,"BITWISE",Fa,w),l(L,10,"RANGE_PARSERS",Ga,w),l(L,10,"EXPONENT",Ua,w),l(L,10,"FUNCTIONS_WITH_ALIASED_ARGS",Da,w),l(L,10,"SHOW_PARSERS",ba,w),l(L,10,"FUNCTIONS",qa,w),l(L,10,"FUNCTION_PARSERS",ya,w),l(L,10,"NO_PAREN_FUNCTION_PARSERS",Ca,w),l(L,10,"ID_VAR_TOKENS",Ma,w),l(L,10,"TABLE_ALIAS_TOKENS",Pa,w),l(L,10,"PLACEHOLDER_PARSERS",La,w),l(L,10,"TYPE_CONVERTERS",Oa,w),l(L,10,"STATEMENT_PARSERS",wa,w),l(L,10,"SET_PARSERS",_a,w),tt(L,w),st(L,3,w),w.MAP_KEYS_ARE_ARBITRARY_EXPRESSIONS=!0;var Ya,va,Va,Wa,Xa,Ka,ka,$a,Ja,Za,Qa,ja,za,to,so,eo,ro,no,io,ao,oo,Eo,co,ho,N,h=class h extends(ho=At,co=[T],Eo=[T],oo=[T],ao=[T],io=[T],no=[T],ro=[T],eo=[T],so=[T],to=[T],za=[T],ja=[T],Qa=[T],Za=[T],Ja=[T],$a=[T],ka=[T],Ka=[T],Xa=[T],Wa=[T],Va=[T],va=[T],Ya=[T],ho){static get AFTER_HAVING_MODIFIER_TRANSFORMS(){let s=new Map(super.AFTER_HAVING_MODIFIER_TRANSFORMS);return["cluster","distribute","sort"].forEach(t=>s.delete(t)),s}static get STRUCT_DELIMITER(){return["(",")"]}static get ORIGINAL_TRANSFORMS(){return new Map([...At.TRANSFORMS,[Ot,Yo],[ai,Li],[tr,Zo],[sr,Qo],[er,jo],[Y,js([wi],Mi)],[xs,zs("LIST_APPEND")],[ms,Ki],[cr,function(t){return this.sql(new ms({this:new Y({expressions:t.args.expressions})}))}],[ar,qi("LIST_CONCAT")],[Ns,A("LIST_FILTER")],[or,Mo],[Er,Co],[rr,ki],[hr,yo],[Rs,zs("LIST_PREPEND",{swapParams:!0})],[pr,A("LIST_SUM")],[Ei,function(t){return this.func("LIST",[new ps({expressions:[t.args.this]})])}],[zr,function(t){return ea.call(this,t,{toString:!1})}],[tn,function(t){return ea.call(this,t,{toString:!0})}],[We,function(t){return this.bitwiseOp(t,"&")}],[$t,ie],[ls,Sa],[Xe,function(t){return this.bitwiseOp(t,"|")}],[Jt,ie],[Ke,Sa],[Js,ie],[Dt,function(t){return this.func("OCTET_LENGTH",[t.args.this])}],[be,Ci],[it,function(t){return this.corrSql(t)}],[Ss,A("LIST_COSINE_DISTANCE")],[Sr,()=>"CURRENT_TIME"],[ws,function(t){return t.args.sysdate?this.sql(new Z({this:new I({this:"CURRENT_TIMESTAMP"}),zone:o.string("UTC")})):"CURRENT_TIMESTAMP"}],[_s,A("version")],[fr,function(t){return jt.call(this,t,"this"),"LOCALTIME"}],[Gt,A("DAYOFMONTH")],[Ut,A("DAYOFWEEK")],[wr,A("ISODOW")],[Ft,A("DAYOFYEAR")],[Or,function(t){return t.args.abbreviated?this.func("STRFTIME",[t.args.this,o.string("%a")]):this.func("DAYNAME",[t.args.this])}],[mn,function(t){return t.args.abbreviated?this.func("STRFTIME",[t.args.this,o.string("%b")]):this.func("MONTHNAME",[t.args.this])}],[c,Uo],[Xr,Lo],[Os,J()],[Ms,Jo],[xr,J()],[Ps,ha],[Vr,Hi],[mr,Gi],[Ir,ha],[Nr,J()],[dr,J()],[Wr,function(t){return`CAST(STRFTIME(${this.sql(t,"this")}, ${_.DATEINT_FORMAT}) AS INT)`}],[Yt,function(t){return ee.call(this,t,"DECODE",{replace:!1})}],[kr,Bi],[$r,function(t){return`CAST(STRPTIME(CAST(${this.sql(t,"this")} AS TEXT), ${_.DATEINT_FORMAT}) AS DATE)`}],[Cs,function(t){return ee.call(this,t,"ENCODE",{replace:!1})}],[Jr,function(t){return this.sql(new Je({this:t.args.this,expression:t.args.expression}))}],[fs,A("LIST_DISTANCE")],[Ds,pa],[sn,pa],[Us,zi],[Ai,function(t){return Qi.call(this,t,{withinGroup:!1})}],[ys,A("UNNEST")],[bt,function(t){return this.binary(t,"//")}],[En,A("ISINF")],[Fs,A("ISNAN")],[cn,function(t){return this.sql(new et({this:this.func("JSON_TYPE",[t.args.this]),expression:o.string("NULL")}))}],[hn,function(t){return this.sql(new et({this:this.func("JSON_TYPE",[t.args.this]),expression:o.string("ARRAY")}))}],[ur,fa],[bs,fa],[dt,A("JARO_WINKLER_SIMILARITY")],[pn,A("JSON_EXISTS")],[vt,Ea],[un,ua],[ln,Go],[Hs,ua],[Ve,Ji],[mi,function(t){return this.func("BOOL_OR",[ae(t.args.this)])}],[di,function(t){return this.func("BOOL_AND",[ae(t.args.this)])}],[Ln,function(t){return es.call(this,t,1)}],[Pn,function(t){return es.call(this,t,2)}],[Mn,function(t){return es.call(this,t,4)}],[Cn,function(t){return es.call(this,t,8)}],[ni,Ko],[qr,function(t){return Zi.call(this,t,{sep:" "})}],[on,Xo],[xn,function(t){return this.func("UNHEX",[this.func("MD5",[t.args.this])])}],[yn,function(t){return rs.call(this,t,"SHA1")}],[qn,function(t){return rs.call(this,t,"SHA1",{isBinary:!0})}],[Ks,function(t){return rs.call(this,t,"SHA256")}],[bn,function(t){return rs.call(this,t,"SHA256",{isBinary:!0})}],[yr,bi],[$s,Ta],[Zt,A("QUANTILE_CONT")],[Qt,A("QUANTILE_DISC")],[Ne,js([_i])],[Dr,Ta],[Wt,function(t){return this.func("REGEXP_REPLACE",[t.args.this,t.args.expression,t.args.replacement,ji(t)])}],[Vs,A("REGEXP_MATCHES")],[_n,function(t){return this.func("REGEXP_MATCHES",[t.args.this,t.args.expression,o.string("i")])}],[Xt,A("STR_SPLIT_REGEX")],[Zs,Aa],[Ni,Aa],[me,function(t){return this.sql(t,"this")}],[us,function(t){return t.args.this instanceof de?"TABLE":""}],[b,A("RANDOM")],[_t,A("STR_SPLIT")],[It,qo],[Gn,yi],[Hn,function(t){return this.func("EPOCH",[this.func("STRPTIME",[t.args.this,this.formatTime(t)])])}],[Kt,Do],[As,A("LIST_TRANSFORM")],[Br,J()],[Yr,J()],[Bn,Ui],[vr,Po],[Ur,Di],[Gr,J()],[Hr,function(t){return this.func("DATE_DIFF",[o.string(t.args.unit),t.args.expression,t.args.this])}],[Fr,J()],[Yn,function(t){return this.sql(new u({this:t.args.this,to:new c({this:"date"})}))}],[vn,Fi],[Vn,function(t){return this.func("EPOCH",[new u({this:t.args.this,to:new c({this:"timestamp"})})])}],[ks,function(t){return this.func("STRFTIME",[t.args.this,this.formatTime(t)])}],[nr,Oo],[wt,A("EPOCH")],[$n,function(t){return`CAST(SUBSTR(REPLACE(CAST(${this.sql(t,"this")} AS TEXT), '-', ''), 1, 8) AS INT)`}],[Xn,J()],[Kn,function(t){let n=t.args.unit?.name?.toUpperCase()||"DAY";return this.func("DATE_DIFF",[o.string(n),new u({this:t.args.expression,to:new c({this:"timestamp"})}),new u({this:t.args.this,to:new c({this:"timestamp"})})])}],[zn,function(t){return this.func("EPOCH_US",[ct(t.args.this)])}],[ti,function(t){return this.func("EPOCH_MS",[ct(t.args.this)])}],[jn,function(t){return this.sql(new u({this:this.func("EPOCH",[ct(t.args.this)]),to:new c({this:"bigint"})}))}],[Zn,function(t){return this.func("STRFTIME",[this.func("TO_TIMESTAMP",[t.args.this]),this.formatTime(t)])}],[_r,function(t){return this.func("DATE_TRUNC",[gt(t),new u({this:t.args.this,to:new c({this:"datetime"})})])}],[V,Fo],[Qn,function(t){return`CAST(TO_TIMESTAMP(${this.sql(t,"this")}) AS TEXT)`}],[gn,function(t){return this.func("MAP",[t.args?.keys,t.args?.values])}],[Ii,A("VAR_POP")],[Pr,A("WEEKOFYEAR")],[Mr,function(t){return this.sql(new Ht({this:new I({this:"ISOYEAR"}),expression:t.args.this}))}],[Cr,function(t){return this.sql(new Ht({this:new I({this:"ISOYEAR"}),expression:t.args.this}))}],[gi,zo],[xi,A("JSON_GROUP_OBJECT")],[Ri,A("JSON_GROUP_OBJECT")],[Ls,A("TIME_BUCKET")],[br,wo]])}static get SUPPORTED_JSON_PATH_PARTS(){return new Set([He,Be,Ye,ve])}static get TYPE_MAPPING(){return new Map([...At.TYPE_MAPPING,["binary","BLOB"],["bpchar","TEXT"],["char","TEXT"],["datetime","TIMESTAMP"],["decfloat","DECIMAL(38, 5)"],["float","REAL"],["jsonb","JSON"],["nchar","TEXT"],["nvarchar","TEXT"],["uint","UINTEGER"],["varbinary","BLOB"],["rowversion","BLOB"],["varchar","TEXT"],["timestampltz","TIMESTAMPTZ"],["timestampntz","TIMESTAMP"],["timestampS","TIMESTAMP_S"],["timestampMs","TIMESTAMP_MS"],["timestampNs","TIMESTAMP_NS"],["bigdecimal","DECIMAL(38, 5)"]])}static get RESERVED_KEYWORDS(){return new Set(["array","analyse","union","all","when","in_p","default","create_p","window","asymmetric","to","else","localtime","from","end_p","select","current_date","foreign","with","grant","session_user","or","except","references","fetch","limit","group_p","leading","into","collate","offset","do","then","localtimestamp","check_p","lateral_p","current_role","where","asc_p","placing","desc_p","user","unique","initially","column","both","some","as","any","only","deferrable","null_p","current_time","true_p","table","case","trailing","variadic","for","on","distinct","false_p","not","constraint","current_timestamp","returning","primary","intersect","having","analyze","current_user","and","cast","symmetric","using","order","current_catalog"])}static get UNWRAPPED_INTERVAL_VALUES(){return new Set([o,d])}static get PROPERTIES_LOCATION(){let s=new Map;return[...At.PROPERTIES_LOCATION.keys()].forEach(t=>{s.set(t,"unsupported")}),s.set(De,"postSchema"),s.set(Ue,"postCreate"),s.set(us,"postAlias"),s.set(ue,"postExpression"),s}static get IGNORE_RESPECT_NULLS_WINDOW_FUNCTIONS(){return[ui,ci,li,hi,Ti]}static get ZIPF_TEMPLATE(){return D(`
2
+ WITH rand AS (SELECT :random_expr AS r),
3
+ weights AS (
4
+ SELECT i, 1.0 / POWER(i, :s) AS w
5
+ FROM RANGE(1, :n + 1) AS t(i)
6
+ ),
7
+ cdf AS (
8
+ SELECT i, SUM(w) OVER (ORDER BY i) / SUM(w) OVER () AS p
9
+ FROM weights
10
+ )
11
+ SELECT MIN(i)
12
+ FROM cdf
13
+ WHERE p >= (SELECT r FROM rand)
14
+ `)}static get NORMAL_TEMPLATE(){return D(":mean + (:stddev * SQRT(-2 * LN(GREATEST(:u1, 1e-10))) * COS(2 * PI() * :u2))")}static get SEEDED_RANDOM_TEMPLATE(){return D("(ABS(HASH(:seed)) % 1000000) / 1000000.0")}static get SEQ_UNSIGNED(){return D(`${ss} % :max_val`)}static get SEQ_SIGNED(){return D(`
15
+ (CASE WHEN ${ss} % :max_val >= :half
16
+ THEN ${ss} % :max_val - :max_val
17
+ ELSE ${ss} % :max_val END)
18
+ `)}static get MAPCAT_TEMPLATE(){return D(`CASE
19
+ WHEN :map1 IS NULL OR :map2 IS NULL THEN NULL
20
+ ELSE MAP_FROM_ENTRIES(LIST_FILTER(LIST_TRANSFORM(
21
+ LIST_DISTINCT(LIST_CONCAT(MAP_KEYS(:map1), MAP_KEYS(:map2))),
22
+ __k -> STRUCT_PACK(key := __k, value := COALESCE(:map2[__k], :map1[__k]))
23
+ ), __x -> __x.value IS NOT NULL))
24
+ END
25
+ `)}static get EXTRACT_STRFTIME_MAPPINGS(){return{WEEKISO:["%V","INTEGER"],YEAROFWEEK:["%G","INTEGER"],YEAROFWEEKISO:["%G","INTEGER"],NANOSECOND:["%n","BIGINT"]}}static get EXTRACT_EPOCH_MAPPINGS(){return{EPOCH_SECOND:"EPOCH",EPOCH_MILLISECOND:"EPOCH_MS",EPOCH_MICROSECOND:"EPOCH_US",EPOCH_NANOSECOND:"EPOCH_NS"}}static get BITMAP_CONSTRUCT_AGG_TEMPLATE(){return D(`
26
+ SELECT CASE
27
+ WHEN l IS NULL OR LENGTH(l) = 0 THEN NULL
28
+ WHEN LENGTH(l) != LENGTH(LIST_FILTER(l, __v -> __v BETWEEN 0 AND 32767)) THEN NULL
29
+ WHEN LENGTH(l) < 5 THEN UNHEX(PRINTF('%04X', LENGTH(l)) || h || REPEAT('00', GREATEST(0, 4 - LENGTH(l)) * 2))
30
+ ELSE UNHEX('08000000000000000000' || h)
31
+ END
32
+ FROM (
33
+ SELECT l, COALESCE(LIST_REDUCE(
34
+ LIST_TRANSFORM(l, __x -> PRINTF('%02X%02X', CAST(__x AS INT) & 255, (CAST(__x AS INT) >> 8) & 255)),
35
+ (__a, __b) -> __a || __b, ''
36
+ ), '') AS h
37
+ FROM (SELECT LIST_SORT(LIST_DISTINCT(LIST(:arg) FILTER(NOT :arg IS NULL))) AS l)
38
+ )
39
+ `)}static get RANDSTR_TEMPLATE(){return D(`
40
+ SELECT LISTAGG(
41
+ SUBSTRING(
42
+ '${mo}',
43
+ 1 + CAST(FLOOR(random_value * 62) AS INT),
44
+ 1
45
+ ),
46
+ ''
47
+ )
48
+ FROM (
49
+ SELECT (ABS(HASH(i + :seed)) % 1000) / 1000.0 AS random_value
50
+ FROM RANGE(:length) AS t(i)
51
+ )
52
+ `)}static get MINHASH_TEMPLATE(){return D(`
53
+ SELECT JSON_OBJECT('state', LIST(min_h ORDER BY seed), 'type', 'minhash', 'version', 1)
54
+ FROM (
55
+ SELECT seed, LIST_MIN(LIST_TRANSFORM(vals, __v -> HASH(CAST(__v AS VARCHAR) || CAST(seed AS VARCHAR)))) AS min_h
56
+ FROM (SELECT LIST(:expr) AS vals), RANGE(0, :k) AS t(seed)
57
+ )
58
+ `)}static get MINHASH_COMBINE_TEMPLATE(){return D(`
59
+ SELECT JSON_OBJECT('state', LIST(min_h ORDER BY idx), 'type', 'minhash', 'version', 1)
60
+ FROM (
61
+ SELECT
62
+ pos AS idx,
63
+ MIN(val) AS min_h
64
+ FROM
65
+ UNNEST(LIST(:expr)) AS _(sig),
66
+ UNNEST(CAST(sig -> 'state' AS UBIGINT[])) WITH ORDINALITY AS t(val, pos)
67
+ GROUP BY pos
68
+ )
69
+ `)}static get APPROXIMATE_SIMILARITY_TEMPLATE(){return D(`
70
+ SELECT CAST(SUM(CASE WHEN num_distinct = 1 THEN 1 ELSE 0 END) AS DOUBLE) / COUNT(*)
71
+ FROM (
72
+ SELECT pos, COUNT(DISTINCT h) AS num_distinct
73
+ FROM (
74
+ SELECT h, pos
75
+ FROM UNNEST(LIST(:expr)) AS _(sig),
76
+ UNNEST(CAST(sig -> 'state' AS UBIGINT[])) WITH ORDINALITY AS s(h, pos)
77
+ )
78
+ GROUP BY pos
79
+ )
80
+ `)}static get ARRAYS_ZIP_TEMPLATE(){return D(`
81
+ CASE WHEN :null_check THEN NULL
82
+ WHEN :all_empty_check THEN [:empty_struct]
83
+ ELSE LIST_TRANSFORM(RANGE(0, :max_len), __i -> :transform_struct)
84
+ END
85
+ `)}timeSliceSql(s){let t=s.args.this,e=s.args.expression,n=s.args.unit,a=s.text("kind").toUpperCase(),E=new F({this:e,unit:n}),p=this.func("time_bucket",[E,t]);if(a!=="END")return this.sql(p);let S=new m({this:p,expression:E.copy()});return t?.isType("date")?this.sql(new u({this:S,to:new c({this:"date"})})):this.sql(S)}bitmapBucketNumberSql(s){let t=s.args.this,e=new m({this:new d({this:new bt({this:new d({this:new q({this:t,expression:o.number(1)})}),expression:o.number(32768)})}),expression:o.number(1)}),n=new bt({this:t,expression:o.number(32768)});return this.sql(new v({}).when(new Ts({this:t,expression:o.number(0)}),e).else(n))}bitmapBitPositionSql(s){let t=s.args.this;return this.sql(new rt({this:new d({this:new ft({this:new Ts({this:t,expression:o.number(0)}),true:new q({this:t,expression:o.number(1)}),false:new Nt({this:t})})}),expression:Io}))}bitmapConstructAggSql(s){let t=s.args.this;return`(${this.sql(y(this._constructor.BITMAP_CONSTRUCT_AGG_TEMPLATE,[t]))})`}nthValueSql(s){return(s.args.fromFirst??!0)||this.unsupported("DuckDB's NTH_VALUE doesn't support starting from the end"),this.functionFallbackSql(s)}randstrSql(s){let t=s.args.this,e=s.args.generator,n;return e?e instanceof b?n=e.args.this??e:n=e:n=o.number(No),`(${this.sql(y(this._constructor.RANDSTR_TEMPLATE,[n,t]))})`}zipfSql(s){let t=s.args.this,e=s.args.elementcount,n=s.args.gen,a;return n instanceof b?a=new b({}):a=new K({this:new d({this:new rt({this:new Nt({this:new P({this:"HASH",expressions:[(n??f()).copy()]})}),expression:o.number(1e6)})}),expression:o.number(1e6)}),`(${this.sql(y(this._constructor.ZIPF_TEMPLATE,[t,e,a]))})`}toBinarySql(s){let t=s.args.this,e=H(s.args.format,R),n=s.args.safe,a=X(s);if(!e&&!a){let S=n?"TRY_TO_BINARY":"TO_BINARY";return this.func(S,[t])}let E=e?.name?.toUpperCase()??"HEX",p;if(E==="UTF-8"||E==="UTF8")p=this.func("ENCODE",[t]);else if(E==="BASE64")p=this.func("FROM_BASE64",[t]);else if(E==="HEX")p=this.func("UNHEX",[t]);else{if(n)return this.sql(f());this.unsupported(`format ${E} is not supported`),p=this.func("TO_BINARY",[t])}return n?`TRY(${p})`:p}greatestLeastSql(s){let t=[s.args.this,...s.args.expressions??[]],e=this.functionFallbackSql(s);if(s.args.ignoreNulls)return this.sql(e);let n=t[0]??f(),a=new v({}).when(new at({this:new k({this:n.copy(),expression:f()}),expression:t.slice(1).reduce((E,p)=>new at({this:E,expression:new k({this:(p??f()).copy(),expression:f()})}),new k({this:n.copy(),expression:f()}))}),f());return a.setArgKey("default",e),this.sql(a)}generatorSql(s){let t=s.args.rowcount;return s.args.timeLimit&&this.unsupported("GENERATOR TIMELIMIT parameter is not supported in DuckDB"),t?this.func("range",[t]):(this.unsupported("GENERATOR without ROWCOUNT is not supported in DuckDB"),this.func("range",[o.number(0)]))}greatestSql(s){return this.greatestLeastSql(s)}leastSql(s){return this.greatestLeastSql(s)}lambdaSql(s,t={}){let e=t.arrowSep??"->",n=t.wrap??!0,a="";s.args.colon&&(a="LAMBDA ",e=":",n=!1);let E=super.lambdaSql(s,{arrowSep:e,wrap:n});return`${a}${E}`}showSql(s){return`SHOW ${s.name}`}installSql(s){let t=s.args.force?"FORCE ":"",e=this.sql(s,"this"),n=s.args.from?` FROM ${s.args.from}`:"";return`${t}INSTALL ${e}${n}`}approxTopKSql(s){return this.unsupported("APPROX_TOP_K cannot be transpiled to DuckDB due to incompatible return types. "),this.functionFallbackSql(s)}fromIso8601TimestampSql(s){return this.sql(new u({this:s.args.this,to:new c({this:"timestamptz"})}))}strToTimeSql(s){let t=s.args.targetType,e=t&&["timestampltz","timestamptz"].includes(t.args.this);if(s.args.safe){let a=this.formatTime(s),E=e?"timestamptz":"timestamp";return this.sql(new u({this:this.func("TRY_STRPTIME",[s.args.this,a]),to:new c({this:E})}))}let n=vi.call(this,s);return e?this.sql(new u({this:n,to:new c({this:"timestamptz"})})):n}strToDateSql(s){let t=this.formatTime(s),e=s.args.safe?"TRY_STRPTIME":"STRPTIME";return this.sql(new u({this:this.func(e,[s.args.this,t]),to:new c({this:"date"})}))}tsOrDsToTimeSql(s){let t=s.args.this,e=this.formatTime(s),n=s.args.safe,a=c.build("TIME",{dialect:"duckdb"}),E=n?Si:u;if(e){let p=n?"TRY_STRPTIME":"STRPTIME",S=new P({this:p,expressions:[t??f(),e]});return this.sql(new E({this:S,to:a}))}return t instanceof kn||t?.isType("time")?this.sql(t??f()):this.sql(new E({this:t,to:a}))}currentDateSql(s){if(!s.args.this)return"CURRENT_DATE";let t=new u({this:new Z({this:new ws({}),zone:s.args.this}),to:new c({this:"date"})});return this.sql(t)}parseJsonSql(s){let t=s.args.this;return s.args.safe?this.sql(new v({}).when(this.func("json_valid",[t??f()]),t instanceof R||typeof t=="string"?t:"").else(f())):this.func("JSON",[t])}truncSql(s){return jt.call(this,s,"decimals"),this.func("TRUNC",[s.args.this])}normalSql(s){let t=s.args.this,e=s.args.stddev,n=s.args.gen,a,E;if(n instanceof b&&!n.args.this)a=new b({}),E=new b({});else{let p=(n instanceof b?n.args.this:n)??f();a=y(this._constructor.SEEDED_RANDOM_TEMPLATE,[p]),E=y(this._constructor.SEEDED_RANDOM_TEMPLATE,[new m({this:p.copy(),expression:o.number(1)})])}return this.sql(y(this._constructor.NORMAL_TEMPLATE,[t,e,a,E]))}uniformSql(s){let t=s.args.this,e=s.args.expression,n=s.args.gen,a=t instanceof o&&t.isInteger&&e instanceof o&&e.isInteger,E;n instanceof b?E=new b({}):E=new K({this:new d({this:new rt({this:new Nt({this:new P({this:"HASH",expressions:[n||""]})}),expression:o.number(1e6)})}),expression:o.number(1e6)});let p=new q({this:e,expression:t});a&&(p=new m({this:p,expression:o.number(1)}));let S=new m({this:t,expression:new nt({this:E,expression:new d({this:p})})});return a&&(S=new u({this:new bs({this:S}),to:new c({this:"bigint"})})),this.sql(S)}timeFromPartsSql(s){let t=s.args.nano;if(s.args.overflow){let n=H(s.args.hour,"string",o),a=H(s.args.min,"string",o),E=H(s.args.sec,"string",o);if(!t&&[n,a,E].every(S=>S instanceof o&&S.isNumber)){let S=parseInt((n instanceof o?n.args.this:n)??"0"),g=parseInt((a instanceof o?a.args.this:a)??"0"),O=parseInt((E instanceof R?E.args.this:E)??"0");if(0<=S&&S<=23&&0<=g&&g<=59&&0<=O&&O<=59)return A("MAKE_TIME").call(this,s)}t&&(E=new m({this:E,expression:new K({this:t.pop(),expression:o.number(1e9)})}));let p=new m({this:new m({this:new nt({this:n,expression:o.number(3600)}),expression:new nt({this:a,expression:o.number(60)})}),expression:E});return this.sql(new m({this:new u({this:o.string("00:00:00"),to:c.build("TIME")}),expression:new F({this:p,unit:new I({this:"SECOND"})})}))}return t&&s.setArgKey("sec",new m({this:s.args.sec,expression:new K({this:t.pop(),expression:o.number(1e9)})})),A("MAKE_TIME").call(this,s)}extractSql(s){let t=s.args.expression;t?.isType(["timestamptz","timestampltz"])&&this.unsupported("EXTRACT from TIMESTAMPTZ / TIMESTAMPLTZ may produce different results due to timezone handling differences");let e=H(s.args.this,R)?.name.toUpperCase();if(e!==void 0&&e in h.EXTRACT_STRFTIME_MAPPINGS){let[n,a]=h.EXTRACT_STRFTIME_MAPPINGS[e],E=e==="NANOSECOND"&&t?.isType(["time","timetz"]),p=t??f();if(E)return this.unsupported("Parameter NANOSECOND is not supported with TIME type in DuckDB"),this.sql(new u({this:new nt({this:new Ht({this:new I({this:"MICROSECOND"}),expression:p}),expression:o.number(1e3)}),to:c.build(a,{dialect:"duckdb"})}));let S=p;return e==="NANOSECOND"&&(S=new u({this:p,to:new c({this:"timestampNs"})})),this.sql(new u({this:new P({this:"STRFTIME",expressions:[S,o.string(n)]}),to:c.build(a,{dialect:"duckdb"})}))}if(e!==void 0&&e in h.EXTRACT_EPOCH_MAPPINGS){let n=h.EXTRACT_EPOCH_MAPPINGS[e],a=new P({this:n,expressions:[t??f()]});return e==="EPOCH_SECOND"&&(a=new u({this:a,to:c.build("BIGINT",{dialect:"duckdb"})})),this.sql(a)}return super.extractSql(s)}timestampFromPartsSql(s){let t=s.args.this,e=s.args.expression;if(t&&e)return this.sql(new m({this:t,expression:e}));let n=s.args.sec;if(!n)return A("MAKE_TIMESTAMP").call(this,s);let a=s.args.milli;a&&(n=new m({this:n,expression:new d({this:new K({this:a.pop(),expression:o.number("1000.0")})})}));let E=s.args.nano;return E&&(n=new m({this:n,expression:new d({this:new K({this:E.pop(),expression:o.number("1000000000.0")})})})),(a||E)&&s.setArgKey("sec",n),A("MAKE_TIMESTAMP").call(this,s)}timestampLtzFromPartsSql(s){let t=s.args.nano;return t&&t.pop(),`CAST(${A("MAKE_TIMESTAMP").call(this,s)} AS TIMESTAMPTZ)`}timestampTzFromPartsSql(s){let t=s.args.zone;t&&(t=t.pop());let e=s.args.nano;e&&e.pop();let n=A("MAKE_TIMESTAMP").call(this,s);return t?`${n} AT TIME ZONE ${this.sql(t)}`:n}tableSampleSql(s,t={}){let e=t.tablesampleKeyword;if(s.parent instanceof Tt||(e="TABLESAMPLE"),s.args.size){let n=s.args.method;n instanceof R&&n.name?.toUpperCase()!=="RESERVOIR"&&(this.unsupported(`Sampling method ${n} is not supported with a discrete sample count, defaulting to reservoir sampling`),s.setArgKey("method",new I({this:"RESERVOIR"})))}return super.tableSampleSql(s,{tablesampleKeyword:e})}columnDefSql(s,t={}){return s.parent instanceof Ae?this.sql(s,"this"):super.columnDefSql(s,t)}joinSql(s){let t=["","inner","outer"].includes(s.args.kind??"");if(!s.args.using&&!s.args.on&&!s.args.method&&t){if(s.args.this instanceof qs)return super.joinSql(s.on(new St({this:!0})));s.setArgKey("side",void 0),s.setArgKey("kind",void 0)}return super.joinSql(s)}generateSeriesSql(s){return s.args.isEndExclusive?A("RANGE").call(this,s):this.functionFallbackSql(s)}countIfSql(s){return 1<this.dialect.version.major||this.dialect.version.major===1&&2<=this.dialect.version.minor?this.functionFallbackSql(s):Yi.call(this,s)}bracketSql(s){if(1<this.dialect.version.major||this.dialect.version.major===1&&2<=this.dialect.version.minor)return super.bracketSql(s);let t=s.args.this;t instanceof Y&&t.replace(new d({this:t.copy()}));let e=super.bracketSql(s);if(!s.args.returnsListForMaps){let n=H(t,R),a=n?.type?n:n&&pt(n,{dialect:this.dialect});U(a,"map")&&(e=`(${e})[1]`)}return e}withinGroupSql(s){let t=s.args.this;if(t instanceof oi){let a=s.args.expression;if(!(a instanceof lt))return this.sql(t);let E=t.args.this;t.setArgKey("this",new lt({this:H(t.args.this,R)?.copy(),expressions:a.args.expressions}));let p=this.functionFallbackSql(t);return E instanceof R?this.addArrayAggNullFilter(p,t,E):""}let e=this.sql(s,"expression");if(t instanceof Zt||t instanceof Qt){let a=s.find(Re);a&&(t.setArgKey("expression",t.args.this),t.setArgKey("this",a.args.this))}return`${this.sql(s,"this").replace(/\)$/,"")}${e})`}lengthSql(s){let t=s.args.this;if(!s.args.binary||t instanceof o&&t.isString)return this.func("LENGTH",[t]);if((t?.type?t:t&&pt(t,{dialect:this.dialect}))?.isType(c.TEXT_TYPES))return this.func("LENGTH",[t]);let n=new u({this:t,to:new c({this:"varbinary"})}),a=new u({this:t,to:new c({this:"varchar"})}),E=new v({this:new P({this:"TYPEOF",expressions:t?[t]:[]})}).when(o.string("BLOB"),new Dt({this:n})).else(new P({this:"LENGTH",expressions:[a]}));return this.sql(E)}levenshteinSql(s){jt.call(this,s,"insCost","delCost","subCost");let t=s.args.this,e=s.args.expression,n=s.args.maxDist;if(!n)return this.func("LEVENSHTEIN",[t,e]);let a=new Ys({this:t,expression:e});return this.sql(new Sn({this:a,expressions:[n],ignoreNulls:!1}))}padSql(s){let t=s.args.this,e=s.args.fillPattern??o.string(" ");if(X(t)||X(e)){let n=s.args.expression,a=s.args.isLeft,E=new Dt({this:t}),p=new q({this:n,expression:E}),S=new Gs({this:o.number(0),expressions:[p],ignoreNulls:!0}),g=new Ws({this:e,times:[S]}),[O,is]=a?[g,t]:[t,g];return this.sql(new $e({this:O,expression:is}))}return super.padSql(s)}minhashSql(s){let t=s.args.this,e=s.args.expressions??[];if(e.length!==1||e[0]instanceof _e)return this.unsupported("MINHASH with multiple expressions or * requires manual restructuring"),this.func("MINHASH",[t,...e]);let n=y(h.MINHASH_TEMPLATE.copy(),[e[0],t]);return`(${this.sql(n)})`}minhashCombineSql(s){let t=y(h.MINHASH_COMBINE_TEMPLATE.copy(),[s.args.this]);return`(${this.sql(t)})`}approximateSimilaritySql(s){let t=y(h.APPROXIMATE_SIMILARITY_TEMPLATE.copy(),[s.args.this]);return`(${this.sql(t)})`}arraysZipSql(s){let t=s.args.expressions??[];if(t.length===0)return this.sql(new Y({expressions:[new vs({keys:new Y,values:new Y})]}));let e=t.map(g=>new $({this:g})),n=e.length===1?e[0]:new Gs({this:e[0],expressions:e.slice(1),ignoreNulls:!1}),a=this.func("STRUCT",t.map((g,O)=>new Rt({this:o.string(`$${O+1}`),expression:f()}))),E=new m({this:new qe({this:new ut({this:"__i"})}),expression:o.number(1)}),p=this.func("STRUCT",t.map((g,O)=>new Rt({this:o.string(`$${O+1}`),expression:new C({this:new P({this:"COALESCE",expressions:[g,new Y({})]}),expressions:[E]})}))),S=y(h.ARRAYS_ZIP_TEMPLATE.copy(),[t.reduce((g,O)=>new at({this:g,expression:new k({this:O,expression:f()})}),new k({this:t[0],expression:f()})),t.reduce((g,O)=>new Lt({this:g,expression:new et({this:new $({this:O}),expression:o.number(0)})}),new et({this:new $({this:t[0]}),expression:o.number(0)})),a,n,p]);return this.sql(S)}lowerSql(s){let t=this.func("LOWER",[W(s.args.this)]);return Q.call(this,s,t)}upperSql(s){let t=this.func("UPPER",[W(s.args.this)]);return Q.call(this,s,t)}reverseSql(s){let t=this.func("REVERSE",[W(s.args.this)]);return Q.call(this,s,t)}base64EncodeSql(s){let t=s.args.this;t?.isType(c.TEXT_TYPES)&&(t=new P({this:"ENCODE",expressions:[t]})),t=new jr({this:t});let e=s.args.maxLineLength,n=s.args.alphabet;t=Ao(t,n);let a=e instanceof o&&e.isNumber?parseInt(e.args.this??"0"):0;if(0<a){let E=new lr({expressions:[o.number(10)]});t=new Wn({this:new Wt({this:t,expression:o.string(`(.{${a}})`),replacement:new Tr({expressions:[o.string("\\1"),E.copy()]})}),expression:E,position:"trailing"})}return this.sql(t)}replaceSql(s){let t=this.func("REPLACE",[W(s.args.this),W(s.args.expression),W(s.args.replacement)]);return Q.call(this,s,t)}bitwiseOp(s,t){la(s);let e=this.binary(s,t);return Q.call(this,s,e)}bitwiseXorSql(s){la(s);let t=this.func("XOR",[s.args.this,s.args.expression]);return Q.call(this,s,t)}objectInsertSql(s){let t=s.args.this,e=s.args.key,n=e instanceof R?e.name:"",a=this.sql(s,"value"),E=`${n} := ${a}`;return t instanceof Kt&&(!t.args.expressions||t.args.expressions.length===0)?this.func("STRUCT_PACK",[E]):this.func("STRUCT_INSERT",[t,E])}mapCatSql(s){let t=y(h.MAPCAT_TEMPLATE.copy(),[s.args.this,s.args.expression]);return this.sql(t)}startsWithSql(s){return this.func("STARTS_WITH",[W(s.args.this),W(s.args.expression)])}spaceSql(s){return this.sql(new Ws({this:o.string(" "),times:[new u({this:s.args.this,to:new c({this:"bigint"})})]}))}tableFromRowsSql(s){if(s.args.this instanceof ir){let t=new cs({this:s.args.this,alias:s.args.alias,joins:s.args.joins});return this.sql(t)}return super.tableFromRowsSql(s)}unnestSql(s){if(s.args.explodeArray){s.args.expressions||s.setArgKey("expressions",[]),s.args.expressions?.push(new Ze({this:new I({this:"max_depth"}),expression:o.number(2)}));let e=s.args.alias;e instanceof xt&&(s.setArgKey("alias",void 0),e.args.columns&&0<e.args.columns.length&&(e=new xt({this:x(e.args.columns,0)})));let n=super.unnestSql(s),a=e?` ${this.sql(e)}`:"";return`(SELECT ${n})${a}`}return super.unnestSql(s)}ignoreNullsSql(s){let t=s.args.this;if(this._constructor.IGNORE_RESPECT_NULLS_WINDOW_FUNCTIONS.some(n=>t instanceof n))return super.ignoreNullsSql(s);let e=t;return e instanceof pi&&(e=new Ot({this:e.args.this})),e instanceof Ot||e instanceof ii||this.unsupported("IGNORE NULLS is not supported for non-window functions."),this.sql(e)}respectNullsSql(s){return this._constructor.IGNORE_RESPECT_NULLS_WINDOW_FUNCTIONS.some(t=>s.args.this instanceof t)?super.respectNullsSql(s):(this.unsupported("RESPECT NULLS is not supported for non-window functions."),this.sql(s,"this"))}arrayToStringSql(s){let t=this.sql(s,"this"),e=this.sql(s,"null");return e&&(t=`LIST_TRANSFORM(${t}, x -> COALESCE(x, ${e}))`),this.func("ARRAY_TO_STRING",[t,s.args.expression])}regexpExtractSql(s){let t=s.args.this,e=s.args.group,n=s.args.parameters,a=s.args.position,E=s.args.occurrence,p=s.args.nullIfPosOverflow;a&&(!(a instanceof o&&a.isInteger)||1<parseInt(a.args.this??"0"))&&(t=new Dn({this:t,start:a}),p&&(t=new an({this:t,expression:o.string("")})));let S=e,g=String(this.dialect._constructor.REGEXP_EXTRACT_DEFAULT_GROUP);return!n&&e&&(e instanceof ut&&e.name===g||e instanceof o&&String(e.args.this)===g)&&(S=void 0),E&&(!(E instanceof o&&E.isInteger)||1<parseInt(E.args.this??"0"))?this.func("ARRAY_EXTRACT",[this.func("REGEXP_EXTRACT_ALL",[t,s.args.expression,S,n]),o.number(parseInt(E.args.this??"0"))]):this.func("REGEXP_EXTRACT",[t,s.args.expression,S,n])}numberToStrSql(s){let t=s.args.format?.name;return t&&/^\d+$/.test(t)?this.func("FORMAT",[o.string(`{:,.${t}f}`),s.args.this]):(this.unsupported("Only integer formats are supported by NumberToStr"),this.functionFallbackSql(s))}autoIncrementColumnConstraintSql(s){return this.unsupported("The AUTOINCREMENT column constraint is not supported by DuckDB"),""}aliasesSql(s){let t=s.args.this;return t instanceof fi?this.posexplodeSql(t):super.aliasesSql(s)}posexplodeSql(s){let t=s.args.this,e=s.parent,n=new ut({this:"pos",quoted:!1}),a=new ut({this:"col",quoted:!1});if(e instanceof Oe){let g=e.args.expressions;n=g?.[0],a=g?.[1]}else if(e instanceof cs){let g=e.args.alias;if(g instanceof xt){let O=g.args.columns;O&&0<O.length&&(n=O[0],a=O[1]??a),g.pop()}}let E=this.sql(new qs({expressions:[t],alias:a})),p=this.sql(new hs({this:new q({this:new P({this:"GENERATE_SUBSCRIPTS",expressions:[t,o.number(1)]}),expression:o.number(1)}),alias:n})),S=this.formatArgs([p,E]);return e instanceof Es||e&&e.parent instanceof Es?`(SELECT ${S})`:S}addMonthsSql(s){let t=s.args.this;t?.type||(t=t&&pt(t,{dialect:this.dialect})),t?.isType(c.TEXT_TYPES)&&(t=new u({this:t,to:new c({this:"timestamp"})}));let e=s.args.expression,n=e?.type?e:e&&pt(e,{dialect:this.dialect}),a;n?.isType(["float","double","decimal"])?a=new P({this:"TO_MONTHS",expressions:[new u({this:new P({this:"ROUND",expressions:e&&[e]}),to:new c({this:"int"})})]}):a=new F({this:e,unit:new I({this:"MONTH"})});let E=new m({this:t,expression:a}),p=s.args.preserveEndOfMonth,S=E;return p&&(S=new v({}).when(new et({this:this.func("LAST_DAY",[t]),expression:t}),this.func("LAST_DAY",[E])).else(E)),t?.isType(["date","timestamptz"])?this.sql(new u({this:S,to:t.type})):this.sql(S)}formatSql(s){return s.name.toLowerCase()==="%s"&&s.args.expressions?.length===1?this.func("FORMAT",[o.string("{}"),s.args.expressions[0]]):this.functionFallbackSql(s)}dateTruncSql(s){let t=gt(s),e=s.args.this,n=this.func("DATE_TRUNC",[t,e]);return s.args.inputTypePreserved&&e?.isType(c.TEMPORAL_TYPES)&&!(as(t)&&e.isType("date"))?this.sql(new u({this:n,to:e.type})):n}timestampTruncSql(s){let t=gt(s),e=s.args.zone,n=s.args.this,a=as(t);if(a&&e){n=new Z({this:n,zone:e});let p=this.func("DATE_TRUNC",[t,n]);return this.sql(new Z({this:p,zone:e}))}let E=this.func("DATE_TRUNC",[t,n]);if(s.args.inputTypePreserved){if(n?.isType(["time","timetz"])){let p=new u({this:o.string("1970-01-01"),to:new c({this:"date"})}),S=new m({this:p,expression:n});return E=this.func("DATE_TRUNC",[t,S]),this.sql(new u({this:E,to:n.type}))}if(n?.isType(c.TEMPORAL_TYPES)&&!(a&&n.isType("date")))return this.sql(new u({this:E,to:n.type}))}return E}trimSql(s){s.args.this?.replace(W(s.args.this)),s.args.expression instanceof R&&s.args.expression.replace(W(s.args.expression));let t=super.trimSql(s);return Q.call(this,s,t)}roundSql(s){let t=s.args.this,e=s.args.decimals,n=s.args.truncate;e&&s.args.castsNonIntegerDecimals&&(e instanceof o&&e.isInteger||(e=new u({this:e,to:new c({this:"int"})})));let a="ROUND";if(n instanceof o){let E=n.args.this?.toUpperCase();E!==void 0&&["ROUND_HALF_EVEN","HALF_TO_EVEN"].includes(E)?(a="ROUND_EVEN",n=void 0):E!==void 0&&["ROUND_HALF_AWAY_FROM_ZERO","HALF_AWAY_FROM_ZERO"].includes(E)&&(n=void 0)}return this.func(a,[t,e,n])}approxQuantileSql(s){let t=this.func("APPROX_QUANTILE",[s.args.this,s.args.quantile]);return s.isType(c.REAL_TYPES)&&(t=`CAST(${t} AS DOUBLE)`),t}approxQuantilesSql(s){let t=s.args.this,e;if(t instanceof ps){if(!t.args.expressions||t.args.expressions.length<2)return this.unsupported("APPROX_QUANTILES requires a bucket count argument"),this.functionFallbackSql(s);e=t.args.expressions[1].pop()}else e=s.args.expression;if(!(e instanceof o&&e.isInteger))return this.unsupported("APPROX_QUANTILES bucket count must be a positive integer"),this.functionFallbackSql(s);let n=parseInt(e.args.this??"0");if(n<=0)return this.unsupported("APPROX_QUANTILES bucket count must be a positive integer"),this.functionFallbackSql(s);let a=Array.from({length:n+1},(E,p)=>o.number(p/n));return this.sql(new Qs({this:t,quantile:new Y({expressions:a})}))}jsonExtractScalarSql(s){return s.args.scalarOnly&&(s=new Bs({this:new P({this:"JSON_VALUE",expressions:[s.args.this,s.args.expression].filter(t=>t instanceof R)}),expression:o.string("$")})),Ea.call(this,s)}bitwiseNotSql(s){let t=s.args.this;X(t)&&(s.type=new c({this:"binary"}));let e=oe(t);t instanceof Qe&&(e=new d({this:e})),s.setArgKey("this",e);let n=`~${this.sql(s,"this")}`;return Q.call(this,s,n)}windowSql(s){let t=s.args.this;return t instanceof it||t instanceof Ct&&t.args.this instanceof it?this.corrSql(s):super.windowSql(s)}filterSql(s){return s.args.this instanceof it?this.corrSql(s):super.filterSql(s)}corrSql(s){if(s instanceof it&&!s.args.nullOnZeroVariance)return this.func("CORR",[s.args.this,s.args.expression]);let t=$o(s);return t?this.sql(new v({}).when(new Fs({this:t}),f()).else(t)):s instanceof yt?super.windowSql(s):s instanceof Ct?super.filterSql(s):this.sql(s)}};N=z(ho),l(N,10,"AFTER_HAVING_MODIFIER_TRANSFORMS",co,h),l(N,10,"STRUCT_DELIMITER",Eo,h),l(N,10,"ORIGINAL_TRANSFORMS",oo,h),l(N,10,"SUPPORTED_JSON_PATH_PARTS",ao,h),l(N,10,"TYPE_MAPPING",io,h),l(N,10,"RESERVED_KEYWORDS",no,h),l(N,10,"UNWRAPPED_INTERVAL_VALUES",ro,h),l(N,10,"PROPERTIES_LOCATION",eo,h),l(N,10,"IGNORE_RESPECT_NULLS_WINDOW_FUNCTIONS",so,h),l(N,10,"ZIPF_TEMPLATE",to,h),l(N,10,"NORMAL_TEMPLATE",za,h),l(N,10,"SEEDED_RANDOM_TEMPLATE",ja,h),l(N,10,"SEQ_UNSIGNED",Qa,h),l(N,10,"SEQ_SIGNED",Za,h),l(N,10,"MAPCAT_TEMPLATE",Ja,h),l(N,10,"EXTRACT_STRFTIME_MAPPINGS",$a,h),l(N,10,"EXTRACT_EPOCH_MAPPINGS",ka,h),l(N,10,"BITMAP_CONSTRUCT_AGG_TEMPLATE",Ka,h),l(N,10,"RANDSTR_TEMPLATE",Xa,h),l(N,10,"MINHASH_TEMPLATE",Wa,h),l(N,10,"MINHASH_COMBINE_TEMPLATE",Va,h),l(N,10,"APPROXIMATE_SIMILARITY_TEMPLATE",va,h),l(N,10,"ARRAYS_ZIP_TEMPLATE",Ya,h),tt(N,h),st(N,3,h),h.SUPPORTS_DECODE_CASE=!1,h.SELECT_KINDS=[],h.PARAMETER_TOKEN="$",h.NAMED_PLACEHOLDER_TOKEN="$",h.JOIN_HINTS=!1,h.TABLE_HINTS=!1,h.QUERY_HINTS=!1,h.LIMIT_FETCH="LIMIT",h.RENAME_TABLE_WITH_DB=!1,h.NVL2_SUPPORTED=!1,h.SEMI_ANTI_JOIN_WITH_SIDE=!1,h.TABLESAMPLE_KEYWORDS="USING SAMPLE",h.TABLESAMPLE_SEED_KEYWORD="REPEATABLE",h.LAST_DAY_SUPPORTS_DATE_PART=!1,h.JSON_KEY_VALUE_PAIR_SEP=",",h.IGNORE_NULLS_IN_FUNC=!0,h.JSON_PATH_BRACKETED_KEY_SUPPORTED=!1,h.SUPPORTS_CREATE_TABLE_LIKE=!1,h.MULTI_ARG_DISTINCT=!1,h.CAN_IMPLEMENT_ARRAY_ANY=!0,h.SUPPORTS_TO_NUMBER=!1,h.SUPPORTS_WINDOW_EXCLUDE=!0,h.COPY_HAS_INTO_KEYWORD=!1,h.STAR_EXCEPT="EXCLUDE",h.PAD_FILL_PATTERN_IS_REQUIRED=!0,h.ARRAY_SIZE_DIM_REQUIRED=!1,h.NORMALIZE_EXTRACT_DATE_PARTS=!0,h.SUPPORTS_LIKE_QUANTIFIERS=!1,h.SET_ASSIGNMENT_REQUIRES_VARIABLE_KEYWORD=!0;var Ee=h,po,uo,lo,To,So,fo,Et,_=class extends(fo=zt,So=[T],To=[T],lo=[T],uo=[T],po=[T],fo){static get NULL_ORDERING(){return"nulls_are_last"}static get NORMALIZATION_STRATEGY(){return"caseInsensitive"}static get DATE_PART_MAPPING(){let s={...zt.DATE_PART_MAPPING,DAYOFWEEKISO:"ISODOW"};return delete s.WEEKDAY,s}static get EXPRESSION_METADATA(){return new Map(ot.EXPRESSION_METADATA)}static get INVERSE_TIME_MAPPING(){return{"%e":"%-d","%:z":"%z","%-z":"%z","%f_zero":"%n","%f_one":"%n","%f_two":"%n","%f_three":"%g","%f_four":"%n","%f_five":"%n","%f_seven":"%n","%f_eight":"%n","%f_nine":"%n"}}toJsonPath(s){if(s instanceof o&&s.isString){let t=s.name;if(t.startsWith("/")||t.includes("[#"))return s}return super.toJsonPath(s)}};Et=z(fo),l(Et,10,"NULL_ORDERING",So,_),l(Et,10,"NORMALIZATION_STRATEGY",To,_),l(Et,10,"DATE_PART_MAPPING",lo,_),l(Et,10,"EXPRESSION_METADATA",uo,_),l(Et,10,"INVERSE_TIME_MAPPING",po,_),tt(Et,_),st(Et,3,_),_.DIALECT_NAME="duckdb",_.SUPPORTS_USER_DEFINED_TYPES=!0,_.SAFE_DIVISION=!0,_.INDEX_OFFSET=1,_.CONCAT_COALESCE=!0,_.SUPPORTS_ORDER_BY_ALL=!0,_.SUPPORTS_FIXED_SIZE_ARRAYS=!0,_.STRICT_JSON_PATH_SYNTAX=!1,_.NUMBERS_CAN_BE_UNDERSCORE_SEPARATED=!0,_.Tokenizer=G,_.Parser=w,_.Generator=Ee;zt.register("duckdb",_);export{_ as DuckDB,Io as MAX_BIT_POSITION,mo as RANDSTR_CHAR_POOL,No as RANDSTR_SEED,sa as REGEX_ESCAPE_REPLACEMENTS,ss as SEQ_BASE,_o as SEQ_RESTRICTED,Ro as TIMEZONE_PATTERN,ns as WEEK_START_DAY_TO_DOW,ts as WS_CONTROL_CHARS_TO_DUCK};
86
+ //# sourceMappingURL=duckdb.js.map