@malloydata/render 0.0.226-dev250113222119 → 0.0.226-dev250113232339
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.
- package/dist/module/index.mjs +13400 -13645
- package/dist/module/index.umd.js +250 -250
- package/dist/register/register.mjs +27 -30
- package/dist/register/register.umd.js +2 -2
- package/dist/webcomponent/malloy-render.mjs +27 -30
- package/dist/webcomponent/malloy-render.umd.js +2 -2
- package/package.json +2 -2
|
@@ -3645,8 +3645,10 @@ ${" ".repeat(this.parseCursor)}^`;
|
|
|
3645
3645
|
if (o) {
|
|
3646
3646
|
r = !1;
|
|
3647
3647
|
let u = o[0];
|
|
3648
|
+
const a = this.parseCursor;
|
|
3648
3649
|
if (this.parseCursor += u.length, i !== "space") {
|
|
3649
3650
|
i[0] === "q" && (u = u.slice(1, -1)), yield {
|
|
3651
|
+
cursor: a,
|
|
3650
3652
|
type: i === "char" ? u : i,
|
|
3651
3653
|
text: u
|
|
3652
3654
|
};
|
|
@@ -3655,7 +3657,7 @@ ${" ".repeat(this.parseCursor)}^`;
|
|
|
3655
3657
|
}
|
|
3656
3658
|
}
|
|
3657
3659
|
if (r) {
|
|
3658
|
-
yield { type: "unexpected token", text: e };
|
|
3660
|
+
yield { cursor: this.parseCursor, type: "unexpected token", text: e };
|
|
3659
3661
|
return;
|
|
3660
3662
|
}
|
|
3661
3663
|
}
|
|
@@ -3913,50 +3915,45 @@ class fxe extends ZG.TinyParser {
|
|
|
3913
3915
|
return e.text.toUpperCase();
|
|
3914
3916
|
}
|
|
3915
3917
|
typeDef() {
|
|
3916
|
-
const e = this.
|
|
3917
|
-
let
|
|
3918
|
-
if (
|
|
3919
|
-
this.next(),
|
|
3920
|
-
else if (
|
|
3921
|
-
this.peek().text === "WITH" && this.nextText("WITH", "TIME", "ZONE"),
|
|
3922
|
-
else if (ZO[
|
|
3923
|
-
|
|
3924
|
-
else if (
|
|
3925
|
-
for (this.next("("),
|
|
3926
|
-
const
|
|
3927
|
-
if (
|
|
3928
|
-
const
|
|
3929
|
-
|
|
3918
|
+
const e = this.next("id"), n = this.sqlID(e);
|
|
3919
|
+
let r;
|
|
3920
|
+
if (n === "VARCHAR" && this.peek().type === "size" && this.next(), (n === "DECIMAL" || n === "NUMERIC") && this.peek().type === "precision")
|
|
3921
|
+
this.next(), r = { type: "number", numberType: "float" };
|
|
3922
|
+
else if (n === "TIMESTAMP")
|
|
3923
|
+
this.peek().text === "WITH" && this.nextText("WITH", "TIME", "ZONE"), r = { type: "timestamp" };
|
|
3924
|
+
else if (ZO[n])
|
|
3925
|
+
r = ZO[n];
|
|
3926
|
+
else if (n === "STRUCT")
|
|
3927
|
+
for (this.next("("), r = { type: "record", fields: [] }; ; ) {
|
|
3928
|
+
const i = this.next();
|
|
3929
|
+
if (i.type === "qsingle" || i.type === "qdouble" || i.type === "id") {
|
|
3930
|
+
const s = this.typeDef();
|
|
3931
|
+
r.fields.push((0, yd.mkFieldDef)(s, this.unquoteName(i)));
|
|
3930
3932
|
} else {
|
|
3931
|
-
if (
|
|
3933
|
+
if (i.type !== ")")
|
|
3932
3934
|
throw this.parseError("Expected identifier or ) to end STRUCT");
|
|
3933
3935
|
break;
|
|
3934
3936
|
}
|
|
3935
3937
|
this.peek().type === "," && this.next();
|
|
3936
3938
|
}
|
|
3937
|
-
else if (
|
|
3938
|
-
|
|
3939
|
-
|
|
3940
|
-
if (s.type === "arrayOf" || s.type === "eof")
|
|
3941
|
-
break;
|
|
3942
|
-
this.next();
|
|
3943
|
-
}
|
|
3944
|
-
i = {
|
|
3939
|
+
else if (e.type === "id") {
|
|
3940
|
+
let i = e.cursor + e.text.length;
|
|
3941
|
+
this.peek().type === "precision" && this.next(), this.peek().type === "eof" && (i = this.input.length), r = {
|
|
3945
3942
|
type: "sql native",
|
|
3946
|
-
rawType: this.input.slice(e,
|
|
3943
|
+
rawType: this.input.slice(e.cursor, i)
|
|
3947
3944
|
};
|
|
3948
3945
|
} else
|
|
3949
3946
|
throw this.parseError("Could not understand type");
|
|
3950
3947
|
for (; this.peek().type === "arrayOf"; )
|
|
3951
|
-
this.next(),
|
|
3948
|
+
this.next(), r.type === "record" ? r = {
|
|
3952
3949
|
type: "array",
|
|
3953
3950
|
elementTypeDef: { type: "record_element" },
|
|
3954
|
-
fields:
|
|
3955
|
-
} :
|
|
3951
|
+
fields: r.fields
|
|
3952
|
+
} : r = {
|
|
3956
3953
|
type: "array",
|
|
3957
|
-
elementTypeDef:
|
|
3954
|
+
elementTypeDef: r
|
|
3958
3955
|
};
|
|
3959
|
-
return
|
|
3956
|
+
return r;
|
|
3960
3957
|
}
|
|
3961
3958
|
}
|
|
3962
3959
|
(function(t) {
|
|
@@ -37,7 +37,7 @@ $$ LANGUAGE SQL;
|
|
|
37
37
|
) a
|
|
38
38
|
)`}sqlSampleTable(e,n){if(n!==void 0){if((0,m6.isSamplingEnable)(n)&&n.enable&&(n=this.defaultSampling),(0,m6.isSamplingRows)(n))return`(SELECT * FROM ${e} TABLESAMPLE SYSTEM_ROWS(${n.rows}))`;if((0,m6.isSamplingPercent)(n))return`(SELECT * FROM ${e} TABLESAMPLE SYSTEM (${n.percent}))`}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,"''")+"'"}getDialectFunctionOverrides(){return(0,$k.expandOverrideMap)(Gfe.POSTGRES_MALLOY_STANDARD_OVERLOADS)}getDialectFunctions(){return(0,$k.expandBlueprintMap)(Qfe.POSTGRES_DIALECT_FUNCTIONS)}malloyTypeToSQLType(e){return e.type==="number"?e.numberType==="integer"?"integer":"double precision":e.type==="string"?"varchar":e.type}sqlTypeToMalloyType(e){var n,r,i;const s=(r=(n=e.match(/^([\w\s]+)/))===null||n===void 0?void 0:n.at(0))!==null&&r!==void 0?r:e;return(i=Vfe[s.trim().toLowerCase()])!==null&&i!==void 0?i:{type:"sql native",rawType:e}}castToString(e){return`CAST(${e} as VARCHAR)`}concat(...e){return e.join(" || ")}validateTypeName(e){return e.match(/^[A-Za-z\s(),[\]0-9]*$/)!==null}sqlLiteralRecord(e){const n=[];for(const[r,i]of Object.entries(e.kids))n.push(`'${r}',${i.sql}`);return`JSONB_BUILD_OBJECT(${n.join(", ")})`}sqlLiteralArray(e){return"JSONB_BUILD_ARRAY("+e.kids.values.map(r=>r.sql).join(",")+")"}}hE.PostgresDialect=Yfe,function(t){var e=T&&T.__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=T&&T.__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(hE,t)}(p6);var y6={},yE={},EE={};Object.defineProperty(EE,"__esModule",{value:!0}),EE.DUCKDB_DIALECT_FUNCTIONS=void 0;const Pk=it,Kfe={takes:{value:{array:{generic:"T"}},index:"number"},generic:{T:["any"]},returns:{generic:"T"},impl:{sql:"list_extract(${value}, ${index})"}},Jfe={takes:{date_value:["date","timestamp"]},returns:"string",impl:{function:"DAYNAME"}},Xfe={takes:{part:"string",interval:{sql_native:"interval"}},returns:"number",impl:{function:"DATE_PART"}},Zfe={takes:{seconds:"number"},returns:{sql_native:"interval"},impl:{function:"TO_SECONDS"}},exe={takes:{epoch_seconds:"number"},returns:"timestamp",impl:{function:"TO_TIMESTAMP"}},txe={takes:{value:{dimension:"any"}},returns:{measure:"number"},impl:{function:"APPROX_COUNT_DISTINCT"},isSymmetric:!0},E6={default_separator:{takes:{value:{dimension:"string"}},returns:{measure:"string"},supportsOrderBy:!0,impl:{sql:"STRING_AGG(${value}${order_by:})",defaultOrderByArgIndex:0}},with_separator:{takes:{value:{dimension:"string"},separator:{literal:"string"}},returns:{measure:"string"},supportsOrderBy:!0,impl:{sql:"STRING_AGG(${value}, ${separator}${order_by:})",defaultOrderByArgIndex:0}}},nxe={default_separator:{...E6.default_separator,isSymmetric:!0,impl:{sql:"STRING_AGG(DISTINCT ${value}${order_by:})",defaultOrderByArgIndex:0}},with_separator:{...E6.with_separator,isSymmetric:!0,impl:{sql:"STRING_AGG(DISTINCT ${value}, ${separator}${order_by:})",defaultOrderByArgIndex:0}}};EE.DUCKDB_DIALECT_FUNCTIONS={list_extract:Kfe,count_approx:txe,dayname:Jfe,to_timestamp:exe,string_agg:E6,string_agg_distinct:nxe,to_seconds:Zfe,date_part:Xfe,...(0,Pk.def)("repeat",{str:"string",n:"number"},"string"),...(0,Pk.def)("reverse",{str:"string"},"string")};var AE={};Object.defineProperty(AE,"__esModule",{value:!0}),AE.DUCKDB_MALLOY_STANDARD_OVERLOADS=void 0;function Mk(t){return"CASE WHEN LEN(LIST_FILTER([${...values}], x -> x is null)) > 0 THEN NULL ELSE "+t+"(${...values}) END"}AE.DUCKDB_MALLOY_STANDARD_OVERLOADS={byte_length:{sql:"(BIT_LENGTH(${value}) / 8)"},div:{sql:"CASE WHEN ${dividend} / ${divisor} < 0 THEN CEIL(${dividend} / ${divisor}) ELSE FLOOR(${dividend} / ${divisor}) END"},ends_with:{sql:"COALESCE(SUFFIX(${value}, ${suffix}), false)"},greatest:{sql:Mk("GREATEST")},is_inf:{sql:"COALESCE(ISINF(${value}), false)"},is_nan:{sql:"COALESCE(ISNAN(${value}), false)"},log:{sql:"(LN(${value}) / LN(${base}))"},least:{sql:Mk("LEAST")},rand:{function:"RANDOM"},replace:{regular_expression:{sql:"REGEXP_REPLACE(${value}, ${pattern}, ${replacement}, 'g')"}},trunc:{to_integer:{sql:"CASE WHEN ${value} < 0 THEN CEIL(${value}) ELSE FLOOR(${value}) END"},to_precision:{sql:"CASE WHEN ${value} < 0 THEN CEIL(${value} * POW(10, ${precision})) / POW(10, ${precision}) ELSE FLOOR(${value} * POW(10, ${precision})) / POW(10, ${precision}) END"}},unicode:{sql:"CASE WHEN ${value} = '' THEN 0 ELSE UNICODE(${value}) END"}};var Bc={};Object.defineProperty(Bc,"__esModule",{value:!0}),Bc.TinyParser=Bc.TinyParseError=void 0;class jk extends Error{}Bc.TinyParseError=jk;class rxe{constructor(e,n){this.input=e,this.parseCursor=0,this.tokenMap=n??{space:/^\s+/,char:/^[,:[\]()-]/,id:/^\w+/,qstr:/^"\w+"/},this.tokens=this.tokenize(e)}parseError(e){const n=`INTERNAL ERROR parsing schema: ${e}
|
|
39
39
|
${this.input}
|
|
40
|
-
${" ".repeat(this.parseCursor)}^`;return new jk(n)}peek(){if(this.lookAhead)return this.lookAhead;{const{value:e}=this.tokens.next(),n=e??{type:"eof",text:""};return this.lookAhead=n,n}}getNext(){var e;const n=(e=this.lookAhead)!==null&&e!==void 0?e:this.peek();return this.lookAhead=void 0,n}next(...e){if(e.length===0)return this.getNext();let n,r=e[0];for(const i of e)if(n=this.getNext(),r=i,n.type!==i){n=void 0;break}if(n)return n;throw this.parseError(`Expected token type '${r}'`)}nextText(...e){if(e.length===0)return this.getNext();let n,r=e[0];for(const i of e)if(n=this.getNext(),r=i,n.text!==i){n=void 0;break}if(n)return n;throw this.parseError(`Expected '${r}'`)}skipTo(e){for(;;){const n=this.next();if(n.type==="eof")throw this.parseError(`Expected token '${e}`);if(n.type===e)return}}dump(){const e=this.parseCursor,n=[...this.tokenize(this.input)];return this.parseCursor=e,n}*tokenize(e){const n=this.tokenMap;for(;this.parseCursor<e.length;){let r=!0;for(const i in n){const o=e.slice(this.parseCursor).match(n[i]);if(o){r=!1;let u=o[0];if(this.parseCursor+=u.length,i!=="space"){i[0]==="q"&&(u=u.slice(1,-1)),yield{type:i==="char"?u:i,text:u};break}}}if(r){yield{type:"unexpected token",text:e};return}}}}Bc.TinyParser=rxe,Object.defineProperty(yE,"__esModule",{value:!0}),yE.DuckDBDialect=void 0;const nd=Ke,ixe=Nt,Uk=Ul,sxe=Ml,oxe=pE,uxe=EE,axe=AE,qk=Bc,Hk="-- hack: split on this",A6={BIGINT:{type:"number",numberType:"integer"},INTEGER:{type:"number",numberType:"integer"},TINYINT:{type:"number",numberType:"integer"},SMALLINT:{type:"number",numberType:"integer"},UBIGINT:{type:"number",numberType:"integer"},UINTEGER:{type:"number",numberType:"integer"},UTINYINT:{type:"number",numberType:"integer"},USMALLINT:{type:"number",numberType:"integer"},HUGEINT:{type:"number",numberType:"integer"},DOUBLE:{type:"number",numberType:"float"},FLOAT:{type:"number",numberType:"float"},VARCHAR:{type:"string"},DATE:{type:"date"},TIMESTAMP:{type:"timestamp"},TIME:{type:"string"},DECIMAL:{type:"number",numberType:"float"},BOOLEAN:{type:"boolean"}};class lxe extends oxe.PostgresBase{constructor(){super(...arguments),this.name="duckdb",this.experimental=!1,this.defaultNumberType="DOUBLE",this.defaultDecimalType="NUMERIC",this.hasFinalStage=!1,this.divisionIsInteger=!0,this.supportsSumDistinctFunction=!0,this.unnestWithNumbers=!1,this.defaultSampling={rows:5e4},this.supportUnnestArrayAgg=!0,this.supportsAggDistinct=!0,this.supportsCTEinCoorelatedSubQueries=!0,this.dontUnionIndex=!0,this.supportsQualify=!0,this.supportsSafeCast=!0,this.supportsNesting=!0,this.supportsCountApprox=!0}get udfPrefix(){return`__udf${Math.floor(Math.random()*1e5)}`}quoteTablePath(e){return e.match(/[/*:]/)?`'${e}'`:e}sqlGroupSetTable(e){return`CROSS JOIN (SELECT UNNEST(GENERATE_SERIES(0,${e},1)) as group_set ) as group_set`}sqlAnyValue(e,n){return`FIRST(${n}) FILTER (WHERE ${n} IS NOT NULL)`}sqlLiteralNumber(e){return e.includes(".")?`${e}::${this.defaultNumberType}`:e}mapFields(e){return e.join(", ")}sqlAggregateTurtle(e,n,r,i){let s="";return i!==void 0&&(s+=`[1:${i}]`),`COALESCE(LIST({${n.map(u=>`
|
|
40
|
+
${" ".repeat(this.parseCursor)}^`;return new jk(n)}peek(){if(this.lookAhead)return this.lookAhead;{const{value:e}=this.tokens.next(),n=e??{type:"eof",text:""};return this.lookAhead=n,n}}getNext(){var e;const n=(e=this.lookAhead)!==null&&e!==void 0?e:this.peek();return this.lookAhead=void 0,n}next(...e){if(e.length===0)return this.getNext();let n,r=e[0];for(const i of e)if(n=this.getNext(),r=i,n.type!==i){n=void 0;break}if(n)return n;throw this.parseError(`Expected token type '${r}'`)}nextText(...e){if(e.length===0)return this.getNext();let n,r=e[0];for(const i of e)if(n=this.getNext(),r=i,n.text!==i){n=void 0;break}if(n)return n;throw this.parseError(`Expected '${r}'`)}skipTo(e){for(;;){const n=this.next();if(n.type==="eof")throw this.parseError(`Expected token '${e}`);if(n.type===e)return}}dump(){const e=this.parseCursor,n=[...this.tokenize(this.input)];return this.parseCursor=e,n}*tokenize(e){const n=this.tokenMap;for(;this.parseCursor<e.length;){let r=!0;for(const i in n){const o=e.slice(this.parseCursor).match(n[i]);if(o){r=!1;let u=o[0];const a=this.parseCursor;if(this.parseCursor+=u.length,i!=="space"){i[0]==="q"&&(u=u.slice(1,-1)),yield{cursor:a,type:i==="char"?u:i,text:u};break}}}if(r){yield{cursor:this.parseCursor,type:"unexpected token",text:e};return}}}}Bc.TinyParser=rxe,Object.defineProperty(yE,"__esModule",{value:!0}),yE.DuckDBDialect=void 0;const nd=Ke,ixe=Nt,Uk=Ul,sxe=Ml,oxe=pE,uxe=EE,axe=AE,qk=Bc,Hk="-- hack: split on this",A6={BIGINT:{type:"number",numberType:"integer"},INTEGER:{type:"number",numberType:"integer"},TINYINT:{type:"number",numberType:"integer"},SMALLINT:{type:"number",numberType:"integer"},UBIGINT:{type:"number",numberType:"integer"},UINTEGER:{type:"number",numberType:"integer"},UTINYINT:{type:"number",numberType:"integer"},USMALLINT:{type:"number",numberType:"integer"},HUGEINT:{type:"number",numberType:"integer"},DOUBLE:{type:"number",numberType:"float"},FLOAT:{type:"number",numberType:"float"},VARCHAR:{type:"string"},DATE:{type:"date"},TIMESTAMP:{type:"timestamp"},TIME:{type:"string"},DECIMAL:{type:"number",numberType:"float"},BOOLEAN:{type:"boolean"}};class lxe extends oxe.PostgresBase{constructor(){super(...arguments),this.name="duckdb",this.experimental=!1,this.defaultNumberType="DOUBLE",this.defaultDecimalType="NUMERIC",this.hasFinalStage=!1,this.divisionIsInteger=!0,this.supportsSumDistinctFunction=!0,this.unnestWithNumbers=!1,this.defaultSampling={rows:5e4},this.supportUnnestArrayAgg=!0,this.supportsAggDistinct=!0,this.supportsCTEinCoorelatedSubQueries=!0,this.dontUnionIndex=!0,this.supportsQualify=!0,this.supportsSafeCast=!0,this.supportsNesting=!0,this.supportsCountApprox=!0}get udfPrefix(){return`__udf${Math.floor(Math.random()*1e5)}`}quoteTablePath(e){return e.match(/[/*:]/)?`'${e}'`:e}sqlGroupSetTable(e){return`CROSS JOIN (SELECT UNNEST(GENERATE_SERIES(0,${e},1)) as group_set ) as group_set`}sqlAnyValue(e,n){return`FIRST(${n}) FILTER (WHERE ${n} IS NOT NULL)`}sqlLiteralNumber(e){return e.includes(".")?`${e}::${this.defaultNumberType}`:e}mapFields(e){return e.join(", ")}sqlAggregateTurtle(e,n,r,i){let s="";return i!==void 0&&(s+=`[1:${i}]`),`COALESCE(LIST({${n.map(u=>`
|
|
41
41
|
${u.sqlOutputName}: ${u.sqlExpression}`).join(", ")}} ${r}) FILTER (WHERE group_set=${e})${s},[])`}sqlAnyValueTurtle(e,n){const r=n.map(i=>`${i.sqlExpression} as ${i.sqlOutputName}`).join(", ");return`ANY_VALUE(CASE WHEN group_set=${e} THEN STRUCT_PACK(${r}))`}sqlAnyValueLastTurtle(e,n,r){return`MAX(CASE WHEN group_set=${n} THEN ${e} END) as ${r}`}sqlCoaleseMeasuresInline(e,n){const r=n.map(s=>`${s.sqlOutputName}: ${s.sqlExpression} `).join(", "),i=n.map(s=>`${s.sqlOutputName}: NULL`).join(", ");return`COALESCE(FIRST({${r}}) FILTER(WHERE group_set=${e}), {${i}})`}sqlUnnestAlias(e,n,r,i,s,o){return this.unnestWithNumbers?`LEFT JOIN (select UNNEST(generate_series(1,
|
|
42
42
|
${o?"100000":`array_length(${e})`},
|
|
43
43
|
1)) as __row_id) as ${n} ON ${n}.__row_id <= array_length(${e})`:i?`LEFT JOIN LATERAL (SELECT UNNEST(GENERATE_SERIES(1, length(${e}),1)) as __row_id, UNNEST(${e}), 1 as ignoreme) as ${n}_outer(__row_id, ${n},ignoreme) ON ${n}_outer.ignoreme=1`:`LEFT JOIN LATERAL (SELECT UNNEST(${e}), 1 as ignoreme) as ${n}_outer(${n},ignoreme) ON ${n}_outer.ignoreme=1`}sqlSumDistinctHashedKey(e){return"uses sumDistinctFunction, should not be called"}sqlGenerateUUID(){return"GEN_RANDOM_UUID()"}sqlDateToString(e){return`(${e})::date::varchar`}sqlFieldReference(e,n,r,i){return!this.unnestWithNumbers&&r==="__row_id"?`${e}_outer.__row_id`:n==="array[scalar]"?e:`${e}.${this.sqlMaybeQuoteIdentifier(r)}`}sqlUnnestPipelineHead(e,n){let r=n;return e&&(r=`[${r}]`),`(SELECT UNNEST(${r}) as base)`}sqlCreateFunction(e,n){return`DROP MACRO IF EXISTS ${e};
|
|
@@ -57,7 +57,7 @@ ${Hk}
|
|
|
57
57
|
FROM (
|
|
58
58
|
SELECT UNNEST(list(distinct {key:${e}, ${n.map((i,s)=>`val${s}: ${i}`).join(",")}})) a
|
|
59
59
|
)
|
|
60
|
-
)`}sqlSampleTable(e,n){if(n!==void 0){if((0,nd.isSamplingEnable)(n)&&n.enable&&(n=this.defaultSampling),(0,nd.isSamplingRows)(n))return`(SELECT * FROM ${e} USING SAMPLE ${n.rows})`;if((0,nd.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,"''")+"'"}getDialectFunctionOverrides(){return(0,Uk.expandOverrideMap)(axe.DUCKDB_MALLOY_STANDARD_OVERLOADS)}getDialectFunctions(){return(0,Uk.expandBlueprintMap)(uxe.DUCKDB_DIALECT_FUNCTIONS)}malloyTypeToSQLType(e){return e.type==="number"?e.numberType==="integer"?"integer":"double precision":e.type==="string"?"varchar":e.type}parseDuckDBType(e){const n=new cxe(e);try{return n.typeDef()}catch(r){if(r instanceof qk.TinyParseError)return{type:"sql native",rawType:e};throw r}}sqlTypeToMalloyType(e){var n,r,i;const s=e.replace(/^DECIMAL\(\d+,\d+\)/g,"DECIMAL"),o=(r=(n=s.match(/^(\w+)/))===null||n===void 0?void 0:n.at(0))!==null&&r!==void 0?r:s;return(i=A6[o.toUpperCase()])!==null&&i!==void 0?i:{type:"sql native",rawType:e.toLowerCase()}}castToString(e){return`CAST(${e} as VARCHAR)`}concat(...e){return e.join(" || ")}validateTypeName(e){return e.match(/^[A-Za-z\s(),[\]0-9]*$/)!==null}sqlAlterTimeExpr(e){let n=e.units,r=e.kids.delta.sql;n==="quarter"?(n="month",r=`${r}*3`):n==="week"&&(n="day",r=`${r}*7`);const i=`INTERVAL (${r}) ${n}`;return`${e.kids.base.sql} ${e.op} ${i}`}sqlRegexpMatch(e){return`REGEXP_MATCHES(${e.kids.expr.sql},${e.kids.regex.sql})`}sqlMeasureTimeExpr(e){const n=e.kids.left,r=e.kids.right;let i=n.sql||"",s=r.sql||"";return(0,sxe.inDays)(e.units)||(nd.TD.isDate(n.typeDef)&&(i=`${i}::TIMESTAMP`),nd.TD.isDate(r.typeDef)&&(s=`${s}::TIMESTAMP`)),`DATE_SUB('${e.units}', ${i}, ${s})`}sqlLiteralRecord(e){return"{"+Object.entries(e.kids).map(([r,i])=>`${this.sqlMaybeQuoteIdentifier(r)}:${i.sql}`).join(",")+"}"}}yE.DuckDBDialect=lxe;class cxe extends qk.TinyParser{constructor(e){super(e,{space:/^\s+/,qsingle:/^'([^']|'')*'/,qdouble:/^"([^"]|"")*"/,size:/^\(\d+\)/,precision:/^\(\d+,\d+\)/,arrayOf:/^\[]/,char:/^[,:[\]()-]/,id:/^\w+/})}unquoteName(e){return e.type==="qsingle"?e.text.replace("''",""):e.type==="qdouble"?e.text.replace('""',""):e.text}sqlID(e){return e.text.toUpperCase()}typeDef(){const e=this.
|
|
60
|
+
)`}sqlSampleTable(e,n){if(n!==void 0){if((0,nd.isSamplingEnable)(n)&&n.enable&&(n=this.defaultSampling),(0,nd.isSamplingRows)(n))return`(SELECT * FROM ${e} USING SAMPLE ${n.rows})`;if((0,nd.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,"''")+"'"}getDialectFunctionOverrides(){return(0,Uk.expandOverrideMap)(axe.DUCKDB_MALLOY_STANDARD_OVERLOADS)}getDialectFunctions(){return(0,Uk.expandBlueprintMap)(uxe.DUCKDB_DIALECT_FUNCTIONS)}malloyTypeToSQLType(e){return e.type==="number"?e.numberType==="integer"?"integer":"double precision":e.type==="string"?"varchar":e.type}parseDuckDBType(e){const n=new cxe(e);try{return n.typeDef()}catch(r){if(r instanceof qk.TinyParseError)return{type:"sql native",rawType:e};throw r}}sqlTypeToMalloyType(e){var n,r,i;const s=e.replace(/^DECIMAL\(\d+,\d+\)/g,"DECIMAL"),o=(r=(n=s.match(/^(\w+)/))===null||n===void 0?void 0:n.at(0))!==null&&r!==void 0?r:s;return(i=A6[o.toUpperCase()])!==null&&i!==void 0?i:{type:"sql native",rawType:e.toLowerCase()}}castToString(e){return`CAST(${e} as VARCHAR)`}concat(...e){return e.join(" || ")}validateTypeName(e){return e.match(/^[A-Za-z\s(),[\]0-9]*$/)!==null}sqlAlterTimeExpr(e){let n=e.units,r=e.kids.delta.sql;n==="quarter"?(n="month",r=`${r}*3`):n==="week"&&(n="day",r=`${r}*7`);const i=`INTERVAL (${r}) ${n}`;return`${e.kids.base.sql} ${e.op} ${i}`}sqlRegexpMatch(e){return`REGEXP_MATCHES(${e.kids.expr.sql},${e.kids.regex.sql})`}sqlMeasureTimeExpr(e){const n=e.kids.left,r=e.kids.right;let i=n.sql||"",s=r.sql||"";return(0,sxe.inDays)(e.units)||(nd.TD.isDate(n.typeDef)&&(i=`${i}::TIMESTAMP`),nd.TD.isDate(r.typeDef)&&(s=`${s}::TIMESTAMP`)),`DATE_SUB('${e.units}', ${i}, ${s})`}sqlLiteralRecord(e){return"{"+Object.entries(e.kids).map(([r,i])=>`${this.sqlMaybeQuoteIdentifier(r)}:${i.sql}`).join(",")+"}"}}yE.DuckDBDialect=lxe;class cxe extends qk.TinyParser{constructor(e){super(e,{space:/^\s+/,qsingle:/^'([^']|'')*'/,qdouble:/^"([^"]|"")*"/,size:/^\(\d+\)/,precision:/^\(\d+,\d+\)/,arrayOf:/^\[]/,char:/^[,:[\]()-]/,id:/^\w+/})}unquoteName(e){return e.type==="qsingle"?e.text.replace("''",""):e.type==="qdouble"?e.text.replace('""',""):e.text}sqlID(e){return e.text.toUpperCase()}typeDef(){const e=this.next("id"),n=this.sqlID(e);let r;if(n==="VARCHAR"&&this.peek().type==="size"&&this.next(),(n==="DECIMAL"||n==="NUMERIC")&&this.peek().type==="precision")this.next(),r={type:"number",numberType:"float"};else if(n==="TIMESTAMP")this.peek().text==="WITH"&&this.nextText("WITH","TIME","ZONE"),r={type:"timestamp"};else if(A6[n])r=A6[n];else if(n==="STRUCT")for(this.next("("),r={type:"record",fields:[]};;){const i=this.next();if(i.type==="qsingle"||i.type==="qdouble"||i.type==="id"){const s=this.typeDef();r.fields.push((0,nd.mkFieldDef)(s,this.unquoteName(i)))}else{if(i.type!==")")throw this.parseError("Expected identifier or ) to end STRUCT");break}this.peek().type===","&&this.next()}else if(e.type==="id"){let i=e.cursor+e.text.length;this.peek().type==="precision"&&this.next(),this.peek().type==="eof"&&(i=this.input.length),r={type:"sql native",rawType:this.input.slice(e.cursor,i)}}else throw this.parseError("Could not understand type");for(;this.peek().type==="arrayOf";)this.next(),r.type==="record"?r={type:"array",elementTypeDef:{type:"record_element"},fields:r.fields}:r={type:"array",elementTypeDef:r};return r}}(function(t){var e=T&&T.__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=T&&T.__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(yE,t)})(y6);var v6={},vE={},_E={};Object.defineProperty(_E,"__esModule",{value:!0}),_E.SNOWFLAKE_DIALECT_FUNCTIONS=void 0;const Ls=it,fxe={generic:"T"},SE={node:"aggregate_order_by",prefix:" WITHIN GROUP(",suffix:")"},_6={default_separator:{takes:{value:{dimension:"string"}},returns:{measure:"string"},supportsOrderBy:!0,impl:{expr:(0,Ls.sql)`LISTAGG(${(0,Ls.arg)("value")}, ',')${SE}`}},with_separator:{takes:{value:{dimension:"string"},separator:{literal:"string"}},returns:{measure:"string"},supportsOrderBy:!0,impl:{expr:(0,Ls.sql)`LISTAGG(${(0,Ls.arg)("value")}, ${(0,Ls.arg)("separator")})${SE}`}}},xxe={default_separator:{..._6.default_separator,isSymmetric:!0,impl:{expr:(0,Ls.sql)`LISTAGG(DISTINCT ${(0,Ls.arg)("value")}, ',')${SE}`}},with_separator:{..._6.with_separator,isSymmetric:!0,impl:{expr:(0,Ls.sql)`LISTAGG(DISTINCT ${(0,Ls.arg)("value")}, ${(0,Ls.arg)("separator")})${SE}`}}};_E.SNOWFLAKE_DIALECT_FUNCTIONS={string_agg:_6,string_agg_distinct:xxe,hll_accumulate:{default:{takes:{value:{dimension:fxe}},returns:{measure:{sql_native:"hyperloglog"}},generic:{T:["string","number"]},isSymmetric:!0,impl:{function:"hll_accumulate"}}},hll_combine:{takes:{value:{sql_native:"hyperloglog"}},returns:{measure:{sql_native:"hyperloglog"}},impl:{function:"hll_combine"},isSymmetric:!0},hll_estimate:{takes:{value:{sql_native:"hyperloglog"}},returns:{dimension:"number"},impl:{function:"hll_estimate"}},hll_export:{takes:{value:{sql_native:"hyperloglog"}},returns:{dimension:{sql_native:"bytes"}},impl:{function:"hll_export"}},hll_import:{takes:{value:{sql_native:"bytes"}},returns:{dimension:{sql_native:"hyperloglog"}},impl:{function:"hll_import"}},...(0,Ls.def)("repeat",{str:"string",n:"number"},"string"),...(0,Ls.def)("reverse",{str:"string"},"string")};var CE={};Object.defineProperty(CE,"__esModule",{value:!0}),CE.SNOWFLAKE_MALLOY_STANDARD_OVERLOADS=void 0,CE.SNOWFLAKE_MALLOY_STANDARD_OVERLOADS={chr:{sql:"COALESCE(CHR(${value}), '')"},div:{sql:"CASE WHEN DIV0(${dividend}, ${divisor}) < 0 THEN CEIL(DIV0(${dividend}, ${divisor})) ELSE FLOOR(DIV0(${dividend}, ${divisor})) END"},is_inf:{sql:"COALESCE(${value} = 'inf'::FLOAT OR ${value} = '-inf'::FLOAT, false)"},is_nan:{sql:"COALESCE(${value} = 'NAN'::FLOAT, false)"},length:{function:"LENGTH"},byte_length:{sql:"CEIL(BIT_LENGTH(${value}) / 8)"},log:{sql:"LOG(${base}, ${value})"},rand:{sql:"UNIFORM(0::FLOAT, 1::FLOAT, RANDOM())"},regexp_extract:{sql:"REGEXP_SUBSTR(${value}, ${pattern}, 1, 1, 'e')"},starts_with:{sql:"COALESCE(STARTSWITH(${value}, ${prefix}), false)"},ends_with:{sql:"COALESCE(ENDSWITH(${value}, ${suffix}), false)"},strpos:{sql:"POSITION(${search_string}, ${test_string})"},trunc:{to_integer:{sql:"CASE WHEN ${value} < 0 THEN CEIL(${value}) ELSE FLOOR(${value}) END"},to_precision:{sql:"CASE WHEN ${value} < 0 THEN CEIL(${value} * POW(10, ${precision})) / POW(10, ${precision}) ELSE FLOOR(${value} * POW(10, ${precision})) / POW(10, ${precision}) END"}}},Object.defineProperty(vE,"__esModule",{value:!0}),vE.SnowflakeDialect=void 0;const dxe=Nt,es=Ke,zk=Ul,hp=Ml,hxe=_E,pxe=CE,gxe={day_of_week:"dayofweek",day_of_year:"dayofyear"},mxe={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 yxe extends hp.Dialect{constructor(){super(...arguments),this.name="snowflake",this.experimental=!1,this.defaultNumberType="NUMBER",this.defaultDecimalType="NUMBER",this.udfPrefix="__udf",this.hasFinalStage=!1,this.divisionIsInteger=!1,this.supportsSumDistinctFunction=!0,this.supportsSafeCast=!0,this.supportsNesting=!0,this.defaultSampling={rows:5e4},this.supportsHyperLogLog=!0,this.unnestWithNumbers=!1,this.supportUnnestArrayAgg=!1,this.supportsAggDistinct=!1,this.supportsCTEinCoorelatedSubQueries=!1,this.dontUnionIndex=!1,this.supportsQualify=!1,this.supportsPipelinesInViews=!1,this.supportsComplexFilteredSources=!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=>`
|
|
61
61
|
${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){const u=this.sqlMaybeQuoteIdentifier(n);return s?`LEFT JOIN lateral flatten(input => ${e}) as ${u}`:`LEFT JOIN LATERAL FLATTEN(INPUT => ifnull(${e},[1])) AS ${u}`}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})`}sqlSumDistinct(e,n,r){const i=this.sqlSumDistinctHashedKey(e),s=1e8,o=`(COALESCE(${n},0)*${s})`,u=`(SUM(DISTINCT ${i} + ${o}) - SUM(DISTINCT ${i}))/${s}`;if(r==="SUM")return u;if(r==="AVG")return`(${u})/NULLIF(COUNT(DISTINCT CASE WHEN ${n} IS NOT NULL THEN ${e} END),0)`;throw new Error(`Unknown Symmetric Aggregate function ${r}`)}sqlGenerateUUID(){return"UUID_STRING()"}sqlFieldReference(e,n,r,i){const s=this.sqlMaybeQuoteIdentifier(r);if(r==="__row_id")return`"${e}".INDEX::varchar`;if(n.startsWith("array")){let o=`"${e}".value`;switch(n==="array[record]"&&(o+=`:${s}`),i){case"record":case"array":i="VARIANT";break;case"string":i="VARCHAR";break;case"number":i="DOUBLE";break;case"struct":throw new Error("NOT STRUCT PLEASE")}return`${o}::${i}`}else if(n==="record")return`${e}:${s}`;return`${e}.${s}`}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.replace(/"/g,'""')+'"'}sqlCreateTableAsSelect(e,n){return`
|
|
62
62
|
CREATE TEMP TABLE IF NOT EXISTS \`${e}\`
|
|
63
63
|
AS (
|
|
@@ -3645,8 +3645,10 @@ ${" ".repeat(this.parseCursor)}^`;
|
|
|
3645
3645
|
if (o) {
|
|
3646
3646
|
r = !1;
|
|
3647
3647
|
let u = o[0];
|
|
3648
|
+
const a = this.parseCursor;
|
|
3648
3649
|
if (this.parseCursor += u.length, i !== "space") {
|
|
3649
3650
|
i[0] === "q" && (u = u.slice(1, -1)), yield {
|
|
3651
|
+
cursor: a,
|
|
3650
3652
|
type: i === "char" ? u : i,
|
|
3651
3653
|
text: u
|
|
3652
3654
|
};
|
|
@@ -3655,7 +3657,7 @@ ${" ".repeat(this.parseCursor)}^`;
|
|
|
3655
3657
|
}
|
|
3656
3658
|
}
|
|
3657
3659
|
if (r) {
|
|
3658
|
-
yield { type: "unexpected token", text: e };
|
|
3660
|
+
yield { cursor: this.parseCursor, type: "unexpected token", text: e };
|
|
3659
3661
|
return;
|
|
3660
3662
|
}
|
|
3661
3663
|
}
|
|
@@ -3913,50 +3915,45 @@ class fxe extends ZG.TinyParser {
|
|
|
3913
3915
|
return e.text.toUpperCase();
|
|
3914
3916
|
}
|
|
3915
3917
|
typeDef() {
|
|
3916
|
-
const e = this.
|
|
3917
|
-
let
|
|
3918
|
-
if (
|
|
3919
|
-
this.next(),
|
|
3920
|
-
else if (
|
|
3921
|
-
this.peek().text === "WITH" && this.nextText("WITH", "TIME", "ZONE"),
|
|
3922
|
-
else if (ZO[
|
|
3923
|
-
|
|
3924
|
-
else if (
|
|
3925
|
-
for (this.next("("),
|
|
3926
|
-
const
|
|
3927
|
-
if (
|
|
3928
|
-
const
|
|
3929
|
-
|
|
3918
|
+
const e = this.next("id"), n = this.sqlID(e);
|
|
3919
|
+
let r;
|
|
3920
|
+
if (n === "VARCHAR" && this.peek().type === "size" && this.next(), (n === "DECIMAL" || n === "NUMERIC") && this.peek().type === "precision")
|
|
3921
|
+
this.next(), r = { type: "number", numberType: "float" };
|
|
3922
|
+
else if (n === "TIMESTAMP")
|
|
3923
|
+
this.peek().text === "WITH" && this.nextText("WITH", "TIME", "ZONE"), r = { type: "timestamp" };
|
|
3924
|
+
else if (ZO[n])
|
|
3925
|
+
r = ZO[n];
|
|
3926
|
+
else if (n === "STRUCT")
|
|
3927
|
+
for (this.next("("), r = { type: "record", fields: [] }; ; ) {
|
|
3928
|
+
const i = this.next();
|
|
3929
|
+
if (i.type === "qsingle" || i.type === "qdouble" || i.type === "id") {
|
|
3930
|
+
const s = this.typeDef();
|
|
3931
|
+
r.fields.push((0, yd.mkFieldDef)(s, this.unquoteName(i)));
|
|
3930
3932
|
} else {
|
|
3931
|
-
if (
|
|
3933
|
+
if (i.type !== ")")
|
|
3932
3934
|
throw this.parseError("Expected identifier or ) to end STRUCT");
|
|
3933
3935
|
break;
|
|
3934
3936
|
}
|
|
3935
3937
|
this.peek().type === "," && this.next();
|
|
3936
3938
|
}
|
|
3937
|
-
else if (
|
|
3938
|
-
|
|
3939
|
-
|
|
3940
|
-
if (s.type === "arrayOf" || s.type === "eof")
|
|
3941
|
-
break;
|
|
3942
|
-
this.next();
|
|
3943
|
-
}
|
|
3944
|
-
i = {
|
|
3939
|
+
else if (e.type === "id") {
|
|
3940
|
+
let i = e.cursor + e.text.length;
|
|
3941
|
+
this.peek().type === "precision" && this.next(), this.peek().type === "eof" && (i = this.input.length), r = {
|
|
3945
3942
|
type: "sql native",
|
|
3946
|
-
rawType: this.input.slice(e,
|
|
3943
|
+
rawType: this.input.slice(e.cursor, i)
|
|
3947
3944
|
};
|
|
3948
3945
|
} else
|
|
3949
3946
|
throw this.parseError("Could not understand type");
|
|
3950
3947
|
for (; this.peek().type === "arrayOf"; )
|
|
3951
|
-
this.next(),
|
|
3948
|
+
this.next(), r.type === "record" ? r = {
|
|
3952
3949
|
type: "array",
|
|
3953
3950
|
elementTypeDef: { type: "record_element" },
|
|
3954
|
-
fields:
|
|
3955
|
-
} :
|
|
3951
|
+
fields: r.fields
|
|
3952
|
+
} : r = {
|
|
3956
3953
|
type: "array",
|
|
3957
|
-
elementTypeDef:
|
|
3954
|
+
elementTypeDef: r
|
|
3958
3955
|
};
|
|
3959
|
-
return
|
|
3956
|
+
return r;
|
|
3960
3957
|
}
|
|
3961
3958
|
}
|
|
3962
3959
|
(function(t) {
|
|
@@ -37,7 +37,7 @@ $$ LANGUAGE SQL;
|
|
|
37
37
|
) a
|
|
38
38
|
)`}sqlSampleTable(e,n){if(n!==void 0){if((0,g6.isSamplingEnable)(n)&&n.enable&&(n=this.defaultSampling),(0,g6.isSamplingRows)(n))return`(SELECT * FROM ${e} TABLESAMPLE SYSTEM_ROWS(${n.rows}))`;if((0,g6.isSamplingPercent)(n))return`(SELECT * FROM ${e} TABLESAMPLE SYSTEM (${n.percent}))`}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,"''")+"'"}getDialectFunctionOverrides(){return(0,Bk.expandOverrideMap)(Gfe.POSTGRES_MALLOY_STANDARD_OVERLOADS)}getDialectFunctions(){return(0,Bk.expandBlueprintMap)(Qfe.POSTGRES_DIALECT_FUNCTIONS)}malloyTypeToSQLType(e){return e.type==="number"?e.numberType==="integer"?"integer":"double precision":e.type==="string"?"varchar":e.type}sqlTypeToMalloyType(e){var n,r,i;const s=(r=(n=e.match(/^([\w\s]+)/))===null||n===void 0?void 0:n.at(0))!==null&&r!==void 0?r:e;return(i=Vfe[s.trim().toLowerCase()])!==null&&i!==void 0?i:{type:"sql native",rawType:e}}castToString(e){return`CAST(${e} as VARCHAR)`}concat(...e){return e.join(" || ")}validateTypeName(e){return e.match(/^[A-Za-z\s(),[\]0-9]*$/)!==null}sqlLiteralRecord(e){const n=[];for(const[r,i]of Object.entries(e.kids))n.push(`'${r}',${i.sql}`);return`JSONB_BUILD_OBJECT(${n.join(", ")})`}sqlLiteralArray(e){return"JSONB_BUILD_ARRAY("+e.kids.values.map(r=>r.sql).join(",")+")"}}dE.PostgresDialect=Yfe,function(t){var e=T&&T.__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=T&&T.__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(dE,t)}(h6);var m6={},mE={},yE={};Object.defineProperty(yE,"__esModule",{value:!0}),yE.DUCKDB_DIALECT_FUNCTIONS=void 0;const kk=it,Kfe={takes:{value:{array:{generic:"T"}},index:"number"},generic:{T:["any"]},returns:{generic:"T"},impl:{sql:"list_extract(${value}, ${index})"}},Jfe={takes:{date_value:["date","timestamp"]},returns:"string",impl:{function:"DAYNAME"}},Xfe={takes:{part:"string",interval:{sql_native:"interval"}},returns:"number",impl:{function:"DATE_PART"}},Zfe={takes:{seconds:"number"},returns:{sql_native:"interval"},impl:{function:"TO_SECONDS"}},exe={takes:{epoch_seconds:"number"},returns:"timestamp",impl:{function:"TO_TIMESTAMP"}},txe={takes:{value:{dimension:"any"}},returns:{measure:"number"},impl:{function:"APPROX_COUNT_DISTINCT"},isSymmetric:!0},y6={default_separator:{takes:{value:{dimension:"string"}},returns:{measure:"string"},supportsOrderBy:!0,impl:{sql:"STRING_AGG(${value}${order_by:})",defaultOrderByArgIndex:0}},with_separator:{takes:{value:{dimension:"string"},separator:{literal:"string"}},returns:{measure:"string"},supportsOrderBy:!0,impl:{sql:"STRING_AGG(${value}, ${separator}${order_by:})",defaultOrderByArgIndex:0}}},nxe={default_separator:{...y6.default_separator,isSymmetric:!0,impl:{sql:"STRING_AGG(DISTINCT ${value}${order_by:})",defaultOrderByArgIndex:0}},with_separator:{...y6.with_separator,isSymmetric:!0,impl:{sql:"STRING_AGG(DISTINCT ${value}, ${separator}${order_by:})",defaultOrderByArgIndex:0}}};yE.DUCKDB_DIALECT_FUNCTIONS={list_extract:Kfe,count_approx:txe,dayname:Jfe,to_timestamp:exe,string_agg:y6,string_agg_distinct:nxe,to_seconds:Zfe,date_part:Xfe,...(0,kk.def)("repeat",{str:"string",n:"number"},"string"),...(0,kk.def)("reverse",{str:"string"},"string")};var EE={};Object.defineProperty(EE,"__esModule",{value:!0}),EE.DUCKDB_MALLOY_STANDARD_OVERLOADS=void 0;function Pk(t){return"CASE WHEN LEN(LIST_FILTER([${...values}], x -> x is null)) > 0 THEN NULL ELSE "+t+"(${...values}) END"}EE.DUCKDB_MALLOY_STANDARD_OVERLOADS={byte_length:{sql:"(BIT_LENGTH(${value}) / 8)"},div:{sql:"CASE WHEN ${dividend} / ${divisor} < 0 THEN CEIL(${dividend} / ${divisor}) ELSE FLOOR(${dividend} / ${divisor}) END"},ends_with:{sql:"COALESCE(SUFFIX(${value}, ${suffix}), false)"},greatest:{sql:Pk("GREATEST")},is_inf:{sql:"COALESCE(ISINF(${value}), false)"},is_nan:{sql:"COALESCE(ISNAN(${value}), false)"},log:{sql:"(LN(${value}) / LN(${base}))"},least:{sql:Pk("LEAST")},rand:{function:"RANDOM"},replace:{regular_expression:{sql:"REGEXP_REPLACE(${value}, ${pattern}, ${replacement}, 'g')"}},trunc:{to_integer:{sql:"CASE WHEN ${value} < 0 THEN CEIL(${value}) ELSE FLOOR(${value}) END"},to_precision:{sql:"CASE WHEN ${value} < 0 THEN CEIL(${value} * POW(10, ${precision})) / POW(10, ${precision}) ELSE FLOOR(${value} * POW(10, ${precision})) / POW(10, ${precision}) END"}},unicode:{sql:"CASE WHEN ${value} = '' THEN 0 ELSE UNICODE(${value}) END"}};var Bc={};Object.defineProperty(Bc,"__esModule",{value:!0}),Bc.TinyParser=Bc.TinyParseError=void 0;class Mk extends Error{}Bc.TinyParseError=Mk;class rxe{constructor(e,n){this.input=e,this.parseCursor=0,this.tokenMap=n??{space:/^\s+/,char:/^[,:[\]()-]/,id:/^\w+/,qstr:/^"\w+"/},this.tokens=this.tokenize(e)}parseError(e){const n=`INTERNAL ERROR parsing schema: ${e}
|
|
39
39
|
${this.input}
|
|
40
|
-
${" ".repeat(this.parseCursor)}^`;return new Mk(n)}peek(){if(this.lookAhead)return this.lookAhead;{const{value:e}=this.tokens.next(),n=e??{type:"eof",text:""};return this.lookAhead=n,n}}getNext(){var e;const n=(e=this.lookAhead)!==null&&e!==void 0?e:this.peek();return this.lookAhead=void 0,n}next(...e){if(e.length===0)return this.getNext();let n,r=e[0];for(const i of e)if(n=this.getNext(),r=i,n.type!==i){n=void 0;break}if(n)return n;throw this.parseError(`Expected token type '${r}'`)}nextText(...e){if(e.length===0)return this.getNext();let n,r=e[0];for(const i of e)if(n=this.getNext(),r=i,n.text!==i){n=void 0;break}if(n)return n;throw this.parseError(`Expected '${r}'`)}skipTo(e){for(;;){const n=this.next();if(n.type==="eof")throw this.parseError(`Expected token '${e}`);if(n.type===e)return}}dump(){const e=this.parseCursor,n=[...this.tokenize(this.input)];return this.parseCursor=e,n}*tokenize(e){const n=this.tokenMap;for(;this.parseCursor<e.length;){let r=!0;for(const i in n){const o=e.slice(this.parseCursor).match(n[i]);if(o){r=!1;let u=o[0];if(this.parseCursor+=u.length,i!=="space"){i[0]==="q"&&(u=u.slice(1,-1)),yield{type:i==="char"?u:i,text:u};break}}}if(r){yield{type:"unexpected token",text:e};return}}}}Bc.TinyParser=rxe,Object.defineProperty(mE,"__esModule",{value:!0}),mE.DuckDBDialect=void 0;const nd=Ke,ixe=Nt,jk=Ul,sxe=Ml,oxe=hE,uxe=yE,axe=EE,Uk=Bc,qk="-- hack: split on this",E6={BIGINT:{type:"number",numberType:"integer"},INTEGER:{type:"number",numberType:"integer"},TINYINT:{type:"number",numberType:"integer"},SMALLINT:{type:"number",numberType:"integer"},UBIGINT:{type:"number",numberType:"integer"},UINTEGER:{type:"number",numberType:"integer"},UTINYINT:{type:"number",numberType:"integer"},USMALLINT:{type:"number",numberType:"integer"},HUGEINT:{type:"number",numberType:"integer"},DOUBLE:{type:"number",numberType:"float"},FLOAT:{type:"number",numberType:"float"},VARCHAR:{type:"string"},DATE:{type:"date"},TIMESTAMP:{type:"timestamp"},TIME:{type:"string"},DECIMAL:{type:"number",numberType:"float"},BOOLEAN:{type:"boolean"}};class lxe extends oxe.PostgresBase{constructor(){super(...arguments),this.name="duckdb",this.experimental=!1,this.defaultNumberType="DOUBLE",this.defaultDecimalType="NUMERIC",this.hasFinalStage=!1,this.divisionIsInteger=!0,this.supportsSumDistinctFunction=!0,this.unnestWithNumbers=!1,this.defaultSampling={rows:5e4},this.supportUnnestArrayAgg=!0,this.supportsAggDistinct=!0,this.supportsCTEinCoorelatedSubQueries=!0,this.dontUnionIndex=!0,this.supportsQualify=!0,this.supportsSafeCast=!0,this.supportsNesting=!0,this.supportsCountApprox=!0}get udfPrefix(){return`__udf${Math.floor(Math.random()*1e5)}`}quoteTablePath(e){return e.match(/[/*:]/)?`'${e}'`:e}sqlGroupSetTable(e){return`CROSS JOIN (SELECT UNNEST(GENERATE_SERIES(0,${e},1)) as group_set ) as group_set`}sqlAnyValue(e,n){return`FIRST(${n}) FILTER (WHERE ${n} IS NOT NULL)`}sqlLiteralNumber(e){return e.includes(".")?`${e}::${this.defaultNumberType}`:e}mapFields(e){return e.join(", ")}sqlAggregateTurtle(e,n,r,i){let s="";return i!==void 0&&(s+=`[1:${i}]`),`COALESCE(LIST({${n.map(u=>`
|
|
40
|
+
${" ".repeat(this.parseCursor)}^`;return new Mk(n)}peek(){if(this.lookAhead)return this.lookAhead;{const{value:e}=this.tokens.next(),n=e??{type:"eof",text:""};return this.lookAhead=n,n}}getNext(){var e;const n=(e=this.lookAhead)!==null&&e!==void 0?e:this.peek();return this.lookAhead=void 0,n}next(...e){if(e.length===0)return this.getNext();let n,r=e[0];for(const i of e)if(n=this.getNext(),r=i,n.type!==i){n=void 0;break}if(n)return n;throw this.parseError(`Expected token type '${r}'`)}nextText(...e){if(e.length===0)return this.getNext();let n,r=e[0];for(const i of e)if(n=this.getNext(),r=i,n.text!==i){n=void 0;break}if(n)return n;throw this.parseError(`Expected '${r}'`)}skipTo(e){for(;;){const n=this.next();if(n.type==="eof")throw this.parseError(`Expected token '${e}`);if(n.type===e)return}}dump(){const e=this.parseCursor,n=[...this.tokenize(this.input)];return this.parseCursor=e,n}*tokenize(e){const n=this.tokenMap;for(;this.parseCursor<e.length;){let r=!0;for(const i in n){const o=e.slice(this.parseCursor).match(n[i]);if(o){r=!1;let u=o[0];const a=this.parseCursor;if(this.parseCursor+=u.length,i!=="space"){i[0]==="q"&&(u=u.slice(1,-1)),yield{cursor:a,type:i==="char"?u:i,text:u};break}}}if(r){yield{cursor:this.parseCursor,type:"unexpected token",text:e};return}}}}Bc.TinyParser=rxe,Object.defineProperty(mE,"__esModule",{value:!0}),mE.DuckDBDialect=void 0;const nd=Ke,ixe=Nt,jk=Ul,sxe=Ml,oxe=hE,uxe=yE,axe=EE,Uk=Bc,qk="-- hack: split on this",E6={BIGINT:{type:"number",numberType:"integer"},INTEGER:{type:"number",numberType:"integer"},TINYINT:{type:"number",numberType:"integer"},SMALLINT:{type:"number",numberType:"integer"},UBIGINT:{type:"number",numberType:"integer"},UINTEGER:{type:"number",numberType:"integer"},UTINYINT:{type:"number",numberType:"integer"},USMALLINT:{type:"number",numberType:"integer"},HUGEINT:{type:"number",numberType:"integer"},DOUBLE:{type:"number",numberType:"float"},FLOAT:{type:"number",numberType:"float"},VARCHAR:{type:"string"},DATE:{type:"date"},TIMESTAMP:{type:"timestamp"},TIME:{type:"string"},DECIMAL:{type:"number",numberType:"float"},BOOLEAN:{type:"boolean"}};class lxe extends oxe.PostgresBase{constructor(){super(...arguments),this.name="duckdb",this.experimental=!1,this.defaultNumberType="DOUBLE",this.defaultDecimalType="NUMERIC",this.hasFinalStage=!1,this.divisionIsInteger=!0,this.supportsSumDistinctFunction=!0,this.unnestWithNumbers=!1,this.defaultSampling={rows:5e4},this.supportUnnestArrayAgg=!0,this.supportsAggDistinct=!0,this.supportsCTEinCoorelatedSubQueries=!0,this.dontUnionIndex=!0,this.supportsQualify=!0,this.supportsSafeCast=!0,this.supportsNesting=!0,this.supportsCountApprox=!0}get udfPrefix(){return`__udf${Math.floor(Math.random()*1e5)}`}quoteTablePath(e){return e.match(/[/*:]/)?`'${e}'`:e}sqlGroupSetTable(e){return`CROSS JOIN (SELECT UNNEST(GENERATE_SERIES(0,${e},1)) as group_set ) as group_set`}sqlAnyValue(e,n){return`FIRST(${n}) FILTER (WHERE ${n} IS NOT NULL)`}sqlLiteralNumber(e){return e.includes(".")?`${e}::${this.defaultNumberType}`:e}mapFields(e){return e.join(", ")}sqlAggregateTurtle(e,n,r,i){let s="";return i!==void 0&&(s+=`[1:${i}]`),`COALESCE(LIST({${n.map(u=>`
|
|
41
41
|
${u.sqlOutputName}: ${u.sqlExpression}`).join(", ")}} ${r}) FILTER (WHERE group_set=${e})${s},[])`}sqlAnyValueTurtle(e,n){const r=n.map(i=>`${i.sqlExpression} as ${i.sqlOutputName}`).join(", ");return`ANY_VALUE(CASE WHEN group_set=${e} THEN STRUCT_PACK(${r}))`}sqlAnyValueLastTurtle(e,n,r){return`MAX(CASE WHEN group_set=${n} THEN ${e} END) as ${r}`}sqlCoaleseMeasuresInline(e,n){const r=n.map(s=>`${s.sqlOutputName}: ${s.sqlExpression} `).join(", "),i=n.map(s=>`${s.sqlOutputName}: NULL`).join(", ");return`COALESCE(FIRST({${r}}) FILTER(WHERE group_set=${e}), {${i}})`}sqlUnnestAlias(e,n,r,i,s,o){return this.unnestWithNumbers?`LEFT JOIN (select UNNEST(generate_series(1,
|
|
42
42
|
${o?"100000":`array_length(${e})`},
|
|
43
43
|
1)) as __row_id) as ${n} ON ${n}.__row_id <= array_length(${e})`:i?`LEFT JOIN LATERAL (SELECT UNNEST(GENERATE_SERIES(1, length(${e}),1)) as __row_id, UNNEST(${e}), 1 as ignoreme) as ${n}_outer(__row_id, ${n},ignoreme) ON ${n}_outer.ignoreme=1`:`LEFT JOIN LATERAL (SELECT UNNEST(${e}), 1 as ignoreme) as ${n}_outer(${n},ignoreme) ON ${n}_outer.ignoreme=1`}sqlSumDistinctHashedKey(e){return"uses sumDistinctFunction, should not be called"}sqlGenerateUUID(){return"GEN_RANDOM_UUID()"}sqlDateToString(e){return`(${e})::date::varchar`}sqlFieldReference(e,n,r,i){return!this.unnestWithNumbers&&r==="__row_id"?`${e}_outer.__row_id`:n==="array[scalar]"?e:`${e}.${this.sqlMaybeQuoteIdentifier(r)}`}sqlUnnestPipelineHead(e,n){let r=n;return e&&(r=`[${r}]`),`(SELECT UNNEST(${r}) as base)`}sqlCreateFunction(e,n){return`DROP MACRO IF EXISTS ${e};
|
|
@@ -57,7 +57,7 @@ ${qk}
|
|
|
57
57
|
FROM (
|
|
58
58
|
SELECT UNNEST(list(distinct {key:${e}, ${n.map((i,s)=>`val${s}: ${i}`).join(",")}})) a
|
|
59
59
|
)
|
|
60
|
-
)`}sqlSampleTable(e,n){if(n!==void 0){if((0,nd.isSamplingEnable)(n)&&n.enable&&(n=this.defaultSampling),(0,nd.isSamplingRows)(n))return`(SELECT * FROM ${e} USING SAMPLE ${n.rows})`;if((0,nd.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,"''")+"'"}getDialectFunctionOverrides(){return(0,jk.expandOverrideMap)(axe.DUCKDB_MALLOY_STANDARD_OVERLOADS)}getDialectFunctions(){return(0,jk.expandBlueprintMap)(uxe.DUCKDB_DIALECT_FUNCTIONS)}malloyTypeToSQLType(e){return e.type==="number"?e.numberType==="integer"?"integer":"double precision":e.type==="string"?"varchar":e.type}parseDuckDBType(e){const n=new cxe(e);try{return n.typeDef()}catch(r){if(r instanceof Uk.TinyParseError)return{type:"sql native",rawType:e};throw r}}sqlTypeToMalloyType(e){var n,r,i;const s=e.replace(/^DECIMAL\(\d+,\d+\)/g,"DECIMAL"),o=(r=(n=s.match(/^(\w+)/))===null||n===void 0?void 0:n.at(0))!==null&&r!==void 0?r:s;return(i=E6[o.toUpperCase()])!==null&&i!==void 0?i:{type:"sql native",rawType:e.toLowerCase()}}castToString(e){return`CAST(${e} as VARCHAR)`}concat(...e){return e.join(" || ")}validateTypeName(e){return e.match(/^[A-Za-z\s(),[\]0-9]*$/)!==null}sqlAlterTimeExpr(e){let n=e.units,r=e.kids.delta.sql;n==="quarter"?(n="month",r=`${r}*3`):n==="week"&&(n="day",r=`${r}*7`);const i=`INTERVAL (${r}) ${n}`;return`${e.kids.base.sql} ${e.op} ${i}`}sqlRegexpMatch(e){return`REGEXP_MATCHES(${e.kids.expr.sql},${e.kids.regex.sql})`}sqlMeasureTimeExpr(e){const n=e.kids.left,r=e.kids.right;let i=n.sql||"",s=r.sql||"";return(0,sxe.inDays)(e.units)||(nd.TD.isDate(n.typeDef)&&(i=`${i}::TIMESTAMP`),nd.TD.isDate(r.typeDef)&&(s=`${s}::TIMESTAMP`)),`DATE_SUB('${e.units}', ${i}, ${s})`}sqlLiteralRecord(e){return"{"+Object.entries(e.kids).map(([r,i])=>`${this.sqlMaybeQuoteIdentifier(r)}:${i.sql}`).join(",")+"}"}}mE.DuckDBDialect=lxe;class cxe extends Uk.TinyParser{constructor(e){super(e,{space:/^\s+/,qsingle:/^'([^']|'')*'/,qdouble:/^"([^"]|"")*"/,size:/^\(\d+\)/,precision:/^\(\d+,\d+\)/,arrayOf:/^\[]/,char:/^[,:[\]()-]/,id:/^\w+/})}unquoteName(e){return e.type==="qsingle"?e.text.replace("''",""):e.type==="qdouble"?e.text.replace('""',""):e.text}sqlID(e){return e.text.toUpperCase()}typeDef(){const e=this.
|
|
60
|
+
)`}sqlSampleTable(e,n){if(n!==void 0){if((0,nd.isSamplingEnable)(n)&&n.enable&&(n=this.defaultSampling),(0,nd.isSamplingRows)(n))return`(SELECT * FROM ${e} USING SAMPLE ${n.rows})`;if((0,nd.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,"''")+"'"}getDialectFunctionOverrides(){return(0,jk.expandOverrideMap)(axe.DUCKDB_MALLOY_STANDARD_OVERLOADS)}getDialectFunctions(){return(0,jk.expandBlueprintMap)(uxe.DUCKDB_DIALECT_FUNCTIONS)}malloyTypeToSQLType(e){return e.type==="number"?e.numberType==="integer"?"integer":"double precision":e.type==="string"?"varchar":e.type}parseDuckDBType(e){const n=new cxe(e);try{return n.typeDef()}catch(r){if(r instanceof Uk.TinyParseError)return{type:"sql native",rawType:e};throw r}}sqlTypeToMalloyType(e){var n,r,i;const s=e.replace(/^DECIMAL\(\d+,\d+\)/g,"DECIMAL"),o=(r=(n=s.match(/^(\w+)/))===null||n===void 0?void 0:n.at(0))!==null&&r!==void 0?r:s;return(i=E6[o.toUpperCase()])!==null&&i!==void 0?i:{type:"sql native",rawType:e.toLowerCase()}}castToString(e){return`CAST(${e} as VARCHAR)`}concat(...e){return e.join(" || ")}validateTypeName(e){return e.match(/^[A-Za-z\s(),[\]0-9]*$/)!==null}sqlAlterTimeExpr(e){let n=e.units,r=e.kids.delta.sql;n==="quarter"?(n="month",r=`${r}*3`):n==="week"&&(n="day",r=`${r}*7`);const i=`INTERVAL (${r}) ${n}`;return`${e.kids.base.sql} ${e.op} ${i}`}sqlRegexpMatch(e){return`REGEXP_MATCHES(${e.kids.expr.sql},${e.kids.regex.sql})`}sqlMeasureTimeExpr(e){const n=e.kids.left,r=e.kids.right;let i=n.sql||"",s=r.sql||"";return(0,sxe.inDays)(e.units)||(nd.TD.isDate(n.typeDef)&&(i=`${i}::TIMESTAMP`),nd.TD.isDate(r.typeDef)&&(s=`${s}::TIMESTAMP`)),`DATE_SUB('${e.units}', ${i}, ${s})`}sqlLiteralRecord(e){return"{"+Object.entries(e.kids).map(([r,i])=>`${this.sqlMaybeQuoteIdentifier(r)}:${i.sql}`).join(",")+"}"}}mE.DuckDBDialect=lxe;class cxe extends Uk.TinyParser{constructor(e){super(e,{space:/^\s+/,qsingle:/^'([^']|'')*'/,qdouble:/^"([^"]|"")*"/,size:/^\(\d+\)/,precision:/^\(\d+,\d+\)/,arrayOf:/^\[]/,char:/^[,:[\]()-]/,id:/^\w+/})}unquoteName(e){return e.type==="qsingle"?e.text.replace("''",""):e.type==="qdouble"?e.text.replace('""',""):e.text}sqlID(e){return e.text.toUpperCase()}typeDef(){const e=this.next("id"),n=this.sqlID(e);let r;if(n==="VARCHAR"&&this.peek().type==="size"&&this.next(),(n==="DECIMAL"||n==="NUMERIC")&&this.peek().type==="precision")this.next(),r={type:"number",numberType:"float"};else if(n==="TIMESTAMP")this.peek().text==="WITH"&&this.nextText("WITH","TIME","ZONE"),r={type:"timestamp"};else if(E6[n])r=E6[n];else if(n==="STRUCT")for(this.next("("),r={type:"record",fields:[]};;){const i=this.next();if(i.type==="qsingle"||i.type==="qdouble"||i.type==="id"){const s=this.typeDef();r.fields.push((0,nd.mkFieldDef)(s,this.unquoteName(i)))}else{if(i.type!==")")throw this.parseError("Expected identifier or ) to end STRUCT");break}this.peek().type===","&&this.next()}else if(e.type==="id"){let i=e.cursor+e.text.length;this.peek().type==="precision"&&this.next(),this.peek().type==="eof"&&(i=this.input.length),r={type:"sql native",rawType:this.input.slice(e.cursor,i)}}else throw this.parseError("Could not understand type");for(;this.peek().type==="arrayOf";)this.next(),r.type==="record"?r={type:"array",elementTypeDef:{type:"record_element"},fields:r.fields}:r={type:"array",elementTypeDef:r};return r}}(function(t){var e=T&&T.__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=T&&T.__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(mE,t)})(m6);var A6={},AE={},vE={};Object.defineProperty(vE,"__esModule",{value:!0}),vE.SNOWFLAKE_DIALECT_FUNCTIONS=void 0;const Ls=it,fxe={generic:"T"},_E={node:"aggregate_order_by",prefix:" WITHIN GROUP(",suffix:")"},v6={default_separator:{takes:{value:{dimension:"string"}},returns:{measure:"string"},supportsOrderBy:!0,impl:{expr:(0,Ls.sql)`LISTAGG(${(0,Ls.arg)("value")}, ',')${_E}`}},with_separator:{takes:{value:{dimension:"string"},separator:{literal:"string"}},returns:{measure:"string"},supportsOrderBy:!0,impl:{expr:(0,Ls.sql)`LISTAGG(${(0,Ls.arg)("value")}, ${(0,Ls.arg)("separator")})${_E}`}}},xxe={default_separator:{...v6.default_separator,isSymmetric:!0,impl:{expr:(0,Ls.sql)`LISTAGG(DISTINCT ${(0,Ls.arg)("value")}, ',')${_E}`}},with_separator:{...v6.with_separator,isSymmetric:!0,impl:{expr:(0,Ls.sql)`LISTAGG(DISTINCT ${(0,Ls.arg)("value")}, ${(0,Ls.arg)("separator")})${_E}`}}};vE.SNOWFLAKE_DIALECT_FUNCTIONS={string_agg:v6,string_agg_distinct:xxe,hll_accumulate:{default:{takes:{value:{dimension:fxe}},returns:{measure:{sql_native:"hyperloglog"}},generic:{T:["string","number"]},isSymmetric:!0,impl:{function:"hll_accumulate"}}},hll_combine:{takes:{value:{sql_native:"hyperloglog"}},returns:{measure:{sql_native:"hyperloglog"}},impl:{function:"hll_combine"},isSymmetric:!0},hll_estimate:{takes:{value:{sql_native:"hyperloglog"}},returns:{dimension:"number"},impl:{function:"hll_estimate"}},hll_export:{takes:{value:{sql_native:"hyperloglog"}},returns:{dimension:{sql_native:"bytes"}},impl:{function:"hll_export"}},hll_import:{takes:{value:{sql_native:"bytes"}},returns:{dimension:{sql_native:"hyperloglog"}},impl:{function:"hll_import"}},...(0,Ls.def)("repeat",{str:"string",n:"number"},"string"),...(0,Ls.def)("reverse",{str:"string"},"string")};var SE={};Object.defineProperty(SE,"__esModule",{value:!0}),SE.SNOWFLAKE_MALLOY_STANDARD_OVERLOADS=void 0,SE.SNOWFLAKE_MALLOY_STANDARD_OVERLOADS={chr:{sql:"COALESCE(CHR(${value}), '')"},div:{sql:"CASE WHEN DIV0(${dividend}, ${divisor}) < 0 THEN CEIL(DIV0(${dividend}, ${divisor})) ELSE FLOOR(DIV0(${dividend}, ${divisor})) END"},is_inf:{sql:"COALESCE(${value} = 'inf'::FLOAT OR ${value} = '-inf'::FLOAT, false)"},is_nan:{sql:"COALESCE(${value} = 'NAN'::FLOAT, false)"},length:{function:"LENGTH"},byte_length:{sql:"CEIL(BIT_LENGTH(${value}) / 8)"},log:{sql:"LOG(${base}, ${value})"},rand:{sql:"UNIFORM(0::FLOAT, 1::FLOAT, RANDOM())"},regexp_extract:{sql:"REGEXP_SUBSTR(${value}, ${pattern}, 1, 1, 'e')"},starts_with:{sql:"COALESCE(STARTSWITH(${value}, ${prefix}), false)"},ends_with:{sql:"COALESCE(ENDSWITH(${value}, ${suffix}), false)"},strpos:{sql:"POSITION(${search_string}, ${test_string})"},trunc:{to_integer:{sql:"CASE WHEN ${value} < 0 THEN CEIL(${value}) ELSE FLOOR(${value}) END"},to_precision:{sql:"CASE WHEN ${value} < 0 THEN CEIL(${value} * POW(10, ${precision})) / POW(10, ${precision}) ELSE FLOOR(${value} * POW(10, ${precision})) / POW(10, ${precision}) END"}}},Object.defineProperty(AE,"__esModule",{value:!0}),AE.SnowflakeDialect=void 0;const dxe=Nt,es=Ke,Hk=Ul,xp=Ml,hxe=vE,pxe=SE,gxe={day_of_week:"dayofweek",day_of_year:"dayofyear"},mxe={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 yxe extends xp.Dialect{constructor(){super(...arguments),this.name="snowflake",this.experimental=!1,this.defaultNumberType="NUMBER",this.defaultDecimalType="NUMBER",this.udfPrefix="__udf",this.hasFinalStage=!1,this.divisionIsInteger=!1,this.supportsSumDistinctFunction=!0,this.supportsSafeCast=!0,this.supportsNesting=!0,this.defaultSampling={rows:5e4},this.supportsHyperLogLog=!0,this.unnestWithNumbers=!1,this.supportUnnestArrayAgg=!1,this.supportsAggDistinct=!1,this.supportsCTEinCoorelatedSubQueries=!1,this.dontUnionIndex=!1,this.supportsQualify=!1,this.supportsPipelinesInViews=!1,this.supportsComplexFilteredSources=!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=>`
|
|
61
61
|
${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){const u=this.sqlMaybeQuoteIdentifier(n);return s?`LEFT JOIN lateral flatten(input => ${e}) as ${u}`:`LEFT JOIN LATERAL FLATTEN(INPUT => ifnull(${e},[1])) AS ${u}`}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})`}sqlSumDistinct(e,n,r){const i=this.sqlSumDistinctHashedKey(e),s=1e8,o=`(COALESCE(${n},0)*${s})`,u=`(SUM(DISTINCT ${i} + ${o}) - SUM(DISTINCT ${i}))/${s}`;if(r==="SUM")return u;if(r==="AVG")return`(${u})/NULLIF(COUNT(DISTINCT CASE WHEN ${n} IS NOT NULL THEN ${e} END),0)`;throw new Error(`Unknown Symmetric Aggregate function ${r}`)}sqlGenerateUUID(){return"UUID_STRING()"}sqlFieldReference(e,n,r,i){const s=this.sqlMaybeQuoteIdentifier(r);if(r==="__row_id")return`"${e}".INDEX::varchar`;if(n.startsWith("array")){let o=`"${e}".value`;switch(n==="array[record]"&&(o+=`:${s}`),i){case"record":case"array":i="VARIANT";break;case"string":i="VARCHAR";break;case"number":i="DOUBLE";break;case"struct":throw new Error("NOT STRUCT PLEASE")}return`${o}::${i}`}else if(n==="record")return`${e}:${s}`;return`${e}.${s}`}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.replace(/"/g,'""')+'"'}sqlCreateTableAsSelect(e,n){return`
|
|
62
62
|
CREATE TEMP TABLE IF NOT EXISTS \`${e}\`
|
|
63
63
|
AS (
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@malloydata/render",
|
|
3
|
-
"version": "0.0.226-
|
|
3
|
+
"version": "0.0.226-dev250113232339",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "dist/module/index.umd.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"build-types": "tsc --build --declaration --emitDeclarationOnly"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@malloydata/malloy": "^0.0.226-
|
|
34
|
+
"@malloydata/malloy": "^0.0.226-dev250113232339",
|
|
35
35
|
"@tanstack/solid-virtual": "^3.10.4",
|
|
36
36
|
"component-register": "^0.8.6",
|
|
37
37
|
"lodash": "^4.17.20",
|