@malloydata/render 0.0.143-dev240417161322 → 0.0.143-dev240418162623

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.
@@ -3462,7 +3462,7 @@ const B2e = Kt, cr = ne, tM = CV, dp = ed, k2e = {
3462
3462
  };
3463
3463
  class M2e extends dp.Dialect {
3464
3464
  constructor() {
3465
- super(...arguments), this.name = "snowflake", this.defaultNumberType = "NUMBER", this.defaultDecimalType = "NUMBER", this.udfPrefix = "__udf", this.hasFinalStage = !1, this.divisionIsInteger = !1, this.supportsSumDistinctFunction = !1, this.defaultSampling = { rows: 5e4 }, this.globalFunctions = tM.SNOWFLAKE_FUNCTIONS, this.unnestWithNumbers = !1, this.supportUnnestArrayAgg = !1, this.supportsAggDistinct = !1, this.supportsCTEinCoorelatedSubQueries = !1, this.supportsSafeCast = !1, this.dontUnionIndex = !1, this.supportsQualify = !1, this.supportsNesting = !0, this.supportsPipelinesInViews = !1;
3465
+ super(...arguments), this.name = "snowflake", this.defaultNumberType = "NUMBER", this.defaultDecimalType = "NUMBER", this.udfPrefix = "__udf", this.hasFinalStage = !1, this.divisionIsInteger = !1, this.supportsSumDistinctFunction = !1, this.supportsSafeCast = !0, this.supportsNesting = !0, this.defaultSampling = { rows: 5e4 }, this.globalFunctions = tM.SNOWFLAKE_FUNCTIONS, this.unnestWithNumbers = !1, this.supportUnnestArrayAgg = !1, this.supportsAggDistinct = !1, this.supportsCTEinCoorelatedSubQueries = !1, this.dontUnionIndex = !1, this.supportsQualify = !1, this.supportsPipelinesInViews = !1;
3466
3466
  }
3467
3467
  // don't mess with the table pathing.
3468
3468
  quoteTablePath(e) {
@@ -3585,18 +3585,19 @@ ${(0, B2e.indent)(n)}
3585
3585
  sqlCast(e, n) {
3586
3586
  if (n.srcType === n.dstType)
3587
3587
  return n.expr;
3588
- if (n.safe)
3589
- throw new Error("Snowflake dialect doesn't support safe cast for a few types");
3588
+ if (n.safe && typeof n.srcType != "string")
3589
+ throw new Error(`Snowflake dialect doesn't support safe cast for a few types:
3590
+ refer to: https://docs.snowflake.com/en/sql-reference/functions/try_cast`);
3590
3591
  const r = (0, dp.qtz)(e);
3591
3592
  if (n.dstType === "date" && n.srcType === "timestamp") {
3592
- let s = n.expr;
3593
- return r && (s = (0, cr.mkExpr)`CONVERT_TIMEZONE('${r}', ${s})`), (0, cr.mkExpr)`TO_DATE(${s})`;
3593
+ let o = n.expr;
3594
+ return r && (o = (0, cr.mkExpr)`CONVERT_TIMEZONE('${r}', ${o})`), (0, cr.mkExpr)`TO_DATE(${o})`;
3594
3595
  } else if (n.dstType === "timestamp" && n.srcType === "date") {
3595
- const s = (0, cr.mkExpr)`TO_TIMESTAMP(${n.expr})`;
3596
- return this.atTz(s, r);
3596
+ const o = (0, cr.mkExpr)`TO_TIMESTAMP(${n.expr})`;
3597
+ return this.atTz(o, r);
3597
3598
  }
3598
- const i = typeof n.dstType == "string" ? this.malloyTypeToSQLType({ type: n.dstType }) : n.dstType.raw;
3599
- return (0, cr.mkExpr)`CAST(${n.expr} AS ${i})`;
3599
+ const i = typeof n.dstType == "string" ? this.malloyTypeToSQLType({ type: n.dstType }) : n.dstType.raw, s = n.safe ? "TRY_CAST" : "CAST";
3600
+ return (0, cr.mkExpr)`${s}(${n.expr} AS ${i})`;
3600
3601
  }
3601
3602
  sqlLiteralTime(e, n, r, i) {
3602
3603
  const s = (0, dp.qtz)(e);
@@ -150,7 +150,7 @@ ${LM}
150
150
  FROM (
151
151
  SELECT UNNEST(list(distinct {key:${e}, ${n.map((i,s)=>`val${s}: ${i}`).join(",")}})) a
152
152
  )
153
- )`}sqlSampleTable(e,n){if(n!==void 0){if((0,Ht.isSamplingEnable)(n)&&n.enable&&(n=this.defaultSampling),(0,Ht.isSamplingRows)(n))return`(SELECT * FROM ${e} USING SAMPLE ${n.rows})`;if((0,Ht.isSamplingPercent)(n))return`(SELECT * FROM ${e} USING SAMPLE ${n.percent} PERCENT (bernoulli))`}return e}sqlOrderBy(e){return`ORDER BY ${e.map(n=>`${n} NULLS LAST`).join(",")}`}sqlLiteralString(e){return"'"+e.replace(/'/g,"''")+"'"}sqlLiteralRegexp(e){return"'"+e.replace(/'/g,"''")+"'"}getGlobalFunctionDef(e){return m2e.DUCKDB_FUNCTIONS.get(e)}malloyTypeToSQLType(e){return e.type==="number"?e.numberType==="integer"?"integer":"double precision":e.type==="string"?"varchar":e.type}sqlTypeToMalloyType(e){var n,r;const i=(r=(n=e.match(/^(\w+)/))===null||n===void 0?void 0:n.at(0))!==null&&r!==void 0?r:e;return E2e[i.toUpperCase()]}castToString(e){return`CAST(${e} as VARCHAR)`}concat(...e){return e.join(" || ")}validateTypeName(e){return e.match(/^[A-Za-z\s(),[\]0-9]*$/)!==null}}XA.DuckDBDialect=A2e,function(t){var e=N&&N.__createBinding||(Object.create?function(r,i,s,o){o===void 0&&(o=s);var u=Object.getOwnPropertyDescriptor(i,s);(!u||("get"in u?!i.__esModule:u.writable||u.configurable))&&(u={enumerable:!0,get:function(){return i[s]}}),Object.defineProperty(r,o,u)}:function(r,i,s,o){o===void 0&&(o=s),r[o]=i[s]}),n=N&&N.__exportStar||function(r,i){for(var s in r)s!=="default"&&!Object.prototype.hasOwnProperty.call(i,s)&&e(i,r,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(XA,t)}(gO);var yO={},av={},IM={},$M={},lv={};Object.defineProperty(lv,"__esModule",{value:!0}),lv.fnChr=void 0;const fp=ge;function v2e(){const t=(0,fp.makeParam)("value",(0,fp.anyExprType)("number"));return[(0,fp.overload)((0,fp.minScalar)("string"),[t.param],(0,fp.sql)`COALESCE(CHR(${t.arg}), '')`)]}lv.fnChr=v2e;var cv={};Object.defineProperty(cv,"__esModule",{value:!0}),cv.fnDiv=void 0;const bf=ge;function S2e(){const t=(0,bf.makeParam)("dividend",(0,bf.anyExprType)("number")),e=(0,bf.makeParam)("divisor",(0,bf.anyExprType)("number"));return[(0,bf.overload)((0,bf.minScalar)("number"),[t.param,e.param],(0,bf.sql)`CASE WHEN DIV0(${t.arg}, ${e.arg}) < 0 THEN CEIL(DIV0(${t.arg}, ${e.arg})) ELSE FLOOR(DIV0(${t.arg}, ${e.arg})) END`)]}cv.fnDiv=S2e;var fv={};Object.defineProperty(fv,"__esModule",{value:!0}),fv.fnIsInf=void 0;const xp=ge;function _2e(){const t=(0,xp.makeParam)("value",(0,xp.anyExprType)("number"));return[(0,xp.overload)((0,xp.minScalar)("boolean"),[t.param],(0,xp.sql)`COALESCE(${t.arg} = 'inf'::FLOAT OR ${t.arg} = '-inf'::FLOAT, false)`)]}fv.fnIsInf=_2e;var xv={};Object.defineProperty(xv,"__esModule",{value:!0}),xv.fnIsNan=void 0;const ch=ge;function C2e(){return[(0,ch.overload)((0,ch.minScalar)("boolean"),[(0,ch.param)("value",(0,ch.anyExprType)("number"))],(0,ch.sql)`COALESCE(${(0,ch.arg)("value")} = 'NAN'::FLOAT, false)`)]}xv.fnIsNan=C2e;var fh={};Object.defineProperty(fh,"__esModule",{value:!0}),fh.fnByteLength=fh.fnLength=void 0;const to=ge;function b2e(){return[(0,to.overload)((0,to.minScalar)("number"),[(0,to.param)("value",(0,to.anyExprType)("string"))],(0,to.sql)`LENGTH(${(0,to.arg)("value")})`)]}fh.fnLength=b2e;function T2e(){return[(0,to.overload)((0,to.minScalar)("number"),[(0,to.param)("value",(0,to.anyExprType)("string"))],(0,to.sql)`CEIL(BIT_LENGTH(${(0,to.arg)("value")}) / 8)`)]}fh.fnByteLength=T2e;var dv={};Object.defineProperty(dv,"__esModule",{value:!0}),dv.fnLog=void 0;const Tf=ge;function R2e(){const t=(0,Tf.makeParam)("value",(0,Tf.anyExprType)("number")),e=(0,Tf.makeParam)("base",(0,Tf.anyExprType)("number"));return[(0,Tf.overload)((0,Tf.minScalar)("number"),[t.param,e.param],(0,Tf.sql)`LOG(${e.arg}, ${t.arg})`)]}dv.fnLog=R2e;var hv={};Object.defineProperty(hv,"__esModule",{value:!0}),hv.fnRand=void 0;const EO=ge;function O2e(){return[(0,EO.overload)((0,EO.minScalar)("number"),[],(0,EO.sql)`UNIFORM(0::FLOAT, 1::FLOAT, RANDOM())`)]}hv.fnRand=O2e;var pv={};Object.defineProperty(pv,"__esModule",{value:!0}),pv.fnRegexpExtract=void 0;const Rf=ge;function N2e(){const t=(0,Rf.makeParam)("value",(0,Rf.anyExprType)("string")),e=(0,Rf.makeParam)("pattern",(0,Rf.anyExprType)("regular expression"));return[(0,Rf.overload)((0,Rf.minScalar)("string"),[t.param,e.param],(0,Rf.sql)`REGEXP_SUBSTR(${t.arg}, ${e.arg}, 1, 1, 'e')`)]}pv.fnRegexpExtract=N2e;var xh={};Object.defineProperty(xh,"__esModule",{value:!0}),xh.fnEndsWith=xh.fnStartsWith=void 0;const Ji=ge;function D2e(){const t=(0,Ji.makeParam)("value",(0,Ji.anyExprType)("string")),e=(0,Ji.makeParam)("prefix",(0,Ji.anyExprType)("string"));return[(0,Ji.overload)((0,Ji.minScalar)("boolean"),[t.param,e.param],(0,Ji.sql)`COALESCE(STARTSWITH(${t.arg}, ${e.arg}), false)`)]}xh.fnStartsWith=D2e;function F2e(){const t=(0,Ji.makeParam)("value",(0,Ji.anyExprType)("string")),e=(0,Ji.makeParam)("suffix",(0,Ji.anyExprType)("string"));return[(0,Ji.overload)((0,Ji.minScalar)("boolean"),[t.param,e.param],(0,Ji.sql)`COALESCE(ENDSWITH(${t.arg}, ${e.arg}), false)`)]}xh.fnEndsWith=F2e;var gv={};Object.defineProperty(gv,"__esModule",{value:!0}),gv.fnStrpos=void 0;const Of=ge;function w2e(){const t=(0,Of.makeParam)("test_string",(0,Of.anyExprType)("string")),e=(0,Of.makeParam)("search_string",(0,Of.anyExprType)("string"));return[(0,Of.overload)((0,Of.minScalar)("number"),[t.param,e.param],(0,Of.sql)`POSITION(${e.arg}, ${t.arg})`)]}gv.fnStrpos=w2e;var mv={};Object.defineProperty(mv,"__esModule",{value:!0}),mv.fnTrunc=void 0;const Ou=ge;function L2e(){const t=(0,Ou.makeParam)("value",(0,Ou.anyExprType)("number")),e=(0,Ou.makeParam)("precision",(0,Ou.anyExprType)("number"));return[(0,Ou.overload)((0,Ou.minScalar)("number"),[t.param],(0,Ou.sql)`CASE WHEN ${t.arg} < 0 THEN CEIL(${t.arg}) ELSE FLOOR(${t.arg}) END`),(0,Ou.overload)((0,Ou.minScalar)("number"),[t.param,e.param],(0,Ou.sql)`CASE WHEN ${t.arg} < 0 THEN CEIL(${t.arg} * POW(10, ${e.arg})) / POW(10, ${e.arg}) ELSE FLOOR(${t.arg} * POW(10, ${e.arg})) / POW(10, ${e.arg}) END`)]}mv.fnTrunc=L2e;var dh={};Object.defineProperty(dh,"__esModule",{value:!0}),dh.fnStringAggDistinct=dh.fnStringAgg=void 0;const Cn=ge;function I2e(){const t=(0,Cn.makeParam)("value",(0,Cn.maxScalar)("string")),e=(0,Cn.makeParam)("separator",(0,Cn.literal)((0,Cn.maxScalar)("string"))),n={type:"aggregate_order_by",prefix:" WITHIN GROUP(",suffix:")"};return[(0,Cn.overload)((0,Cn.minAggregate)("string"),[t.param],(0,Cn.sql)`LISTAGG(${t.arg}, ',')${n}`,{supportsOrderBy:!0,supportsLimit:!1}),(0,Cn.overload)((0,Cn.minAggregate)("string"),[t.param,e.param],(0,Cn.sql)`LISTAGG(${t.arg}, ${e.arg})${n}`,{supportsOrderBy:!0,supportsLimit:!1})]}dh.fnStringAgg=I2e;function $2e(){const t=(0,Cn.makeParam)("value",(0,Cn.maxScalar)("string")),e=(0,Cn.makeParam)("separator",(0,Cn.literal)((0,Cn.maxScalar)("string"))),n={type:"aggregate_order_by",prefix:" WITHIN GROUP(",suffix:")"};return[(0,Cn.overload)((0,Cn.minAggregate)("string"),[t.param],(0,Cn.sql)`LISTAGG(DISTINCT ${t.arg}, ',')${n}`,{supportsOrderBy:!0,supportsLimit:!1}),(0,Cn.overload)((0,Cn.minAggregate)("string"),[t.param,e.param],(0,Cn.sql)`LISTAGG(DISTINCT ${t.arg}, ${e.arg})${n}`,{supportsOrderBy:!0,supportsLimit:!1})]}dh.fnStringAggDistinct=$2e,function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.SNOWFLAKE_FUNCTIONS=void 0;const e=cf,n=lv,r=cv,i=fv,s=xv,o=fh,u=dv,a=hv,l=pv,c=xh,f=gv,x=mv,h=dh;t.SNOWFLAKE_FUNCTIONS=e.FUNCTIONS.clone(),t.SNOWFLAKE_FUNCTIONS.add("byte_length",o.fnByteLength),t.SNOWFLAKE_FUNCTIONS.add("chr",n.fnChr),t.SNOWFLAKE_FUNCTIONS.add("div",r.fnDiv),t.SNOWFLAKE_FUNCTIONS.add("is_inf",i.fnIsInf),t.SNOWFLAKE_FUNCTIONS.add("is_nan",s.fnIsNan),t.SNOWFLAKE_FUNCTIONS.add("length",o.fnLength),t.SNOWFLAKE_FUNCTIONS.add("log",u.fnLog),t.SNOWFLAKE_FUNCTIONS.add("rand",a.fnRand),t.SNOWFLAKE_FUNCTIONS.add("regexp_extract",l.fnRegexpExtract),t.SNOWFLAKE_FUNCTIONS.add("starts_with",c.fnStartsWith),t.SNOWFLAKE_FUNCTIONS.add("ends_with",c.fnEndsWith),t.SNOWFLAKE_FUNCTIONS.add("strpos",f.fnStrpos),t.SNOWFLAKE_FUNCTIONS.add("trunc",x.fnTrunc),t.SNOWFLAKE_FUNCTIONS.add("string_agg",h.fnStringAgg),t.SNOWFLAKE_FUNCTIONS.add("string_agg_distinct",h.fnStringAggDistinct),t.SNOWFLAKE_FUNCTIONS.seal()}($M),function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.SNOWFLAKE_FUNCTIONS=void 0;var e=$M;Object.defineProperty(t,"SNOWFLAKE_FUNCTIONS",{enumerable:!0,get:function(){return e.SNOWFLAKE_FUNCTIONS}})}(IM),Object.defineProperty(av,"__esModule",{value:!0}),av.SnowflakeDialect=void 0;const B2e=Vt,cr=ne,BM=IM,dp=lf,k2e={day_of_week:"dayofweek",day_of_year:"dayofyear"},P2e={varchar:{type:"string"},text:{type:"string"},string:{type:"string"},char:{type:"string"},character:{type:"string"},nvarchar:{type:"string"},nvarchar2:{type:"string"},"char varying":{type:"string"},"nchar varying":{type:"string"},number:{type:"number",numberType:"integer"},numeric:{type:"number",numberType:"integer"},decimal:{type:"number",numberType:"integer"},dec:{type:"number",numberType:"integer"},integer:{type:"number",numberType:"integer"},int:{type:"number",numberType:"integer"},bigint:{type:"number",numberType:"integer"},smallint:{type:"number",numberType:"integer"},tinyint:{type:"number",numberType:"integer"},byteint:{type:"number",numberType:"integer"},float:{type:"number",numberType:"float"},float4:{type:"number",numberType:"float"},float8:{type:"number",numberType:"float"},double:{type:"number",numberType:"float"},"double precision":{type:"number",numberType:"float"},real:{type:"number",numberType:"float"},boolean:{type:"boolean"},date:{type:"date"},timestamp:{type:"timestamp"},timestampntz:{type:"timestamp"},timestamp_ntz:{type:"timestamp"},"timestamp without time zone":{type:"timestamp"},timestamptz:{type:"timestamp"},timestamp_tz:{type:"timestamp"},"timestamp with time zone":{type:"timestamp"}};class M2e extends dp.Dialect{constructor(){super(...arguments),this.name="snowflake",this.defaultNumberType="NUMBER",this.defaultDecimalType="NUMBER",this.udfPrefix="__udf",this.hasFinalStage=!1,this.divisionIsInteger=!1,this.supportsSumDistinctFunction=!1,this.defaultSampling={rows:5e4},this.globalFunctions=BM.SNOWFLAKE_FUNCTIONS,this.unnestWithNumbers=!1,this.supportUnnestArrayAgg=!1,this.supportsAggDistinct=!1,this.supportsCTEinCoorelatedSubQueries=!1,this.supportsSafeCast=!1,this.dontUnionIndex=!1,this.supportsQualify=!1,this.supportsNesting=!0,this.supportsPipelinesInViews=!1}quoteTablePath(e){return e}sqlGroupSetTable(e){return`CROSS JOIN (SELECT index as group_set FROM TABLE(FLATTEN(ARRAY_GENERATE_RANGE(0, ${e+1}))))`}sqlAnyValue(e,n){return`(ARRAY_AGG(CASE WHEN group_set=${e} THEN ${n} END) WITHIN GROUP (ORDER BY ${n} ASC NULLS LAST))[0]`}mapFields(e){return e.map(n=>`
153
+ )`}sqlSampleTable(e,n){if(n!==void 0){if((0,Ht.isSamplingEnable)(n)&&n.enable&&(n=this.defaultSampling),(0,Ht.isSamplingRows)(n))return`(SELECT * FROM ${e} USING SAMPLE ${n.rows})`;if((0,Ht.isSamplingPercent)(n))return`(SELECT * FROM ${e} USING SAMPLE ${n.percent} PERCENT (bernoulli))`}return e}sqlOrderBy(e){return`ORDER BY ${e.map(n=>`${n} NULLS LAST`).join(",")}`}sqlLiteralString(e){return"'"+e.replace(/'/g,"''")+"'"}sqlLiteralRegexp(e){return"'"+e.replace(/'/g,"''")+"'"}getGlobalFunctionDef(e){return m2e.DUCKDB_FUNCTIONS.get(e)}malloyTypeToSQLType(e){return e.type==="number"?e.numberType==="integer"?"integer":"double precision":e.type==="string"?"varchar":e.type}sqlTypeToMalloyType(e){var n,r;const i=(r=(n=e.match(/^(\w+)/))===null||n===void 0?void 0:n.at(0))!==null&&r!==void 0?r:e;return E2e[i.toUpperCase()]}castToString(e){return`CAST(${e} as VARCHAR)`}concat(...e){return e.join(" || ")}validateTypeName(e){return e.match(/^[A-Za-z\s(),[\]0-9]*$/)!==null}}XA.DuckDBDialect=A2e,function(t){var e=N&&N.__createBinding||(Object.create?function(r,i,s,o){o===void 0&&(o=s);var u=Object.getOwnPropertyDescriptor(i,s);(!u||("get"in u?!i.__esModule:u.writable||u.configurable))&&(u={enumerable:!0,get:function(){return i[s]}}),Object.defineProperty(r,o,u)}:function(r,i,s,o){o===void 0&&(o=s),r[o]=i[s]}),n=N&&N.__exportStar||function(r,i){for(var s in r)s!=="default"&&!Object.prototype.hasOwnProperty.call(i,s)&&e(i,r,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(XA,t)}(gO);var yO={},av={},IM={},$M={},lv={};Object.defineProperty(lv,"__esModule",{value:!0}),lv.fnChr=void 0;const fp=ge;function v2e(){const t=(0,fp.makeParam)("value",(0,fp.anyExprType)("number"));return[(0,fp.overload)((0,fp.minScalar)("string"),[t.param],(0,fp.sql)`COALESCE(CHR(${t.arg}), '')`)]}lv.fnChr=v2e;var cv={};Object.defineProperty(cv,"__esModule",{value:!0}),cv.fnDiv=void 0;const bf=ge;function S2e(){const t=(0,bf.makeParam)("dividend",(0,bf.anyExprType)("number")),e=(0,bf.makeParam)("divisor",(0,bf.anyExprType)("number"));return[(0,bf.overload)((0,bf.minScalar)("number"),[t.param,e.param],(0,bf.sql)`CASE WHEN DIV0(${t.arg}, ${e.arg}) < 0 THEN CEIL(DIV0(${t.arg}, ${e.arg})) ELSE FLOOR(DIV0(${t.arg}, ${e.arg})) END`)]}cv.fnDiv=S2e;var fv={};Object.defineProperty(fv,"__esModule",{value:!0}),fv.fnIsInf=void 0;const xp=ge;function _2e(){const t=(0,xp.makeParam)("value",(0,xp.anyExprType)("number"));return[(0,xp.overload)((0,xp.minScalar)("boolean"),[t.param],(0,xp.sql)`COALESCE(${t.arg} = 'inf'::FLOAT OR ${t.arg} = '-inf'::FLOAT, false)`)]}fv.fnIsInf=_2e;var xv={};Object.defineProperty(xv,"__esModule",{value:!0}),xv.fnIsNan=void 0;const ch=ge;function C2e(){return[(0,ch.overload)((0,ch.minScalar)("boolean"),[(0,ch.param)("value",(0,ch.anyExprType)("number"))],(0,ch.sql)`COALESCE(${(0,ch.arg)("value")} = 'NAN'::FLOAT, false)`)]}xv.fnIsNan=C2e;var fh={};Object.defineProperty(fh,"__esModule",{value:!0}),fh.fnByteLength=fh.fnLength=void 0;const to=ge;function b2e(){return[(0,to.overload)((0,to.minScalar)("number"),[(0,to.param)("value",(0,to.anyExprType)("string"))],(0,to.sql)`LENGTH(${(0,to.arg)("value")})`)]}fh.fnLength=b2e;function T2e(){return[(0,to.overload)((0,to.minScalar)("number"),[(0,to.param)("value",(0,to.anyExprType)("string"))],(0,to.sql)`CEIL(BIT_LENGTH(${(0,to.arg)("value")}) / 8)`)]}fh.fnByteLength=T2e;var dv={};Object.defineProperty(dv,"__esModule",{value:!0}),dv.fnLog=void 0;const Tf=ge;function R2e(){const t=(0,Tf.makeParam)("value",(0,Tf.anyExprType)("number")),e=(0,Tf.makeParam)("base",(0,Tf.anyExprType)("number"));return[(0,Tf.overload)((0,Tf.minScalar)("number"),[t.param,e.param],(0,Tf.sql)`LOG(${e.arg}, ${t.arg})`)]}dv.fnLog=R2e;var hv={};Object.defineProperty(hv,"__esModule",{value:!0}),hv.fnRand=void 0;const EO=ge;function O2e(){return[(0,EO.overload)((0,EO.minScalar)("number"),[],(0,EO.sql)`UNIFORM(0::FLOAT, 1::FLOAT, RANDOM())`)]}hv.fnRand=O2e;var pv={};Object.defineProperty(pv,"__esModule",{value:!0}),pv.fnRegexpExtract=void 0;const Rf=ge;function N2e(){const t=(0,Rf.makeParam)("value",(0,Rf.anyExprType)("string")),e=(0,Rf.makeParam)("pattern",(0,Rf.anyExprType)("regular expression"));return[(0,Rf.overload)((0,Rf.minScalar)("string"),[t.param,e.param],(0,Rf.sql)`REGEXP_SUBSTR(${t.arg}, ${e.arg}, 1, 1, 'e')`)]}pv.fnRegexpExtract=N2e;var xh={};Object.defineProperty(xh,"__esModule",{value:!0}),xh.fnEndsWith=xh.fnStartsWith=void 0;const Ji=ge;function D2e(){const t=(0,Ji.makeParam)("value",(0,Ji.anyExprType)("string")),e=(0,Ji.makeParam)("prefix",(0,Ji.anyExprType)("string"));return[(0,Ji.overload)((0,Ji.minScalar)("boolean"),[t.param,e.param],(0,Ji.sql)`COALESCE(STARTSWITH(${t.arg}, ${e.arg}), false)`)]}xh.fnStartsWith=D2e;function F2e(){const t=(0,Ji.makeParam)("value",(0,Ji.anyExprType)("string")),e=(0,Ji.makeParam)("suffix",(0,Ji.anyExprType)("string"));return[(0,Ji.overload)((0,Ji.minScalar)("boolean"),[t.param,e.param],(0,Ji.sql)`COALESCE(ENDSWITH(${t.arg}, ${e.arg}), false)`)]}xh.fnEndsWith=F2e;var gv={};Object.defineProperty(gv,"__esModule",{value:!0}),gv.fnStrpos=void 0;const Of=ge;function w2e(){const t=(0,Of.makeParam)("test_string",(0,Of.anyExprType)("string")),e=(0,Of.makeParam)("search_string",(0,Of.anyExprType)("string"));return[(0,Of.overload)((0,Of.minScalar)("number"),[t.param,e.param],(0,Of.sql)`POSITION(${e.arg}, ${t.arg})`)]}gv.fnStrpos=w2e;var mv={};Object.defineProperty(mv,"__esModule",{value:!0}),mv.fnTrunc=void 0;const Ou=ge;function L2e(){const t=(0,Ou.makeParam)("value",(0,Ou.anyExprType)("number")),e=(0,Ou.makeParam)("precision",(0,Ou.anyExprType)("number"));return[(0,Ou.overload)((0,Ou.minScalar)("number"),[t.param],(0,Ou.sql)`CASE WHEN ${t.arg} < 0 THEN CEIL(${t.arg}) ELSE FLOOR(${t.arg}) END`),(0,Ou.overload)((0,Ou.minScalar)("number"),[t.param,e.param],(0,Ou.sql)`CASE WHEN ${t.arg} < 0 THEN CEIL(${t.arg} * POW(10, ${e.arg})) / POW(10, ${e.arg}) ELSE FLOOR(${t.arg} * POW(10, ${e.arg})) / POW(10, ${e.arg}) END`)]}mv.fnTrunc=L2e;var dh={};Object.defineProperty(dh,"__esModule",{value:!0}),dh.fnStringAggDistinct=dh.fnStringAgg=void 0;const Cn=ge;function I2e(){const t=(0,Cn.makeParam)("value",(0,Cn.maxScalar)("string")),e=(0,Cn.makeParam)("separator",(0,Cn.literal)((0,Cn.maxScalar)("string"))),n={type:"aggregate_order_by",prefix:" WITHIN GROUP(",suffix:")"};return[(0,Cn.overload)((0,Cn.minAggregate)("string"),[t.param],(0,Cn.sql)`LISTAGG(${t.arg}, ',')${n}`,{supportsOrderBy:!0,supportsLimit:!1}),(0,Cn.overload)((0,Cn.minAggregate)("string"),[t.param,e.param],(0,Cn.sql)`LISTAGG(${t.arg}, ${e.arg})${n}`,{supportsOrderBy:!0,supportsLimit:!1})]}dh.fnStringAgg=I2e;function $2e(){const t=(0,Cn.makeParam)("value",(0,Cn.maxScalar)("string")),e=(0,Cn.makeParam)("separator",(0,Cn.literal)((0,Cn.maxScalar)("string"))),n={type:"aggregate_order_by",prefix:" WITHIN GROUP(",suffix:")"};return[(0,Cn.overload)((0,Cn.minAggregate)("string"),[t.param],(0,Cn.sql)`LISTAGG(DISTINCT ${t.arg}, ',')${n}`,{supportsOrderBy:!0,supportsLimit:!1}),(0,Cn.overload)((0,Cn.minAggregate)("string"),[t.param,e.param],(0,Cn.sql)`LISTAGG(DISTINCT ${t.arg}, ${e.arg})${n}`,{supportsOrderBy:!0,supportsLimit:!1})]}dh.fnStringAggDistinct=$2e,function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.SNOWFLAKE_FUNCTIONS=void 0;const e=cf,n=lv,r=cv,i=fv,s=xv,o=fh,u=dv,a=hv,l=pv,c=xh,f=gv,x=mv,h=dh;t.SNOWFLAKE_FUNCTIONS=e.FUNCTIONS.clone(),t.SNOWFLAKE_FUNCTIONS.add("byte_length",o.fnByteLength),t.SNOWFLAKE_FUNCTIONS.add("chr",n.fnChr),t.SNOWFLAKE_FUNCTIONS.add("div",r.fnDiv),t.SNOWFLAKE_FUNCTIONS.add("is_inf",i.fnIsInf),t.SNOWFLAKE_FUNCTIONS.add("is_nan",s.fnIsNan),t.SNOWFLAKE_FUNCTIONS.add("length",o.fnLength),t.SNOWFLAKE_FUNCTIONS.add("log",u.fnLog),t.SNOWFLAKE_FUNCTIONS.add("rand",a.fnRand),t.SNOWFLAKE_FUNCTIONS.add("regexp_extract",l.fnRegexpExtract),t.SNOWFLAKE_FUNCTIONS.add("starts_with",c.fnStartsWith),t.SNOWFLAKE_FUNCTIONS.add("ends_with",c.fnEndsWith),t.SNOWFLAKE_FUNCTIONS.add("strpos",f.fnStrpos),t.SNOWFLAKE_FUNCTIONS.add("trunc",x.fnTrunc),t.SNOWFLAKE_FUNCTIONS.add("string_agg",h.fnStringAgg),t.SNOWFLAKE_FUNCTIONS.add("string_agg_distinct",h.fnStringAggDistinct),t.SNOWFLAKE_FUNCTIONS.seal()}($M),function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.SNOWFLAKE_FUNCTIONS=void 0;var e=$M;Object.defineProperty(t,"SNOWFLAKE_FUNCTIONS",{enumerable:!0,get:function(){return e.SNOWFLAKE_FUNCTIONS}})}(IM),Object.defineProperty(av,"__esModule",{value:!0}),av.SnowflakeDialect=void 0;const B2e=Vt,cr=ne,BM=IM,dp=lf,k2e={day_of_week:"dayofweek",day_of_year:"dayofyear"},P2e={varchar:{type:"string"},text:{type:"string"},string:{type:"string"},char:{type:"string"},character:{type:"string"},nvarchar:{type:"string"},nvarchar2:{type:"string"},"char varying":{type:"string"},"nchar varying":{type:"string"},number:{type:"number",numberType:"integer"},numeric:{type:"number",numberType:"integer"},decimal:{type:"number",numberType:"integer"},dec:{type:"number",numberType:"integer"},integer:{type:"number",numberType:"integer"},int:{type:"number",numberType:"integer"},bigint:{type:"number",numberType:"integer"},smallint:{type:"number",numberType:"integer"},tinyint:{type:"number",numberType:"integer"},byteint:{type:"number",numberType:"integer"},float:{type:"number",numberType:"float"},float4:{type:"number",numberType:"float"},float8:{type:"number",numberType:"float"},double:{type:"number",numberType:"float"},"double precision":{type:"number",numberType:"float"},real:{type:"number",numberType:"float"},boolean:{type:"boolean"},date:{type:"date"},timestamp:{type:"timestamp"},timestampntz:{type:"timestamp"},timestamp_ntz:{type:"timestamp"},"timestamp without time zone":{type:"timestamp"},timestamptz:{type:"timestamp"},timestamp_tz:{type:"timestamp"},"timestamp with time zone":{type:"timestamp"}};class M2e extends dp.Dialect{constructor(){super(...arguments),this.name="snowflake",this.defaultNumberType="NUMBER",this.defaultDecimalType="NUMBER",this.udfPrefix="__udf",this.hasFinalStage=!1,this.divisionIsInteger=!1,this.supportsSumDistinctFunction=!1,this.supportsSafeCast=!0,this.supportsNesting=!0,this.defaultSampling={rows:5e4},this.globalFunctions=BM.SNOWFLAKE_FUNCTIONS,this.unnestWithNumbers=!1,this.supportUnnestArrayAgg=!1,this.supportsAggDistinct=!1,this.supportsCTEinCoorelatedSubQueries=!1,this.dontUnionIndex=!1,this.supportsQualify=!1,this.supportsPipelinesInViews=!1}quoteTablePath(e){return e}sqlGroupSetTable(e){return`CROSS JOIN (SELECT index as group_set FROM TABLE(FLATTEN(ARRAY_GENERATE_RANGE(0, ${e+1}))))`}sqlAnyValue(e,n){return`(ARRAY_AGG(CASE WHEN group_set=${e} THEN ${n} END) WITHIN GROUP (ORDER BY ${n} ASC NULLS LAST))[0]`}mapFields(e){return e.map(n=>`
154
154
  ${n.sqlExpression} as ${n.sqlOutputName}`).join(", ")}mapFieldsForObjectConstruct(e){return e.map(n=>`'${n.rawName}', (${n.sqlExpression})`).join(", ")}sqlAggregateTurtle(e,n,r,i){const s=this.mapFieldsForObjectConstruct(n),o=r?` WITHIN GROUP (${r})`:"",u=`ARRAY_AGG(CASE WHEN group_set=${e} THEN OBJECT_CONSTRUCT_KEEP_NULL(${s}) END)${o}`;return i===void 0?`COALESCE(${u}, [])`:`COALESCE(ARRAY_SLICE(${u}, 0, ${i}), [])`}sqlAnyValueTurtle(e,n){const r=this.mapFieldsForObjectConstruct(n);return`(ARRAY_AGG(CASE WHEN group_set=${e} THEN OBJECT_CONSTRUCT_KEEP_NULL(${r}) END) WITHIN GROUP (ORDER BY 1 ASC NULLS LAST))[0]`}sqlAnyValueLastTurtle(e,n,r){return`(ARRAY_AGG(CASE WHEN group_set=${n} THEN ${e} END) WITHIN GROUP (ORDER BY ${e} ASC NULLS LAST))[0] AS ${r}`}sqlCoaleseMeasuresInline(e,n){const r=this.mapFieldsForObjectConstruct(n),i=n.map(s=>`'${s.sqlOutputName}', NULL`).join(", ");return`COALESCE(ARRAY_AGG(CASE WHEN group_set=${e} THEN OBJECT_CONSTRUCT_KEEP_NULL(${r}) END)[0], OBJECT_CONSTRUCT_KEEP_NULL(${i}))`}sqlUnnestAlias(e,n,r,i,s,o){return s?`,LATERAL FLATTEN(INPUT => ${e}) AS ${n}_1, LATERAL (SELECT ${n}_1.INDEX, object_construct('value', ${n}_1.value) as value ) as ${n}`:`LEFT JOIN LATERAL FLATTEN(INPUT => ifnull(${e},[1])) AS ${n}`}sqlSumDistinctHashedKey(e){e=`${e}::STRING`;const n=`to_number(substr(md5_hex(${e}), 1, 15), repeat('X', 15)) * 4294967296`,r=`to_number(substr(md5_hex(${e}), 16, 8), repeat('X', 8))`;return`(${n} + ${r}) * 0.000000001`}sqlGenerateUUID(){return"UUID_STRING()"}sqlFieldReference(e,n,r,i,s){if(n==="__row_id")return`${e}.INDEX::varchar`;if(i){let o=r;return r==="string"?o="varchar":r==="struct"&&(o="variant"),`${e}.value:"${n}"::${o}`}else return`${e}."${n}"`}sqlUnnestPipelineHead(e,n){let r=n;return e&&(r=`[${r}]`),`TABLE(FLATTEN(input =>${r}))`}sqlCreateFunction(e,n){throw new Error("not implemented yet")}sqlCreateFunctionCombineLastStage(e){throw new Error("not implemented yet")}sqlSelectAliasAsStruct(e){return`OBJECT_CONSTRUCT_KEEP_NULL(${e}.*)`}sqlMaybeQuoteIdentifier(e){return`"${e}"`}sqlCreateTableAsSelect(e,n){return`
155
155
  CREATE TEMP TABLE IF NOT EXISTS \`${e}\`
156
156
  AS (
@@ -159,7 +159,8 @@ ${(0,B2e.indent)(n)}
159
159
  `}sqlTrunc(e,n,r){const i=(0,dp.qtz)(e);let s=n.value;return i&&n.valueType==="timestamp"&&(s=(0,cr.mkExpr)`CONVERT_TIMEZONE('${i}', ${s})`),(0,cr.mkExpr)`DATE_TRUNC('${r}', ${s})`}sqlExtract(e,n,r){const i=k2e[r]||r;let s=n.value;const o=(0,dp.qtz)(e);return o&&n.valueType==="timestamp"&&(s=(0,cr.mkExpr)`CONVERT_TIMEZONE('${o}', ${s})`),(0,cr.mkExpr)`EXTRACT(${i} FROM ${s})`}sqlAlterTime(e,n,r,i){const s=(0,cr.mkExpr)`INTERVAL '${r} ${i}'`;return(0,cr.mkExpr)`((${n.value})${e}${s})`}atTz(e,n){return n!==void 0?(0,cr.mkExpr)`(
160
160
  TO_CHAR(${e}::TIMESTAMP_NTZ, 'YYYY-MM-DD HH24:MI:SS.FF9') ||
161
161
  TO_CHAR(CONVERT_TIMEZONE('${n}', '1970-01-01 00:00:00'), 'TZHTZM')
162
- )::TIMESTAMP_TZ`:(0,cr.mkExpr)`${e}::TIMESTAMP_NTZ`}sqlNow(){return(0,cr.mkExpr)`CURRENT_TIMESTAMP()`}sqlCast(e,n){if(n.srcType===n.dstType)return n.expr;if(n.safe)throw new Error("Snowflake dialect doesn't support safe cast for a few types");const r=(0,dp.qtz)(e);if(n.dstType==="date"&&n.srcType==="timestamp"){let s=n.expr;return r&&(s=(0,cr.mkExpr)`CONVERT_TIMEZONE('${r}', ${s})`),(0,cr.mkExpr)`TO_DATE(${s})`}else if(n.dstType==="timestamp"&&n.srcType==="date"){const s=(0,cr.mkExpr)`TO_TIMESTAMP(${n.expr})`;return this.atTz(s,r)}const i=typeof n.dstType=="string"?this.malloyTypeToSQLType({type:n.dstType}):n.dstType.raw;return(0,cr.mkExpr)`CAST(${n.expr} AS ${i})`}sqlLiteralTime(e,n,r,i){const s=(0,dp.qtz)(e);let o=`'${n}'::TIMESTAMP_NTZ`;const u=i??s;if(u){const a=`TO_CHAR(CONVERT_TIMEZONE('${u}', '1970-01-01 00:00:00'), 'TZHTZM')`;o=`${`TO_CHAR(${o}, 'YYYY-MM-DD HH24:MI:SS.FF9')`} || ${a}`,o=`(${o})::TIMESTAMP_TZ`}switch(r){case"date":return`TO_DATE(${o})`;case"timestamp":return o}}sqlMeasureTime(e,n,r){let i="nanoseconds";return(e.valueType==="date"||n.valueType==="date")&&(i="seconds"),(0,cr.mkExpr)`TIMESTAMPDIFF(
162
+ )::TIMESTAMP_TZ`:(0,cr.mkExpr)`${e}::TIMESTAMP_NTZ`}sqlNow(){return(0,cr.mkExpr)`CURRENT_TIMESTAMP()`}sqlCast(e,n){if(n.srcType===n.dstType)return n.expr;if(n.safe&&typeof n.srcType!="string")throw new Error(`Snowflake dialect doesn't support safe cast for a few types:
163
+ refer to: https://docs.snowflake.com/en/sql-reference/functions/try_cast`);const r=(0,dp.qtz)(e);if(n.dstType==="date"&&n.srcType==="timestamp"){let o=n.expr;return r&&(o=(0,cr.mkExpr)`CONVERT_TIMEZONE('${r}', ${o})`),(0,cr.mkExpr)`TO_DATE(${o})`}else if(n.dstType==="timestamp"&&n.srcType==="date"){const o=(0,cr.mkExpr)`TO_TIMESTAMP(${n.expr})`;return this.atTz(o,r)}const i=typeof n.dstType=="string"?this.malloyTypeToSQLType({type:n.dstType}):n.dstType.raw,s=n.safe?"TRY_CAST":"CAST";return(0,cr.mkExpr)`${s}(${n.expr} AS ${i})`}sqlLiteralTime(e,n,r,i){const s=(0,dp.qtz)(e);let o=`'${n}'::TIMESTAMP_NTZ`;const u=i??s;if(u){const a=`TO_CHAR(CONVERT_TIMEZONE('${u}', '1970-01-01 00:00:00'), 'TZHTZM')`;o=`${`TO_CHAR(${o}, 'YYYY-MM-DD HH24:MI:SS.FF9')`} || ${a}`,o=`(${o})::TIMESTAMP_TZ`}switch(r){case"date":return`TO_DATE(${o})`;case"timestamp":return o}}sqlMeasureTime(e,n,r){let i="nanoseconds";return(e.valueType==="date"||n.valueType==="date")&&(i="seconds"),(0,cr.mkExpr)`TIMESTAMPDIFF(
163
164
  '${r}',
164
165
  '1970-01-01 00:00:00'::TIMESTAMP_NTZ,
165
166
  TIMESTAMPADD(
@@ -4285,7 +4285,7 @@ const Mde = Yt, ur = ne, _P = PG, tg = zx, jde = {
4285
4285
  };
4286
4286
  class qde extends tg.Dialect {
4287
4287
  constructor() {
4288
- super(...arguments), this.name = "snowflake", this.defaultNumberType = "NUMBER", this.defaultDecimalType = "NUMBER", this.udfPrefix = "__udf", this.hasFinalStage = !1, this.divisionIsInteger = !1, this.supportsSumDistinctFunction = !1, this.defaultSampling = { rows: 5e4 }, this.globalFunctions = _P.SNOWFLAKE_FUNCTIONS, this.unnestWithNumbers = !1, this.supportUnnestArrayAgg = !1, this.supportsAggDistinct = !1, this.supportsCTEinCoorelatedSubQueries = !1, this.supportsSafeCast = !1, this.dontUnionIndex = !1, this.supportsQualify = !1, this.supportsNesting = !0, this.supportsPipelinesInViews = !1;
4288
+ super(...arguments), this.name = "snowflake", this.defaultNumberType = "NUMBER", this.defaultDecimalType = "NUMBER", this.udfPrefix = "__udf", this.hasFinalStage = !1, this.divisionIsInteger = !1, this.supportsSumDistinctFunction = !1, this.supportsSafeCast = !0, this.supportsNesting = !0, this.defaultSampling = { rows: 5e4 }, this.globalFunctions = _P.SNOWFLAKE_FUNCTIONS, this.unnestWithNumbers = !1, this.supportUnnestArrayAgg = !1, this.supportsAggDistinct = !1, this.supportsCTEinCoorelatedSubQueries = !1, this.dontUnionIndex = !1, this.supportsQualify = !1, this.supportsPipelinesInViews = !1;
4289
4289
  }
4290
4290
  // don't mess with the table pathing.
4291
4291
  quoteTablePath(e) {
@@ -4408,18 +4408,19 @@ ${(0, Mde.indent)(n)}
4408
4408
  sqlCast(e, n) {
4409
4409
  if (n.srcType === n.dstType)
4410
4410
  return n.expr;
4411
- if (n.safe)
4412
- throw new Error("Snowflake dialect doesn't support safe cast for a few types");
4411
+ if (n.safe && typeof n.srcType != "string")
4412
+ throw new Error(`Snowflake dialect doesn't support safe cast for a few types:
4413
+ refer to: https://docs.snowflake.com/en/sql-reference/functions/try_cast`);
4413
4414
  const r = (0, tg.qtz)(e);
4414
4415
  if (n.dstType === "date" && n.srcType === "timestamp") {
4415
- let s = n.expr;
4416
- return r && (s = (0, ur.mkExpr)`CONVERT_TIMEZONE('${r}', ${s})`), (0, ur.mkExpr)`TO_DATE(${s})`;
4416
+ let o = n.expr;
4417
+ return r && (o = (0, ur.mkExpr)`CONVERT_TIMEZONE('${r}', ${o})`), (0, ur.mkExpr)`TO_DATE(${o})`;
4417
4418
  } else if (n.dstType === "timestamp" && n.srcType === "date") {
4418
- const s = (0, ur.mkExpr)`TO_TIMESTAMP(${n.expr})`;
4419
- return this.atTz(s, r);
4419
+ const o = (0, ur.mkExpr)`TO_TIMESTAMP(${n.expr})`;
4420
+ return this.atTz(o, r);
4420
4421
  }
4421
- const i = typeof n.dstType == "string" ? this.malloyTypeToSQLType({ type: n.dstType }) : n.dstType.raw;
4422
- return (0, ur.mkExpr)`CAST(${n.expr} AS ${i})`;
4422
+ const i = typeof n.dstType == "string" ? this.malloyTypeToSQLType({ type: n.dstType }) : n.dstType.raw, s = n.safe ? "TRY_CAST" : "CAST";
4423
+ return (0, ur.mkExpr)`${s}(${n.expr} AS ${i})`;
4423
4424
  }
4424
4425
  sqlLiteralTime(e, n, r, i) {
4425
4426
  const s = (0, tg.qtz)(e);
@@ -150,7 +150,7 @@ ${dM}
150
150
  FROM (
151
151
  SELECT UNNEST(list(distinct {key:${e}, ${n.map((i,s)=>`val${s}: ${i}`).join(",")}})) a
152
152
  )
153
- )`}sqlSampleTable(e,n){if(n!==void 0){if((0,qt.isSamplingEnable)(n)&&n.enable&&(n=this.defaultSampling),(0,qt.isSamplingRows)(n))return`(SELECT * FROM ${e} USING SAMPLE ${n.rows})`;if((0,qt.isSamplingPercent)(n))return`(SELECT * FROM ${e} USING SAMPLE ${n.percent} PERCENT (bernoulli))`}return e}sqlOrderBy(e){return`ORDER BY ${e.map(n=>`${n} NULLS LAST`).join(",")}`}sqlLiteralString(e){return"'"+e.replace(/'/g,"''")+"'"}sqlLiteralRegexp(e){return"'"+e.replace(/'/g,"''")+"'"}getGlobalFunctionDef(e){return Ede.DUCKDB_FUNCTIONS.get(e)}malloyTypeToSQLType(e){return e.type==="number"?e.numberType==="integer"?"integer":"double precision":e.type==="string"?"varchar":e.type}sqlTypeToMalloyType(e){var n,r;const i=(r=(n=e.match(/^(\w+)/))===null||n===void 0?void 0:n.at(0))!==null&&r!==void 0?r:e;return Sde[i.toUpperCase()]}castToString(e){return`CAST(${e} as VARCHAR)`}concat(...e){return e.join(" || ")}validateTypeName(e){return e.match(/^[A-Za-z\s(),[\]0-9]*$/)!==null}}UA.DuckDBDialect=vde,function(t){var e=N&&N.__createBinding||(Object.create?function(r,i,s,o){o===void 0&&(o=s);var u=Object.getOwnPropertyDescriptor(i,s);(!u||("get"in u?!i.__esModule:u.writable||u.configurable))&&(u={enumerable:!0,get:function(){return i[s]}}),Object.defineProperty(r,o,u)}:function(r,i,s,o){o===void 0&&(o=s),r[o]=i[s]}),n=N&&N.__exportStar||function(r,i){for(var s in r)s!=="default"&&!Object.prototype.hasOwnProperty.call(i,s)&&e(i,r,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(UA,t)}(RD);var ND={},JA={},hM={},pM={},ZA={};Object.defineProperty(ZA,"__esModule",{value:!0}),ZA.fnChr=void 0;const eg=ge;function _de(){const t=(0,eg.makeParam)("value",(0,eg.anyExprType)("number"));return[(0,eg.overload)((0,eg.minScalar)("string"),[t.param],(0,eg.sql)`COALESCE(CHR(${t.arg}), '')`)]}ZA.fnChr=_de;var eS={};Object.defineProperty(eS,"__esModule",{value:!0}),eS.fnDiv=void 0;const hf=ge;function Cde(){const t=(0,hf.makeParam)("dividend",(0,hf.anyExprType)("number")),e=(0,hf.makeParam)("divisor",(0,hf.anyExprType)("number"));return[(0,hf.overload)((0,hf.minScalar)("number"),[t.param,e.param],(0,hf.sql)`CASE WHEN DIV0(${t.arg}, ${e.arg}) < 0 THEN CEIL(DIV0(${t.arg}, ${e.arg})) ELSE FLOOR(DIV0(${t.arg}, ${e.arg})) END`)]}eS.fnDiv=Cde;var tS={};Object.defineProperty(tS,"__esModule",{value:!0}),tS.fnIsInf=void 0;const tg=ge;function bde(){const t=(0,tg.makeParam)("value",(0,tg.anyExprType)("number"));return[(0,tg.overload)((0,tg.minScalar)("boolean"),[t.param],(0,tg.sql)`COALESCE(${t.arg} = 'inf'::FLOAT OR ${t.arg} = '-inf'::FLOAT, false)`)]}tS.fnIsInf=bde;var nS={};Object.defineProperty(nS,"__esModule",{value:!0}),nS.fnIsNan=void 0;const Zd=ge;function Tde(){return[(0,Zd.overload)((0,Zd.minScalar)("boolean"),[(0,Zd.param)("value",(0,Zd.anyExprType)("number"))],(0,Zd.sql)`COALESCE(${(0,Zd.arg)("value")} = 'NAN'::FLOAT, false)`)]}nS.fnIsNan=Tde;var eh={};Object.defineProperty(eh,"__esModule",{value:!0}),eh.fnByteLength=eh.fnLength=void 0;const Xs=ge;function Rde(){return[(0,Xs.overload)((0,Xs.minScalar)("number"),[(0,Xs.param)("value",(0,Xs.anyExprType)("string"))],(0,Xs.sql)`LENGTH(${(0,Xs.arg)("value")})`)]}eh.fnLength=Rde;function Ode(){return[(0,Xs.overload)((0,Xs.minScalar)("number"),[(0,Xs.param)("value",(0,Xs.anyExprType)("string"))],(0,Xs.sql)`CEIL(BIT_LENGTH(${(0,Xs.arg)("value")}) / 8)`)]}eh.fnByteLength=Ode;var rS={};Object.defineProperty(rS,"__esModule",{value:!0}),rS.fnLog=void 0;const pf=ge;function Nde(){const t=(0,pf.makeParam)("value",(0,pf.anyExprType)("number")),e=(0,pf.makeParam)("base",(0,pf.anyExprType)("number"));return[(0,pf.overload)((0,pf.minScalar)("number"),[t.param,e.param],(0,pf.sql)`LOG(${e.arg}, ${t.arg})`)]}rS.fnLog=Nde;var iS={};Object.defineProperty(iS,"__esModule",{value:!0}),iS.fnRand=void 0;const DD=ge;function Dde(){return[(0,DD.overload)((0,DD.minScalar)("number"),[],(0,DD.sql)`UNIFORM(0::FLOAT, 1::FLOAT, RANDOM())`)]}iS.fnRand=Dde;var sS={};Object.defineProperty(sS,"__esModule",{value:!0}),sS.fnRegexpExtract=void 0;const gf=ge;function Fde(){const t=(0,gf.makeParam)("value",(0,gf.anyExprType)("string")),e=(0,gf.makeParam)("pattern",(0,gf.anyExprType)("regular expression"));return[(0,gf.overload)((0,gf.minScalar)("string"),[t.param,e.param],(0,gf.sql)`REGEXP_SUBSTR(${t.arg}, ${e.arg}, 1, 1, 'e')`)]}sS.fnRegexpExtract=Fde;var th={};Object.defineProperty(th,"__esModule",{value:!0}),th.fnEndsWith=th.fnStartsWith=void 0;const Wi=ge;function wde(){const t=(0,Wi.makeParam)("value",(0,Wi.anyExprType)("string")),e=(0,Wi.makeParam)("prefix",(0,Wi.anyExprType)("string"));return[(0,Wi.overload)((0,Wi.minScalar)("boolean"),[t.param,e.param],(0,Wi.sql)`COALESCE(STARTSWITH(${t.arg}, ${e.arg}), false)`)]}th.fnStartsWith=wde;function Lde(){const t=(0,Wi.makeParam)("value",(0,Wi.anyExprType)("string")),e=(0,Wi.makeParam)("suffix",(0,Wi.anyExprType)("string"));return[(0,Wi.overload)((0,Wi.minScalar)("boolean"),[t.param,e.param],(0,Wi.sql)`COALESCE(ENDSWITH(${t.arg}, ${e.arg}), false)`)]}th.fnEndsWith=Lde;var oS={};Object.defineProperty(oS,"__esModule",{value:!0}),oS.fnStrpos=void 0;const mf=ge;function Ide(){const t=(0,mf.makeParam)("test_string",(0,mf.anyExprType)("string")),e=(0,mf.makeParam)("search_string",(0,mf.anyExprType)("string"));return[(0,mf.overload)((0,mf.minScalar)("number"),[t.param,e.param],(0,mf.sql)`POSITION(${e.arg}, ${t.arg})`)]}oS.fnStrpos=Ide;var uS={};Object.defineProperty(uS,"__esModule",{value:!0}),uS.fnTrunc=void 0;const Au=ge;function $de(){const t=(0,Au.makeParam)("value",(0,Au.anyExprType)("number")),e=(0,Au.makeParam)("precision",(0,Au.anyExprType)("number"));return[(0,Au.overload)((0,Au.minScalar)("number"),[t.param],(0,Au.sql)`CASE WHEN ${t.arg} < 0 THEN CEIL(${t.arg}) ELSE FLOOR(${t.arg}) END`),(0,Au.overload)((0,Au.minScalar)("number"),[t.param,e.param],(0,Au.sql)`CASE WHEN ${t.arg} < 0 THEN CEIL(${t.arg} * POW(10, ${e.arg})) / POW(10, ${e.arg}) ELSE FLOOR(${t.arg} * POW(10, ${e.arg})) / POW(10, ${e.arg}) END`)]}uS.fnTrunc=$de;var nh={};Object.defineProperty(nh,"__esModule",{value:!0}),nh.fnStringAggDistinct=nh.fnStringAgg=void 0;const Sn=ge;function Bde(){const t=(0,Sn.makeParam)("value",(0,Sn.maxScalar)("string")),e=(0,Sn.makeParam)("separator",(0,Sn.literal)((0,Sn.maxScalar)("string"))),n={type:"aggregate_order_by",prefix:" WITHIN GROUP(",suffix:")"};return[(0,Sn.overload)((0,Sn.minAggregate)("string"),[t.param],(0,Sn.sql)`LISTAGG(${t.arg}, ',')${n}`,{supportsOrderBy:!0,supportsLimit:!1}),(0,Sn.overload)((0,Sn.minAggregate)("string"),[t.param,e.param],(0,Sn.sql)`LISTAGG(${t.arg}, ${e.arg})${n}`,{supportsOrderBy:!0,supportsLimit:!1})]}nh.fnStringAgg=Bde;function kde(){const t=(0,Sn.makeParam)("value",(0,Sn.maxScalar)("string")),e=(0,Sn.makeParam)("separator",(0,Sn.literal)((0,Sn.maxScalar)("string"))),n={type:"aggregate_order_by",prefix:" WITHIN GROUP(",suffix:")"};return[(0,Sn.overload)((0,Sn.minAggregate)("string"),[t.param],(0,Sn.sql)`LISTAGG(DISTINCT ${t.arg}, ',')${n}`,{supportsOrderBy:!0,supportsLimit:!1}),(0,Sn.overload)((0,Sn.minAggregate)("string"),[t.param,e.param],(0,Sn.sql)`LISTAGG(DISTINCT ${t.arg}, ${e.arg})${n}`,{supportsOrderBy:!0,supportsLimit:!1})]}nh.fnStringAggDistinct=kde,function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.SNOWFLAKE_FUNCTIONS=void 0;const e=Jc,n=ZA,r=eS,i=tS,s=nS,o=eh,u=rS,a=iS,l=sS,c=th,f=oS,x=uS,h=nh;t.SNOWFLAKE_FUNCTIONS=e.FUNCTIONS.clone(),t.SNOWFLAKE_FUNCTIONS.add("byte_length",o.fnByteLength),t.SNOWFLAKE_FUNCTIONS.add("chr",n.fnChr),t.SNOWFLAKE_FUNCTIONS.add("div",r.fnDiv),t.SNOWFLAKE_FUNCTIONS.add("is_inf",i.fnIsInf),t.SNOWFLAKE_FUNCTIONS.add("is_nan",s.fnIsNan),t.SNOWFLAKE_FUNCTIONS.add("length",o.fnLength),t.SNOWFLAKE_FUNCTIONS.add("log",u.fnLog),t.SNOWFLAKE_FUNCTIONS.add("rand",a.fnRand),t.SNOWFLAKE_FUNCTIONS.add("regexp_extract",l.fnRegexpExtract),t.SNOWFLAKE_FUNCTIONS.add("starts_with",c.fnStartsWith),t.SNOWFLAKE_FUNCTIONS.add("ends_with",c.fnEndsWith),t.SNOWFLAKE_FUNCTIONS.add("strpos",f.fnStrpos),t.SNOWFLAKE_FUNCTIONS.add("trunc",x.fnTrunc),t.SNOWFLAKE_FUNCTIONS.add("string_agg",h.fnStringAgg),t.SNOWFLAKE_FUNCTIONS.add("string_agg_distinct",h.fnStringAggDistinct),t.SNOWFLAKE_FUNCTIONS.seal()}(pM),function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.SNOWFLAKE_FUNCTIONS=void 0;var e=pM;Object.defineProperty(t,"SNOWFLAKE_FUNCTIONS",{enumerable:!0,get:function(){return e.SNOWFLAKE_FUNCTIONS}})}(hM),Object.defineProperty(JA,"__esModule",{value:!0}),JA.SnowflakeDialect=void 0;const Pde=Wt,or=ne,gM=hM,ng=Kc,Mde={day_of_week:"dayofweek",day_of_year:"dayofyear"},jde={varchar:{type:"string"},text:{type:"string"},string:{type:"string"},char:{type:"string"},character:{type:"string"},nvarchar:{type:"string"},nvarchar2:{type:"string"},"char varying":{type:"string"},"nchar varying":{type:"string"},number:{type:"number",numberType:"integer"},numeric:{type:"number",numberType:"integer"},decimal:{type:"number",numberType:"integer"},dec:{type:"number",numberType:"integer"},integer:{type:"number",numberType:"integer"},int:{type:"number",numberType:"integer"},bigint:{type:"number",numberType:"integer"},smallint:{type:"number",numberType:"integer"},tinyint:{type:"number",numberType:"integer"},byteint:{type:"number",numberType:"integer"},float:{type:"number",numberType:"float"},float4:{type:"number",numberType:"float"},float8:{type:"number",numberType:"float"},double:{type:"number",numberType:"float"},"double precision":{type:"number",numberType:"float"},real:{type:"number",numberType:"float"},boolean:{type:"boolean"},date:{type:"date"},timestamp:{type:"timestamp"},timestampntz:{type:"timestamp"},timestamp_ntz:{type:"timestamp"},"timestamp without time zone":{type:"timestamp"},timestamptz:{type:"timestamp"},timestamp_tz:{type:"timestamp"},"timestamp with time zone":{type:"timestamp"}};class Ude extends ng.Dialect{constructor(){super(...arguments),this.name="snowflake",this.defaultNumberType="NUMBER",this.defaultDecimalType="NUMBER",this.udfPrefix="__udf",this.hasFinalStage=!1,this.divisionIsInteger=!1,this.supportsSumDistinctFunction=!1,this.defaultSampling={rows:5e4},this.globalFunctions=gM.SNOWFLAKE_FUNCTIONS,this.unnestWithNumbers=!1,this.supportUnnestArrayAgg=!1,this.supportsAggDistinct=!1,this.supportsCTEinCoorelatedSubQueries=!1,this.supportsSafeCast=!1,this.dontUnionIndex=!1,this.supportsQualify=!1,this.supportsNesting=!0,this.supportsPipelinesInViews=!1}quoteTablePath(e){return e}sqlGroupSetTable(e){return`CROSS JOIN (SELECT index as group_set FROM TABLE(FLATTEN(ARRAY_GENERATE_RANGE(0, ${e+1}))))`}sqlAnyValue(e,n){return`(ARRAY_AGG(CASE WHEN group_set=${e} THEN ${n} END) WITHIN GROUP (ORDER BY ${n} ASC NULLS LAST))[0]`}mapFields(e){return e.map(n=>`
153
+ )`}sqlSampleTable(e,n){if(n!==void 0){if((0,qt.isSamplingEnable)(n)&&n.enable&&(n=this.defaultSampling),(0,qt.isSamplingRows)(n))return`(SELECT * FROM ${e} USING SAMPLE ${n.rows})`;if((0,qt.isSamplingPercent)(n))return`(SELECT * FROM ${e} USING SAMPLE ${n.percent} PERCENT (bernoulli))`}return e}sqlOrderBy(e){return`ORDER BY ${e.map(n=>`${n} NULLS LAST`).join(",")}`}sqlLiteralString(e){return"'"+e.replace(/'/g,"''")+"'"}sqlLiteralRegexp(e){return"'"+e.replace(/'/g,"''")+"'"}getGlobalFunctionDef(e){return Ede.DUCKDB_FUNCTIONS.get(e)}malloyTypeToSQLType(e){return e.type==="number"?e.numberType==="integer"?"integer":"double precision":e.type==="string"?"varchar":e.type}sqlTypeToMalloyType(e){var n,r;const i=(r=(n=e.match(/^(\w+)/))===null||n===void 0?void 0:n.at(0))!==null&&r!==void 0?r:e;return Sde[i.toUpperCase()]}castToString(e){return`CAST(${e} as VARCHAR)`}concat(...e){return e.join(" || ")}validateTypeName(e){return e.match(/^[A-Za-z\s(),[\]0-9]*$/)!==null}}UA.DuckDBDialect=vde,function(t){var e=N&&N.__createBinding||(Object.create?function(r,i,s,o){o===void 0&&(o=s);var u=Object.getOwnPropertyDescriptor(i,s);(!u||("get"in u?!i.__esModule:u.writable||u.configurable))&&(u={enumerable:!0,get:function(){return i[s]}}),Object.defineProperty(r,o,u)}:function(r,i,s,o){o===void 0&&(o=s),r[o]=i[s]}),n=N&&N.__exportStar||function(r,i){for(var s in r)s!=="default"&&!Object.prototype.hasOwnProperty.call(i,s)&&e(i,r,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(UA,t)}(RD);var ND={},JA={},hM={},pM={},ZA={};Object.defineProperty(ZA,"__esModule",{value:!0}),ZA.fnChr=void 0;const eg=ge;function _de(){const t=(0,eg.makeParam)("value",(0,eg.anyExprType)("number"));return[(0,eg.overload)((0,eg.minScalar)("string"),[t.param],(0,eg.sql)`COALESCE(CHR(${t.arg}), '')`)]}ZA.fnChr=_de;var eS={};Object.defineProperty(eS,"__esModule",{value:!0}),eS.fnDiv=void 0;const hf=ge;function Cde(){const t=(0,hf.makeParam)("dividend",(0,hf.anyExprType)("number")),e=(0,hf.makeParam)("divisor",(0,hf.anyExprType)("number"));return[(0,hf.overload)((0,hf.minScalar)("number"),[t.param,e.param],(0,hf.sql)`CASE WHEN DIV0(${t.arg}, ${e.arg}) < 0 THEN CEIL(DIV0(${t.arg}, ${e.arg})) ELSE FLOOR(DIV0(${t.arg}, ${e.arg})) END`)]}eS.fnDiv=Cde;var tS={};Object.defineProperty(tS,"__esModule",{value:!0}),tS.fnIsInf=void 0;const tg=ge;function bde(){const t=(0,tg.makeParam)("value",(0,tg.anyExprType)("number"));return[(0,tg.overload)((0,tg.minScalar)("boolean"),[t.param],(0,tg.sql)`COALESCE(${t.arg} = 'inf'::FLOAT OR ${t.arg} = '-inf'::FLOAT, false)`)]}tS.fnIsInf=bde;var nS={};Object.defineProperty(nS,"__esModule",{value:!0}),nS.fnIsNan=void 0;const Zd=ge;function Tde(){return[(0,Zd.overload)((0,Zd.minScalar)("boolean"),[(0,Zd.param)("value",(0,Zd.anyExprType)("number"))],(0,Zd.sql)`COALESCE(${(0,Zd.arg)("value")} = 'NAN'::FLOAT, false)`)]}nS.fnIsNan=Tde;var eh={};Object.defineProperty(eh,"__esModule",{value:!0}),eh.fnByteLength=eh.fnLength=void 0;const Xs=ge;function Rde(){return[(0,Xs.overload)((0,Xs.minScalar)("number"),[(0,Xs.param)("value",(0,Xs.anyExprType)("string"))],(0,Xs.sql)`LENGTH(${(0,Xs.arg)("value")})`)]}eh.fnLength=Rde;function Ode(){return[(0,Xs.overload)((0,Xs.minScalar)("number"),[(0,Xs.param)("value",(0,Xs.anyExprType)("string"))],(0,Xs.sql)`CEIL(BIT_LENGTH(${(0,Xs.arg)("value")}) / 8)`)]}eh.fnByteLength=Ode;var rS={};Object.defineProperty(rS,"__esModule",{value:!0}),rS.fnLog=void 0;const pf=ge;function Nde(){const t=(0,pf.makeParam)("value",(0,pf.anyExprType)("number")),e=(0,pf.makeParam)("base",(0,pf.anyExprType)("number"));return[(0,pf.overload)((0,pf.minScalar)("number"),[t.param,e.param],(0,pf.sql)`LOG(${e.arg}, ${t.arg})`)]}rS.fnLog=Nde;var iS={};Object.defineProperty(iS,"__esModule",{value:!0}),iS.fnRand=void 0;const DD=ge;function Dde(){return[(0,DD.overload)((0,DD.minScalar)("number"),[],(0,DD.sql)`UNIFORM(0::FLOAT, 1::FLOAT, RANDOM())`)]}iS.fnRand=Dde;var sS={};Object.defineProperty(sS,"__esModule",{value:!0}),sS.fnRegexpExtract=void 0;const gf=ge;function Fde(){const t=(0,gf.makeParam)("value",(0,gf.anyExprType)("string")),e=(0,gf.makeParam)("pattern",(0,gf.anyExprType)("regular expression"));return[(0,gf.overload)((0,gf.minScalar)("string"),[t.param,e.param],(0,gf.sql)`REGEXP_SUBSTR(${t.arg}, ${e.arg}, 1, 1, 'e')`)]}sS.fnRegexpExtract=Fde;var th={};Object.defineProperty(th,"__esModule",{value:!0}),th.fnEndsWith=th.fnStartsWith=void 0;const Wi=ge;function wde(){const t=(0,Wi.makeParam)("value",(0,Wi.anyExprType)("string")),e=(0,Wi.makeParam)("prefix",(0,Wi.anyExprType)("string"));return[(0,Wi.overload)((0,Wi.minScalar)("boolean"),[t.param,e.param],(0,Wi.sql)`COALESCE(STARTSWITH(${t.arg}, ${e.arg}), false)`)]}th.fnStartsWith=wde;function Lde(){const t=(0,Wi.makeParam)("value",(0,Wi.anyExprType)("string")),e=(0,Wi.makeParam)("suffix",(0,Wi.anyExprType)("string"));return[(0,Wi.overload)((0,Wi.minScalar)("boolean"),[t.param,e.param],(0,Wi.sql)`COALESCE(ENDSWITH(${t.arg}, ${e.arg}), false)`)]}th.fnEndsWith=Lde;var oS={};Object.defineProperty(oS,"__esModule",{value:!0}),oS.fnStrpos=void 0;const mf=ge;function Ide(){const t=(0,mf.makeParam)("test_string",(0,mf.anyExprType)("string")),e=(0,mf.makeParam)("search_string",(0,mf.anyExprType)("string"));return[(0,mf.overload)((0,mf.minScalar)("number"),[t.param,e.param],(0,mf.sql)`POSITION(${e.arg}, ${t.arg})`)]}oS.fnStrpos=Ide;var uS={};Object.defineProperty(uS,"__esModule",{value:!0}),uS.fnTrunc=void 0;const Au=ge;function $de(){const t=(0,Au.makeParam)("value",(0,Au.anyExprType)("number")),e=(0,Au.makeParam)("precision",(0,Au.anyExprType)("number"));return[(0,Au.overload)((0,Au.minScalar)("number"),[t.param],(0,Au.sql)`CASE WHEN ${t.arg} < 0 THEN CEIL(${t.arg}) ELSE FLOOR(${t.arg}) END`),(0,Au.overload)((0,Au.minScalar)("number"),[t.param,e.param],(0,Au.sql)`CASE WHEN ${t.arg} < 0 THEN CEIL(${t.arg} * POW(10, ${e.arg})) / POW(10, ${e.arg}) ELSE FLOOR(${t.arg} * POW(10, ${e.arg})) / POW(10, ${e.arg}) END`)]}uS.fnTrunc=$de;var nh={};Object.defineProperty(nh,"__esModule",{value:!0}),nh.fnStringAggDistinct=nh.fnStringAgg=void 0;const Sn=ge;function Bde(){const t=(0,Sn.makeParam)("value",(0,Sn.maxScalar)("string")),e=(0,Sn.makeParam)("separator",(0,Sn.literal)((0,Sn.maxScalar)("string"))),n={type:"aggregate_order_by",prefix:" WITHIN GROUP(",suffix:")"};return[(0,Sn.overload)((0,Sn.minAggregate)("string"),[t.param],(0,Sn.sql)`LISTAGG(${t.arg}, ',')${n}`,{supportsOrderBy:!0,supportsLimit:!1}),(0,Sn.overload)((0,Sn.minAggregate)("string"),[t.param,e.param],(0,Sn.sql)`LISTAGG(${t.arg}, ${e.arg})${n}`,{supportsOrderBy:!0,supportsLimit:!1})]}nh.fnStringAgg=Bde;function kde(){const t=(0,Sn.makeParam)("value",(0,Sn.maxScalar)("string")),e=(0,Sn.makeParam)("separator",(0,Sn.literal)((0,Sn.maxScalar)("string"))),n={type:"aggregate_order_by",prefix:" WITHIN GROUP(",suffix:")"};return[(0,Sn.overload)((0,Sn.minAggregate)("string"),[t.param],(0,Sn.sql)`LISTAGG(DISTINCT ${t.arg}, ',')${n}`,{supportsOrderBy:!0,supportsLimit:!1}),(0,Sn.overload)((0,Sn.minAggregate)("string"),[t.param,e.param],(0,Sn.sql)`LISTAGG(DISTINCT ${t.arg}, ${e.arg})${n}`,{supportsOrderBy:!0,supportsLimit:!1})]}nh.fnStringAggDistinct=kde,function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.SNOWFLAKE_FUNCTIONS=void 0;const e=Jc,n=ZA,r=eS,i=tS,s=nS,o=eh,u=rS,a=iS,l=sS,c=th,f=oS,x=uS,h=nh;t.SNOWFLAKE_FUNCTIONS=e.FUNCTIONS.clone(),t.SNOWFLAKE_FUNCTIONS.add("byte_length",o.fnByteLength),t.SNOWFLAKE_FUNCTIONS.add("chr",n.fnChr),t.SNOWFLAKE_FUNCTIONS.add("div",r.fnDiv),t.SNOWFLAKE_FUNCTIONS.add("is_inf",i.fnIsInf),t.SNOWFLAKE_FUNCTIONS.add("is_nan",s.fnIsNan),t.SNOWFLAKE_FUNCTIONS.add("length",o.fnLength),t.SNOWFLAKE_FUNCTIONS.add("log",u.fnLog),t.SNOWFLAKE_FUNCTIONS.add("rand",a.fnRand),t.SNOWFLAKE_FUNCTIONS.add("regexp_extract",l.fnRegexpExtract),t.SNOWFLAKE_FUNCTIONS.add("starts_with",c.fnStartsWith),t.SNOWFLAKE_FUNCTIONS.add("ends_with",c.fnEndsWith),t.SNOWFLAKE_FUNCTIONS.add("strpos",f.fnStrpos),t.SNOWFLAKE_FUNCTIONS.add("trunc",x.fnTrunc),t.SNOWFLAKE_FUNCTIONS.add("string_agg",h.fnStringAgg),t.SNOWFLAKE_FUNCTIONS.add("string_agg_distinct",h.fnStringAggDistinct),t.SNOWFLAKE_FUNCTIONS.seal()}(pM),function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.SNOWFLAKE_FUNCTIONS=void 0;var e=pM;Object.defineProperty(t,"SNOWFLAKE_FUNCTIONS",{enumerable:!0,get:function(){return e.SNOWFLAKE_FUNCTIONS}})}(hM),Object.defineProperty(JA,"__esModule",{value:!0}),JA.SnowflakeDialect=void 0;const Pde=Wt,or=ne,gM=hM,ng=Kc,Mde={day_of_week:"dayofweek",day_of_year:"dayofyear"},jde={varchar:{type:"string"},text:{type:"string"},string:{type:"string"},char:{type:"string"},character:{type:"string"},nvarchar:{type:"string"},nvarchar2:{type:"string"},"char varying":{type:"string"},"nchar varying":{type:"string"},number:{type:"number",numberType:"integer"},numeric:{type:"number",numberType:"integer"},decimal:{type:"number",numberType:"integer"},dec:{type:"number",numberType:"integer"},integer:{type:"number",numberType:"integer"},int:{type:"number",numberType:"integer"},bigint:{type:"number",numberType:"integer"},smallint:{type:"number",numberType:"integer"},tinyint:{type:"number",numberType:"integer"},byteint:{type:"number",numberType:"integer"},float:{type:"number",numberType:"float"},float4:{type:"number",numberType:"float"},float8:{type:"number",numberType:"float"},double:{type:"number",numberType:"float"},"double precision":{type:"number",numberType:"float"},real:{type:"number",numberType:"float"},boolean:{type:"boolean"},date:{type:"date"},timestamp:{type:"timestamp"},timestampntz:{type:"timestamp"},timestamp_ntz:{type:"timestamp"},"timestamp without time zone":{type:"timestamp"},timestamptz:{type:"timestamp"},timestamp_tz:{type:"timestamp"},"timestamp with time zone":{type:"timestamp"}};class Ude extends ng.Dialect{constructor(){super(...arguments),this.name="snowflake",this.defaultNumberType="NUMBER",this.defaultDecimalType="NUMBER",this.udfPrefix="__udf",this.hasFinalStage=!1,this.divisionIsInteger=!1,this.supportsSumDistinctFunction=!1,this.supportsSafeCast=!0,this.supportsNesting=!0,this.defaultSampling={rows:5e4},this.globalFunctions=gM.SNOWFLAKE_FUNCTIONS,this.unnestWithNumbers=!1,this.supportUnnestArrayAgg=!1,this.supportsAggDistinct=!1,this.supportsCTEinCoorelatedSubQueries=!1,this.dontUnionIndex=!1,this.supportsQualify=!1,this.supportsPipelinesInViews=!1}quoteTablePath(e){return e}sqlGroupSetTable(e){return`CROSS JOIN (SELECT index as group_set FROM TABLE(FLATTEN(ARRAY_GENERATE_RANGE(0, ${e+1}))))`}sqlAnyValue(e,n){return`(ARRAY_AGG(CASE WHEN group_set=${e} THEN ${n} END) WITHIN GROUP (ORDER BY ${n} ASC NULLS LAST))[0]`}mapFields(e){return e.map(n=>`
154
154
  ${n.sqlExpression} as ${n.sqlOutputName}`).join(", ")}mapFieldsForObjectConstruct(e){return e.map(n=>`'${n.rawName}', (${n.sqlExpression})`).join(", ")}sqlAggregateTurtle(e,n,r,i){const s=this.mapFieldsForObjectConstruct(n),o=r?` WITHIN GROUP (${r})`:"",u=`ARRAY_AGG(CASE WHEN group_set=${e} THEN OBJECT_CONSTRUCT_KEEP_NULL(${s}) END)${o}`;return i===void 0?`COALESCE(${u}, [])`:`COALESCE(ARRAY_SLICE(${u}, 0, ${i}), [])`}sqlAnyValueTurtle(e,n){const r=this.mapFieldsForObjectConstruct(n);return`(ARRAY_AGG(CASE WHEN group_set=${e} THEN OBJECT_CONSTRUCT_KEEP_NULL(${r}) END) WITHIN GROUP (ORDER BY 1 ASC NULLS LAST))[0]`}sqlAnyValueLastTurtle(e,n,r){return`(ARRAY_AGG(CASE WHEN group_set=${n} THEN ${e} END) WITHIN GROUP (ORDER BY ${e} ASC NULLS LAST))[0] AS ${r}`}sqlCoaleseMeasuresInline(e,n){const r=this.mapFieldsForObjectConstruct(n),i=n.map(s=>`'${s.sqlOutputName}', NULL`).join(", ");return`COALESCE(ARRAY_AGG(CASE WHEN group_set=${e} THEN OBJECT_CONSTRUCT_KEEP_NULL(${r}) END)[0], OBJECT_CONSTRUCT_KEEP_NULL(${i}))`}sqlUnnestAlias(e,n,r,i,s,o){return s?`,LATERAL FLATTEN(INPUT => ${e}) AS ${n}_1, LATERAL (SELECT ${n}_1.INDEX, object_construct('value', ${n}_1.value) as value ) as ${n}`:`LEFT JOIN LATERAL FLATTEN(INPUT => ifnull(${e},[1])) AS ${n}`}sqlSumDistinctHashedKey(e){e=`${e}::STRING`;const n=`to_number(substr(md5_hex(${e}), 1, 15), repeat('X', 15)) * 4294967296`,r=`to_number(substr(md5_hex(${e}), 16, 8), repeat('X', 8))`;return`(${n} + ${r}) * 0.000000001`}sqlGenerateUUID(){return"UUID_STRING()"}sqlFieldReference(e,n,r,i,s){if(n==="__row_id")return`${e}.INDEX::varchar`;if(i){let o=r;return r==="string"?o="varchar":r==="struct"&&(o="variant"),`${e}.value:"${n}"::${o}`}else return`${e}."${n}"`}sqlUnnestPipelineHead(e,n){let r=n;return e&&(r=`[${r}]`),`TABLE(FLATTEN(input =>${r}))`}sqlCreateFunction(e,n){throw new Error("not implemented yet")}sqlCreateFunctionCombineLastStage(e){throw new Error("not implemented yet")}sqlSelectAliasAsStruct(e){return`OBJECT_CONSTRUCT_KEEP_NULL(${e}.*)`}sqlMaybeQuoteIdentifier(e){return`"${e}"`}sqlCreateTableAsSelect(e,n){return`
155
155
  CREATE TEMP TABLE IF NOT EXISTS \`${e}\`
156
156
  AS (
@@ -159,7 +159,8 @@ ${(0,Pde.indent)(n)}
159
159
  `}sqlTrunc(e,n,r){const i=(0,ng.qtz)(e);let s=n.value;return i&&n.valueType==="timestamp"&&(s=(0,or.mkExpr)`CONVERT_TIMEZONE('${i}', ${s})`),(0,or.mkExpr)`DATE_TRUNC('${r}', ${s})`}sqlExtract(e,n,r){const i=Mde[r]||r;let s=n.value;const o=(0,ng.qtz)(e);return o&&n.valueType==="timestamp"&&(s=(0,or.mkExpr)`CONVERT_TIMEZONE('${o}', ${s})`),(0,or.mkExpr)`EXTRACT(${i} FROM ${s})`}sqlAlterTime(e,n,r,i){const s=(0,or.mkExpr)`INTERVAL '${r} ${i}'`;return(0,or.mkExpr)`((${n.value})${e}${s})`}atTz(e,n){return n!==void 0?(0,or.mkExpr)`(
160
160
  TO_CHAR(${e}::TIMESTAMP_NTZ, 'YYYY-MM-DD HH24:MI:SS.FF9') ||
161
161
  TO_CHAR(CONVERT_TIMEZONE('${n}', '1970-01-01 00:00:00'), 'TZHTZM')
162
- )::TIMESTAMP_TZ`:(0,or.mkExpr)`${e}::TIMESTAMP_NTZ`}sqlNow(){return(0,or.mkExpr)`CURRENT_TIMESTAMP()`}sqlCast(e,n){if(n.srcType===n.dstType)return n.expr;if(n.safe)throw new Error("Snowflake dialect doesn't support safe cast for a few types");const r=(0,ng.qtz)(e);if(n.dstType==="date"&&n.srcType==="timestamp"){let s=n.expr;return r&&(s=(0,or.mkExpr)`CONVERT_TIMEZONE('${r}', ${s})`),(0,or.mkExpr)`TO_DATE(${s})`}else if(n.dstType==="timestamp"&&n.srcType==="date"){const s=(0,or.mkExpr)`TO_TIMESTAMP(${n.expr})`;return this.atTz(s,r)}const i=typeof n.dstType=="string"?this.malloyTypeToSQLType({type:n.dstType}):n.dstType.raw;return(0,or.mkExpr)`CAST(${n.expr} AS ${i})`}sqlLiteralTime(e,n,r,i){const s=(0,ng.qtz)(e);let o=`'${n}'::TIMESTAMP_NTZ`;const u=i??s;if(u){const a=`TO_CHAR(CONVERT_TIMEZONE('${u}', '1970-01-01 00:00:00'), 'TZHTZM')`;o=`${`TO_CHAR(${o}, 'YYYY-MM-DD HH24:MI:SS.FF9')`} || ${a}`,o=`(${o})::TIMESTAMP_TZ`}switch(r){case"date":return`TO_DATE(${o})`;case"timestamp":return o}}sqlMeasureTime(e,n,r){let i="nanoseconds";return(e.valueType==="date"||n.valueType==="date")&&(i="seconds"),(0,or.mkExpr)`TIMESTAMPDIFF(
162
+ )::TIMESTAMP_TZ`:(0,or.mkExpr)`${e}::TIMESTAMP_NTZ`}sqlNow(){return(0,or.mkExpr)`CURRENT_TIMESTAMP()`}sqlCast(e,n){if(n.srcType===n.dstType)return n.expr;if(n.safe&&typeof n.srcType!="string")throw new Error(`Snowflake dialect doesn't support safe cast for a few types:
163
+ refer to: https://docs.snowflake.com/en/sql-reference/functions/try_cast`);const r=(0,ng.qtz)(e);if(n.dstType==="date"&&n.srcType==="timestamp"){let o=n.expr;return r&&(o=(0,or.mkExpr)`CONVERT_TIMEZONE('${r}', ${o})`),(0,or.mkExpr)`TO_DATE(${o})`}else if(n.dstType==="timestamp"&&n.srcType==="date"){const o=(0,or.mkExpr)`TO_TIMESTAMP(${n.expr})`;return this.atTz(o,r)}const i=typeof n.dstType=="string"?this.malloyTypeToSQLType({type:n.dstType}):n.dstType.raw,s=n.safe?"TRY_CAST":"CAST";return(0,or.mkExpr)`${s}(${n.expr} AS ${i})`}sqlLiteralTime(e,n,r,i){const s=(0,ng.qtz)(e);let o=`'${n}'::TIMESTAMP_NTZ`;const u=i??s;if(u){const a=`TO_CHAR(CONVERT_TIMEZONE('${u}', '1970-01-01 00:00:00'), 'TZHTZM')`;o=`${`TO_CHAR(${o}, 'YYYY-MM-DD HH24:MI:SS.FF9')`} || ${a}`,o=`(${o})::TIMESTAMP_TZ`}switch(r){case"date":return`TO_DATE(${o})`;case"timestamp":return o}}sqlMeasureTime(e,n,r){let i="nanoseconds";return(e.valueType==="date"||n.valueType==="date")&&(i="seconds"),(0,or.mkExpr)`TIMESTAMPDIFF(
163
164
  '${r}',
164
165
  '1970-01-01 00:00:00'::TIMESTAMP_NTZ,
165
166
  TIMESTAMPADD(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@malloydata/render",
3
- "version": "0.0.143-dev240417161322",
3
+ "version": "0.0.143-dev240418162623",
4
4
  "license": "MIT",
5
5
  "main": "dist/module/index.umd.js",
6
6
  "types": "dist/index.d.ts",
@@ -33,7 +33,7 @@
33
33
  "build-types": "tsc --build --declaration --emitDeclarationOnly"
34
34
  },
35
35
  "dependencies": {
36
- "@malloydata/malloy": "^0.0.143-dev240417161322",
36
+ "@malloydata/malloy": "^0.0.143-dev240418162623",
37
37
  "@types/luxon": "^2.4.0",
38
38
  "component-register": "^0.8.3",
39
39
  "lodash": "^4.17.20",