@rex0220/kintone-sql-tools 3.19.0 → 3.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,13 +1,13 @@
1
- "use strict";var Hi=Object.defineProperty;var Zc=Object.getOwnPropertyDescriptor;var ep=Object.getOwnPropertyNames;var tp=Object.prototype.hasOwnProperty;var rp=(e,t)=>{for(var r in t)Hi(e,r,{get:t[r],enumerable:!0})},np=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of ep(t))!tp.call(e,i)&&i!==r&&Hi(e,i,{get:()=>t[i],enumerable:!(n=Zc(t,i))||n.enumerable});return e};var ip=e=>np(Hi({},"__esModule",{value:!0}),e);var cg={};rp(cg,{KsqlEngineError:()=>me,createReadonlyKintoneClient:()=>Gc,explainQuery:()=>Qc,runQuery:()=>Jc,version:()=>ug});module.exports=ip(cg);async function Ee(e,t,r,n,i={}){let o=i.pageSize??op,s=Math.max(1,i.parallel??sp),a=i.maxRecords??ap,l=i.onLimit??"error",p=i.stopAfter;if(p!==void 0&&(!Number.isSafeInteger(p)||p<=0||p>a))throw new RangeError("stopAfter must be a positive safe integer <= maxRecords");let d=p??a,c=n.length>0&&!n.includes("$id")?[...n,"$id"]:n,u=[],f=!1,E=`\u53D6\u5F97\u4EF6\u6570\u304C\u4E0A\u9650\uFF08${a} \u4EF6\uFF09\u3092\u8D85\u3048\u307E\u3057\u305F\u3002WHERE \u53E5\u3067\u7D5E\u308A\u8FBC\u3080\u304B\u3001maxRecords \u3092\u5F15\u304D\u4E0A\u3052\u3066\u304F\u3060\u3055\u3044\u3002`,R=0,m=0,g=Qs(r,R),y=await Js(e,t,g,c,o,m);if(Xs(y,i),u.push(...y.records),p!==void 0&&u.length>=p)return u.slice(0,p);if(u.length>a){if(l==="truncate")return!f&&i.onTruncate&&(i.onTruncate(a),f=!0),u.slice(0,a);throw new ye(E)}if(y.records.length<o)return u;for(m+=o,m>=Yi&&(R=Zs(y.records),m=0);;){if(p!==void 0&&u.length>=p)return u.slice(0,p);if(u.length>=a){if(l==="truncate")return!f&&i.onTruncate&&(i.onTruncate(a),f=!0),u.slice(0,a);throw new ye(E)}let T=d-u.length,A=Math.ceil(T/o),N=Math.max(1,Math.min(s,A)),w=[];for(let P=0;P<N;P++){let h=m+P*o;if(h>=Yi)break;w.push(h)}let L=Qs(r,R),b=await Promise.all(w.map(P=>Js(e,t,L,c,o,P)));for(let P of b)Xs(P,i);let D=!1;for(let P of b){if(u.push(...P.records),p!==void 0&&u.length>=p)return u.slice(0,p);if(u.length>a){if(l==="truncate")return!f&&i.onTruncate&&(i.onTruncate(a),f=!0),u.slice(0,a);throw new ye(E)}if(P.records.length<o){D=!0;break}}if(D)break;if(m+=o*w.length,m>=Yi){let P=b[b.length-1];R=Zs(P.records),m=0}}return u}function Xs(e,t){e.searchAborted&&t.onSearchAborted?.()}function ea(e){return e.map(t=>{let r=t.$id?.value;if(r===void 0)throw new Error('\u30EC\u30B3\u30FC\u30C9\u306B $id \u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093\u3002fields \u306B "$id" \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002');let n=Number(r);if(!Number.isFinite(n))throw new Error(`$id \u306E\u5024\u304C\u6570\u5024\u3067\u306F\u3042\u308A\u307E\u305B\u3093: ${r}`);return n})}var op=500,sp=1,ap=1e4,Yi=1e4;async function Js(e,t,r,n,i,o){let s=lp(r,i,o);return e({app:t,query:s,fields:n})}function Qs(e,t){let r=e.trimEnd();if(t<=0)return r?`${r} order by $id asc`:"order by $id asc";let n=`$id > ${t} order by $id asc`;return r?`(${r}) and ${n}`:n}function lp(e,t,r){let n=e.trimEnd(),i=`limit ${t} offset ${r}`;return n?`${n} ${i}`:i}function Zs(e){let r=e[e.length-1]?.$id?.value;if(r===void 0)return 0;let n=Number(r);return Number.isFinite(n)?n:0}var ye=class extends Error{constructor(t){super(t),this.name="FetchAllLimitError"}};var An=new Map([["UNION","UNION"],["ALL","ALL"],["WITH","WITH"],["SHOW","SHOW"],["DESCRIBE","DESCRIBE"],["APPS","APPS"],["EXPLAIN","EXPLAIN"],["UPSERT","UPSERT"],["REORDER","REORDER"],["DUPLICATE","DUPLICATE"],["SELECT","SELECT"],["DISTINCT","DISTINCT"],["FROM","FROM"],["AS","AS"],["WHERE","WHERE"],["INSERT","INSERT"],["INTO","INTO"],["VALUES","VALUES"],["UPDATE","UPDATE"],["SET","SET"],["DELETE","DELETE"],["INNER","INNER"],["LEFT","LEFT"],["RIGHT","RIGHT"],["JOIN","JOIN"],["ON","ON"],["GROUP","GROUP"],["BY","BY"],["HAVING","HAVING"],["ORDER","ORDER"],["KORDER","KORDER"],["ASC","ASC"],["DESC","DESC"],["LIMIT","LIMIT"],["OFFSET","OFFSET"],["COUNT","COUNT"],["SUM","SUM"],["AVG","AVG"],["MAX","MAX"],["MIN","MIN"],["GROUP_CONCAT","GROUP_CONCAT"],["STDDEV_POP","STDDEV_POP"],["STDDEV_SAMP","STDDEV_SAMP"],["VAR_POP","VAR_POP"],["VAR_SAMP","VAR_SAMP"],["MEDIAN","MEDIAN"],["MODE","MODE"],["ROW_NUMBER","ROW_NUMBER"],["RANK","RANK"],["DENSE_RANK","DENSE_RANK"],["ASSERT","ASSERT"],["AND","AND"],["OR","OR"],["NOT","NOT"],["EXISTS","EXISTS"],["IS","IS"],["NULL","NULL"],["LIKE","LIKE"],["KLIKE","KLIKE"],["IN","IN"],["BETWEEN","BETWEEN"],["TODAY","TODAY"],["NOW","NOW"],["LOGINUSER","LOGINUSER"],["CASE","CASE"],["WHEN","WHEN"],["THEN","THEN"],["ELSE","ELSE"],["END","END"],["UPPER","UPPER"],["LOWER","LOWER"],["TRIM","TRIM"],["LTRIM","LTRIM"],["RTRIM","RTRIM"],["LENGTH","LENGTH"],["LENGTH_CHAR","LENGTH_CHAR"],["SUBSTRING","SUBSTRING"],["SUBSTR","SUBSTR"],["CONCAT","CONCAT"],["REPLACE","REPLACE"],["REGEXP_LIKE","REGEXP_LIKE"],["REGEXP_REPLACE","REGEXP_REPLACE"],["REGEXP_SUBSTR","REGEXP_SUBSTR"],["COALESCE","COALESCE"],["NULLIF","NULLIF"],["ISNULL","ISNULL"],["INSTR","INSTR"],["GREATEST","GREATEST"],["LEAST","LEAST"],["LPAD","LPAD"],["RPAD","RPAD"],["TRANSLATE","TRANSLATE"],["CAST","CAST"],["CONVERT","CONVERT"],["FORMAT","FORMAT"],["ROUND","ROUND"],["FLOOR","FLOOR"],["CEIL","CEIL"],["CEILING","CEILING"],["TRUNCATE","TRUNCATE"],["TRUNC","TRUNC"],["ABS","ABS"],["MOD","MOD"],["POWER","POWER"],["POW","POW"],["SQRT","SQRT"],["YEAR","YEAR"],["MONTH","MONTH"],["DAY","DAY"],["DAYOFWEEK","DAYOFWEEK"],["QUARTER","QUARTER"],["WEEK","WEEK"],["DATE_FORMAT","DATE_FORMAT"],["DATEDIFF","DATEDIFF"],["DATE_ADD","DATE_ADD"],["LAST_DAY","LAST_DAY"],["IF","IF"]]);var le=class extends Error{constructor(r,n,i,o=!1){let s=i.slice(Math.max(0,n-10),n+10);super(`${r}\uFF08\u4F4D\u7F6E ${n}\u3001\u524D\u5F8C: \u300C${s}\u300D\uFF09`);this.pos=n;this.input=i;this.unterminated=o;this.name="LexError"}},Ft=class{constructor(t){this.input=t;this.pos=0}tokenize(){let t=[];for(;;){let r=this.nextToken();if(t.push(r),r.kind==="EOF")break}return t}nextToken(){if(this.skipWhitespaceAndComments(),this.pos>=this.input.length)return this.makeToken("EOF","",this.pos);let t=this.pos,r=this.input[this.pos];if(r==="'")return this.readString(t);if(r==="`")return this.readBacktickIdent(t);if(xt(r))return this.readNumber(t);let n=this.tryReadOperator(t);if(n)return n;if(ji(r))return this.readIdentOrKeyword(t);if(r==="#")return this.readHashIdent(t);if(r==="@")return this.readVariable(t);throw new le(`\u4E88\u671F\u3057\u306A\u3044\u6587\u5B57 \u300C${r}\u300D \u3067\u3059`,this.pos,this.input)}readString(t){this.pos++;let r="";for(;this.pos<this.input.length;){let n=this.input[this.pos];if(n==="'")if(this.pos++,this.pos<this.input.length&&this.input[this.pos]==="'")r+="'",this.pos++;else return this.makeToken("STRING",r,t);else r+=n,this.pos++}throw new le("\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u307E\u305B\u3093",t,this.input,!0)}readBacktickIdent(t){this.pos++;let r="";for(;this.pos<this.input.length;){let n=this.input[this.pos];if(n==="`")return this.pos++,this.makeToken("BIDENT",r,t);r+=n,this.pos++}throw new le("\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u8B58\u5225\u5B50\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u307E\u305B\u3093",t,this.input,!0)}readNumber(t){for(;this.pos<this.input.length&&xt(this.input[this.pos]);)this.pos++;if(this.pos<this.input.length&&this.input[this.pos]==="."&&this.pos+1<this.input.length&&xt(this.input[this.pos+1]))for(this.pos++;this.pos<this.input.length&&xt(this.input[this.pos]);)this.pos++;if(this.pos<this.input.length&&(this.input[this.pos]==="e"||this.input[this.pos]==="E")){if(this.pos++,this.pos<this.input.length&&(this.input[this.pos]==="+"||this.input[this.pos]==="-")&&this.pos++,this.pos>=this.input.length||!xt(this.input[this.pos]))throw new le("\u6307\u6570\u90E8\u306B\u306F\u6570\u5B57\u304C\u5FC5\u8981\u3067\u3059",t,this.input,this.pos>=this.input.length);for(;this.pos<this.input.length&&xt(this.input[this.pos]);)this.pos++}return this.makeToken("NUMBER",this.input.slice(t,this.pos),t)}tryReadOperator(t){let r=this.input[this.pos],n=this.input[this.pos+1]??"";if(r==="!"&&n==="=")return this.pos+=2,this.makeToken("!=","!=",t);if(r==="<"&&n===">")return this.pos+=2,this.makeToken("<>","<>",t);if(r===">"&&n==="=")return this.pos+=2,this.makeToken(">=",">=",t);if(r==="<"&&n==="=")return this.pos+=2,this.makeToken("<=","<=",t);if(r==="|"&&n==="|")return this.pos+=2,this.makeToken("||","||",t);switch(r){case"=":return this.pos++,this.makeToken("=","=",t);case">":return this.pos++,this.makeToken(">",">",t);case"<":return this.pos++,this.makeToken("<","<",t);case"*":return this.pos++,this.makeToken("*","*",t);case"+":return this.pos++,this.makeToken("+","+",t);case"-":return this.pos++,this.makeToken("-","-",t);case"/":return this.pos++,this.makeToken("/","/",t);case"%":return this.pos++,this.makeToken("%","%",t);case"(":return this.pos++,this.makeToken("(","(",t);case")":return this.pos++,this.makeToken(")",")",t);case"[":return this.pos++,this.makeToken("[","[",t);case"]":return this.pos++,this.makeToken("]","]",t);case",":return this.pos++,this.makeToken(",",",",t);case".":return this.pos++,this.makeToken(".",".",t);case";":return this.pos++,this.makeToken(";",";",t)}return null}readIdentOrKeyword(t){for(;this.pos<this.input.length&&ta(this.input[this.pos]);)this.pos++;let r=this.input.slice(t,this.pos),n=r.toUpperCase(),i=An.get(n)??"IDENT",o=i==="IDENT"?r:n;return this.makeToken(i,o,t)}readHashIdent(t){this.pos++;let r=this.input[this.pos]??"";if(!ji(r))throw new le("\u300C#\u300D \u306E\u76F4\u5F8C\u306B\u306F\u8B58\u5225\u5B50\u304C\u5FC5\u8981\u3067\u3059",t,this.input);for(;this.pos<this.input.length&&ta(this.input[this.pos]);)this.pos++;let n=this.input.slice(t,this.pos);if(this.input[this.pos]==="@")throw new le(`@profile is not allowed on temp table ${n}.`,this.pos,this.input);return this.makeToken("IDENT",n,t)}readVariable(t){this.pos++;let r=this.input[this.pos]??"";if(!/[A-Za-z_]/.test(r))throw new le("\u300C@\u300D \u306E\u76F4\u5F8C\u306B\u306F\u82F1\u5B57\u307E\u305F\u306F _ \u3067\u59CB\u307E\u308B\u5909\u6570\u540D\u304C\u5FC5\u8981\u3067\u3059",t,this.input);for(this.pos++;this.pos<this.input.length&&/[A-Za-z0-9_]/.test(this.input[this.pos]);)this.pos++;if(this.pos-t-1>64)throw new le("\u5909\u6570\u540D\u306F 64 \u6587\u5B57\u4EE5\u5185\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",t,this.input);return this.makeToken("VARIABLE",this.input.slice(t,this.pos),t)}skipWhitespaceAndComments(){for(;this.pos<this.input.length;){let t=this.input[this.pos];if(t===" "||t===" "||t==="\r"||t===`
1
+ "use strict";var eo=Object.defineProperty;var Ap=Object.getOwnPropertyDescriptor;var Sp=Object.getOwnPropertyNames;var Tp=Object.prototype.hasOwnProperty;var wp=(e,t)=>{for(var r in t)eo(e,r,{get:t[r],enumerable:!0})},Ip=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Sp(t))!Tp.call(e,i)&&i!==r&&eo(e,i,{get:()=>t[i],enumerable:!(n=Ap(t,i))||n.enumerable});return e};var bp=e=>Ip(eo({},"__esModule",{value:!0}),e);var Xh={};wp(Xh,{KsqlEngineError:()=>me,createReadonlyKintoneClient:()=>up,explainQuery:()=>yp,runQuery:()=>gp,version:()=>zh});module.exports=bp(Xh);async function Ee(e,t,r,n,i={}){let o=i.pageSize??Pp,a=Math.max(1,i.parallel??Np),s=i.maxRecords??Cp,l=i.onLimit??"error",d=i.stopAfter;if(d!==void 0&&(!Number.isSafeInteger(d)||d<=0||d>s))throw new RangeError("stopAfter must be a positive safe integer <= maxRecords");let p=d??s,c=n.length>0&&!n.includes("$id")?[...n,"$id"]:n,u=[],f=!1,E=`\u53D6\u5F97\u4EF6\u6570\u304C\u4E0A\u9650\uFF08${s} \u4EF6\uFF09\u3092\u8D85\u3048\u307E\u3057\u305F\u3002WHERE \u53E5\u3067\u7D5E\u308A\u8FBC\u3080\u304B\u3001maxRecords \u3092\u5F15\u304D\u4E0A\u3052\u3066\u304F\u3060\u3055\u3044\u3002`,R=0,h=0,m=cs(r,R),g=await us(e,t,m,c,o,h);if(ls(g,i),u.push(...g.records),d!==void 0&&u.length>=d)return u.slice(0,d);if(u.length>s){if(l==="truncate")return!f&&i.onTruncate&&(i.onTruncate(s),f=!0),u.slice(0,s);throw new ye(E)}if(g.records.length<o)return u;for(h+=o,h>=to&&(R=ps(g.records),h=0);;){if(d!==void 0&&u.length>=d)return u.slice(0,d);if(u.length>=s){if(l==="truncate")return!f&&i.onTruncate&&(i.onTruncate(s),f=!0),u.slice(0,s);throw new ye(E)}let T=p-u.length,S=Math.ceil(T/o),P=Math.max(1,Math.min(a,S)),w=[];for(let C=0;C<P;C++){let y=h+C*o;if(y>=to)break;w.push(y)}let _=cs(r,R),I=await Promise.all(w.map(C=>us(e,t,_,c,o,C)));for(let C of I)ls(C,i);let k=!1;for(let C of I){if(u.push(...C.records),d!==void 0&&u.length>=d)return u.slice(0,d);if(u.length>s){if(l==="truncate")return!f&&i.onTruncate&&(i.onTruncate(s),f=!0),u.slice(0,s);throw new ye(E)}if(C.records.length<o){k=!0;break}}if(k)break;if(h+=o*w.length,h>=to){let C=I[I.length-1];R=ps(C.records),h=0}}return u}function ls(e,t){e.searchAborted&&t.onSearchAborted?.()}function ds(e){return e.map(t=>{let r=t.$id?.value;if(r===void 0)throw new Error('\u30EC\u30B3\u30FC\u30C9\u306B $id \u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093\u3002fields \u306B "$id" \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002');let n=Number(r);if(!Number.isFinite(n))throw new Error(`$id \u306E\u5024\u304C\u6570\u5024\u3067\u306F\u3042\u308A\u307E\u305B\u3093: ${r}`);return n})}var Pp=500,Np=1,Cp=1e4,to=1e4;async function us(e,t,r,n,i,o){let a=Op(r,i,o);return e({app:t,query:a,fields:n})}function cs(e,t){let r=e.trimEnd();if(t<=0)return r?`${r} order by $id asc`:"order by $id asc";let n=`$id > ${t} order by $id asc`;return r?`(${r}) and ${n}`:n}function Op(e,t,r){let n=e.trimEnd(),i=`limit ${t} offset ${r}`;return n?`${n} ${i}`:i}function ps(e){let r=e[e.length-1]?.$id?.value;if(r===void 0)return 0;let n=Number(r);return Number.isFinite(n)?n:0}var ye=class extends Error{constructor(t){super(t),this.name="FetchAllLimitError"}};var Cn=new Map([["UNION","UNION"],["ALL","ALL"],["WITH","WITH"],["SHOW","SHOW"],["DESCRIBE","DESCRIBE"],["APPS","APPS"],["EXPLAIN","EXPLAIN"],["UPSERT","UPSERT"],["REORDER","REORDER"],["DUPLICATE","DUPLICATE"],["SELECT","SELECT"],["DISTINCT","DISTINCT"],["FROM","FROM"],["AS","AS"],["WHERE","WHERE"],["INSERT","INSERT"],["INTO","INTO"],["VALUES","VALUES"],["UPDATE","UPDATE"],["SET","SET"],["DELETE","DELETE"],["INNER","INNER"],["LEFT","LEFT"],["RIGHT","RIGHT"],["JOIN","JOIN"],["ON","ON"],["GROUP","GROUP"],["BY","BY"],["HAVING","HAVING"],["ORDER","ORDER"],["KORDER","KORDER"],["ASC","ASC"],["DESC","DESC"],["LIMIT","LIMIT"],["OFFSET","OFFSET"],["COUNT","COUNT"],["SUM","SUM"],["AVG","AVG"],["MAX","MAX"],["MIN","MIN"],["GROUP_CONCAT","GROUP_CONCAT"],["STDDEV_POP","STDDEV_POP"],["STDDEV_SAMP","STDDEV_SAMP"],["VAR_POP","VAR_POP"],["VAR_SAMP","VAR_SAMP"],["MEDIAN","MEDIAN"],["MODE","MODE"],["ROW_NUMBER","ROW_NUMBER"],["RANK","RANK"],["DENSE_RANK","DENSE_RANK"],["ASSERT","ASSERT"],["AND","AND"],["OR","OR"],["NOT","NOT"],["EXISTS","EXISTS"],["IS","IS"],["NULL","NULL"],["LIKE","LIKE"],["KLIKE","KLIKE"],["IN","IN"],["BETWEEN","BETWEEN"],["TODAY","TODAY"],["NOW","NOW"],["LOGINUSER","LOGINUSER"],["CASE","CASE"],["WHEN","WHEN"],["THEN","THEN"],["ELSE","ELSE"],["END","END"],["UPPER","UPPER"],["LOWER","LOWER"],["TRIM","TRIM"],["LTRIM","LTRIM"],["RTRIM","RTRIM"],["LENGTH","LENGTH"],["LENGTH_CHAR","LENGTH_CHAR"],["SUBSTRING","SUBSTRING"],["SUBSTR","SUBSTR"],["CONCAT","CONCAT"],["REPLACE","REPLACE"],["REGEXP_LIKE","REGEXP_LIKE"],["REGEXP_REPLACE","REGEXP_REPLACE"],["REGEXP_SUBSTR","REGEXP_SUBSTR"],["COALESCE","COALESCE"],["NULLIF","NULLIF"],["ISNULL","ISNULL"],["INSTR","INSTR"],["GREATEST","GREATEST"],["LEAST","LEAST"],["LPAD","LPAD"],["RPAD","RPAD"],["TRANSLATE","TRANSLATE"],["CAST","CAST"],["CONVERT","CONVERT"],["FORMAT","FORMAT"],["ROUND","ROUND"],["FLOOR","FLOOR"],["CEIL","CEIL"],["CEILING","CEILING"],["TRUNCATE","TRUNCATE"],["TRUNC","TRUNC"],["ABS","ABS"],["MOD","MOD"],["POWER","POWER"],["POW","POW"],["SQRT","SQRT"],["YEAR","YEAR"],["MONTH","MONTH"],["DAY","DAY"],["DAYOFWEEK","DAYOFWEEK"],["QUARTER","QUARTER"],["WEEK","WEEK"],["DATE_FORMAT","DATE_FORMAT"],["DATEDIFF","DATEDIFF"],["DATE_ADD","DATE_ADD"],["LAST_DAY","LAST_DAY"],["IF","IF"]]);var le=class extends Error{constructor(r,n,i,o=!1){let a=i.slice(Math.max(0,n-10),n+10);super(`${r}\uFF08\u4F4D\u7F6E ${n}\u3001\u524D\u5F8C: \u300C${a}\u300D\uFF09`);this.pos=n;this.input=i;this.unterminated=o;this.name="LexError"}},Wt=class{constructor(t){this.input=t;this.pos=0}tokenize(){let t=[];for(;;){let r=this.nextToken();if(t.push(r),r.kind==="EOF")break}return t}nextToken(){if(this.skipWhitespaceAndComments(),this.pos>=this.input.length)return this.makeToken("EOF","",this.pos);let t=this.pos,r=this.input[this.pos];if(r==="'")return this.readString(t);if(r==="`")return this.readBacktickIdent(t);if(Vt(r))return this.readNumber(t);let n=this.tryReadOperator(t);if(n)return n;if(ro(r))return this.readIdentOrKeyword(t);if(r==="#")return this.readHashIdent(t);if(r==="@")return this.readVariable(t);throw new le(`\u4E88\u671F\u3057\u306A\u3044\u6587\u5B57 \u300C${r}\u300D \u3067\u3059`,this.pos,this.input)}readString(t){this.pos++;let r="";for(;this.pos<this.input.length;){let n=this.input[this.pos];if(n==="'")if(this.pos++,this.pos<this.input.length&&this.input[this.pos]==="'")r+="'",this.pos++;else return this.makeToken("STRING",r,t);else r+=n,this.pos++}throw new le("\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u307E\u305B\u3093",t,this.input,!0)}readBacktickIdent(t){this.pos++;let r="";for(;this.pos<this.input.length;){let n=this.input[this.pos];if(n==="`")return this.pos++,this.makeToken("BIDENT",r,t);r+=n,this.pos++}throw new le("\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u8B58\u5225\u5B50\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u307E\u305B\u3093",t,this.input,!0)}readNumber(t){for(;this.pos<this.input.length&&Vt(this.input[this.pos]);)this.pos++;if(this.pos<this.input.length&&this.input[this.pos]==="."&&this.pos+1<this.input.length&&Vt(this.input[this.pos+1]))for(this.pos++;this.pos<this.input.length&&Vt(this.input[this.pos]);)this.pos++;if(this.pos<this.input.length&&(this.input[this.pos]==="e"||this.input[this.pos]==="E")){if(this.pos++,this.pos<this.input.length&&(this.input[this.pos]==="+"||this.input[this.pos]==="-")&&this.pos++,this.pos>=this.input.length||!Vt(this.input[this.pos]))throw new le("\u6307\u6570\u90E8\u306B\u306F\u6570\u5B57\u304C\u5FC5\u8981\u3067\u3059",t,this.input,this.pos>=this.input.length);for(;this.pos<this.input.length&&Vt(this.input[this.pos]);)this.pos++}return this.makeToken("NUMBER",this.input.slice(t,this.pos),t)}tryReadOperator(t){let r=this.input[this.pos],n=this.input[this.pos+1]??"";if(r==="!"&&n==="=")return this.pos+=2,this.makeToken("!=","!=",t);if(r==="<"&&n===">")return this.pos+=2,this.makeToken("<>","<>",t);if(r===">"&&n==="=")return this.pos+=2,this.makeToken(">=",">=",t);if(r==="<"&&n==="=")return this.pos+=2,this.makeToken("<=","<=",t);if(r==="|"&&n==="|")return this.pos+=2,this.makeToken("||","||",t);switch(r){case"=":return this.pos++,this.makeToken("=","=",t);case">":return this.pos++,this.makeToken(">",">",t);case"<":return this.pos++,this.makeToken("<","<",t);case"*":return this.pos++,this.makeToken("*","*",t);case"+":return this.pos++,this.makeToken("+","+",t);case"-":return this.pos++,this.makeToken("-","-",t);case"/":return this.pos++,this.makeToken("/","/",t);case"%":return this.pos++,this.makeToken("%","%",t);case"(":return this.pos++,this.makeToken("(","(",t);case")":return this.pos++,this.makeToken(")",")",t);case"[":return this.pos++,this.makeToken("[","[",t);case"]":return this.pos++,this.makeToken("]","]",t);case",":return this.pos++,this.makeToken(",",",",t);case".":return this.pos++,this.makeToken(".",".",t);case";":return this.pos++,this.makeToken(";",";",t)}return null}readIdentOrKeyword(t){for(;this.pos<this.input.length&&fs(this.input[this.pos]);)this.pos++;let r=this.input.slice(t,this.pos),n=r.toUpperCase(),i=Cn.get(n)??"IDENT",o=i==="IDENT"?r:n;return this.makeToken(i,o,t)}readHashIdent(t){this.pos++;let r=this.input[this.pos]??"";if(!ro(r))throw new le("\u300C#\u300D \u306E\u76F4\u5F8C\u306B\u306F\u8B58\u5225\u5B50\u304C\u5FC5\u8981\u3067\u3059",t,this.input);for(;this.pos<this.input.length&&fs(this.input[this.pos]);)this.pos++;let n=this.input.slice(t,this.pos);if(this.input[this.pos]==="@")throw new le(`@profile is not allowed on temp table ${n}.`,this.pos,this.input);return this.makeToken("IDENT",n,t)}readVariable(t){this.pos++;let r=this.input[this.pos]??"";if(!/[A-Za-z_]/.test(r))throw new le("\u300C@\u300D \u306E\u76F4\u5F8C\u306B\u306F\u82F1\u5B57\u307E\u305F\u306F _ \u3067\u59CB\u307E\u308B\u5909\u6570\u540D\u304C\u5FC5\u8981\u3067\u3059",t,this.input);for(this.pos++;this.pos<this.input.length&&/[A-Za-z0-9_]/.test(this.input[this.pos]);)this.pos++;if(this.pos-t-1>64)throw new le("\u5909\u6570\u540D\u306F 64 \u6587\u5B57\u4EE5\u5185\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",t,this.input);return this.makeToken("VARIABLE",this.input.slice(t,this.pos),t)}skipWhitespaceAndComments(){for(;this.pos<this.input.length;){let t=this.input[this.pos];if(t===" "||t===" "||t==="\r"||t===`
2
2
  `){this.pos++;continue}if(t==="-"&&this.input[this.pos+1]==="-"){for(;this.pos<this.input.length&&this.input[this.pos]!==`
3
- `;)this.pos++;continue}if(t==="/"&&this.input[this.pos+1]==="*"){let r=this.pos;this.pos+=2;let n=!1;for(;this.pos<this.input.length;){if(this.input[this.pos]==="*"&&this.input[this.pos+1]==="/"){this.pos+=2,n=!0;break}this.pos++}if(!n)throw new le("\u30D6\u30ED\u30C3\u30AF\u30B3\u30E1\u30F3\u30C8\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u307E\u305B\u3093",r,this.input,!0);continue}break}}makeToken(t,r,n){return{kind:t,value:r,pos:n}}};function ji(e){let t=e.codePointAt(0);return t>=65&&t<=90||t>=97&&t<=122||t===95||t===36||up(t)}function ta(e){let t=e.codePointAt(0);return ji(e)||t>=48&&t<=57}function xt(e){let t=e.codePointAt(0);return t>=48&&t<=57}function up(e){return e>=12352&&e<=12543||e>=13312&&e<=40959||e>=63744&&e<=64255||e>=65281&&e<=65376}var cp=/^([+-]?)(?:(\d+)(?:\.(\d*))?|\.(\d+))(?:[eE]([+-]?)(\d+))?$/;function pp(e,t){if(t===void 0)return 0;let r=0;for(let n of t)if(r=r*10+(n.charCodeAt(0)-48),!Number.isSafeInteger(r))return null;return e==="-"?-r:r}function Ae(e){let t=cp.exec(e.trim());if(t===null)return null;let r=pp(t[5],t[6]);if(r===null)return null;let n=t[3]??t[4]??"",i=`${t[2]??""}${n}`.replace(/^0+/,"");if(i==="")return{sign:0,coefficient:"0",scale:0};let o=n.length-r;if(!Number.isSafeInteger(o))return null;let s=/0+$/.exec(i)?.[0].length??0;return s>0&&(i=i.slice(0,-s),o-=s,!Number.isSafeInteger(o))||!Number.isSafeInteger(i.length-o)?null:{sign:t[1]==="-"?-1:1,coefficient:i,scale:o}}function dp(e){if(e.sign===0)return"0";let t=e.coefficient,r;if(e.scale<=0)r=`${t}${"0".repeat(-e.scale)}`;else if(t.length>e.scale){let n=t.length-e.scale;r=`${t.slice(0,n)}.${t.slice(n)}`}else r=`0.${"0".repeat(e.scale-t.length)}${t}`;return e.sign===-1?`-${r}`:r}function na(e){let t=Ae(e);return t===null?null:dp(t)}function fp(e,t){let r=e.coefficient.length-e.scale,n=t.coefficient.length-t.scale;if(!Number.isSafeInteger(r)||!Number.isSafeInteger(n))throw new Error("ArgumentError: exact decimal scale is outside the supported range.");if(r!==n)return r<n?-1:1;let i=Math.max(e.coefficient.length,t.coefficient.length);for(let o=0;o<i;o++){let s=o<e.coefficient.length?e.coefficient.charCodeAt(o):48,a=o<t.coefficient.length?t.coefficient.charCodeAt(o):48;if(s!==a)return s<a?-1:1}return 0}function Sn(e,t){if(e.sign!==t.sign)return e.sign<t.sign?-1:1;if(e.sign===0)return 0;let r=fp(e,t);return e.sign===-1?r===0?0:r===-1?1:-1:r}function Tn(e,t){let r=Ae(e),n=Ae(t);if(r===null||n===null)throw new Error("ArgumentError: compareDecimal requires finite decimal inputs.");return Sn(r,n)}var nt="__NO_FROM__";function ue(e){return{type:"NUMBER",value:Number(e),raw:e}}function G(e){let t=e.raw??String(e.value);return na(t)??t}function ia(e){let t=1;for(let n of e){if(t>Math.floor(64/2)){let i=t*2;throw new Error(`ArgumentError: B65 expanded grouping set count ${i} exceeds limit 64 (reason=GROUPING_SET_LIMIT_EXCEEDED).`)}t*=2}let r=[{items:[]}];for(let n of e)r=r.flatMap(i=>[{items:[...i.items,n]},{items:[...i.items]}]);return r}function Ep(e){return`${e.tableAlias??""}\0${e.field}`}function ne(e){if(e.grouping!==void 0&&e.groupBy.length>0)throw new Error("internal error: SELECT cannot contain both groupBy and grouping.");if(e.grouping===void 0)return e.groupBy.length===0?{type:"NONE"}:{type:"PLAIN",allItems:e.groupBy,sets:[e.groupBy]};let t=new Set,r=[];for(let i of e.grouping.sets)for(let o of i.items){let s=Ep(o);t.has(s)||(t.add(s),r.push(o))}let n=e.grouping.sets.map(i=>({items:[...i.items]}));return{type:"GROUPING_SETS",source:e.grouping.source,allItems:r,sets:n}}function oa(e){return ne(e).type!=="NONE"}function sa(e,t){let r=ne(e);if(r.type!=="GROUPING_SETS")return null;let n=new Map,i=a=>{let l=t(a),p=n.get(l.canonicalId);if(p)return p;let d={...l,field:a};return n.set(d.canonicalId,d),d},o=r.allItems.map(i).filter((a,l,p)=>p.findIndex(d=>d.canonicalId===a.canonicalId)===l),s=r.sets.map(a=>({items:a.items.map(i)}));return{type:"GROUPING_SETS",source:r.source,allItems:o,sets:s}}function wn(e){return`'${e.replace(/'/g,"''")}'`}function Kt(e,t=!1){if(e.type==="FIELD_REF")return e.field;if(e.type==="NUMBER")return G(e);if(e.type==="STRING_FUNC")return zi(e);let r=`${Kt(e.left)}${e.op}${Kt(e.right)}`;return t?r:`(${r})`}function aa(e){if(e.type==="FIELD")return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;if(e.type==="FUNC_FIELD")return zi(e.expr);if(e.type==="ARITH_FIELD")return Kt(e.expr);if(e.type==="GROUPING_FIELD"){let t=e.ref.field;return`GROUPING(${t.tableAlias?`${t.tableAlias}.`:""}${t.field})`}return qi(e.expr)}function ua(e){switch(e.type){case"STRING":return wn(e.value);case"NUMBER":return G(e);case"VARIABLE":return`@${e.name}`;case"VARIABLE_IN_LIST":return`@${e.name}`;case"KINTONE_FUNC":return`${e.name}()`;case"ARRAY":return`[${e.elements.map(t=>wn(t.value)).join(",")}]`;case"IN_LIST":return`(${e.values.map(ua).join(",")})`;case"ARITH_VALUE":return Kt(e.expr);case"CASE_VALUE":return qi(e.expr);case"SUBQUERY_IN_LIST":return"(SUBQUERY)";case"SCALAR_SUBQUERY":return"(SUBQUERY)"}}function yr(e){switch(e.type){case"BINARY":return`${aa(e.left)} ${e.op.replace("_"," ")} ${ua(e.right)}`;case"NULL_CHECK":return`${aa(e.field)} IS ${e.not?"NOT ":""}NULL`;case"LOGICAL":return`(${yr(e.left)} ${e.op} ${yr(e.right)})`;case"NOT":return`NOT (${yr(e.expr)})`;case"GROUP":return`(${yr(e.expr)})`;case"BOOLEAN":return e.value?"TRUE":"FALSE";case"EXISTS":return`${e.not?"NOT ":""}EXISTS (SUBQUERY)`}}function la(e){return e.type==="ARRAY"?`[${e.elements.map(t=>wn(t.value)).join(",")}]`:e.type==="FIELD_REF"||e.type==="ARITH"?Kt(e):mt(e)}function qi(e){let t=e.branches.map(n=>`WHEN ${yr(n.condition)} THEN ${la(n.result)}`).join(" "),r=e.elseResult===null?"":` ELSE ${la(e.elseResult)}`;return`CASE ${t}${r} END`}function Rp(e){return e.type==="AGG_REF"?Se(e.func,e.distinct,e.arg):e.type==="AGG_ARITH"?Ar(e):mt(e)}function zi(e){return`${e.func}(${e.args.map(Rp).join(",")})`}function mt(e){switch(e.type){case"STRING":return wn(e.value);case"NUMBER":return G(e);case"VARIABLE":return`@${e.name}`;case"FIELD":return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;case"STRING_FUNC":return zi(e);case"CASE_WHEN":return qi(e);case"SCALAR_ARITH":return`(${mt(e.left)}${e.op}${mt(e.right)})`;case"CONCAT_OP":return`(${mt(e.left)}||${mt(e.right)})`}}function mp(e){return e.type==="WILDCARD"?"*":e.type==="FIELD_REF"||e.type==="ARITH"?Kt(e,!0):mt(e)}function Se(e,t,r){let n=mp(r);return t?`${e}(DISTINCT ${n})`:`${e}(${n})`}function Ar(e){return e.type==="NUMBER"?G(e):e.type==="AGG_REF"?Se(e.func,e.distinct,e.arg):`${Ar(e.left)}${e.op}${Ar(e.right)}`}var ca=20,Xi=Object.freeze({UPPER:"UPPER",LOWER:"LOWER",TRIM:"TRIM",LTRIM:"LTRIM",RTRIM:"RTRIM",LENGTH:"LENGTH",LENGTH_CHAR:"LENGTH_CHAR",SUBSTRING:"SUBSTRING",SUBSTR:"SUBSTRING",LEFT:"LEFT",RIGHT:"RIGHT",INSTR:"INSTR",CONCAT:"CONCAT",REPLACE:"REPLACE",REGEXP_LIKE:"REGEXP_LIKE",REGEXP_REPLACE:"REGEXP_REPLACE",REGEXP_SUBSTR:"REGEXP_SUBSTR",TRANSLATE:"TRANSLATE",COALESCE:"COALESCE",ISNULL:"ISNULL",NULLIF:"NULLIF",GREATEST:"GREATEST",LEAST:"LEAST",LPAD:"LPAD",RPAD:"RPAD",ROUND:"ROUND",FLOOR:"FLOOR",CEIL:"CEIL",CEILING:"CEIL",TRUNCATE:"TRUNCATE",TRUNC:"TRUNCATE",ABS:"ABS",MOD:"MOD",POWER:"POWER",POW:"POWER",SQRT:"SQRT",FORMAT:"FORMAT",CAST:"CAST",CONVERT:"CAST",YEAR:"YEAR",MONTH:"MONTH",DAY:"DAY",DAYOFWEEK:"DAYOFWEEK",QUARTER:"QUARTER",WEEK:"WEEK",DATE_FORMAT:"DATE_FORMAT",DATEDIFF:"DATEDIFF",DATE_ADD:"DATE_ADD",LAST_DAY:"LAST_DAY"}),da=Object.freeze(["CURRENT_DATE","CURRENT_TIMESTAMP"]),Ji=Object.freeze({COUNT:"COUNT",SUM:"SUM",AVG:"AVG",MAX:"MAX",MIN:"MIN",GROUP_CONCAT:"GROUP_CONCAT",STDDEV_POP:"STDDEV_POP",STDDEV_SAMP:"STDDEV_SAMP",VAR_POP:"VAR_POP",VAR_SAMP:"VAR_SAMP",MEDIAN:"MEDIAN",MODE:"MODE"}),Og=Object.freeze(Object.values(Ji).filter(e=>e!==void 0)),gp=Object.freeze(["COUNT","SUM","AVG","MAX","MIN"]),hp=new Set(gp);function yp(e){return hp.has(e)}var fa=Object.freeze({ROW_NUMBER:"ROW_NUMBER",RANK:"RANK",DENSE_RANK:"DENSE_RANK"}),In=Object.freeze({TODAY:"TODAY",NOW:"NOW",LOGINUSER:"LOGINUSER"});function pa(e){return In[e]!==void 0}var Lg=Object.freeze(Array.from(new Set([...Object.keys(Xi),...da,...Object.keys(Ji),...Object.keys(fa),...Object.keys(In),"IF"]))),Ap=new Set(["IDENT","BIDENT","COUNT","SUM","AVG","MAX","MIN","GROUP_CONCAT","STDDEV_POP","STDDEV_SAMP","VAR_POP","VAR_SAMP","MEDIAN","MODE","ROW_NUMBER","RANK","DENSE_RANK","TODAY","NOW","LOGINUSER","UPPER","LOWER","TRIM","LTRIM","RTRIM","LENGTH","LENGTH_CHAR","SUBSTRING","SUBSTR","CONCAT","REPLACE","TRANSLATE","COALESCE","NULLIF","ISNULL","REGEXP_LIKE","REGEXP_REPLACE","REGEXP_SUBSTR","LEFT","RIGHT","INSTR","GREATEST","LEAST","LPAD","RPAD","CAST","CONVERT","FORMAT","ROUND","FLOOR","CEIL","CEILING","TRUNCATE","TRUNC","ABS","MOD","POWER","POW","SQRT","YEAR","MONTH","DAY","DAYOFWEEK","QUARTER","WEEK","DATE_FORMAT","DATEDIFF","DATE_ADD","LAST_DAY","IF"]);function Sp(e,t){return e.kind==="("||e.kind==="."||t.kind===")"||t.kind===","||t.kind==="."?!1:t.kind==="("?!Ap.has(e.kind):!0}var S=class extends Error{constructor(r,n){super(`${r}\uFF08\u4F4D\u7F6E ${n.pos}\u3001\u30C8\u30FC\u30AF\u30F3: \u300C${n.value}\u300D\uFF09`);this.token=n;this.name="ParseError"}},Bt=class{constructor(t,r={}){this.tokens=t;this.capabilities=r;this.allowUnaryPlusNumber=!1;this.scalarAllowsAggregateArgs=!0;this.scalarAllowsCase=!0;this.pos=0;this.insideAggregateArg=0;this.groupingFieldContext="FORBIDDEN";this.cteNames=new Set;this.tempTableRefs=[]}parse(){let t=this.parseStatements();if(t.length===0)throw new S("SQL \u6587\u304C\u3042\u308A\u307E\u305B\u3093",this.peek());if(t.length>1)throw new S("\u3053\u306E API \u306F\u5358\u6587\u306E\u307F\u53D7\u3051\u4ED8\u3051\u307E\u3059\uFF08\u8907\u6587\u306F\u30D0\u30C3\u30C1\u5B9F\u884C API \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",this.peek());if(this.tempTableRefs.length>0){let r=this.tempTableRefs[0];throw new S(`temp table ${r.value} is not defined in this batch.`,r)}return t[0]}parseStatements(){let t=[];for(;;){for(;this.peek().kind===";";)this.advance();if(this.peek().kind==="EOF")break;let r=this.peek();if(t.push(this.parseStatement()),t.length>ca)throw new S(`batch exceeds ${ca} statements.`,r);let n=this.peek();if(n.kind!==";"&&n.kind!=="EOF")throw new S("\u6587\u306E\u533A\u5207\u308A\u306B\u306F ; \u304C\u5FC5\u8981\u3067\u3059",n)}return this.expect("EOF"),t}parseStatement(){let t=this.peek();switch(t.kind){case"WITH":return this.parseWith();case"SELECT":return this.tryParseUnionChain(this.parseSelect(!0));case"INSERT":return this.parseInsert();case"UPDATE":return this.parseUpdate();case"DELETE":return this.parseDelete();case"REORDER":return this.parseReorder();case"UPSERT":return this.parseUpsert();case"SHOW":return this.parseShow();case"DESCRIBE":case"DESC":return this.parseDescribe();case"EXPLAIN":return this.parseExplain();case"SET":return this.parseSetVariable();case"ASSERT":return this.parseAssert();case"IDENT":{let r=t.value.toUpperCase();if(r==="CREATE")return this.parseCreateTempTable();if(r==="DROP")return this.parseDropTempTable();if(r==="DECLARE")return this.parseDeclareVariable();if(r==="VALIDATE")return this.parseValidate();if(r==="IMPORT"){if(!this.capabilities.import)throw new S("IMPORT is not supported (capability is disabled).",t);return this.parseImport()}break}default:break}throw new S("SELECT / INSERT / UPDATE / DELETE / REORDER / VALIDATE / WITH / SHOW / DESCRIBE / EXPLAIN / CREATE TEMP TABLE / DROP TEMP TABLE / SET / DECLARE / ASSERT \u306E\u3044\u305A\u308C\u304B\u3067\u59CB\u307E\u308B SQL \u6587\u304C\u5FC5\u8981\u3067\u3059",t)}parseSetVariable(){this.expect("SET");let t=this.expect("VARIABLE","SET \u306E\u5F8C\u306B\u306F\u5909\u6570\u540D\uFF08\u4F8B: @name\uFF09\u304C\u5FC5\u8981\u3067\u3059");this.expect("=");let r=this.peek().kind==="["?this.parseArrayLiteral():this.parseScalarExpr("SET",!0);return{type:"SET_VARIABLE",name:t.value.slice(1).toLowerCase(),expr:r}}parseDeclareVariable(){this.advance();let t=this.expect("VARIABLE","DECLARE \u306E\u5F8C\u306B\u306F\u5909\u6570\u540D\uFF08\u4F8B: @name\uFF09\u304C\u5FC5\u8981\u3067\u3059");this.expect("=");let r=this.parseScalarExpr("DECLARE",!1);if(r.type==="SCALAR_SUBQUERY")throw new S("DECLARE \u306E\u65E2\u5B9A\u5024\u306B\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());return{type:"DECLARE_VARIABLE",name:t.value.slice(1).toLowerCase(),default:r}}parseScalarExpr(t,r){let n=this.peek();if(n.kind==="VARIABLE")throw new S(`${t} \u306E\u53F3\u8FBA\u3067\u306F\u4ED6\u306E\u5909\u6570\u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093`,n);if(n.kind==="NULL")throw new S(`${t} \u306E\u53F3\u8FBA\u3067 NULL \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`,n);if(n.kind==="("&&this.peekAt(1).kind==="SELECT"){if(!r)throw new S("DECLARE \u306E\u65E2\u5B9A\u5024\u306B\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);this.advance();let s=this.parseSelect();if(this.expect(")"),this.isArithOp(this.peek().kind))throw new S("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u5F8C\u306B\u7B97\u8853\u6F14\u7B97\u5B50\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(!s.columns.some(l=>l.type==="WILDCARD"||l.type==="PARENT_WILDCARD")&&s.columns.length!==1)throw new S("scalar subquery in SET must return exactly 1 column.",n);return{type:"SCALAR_SUBQUERY",query:s}}if(n.kind==="STRING")return this.advance(),{type:"STRING",value:n.value};let i=In[n.kind];if(i==="LOGINUSER")throw new S(`${t} \u306E\u53F3\u8FBA\u3067 LOGINUSER() \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u5B9F\u884C\u74B0\u5883\u5171\u901A\u306E\u30ED\u30B0\u30A4\u30F3\u30E6\u30FC\u30B6\u30FC\u89E3\u6C7A\u306F\u672A\u5BFE\u5FDC\u3067\u3059\uFF09`,n);if(i!==void 0)return this.parseSqlValue();let o=this.parseArithAddSub();if(this.rejectNonScalarExpr(o,n,t),o.type==="NUMBER"||o.type==="STRING_FUNC"||o.type==="ARITH")return o;throw new S(`${t} \u306E\u53F3\u8FBA\u306B\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u542B\u307E\u306A\u3044\u30B9\u30AB\u30E9\u30FC\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,n)}rejectNonScalarExpr(t,r,n){if(!(t.type==="STRING"||t.type==="NUMBER")){if(t.type==="FIELD_REF"||t.type==="FIELD"||t.type==="VARIABLE"||t.type==="AGG_REF")throw new S(`${n} \u306E\u53F3\u8FBA\u3067\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u30FB\u96C6\u8A08\u95A2\u6570\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`,r);if(t.type==="ARITH"||t.type==="SCALAR_ARITH"||t.type==="CONCAT_OP"||t.type==="AGG_ARITH"){this.rejectNonScalarExpr(t.left,r,n),this.rejectNonScalarExpr(t.right,r,n);return}if(t.type==="STRING_FUNC"){for(let i of t.args)this.rejectNonScalarExpr(i,r,n);return}throw new S(`${n} \u306E\u53F3\u8FBA\u3067\u306F CASE \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`,r)}}parseCreateTempTable(){this.advance(),this.expectSoftKeyword("TEMP","CREATE \u306E\u5F8C\u306B\u306F TEMP TABLE \u304C\u5FC5\u8981\u3067\u3059\uFF08\u4F8B: CREATE TEMP TABLE #temp AS SELECT ...\uFF09"),this.expectSoftKeyword("TABLE","CREATE TEMP \u306E\u5F8C\u306B\u306F TABLE \u304C\u5FC5\u8981\u3067\u3059");let t=this.parseTempTableName();this.expect("AS","CREATE TEMP TABLE \u306B\u306F AS SELECT \u304C\u5FC5\u8981\u3067\u3059");let r=this.peek(),n;if(r.kind==="WITH")n=this.parseWith();else if(r.kind==="SELECT")n=this.tryParseUnionChain(this.parseSelect());else throw new S("CREATE TEMP TABLE ... AS \u306E\u5F8C\u306B\u306F SELECT / WITH \u304C\u5FC5\u8981\u3067\u3059",r);return{type:"CREATE_TEMP_TABLE",name:t,query:n}}parseDropTempTable(){return this.advance(),this.expectSoftKeyword("TEMP","DROP \u306E\u5F8C\u306B\u306F TEMP TABLE \u304C\u5FC5\u8981\u3067\u3059\uFF08\u4F8B: DROP TEMP TABLE #temp\uFF09"),this.expectSoftKeyword("TABLE","DROP TEMP \u306E\u5F8C\u306B\u306F TABLE \u304C\u5FC5\u8981\u3067\u3059"),{type:"DROP_TEMP_TABLE",name:this.parseTempTableName()}}expectSoftKeyword(t,r){let n=this.peek();if(n.kind==="IDENT"&&n.value.toUpperCase()===t){this.advance();return}throw new S(r,n)}parseTempTableName(){let t=this.peek();if(t.kind==="IDENT"&&t.value.startsWith("#"))return this.advance(),t.value;throw new S("\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u306F # \u3067\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08\u4F8B: #temp\uFF09",t)}parseShow(){if(this.advance(),!this.consume("APPS"))throw new S("SHOW \u306E\u5F8C\u306B\u306F APPS \u304C\u5FC5\u8981\u3067\u3059\uFF08\u4F8B: SHOW APPS\uFF09",this.peek());return{type:"SHOW_APPS"}}parseDescribe(){this.advance();let t=this.parseIdentifier(),{appId:r,subtableCode:n}=Ve(t,this.prev());if(n)throw new S("DESCRIBE \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u540D\u3092\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093",this.prev());return{type:"DESCRIBE",appId:r}}parseExplain(){this.advance();let t=this.peek(),r;if(t.kind==="WITH"){let n=this.parseWith();if(n.type!=="WITH")throw new S("EXPLAIN \u306B\u7D9A\u304F WITH \u53E5\u304C\u4E0D\u6B63\u3067\u3059",t);r=n}else if(t.kind==="SELECT"){let n=this.parseSelect(!0);r=this.tryParseUnionChain(n)}else if(t.kind==="INSERT")r=this.parseInsert();else if(t.kind==="UPSERT")r=this.parseUpsert();else if(t.kind==="UPDATE")r=this.parseUpdate();else if(t.kind==="DELETE")r=this.parseDelete();else if(t.kind==="REORDER")r=this.parseReorder();else if(t.kind==="IDENT"&&t.value.toUpperCase()==="VALIDATE")r=this.parseValidate();else if(t.kind==="IDENT"&&t.value.toUpperCase()==="IMPORT"){if(!this.capabilities.import)throw new S("IMPORT is not supported (capability is disabled).",t);r=this.parseImport()}else throw new S("EXPLAIN \u306E\u5F8C\u306B\u306F SELECT / WITH / INSERT / UPSERT / UPDATE / DELETE / REORDER / VALIDATE \u304C\u5FC5\u8981\u3067\u3059",t);return{type:"EXPLAIN",query:r}}parseImport(){this.advance();let t;this.peek().kind==="UPDATE"&&(this.advance(),t="UPDATE_RECORD_NUMBER"),this.expect("INTO"),this.rejectTempTableDml();let r=this.parseIdentifier(),{appId:n,subtableCode:i}=Ve(r,this.prev());if(i)throw new S("IMPORT does not support subtables in Phase 1.",this.prev());this.expect("(");let o=[],s=[],a=new Set;for(;;){let w=this.parseIdentifier();if(a.has(w))throw new S(`IMPORT target ${w} is declared more than once.`,this.prev());if(a.add(w),this.peek().kind==="("){this.advance();let L=this.parseIdentList();if(this.expect(")"),new Set(L).size!==L.length)throw new S(`IMPORT subtable ${w} contains duplicate child declarations.`,this.prev());let b;if(this.isSoftKeyword("ROW")){this.advance();for(let D of["ID","SOURCE"]){if(!this.isSoftKeyword(D))throw new S("ROW must be followed by ID SOURCE <header>.",this.peek());this.advance()}b=this.parseIdentifier()}o.push({kind:"SUBTABLE",subtableCode:w,children:L,...b?{rowIdSourceHeader:b}:{}})}else s.push(w),o.push({kind:"FIELD",field:w});if(this.peek().kind!==",")break;this.advance()}if(this.expect(")"),this.expect("FROM"),!this.isSoftKeyword("CSV")&&!this.isSoftKeyword("JSON"))throw new S("IMPORT FROM requires CSV or JSON.",this.peek());let l=this.peek().value.toUpperCase();this.advance();let p=this.parseIdentifier(),d,c=!0,u;if(this.isSoftKeyword("ENCODING")){if(l==="JSON")throw new S("JSON source is UTF-8 only; ENCODING is not allowed.",this.peek());this.advance();let w=this.parseIdentifier().toUpperCase();if(w!=="UTF8"&&w!=="SJIS")throw new S("ENCODING must be UTF8 or SJIS.",this.prev());d=w==="UTF8"?"utf8":"sjis"}if(this.peek().kind==="NOT"&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="HEADER"){if(l==="JSON")throw new S("NO HEADER is CSV-only.",this.peek());this.advance(),this.advance(),c=!1}else if(this.isSoftKeyword("NO")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="HEADER"){if(l==="JSON")throw new S("NO HEADER is CSV-only.",this.peek());this.advance(),this.advance(),c=!1}if(this.isSoftKeyword("COLUMNS")){if(l==="JSON")throw new S("COLUMNS is CSV-only.",this.peek());if(c)throw new S("COLUMNS requires NO HEADER.",this.peek());this.advance(),this.expect("("),u=this.parseIdentList(),this.expect(")")}let f;if(this.peek().kind==="SELECT"){if(l==="JSON")throw new S("SELECT projection is CSV-only.",this.peek());if(f=this.parseSelect(),f.from.cteName!==nt||f.joins.length>0)throw new S("IMPORT projection cannot use FROM or JOIN.",this.prev());if(f.where||f.groupBy.length||f.grouping!==void 0||f.having||f.orderBy.length||f.limit!==null||f.offset!==null)throw new S("IMPORT projection supports SELECT expressions only.",this.prev());if(this.validateImportProjectionScope(f,this.prev()),o.some(w=>w.kind==="SUBTABLE"))throw new S("IMPORT subtable sources cannot use SELECT projection.",this.prev());if(f.columns.length!==s.length)throw new S(`IMPORT projection has ${f.columns.length} columns; target has ${s.length}.`,this.prev())}let E="POSITION",R=!1;if(this.peek().kind==="BY"||this.isSoftKeyword("BY")){if(l==="JSON")throw new S("BY NAME is CSV-only.",this.peek());if(this.advance(),!this.isSoftKeyword("NAME"))throw new S("BY must be followed by NAME in IMPORT.",this.peek());if(this.advance(),!c)throw new S("BY NAME requires HEADER.",this.prev());if(f)throw new S("BY NAME and SELECT projection are mutually exclusive.",this.prev());if(E="BY_NAME",this.isSoftKeyword("IGNORE")){if(this.advance(),!this.isSoftKeyword("UNKNOWN"))throw new S("IGNORE must be followed by UNKNOWN COLUMNS.",this.peek());if(this.advance(),!this.isSoftKeyword("COLUMNS"))throw new S("IGNORE UNKNOWN must be followed by COLUMNS.",this.peek());this.advance(),R=!0}}let m,g;if(this.isSoftKeyword("MATCH")){this.advance();for(let w of["RECORD","NUMBER","SOURCE"]){if(!this.isSoftKeyword(w))throw new S("MATCH must be followed by RECORD NUMBER SOURCE <header>.",this.peek());this.advance()}g=this.parseIdentifier()}this.peek().kind==="ON"&&this.peekAt(1).kind==="DUPLICATE"&&(m=this.parseOnDuplicate());let y;if(this.peek().kind==="REPLACE"||this.isSoftKeyword("REPLACE")){if(this.advance(),!this.isSoftKeyword("SUBTABLES"))throw new S("REPLACE must be followed by SUBTABLES (...).",this.peek());if(this.advance(),this.expect("("),y=this.parseIdentList(),this.expect(")"),new Set(y).size!==y.length)throw new S("REPLACE SUBTABLES contains duplicates.",this.prev())}let T=o.filter(w=>w.kind==="SUBTABLE");if(T.length){if(f)throw new S("IMPORT subtables cannot use SELECT projection.",this.prev());if(l==="JSON"){if(T.some(w=>w.rowIdSourceHeader))throw new S("JSON subtable IMPORT does not accept ROW ID SOURCE.",this.prev());if(y)throw new S("REPLACE SUBTABLES is CSV-only; JSON uses nested-array replacement semantics.",this.prev())}else{if(t!=="UPDATE_RECORD_NUMBER"||!g)throw new S("CSV subtable IMPORT requires IMPORT UPDATE and MATCH RECORD NUMBER SOURCE.",this.prev());if(E!=="BY_NAME")throw new S("CSV subtable IMPORT requires BY NAME.",this.prev());if(!y)throw new S("CSV subtable IMPORT requires REPLACE SUBTABLES (...).",this.prev());let w=new Set(y);for(let L of T){if(!L.rowIdSourceHeader)throw new S(`CSV subtable ${L.subtableCode} requires ROW ID SOURCE <header>.`,this.prev());if(!w.has(L.subtableCode))throw new S(`IMPORT declares child columns for non-replaced subtable ${L.subtableCode}.`,this.prev())}for(let L of w)if(!T.some(b=>b.subtableCode===L))throw new S(`REPLACE SUBTABLES target ${L} is not declared in INTO.`,this.prev())}}else if(y)throw new S("REPLACE SUBTABLES requires subtable targets in INTO.",this.prev());if(t){if(l!=="CSV")throw new S("IMPORT UPDATE supports CSV only.",this.prev());if(E!=="BY_NAME")throw new S("IMPORT UPDATE requires BY NAME.",this.prev());if(!g)throw new S("IMPORT UPDATE requires MATCH RECORD NUMBER SOURCE <header>.",this.peek());if(m)throw new S("IMPORT UPDATE and ON DUPLICATE are mutually exclusive.",this.prev())}else if(g)throw new S("MATCH RECORD NUMBER SOURCE requires IMPORT UPDATE.",this.prev());let A=this.parseCheckGroups(),N=this.parseDmlControlSuffix();return{type:"IMPORT",appId:n,fields:s,targets:o,source:l==="JSON"?{kind:"JSON",sourceName:p}:{kind:"CSV",sourceName:p,encoding:d,hasHeader:c,mappingMode:E,ignoreUnknownColumns:R,...u?{columns:u}:{},...f?{projection:f}:{}},...t?{writeMode:t,recordNumberSourceHeader:g}:{},...y?{replaceSubtables:y}:{},...m?{keyFields:m}:{},...A,...N}}validateImportProjectionScope(t,r){if(Array.isArray(t)){t.forEach(i=>this.validateImportProjectionScope(i,r));return}if(t===null||typeof t!="object")return;let n=t;if(n.type==="SCALAR_SUBQUERY"||n.type==="SCALAR_SUBQUERY_COL")throw new S("IMPORT projection cannot use subqueries.",r);if(typeof n.tableAlias=="string")throw new S("IMPORT projection cannot use qualified column references.",r);Object.values(n).forEach(i=>this.validateImportProjectionScope(i,r))}parseValidate(){let t=this.advance(),r=this.parseIdentifier(),{appId:n,subtableCode:i}=Ve(r,this.prev());if(i)throw new S(`VALIDATE APP${n}$${i} \u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002VALIDATE APP${n} (${i}) \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044`,this.prev());let o;if(this.consume("(")){o=[];do{let c=this.parseIdentifier();if(this.consume("(")){let u=this.peek().kind===")"?[]:this.parseIdentList();this.expect(")"),o.push({kind:"SUBTABLE",subtableCode:c,children:u})}else o.push({kind:"FIELD",field:c})}while(this.consume(","));this.expect(")")}let s;this.isSoftKeyword("SUMMARY")&&(this.advance(),s=!0);let a=this.consume("WHERE")?this.parseWhereExpr():null,l=this.parseCheckGroups(),p;if(this.consume("INTO")){let c=this.peek();if(c.kind!=="IDENT"||!c.value.startsWith("#"))throw new S("VALIDATE INTO \u306B\u306F # \u3067\u59CB\u307E\u308B\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",c);p=this.parseTableName()}let d={type:"VALIDATE",appId:n,targets:o,...s?{summary:s}:{},where:a,...l,...p?{errorTable:p}:{}};return this.assertValidateExpressions(d,t),d}assertValidateExpressions(t,r){let n=i=>{if(Array.isArray(i)){i.forEach(n);return}if(i===null||typeof i!="object")return;let o=i;if(o.type==="EXISTS"||o.type==="SUBQUERY_IN_LIST"||o.type==="SCALAR_SUBQUERY")throw new S("VALIDATE \u306E WHERE / CHECK \u306B\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);if(o.type==="FIELD"&&o.tableAlias!==null&&o.tableAlias!==void 0)throw new S("VALIDATE \u306E WHERE / CHECK \u3067\u306F\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);if(o.type==="FIELD_REF"&&typeof o.field=="string"&&o.field.includes("."))throw new S("VALIDATE \u306E WHERE / CHECK \u3067\u306F\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);Object.values(o).forEach(n)};n(t.where),n(t.checkGroups)}parseAssert(){this.expect("ASSERT");let t=this.pos,r=this.parseAssertOperand(),n=this.peek();if(this.consume("BETWEEN")){let s=this.parseAssertOperand();this.expect("AND","ASSERT \u306E BETWEEN \u306B\u306F AND \u304C\u5FC5\u8981\u3067\u3059\uFF08\u4F8B: ASSERT (SELECT COUNT(*) FROM #t) BETWEEN 1 AND 500\uFF09");let a=this.parseAssertOperand();return this.rejectAssertCompound(),{type:"ASSERT",left:r,op:"BETWEEN",right:null,low:s,high:a,text:this.renderTokenRange(t,this.pos)}}let i=this.tryAssertCompareOp();if(i===null)throw new S("ASSERT \u306B\u306F\u6BD4\u8F03\u6F14\u7B97\u5B50\uFF08= <> < <= > >=\uFF09\u307E\u305F\u306F BETWEEN \u304C\u5FC5\u8981\u3067\u3059\uFF08\u5024\u306E\u307F\u306E ASSERT \u306F\u4E0D\u53EF\uFF09",n);let o=this.parseAssertOperand();return this.rejectAssertCompound(),{type:"ASSERT",left:r,op:i,right:o,low:null,high:null,text:this.renderTokenRange(t,this.pos)}}parseAssertOperand(){let t=this.peek();if(t.kind==="VARIABLE")return this.advance(),{type:"VARIABLE",name:t.value.slice(1).toLowerCase()};if(t.kind==="STRING")return this.advance(),{type:"STRING",value:t.value};if(t.kind==="("&&this.peekAt(1).kind==="SELECT"){this.advance();let r=this.parseSelect();if(this.expect(")"),this.isArithOp(this.peek().kind))throw new S("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u5F8C\u306B\u7B97\u8853\u6F14\u7B97\u5B50\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: ASSERT (SELECT COUNT(*) * 2 FROM APP100) > 10\uFF09",this.peek());if(!r.columns.some(i=>i.type==="WILDCARD"||i.type==="PARENT_WILDCARD")&&r.columns.length>1)throw new S("scalar subquery in ASSERT must return exactly 1 column.",t);return{type:"SCALAR_SUBQUERY",query:r}}if(t.kind==="NUMBER"||t.kind==="("||t.kind==="-"){let r=this.parseArithAddSub();return this.rejectNonLiteralArith(r,t),r.type==="NUMBER",r}throw this.tryStringFuncName()!==null?new S("ASSERT \u306E\u5F0F\u3067\u306F\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",t):new S("ASSERT \u306E\u5F0F\u306B\u306F\u30EA\u30C6\u30E9\u30EB\u30FB\u7B97\u8853\u5F0F\u30FB\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF09",t)}rejectNonLiteralArith(t,r){if(t.type==="FIELD_REF")throw new S(`ASSERT \u3067\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08FROM \u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u304C\u3042\u308A\u307E\u305B\u3093\uFF09: ${t.field}`,r);if(t.type==="STRING_FUNC")throw new S("ASSERT \u306E\u5F0F\u3067\u306F\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",r);t.type==="ARITH"&&(this.rejectNonLiteralArith(t.left,r),this.rejectNonLiteralArith(t.right,r))}tryAssertCompareOp(){switch(this.peek().kind){case"=":return this.advance(),"=";case"!=":return this.advance(),"!=";case"<>":return this.advance(),"<>";case">":return this.advance(),">";case"<":return this.advance(),"<";case">=":return this.advance(),">=";case"<=":return this.advance(),"<=";default:return null}}rejectAssertCompound(){let t=this.peek();if(t.kind==="AND"||t.kind==="OR")throw new S("ASSERT \u306F AND / OR \u306B\u3088\u308B\u8907\u5408\u6761\u4EF6\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093\uFF08\u8907\u6570\u306E ASSERT \u6587\u306B\u5206\u3051\u3066\u304F\u3060\u3055\u3044\uFF09",t)}renderTokenRange(t,r){let n="";for(let i=t;i<r;i++){let o=this.tokens[i],s;o.kind==="STRING"?s=`'${o.value.replace(/'/g,"''")}'`:o.kind==="BIDENT"?s=`\`${o.value}\``:s=o.value,n.length>0&&Sp(this.tokens[i-1],o)&&(n+=" "),n+=s}return n}parseSelect(t=!1){this.expect("SELECT");let r=this.consume("DISTINCT"),n=this.parseSelectColumns(),i=this.consume("FROM"),o=i?this.parseTableRef():{appId:0,alias:null,cteName:nt},s=i?this.parseJoins():[],a=this.consume("WHERE")?this.parseWhereExpr():null,l=[],p,d=null;if(this.consume("GROUP")){if(this.expect("BY"),this.peek().kind==="DISTINCT"||this.isSoftKeyword("DISTINCT"))throw new S("B65: GROUP BY DISTINCT is not supported in Phase1.",this.peek());if(this.isGroupingSetsStart()?p=this.parseGroupingSetsClause():this.isRollupStart()?p=this.parseRollupClause():this.isCubeStart()?p=this.parseCubeClause():l=this.parseGroupByKeys(),p&&this.peek().kind===",")throw new S("B65: ordinary GROUP BY items cannot be mixed with grouping elements.",this.peek());this.consume("HAVING")&&(d=this.parseWhereExpr("HAVING"))}let c="CANONICAL",u=[];if(this.consume("ORDER"))this.expect("BY"),u=this.parseOrderBy();else if(this.consume("KORDER")){if(!t)throw new S("KORDER BY \u306F\u5229\u7528\u8005\u3078\u7D50\u679C\u3092\u8FD4\u3059\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB SELECT \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059",this.prev());c="KINTONE_NATIVE",this.expect("BY"),u=this.parseOrderBy()}let f=this.consume("LIMIT")?this.parseUnsignedInt():null,E=this.consume("OFFSET")?this.parseUnsignedInt():null,R=n.some(g=>g.type==="WINDOW_COL"),m=n.some(g=>this.selectColumnHasAggregate(g));if(R&&(l.length>0||p!==void 0||m))throw new S("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306F GROUP BY / \u96C6\u8A08\u95A2\u6570\u3068\u540C\u3058 SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());if(p&&c==="KINTONE_NATIVE")throw new S("B65: KORDER BY cannot be combined with grouping sets in Phase1.",this.peek());return{type:"SELECT",distinct:r,columns:n,from:o,joins:s,where:a,groupBy:l,...p?{grouping:p}:{},having:d,orderMode:c,orderBy:u,limit:f,offset:E}}parseWith(){this.expect("WITH");let t=[];do{let n=this.parseIdentifier();this.expect("AS"),this.expect("(");let i,o=this.peek().kind;o==="SHOW"?i=this.parseShow():o==="DESCRIBE"||o==="DESC"?i=this.parseDescribe():i=this.tryParseUnionChain(this.parseSelect()),this.expect(")"),t.push({name:n,query:i}),this.cteNames.add(n)}while(this.consume(","));let r=this.tryParseUnionChain(this.parseSelect());return this.cteNames.clear(),{type:"WITH",ctes:t,query:r}}tryParseUnionChain(t){if(this.peek().kind!=="UNION")return t;if(t.type==="SELECT"&&t.orderMode==="KINTONE_NATIVE")throw new S("KORDER BY \u306F UNION \u5206\u5C90\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());this.advance();let r=this.consume("ALL"),n=this.parseSelect(),i={type:"UNION",all:r,left:t,right:n};return this.tryParseUnionChain(i)}parseSelectColumns(){let t=[];do t.push(this.parseSelectColumn());while(this.consume(","));return t}parseSelectColumn(){if(this.consume("*"))return{type:"WILDCARD"};if(this.isUnsupportedGroupingIdStart())throw new S("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){let o=this.parseGroupingRef(),s=this.consume("AS")?this.parseAliasName():null;return{type:"GROUPING_COL",ref:o,alias:s}}if(this.tryAggregateFunc()===null&&this.hasTopLevelTokenBeforeValueEnd("||")){let o=this.parseScalarValueExpr({allowAggregateArgs:!0}),s=this.consume("AS")?this.parseAliasName():null;return{type:"SCALAR_VALUE_COL",expr:o,alias:s}}if(this.peek().kind==="VARIABLE"){let o=this.advance();if(!this.consume("AS"))throw new S("SELECT \u5217\u306E\u30D0\u30C3\u30C1\u5909\u6570\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());return{type:"VARIABLE_COL",name:o.value.slice(1).toLowerCase(),alias:this.parseAliasName()}}let t=this.tryWindowFunc();if(t!==null)return this.parseWindowColumn(t);if(this.peek().kind==="CASE"){let o=this.parseCaseWhenExpr(!0),s=this.consume("AS")?this.parseAliasName():null;return{type:"CASE_COL",expr:o,alias:s}}if(this.peek().kind==="IF"){let o=this.parseIfExpr(!0),s=this.consume("AS")?this.parseAliasName():null;return{type:"CASE_COL",expr:o,alias:s}}if(this.tryStringFuncName()!==null){let o=this.parseStringFuncExpr();if(this.isArithOp(this.peek().kind)){let a=this.continueArith(o),l=this.consume("AS")?this.parseAliasName():null;return{type:"ARITH_COL",expr:a,alias:l}}let s=this.consume("AS")?this.parseAliasName():null;return{type:"STRFUNC_COL",expr:o,alias:s}}let r=this.tryAggregateFunc();if(r!==null){let o=this.parseAggregateRef(r);if(this.isArithOp(this.peek().kind)){let a=this.continueAggArith(o),l=this.consume("AS")?this.parseAliasName():null;return{type:"ARITH_AGG_COL",expr:a,alias:l}}let s=this.consume("AS")?this.parseAliasName():null;return{type:"AGGREGATE",func:o.func,distinct:o.distinct,arg:o.arg,...o.separator!==void 0?{separator:o.separator}:{},alias:s}}if(this.peek().kind==="("&&this.peekAt(1).kind==="SELECT"){this.advance();let o=this.parseSelect();this.expect(")");let s=this.consume("AS")?this.parseAliasName():null;return{type:"SCALAR_SUBQUERY_COL",query:o,alias:s}}if(this.peek().kind==="STRING"){let o=this.expect("STRING").value,s=this.consume("AS")?this.parseAliasName():null;return{type:"LITERAL_COL",value:o,alias:s}}if(this.peek().kind==="("||this.peek().kind==="NUMBER"){let o=this.parseArithAddSub(),s=this.consume("AS")?this.parseAliasName():null;return{type:"ARITH_COL",expr:o,alias:s}}let n=this.parseColumnFieldRef();if(n==="_p.*")return{type:"PARENT_WILDCARD"};if(n==="_parent.*")throw new S("_parent.* \u306F\u5EC3\u6B62\u3057\u307E\u3057\u305F\u3002_p.* \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044",this.prev());if(this.isArithOp(this.peek().kind)){let o={type:"FIELD_REF",field:n},s=this.continueArith(o),a=this.consume("AS")?this.parseAliasName():null;return{type:"ARITH_COL",expr:s,alias:a}}let i=this.consume("AS")?this.parseAliasName():null;return{type:"FIELD",field:n,alias:i}}tryWindowFunc(){return fa[this.peek().kind]??null}parseWindowColumn(t){if(this.advance(),this.expect("("),this.peek().kind!==")")throw new S(`${t} \u306F\u5F15\u6570\u3092\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093`,this.peek());this.expect(")"),this.expectSoftKeyword("OVER",`${t} \u306B\u306F OVER (...) \u304C\u5FC5\u8981\u3067\u3059`),this.expect("(");let r=[];if(this.isSoftKeyword("PARTITION")){this.advance(),this.expect("BY","PARTITION \u306E\u5F8C\u306B\u306F BY \u304C\u5FC5\u8981\u3067\u3059");do{let o=this.parseQualifiedIdent();r.push({type:"FIELD",tableAlias:o.tableAlias,field:o.field})}while(this.consume(","))}let n=this.consume("ORDER")?(this.expect("BY"),this.parseOrderBy(!1)):[];if(this.expect(")"),!this.consume("AS"))throw new S("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());let i=this.parseAliasName();return{type:"WINDOW_COL",func:t,partitionBy:r,orderBy:n,alias:i}}selectColumnHasAggregate(t){return t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"?!0:t.type==="STRFUNC_COL"?t.expr.args.some(r=>this.stringFuncArgHasAggregate(r)):t.type==="SCALAR_VALUE_COL"?this.scalarValueHasAggregate(t.expr):!1}stringFuncArgHasAggregate(t){return t.type==="AGG_REF"||t.type==="AGG_ARITH"?!0:this.scalarValueHasAggregate(t)}scalarValueHasAggregate(t){return t.type==="STRING_FUNC"?t.args.some(r=>this.stringFuncArgHasAggregate(r)):t.type==="SCALAR_ARITH"||t.type==="CONCAT_OP"?this.scalarValueHasAggregate(t.left)||this.scalarValueHasAggregate(t.right):t.type==="CASE_WHEN"?[...t.branches.map(n=>n.result),...t.elseResult?[t.elseResult]:[]].some(n=>n.type==="ARRAY"||n.type==="FIELD_REF"||n.type==="ARITH"?!1:this.scalarValueHasAggregate(n)):!1}isArithOp(t){return t==="+"||t==="-"||t==="*"||t==="/"||t==="%"}continueAggArith(t){return this.continueAggArithAddSub(this.continueAggArithMulDiv(t))}continueAggArithMulDiv(t){for(;this.peek().kind==="*"||this.peek().kind==="/"||this.peek().kind==="%";){let r=this.parseArithOp();t={type:"AGG_ARITH",left:t,op:r,right:this.parseAggPrimary()}}return t}continueAggArithAddSub(t){for(;this.peek().kind==="+"||this.peek().kind==="-";){let r=this.parseArithOp();t={type:"AGG_ARITH",left:t,op:r,right:this.parseAggArithMulDiv()}}return t}parseAggArithMulDiv(){return this.continueAggArithMulDiv(this.parseAggPrimary())}parseAggPrimary(){if(this.consume("(")){let r=this.continueAggArith(this.parseAggPrimary());return this.expect(")"),r}if(this.peek().kind==="-"){this.advance();let r=this.parseAggPrimary();return r.type==="NUMBER"?ue(`-${G(r)}`):{type:"AGG_ARITH",left:ue("0"),op:"-",right:r}}if(this.peek().kind==="NUMBER"){let r=this.advance();return ue(r.value)}let t=this.tryAggregateFunc();if(t!==null)return this.parseAggregateRef(t);throw new S("\u96C6\u8A08\u7B97\u8853\u5F0F\u306B\u306F\u96C6\u8A08\u95A2\u6570\u307E\u305F\u306F\u6570\u5024\u304C\u5FC5\u8981\u3067\u3059",this.peek())}parseScalarValueExpr(t={}){let r=this.scalarAllowsAggregateArgs,n=this.scalarAllowsCase;this.scalarAllowsAggregateArgs=t.allowAggregateArgs===!0,this.scalarAllowsCase=t.allowCase!==!1;let i;try{i=this.parseScalarAddSubConcat(this.scalarAllowsCase)}finally{this.scalarAllowsAggregateArgs=r,this.scalarAllowsCase=n}let o=this.peek();if(o.kind==="IS"||o.kind==="="||o.kind==="!="||o.kind==="<>"||o.kind===">"||o.kind==="<"||o.kind===">="||o.kind==="<="||o.kind==="LIKE"||o.kind==="KLIKE"||o.kind==="IN"||o.kind==="BETWEEN")throw new S("\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306B\u6BD4\u8F03\u30FB\u8FF0\u8A9E\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",o);return i}parseScalarAddSubConcat(t){let r=this.parseScalarMulDiv(t);for(;this.peek().kind==="+"||this.peek().kind==="-"||this.peek().kind==="||";){let n=this.advance(),i=this.parseScalarMulDiv(t);r=n.kind==="||"?{type:"CONCAT_OP",left:r,right:i}:{type:"SCALAR_ARITH",left:r,op:n.kind==="+"?"+":"-",right:i}}return r}parseScalarMulDiv(t){let r=this.parseScalarPrimary(t);for(;this.peek().kind==="*"||this.peek().kind==="/"||this.peek().kind==="%";){let n=this.advance(),i=n.kind==="*"?"*":n.kind==="/"?"/":"%";r={type:"SCALAR_ARITH",left:r,op:i,right:this.parseScalarPrimary(t)}}return r}parseScalarPrimary(t){let r=this.peek();if(r.kind==="("){if(this.peekAt(1).kind==="SELECT")throw new S("\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306B\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);this.advance();let n=this.parseScalarAddSubConcat(t);return this.expect(")"),n}if(r.kind==="+"||r.kind==="-"){if(this.advance(),this.peek().kind==="+"||this.peek().kind==="-")throw new S("\u5358\u9805\u7B26\u53F7\u3092\u91CD\u306D\u3066\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",this.peek());let n=this.parseScalarPrimary(t);if(n.type==="NUMBER")return ue(`${r.kind==="-"?"-":"+"}${G(n)}`);if(r.kind==="+")throw new S("\u5358\u9805 + \u306E\u76F4\u5F8C\u306B\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059",r);return{type:"SCALAR_ARITH",left:ue("0"),op:"-",right:n}}if(r.kind==="STRING")return this.advance(),{type:"STRING",value:r.value};if(r.kind==="NUMBER")return this.advance(),ue(r.value);if(r.kind==="VARIABLE")return this.advance(),{type:"VARIABLE",name:r.value.slice(1).toLowerCase()};if(r.kind==="CASE"){if(!t)throw new S("\u3053\u306E\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u3067\u306F CASE \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);return this.parseCaseWhenExpr()}if(this.tryAggregateFunc()!==null)throw new S(this.insideAggregateArg>0?"\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093":"\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306B\u96C6\u7D04\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);if(this.tryStringFuncName()!==null)return this.parseStringFuncExpr();if(r.kind==="IDENT"||r.kind==="BIDENT")return this.advance(),this.consume(".")?{type:"FIELD",tableAlias:r.value,field:this.parseIdentifier()}:{type:"FIELD",tableAlias:null,field:r.value};throw new S("\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306E\u30AA\u30DA\u30E9\u30F3\u30C9\u304C\u5FC5\u8981\u3067\u3059",r)}hasTopLevelTokenBeforeValueEnd(t){let r=0;for(let n=this.pos;n<this.tokens.length;n++){let i=this.tokens[n].kind;if(i==="("||i==="[")r++;else if(i===")"||i==="]"){if(r===0)break;r--}if(i===t)return!0;if(r===0&&(i===","||i==="AS"||i==="FROM"||i==="WHERE"||i==="WHEN"||i==="THEN"||i==="ELSE"||i==="END"||i===";"||i==="EOF"))break}return!1}parseArithAddSub(){return this.continueArithAddSub(this.parseArithMulDiv())}parseArithMulDiv(){return this.continueArithMulDiv(this.parseArithPrimary())}continueArith(t){return this.continueArithAddSub(this.continueArithMulDiv(t))}continueArithMulDiv(t){for(;this.peek().kind==="*"||this.peek().kind==="/"||this.peek().kind==="%";){let r=this.parseArithOp(),n=this.parseArithPrimary();t={type:"ARITH",left:t,op:r,right:n}}return t}continueArithAddSub(t){for(;this.peek().kind==="+"||this.peek().kind==="-";){let r=this.parseArithOp(),n=this.parseArithMulDiv();t={type:"ARITH",left:t,op:r,right:n}}return t}parseArithPrimary(){if(this.consume("(")){let r=this.parseArithAddSub();return this.expect(")"),r}if(this.allowUnaryPlusNumber&&this.peek().kind==="+"){this.advance();let r=this.expect("NUMBER","\u5358\u9805 + \u306E\u76F4\u5F8C\u306B\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");return ue(`+${r.value}`)}if(this.peek().kind==="-"){if(this.advance(),this.peek().kind==="-"||this.peek().kind==="+")throw new S("\u5358\u9805\u7B26\u53F7\u3092\u91CD\u306D\u3066\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",this.peek());let r=this.parseArithPrimary();return r.type==="NUMBER"?ue(`-${G(r)}`):{type:"ARITH",left:ue("0"),op:"-",right:r}}if(this.tryStringFuncName()!==null)return this.parseStringFuncExpr();let t=this.peek();if(t.kind==="NUMBER")return this.advance(),ue(t.value);if(t.kind==="IDENT"||t.kind==="BIDENT"){this.advance();let r=t.value;if(this.peek().kind==="."){this.advance();let n=this.advance();r=`${r}.${n.value}`}return{type:"FIELD_REF",field:r}}throw new S("\u7B97\u8853\u5F0F\u306E\u30AA\u30DA\u30E9\u30F3\u30C9\u306B\u306F\u8B58\u5225\u5B50\u30FB\u6570\u5024\u30FB\u62EC\u5F27\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",t)}parseIfExpr(t=!1){this.advance(),this.expect("(");let r=this.parseCaseCondition(t);this.expect(",");let n=this.parseCaseResult();this.expect(",");let i=this.parseCaseResult();return this.expect(")"),{type:"CASE_WHEN",branches:[{condition:r,result:n}],elseResult:i}}parseCaseWhenExpr(t=!1){this.expect("CASE");let r=[];for(;this.peek().kind==="WHEN";){this.advance();let i=this.parseCaseCondition(t);this.expect("THEN");let o=this.parseCaseResult();r.push({condition:i,result:o})}if(r.length===0)throw new S("CASE \u306E\u5F8C\u306B\u306F WHEN \u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",this.peek());let n=null;return this.consume("ELSE")&&(n=this.parseCaseResult()),this.expect("END"),{type:"CASE_WHEN",branches:r,elseResult:n}}parseCaseCondition(t){return t?this.parseWhereExpr("SELECT_CASE"):this.parseWhereExpr()}parseCaseResult(){let t=this.peek();if(this.insideAggregateArg>0&&this.tryAggregateFunc()!==null)throw new S("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",t);return t.kind==="["?this.parseArrayLiteral():this.hasTopLevelTokenBeforeValueEnd("||")?this.parseScalarValueExpr({allowAggregateArgs:!0}):t.kind==="STRING"?(this.advance(),{type:"STRING",value:t.value}):this.tryStringFuncName()!==null?this.parseStringFuncExpr():this.parseArithAddSub()}tryStringFuncName(){if(this.peekAt(1).kind==="("){let r=Xi[this.peek().kind];if(r==="LEFT"||r==="RIGHT")return r}let t=Xi[this.peek().kind]??null;if(t!==null&&t!=="LEFT"&&t!=="RIGHT")return t;if(this.peek().kind==="IDENT"){let r=this.peek().value.toUpperCase();if(da.includes(r)&&this.peekAt(1).kind==="(")return r}return null}parseStringFuncExpr(){let t=this.peek().kind,r=this.tryStringFuncName();if(this.advance(),this.expect("("),t==="CAST"){let i=this.parseStringFuncArg();this.expect("AS");let o=this.parseCastType();return this.expect(")"),{type:"STRING_FUNC",func:"CAST",args:[i,o]}}if(t==="CONVERT"){let i=this.parseStringFuncArg();this.expect(",");let o=this.parseCastType();return this.expect(")"),{type:"STRING_FUNC",func:"CAST",args:[i,o]}}let n=[];if(this.peek().kind!==")")do n.push(this.parseStringFuncArg());while(this.consume(","));return this.expect(")"),{type:"STRING_FUNC",func:r,args:n}}parseCastType(){let t=this.peek(),r;if(t.kind==="IDENT"||t.kind==="BIDENT")this.advance(),r=t.value.toUpperCase();else throw new S("\u30AD\u30E3\u30B9\u30C8\u5148\u306E\u578B\u540D\uFF08TEXT, NUMBER, INT \u306A\u3069\uFF09\u304C\u5FC5\u8981\u3067\u3059",t);this.peek().kind==="("&&(this.advance(),this.parseUnsignedInt(),this.expect(")"));let n=Tp(r);if(n===null)throw new S(`\u4E0D\u660E\u306A\u30AD\u30E3\u30B9\u30C8\u578B\u300C${r}\u300D\u3002TEXT \u307E\u305F\u306F NUMBER \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,t);return{type:"STRING",value:n}}parseStringFuncArg(){if(this.scalarAllowsAggregateArgs){let t=this.pos;try{let r=this.parseAggPrimary(),n=this.continueAggArith(r);if(this.hasAggregateOperand(n))return n}catch{}this.pos=t}return this.parseScalarAddSubConcat(this.scalarAllowsCase)}hasAggregateOperand(t){return t.type==="AGG_REF"?!0:t.type==="AGG_ARITH"?this.hasAggregateOperand(t.left)||this.hasAggregateOperand(t.right):!1}tryAggregateFunc(){return Ji[this.peek().kind]??null}parseAggregateRef(t){this.advance(),this.expect("(");let r=this.consume("DISTINCT"),n=r?this.prev():null;if(t==="MODE"&&n)throw new S("MODE \u3067\u306F DISTINCT \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);let i;if(this.consume("*")){if(!yp(t))throw new S(`${t}(*) \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30D5\u30A3\u30FC\u30EB\u30C9\u307E\u305F\u306F\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,this.prev());i={type:"WILDCARD"}}else i=this.parseAggregateArgExpr();let o;if(this.isSoftKeyword("SEPARATOR")){let s=this.advance();if(t!=="GROUP_CONCAT")throw new S("SEPARATOR \u306F GROUP_CONCAT \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059",s);o=this.expect("STRING","SEPARATOR \u306E\u5F8C\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059").value}return this.expect(")"),{type:"AGG_REF",func:t,distinct:r,arg:i,...o!==void 0?{separator:o}:{}}}isAggregateArgEnd(){return this.peek().kind===")"||this.isSoftKeyword("SEPARATOR")}parseAggregateArgExpr(){let t=this.pos;try{let r=this.parseArithAddSub();if(this.isAggregateArgEnd())return r}catch{}this.pos=t,this.insideAggregateArg++;try{let r;try{r=this.parseScalarValueExpr({allowCase:!0,allowAggregateArgs:!1})}catch(n){if(n instanceof S){if(n.message.includes("\u6BD4\u8F03\u30FB\u8FF0\u8A9E"))throw new S("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u306B\u6BD4\u8F03\u30FB\u8FF0\u8A9E\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002CASE \u3067\u5024\u3092\u660E\u793A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u4F8B: SUM(CASE WHEN amount > 0 THEN 1 ELSE 0 END)",n.token);if(n.message.includes("\u96C6\u7D04\u95A2\u6570"))throw new S("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n.token)}throw n}if(!this.isAggregateArgEnd())throw new S("\u3053\u306E\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5F62\u5F0F\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002CASE \u3067\u5024\u3092\u660E\u793A\u3059\u308B\u304B\u3001CTE \u3067\u5F0F\u3092\u5217\u306B\u3057\u3066\u304B\u3089\u96C6\u8A08\u3057\u3066\u304F\u3060\u3055\u3044\u3002",this.peek());return this.assertNoNestedAggregate(r),r}finally{this.insideAggregateArg--}}assertNoNestedAggregate(t){let r=n=>{if(n===null||typeof n!="object")return;let i=n;if(i.type==="AGG_REF"||i.type==="AGG_ARITH")throw new S("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());for(let o of Object.values(i))r(o)};r(t)}parseTableRef(){let t=this.peek(),r=this.parseTableName();if(t.kind==="IDENT"&&r.startsWith("#"))return this.tempTableRefs.push(this.prev()),{appId:0,alias:this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias(),cteName:r};if(this.cteNames.has(r))return{appId:0,alias:this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias(),cteName:r};let{appId:n,subtableCode:i}=Ve(r,this.prev());if(i){let a=this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias();return{appId:n,alias:a,cteName:null,subtableCode:i}}let o=this.tryParseImplicitAlias(),s=this.consume("AS")?this.parseTableAliasName():o??r;return{appId:n,alias:s,cteName:null}}parseTableAliasName(){let t=this.peek();if((t.kind==="IDENT"||t.kind==="BIDENT")&&t.value.startsWith("#"))throw new S("\u30A8\u30A4\u30EA\u30A2\u30B9\u540D\u306B # \u3067\u59CB\u307E\u308B\u540D\u524D\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",t);return this.parseIdentifier()}tryParseImplicitAlias(){let t=this.peek().kind;return t==="IDENT"||t==="BIDENT"?t==="IDENT"&&this.peek().value.toUpperCase()==="VALIDATE"&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="ONLY"||t==="IDENT"&&this.peek().value.toUpperCase()==="CHECK"&&this.peekAt(1).kind==="WHEN"?null:this.parseTableAliasName():null}parseJoins(){let t=[];for(;;){let r=this.tryJoinType();if(r===null)break;let n=this.parseTableRef();this.expect("ON");let i=this.parseJoinCondition();t.push({type:r,table:n,on:i})}return t}tryJoinType(){return this.consume("INNER")?(this.expect("JOIN"),"INNER"):this.consume("LEFT")?(this.expect("JOIN"),"LEFT"):this.consume("RIGHT")?(this.expect("JOIN"),"RIGHT"):this.consume("JOIN")?"INNER":null}parseJoinCondition(){let t=this.parseQualifiedIdent();this.expect("=");let r=this.parseQualifiedIdent();return{left:t,right:r}}parseQualifiedIdent(){let t=this.parseIdentifier();if(this.consume(".")){if(this.peek().kind==="*")throw new S("\u3053\u3053\u3067\u306F * \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());let r=this.parseIdentifier();return{tableAlias:t,field:r}}return{tableAlias:null,field:t}}parseWhereExpr(t=this.groupingFieldContext){let r=this.groupingFieldContext;this.groupingFieldContext=t;try{return this.parseOrExpr()}finally{this.groupingFieldContext=r}}parseOrExpr(){let t=this.parseAndExpr();for(;this.consume("OR");){let r=this.parseAndExpr();t={type:"LOGICAL",op:"OR",left:t,right:r}}return t}parseAndExpr(){let t=this.parseNotExpr();for(;this.consume("AND");){let r=this.parseNotExpr();t={type:"LOGICAL",op:"AND",left:t,right:r}}return t}parseNotExpr(){if(this.consume("EXISTS")){this.expect("(");let t=this.parseSelect();return this.expect(")"),{type:"EXISTS",not:!1,query:t}}if(this.consume("NOT")){if(this.consume("EXISTS")){this.expect("(");let r=this.parseSelect();return this.expect(")"),{type:"EXISTS",not:!0,query:r}}return{type:"NOT",expr:this.parseNotExpr()}}return this.parseCompareExpr()}isArithParen(){let t=0,r=this.pos;for(;r<this.tokens.length;){let n=this.tokens[r].kind;if(n==="(")t++;else if(n===")"&&(t--,t===0)){let i=this.tokens[r+1]?.kind;return i==="*"||i==="/"||i==="+"||i==="-"}r++}return!1}parseCompareExpr(){if(this.peek().kind==="("&&!this.isArithParen()){this.advance();let i=this.parseWhereExpr();return this.expect(")"),{type:"GROUP",expr:i}}let t=this.parseFieldValue();if(this.consume("IS")){let i=this.consume("NOT");return this.expect("NULL"),{type:"NULL_CHECK",field:t,not:i}}if(this.consume("BETWEEN")){let i=this.parseSqlValue();this.expect("AND");let o=this.parseSqlValue();return{type:"LOGICAL",op:"AND",left:{type:"BINARY",op:">=",left:t,right:i},right:{type:"BINARY",op:"<=",left:t,right:o}}}if(this.consume("NOT")){if(this.consume("IN")){let i=this.parseInRight();return{type:"BINARY",op:"NOT_IN",left:t,right:i}}if(this.consume("LIKE")){let i=this.parseSqlValue();return{type:"BINARY",op:"NOT_LIKE",left:t,right:i}}if(this.consume("KLIKE")){let i=this.parseKlikePattern();return{type:"BINARY",op:"NOT_KLIKE",left:t,right:i}}throw new S("NOT \u306E\u5F8C\u306B\u306F IN\u3001LIKE\u3001KLIKE \u306E\u3044\u305A\u308C\u304B\u304C\u5FC5\u8981\u3067\u3059",this.peek())}if(this.consume("IN")){let i=this.parseInRight();return{type:"BINARY",op:"IN",left:t,right:i}}if(this.consume("KLIKE")){let i=this.parseKlikePattern();return{type:"BINARY",op:"KLIKE",left:t,right:i}}let r=this.parseCompareOp(),n=this.parseSqlValue();return{type:"BINARY",op:r,left:t,right:n}}parseCompareOp(){let t=this.advance();switch(t.kind){case"=":return"=";case"!=":return"!=";case"<>":return"<>";case">":return">";case"<":return"<";case">=":return">=";case"<=":return"<=";case"LIKE":return"LIKE";default:throw new S("\u6BD4\u8F03\u6F14\u7B97\u5B50\uFF08=, !=, >, <, >=, <=, LIKE, KLIKE, IN, IS\uFF09\u304C\u5FC5\u8981\u3067\u3059",t)}}parseKlikePattern(){let t=this.peek();if(t.kind==="STRING")return this.advance(),{type:"STRING",value:t.value};if(t.kind==="VARIABLE")return this.advance(),{type:"VARIABLE",name:t.value.slice(1).toLowerCase()};throw new S("KLIKE / NOT KLIKE \u306E\u53F3\u8FBA\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u307E\u305F\u306F\u30D0\u30C3\u30C1\u5909\u6570\u304C\u5FC5\u8981\u3067\u3059",t)}parseFieldValue(){if(this.isUnsupportedGroupingIdStart())throw new S("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){if(this.groupingFieldContext==="FORBIDDEN"||this.insideAggregateArg>0)throw new S("B65: GROUPING() is only allowed in SELECT, SELECT CASE conditions, HAVING, and direct ORDER BY.",this.peek());return{type:"GROUPING_FIELD",ref:this.parseGroupingRef()}}if(this.tryStringFuncName()!==null){let n=this.parseStringFuncExpr();return this.isArithOp(this.peek().kind)?{type:"ARITH_FIELD",expr:this.continueArith(n)}:{type:"FUNC_FIELD",expr:n}}let t=this.tryAggregateFunc();if(t!==null){if(this.insideAggregateArg>0)throw new S("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let n=this.parseAggregateRef(t);return{type:"FIELD",tableAlias:null,field:Se(n.func,n.distinct,n.arg)}}if(this.peek().kind==="CASE")return{type:"CASE_FIELD",expr:this.parseCaseWhenExpr()};if(this.peek().kind==="IF")return{type:"CASE_FIELD",expr:this.parseIfExpr()};if(this.peek().kind==="("){this.advance();let n=this.parseArithAddSub();return this.expect(")"),{type:"ARITH_FIELD",expr:this.continueArith(n)}}if(this.peek().kind==="-")return{type:"ARITH_FIELD",expr:this.parseArithAddSub()};let r=this.parseQualifiedIdent();if(this.isArithOp(this.peek().kind)){let i={type:"FIELD_REF",field:r.tableAlias?`${r.tableAlias}.${r.field}`:r.field};return{type:"ARITH_FIELD",expr:this.continueArith(i)}}return{type:"FIELD",tableAlias:r.tableAlias,field:r.field}}parseSqlValue(){let t=this.peek();if(t.kind==="VARIABLE")return this.advance(),{type:"VARIABLE",name:t.value.slice(1).toLowerCase()};if(t.kind==="STRING")return this.advance(),{type:"STRING",value:t.value};if(pa(t.kind))return this.advance(),this.expect("("),this.expect(")"),{type:"KINTONE_FUNC",name:In[t.kind]};if(t.kind==="CASE")return{type:"CASE_VALUE",expr:this.parseCaseWhenExpr()};if(t.kind==="IF")return{type:"CASE_VALUE",expr:this.parseIfExpr()};if(t.kind==="("&&this.peekAt(1).kind==="SELECT"){this.advance();let r=this.parseSelect();if(this.expect(")"),this.isArithOp(this.peek().kind))throw new S("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u5F8C\u306B\u7B97\u8853\u6F14\u7B97\u5B50\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: (SELECT AVG(\u5408\u8A08\u8CBB\u7528)/2 FROM APP88)\uFF09",this.peek());return{type:"SCALAR_SUBQUERY",query:r}}if(t.kind==="NUMBER"||t.kind==="IDENT"||t.kind==="BIDENT"||t.kind==="("||t.kind==="-"||this.tryStringFuncName()!==null){let r=this.parseArithAddSub();return r.type==="NUMBER"?r:{type:"ARITH_VALUE",expr:r}}throw new S("\u5024\uFF08\u6587\u5B57\u5217\u30FB\u6570\u5024\u30FB\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u30FBTODAY()\u30FBNOW()\u30FBLOGINUSER()\uFF09\u304C\u5FC5\u8981\u3067\u3059",t)}parseInRight(){if(this.consume("(")){let r=this.parseInListOrSubquery();return this.expect(")"),r}return{type:"VARIABLE_IN_LIST",name:this.expect("VARIABLE","IN / NOT IN \u306E\u5F8C\u306B\u306F (\u5024\u30EA\u30B9\u30C8\u307E\u305F\u306F SELECT) \u304B\u914D\u5217\u5909\u6570\u304C\u5FC5\u8981\u3067\u3059").value.slice(1).toLowerCase()}}parseInListOrSubquery(){if(this.peek().kind==="SELECT"){let t=this.parseSelect(),r=t.columns[0],n=r&&r.type==="FIELD"?r.alias??r.field:null;return{type:"SUBQUERY_IN_LIST",query:t,column:n}}return{type:"IN_LIST",values:this.parseInValues()}}parseInValues(){let t=[],r="IN \u30EA\u30B9\u30C8\u306B\u306F\u6587\u5B57\u5217\u3001\u6570\u5024\u3001\u307E\u305F\u306F\u30D0\u30C3\u30C1\u5909\u6570\u304C\u5FC5\u8981\u3067\u3059";do{let n=this.advance();if(n.kind==="STRING")t.push({type:"STRING",value:n.value});else if(n.kind==="NUMBER")t.push(ue(n.value));else if(n.kind==="-"||n.kind==="+"){let i=this.peek();if(i.kind!=="NUMBER")throw new S(r,n);this.advance();let o=n.kind==="-"?"-":"+";t.push(ue(`${o}${i.value}`))}else if(n.kind==="VARIABLE")t.push({type:"VARIABLE",name:n.value.slice(1).toLowerCase()});else throw new S(r,n)}while(this.consume(","));return t}parseIdentList(){let t=[];do t.push(this.parseIdentifier());while(this.consume(","));return t}parseGroupByKeys(){let t=[];do{if(t.length>0&&(this.isRollupStart()||this.isGroupingSetsStart()||this.isCubeStart()))throw new S("B65: ordinary GROUP BY items cannot be mixed with grouping elements.",this.peek());t.push(this.parseGroupByKey())}while(this.consume(","));return t}isRollupStart(){return this.isSoftKeyword("ROLLUP")&&this.peekAt(1).kind==="("}isCubeStart(){return this.isSoftKeyword("CUBE")&&this.peekAt(1).kind==="("}isGroupingSetsStart(){return this.isSoftKeyword("GROUPING")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="SETS"&&this.peekAt(2).kind==="("}isGroupingFunctionStart(){return this.isSoftKeyword("GROUPING")&&this.peekAt(1).kind==="("}isUnsupportedGroupingIdStart(){return this.isSoftKeyword("GROUPING_ID")&&this.peekAt(1).kind==="("}groupingItemSyntaxKey(t){return`${t.tableAlias??""}\0${t.field}`}groupingAllItems(t){let r=new Set,n=[];for(let i of t)for(let o of i.items){let s=this.groupingItemSyntaxKey(o);r.has(s)||(r.add(s),n.push(o))}return n}parseGroupingFieldItem(){if(this.isRollupStart()||this.isGroupingSetsStart()||this.isCubeStart())throw new S("B65: nested grouping elements are not supported in Phase1.",this.peek());let t=this.peek(),r=this.parseQualifiedIdent();if(this.peek().kind!==","&&this.peek().kind!==")")throw new S("B65: grouping items must be physical field references only.",t);return{type:"FIELD",tableAlias:r.tableAlias,field:r.field}}parseGroupingSetsClause(){if(this.advance(),this.advance(),this.expect("("),this.peek().kind===")")throw new S("B65: GROUPING SETS requires at least one grouping set; use (()) for the empty set.",this.peek());let t=[];do if(this.consume("(")){let r=[];if(this.peek().kind!==")")do r.push(this.parseGroupingFieldItem());while(this.consume(","));this.expect(")"),t.push({items:r})}else t.push({items:[this.parseGroupingFieldItem()]});while(this.consume(","));return this.expect(")"),{type:"GROUPING_SETS",source:"GROUPING_SETS",allItems:this.groupingAllItems(t),sets:t}}parseRollupClause(){if(this.advance(),this.expect("("),this.peek().kind===")")throw new S("B65: ROLLUP requires at least one field.",this.peek());let t=[];do t.push(this.parseGroupingFieldItem());while(this.consume(","));this.expect(")");let r=Array.from({length:t.length+1},(n,i)=>({items:t.slice(0,t.length-i)}));return{type:"GROUPING_SETS",source:"ROLLUP",allItems:this.groupingAllItems(r),sets:r}}parseCubeClause(){if(this.advance(),this.expect("("),this.peek().kind===")")throw new S("B65: CUBE requires at least one field.",this.peek());let t=[];do t.push(this.parseGroupingFieldItem());while(this.consume(","));this.expect(")");let r=ia(t);return{type:"GROUPING_SETS",source:"CUBE",allItems:this.groupingAllItems(r),sets:r}}parseGroupingRef(){let t=this.advance();if(this.expect("("),this.peek().kind===")")throw new S("B65: GROUPING() requires exactly one physical field argument.",this.peek());let r=this.parseQualifiedIdent();if(this.peek().kind!==")")throw new S("B65: GROUPING() requires exactly one physical field argument.",t);return this.expect(")"),{type:"GROUPING_REF",field:{type:"FIELD",tableAlias:r.tableAlias,field:r.field}}}parseGroupByKey(){if(this.tryStringFuncName()!==null){let r=this.parseStringFuncExpr();return this.isArithOp(this.peek().kind)?{type:"ARITH_KEY",expr:this.continueArith(r)}:{type:"FUNC_KEY",expr:r}}if(this.peek().kind==="("||this.peek().kind==="NUMBER")return{type:"ARITH_KEY",expr:this.parseArithAddSub()};let t=this.parseFieldPath();if(this.isArithOp(this.peek().kind)){let r={type:"FIELD_REF",field:t};return{type:"ARITH_KEY",expr:this.continueArith(r)}}return{type:"FIELD_NAME",name:t}}parseOrderBy(t=!0){let r=[];do{let n=this.parseOrderByKey(t),i="ASC";this.consume("DESC")?i="DESC":this.consume("ASC"),r.push({key:n,direction:i})}while(this.consume(","));return r}parseOrderByKey(t=!0){if(this.isUnsupportedGroupingIdStart())throw new S("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){if(!t)throw new S("B65: GROUPING() is not allowed in window ORDER BY.",this.peek());return{type:"GROUPING_KEY",ref:this.parseGroupingRef()}}if(this.tryStringFuncName()!==null){let n=this.parseStringFuncExpr();return this.isArithOp(this.peek().kind)?{type:"ARITH_KEY",expr:this.continueArith(n)}:{type:"FUNC_KEY",expr:n}}if(this.peek().kind==="("||this.peek().kind==="NUMBER")return{type:"ARITH_KEY",expr:this.parseArithAddSub()};let r=this.parseFieldPath();if(this.isArithOp(this.peek().kind)){let n={type:"FIELD_REF",field:r};return{type:"ARITH_KEY",expr:this.continueArith(n)}}return{type:"FIELD_NAME",name:r}}parseInsert(){this.expect("INSERT"),this.expect("INTO"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:r,subtableCode:n}=Ve(t,this.prev());this.expect("(");let i=this.parseIdentList();if(this.expect(")"),this.peek().kind==="SELECT"){let d=this.parseSelect();if(this.isApplyBlockStart()||this.prev().kind==="IDENT"&&this.prev().value.toUpperCase()==="APPLY"&&(this.peek().kind==="IDENT"||this.peek().kind==="BIDENT")&&this.peekAt(1).kind==="(")throw new S("INSERT INTO ... SELECT \u306F APPLY \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(n)throw new S("INSERT INTO ... SELECT \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u3067\u306F\u672A\u5BFE\u5FDC\u3067\u3059",this.prev());let c=this.parseCheckGroups(),u=this.parseDmlControlSuffix();return{type:"INSERT_SELECT",appId:r,fields:i,select:d,...c,...u}}this.expect("VALUES");let o=[];do{this.expect("(");let d=this.parseInsertRow(i.length);this.expect(")"),o.push(d)}while(this.consume(","));let s=[];for(;this.isApplyBlockStart();)s.push(this.parseApplyBlock());if(this.isSoftKeyword("APPLY")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="SUBTABLE")throw new S("APPLY SUBTABLE noun is not supported; use APPLY <field> (...)",this.peek());if(s.length>0&&this.isSoftKeyword("CHECK"))throw new S("APPLY \u30D6\u30ED\u30C3\u30AF\u306E\u5F8C\u306B CHECK \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());if(s.length>0&&(this.peek().kind==="ON"||this.isSoftKeyword("REJECT")))throw new S("ON ERROR SKIP / REJECT LIMIT \u306F APPLY \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let a=this.parseCheckGroups(),l=this.parseDmlControlSuffix();if(this.isSoftKeyword("APPLY"))throw new S("APPLY \u306F CHECK / VALIDATE ONLY \u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(n&&a.checkGroups)throw new S("CHECK \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB INSERT \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(n&&(l.validateOnly||l.onErrorSkip))throw new S("VALIDATE ONLY / ON ERROR SKIP \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB INSERT \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());let p=s.length>0?{applyBlocks:s}:{};return n?{type:"INSERT",appId:r,subtableCode:n,fields:i,values:o,...p,...a,...l}:{type:"INSERT",appId:r,fields:i,values:o,...p,...a,...l}}parseUpsert(){this.expect("UPSERT"),this.expect("INTO"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:r,subtableCode:n}=Ve(t,this.prev());if(n)throw new S("UPSERT \u306F\u307E\u3060\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());this.expect("(");let i=this.parseIdentList();if(this.expect(")"),this.peek().kind==="SELECT"){let c=this.parseSelect(),u=this.parseOnDuplicate();if(this.isUpsertApplyBranchStart()||this.isApplyBlockStart())throw new S("UPSERT INTO ... SELECT \u306F ON INSERT / ON UPDATE APPLY \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.peek());let f=this.parseCheckGroups(),E=this.parseDmlControlSuffix();if(this.isUpsertApplyBranchStart()||this.isApplyBlockStart())throw new S("UPSERT INTO ... SELECT \u306F ON INSERT / ON UPDATE APPLY \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.peek());return{type:"UPSERT_SELECT",appId:r,fields:i,select:c,keyFields:u,...f,...E}}this.expect("VALUES");let o=[];do this.expect("("),o.push(this.parseInsertRow(i.length)),this.expect(")");while(this.consume(","));let s=this.parseOnDuplicate(),a=this.parseUpsertApplyBranches(),l=a.onInsertApplyBlocks!==void 0||a.onUpdateApplyBlocks!==void 0;if(l&&this.isSoftKeyword("CHECK"))throw new S("UPSERT \u306E\u5206\u5C90 APPLY \u306F CHECK \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());if(l&&(this.peek().kind==="ON"||this.isSoftKeyword("REJECT")))throw new S("UPSERT \u306E\u5206\u5C90 APPLY \u306F ON ERROR SKIP / REJECT LIMIT \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let p=this.parseCheckGroups(),d=this.parseDmlControlSuffix();if(this.isUpsertApplyBranchStart()||this.isApplyBlockStart())throw new S("ON INSERT / ON UPDATE APPLY \u306F CHECK / VALIDATE ONLY \u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());return{type:"UPSERT",appId:r,fields:i,values:o,keyFields:s,...a,...p,...d}}parseOnDuplicate(){if(this.expectKeyword("ON","UPSERT \u306B\u306F ON DUPLICATE (\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9) \u304C\u5FC5\u8981\u3067\u3059"),!this.consume("DUPLICATE"))throw new S("ON \u306E\u5F8C\u306B\u306F DUPLICATE \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.expect("(");let t=this.parseIdentList();if(this.expect(")"),t.length===0)throw new S("ON DUPLICATE \u306B\u306F\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",this.prev());return t}isUpsertApplyBranchStart(){return this.peek().kind==="ON"&&(this.peekAt(1).kind==="INSERT"||this.peekAt(1).kind==="UPDATE")}parseUpsertApplyBranches(){let t,r;for(;this.isUpsertApplyBranchStart();){this.advance();let n=this.advance(),i=n.kind==="INSERT";if(i&&t||!i&&r)throw new S(`ON ${i?"INSERT":"UPDATE"} APPLY \u306F 1 \u56DE\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059`,n);if(!this.isApplyBlockStart())throw new S(`ON ${i?"INSERT":"UPDATE"} \u306E\u5F8C\u306B\u306F APPLY \u30D6\u30ED\u30C3\u30AF\u304C\u5FC5\u8981\u3067\u3059`,this.peek());let o=[];for(;this.isApplyBlockStart();)o.push(this.parseApplyBlock());i?t=o:r=o}if(this.isApplyBlockStart())throw new S("UPSERT \u306E APPLY \u306B\u306F ON INSERT \u307E\u305F\u306F ON UPDATE \u304C\u5FC5\u8981\u3067\u3059",this.peek());return{...t?{onInsertApplyBlocks:t}:{},...r?{onUpdateApplyBlocks:r}:{}}}parseArrayLiteral(){this.expect("[");let t=[];if(this.peek().kind!=="]")do{let r=this.expect("STRING");t.push({type:"STRING",value:r.value})}while(this.consume(","));return this.expect("]"),{type:"ARRAY",elements:t}}parseInsertRow(t){let r=[];do if(this.peek().kind==="[")r.push(this.parseArrayLiteral());else if(this.peek().kind==="CASE"){let n=this.parseCaseWhenExpr();r.push({type:"CASE_VALUE",expr:n})}else if(this.peek().kind==="IF"){let n=this.parseIfExpr();r.push({type:"CASE_VALUE",expr:n})}else if(this.peek().kind==="-"||this.peek().kind==="+"){let n=this.advance(),i=this.expect("NUMBER","INSERT \u306E\u5358\u9805\u7B26\u53F7\u306E\u76F4\u5F8C\u306B\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");r.push(ue(`${n.kind==="-"?"-":"+"}${i.value}`))}else{let n=this.advance();if(n.kind==="STRING")r.push({type:"STRING",value:n.value});else if(n.kind==="NUMBER")r.push(ue(n.value));else throw new S("INSERT \u306E\u5024\u306B\u306F\u6587\u5B57\u5217\u30FB\u6570\u5024\u30FB\u914D\u5217\u30EA\u30C6\u30E9\u30EB\u30FBCASE WHEN \u304C\u5FC5\u8981\u3067\u3059",n)}while(this.consume(","));if(r.length!==t)throw new S(`\u30AB\u30E9\u30E0\u6570\uFF08${t}\uFF09\u3068\u5024\u306E\u6570\uFF08${r.length}\uFF09\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093`,this.prev());return r}parseUpdate(){this.expect("UPDATE"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:r,subtableCode:n}=Ve(t,this.prev());this.expect("SET");let i=this.parseAssignments();if(n&&i.some(u=>u.value.type==="STRING_FUNC"))throw new S("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE SET \u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u3092\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.prev());let o=null;if(this.consume("FROM")){let u=this.parseTableRef();if(u.subtableCode)throw new S("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u306B\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.prev());if(u.cteName!==null&&!u.cteName.startsWith("#"))throw new S("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u306F #temp \u307E\u305F\u306F APP<n> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08CTE \u306F\u975E\u5BFE\u5FDC\uFF09",this.prev());if(!u.alias)throw new S("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u306B\u306F\u30A8\u30A4\u30EA\u30A2\u30B9\u304C\u5FC5\u8981\u3067\u3059",this.prev());if(u.alias.toLowerCase()===`app${r}`.toLowerCase())throw new S(`UPDATE ... FROM \u306E\u30BD\u30FC\u30B9 alias \u306F\u66F4\u65B0\u5148 APP${r} \u3068\u540C\u540D\u306B\u3067\u304D\u307E\u305B\u3093`,this.prev());o={appId:u.appId,cteName:u.cteName,alias:u.alias,targetJoinField:"",joinKeyField:"",targetFilter:null}}let s=this.peek();if(!this.consume("WHERE"))throw new S("UPDATE \u6587\u306B\u306F WHERE \u53E5\u304C\u5FC5\u8981\u3067\u3059\uFF08\u5168\u4EF6\u66F4\u65B0\u3092\u9632\u3050\u305F\u3081\uFF09",s);let a=this.parseWhereExpr(),l=[];for(;this.isApplyBlockStart();)l.push(this.parseApplyBlock());if(this.isSoftKeyword("APPLY")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="SUBTABLE")throw new S("APPLY SUBTABLE noun is not supported; use APPLY <field> (...)",this.peek());if(l.length>0&&this.peek().kind==="WHERE")throw new S("\u89AA WHERE \u306F APPLY \u30D6\u30ED\u30C3\u30AF\u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(o!==null){if(n)throw new S("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE ... FROM \u306F\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093",s);this.validateUpdateFromAssignments(i,o.alias,s);let u=this.decomposeUpdateFromWhere(a,r,o.alias,s);o.targetJoinField=u.targetJoinField,o.joinKeyField=u.joinKeyField,o.targetFilter=u.targetFilter}else{if(i.some(u=>u.value.type==="SOURCE_FIELD"))throw new S("SET \u306E\u5024\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u5358\u72EC\u3067\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",s);if(i.some(u=>u.value.type==="STRING_FUNC"&&this.nodeContainsAnyQualifier(u.value)))throw new S("UPDATE SET \u306E\u6587\u5B57\u5217\u95A2\u6570\u3067\u306F\u66F4\u65B0\u5148\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u4FEE\u98FE\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044",s)}if(l.length>0&&this.isSoftKeyword("CHECK"))throw new S("APPLY \u30D6\u30ED\u30C3\u30AF\u306E\u5F8C\u306B CHECK \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());if(l.length>0&&(this.peek().kind==="ON"||this.isSoftKeyword("REJECT")))throw new S("ON ERROR SKIP / REJECT LIMIT \u306F APPLY \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let p=this.parseCheckGroups(),d=this.parseDmlControlSuffix();if(this.isSoftKeyword("APPLY"))throw new S("APPLY \u306F VALIDATE ONLY \u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(n&&p.checkGroups)throw new S("CHECK \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(n&&(d.validateOnly||d.onErrorSkip))throw new S("VALIDATE ONLY / ON ERROR SKIP \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());let c=l.length>0?{applyBlocks:l}:{};return o!==null?{type:"UPDATE",appId:r,assignments:i,where:a,from:o,...c,...p,...d}:n?{type:"UPDATE",appId:r,subtableCode:n,assignments:i,where:a,...c,...p,...d}:{type:"UPDATE",appId:r,assignments:i,where:a,...c,...p,...d}}isApplyBlockStart(){return this.isSoftKeyword("APPLY")&&(this.peekAt(1).kind==="IDENT"||this.peekAt(1).kind==="BIDENT")&&this.peekAt(2).kind==="("}parseApplyBlock(){this.advance();let t=this.parseIdentifier();if(this.expect("("),this.peek().kind===")"||this.peek().kind===";")throw new S("APPLY \u30D6\u30ED\u30C3\u30AF\u306B\u306F\u64CD\u4F5C\u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",this.peek());let r=[];for(;r.push(this.parseApplyOperation()),!(!this.consume(";")||this.peek().kind===")");)if(this.peek().kind===";")throw new S("APPLY \u30D6\u30ED\u30C3\u30AF\u306B\u7A7A\u306E\u64CD\u4F5C\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());this.expect(")","APPLY \u30D6\u30ED\u30C3\u30AF\u306E\u672B\u5C3E\u306B\u306F ) \u304C\u5FC5\u8981\u3067\u3059");let n=r.some(o=>o.kind==="PATCH"||o.kind==="APPEND"||o.kind==="REMOVE"),i=r.some(o=>o.kind==="ADD"||o.kind==="REMOVE_VALUE");if(n&&i)throw new S("1 \u3064\u306E APPLY \u30D6\u30ED\u30C3\u30AF\u306B\u884C\u64CD\u4F5C\u3068\u591A\u5024\u64CD\u4F5C\u306F\u6DF7\u5728\u3067\u304D\u307E\u305B\u3093",this.prev());return i?{field:t,targetKind:"MULTI_VALUE",operations:r}:{field:t,targetKind:"SUBTABLE",operations:r}}parseApplyOperation(){if(this.isSoftKeyword("ADD"))return this.advance(),{kind:"ADD",value:this.expect("STRING","ADD \u306E\u5F8C\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059").value};if(this.isSoftKeyword("PATCH")){this.advance(),this.expect("SET","PATCH \u306E\u5F8C\u306B\u306F SET \u304C\u5FC5\u8981\u3067\u3059");let t=this.parseAssignments(),r=this.parseApplyRowSelector(),n=this.parseExpectRowsGuard();return{kind:"PATCH",assignments:t,selector:r,...n?{expectRows:n}:{}}}if(this.isSoftKeyword("APPEND")){if(this.advance(),this.expect("(","APPEND \u306E\u5F8C\u306B\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u4E00\u89A7\u304C\u5FC5\u8981\u3067\u3059"),this.peek().kind===")")throw new S("APPEND \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u4E00\u89A7\u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093",this.peek());let t=[];do t.push(this.parseIdentifier());while(this.consume(","));this.expect(")"),this.expect("VALUES","APPEND \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u4E00\u89A7\u306E\u5F8C\u306B\u306F VALUES \u304C\u5FC5\u8981\u3067\u3059");let r=[];do this.expect("(","APPEND VALUES \u306E\u5404\u884C\u306F ( \u3067\u59CB\u3081\u3066\u304F\u3060\u3055\u3044"),r.push(this.parseInsertRow(t.length)),this.expect(")");while(this.consume(","));return{kind:"APPEND",fields:t,values:r}}if(this.isSoftKeyword("REMOVE")){if(this.advance(),this.peek().kind==="STRING")return{kind:"REMOVE_VALUE",value:this.advance().value};let t=this.parseApplyRowSelector(),r=this.parseExpectRowsGuard();return{kind:"REMOVE",selector:t,...r?{expectRows:r}:{}}}throw new S("APPLY \u306E\u64CD\u4F5C\u306B\u306F PATCH / APPEND / REMOVE / ADD \u304C\u5FC5\u8981\u3067\u3059",this.peek())}parseApplyRowSelector(){if(this.consume("WHERE"))return{kind:"WHERE",where:this.parseWhereExpr()};if(this.consume("ALL")){if(!this.isSoftKeyword("ROWS"))throw new S("ALL \u306E\u5F8C\u306B\u306F ROWS \u304C\u5FC5\u8981\u3067\u3059",this.peek());return this.advance(),{kind:"ALL_ROWS"}}throw new S("PATCH / REMOVE \u306B\u306F WHERE \u307E\u305F\u306F ALL ROWS \u304C\u5FC5\u8981\u3067\u3059",this.peek())}parseExpectRowsGuard(){if(this.isSoftKeyword("EXPECT")){if(this.advance(),!this.isSoftKeyword("ROWS"))throw new S("EXPECT \u306E\u5F8C\u306B\u306F ROWS \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(this.advance(),this.consume("BETWEEN")){let t=this.parseExpectRowsCount();this.expect("AND","EXPECT ROWS BETWEEN \u306E\u4E0B\u9650\u3068\u4E0A\u9650\u306F AND \u3067\u533A\u5207\u3063\u3066\u304F\u3060\u3055\u3044");let r=this.parseExpectRowsCount();if(t>r)throw new S("EXPECT ROWS BETWEEN \u306E\u4E0B\u9650\u306F\u4E0A\u9650\u4EE5\u4E0B\u306B\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());return{kind:"BETWEEN",min:t,max:r}}if(this.isSoftKeyword("AT")){if(this.advance(),this.peek().value.toUpperCase()==="LEAST")return this.advance(),{kind:"AT_LEAST",count:this.parseExpectRowsCount()};if(this.isSoftKeyword("MOST"))return this.advance(),{kind:"AT_MOST",count:this.parseExpectRowsCount()};throw new S("EXPECT ROWS AT \u306E\u5F8C\u306B\u306F LEAST \u307E\u305F\u306F MOST \u304C\u5FC5\u8981\u3067\u3059",this.peek())}return{kind:"EXACT",count:this.parseExpectRowsCount()}}}parseExpectRowsCount(){let t=this.expect("NUMBER","EXPECT ROWS \u306B\u306F 0 \u4EE5\u4E0A\u306E\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059");if(!/^\d+$/.test(t.value)||!Number.isSafeInteger(Number(t.value)))throw new S("EXPECT ROWS \u306F 0 \u4EE5\u4E0A\u306E\u5B89\u5168\u306A\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",t);return Number(t.value)}parseCheckGroups(){let t=[];for(;this.isSoftKeyword("CHECK")&&this.peekAt(1).kind==="WHEN";){let r=this.advance(),n=[];for(;this.consume("WHEN");){let i=this.parseWhereExpr();this.expect("THEN","CHECK WHEN \u306E\u6761\u4EF6\u306E\u5F8C\u306B\u306F THEN \u304C\u5FC5\u8981\u3067\u3059");let o=this.parseScalarValueExpr({allowCase:!1});n.push({condition:i,message:o})}if(n.length===0)throw new S("CHECK \u306E\u5F8C\u306B\u306F WHEN \u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",r);t.push({rules:n})}return t.length>0?{checkGroups:t}:{}}parseDmlControlSuffix(){if(this.peek().kind==="ON")return this.parseOnErrorSkipSuffix();if(this.isSoftKeyword("REJECT"))throw new S("REJECT LIMIT \u306B\u306F ON ERROR SKIP INTO \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(!this.isSoftKeyword("VALIDATE"))return{};let t=this.advance();if(!this.isSoftKeyword("ONLY"))throw new S("VALIDATE \u306E\u5F8C\u306B\u306F ONLY \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance();let r=null;if(this.consume("INTO")){let n=this.peek();if(n.kind!=="IDENT"||!n.value.startsWith("#"))throw new S("VALIDATE ONLY INTO \u306B\u306F # \u3067\u59CB\u307E\u308B\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",n);r=this.parseTableName()}if(this.peek().kind==="ON"||this.isSoftKeyword("REJECT"))throw new S("VALIDATE ONLY \u3068 ON ERROR / REJECT LIMIT \u306F\u4F75\u8A18\u3067\u304D\u307E\u305B\u3093",t);return{validateOnly:!0,validationErrorTable:r}}parseOnErrorSkipSuffix(){let t=this.advance();if(!this.isSoftKeyword("ERROR"))throw new S("ON \u306E\u5F8C\u306B\u306F ERROR \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(this.advance(),!this.isSoftKeyword("SKIP"))throw new S("ON ERROR \u306E\u5F8C\u306B\u306F SKIP \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance(),this.expect("INTO","ON ERROR SKIP \u306B\u306F INTO #\u4E00\u6642\u30C6\u30FC\u30D6\u30EB \u304C\u5FC5\u8981\u3067\u3059");let r=this.peek();if(r.kind!=="IDENT"||!r.value.startsWith("#"))throw new S("ON ERROR SKIP INTO \u306B\u306F # \u3067\u59CB\u307E\u308B\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",r);let n=this.parseTableName(),i=null;if(this.isSoftKeyword("REJECT")){this.advance(),this.expect("LIMIT","REJECT \u306E\u5F8C\u306B\u306F LIMIT \u304C\u5FC5\u8981\u3067\u3059");let o=this.expect("NUMBER","REJECT LIMIT \u306B\u306F 0 \u4EE5\u4E0A\u306E\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059");if(!/^\d+$/.test(o.value))throw new S("REJECT LIMIT \u306F 0 \u4EE5\u4E0A\u306E\u5B89\u5168\u306A\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",o);if(i=Number(o.value),!Number.isSafeInteger(i))throw new S("REJECT LIMIT \u306F 0 \u4EE5\u4E0A\u306E\u5B89\u5168\u306A\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",o)}if(this.isSoftKeyword("REJECT")||this.isSoftKeyword("VALIDATE")||this.peek().kind==="ON")throw new S("ON ERROR SKIP \u306E\u53E5\u304C\u91CD\u8907\u307E\u305F\u306F\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059",t);return{onErrorSkip:!0,errorTable:n,rejectLimit:i}}isSoftKeyword(t){return this.peek().kind==="IDENT"&&this.peek().value.toUpperCase()===t}validateUpdateFromAssignments(t,r,n){for(let i of t){if(i.value.type==="STRING_FUNC")throw new S("UPDATE ... FROM \u306E SET \u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u3092\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);if(i.value.type==="SOURCE_FIELD"){if(i.value.alias.toLowerCase()!==r.toLowerCase())throw new S(`UPDATE ... FROM \u306E SET \u53C2\u7167\u306F\u30BD\u30FC\u30B9 alias ${r} \u3067\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044`,n);continue}if(this.nodeContainsQualifiedField(i.value,r))throw new S("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u5217\u306F SET \u306E\u76F4\u63A5\u5024\u3068\u3057\u3066\u306E\u307F\u53C2\u7167\u3067\u304D\u307E\u3059",n);if(i.value.type==="SCALAR_SUBQUERY")throw new S("UPDATE ... FROM \u306E SET \u3067\u306F\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);if(this.nodeContainsAnyQualifier(i.value))throw new S("UPDATE ... FROM \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u5F0F\u3067\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u4FEE\u98FE\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044",n)}}decomposeUpdateFromWhere(t,r,n,i){let o=this.flattenTopLevelAnd(t),s=[];if(o.forEach((d,c)=>{let u=this.matchUpdateFromJoin(d,r,n);u!==null&&s.push({index:c,...u})}),s.length!==1)throw new S("UPDATE ... FROM \u306E WHERE \u306B\u306F target.key = source.key \u306E\u7D50\u5408\u7B49\u5024\u304C\u3061\u3087\u3046\u30691\u3064\u5FC5\u8981\u3067\u3059",i);let a=s[0];for(let d=0;d<o.length;d++){if(d!==a.index&&this.nodeContainsQualifiedField(o[d],n))throw new S("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9 alias \u306F\u7D50\u5408\u7B49\u5024\u4EE5\u5916\u306E WHERE \u6761\u4EF6\u3067\u306F\u53C2\u7167\u3067\u304D\u307E\u305B\u3093",i);if(d!==a.index&&this.nodeContainsForeignQualifier(o[d],r))throw new S(`UPDATE ... FROM \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u30D5\u30A3\u30EB\u30BF\u306F APP${r} \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3060\u3051\u3092\u53C2\u7167\u3067\u304D\u307E\u3059`,i)}let p=o.filter((d,c)=>c!==a.index).reduce((d,c)=>d===null?c:{type:"LOGICAL",op:"AND",left:d,right:c},null);return{targetJoinField:a.targetField,joinKeyField:a.sourceField,targetFilter:p}}flattenTopLevelAnd(t){return t.type==="GROUP"?this.flattenTopLevelAnd(t.expr):t.type==="LOGICAL"&&t.op==="AND"?[...this.flattenTopLevelAnd(t.left),...this.flattenTopLevelAnd(t.right)]:[t]}matchUpdateFromJoin(t,r,n){if(t.type!=="BINARY"||t.op!=="="||t.left.type!=="FIELD")return null;let i=t.right.type==="ARITH_VALUE"&&t.right.expr.type==="FIELD_REF"?this.splitQualifiedField(t.right.expr.field):null;if(i===null)return null;let o={alias:t.left.tableAlias,field:t.left.field};return this.isTargetRef(o,r)&&this.isSourceRef(i,n)?{targetField:o.field,sourceField:i.field}:this.isSourceRef(o,n)&&this.isTargetRef(i,r)?{targetField:i.field,sourceField:o.field}:null}splitQualifiedField(t){let r=t.indexOf(".");return r<0?{alias:null,field:t}:{alias:t.slice(0,r),field:t.slice(r+1)}}isTargetRef(t,r){return t.alias===null||t.alias.toLowerCase()===`app${r}`.toLowerCase()}isSourceRef(t,r){return t.alias?.toLowerCase()===r.toLowerCase()}nodeContainsQualifiedField(t,r){if(Array.isArray(t))return t.some(i=>this.nodeContainsQualifiedField(i,r));if(t===null||typeof t!="object")return!1;let n=t;if(n.type==="FIELD"&&typeof n.tableAlias=="string"&&n.tableAlias.toLowerCase()===r.toLowerCase())return!0;if(n.type==="FIELD_REF"&&typeof n.field=="string"){let i=this.splitQualifiedField(n.field);if(this.isSourceRef(i,r))return!0}return Object.values(n).some(i=>this.nodeContainsQualifiedField(i,r))}nodeContainsForeignQualifier(t,r){if(Array.isArray(t))return t.some(o=>this.nodeContainsForeignQualifier(o,r));if(t===null||typeof t!="object")return!1;let n=t,i=`app${r}`.toLowerCase();if(n.type==="FIELD"&&typeof n.tableAlias=="string")return n.tableAlias.toLowerCase()!==i;if(n.type==="FIELD_REF"&&typeof n.field=="string"){let o=this.splitQualifiedField(n.field);if(o.alias!==null)return o.alias.toLowerCase()!==i}return Object.values(n).some(o=>this.nodeContainsForeignQualifier(o,r))}nodeContainsAnyQualifier(t){if(Array.isArray(t))return t.some(n=>this.nodeContainsAnyQualifier(n));if(t===null||typeof t!="object")return!1;let r=t;return r.type==="FIELD"&&typeof r.tableAlias=="string"||r.type==="FIELD_REF"&&typeof r.field=="string"&&this.splitQualifiedField(r.field).alias!==null?!0:Object.values(r).some(n=>this.nodeContainsAnyQualifier(n))}parseAssignments(){let t=[];do{let r=this.parseIdentifier();this.expect("=");let n=this.parseAssignmentValue();t.push({field:r,value:n})}while(this.consume(","));return t}parseAssignmentValue(){let t=this.peek();if(this.hasTopLevelTokenBeforeValueEnd("||")){let i=this.parseScalarValueExpr();if(i.type==="CONCAT_OP"||i.type==="SCALAR_ARITH"||i.type==="STRING_FUNC")return i;if(i.type==="CASE_WHEN")return{type:"CASE_VALUE",expr:i};throw new S("SET \u306E\u5024\u306B\u306F\u9023\u7D50\u3092\u542B\u3080\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u304C\u5FC5\u8981\u3067\u3059",t)}if(t.kind==="VARIABLE")return this.parseSqlValue();if(t.kind==="STRING")return this.parseSqlValue();if(pa(t.kind))return this.parseSqlValue();if(t.kind==="IN")return this.parseSqlValue();if(t.kind==="CASE"||t.kind==="IF")return this.parseSqlValue();if(t.kind==="[")return this.parseArrayLiteral();if(t.kind==="("&&this.peekAt(1).kind==="SELECT"){this.advance();let i=this.parseSelect();return this.expect(")"),{type:"SCALAR_SUBQUERY",query:i}}let r=this.allowUnaryPlusNumber;this.allowUnaryPlusNumber=!0;let n;try{n=this.parseArithAddSub()}finally{this.allowUnaryPlusNumber=r}if(n.type==="NUMBER"||n.type==="ARITH"||n.type==="STRING_FUNC")return n;if(n.type==="FIELD_REF"){let i=n.field.indexOf(".");if(i>0&&i<n.field.length-1)return{type:"SOURCE_FIELD",alias:n.field.slice(0,i),field:n.field.slice(i+1)}}throw new S("SET \u306E\u5024\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u5358\u72EC\u3067\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",t)}parseArithOp(){let t=this.advance();switch(t.kind){case"+":return"+";case"-":return"-";case"*":return"*";case"/":return"/";case"%":return"%";default:throw new S("\u7B97\u8853\u6F14\u7B97\u5B50\uFF08+ - * / %\uFF09\u304C\u5FC5\u8981\u3067\u3059",t)}}parseDelete(){this.expect("DELETE"),this.expect("FROM"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:r,subtableCode:n}=Ve(t,this.prev()),i=this.peek();if(!this.consume("WHERE"))throw new S("DELETE \u6587\u306B\u306F WHERE \u53E5\u304C\u5FC5\u9808\u3067\u3059\uFF08\u5168\u4EF6\u524A\u9664\u3092\u9632\u3050\u305F\u3081\uFF09",i);let o=this.parseWhereExpr();return n?{type:"DELETE",appId:r,subtableCode:n,where:o}:{type:"DELETE",appId:r,where:o}}parseReorder(){this.expect("REORDER");let t=this.consume("ALL");this.rejectTempTableDml();let r=this.parseIdentifier(),{appId:n,subtableCode:i}=Ve(r,this.prev());if(!i)throw new S("REORDER \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u306E\u307F\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08\u4F8B: REORDER APP100$\u660E\u7D30 ...\uFF09",this.prev());this.expect("BY");let o=this.parseOrderBy();if(o.length===0)throw new S("REORDER \u306B\u306F BY \u30AD\u30FC\u304C\u5FC5\u8981\u3067\u3059",this.prev());let s=null;if(t){if(this.peek().kind==="WHERE")throw new S("REORDER ALL \u3067\u306F WHERE \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek())}else{let a=this.peek();if(!this.consume("WHERE"))throw new S("REORDER \u306B\u306F WHERE \u53E5\u304C\u5FC5\u9808\u3067\u3059\uFF08\u8AA4\u64CD\u4F5C\u9632\u6B62\uFF09",a);s=this.parseWhereExpr()}return{type:"REORDER",appId:n,subtableCode:i,all:t,by:o,where:s}}peek(){return this.tokens[this.pos]??{kind:"EOF",value:"",pos:-1}}peekAt(t){return this.tokens[this.pos+t]??{kind:"EOF",value:"",pos:-1}}prev(){return this.tokens[this.pos-1]??{kind:"EOF",value:"",pos:-1}}advance(){let t=this.peek();return t.kind!=="EOF"&&this.pos++,t}consume(t){return this.peek().kind===t?(this.advance(),!0):!1}expect(t,r){let n=this.peek();if(n.kind!==t)throw new S(r??`\u300C${t}\u300D\u304C\u5FC5\u8981\u3067\u3059`,n);return this.advance()}expectKeyword(t,r){return this.expect(t,r)}parseUnsignedInt(){let t=this.expect("NUMBER","\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059"),r=Number(t.value);if(!Number.isInteger(r)||r<0)throw new S("\u6B63\u306E\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059",t);return r}parseIdentifier(){let t=this.peek();if(t.kind==="IDENT"||t.kind==="BIDENT"){if(t.kind==="IDENT"&&t.value.startsWith("#"))throw new S("\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\uFF08# \u3067\u59CB\u307E\u308B\u540D\u524D\uFF09\u306F FROM / JOIN / CREATE / DROP TEMP TABLE \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059",t);return this.advance(),t.value}throw new S("\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u307E\u305F\u306F\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}parseTableName(){let t=this.peek();if(t.kind==="IDENT"||t.kind==="BIDENT")return this.advance(),t.value;throw new S("\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u307E\u305F\u306F\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}rejectTempTableDml(){let t=this.peek();if(t.kind==="IDENT"&&t.value.startsWith("#"))throw new S(`DML on temp table ${t.value} is not supported.`,t)}parseAliasName(){let t=this.peek();if(t.value.startsWith("#"))throw new S("\u30A8\u30A4\u30EA\u30A2\u30B9\u540D\u306B # \u3067\u59CB\u307E\u308B\u540D\u524D\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",t);if(t.kind==="IDENT"||t.kind==="BIDENT"||An.has(t.value.toUpperCase()))return this.advance(),t.value.toLowerCase();throw new S("\u30A8\u30A4\u30EA\u30A2\u30B9\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}parseFieldPath(){let t=this.parseIdentifier();if(this.peek().kind!==".")return t;this.advance();let r=this.parseIdentifier();return`${t}.${r}`}parseColumnFieldRef(){let t=this.parseIdentifier();if(this.peek().kind!==".")return t;if(this.advance(),this.consume("*"))return`${t}.*`;let r=this.parseIdentifier();return`${t}.${r}`}};function Tp(e){let t=e.toUpperCase(),r=new Set(["TEXT","VARCHAR","CHAR","NCHAR","NVARCHAR","STRING"]),n=new Set(["NUMBER","INT","INTEGER","NUMERIC","DECIMAL","FLOAT","DOUBLE","REAL","BIGINT","SMALLINT"]);return r.has(t)?"TEXT":n.has(t)?"NUMBER":null}function Ve(e,t){let r=e.match(/^[Aa][Pp][Pp](\d+)(?:\$(.+))?$/);if(!r)throw new S(`\u30C6\u30FC\u30D6\u30EB\u540D\u306F APP + \u6570\u5B57\uFF08\u307E\u305F\u306F APP + \u6570\u5B57 + $\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\uFF09\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: APP100 / APP100$\u660E\u7D30\uFF09\u3002\u300C${e}\u300D\u306F\u7121\u52B9\u3067\u3059`,t);return{appId:Number(r[1]),subtableCode:r[2]??null}}function Ea(e){return e==="INSERT"||e==="INSERT_SELECT"||e==="UPDATE"||e==="DELETE"||e==="UPSERT"||e==="UPSERT_SELECT"||e==="REORDER"||e==="IMPORT"}var wp=new Set(["STDDEV_POP","STDDEV_SAMP","VAR_POP","VAR_SAMP","MEDIAN","MODE"]);function ce(e,t){for(let r of t)e.add(r)}function bn(e,t=new Set){if(e===null||typeof e!="object"||t.has(e))return!1;t.add(e);let r=e;return(r.type==="AGGREGATE"||r.type==="AGG_REF")&&typeof r.func=="string"&&wp.has(r.func)||r.type==="FIELD"&&typeof r.field=="string"&&/^(STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/i.test(r.field)?!0:Object.values(r).some(n=>Array.isArray(n)?n.some(i=>bn(i,t)):bn(n,t))}function gt(e){let t=new Set;if(Ea(e.type))return t.add("DML"),t;switch(e.type){case"VALIDATE":t.add("VALIDATE");break;case"SELECT":ce(t,Gt(e));break;case"UNION":ce(t,Ra(e));break;case"WITH":for(let r of e.ctes)ce(t,gt(r.query));ce(t,gt(e.query));break;case"CREATE_TEMP_TABLE":ce(t,gt(e.query));break;default:break}return bn(e)&&t.add("STATISTICAL_AGGREGATE"),t}function Ra(e){let t=e.left.type==="SELECT"?Gt(e.left):Ra(e.left);return ce(t,Gt(e.right)),t}function Gt(e){let t=new Set;ne(e).type==="GROUPING_SETS"&&t.add("GROUPING_SETS"),e.orderBy.length>0&&t.add("LOCAL_ORDER");for(let r of e.columns)if(r.type==="WINDOW_COL"&&r.orderBy.length>0&&t.add("WINDOW_ORDER"),r.type==="SCALAR_SUBQUERY_COL"&&ce(t,Gt(r.query)),r.type==="CASE_COL")for(let n of r.expr.branches)ce(t,$t(n.condition));return ce(t,$t(e.where)),ce(t,$t(e.having)),bn(e)&&t.add("STATISTICAL_AGGREGATE"),t}function $t(e){let t=new Set;if(e===null)return t;switch(e.type){case"BINARY":(e.right.type==="SUBQUERY_IN_LIST"||e.right.type==="SCALAR_SUBQUERY")&&ce(t,Gt(e.right.query));break;case"LOGICAL":ce(t,$t(e.left)),ce(t,$t(e.right));break;case"NOT":case"GROUP":ce(t,$t(e.expr));break;case"EXISTS":ce(t,Gt(e.query));break;case"NULL_CHECK":case"BOOLEAN":break}return t}var Ip=Object.freeze({v1:Object.freeze({operations:new Set(["PATCH"]),insert:!1,upsert:!1,multipleBlocks:!1,multipleParents:!1,idxSelectors:!1,expectRows:!1,updateFrom:!1,check:!1,onErrorSkip:!1,rejectLimit:!1}),"v1.1":Object.freeze({operations:new Set(["PATCH","APPEND"]),insert:!1,upsert:!1,multipleBlocks:!0,multipleParents:!1,idxSelectors:!1,expectRows:!1,updateFrom:!1,check:!1,onErrorSkip:!1,rejectLimit:!1}),"v1.2":Object.freeze({operations:new Set(["PATCH","APPEND","REMOVE"]),insert:!1,upsert:!1,multipleBlocks:!0,multipleParents:!1,idxSelectors:!1,expectRows:!1,updateFrom:!1,check:!1,onErrorSkip:!1,rejectLimit:!1}),phase10a:Object.freeze({operations:new Set(["PATCH","APPEND","REMOVE"]),insert:!1,upsert:!1,multipleBlocks:!0,multipleParents:!0,idxSelectors:!1,expectRows:!1,updateFrom:!1,check:!1,onErrorSkip:!1,rejectLimit:!1}),phase11:Object.freeze({operations:new Set(["PATCH","APPEND","REMOVE"]),insert:!1,upsert:!1,multipleBlocks:!0,multipleParents:!0,idxSelectors:!0,expectRows:!1,updateFrom:!1,check:!1,onErrorSkip:!1,rejectLimit:!1}),phase12:Object.freeze({operations:new Set(["PATCH","APPEND","REMOVE"]),insert:!1,upsert:!1,multipleBlocks:!0,multipleParents:!0,idxSelectors:!0,expectRows:!0,updateFrom:!1,check:!1,onErrorSkip:!1,rejectLimit:!1}),phase13a:Object.freeze({operations:new Set(["PATCH","APPEND","REMOVE"]),insert:!0,upsert:!1,multipleBlocks:!0,multipleParents:!0,idxSelectors:!0,expectRows:!0,updateFrom:!1,check:!1,onErrorSkip:!1,rejectLimit:!1}),phase14a:Object.freeze({operations:new Set(["PATCH","APPEND","REMOVE"]),insert:!0,upsert:!0,multipleBlocks:!0,multipleParents:!0,idxSelectors:!0,expectRows:!0,updateFrom:!1,check:!1,onErrorSkip:!1,rejectLimit:!1}),phase14b:Object.freeze({operations:new Set(["PATCH","APPEND","REMOVE"]),insert:!0,upsert:!0,multipleBlocks:!0,multipleParents:!0,idxSelectors:!0,expectRows:!0,updateFrom:!1,check:!1,onErrorSkip:!1,rejectLimit:!1}),phase14c:Object.freeze({operations:new Set(["PATCH","APPEND","REMOVE"]),insert:!0,upsert:!0,multipleBlocks:!0,multipleParents:!0,idxSelectors:!0,expectRows:!0,updateFrom:!1,check:!1,onErrorSkip:!1,rejectLimit:!1}),phase15a:Object.freeze({operations:new Set(["PATCH","APPEND","REMOVE","ADD","REMOVE_VALUE"]),insert:!0,upsert:!0,multipleBlocks:!0,multipleParents:!0,idxSelectors:!0,expectRows:!0,updateFrom:!1,check:!1,onErrorSkip:!1,rejectLimit:!1}),phase15b:Object.freeze({operations:new Set(["PATCH","APPEND","REMOVE","ADD","REMOVE_VALUE"]),insert:!0,upsert:!0,multipleBlocks:!0,multipleParents:!0,idxSelectors:!0,expectRows:!0,updateFrom:!1,check:!1,onErrorSkip:!1,rejectLimit:!1})}),eo=Object.freeze({phase10a:Object.freeze({multipleParentPreflight:!1,internalPreparedWrite:!1,publicMultipleParentWrite:!1,insertWrite:!1,upsertWrite:!1}),phase10b:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!1,publicMultipleParentWrite:!1,insertWrite:!1,upsertWrite:!1}),phase10c:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!1,insertWrite:!1,upsertWrite:!1}),phase10d:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!1,upsertWrite:!1}),phase11:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!1,upsertWrite:!1}),phase12:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!1,upsertWrite:!1}),phase13a:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!1,upsertWrite:!1}),phase13b:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!1,upsertWrite:!1}),phase13c:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!0,upsertWrite:!1}),phase14a:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!0,upsertWrite:!1}),phase14b:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!0,upsertWrite:!1}),phase14c:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!0,upsertWrite:!0}),phase15a:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!0,upsertWrite:!0}),phase15b:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!0,upsertWrite:!0})}),Sr="v1";function K(e){throw new Error(`UnsupportedError: APPLY ${Sr} scope does not support ${e}`)}function bp(e,t){let r=Sr;Sr=e;try{return t()}finally{Sr=r}}function Pp(e){let t=e.type==="EXPLAIN"?e.query:e;return t.type==="UPDATE"||t.type==="INSERT"?t.applyBlocks?.length?t:null:t.type==="UPSERT"&&(t.onInsertApplyBlocks?.length||t.onUpdateApplyBlocks?.length)?t:null}function Cn(e,t){return bp(e,()=>Cp(t,Ip[e]))}function Cp(e,t){let r=Pp(e);if(r===null)return;if(r.type==="UPSERT"){Op(r,t);return}let n=r.applyBlocks;if(Qi(n),!t.multipleBlocks&&n.length!==1&&K("multiple APPLY blocks in this phase"),r.type==="INSERT"){Lp(r,n,t);return}let i=r;i.subtableCode&&K("a subtable UPDATE as the parent statement in this phase"),!t.updateFrom&&i.from!=null&&K("UPDATE ... FROM in this phase"),!t.check&&i.checkGroups?.length&&K("CHECK in this phase"),!t.onErrorSkip&&i.onErrorSkip&&K("ON ERROR SKIP in this phase"),!t.rejectLimit&&i.rejectLimit!=null&&K("REJECT LIMIT in this phase"),_p(i.where,t.multipleParents),ga(n,t)}function ga(e,t){for(let r of e){for(let n of r.operations)t.operations.has(n.kind)||K(`${n.kind} in this phase`);ha(r);for(let n of r.operations){if(n.kind==="APPEND"){for(let i of n.fields)Pn(i,"APPEND targets");Wt(n.values,"APPEND values");continue}if(n.kind==="REMOVE"){!t.expectRows&&n.expectRows&&K("EXPECT ROWS in this phase"),n.selector.kind==="WHERE"&&ma(n.selector.where,t.idxSelectors);continue}if(n.kind==="PATCH"){!t.expectRows&&n.expectRows&&K("EXPECT ROWS in this phase"),n.assignments.length===0&&K("an empty PATCH operation in this phase");for(let i of n.assignments){if(i.field.startsWith("_")||i.field.startsWith("$"))throw new Error(`ArgumentError: APPLY assignment target ${i.field} is a system field.`);i.field.includes(".")&&K("parent or qualified PATCH targets in this phase")}Wt(n.assignments,"PATCH assignments"),n.selector.kind==="WHERE"&&ma(n.selector.where,t.idxSelectors)}}}}function ha(e){let t=e.operations.some(i=>i.kind==="PATCH"||i.kind==="APPEND"||i.kind==="REMOVE"),r=e.operations.some(i=>i.kind==="ADD"||i.kind==="REMOVE_VALUE");if(t&&r)throw new Error("ArgumentError: APPLY block cannot mix row operations and multi-value operations.");let n=r?"MULTI_VALUE":"SUBTABLE";if(e.targetKind!==n)throw new Error(`ArgumentError: APPLY block target kind ${String(e.targetKind)} does not match ${n} operations.`)}var Np=new Set(["MULTI_SELECT","CHECK_BOX","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function ya(e,t){if(ha(e),e.targetKind==="MULTI_VALUE"){if(!Np.has(t))throw new Error(`ArgumentError: APPLY multi-value operations require MULTI_SELECT, CHECK_BOX, USER_SELECT, ORGANIZATION_SELECT, or GROUP_SELECT target; ${e.field} is ${t}.`);return}if(t!=="SUBTABLE")throw new Error(`ArgumentError: APPLY row operations require a SUBTABLE target; ${e.field} is ${t}.`)}function Qi(e){let t=new Set;for(let r of e){if(t.has(r.field))throw new Error(`ArgumentError: APPLY ${Sr} scope allows only one block for table ${r.field}`);t.add(r.field)}}function Op(e,t){t.upsert||K("UPSERT in this phase"),!t.check&&e.checkGroups?.length&&K("CHECK in this phase"),!t.onErrorSkip&&e.onErrorSkip&&K("ON ERROR SKIP in this phase"),!t.rejectLimit&&e.rejectLimit!=null&&K("REJECT LIMIT in this phase");let r=e.onInsertApplyBlocks??[],n=e.onUpdateApplyBlocks??[];Qi(r),Qi(n),!t.multipleBlocks&&(r.length>1||n.length>1)&&K("multiple APPLY blocks in this phase"),Aa(r,"UPSERT ON INSERT"),ga(n,{...t,idxSelectors:!1,expectRows:!1})}function Aa(e,t){for(let r of e)for(let n of r.operations){n.kind!=="APPEND"&&K(`${n.kind} for ${t} in this phase`);for(let i of n.fields)Pn(i,"APPEND targets");Wt(n.values,"APPEND values")}}function Lp(e,t,r){r.insert||K("INSERT in this phase"),e.subtableCode&&K("a subtable INSERT as the parent statement in this phase"),!r.check&&e.checkGroups?.length&&K("CHECK in this phase"),!r.onErrorSkip&&e.onErrorSkip&&K("ON ERROR SKIP in this phase"),!r.rejectLimit&&e.rejectLimit!=null&&K("REJECT LIMIT in this phase"),Aa(t,"INSERT")}function We(e){if(e.type!=="BINARY"||e.op!=="="||e.left.type!=="FIELD"||e.left.tableAlias!==null||e.left.field!=="$id"||e.right.type!=="NUMBER")return!1;let t=e.right.raw??String(e.right.value);return/^\d+$/.test(t)&&e.right.value>0&&Number.isSafeInteger(e.right.value)}function Sa(e,t){let r=eo[e],n="validateOnly"in t&&t.validateOnly===!0;if(t.type!=="EXPLAIN"&&!n&&Ta(t)&&e!=="phase15b")throw new Error(`UnsupportedError: APPLY ${Vt(e)} multi-value execution is not connected`);if(t.type==="UPSERT"&&(t.onInsertApplyBlocks?.length||t.onUpdateApplyBlocks?.length)){if(t.validateOnly!==!0&&!r.upsertWrite)throw new Error(`UnsupportedError: APPLY ${Vt(e)} UPSERT execution is not connected`);return}if(t.type==="INSERT"&&t.applyBlocks?.length){if(t.validateOnly!==!0&&!r.insertWrite)throw new Error(`UnsupportedError: APPLY ${Vt(e)} INSERT execution is not connected`);return}if(!(t.type!=="UPDATE"||!t.applyBlocks?.length)&&!r.multipleParentPreflight&&!We(t.where))throw new Error(`UnsupportedError: APPLY ${Vt(e)} execution does not support multiple-parent APPLY`)}function Ta(e){let t=e.type==="EXPLAIN"?e.query:e;return(t.type==="UPDATE"||t.type==="INSERT"?t.applyBlocks??[]:t.type==="UPSERT"?[...t.onInsertApplyBlocks??[],...t.onUpdateApplyBlocks??[]]:[]).some(n=>n.targetKind==="MULTI_VALUE"||n.operations.some(i=>i.kind==="ADD"||i.kind==="REMOVE_VALUE"))}function wa(e,t){if(!(t.type!=="UPDATE"||!t.applyBlocks?.length||We(t.where))&&!eo[e].publicMultipleParentWrite)throw new Error(`UnsupportedError: APPLY ${Vt(e)} public multiple-parent write is not connected`)}function Ht(e){if(!eo[e].internalPreparedWrite)throw new Error(`UnsupportedError: APPLY ${Vt(e)} internal prepared write is not available`)}function Vt(e){return`Phase ${e.slice(5)}`}function _p(e,t){We(e)||(e.type==="BINARY"&&e.op==="="&&e.left.type==="FIELD"&&e.left.tableAlias===null&&e.left.field==="$id"&&K("a parent $id that is not a positive safe integer in this phase"),t||K("a parent WHERE other than the single condition $id = <positive safe integer> in this phase"),Zi(e,t))}function Zi(e,t){if(Array.isArray(e)){for(let o of e)Zi(o,t);return}if(e===null||typeof e!="object")return;let r=e,n=typeof r.type=="string"?r.type:null,i=typeof r.op=="string"?r.op:null;!t&&(i==="KLIKE"||i==="NOT_KLIKE")&&K("KLIKE in parent WHERE"),(n==="SELECT"||n==="SCALAR_SUBQUERY"||n==="SUBQUERY_IN_LIST"||n==="EXISTS")&&K("subqueries in parent WHERE"),(n==="WINDOW_COL"||n==="AGGREGATE"||n==="AGG_REF"||n==="AGG_ARITH"||n==="ARITH_AGG_COL")&&K("aggregate or window expressions in parent WHERE"),(n==="FIELD"||n==="FIELD_REF")&&typeof r.field=="string"&&/^(count|sum|avg|min|max|group_concat)\s*\(/i.test(r.field)&&K("aggregate or window expressions in parent WHERE"),n==="KINTONE_FUNC"&&K("non-deterministic kintone functions in parent WHERE");for(let o of Object.values(r))Zi(o,t)}function ma(e,t){Wt(e,"child row selectors",t)}function Wt(e,t,r=!1){if(Array.isArray(e)){for(let a of e)Wt(a,t,r);return}if(e===null||typeof e!="object")return;let n=e,i=typeof n.type=="string"?n.type:null,o=typeof n.kind=="string"?n.kind:null,s=typeof n.op=="string"?n.op:null;if((s==="KLIKE"||s==="NOT_KLIKE")&&K(`KLIKE in ${t}`),(i==="SELECT"||i==="SCALAR_SUBQUERY"||i==="SUBQUERY_IN_LIST"||i==="EXISTS")&&K(`subqueries in ${t}`),(i==="WINDOW_COL"||i==="AGGREGATE"||i==="AGG_REF"||i==="AGG_ARITH"||i==="ARITH_AGG_COL")&&K(`aggregate or window expressions in ${t}`),i==="KINTONE_FUNC"&&K(`non-deterministic kintone functions in ${t}`),i==="FIELD"){let a=n.tableAlias,l=n.field;a!=null&&K(`qualified or parent field references in ${t}`),Pn(l,t,r)}if(i==="FIELD_REF"&&Pn(n.field,t,r),!(o==="PATCH"||o==="APPEND"||o==="REMOVE"))for(let a of Object.values(n))Wt(a,t,r)}function Pn(e,t,r=!1){if(typeof e!="string")return;let n=e.toLowerCase();n==="_idx"&&!r&&K(`_idx in ${t}`),(n.startsWith("_p.")||n.includes("."))&&K(`parent or qualified field references in ${t}`),/^(count|sum|avg|min|max|group_concat)\s*\(/i.test(e)&&K(`aggregate expressions in ${t}`)}function Tr(e){switch(e.type){case"BOOLEAN":return{type:"BOOLEAN",value:!e.value};case"BINARY":{let t=vp(e.op);if(t===null)throw new Z(`NOT ${e.op} \u306F\u30B5\u30DD\u30FC\u30C8\u5BFE\u8C61\u5916\u3067\u3059`);return{...e,op:t}}case"NULL_CHECK":return{...e,not:!e.not};case"LOGICAL":return{type:"LOGICAL",op:e.op==="AND"?"OR":"AND",left:Tr(e.left),right:Tr(e.right)};case"NOT":return e.expr;case"GROUP":return{type:"GROUP",expr:Tr(e.expr)};case"EXISTS":return{...e,not:!e.not}}}function vp(e){switch(e){case"=":return"!=";case"!=":case"<>":return"=";case">":return"<=";case"<":return">=";case">=":return"<";case"<=":return">";case"LIKE":return"NOT_LIKE";case"NOT_LIKE":return"LIKE";case"KLIKE":return"NOT_KLIKE";case"NOT_KLIKE":return"KLIKE";case"IN":return"NOT_IN";case"NOT_IN":return"IN"}}function Ia(e){return e.includes("%")||e.includes("_")}function wr(e){return e.type==="BINARY"&&(e.op==="LIKE"||e.op==="NOT_LIKE")}function Yt(e){return e.type==="BINARY"&&(e.op==="KLIKE"||e.op==="NOT_KLIKE")}function it(e){if(e===null)return!1;if(wr(e))return!0;switch(e.type){case"LOGICAL":return it(e.left)||it(e.right);case"NOT":case"GROUP":return it(e.expr);case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return!1}}function oe(e){if(e===null)return!1;if(Yt(e))return!0;switch(e.type){case"LOGICAL":return oe(e.left)||oe(e.right);case"NOT":case"GROUP":return oe(e.expr);case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return!1}}function W(e){switch(e.type){case"BINARY":return Dp(e);case"NULL_CHECK":return Up(e);case"LOGICAL":return Mp(e);case"NOT":return xp(e);case"GROUP":return Fp(e);case"EXISTS":throw new Z("EXISTS \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"BOOLEAN":throw new Z("internal error: BOOLEAN predicate reached kintone query conversion")}}function Dp(e){if(wr(e))throw new Z("LIKE / NOT LIKE \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093\uFF08\u5E38\u306B JS \u8A55\u4FA1\u304C\u5FC5\u8981\u3067\u3059\uFF09");let t=Pa(e.left),r=kp(e.op),n=Kp(e.right,e.op);return`${t} ${r} ${n}`}function kp(e){switch(e){case"=":return"=";case"!=":case"<>":return"!=";case">":return">";case"<":return"<";case">=":return">=";case"<=":return"<=";case"LIKE":return"like";case"NOT_LIKE":return"not like";case"KLIKE":return"like";case"NOT_KLIKE":return"not like";case"IN":return"in";case"NOT_IN":return"not in"}}function Up(e){let t=Pa(e.field);return e.not?`${t} != ""`:`${t} = ""`}function Mp(e){let t=W(e.left),r=W(e.right),n=e.op==="AND"?"and":"or",i=ba(e.left)?`(${t})`:t,o=ba(e.right)?`(${r})`:r;return`${i} ${n} ${o}`}function xp(e){return W(Tr(e.expr))}function Fp(e){return`(${W(e.expr)})`}function Pa(e){if(e.type==="FUNC_FIELD")throw new Z(`WHERE \u53E5\u306E\u95A2\u6570\uFF08${e.expr.func}\uFF09\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093`);if(e.type==="ARITH_FIELD")throw new Z("WHERE \u53E5\u306E\u7B97\u8853\u5F0F\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");if(e.type==="CASE_FIELD")throw new Z("WHERE \u53E5\u306E CASE WHEN \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");if(e.type==="GROUPING_FIELD")throw new Z("GROUPING() \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");return Vp(e.field)}function Kp(e,t){switch(e.type){case"VARIABLE":throw new Z(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"VARIABLE_IN_LIST":throw new Z(`\u672A\u89E3\u6C7A\u306E\u914D\u5217\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"STRING":return Ca(e);case"NUMBER":return G(e);case"KINTONE_FUNC":return Bp(e);case"IN_LIST":return $p(e,t);case"ARITH_VALUE":throw new Z("WHERE \u53E5\u306E\u53F3\u8FBA\u7B97\u8853\u5F0F\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"CASE_VALUE":throw new Z("WHERE \u53E5\u306E\u53F3\u8FBA CASE WHEN \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"SUBQUERY_IN_LIST":throw new Z("IN (SELECT ...) \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"SCALAR_SUBQUERY":throw new Z("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"ARRAY":throw new Z("\u914D\u5217\u30EA\u30C6\u30E9\u30EB\u306F WHERE \u53E5\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093")}}function Ca(e){return`"${e.value.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Bp(e){return`${e.name}()`}function $p(e,t){if(t!=="IN"&&t!=="NOT_IN")throw new Z("IN_LIST \u306F IN / NOT IN \u6F14\u7B97\u5B50\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059");return Gp(e.values),`(${e.values.map(n=>n.type==="STRING"?Ca(n):G(n)).join(",")})`}function Gp(e){let t=e.find(r=>r.type==="VARIABLE");if(t?.type==="VARIABLE")throw new Z(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${t.name} \u304C\u3042\u308A\u307E\u3059`)}function Vp(e){return/^[\w$\u3000-\u9FFF]+$/u.test(e)?e:`"${e.replace(/"/g,'\\"')}"`}function ba(e){return e.type==="LOGICAL"}var Z=class extends Error{constructor(t){super(t),this.name="KintoneQueryError"}};function Wp(e){return e.some(t=>t.type==="WINDOW_COL")}function He(e){return e.from.subtableCode||e.joins.some(t=>t.table.subtableCode)||e.joins.length>0||ne(e).type!=="NONE"||e.distinct||Wp(e.columns)||e.columns.some(t=>t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"||t.type==="SCALAR_SUBQUERY_COL"||t.type==="STRFUNC_COL"&&va(t.expr)||t.type==="SCALAR_VALUE_COL"&&br(t.expr))||ot(e.where)||e.orderBy.some(t=>t.key.type!=="FIELD_NAME")?"FULL_SCAN":"SIMPLE"}function ot(e){if(e===null)return!1;switch(e.type){case"BOOLEAN":return!0;case"BINARY":return Na(e.left)||e.right.type==="ARITH_VALUE"||e.right.type==="CASE_VALUE"||e.right.type==="SUBQUERY_IN_LIST"||e.right.type==="SCALAR_SUBQUERY"||wr(e);case"NULL_CHECK":return Na(e.field);case"LOGICAL":return ot(e.left)||ot(e.right);case"NOT":case"GROUP":return ot(e.expr);case"EXISTS":return!0}}function Na(e){return e.type==="FUNC_FIELD"||e.type==="ARITH_FIELD"||e.type==="CASE_FIELD"}function Nn(e){let t=[],n=(e.limit!==null||e.offset!==null)&&e.orderBy.length===0;if(e.where!==null&&t.push(W(e.where)),e.orderBy.length>0){let i=e.orderBy.map(Hp).join(", ");t.push(`order by ${i}`)}else n&&t.push("order by $id asc");return e.limit!==null&&t.push(`limit ${e.limit}`),e.offset!==null&&t.push(`offset ${e.offset}`),{app:e.from.appId,query:t.join(" "),fields:Yp(e.columns),totalCount:!1}}function _a(e,t){let r=[];return e.where!==null&&e.joins.length===0&&!ot(e.where)&&r.push(W(e.where)),{app:t,query:r.join(" "),fields:[]}}function ht(e,t){let n=Xp(e).get(t);if(!n)return[];if(n.allFields)return[];let i=new Set(n.fields);return n.table.subtableCode&&i.add(n.table.subtableCode),i.size===0&&i.add("$id"),[...i]}function Hp(e){let t=e.direction==="ASC"?"asc":"desc";if(e.key.type!=="FIELD_NAME")throw new Error("ORDER BY \u5F0F\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093\uFF08FULL_SCAN \u304C\u5FC5\u8981\u3067\u3059\uFF09");return`${e.key.name} ${t}`}function Yp(e){if(e.some(n=>n.type==="WILDCARD"||n.type==="AGGREGATE"||n.type==="ARITH_AGG_COL"||n.type==="CASE_COL"||n.type==="SCALAR_SUBQUERY_COL"))return[];let r=[];for(let n of e)n.type==="FIELD"?r.push(ro(n.field)):n.type==="ARITH_COL"?Ir(n.expr,r):n.type==="STRFUNC_COL"?no(n.expr,r):n.type==="SCALAR_VALUE_COL"&&jt(n.expr,r);return[...new Set(r)]}function jp(e,t){Ir(e.left,t),Ir(e.right,t)}function Ir(e,t){e.type==="FIELD_REF"?t.push(ro(e.field)):e.type==="ARITH"?jp(e,t):e.type==="STRING_FUNC"&&no(e,t)}function ro(e){let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function no(e,t){for(let r of e.args)qp(r,t)}function qp(e,t){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"){to(e,t);return}jt(e,t)}function jt(e,t){if(e.type==="FIELD"){t.push(ro(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field));return}if(e.type==="STRING_FUNC"){no(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){jt(e.left,t),jt(e.right,t);return}if(e.type==="CASE_WHEN"){for(let r of e.branches)Oa(r.result,t);e.elseResult&&Oa(e.elseResult,t)}}function Oa(e,t){if(e.type!=="ARRAY"){if(e.type==="FIELD_REF"||e.type==="ARITH"){Ir(e,t);return}jt(e,t)}}function to(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&zp(e.arg,t);return}e.type==="AGG_ARITH"&&(to(e.left,t),to(e.right,t))}function zp(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?Ir(e,t):jt(e,t)}function va(e){return e.args.some(t=>t.type==="AGG_REF"||t.type==="AGG_ARITH"?!0:br(t))}function br(e){return e.type==="STRING_FUNC"?va(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?br(e.left)||br(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>La(t.result))||e.elseResult!==null&&La(e.elseResult):!1}function La(e){return e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?!1:br(e)}function Xp(e){let t=[e.from,...e.joins.map(h=>h.table)].filter(h=>h.cteName===null),r=new Map;for(let h of t)r.set(h,{table:h,allFields:!1,fields:new Set});if(r.size===0)return r;let n=t[0]??null,i=t.find(h=>!!h.subtableCode)??null,o=new Map;for(let h of t)h.alias&&o.set(h.alias,h),h.subtableCode||(o.set(`APP${h.appId}`,h),o.set(`app${h.appId}`,h));let s=Jp(e.columns),a=h=>{let C=r.get(h);C&&(C.allFields=!0,C.fields.clear())},l=()=>{for(let h of t)a(h)},p=()=>{for(let h of t)h.subtableCode&&a(h)},d=(h,C)=>{let O=r.get(h);if(!(!O||O.allFields)){if(h.subtableCode){if(C.startsWith("_p.")){let v=C.slice(3);v&&v!=="*"&&O.fields.add(v);return}return void 0}C&&O.fields.add(C)}},c=(h,C="select")=>{if(!h||h==="*")return;if(h==="_p.*"){p();return}if(h.endsWith(".*")){let v=h.slice(0,-2);if(!v){l();return}if(v==="_p"){p();return}let k=o.get(v);if(k){a(k);return}return}if((C==="orderBy"||C==="having"||C==="groupBy")&&s.has(h)||(C==="orderBy"||C==="having"||C==="groupBy")&&Qp(h))return;let O=h.indexOf(".");if(O>0){let v=h.slice(0,O),k=h.slice(O+1);if(v==="_p"){i&&d(i,`_p.${k}`);return}let I=o.get(v);if(I){d(I,k);return}}n&&d(n,h)},u=(h,C,O="select")=>{if(C){if(C==="_p"){i&&d(i,`_p.${h}`);return}let v=o.get(C);if(v){d(v,h);return}}c(h,O)},f=(h,C="select")=>{if(h.type==="FIELD_REF"){c(h.field,C);return}if(h.type==="ARITH"){f(h.left,C),f(h.right,C);return}if(h.type==="STRING_FUNC"){m(h,C);return}},E=(h,C="select")=>{if(h.type==="AGG_REF"){h.arg.type!=="WILDCARD"&&y(h.arg,C);return}h.type==="AGG_ARITH"&&(E(h.left,C),E(h.right,C))},R=(h,C="select")=>{if(h.type==="AGG_REF"||h.type==="AGG_ARITH"){E(h,C);return}g(h,C)},m=(h,C="select")=>{for(let O of h.args)R(O,C)},g=(h,C="select")=>{if(h.type==="FIELD"){u(h.field,h.tableAlias,C);return}if(h.type==="STRING_FUNC"){m(h,C);return}if(h.type==="SCALAR_ARITH"||h.type==="CONCAT_OP"){g(h.left,C),g(h.right,C);return}h.type==="CASE_WHEN"&&A(h,C)},y=(h,C="select")=>{if(h.type==="FIELD_REF"||h.type==="ARITH"){f(h,C);return}g(h,C)},T=(h,C="select")=>{if(h.type!=="ARRAY"){if(h.type==="FIELD_REF"||h.type==="ARITH"){f(h,C);return}g(h,C)}},A=(h,C="select")=>{for(let O of h.branches)L(O.condition,C),T(O.result,C);h.elseResult&&T(h.elseResult,C)},N=(h,C="select")=>{if(h.type==="FIELD"){u(h.field,h.tableAlias,C);return}if(h.type==="FUNC_FIELD"){m(h.expr,C);return}if(h.type==="ARITH_FIELD"){f(h.expr,C);return}h.type!=="GROUPING_FIELD"&&A(h.expr,C)},w=(h,C="select")=>{if(h.type==="ARITH_VALUE"){f(h.expr,C);return}if(h.type==="CASE_VALUE"){A(h.expr,C);return}},L=(h,C="where")=>{if(h)switch(h.type){case"BINARY":N(h.left,C),w(h.right,C);return;case"NULL_CHECK":N(h.field,C);return;case"LOGICAL":L(h.left,C),L(h.right,C);return;case"NOT":case"GROUP":L(h.expr,C);return;case"EXISTS":case"BOOLEAN":return}},b=h=>{if(h.type==="FIELD_NAME"){c(h.name,"groupBy");return}if(h.type==="ARITH_KEY"){f(h.expr,"groupBy");return}m(h.expr,"groupBy")},D=(h,C="orderBy")=>{if(h.type==="FIELD_NAME"){c(h.name,C);return}if(h.type==="ARITH_KEY"){f(h.expr,C);return}h.type!=="GROUPING_KEY"&&m(h.expr,C)};for(let h of e.columns)switch(h.type){case"WILDCARD":l();break;case"PARENT_WILDCARD":p();break;case"FIELD":c(h.field,"select");break;case"LITERAL_COL":break;case"VARIABLE_COL":throw new Error(`internal error: unresolved SELECT variable @${h.name}`);case"AGGREGATE":h.arg.type!=="WILDCARD"&&y(h.arg,"select");break;case"ARITH_AGG_COL":E(h.expr,"select");break;case"ARITH_COL":f(h.expr,"select");break;case"CASE_COL":A(h.expr,"select");break;case"STRFUNC_COL":m(h.expr,"select");break;case"SCALAR_VALUE_COL":g(h.expr,"select");break;case"GROUPING_COL":break;case"SCALAR_SUBQUERY_COL":break;case"WINDOW_COL":for(let C of h.partitionBy)u(C.field,C.tableAlias,"select");for(let C of h.orderBy)D(C.key,"select");break}for(let h of e.joins)u(h.on.left.field,h.on.left.tableAlias,"where"),u(h.on.right.field,h.on.right.tableAlias,"where");L(e.where,"where");let P=ne(e);if(P.type==="PLAIN")for(let h of P.allItems)b(h);else if(P.type==="GROUPING_SETS")for(let h of P.allItems)u(h.field,h.tableAlias,"select");L(e.having,"having");for(let h of e.orderBy)D(h.key);return r}function Jp(e){let t=new Set;for(let r of e){if(r.type==="FIELD"&&r.alias){t.add(r.alias);continue}if(r.type==="LITERAL_COL"){t.add(r.alias??`'${r.value}'`);continue}if(r.type==="AGGREGATE"){r.alias?t.add(r.alias):t.add(Se(r.func,r.distinct,r.arg));continue}if(r.type==="ARITH_AGG_COL"){r.alias&&t.add(r.alias);continue}if(r.type==="ARITH_COL"){r.alias&&t.add(r.alias);continue}if(r.type==="CASE_COL"){t.add(r.alias??"case");continue}if(r.type==="STRFUNC_COL"){r.alias&&t.add(r.alias);continue}if(r.type==="SCALAR_VALUE_COL"){r.alias&&t.add(r.alias);continue}if(r.type==="GROUPING_COL"){t.add(r.alias??`GROUPING(${r.ref.field.tableAlias?`${r.ref.field.tableAlias}.`:""}${r.ref.field.field})`);continue}if(r.type==="SCALAR_SUBQUERY_COL"){t.add(r.alias??"(subquery)");continue}r.type==="WINDOW_COL"&&t.add(r.alias)}return t}function Qp(e){return/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/i.test(e)}function qt(e){if(e.ctes.length!==1)return!1;let t=e.ctes[0];if(t.query.type!=="SELECT"||He(t.query)!=="SIMPLE"||!t.query.columns.every(n=>n.type==="WILDCARD"||n.type==="FIELD"&&(n.alias===null||n.alias===n.field)))return!1;let r=e.query;return r.type!=="SELECT"||r.from.cteName!==t.name||r.joins.length>0||oa(r)||r.distinct?!1:!r.columns.some(n=>n.type==="AGGREGATE"||n.type==="ARITH_AGG_COL")}function zt(e){let t=e.ctes[0].query,r=e.query,n=On(r.where,r.from.alias),i=t.where===null?n:n===null?t.where:{type:"LOGICAL",op:"AND",left:t.where,right:n},o=r.columns.every(s=>s.type==="WILDCARD")?t.columns:r.columns;return{type:"SELECT",from:t.from,joins:[],columns:o,where:i,groupBy:[],having:null,orderMode:"CANONICAL",orderBy:r.orderBy.length>0?r.orderBy:t.orderBy,limit:r.limit??t.limit,offset:r.offset??t.offset,distinct:!1}}function On(e,t){if(e===null||t===null)return e;switch(e.type){case"BINARY":return{...e,left:Da(e.left,t)};case"NULL_CHECK":return{...e,field:Da(e.field,t)};case"LOGICAL":return{...e,left:On(e.left,t),right:On(e.right,t)};case"NOT":case"GROUP":return{...e,expr:On(e.expr,t)};case"EXISTS":case"BOOLEAN":return e}}function Da(e,t){return e.type==="FIELD"&&e.tableAlias===t?{...e,tableAlias:null}:e}function Xt(e,t={}){return Pr(e,r=>Zp(r,t))}function Cr(e,t={}){return Pr(e,r=>ka(r,t)||Ua(r,t))}function Pr(e,t){switch(e.type){case"BINARY":return t(e)?e:null;case"LOGICAL":if(e.op!=="AND")return null;{let r=Pr(e.left,t),n=Pr(e.right,t);return r&&n?{...e,left:r,right:n}:r??n??null}case"GROUP":return Pr(e.expr,t);case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return null}}function Zp(e,t){return ed(e,t)||nd(e,t)?!0:ka(e,t)?t.fieldTypes?.get(e.left.field)==="NUMBER":rd(e,t)}function ed(e,t){return t.allowKlike===!1||e.op!=="KLIKE"&&e.op!=="NOT_KLIKE"||e.left.type!=="FIELD"||!io(e.left,t)?!1:e.right.type==="STRING"||t.allowUnresolvedKlikeVariables===!0&&e.right.type==="VARIABLE"}var td=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]);function rd(e,t){if(!Ua(e,t)||e.left.type!=="FIELD"||e.right.type!=="IN_LIST")return!1;let r=t.fieldTypes?.get(e.left.field);if(r===void 0||!td.has(r))return!1;let n=t.fieldOptions?.get(e.left.field);return n===void 0?!1:e.right.values.every(i=>i.type==="STRING"&&i.value!==""&&n.has(i.value))}function nd(e,t){return!id(e.left,t)||e.right.type!=="NUMBER"?!1:e.op==="="||e.op===">"||e.op==="<"||e.op===">="||e.op==="<="}function id(e,t){if(e.type!=="FIELD"||e.field!=="$id")return!1;let r=t.tableAlias??null;return e.tableAlias===r?!0:t.allowUnqualifiedFields===!0&&e.tableAlias===null}function ka(e,t){return e.left.type!=="FIELD"||e.left.field==="$id"||!io(e.left,t)||e.right.type!=="NUMBER"?!1:e.op==="="?!0:(e.op==="<"||e.op===">")&&/^[+-]?\d+$/.test(G(e.right))&&Number.isSafeInteger(e.right.value)}function Ua(e,t){return e.left.type!=="FIELD"||e.left.field==="$id"||!io(e.left,t)||e.op!=="IN"&&e.op!=="NOT_IN"||e.right.type!=="IN_LIST"||e.right.values.length===0?!1:e.right.values.every(r=>r.type==="STRING"&&r.value!=="")}function io(e,t){let r=t.tableAlias??null;return e.tableAlias===r?!0:t.allowUnqualifiedFields===!0&&e.tableAlias===null}function oo(e,t={}){let r=e!==null&&t.extractCondition!==!1?Xt(e,t):null,n=new Set;Jt(r,n);let i=new Set;return Jt(e,i),{condition:r,appliedKlikes:n,allKlikes:[...i]}}function Qt(e,t={}){let n={allowKlike:e.joins.every(d=>d.type==="INNER"),allowUnresolvedKlikeVariables:t.allowUnresolvedVariables},i=!e.from.subtableCode&&e.from.cteName===null,o=e.joins.length===0||e.from.alias!==null,s=oo(e.where,{...n,extractCondition:i&&o,tableAlias:e.from.alias??void 0,allowUnqualifiedFields:e.joins.length===0,fieldTypes:t.fieldTypesByApp?.get(e.from.appId),fieldOptions:t.fieldOptionsByApp?.get(e.from.appId)}),a=s.condition,l=new Map;if(e.where!==null)for(let d of e.joins){if(!d.table.alias||d.table.subtableCode||d.table.cteName!==null)continue;let c=Xt(e.where,{...n,tableAlias:d.table.alias,fieldTypes:t.fieldTypesByApp?.get(d.table.appId),fieldOptions:t.fieldOptionsByApp?.get(d.table.appId)});c!==null&&l.set(d.table.alias,c)}let p=new Set(s.appliedKlikes);for(let d of l.values())Jt(d,p);return{mainCondition:a,joinConditions:l,appliedKlikes:p,allKlikes:s.allKlikes}}function so(e){return e.allKlikes.filter(t=>!e.appliedKlikes.has(t))}function Jt(e,t){if(e!==null){if(Yt(e)){t.add(e);return}switch(e.type){case"LOGICAL":Jt(e.left,t),Jt(e.right,t);return;case"NOT":case"GROUP":Jt(e.expr,t);return;case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}}var ie=class extends Error{constructor(t){super(`ArgumentError: ${t}`),this.name="ArgumentError"}};function tr(e){Ma(e)}function lo(e){if(so(e).length>0)throw new ie("FULL_SCAN \u306E KLIKE / NOT KLIKE \u3092\u5B89\u5168\u306B\u62BC\u3057\u4E0B\u3052\u3089\u308C\u307E\u305B\u3093\u3002OR / NOT \u914D\u4E0B\u3001CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3001LEFT / RIGHT JOIN \u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044")}function Ma(e){switch(e.type){case"SELECT":er(e);return;case"UNION":co(e);return;case"WITH":xa(e);return;case"EXPLAIN":Ma(e.query);return;case"CREATE_TEMP_TABLE":uo(e.query);return;case"SET_VARIABLE":case"DECLARE_VARIABLE":case"ASSERT":Zt(e);return;case"UPDATE":if(e.applyBlocks?.length&&!We(e.where)&&oe(e.where)){ao(e.where),Zt(e);return}if(st(e)&&e.subtableCode)throw new ie("KLIKE / NOT KLIKE \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306E WHERE \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");if(!e.applyBlocks?.length&&!e.subtableCode&&oe(e.where)&&!sd(e,e.where)){ao(e.where),Zt(e);return}if(st(e))throw new ie("KLIKE / NOT KLIKE \u306F\u901A\u5E38\u89AA UPDATE \u306E WHERE\u3001\u307E\u305F\u306F APPLY \u8907\u6570\u89AA UPDATE \u306E\u5B89\u5168\u306A\u89AA WHERE \u3060\u3051\u3067\u4F7F\u7528\u3067\u304D\u307E\u3059");return;case"DELETE":if(st(e)&&e.subtableCode)throw new ie("KLIKE / NOT KLIKE \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB DELETE \u306E WHERE \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");if(!e.subtableCode&&oe(e.where)){ao(e.where),Zt(e);return}if(st(e))throw new ie("KLIKE / NOT KLIKE \u306F\u901A\u5E38\u89AA DELETE \u306E WHERE \u3060\u3051\u3067\u4F7F\u7528\u3067\u304D\u307E\u3059");return;case"INSERT":case"INSERT_SELECT":if(st(e))throw new ie("KLIKE / NOT KLIKE \u306F INSERT / INSERT SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"UPSERT":case"UPSERT_SELECT":if(st(e))throw new ie("KLIKE / NOT KLIKE \u306F UPSERT / UPSERT SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"REORDER":if(st(e))throw new ie("KLIKE / NOT KLIKE \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB REORDER \u306E WHERE \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"VALIDATE":if(st(e))throw new ie("KLIKE / NOT KLIKE \u306F VALIDATE \u306E WHERE / CHECK \u3067\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"SHOW_APPS":case"DESCRIBE":case"DROP_TEMP_TABLE":return}}function ao(e){_n(e,t=>{if(!Yt(t))return;let r=t.right;if(r.type!=="STRING"&&r.type!=="VARIABLE")throw new ie("KLIKE / NOT KLIKE \u306E\u53F3\u8FBA\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u307E\u305F\u306F\u6587\u5B57\u5217\u30D0\u30C3\u30C1\u5909\u6570\u304C\u5FC5\u8981\u3067\u3059");if(r.type==="STRING"&&r.value.includes("%"))throw new ie("KLIKE / NOT KLIKE \u306E\u691C\u7D22\u8A9E\u306B % \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002SQL \u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u691C\u7D22\u306B\u306F LIKE \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044")})}function uo(e){e.type==="SELECT"?er(e):e.type==="UNION"?co(e):xa(e)}function co(e){uo(e.left),er(e.right)}function xa(e){if(qt(e)){er(zt(e));return}for(let t of e.ctes)t.query.type==="SELECT"?er(t.query):t.query.type==="UNION"&&co(t.query);uo(e.query)}function er(e){if(od(e),oe(e.where)&&!(He(e)==="SIMPLE"&&e.from.cteName===null&&e.joins.every(r=>r.table.cteName===null))){let r=Qt(e,{allowUnresolvedVariables:!0});if(so(r).length===0){Zt(e);return}throw new ie("FULL_SCAN \u306E KLIKE / NOT KLIKE \u306F\u3001\u7269\u7406\u30C6\u30FC\u30D6\u30EB\u306B\u5BFE\u3059\u308B AND \u30EA\u30FC\u30D5\u3068\u3057\u3066\u5FC5\u305A\u62BC\u3057\u4E0B\u3052\u3089\u308C\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002OR / NOT \u914D\u4E0B\u3001CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3001LEFT / RIGHT JOIN \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093")}Zt(e)}function od(e){_n(e,t=>{if(!Yt(t))return;if(!Ln(e.where,t))throw new ie("KLIKE / NOT KLIKE \u306F SELECT \u306E WHERE \u53E5\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059");let r=t.right;if(r.type!=="STRING"&&r.type!=="VARIABLE")throw new ie("KLIKE / NOT KLIKE \u306E\u53F3\u8FBA\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u307E\u305F\u306F\u6587\u5B57\u5217\u30D0\u30C3\u30C1\u5909\u6570\u304C\u5FC5\u8981\u3067\u3059");if(r.type==="STRING"&&r.value.includes("%"))throw new ie("KLIKE / NOT KLIKE \u306E\u691C\u7D22\u8A9E\u306B % \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002SQL \u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u691C\u7D22\u306B\u306F LIKE \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044")})}function Zt(e){vn(e,t=>{t.type==="SELECT"&&er(t)},!0)}function st(e){let t=!1;return vn(e,r=>{r.type==="BINARY"&&(r.op==="KLIKE"||r.op==="NOT_KLIKE")&&(t=!0)}),t}function sd(e,t){let r=!1,n=i=>{if(r||i===t||i===null||typeof i!="object")return;if(Array.isArray(i)){for(let s of i)n(s);return}let o=i;if(o.type!=="SELECT"){if(o.type==="BINARY"&&(o.op==="KLIKE"||o.op==="NOT_KLIKE")){r=!0;return}for(let s of Object.values(o))n(s)}};return n(e),r}function Ln(e,t){if(e===null)return!1;if(e===t)return!0;switch(e.type){case"LOGICAL":return Ln(e.left,t)||Ln(e.right,t);case"NOT":case"GROUP":return Ln(e.expr,t);case"BINARY":case"NULL_CHECK":case"EXISTS":return!1;case"BOOLEAN":return!1}}function _n(e,t){if(Array.isArray(e)){for(let n of e)_n(n,t);return}if(e===null||typeof e!="object")return;let r=e;(r.type==="BINARY"||r.type==="NULL_CHECK"||r.type==="LOGICAL"||r.type==="NOT"||r.type==="GROUP"||r.type==="EXISTS")&&t(r);for(let n of Object.values(r))n!==e&&ad(n)||_n(n,t)}function vn(e,t,r=!1){if(Array.isArray(e)){for(let i of e)vn(i,t);return}if(e===null||typeof e!="object")return;let n=e;r||t(n);for(let i of Object.values(n))vn(i,t)}function ad(e){return e!==null&&typeof e=="object"&&e.type==="SELECT"}var Fa=Symbol("ksql.groupingRowMeta"),Ka=new WeakMap;function Ba(e,t){return Object.defineProperty(e,Fa,{value:{includedCanonicalIds:t},enumerable:!1,configurable:!1,writable:!1}),e}function ld(e){return e[Fa]}function ud(e){return ld(e)?.includedCanonicalIds}function $a(e,t){Ka.set(e,t)}function rr(e,t){let r=ud(t);if(!r)throw new Error("internal error: GROUPING() evaluation requires B65 grouping row membership.");let n=Ka.get(e);if(!n)throw new Error("internal error: GROUPING() reference was not resolved during B65 planning.");return r.has(n)?"0":"1"}var Va=e=>{if(e.expandedSetCount>64)throw new Error(`ArgumentError: B65 expanded grouping set count ${e.expandedSetCount} exceeds limit ${64} (reason=GROUPING_SET_LIMIT_EXCEEDED).`);if(e.canonicalItemCount>16)throw new Error(`ArgumentError: B65 canonical grouping item count ${e.canonicalItemCount} exceeds limit ${16} (reason=GROUPING_ITEM_LIMIT_EXCEEDED).`)};function Un(e){return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field}function Eo(e){let t=e.indexOf(".");return t>0?{type:"FIELD",tableAlias:e.slice(0,t),field:e.slice(t+1)}:{type:"FIELD",tableAlias:null,field:e}}function Te(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(n=>Te(n,t));return}let r=e;if(!(r.type==="SELECT"||r.type==="SCALAR_SUBQUERY")){if(r.type==="GROUPING_REF"){t.push(r);return}Object.values(r).forEach(n=>Te(n,t))}}function Mn(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(n=>Mn(n,t));return}let r=e;if(!(r.type==="SELECT"||r.type==="SCALAR_SUBQUERY")){if(r.type==="AGGREGATE"||r.type==="AGG_REF"){Te(r.arg,t);return}Object.values(r).forEach(n=>Mn(n,t))}}function Nr(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(i=>Nr(i,t));return}let r=e,n=r.type;if(!(n==="SELECT"||n==="SCALAR_SUBQUERY"||n==="GROUPING_REF"||n==="AGG_REF"||n==="AGG_ARITH")){if(n==="FIELD"&&typeof r.field=="string"){t.push({type:"FIELD",tableAlias:typeof r.tableAlias=="string"?r.tableAlias:null,field:r.field});return}if(n==="FIELD_REF"&&typeof r.field=="string"){t.push(Eo(r.field));return}Object.values(r).forEach(i=>Nr(i,t))}}function fo(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(fo);let t=e;return t.type==="AGG_REF"||t.type==="AGG_ARITH"?!0:t.type==="SELECT"||t.type==="SCALAR_SUBQUERY"?!1:Object.values(t).some(fo)}function cd(e){return!("alias"in e)||e.alias===null?!1:e.type==="AGGREGATE"||e.type==="ARITH_AGG_COL"?!0:e.type==="STRFUNC_COL"||e.type==="SCALAR_VALUE_COL"?fo(e):!1}function pd(e){return new Set(e.flatMap(t=>"alias"in t&&typeof t.alias=="string"?[t.alias]:[]))}function Ga(e){return e.tableAlias===null&&/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/.test(e.field)}function dd(e,t,r){let n=t(e.field);if(!n.physical)throw new Error(`ArgumentError: B65 grouping reference ${Un(e.field)} must resolve to a physical APP field.`);if(!r.has(n.canonicalId))throw new Error(`ArgumentError: B65 GROUPING argument ${Un(e.field)} is not present in grouping allItems (reason=B65_GROUPING_ARG_NOT_ITEM).`);$a(e,n.canonicalId)}function po(e,t,r,n){let i=t(e);if(!i.physical||!r.has(i.canonicalId))throw new Error(`ArgumentError: B65 non-aggregate field ${Un(e)} in ${n} is not a grouping item (reason=B65_NON_GROUPED_DEPENDENCY).`)}function fd(e){if(e.type==="GROUPING_KEY")return[];if(e.type==="FIELD_NAME")return[Eo(e.name)];let t=[];return Nr(e,t),t}function Wa(e){let t=ne(e),r=[];for(let i of e.columns)i.type!=="WINDOW_COL"&&Te(i,r);Te(e.having,r),Te(e.orderBy,r);let n=[];Te(e.where,n),Te(e.joins,n),Mn(e.columns,n),Mn(e.having,n);for(let i of e.columns)i.type==="WINDOW_COL"&&Te(i,n);if(n.length>0)throw new Error("ArgumentError: B65 GROUPING() is not allowed in WHERE, JOIN, window, aggregate arguments, or DML expressions.");if(t.type!=="GROUPING_SETS"){if(r.length>0)throw new Error("ArgumentError: B65 GROUPING() requires GROUP BY ROLLUP or GROUPING SETS.");return}if(e.orderMode==="KINTONE_NATIVE")throw new Error("ArgumentError: B65 KORDER BY is not supported in Phase1.");if(e.columns.some(i=>i.type==="WINDOW_COL"))throw new Error("ArgumentError: B65 window functions are not supported in Phase1.");if(e.columns.some(i=>i.type==="WILDCARD"||i.type==="PARENT_WILDCARD"))throw new Error("ArgumentError: B65 wildcard projection is not supported in Phase1.")}function Ha(e,t,r=()=>{}){Wa(e);let n=ne(e),i=[];for(let d of e.columns)d.type!=="WINDOW_COL"&&Te(d,i);if(Te(e.having,i),Te(e.orderBy,i),n.type!=="GROUPING_SETS")return null;let o=sa(e,t),s=new Set,a=[];for(let d of o.allItems){let c=d;if(!c.physical)throw new Error(`ArgumentError: B65 grouping item ${Un(d.field)} must resolve to a physical APP field.`);s.has(c.canonicalId)||(s.add(c.canonicalId),a.push(c))}r({expandedSetCount:n.sets.length,canonicalItemCount:s.size});for(let d of i)dd(d,t,s);let l=pd(e.columns);for(let d of e.columns){if(d.type==="GROUPING_COL"||d.type==="AGGREGATE"||d.type==="ARITH_AGG_COL"||d.type==="LITERAL_COL"||d.type==="VARIABLE_COL"||d.type==="SCALAR_SUBQUERY_COL")continue;let c=[];d.type==="FIELD"?c.push(Eo(d.field)):Nr(d,c);for(let u of c)po(u,t,s,"SELECT")}if(e.having){let d=[];Nr(e.having,d);for(let c of d)c.tableAlias===null&&l.has(c.field)||Ga(c)||po(c,t,s,"HAVING")}for(let d of e.orderBy)for(let c of fd(d.key))c.tableAlias===null&&l.has(c.field)||Ga(c)||po(c,t,s,"ORDER BY");let p=new Set;for(let d of a)p.add(d.directKey),d.unqualifiedBridgeKey!==null&&p.add(d.unqualifiedBridgeKey);for(let d of e.columns){if(!cd(d))continue;let c="alias"in d?d.alias:null;if(c!==null&&p.has(c))throw new Error(`ArgumentError: B65 aggregate alias ${c} collides with a grouping runtime key (reason=B65_AGGREGATE_ALIAS_COLLISION).`)}return o}var Ed=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME","CREATOR","MODIFIER"]),Rd=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]);function z(e){let t;e.fieldType==="RECORD_NUMBER"||e.fieldType==="__ID__"?t="recordNumber":e.fieldType==="NUMBER"?t="number":e.fieldType==="CALC"?t=e.sortKind==="number"?"number":"string":Rd.has(e.fieldType)?t="option":Ed.has(e.fieldType)?t="string":t="unsupported";let r=e.optionOrder?new Map(Object.entries(e.optionOrder)):void 0;return{fieldType:e.fieldType,compareMode:t,inSubtable:e.inSubtable===!0,requiresCollectionOperators:e.inSubtable===!0||e.requiresCollectionOperators===!0,...r&&r.size>0?{optionOrder:r}:{}}}function x(e,t=e==="number"?"KSQL_NUMBER":"KSQL_STRING"){return{fieldType:t,compareMode:e,inSubtable:!1,requiresCollectionOperators:!1}}function nr(e,t,r){return{...e,source:{appId:t,fieldCode:r}}}function xn(e,t){if(e===t)return!0;if(!e||!t||e.fieldType!==t.fieldType||e.compareMode!==t.compareMode||e.inSubtable!==t.inSubtable||e.requiresCollectionOperators!==t.requiresCollectionOperators||e.source?.appId!==t.source?.appId||e.source?.fieldCode!==t.source?.fieldCode)return!1;let r=e.optionOrder,n=t.optionOrder;if(r===n)return!0;if(!r||!n||r.size!==n.size)return!1;for(let[i,o]of r)if(n.get(i)!==o)return!1;return!0}function at(e,t){let r=e[Symbol.iterator](),n=t[Symbol.iterator]();for(;;){let i=r.next(),o=n.next();if(i.done||o.done)return i.done&&o.done?0:i.done?-1:1;let s=i.value.codePointAt(0)??0,a=o.value.codePointAt(0)??0;if(s<a)return-1;if(s>a)return 1}}function md(e,t){return e<t?-1:e>t?1:0}function Ya(e){if(e==="")return{band:0};let t=Ae(e);if(t!==null)return{band:2,value:t};let r=Number(e);return r===Number.NEGATIVE_INFINITY?{band:1}:r===Number.POSITIVE_INFINITY?{band:3}:e==="NaN"?{band:4}:{band:5,value:e}}function gd(e,t){let r=Ya(e),n=Ya(t);return r.band!==n.band?r.band<n.band?-1:1:r.band===2&&n.band===2?Sn(r.value,n.value):r.band===5&&n.band===5?at(r.value,n.value):0}function ja(e,t){if(e==="")return{empty:!0,normalizedId:"",display:e};let r=/^\d+$/.test(e)?e:t?/-(\d+)$/.exec(e)?.[1]:void 0;if(r===void 0)throw new Error(`ArgumentError: invalid ${t?"RECORD_NUMBER":"$id"} value: ${e}`);return{empty:!1,normalizedId:r.replace(/^0+(?=\d)/,""),display:e}}function hd(e,t,r){let n=ja(e,r),i=ja(t,r);if(n.empty||i.empty)return n.empty===i.empty?0:n.empty?-1:1;if(n.normalizedId.length!==i.normalizedId.length)return n.normalizedId.length<i.normalizedId.length?-1:1;let o=at(n.normalizedId,i.normalizedId);return o!==0?o:at(n.display,i.display)}function yd(e,t){if(e==="")return[];if(t!=="CHECK_BOX"&&t!=="MULTI_SELECT")return[e];try{let r=JSON.parse(e);return Array.isArray(r)?r.map(n=>String(n??"")):[e]}catch{return[e]}}function qa(e,t){let r=t.optionOrder??new Map,i=[...new Set(yd(e,t.fieldType))].map(o=>{let s=r.get(o);return s===void 0?{knownBand:1,rank:0,label:o}:{knownBand:0,rank:s,label:o}});return i.sort(za),i}function za(e,t){return e.knownBand!==t.knownBand?e.knownBand<t.knownBand?-1:1:e.rank!==t.rank?e.rank<t.rank?-1:1:at(e.label,t.label)}function Ad(e,t,r){let n=qa(e,r),i=qa(t,r),o=Math.min(n.length,i.length);for(let s=0;s<o;s++){let a=za(n[s],i[s]);if(a!==0)return a}return n.length<i.length?-1:n.length>i.length?1:0}function yt(e,t,r){switch(r.compareMode){case"string":return at(e,t);case"number":return gd(e,t);case"recordNumber":return hd(e,t,r.fieldType==="RECORD_NUMBER");case"option":return Ad(e,t,r);case"unsupported":throw new Error(`ArgumentError: values of type ${r.fieldType} cannot be compared.`)}}function At(e,t,r,n=x("string")){let i=yt(t,r,n);switch(e){case"=":return i===0;case"!=":case"<>":return i!==0;case">":return i>0;case"<":return i<0;case">=":return i>=0;case"<=":return i<=0}}function Xa(e,t){if(t==="least"&&e.includes(""))return"";let r=t==="greatest"?e.filter(o=>o!==""):[...e];if(r.length===0)return"";let n=r.every(o=>!Number.isNaN(Number(o))),i=(o,s)=>{if(n){let a=Ae(o),l=Ae(s),p=a!==null&&l!==null?Sn(a,l):md(Number(o),Number(s));if(p!==0)return p}return at(o,s)};return r.reduce((o,s)=>{let a=i(s,o);return t==="greatest"?a>0?s:o:a<0?s:o})}function ee(e,t){if(e.type==="NUMBER")return e.value;if(e.type==="FIELD_REF")return Number(Ye(t,e.field));if(e.type==="STRING_FUNC")return Number(te(e,t));let r=ee(e.left,t),n=ee(e.right,t);switch(e.op){case"+":return r+n;case"-":return r-n;case"*":return r*n;case"/":return n!==0?r/n:NaN;case"%":return n!==0?r%n:NaN}}function se(e,t,r,n){switch(e.type){case"STRING":return e.value;case"NUMBER":return e.value;case"FIELD":return Ye(t,e.tableAlias?`${e.tableAlias}.${e.field}`:e.field);case"VARIABLE":throw new Error(`ArgumentError: unresolved variable @${e.name} reached scalar evaluator.`);case"STRING_FUNC":return te(e,t,r,n);case"CASE_WHEN":return we(e,t,r,n);case"CONCAT_OP":return te({type:"STRING_FUNC",func:"CONCAT",args:[e.left,e.right]},t,r,n);case"SCALAR_ARITH":{let i=Number(se(e.left,t,r,n)),o=Number(se(e.right,t,r,n));switch(e.op){case"+":return i+o;case"-":return i-o;case"*":return i*o;case"/":return o!==0?i/o:NaN;case"%":return o!==0?i%o:NaN}}}}function lt(e,t,r,n){switch(e.type){case"CASE_WHEN":return el(e,t,r,n);case"SCALAR_ARITH":{let i=lt(e.left,t,r,n),o=lt(e.right,t,r,n);if(i===null||o===null)return null;let s=Number(i),a=Number(o);switch(e.op){case"+":return s+a;case"-":return s-a;case"*":return s*a;case"/":return a!==0?s/a:NaN;case"%":return a!==0?s%a:NaN}}case"CONCAT_OP":{let i=lt(e.left,t,r,n),o=lt(e.right,t,r,n);return`${i??""}${o??""}`}default:return se(e,t,r,n)}}function Fn(e,t,r){let n=Math.pow(10,r),i=Math[e](t*n)/n;return r>0?String(parseFloat(i.toFixed(r))):String(i)}function Sd(e){return e>=55296&&e<=56319}function Td(e){return e>=56320&&e<=57343}function Bn(e,t){return t>0&&t<e.length&&Sd(e.charCodeAt(t-1))&&Td(e.charCodeAt(t))}function Ja(e,t){if(Number.isNaN(e)||e===Number.NEGATIVE_INFINITY)return 0;if(e===Number.POSITIVE_INFINITY)return t;let r=Math.trunc(e);return r<0?Math.max(t+r,0):Math.min(r,t)}function mo(e,t){let r=Math.min(Math.max(0,t),e.length);return Bn(e,r)&&(r-=1),e.slice(0,r)}function wd(e,t){let r=Math.max(0,e.length-t);return Bn(e,r)&&(r+=1),e.slice(r)}function Id(e,t,r){let n=Ja(t,e.length),i=Ja(r,e.length);return i<=n?"":(Bn(e,n)&&(n+=1),Bn(e,i)&&(i-=1),e.slice(n,Math.max(n,i)))}function bd(e,t){let r=e.repeat(Math.ceil(t/e.length));return mo(r,t)}var Pd=200,Or=new Map;function Cd(e){if(/[^ims]/.test(e))throw new Error("ArgumentError: regular expression flags may contain only i, m, or s.");if(new Set(e).size!==e.length)throw new Error("ArgumentError: regular expression flags must not contain duplicates.");return`${e}u`}function Ro(e,t,r=!1){let n=Cd(t)+(r?"g":""),i=`${e}\0${n}`,o=Or.get(i);if(o!==void 0)return o.lastIndex=0,o;let s;try{s=new RegExp(e,n)}catch(a){let l=a instanceof Error?a.message:String(a);throw new Error(`ArgumentError: invalid regular expression: ${l}`)}if(Or.size>=Pd){let a=Or.keys().next().value;a!==void 0&&Or.delete(a)}return Or.set(i,s),s}function Nd(e){if(e.includes("$`")||e.includes("$'"))throw new Error("ArgumentError: REGEXP_REPLACE replacement must not contain $` or $'.")}function Od(e){if(e===void 0)return 0;if(!/^\d+$/.test(e))throw new Error("ArgumentError: REGEXP_REPLACE occurrence must be a non-negative integer.");return Number(e)}function Ld(e,t,r,n){let i="";for(let o=0;o<e.length;o+=1){let s=e[o];if(s!=="$"||o+1>=e.length){i+=s;continue}let a=e[o+1];if(a==="$"){i+="$",o+=1;continue}if(a==="&"){i+=t,o+=1;continue}if(a==="<"&&n!==void 0){let l=e.indexOf(">",o+2);if(l>=0){i+=n[e.slice(o+2,l)]??"",o=l;continue}}if(/\d/.test(a)){let l=e[o+2];if(l!==void 0&&/\d/.test(l)){let d=Number(a+l);if(d>=1&&d<=r.length){i+=r[d-1]??"",o+=2;continue}}let p=Number(a);if(p>=1&&p<=r.length){i+=r[p-1]??"",o+=1;continue}}i+="$"}return i}function _d(e,t,r,n){let i=0;return e.replace(t,(o,...s)=>{if(i+=1,i!==n)return o;let a=s[s.length-1],l=typeof a=="object"&&a!==null,p=s.length-(l?3:2),d=s.slice(0,p);return Ld(r,o,d,l?a:void 0)})}function te(e,t,r,n){let i=e.args.map(o=>Kd(o,t,r,n));switch(e.func){case"UPPER":return(i[0]??"").toUpperCase();case"LOWER":return(i[0]??"").toLowerCase();case"TRIM":return(i[0]??"").trim();case"LTRIM":return(i[0]??"").trimStart();case"RTRIM":return(i[0]??"").trimEnd();case"LENGTH":return String((i[0]??"").length);case"LENGTH_CHAR":return pe("LENGTH_CHAR",i,1,1),String([...i[0]??""].length);case"SUBSTRING":{let o=i[0]??"",s=Math.max(0,Number(i[1]??"1")-1),a=i[2]!==void 0?Number(i[2]):void 0;return Id(o,s,a!==void 0?s+a:o.length)}case"LEFT":{pe("LEFT",i,2,2);let o=i[0],s=Math.trunc(Number(i[1]));return Number.isNaN(s)||s<=0?"":mo(o,s)}case"RIGHT":{pe("RIGHT",i,2,2);let o=i[0],s=Math.trunc(Number(i[1]));return Number.isNaN(s)||s<=0?"":wd(o,s)}case"INSTR":return pe("INSTR",i,2,2),String(i[0].indexOf(i[1])+1);case"LPAD":case"RPAD":{pe(e.func,i,2,3);let o=i[0],s=Math.trunc(Number(i[1]));if(Number.isNaN(s)||s<=0)return"";if(o.length>=s)return mo(o,s);let a=i[2]??" ";if(a==="")return o;let l=bd(a,s-o.length);return e.func==="LPAD"?l+o:o+l}case"GREATEST":case"LEAST":return pe(e.func,i,2),Xa(i,e.func==="GREATEST"?"greatest":"least");case"CONCAT":return i.join("");case"REPLACE":{let o=i[0]??"",s=i[1]??"",a=i[2]??"";return s===""?o:o.split(s).join(a)}case"REGEXP_LIKE":return pe("REGEXP_LIKE",i,2,3),Ro(i[1],i[2]??"").test(i[0])?"1":"0";case"REGEXP_REPLACE":{pe("REGEXP_REPLACE",i,3,5),Nd(i[2]);let o=Od(i[4]),s=Ro(i[1],i[3]??"",!0);return o===0?i[0].replace(s,i[2]):_d(i[0],s,i[2],o)}case"REGEXP_SUBSTR":return pe("REGEXP_SUBSTR",i,2,3),Ro(i[1],i[2]??"").exec(i[0])?.[0]??"";case"TRANSLATE":{pe("TRANSLATE",i,3,3);let o=[...i[1]],s=[...i[2]];if(o.length!==s.length)throw new Error(`ArgumentError: TRANSLATE \u306E from \u3068 to \u306F\u540C\u3058\u6587\u5B57\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08from=${o.length}, to=${s.length}\uFF09`);let a=new Map;return o.forEach((l,p)=>{a.has(l)||a.set(l,s[p])}),[...i[0]].map(l=>a.get(l)??l).join("")}case"COALESCE":return i.find(o=>o!=="")??"";case"NULLIF":return(i[0]??"")===(i[1]??"")?"":i[0]??"";case"ISNULL":return(i[0]??"")!==""?i[0]??"":i[1]??"";case"ROUND":return Fn("round",Number(i[0]??"0"),Number(i[1]??"0"));case"FLOOR":return Fn("floor",Number(i[0]??"0"),Number(i[1]??"0"));case"CEIL":return Fn("ceil",Number(i[0]??"0"),Number(i[1]??"0"));case"TRUNCATE":return pe("TRUNCATE",i,1,2),Fn("trunc",Number(i[0]),Number(i[1]??"0"));case"CAST":{let o=i[0]??"";if((i[1]??"TEXT")==="NUMBER"){let a=Number(o);return isNaN(a)?o:String(a)}return o}case"FORMAT":{let o=Number(i[0]??"0"),s=i[1]??"0";return xd(o,s)}case"YEAR":{let o=i[0]??"";return o.length>=4?String(parseInt(o.slice(0,4),10)):""}case"MONTH":{let o=i[0]??"";return o.length>=7?String(parseInt(o.slice(5,7),10)):""}case"DAY":{let o=i[0]??"";return o.length>=10?String(parseInt(o.slice(8,10),10)):""}case"DAYOFWEEK":return pe(e.func,i,1,1),Kn(i[0])?String(go(i[0])+1):"";case"QUARTER":return pe(e.func,i,1,1),Kn(i[0])?String(Math.ceil(Number(i[0].slice(5,7))/3)):"";case"WEEK":return pe(e.func,i,1,1),Kn(i[0])?String(Za(i[0])):"";case"DATE_FORMAT":return Dd(i[0]??"",i[1]??"");case"DATEDIFF":return kd(i[0]??"",i[1]??"");case"DATE_ADD":return Ud(i[0]??"",Number(i[1]??"0"),(i[2]??"DAY").toUpperCase());case"LAST_DAY":return pe("LAST_DAY",i,1,1),Md(i[0]);case"ABS":return String(Math.abs(Number(i[0]??"0")));case"MOD":{let o=Number(i[0]??"0"),s=Number(i[1]??"0");return String(s!==0?o%s:NaN)}case"POWER":return String(Math.pow(Number(i[0]??"0"),Number(i[1]??"0")));case"SQRT":return String(Math.sqrt(Number(i[0]??"0")));case"CURRENT_DATE":{let o=new Date,s=o.getFullYear(),a=String(o.getMonth()+1).padStart(2,"0"),l=String(o.getDate()).padStart(2,"0");return`${s}-${a}-${l}`}case"CURRENT_TIMESTAMP":return new Date().toISOString()}}function pe(e,t,r,n=Number.POSITIVE_INFINITY){if(t.length>=r&&t.length<=n)return;let i=r===n?String(r):n===Number.POSITIVE_INFINITY?`${r} or more`:`${r} to ${n}`;throw new Error(`ArgumentError: ${e} expects ${i} argument(s).`)}function Lr(e){return{y:e.slice(0,4)||"0000",mo:e.slice(5,7)||"01",d:e.slice(8,10)||"01",h:e.length>=13?e.slice(11,13):"00",mi:e.length>=16?e.slice(14,16):"00",sec:e.length>=19?e.slice(17,19):"00"}}function $n(e){let t=new Date(0);return t.setUTCHours(0,0,0,0),t.setUTCFullYear(Number(e.slice(0,4)),Number(e.slice(5,7))-1,Number(e.slice(8,10))),t}function Kn(e){let t=e.slice(0,10);if(!/^\d{4}-\d{2}-\d{2}$/.test(t))return!1;let r=$n(t);return r.getUTCFullYear()===Number(t.slice(0,4))&&r.getUTCMonth()+1===Number(t.slice(5,7))&&r.getUTCDate()===Number(t.slice(8,10))}function go(e){return $n(e).getUTCDay()}function Qa(e){let t=$n(e),r=t.getUTCDay()||7;return t.setUTCDate(t.getUTCDate()+4-r),t}function vd(e){return Qa(e).getUTCFullYear()}function Za(e){let t=Qa(e),r=t.getUTCFullYear(),n=$n(`${String(r).padStart(4,"0")}-01-04`),i=n.getUTCDay()||7;return n.setUTCDate(n.getUTCDate()+4-i),1+Math.round((t.getTime()-n.getTime())/(7*864e5))}function Dd(e,t){if(!e||e.length<10)return"";let{y:r,mo:n,d:i,h:o,mi:s,sec:a}=Lr(e),l=Kn(e);return t.replace(/%[YymcdeHiswavG]/g,p=>{switch(p){case"%Y":return r;case"%y":return r.slice(2);case"%m":return n;case"%c":return String(parseInt(n,10));case"%d":return i;case"%e":return String(parseInt(i,10));case"%H":return o;case"%i":return s;case"%s":return a;case"%w":return l?String(go(e)):"";case"%a":return l?["\u65E5","\u6708","\u706B","\u6C34","\u6728","\u91D1","\u571F"][go(e)]:"";case"%v":return l?String(Za(e)).padStart(2,"0"):"";case"%G":return l?String(vd(e)).padStart(4,"0"):"";default:return p}})}function kd(e,t){if(e.length<10||t.length<10)return"0";let r=Lr(e),n=Lr(t),i=Date.UTC(+r.y,+r.mo-1,+r.d),o=Date.UTC(+n.y,+n.mo-1,+n.d);return String(Math.round((i-o)/864e5))}function Ud(e,t,r){if(r!=="YEAR"&&r!=="MONTH"&&r!=="DAY")throw new Error("ArgumentError: DATE_ADD unit must be YEAR, MONTH, or DAY.");if(!e||e.length<10)return e;let{y:n,mo:i,d:o}=Lr(e),s=new Date(Date.UTC(+n,+i-1,+o));switch(r){case"YEAR":s.setUTCFullYear(s.getUTCFullYear()+t);break;case"MONTH":s.setUTCMonth(s.getUTCMonth()+t);break;case"DAY":s.setUTCDate(s.getUTCDate()+t);break}let a=String(s.getUTCFullYear()).padStart(4,"0"),l=String(s.getUTCMonth()+1).padStart(2,"0"),p=String(s.getUTCDate()).padStart(2,"0");return`${a}-${l}-${p}`}function Md(e){if(!e||e.length<10)return e;let{y:t,mo:r}=Lr(e),n=new Date(Date.UTC(+t,+r,0)),i=String(n.getUTCFullYear()).padStart(4,"0"),o=String(n.getUTCMonth()+1).padStart(2,"0"),s=String(n.getUTCDate()).padStart(2,"0");return`${i}-${o}-${s}`}function xd(e,t){if(/^-?\d+$/.test(t.trim()))return Fd(e,Math.max(0,Number(t)));let r=t.endsWith("%"),n=t.includes(","),i=r?e*100:e,o=t.replace(/%$/,"").lastIndexOf("."),s=o>=0?t.slice(o+1).replace(/%$/,""):"",a=(s.match(/0/g)??[]).length,l=(s.match(/#/g)??[]).length,p=a+l,d=i.toFixed(p),[c,u=""]=d.split(".");l>0&&(u=u.replace(/0+$/,""));let f=n?c.replace(/\B(?=(\d{3})+(?!\d))/g,","):c,E=u?`${f}.${u}`:f;return r?E+"%":E}function Fd(e,t){let r=e.toFixed(t),[n,i]=r.split("."),o=n.replace(/\B(?=(\d{3})+(?!\d))/g,",");return i?`${o}.${i}`:o}function Kd(e,t,r,n){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?"":e.type==="NUMBER"?G(e):String(se(e,t,r,n))}function Ye(e,t){let r=e[t];if(r!==void 0)return r;let n=t.indexOf(".");if(n>0){let i=e[t.slice(n+1)];if(i!==void 0)return i}return""}function q(e,t,r,n,i){switch(e.type){case"BOOLEAN":return e.value;case"BINARY":return Bd(e,t,r,n,i);case"NULL_CHECK":return Yd(e,t);case"LOGICAL":return jd(e,t,r,n,i);case"NOT":return!q(e.expr,t,r,n,i);case"GROUP":return q(e.expr,t,r,n,i);case"EXISTS":{let o=e.resolved;return e.not?!o:o}}}function Bd(e,t,r,n,i){if(e.op==="KLIKE"||e.op==="NOT_KLIKE"){if(n?.has(e))return!0;throw new Error("KLIKE / NOT KLIKE \u306F\u62BC\u3057\u4E0B\u3052\u6E08\u307F\u96C6\u5408\u306B\u542B\u307E\u308C\u306A\u3044\u305F\u3081 JavaScript \u5074\u3067\u306F\u8A55\u4FA1\u3067\u304D\u307E\u305B\u3093")}let o=ll(e.left,t,r,i),s=e.left.type==="FIELD"?r?.(e.left):void 0,a=Gd(e.left,s,i);return $d(e.op,o,e.right,t,s,r,a,i)}function $d(e,t,r,n,i,o,s=x("string"),a){if(e==="IN"||e==="NOT_IN"){let p=null;if(r.type==="IN_LIST"&&(Hd(r.values),p=new Set(r.values.map(c=>c.type==="NUMBER"?i==="NUMBER"?G(c):String(c.value):c.value))),r.type==="SUBQUERY_IN_LIST"&&(p=r.resolved),p===null)return e==="NOT_IN";let d=Wd(t,p,i);return e==="IN"?d:!d}if(e==="LIKE"){let p=ho(r,n,o);return al(t,p)}if(e==="NOT_LIKE"){let p=ho(r,n,o);return!al(t,p)}if(e==="KLIKE"||e==="NOT_KLIKE")throw new Error("KLIKE / NOT KLIKE \u306F JavaScript \u5074\u3067\u306F\u8A55\u4FA1\u3067\u304D\u307E\u305B\u3093\uFF08SIMPLE SELECT \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059\uFF09");let l=ho(r,n,o,a);return At(e,t,l,s)}var tl=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function Gd(e,t,r){if(e.type==="FIELD")return r?.(e)??(t?z({fieldType:t}):x("string"));if(e.type==="ARITH_FIELD")return x("number");if(e.type==="FUNC_FIELD")return x(tl.has(e.expr.func)?"number":"string");if(e.type==="CASE_FIELD"){let i=[...e.expr.branches.map(o=>o.result),...e.expr.elseResult?[e.expr.elseResult]:[]].map(o=>{if(o.type==="NUMBER"||o.type==="ARITH")return x("number");if(o.type==="STRING_FUNC")return x(tl.has(o.func)?"number":"string");if(o.type==="FIELD_REF"){let s=o.field.indexOf("."),a=s>0?{type:"FIELD",tableAlias:o.field.slice(0,s),field:o.field.slice(s+1)}:{type:"FIELD",tableAlias:null,field:o.field};return r?.(a)??x("string")}return x("string")});if(i.length>0&&i.every(o=>o.compareMode===i[0].compareMode))return i[0]}return e.type==="GROUPING_FIELD"?x("number"):x("string")}var rl=new Set(["CHECK_BOX","MULTI_SELECT"]),nl=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE"]),Vd=new Set(["CREATOR","MODIFIER"]);function Wd(e,t,r){let n=()=>t.has(e);if(r===void 0)return n();if(r==="NUMBER"){let o=x("number");return[...t].some(s=>At("=",e,s,o))}let i;if(rl.has(r)||nl.has(r)||Vd.has(r))try{i=JSON.parse(e)}catch{return n()}else return n();return rl.has(r)?!Array.isArray(i)||!i.every(o=>typeof o=="string")?n():i.length===0&&t.has("")?!0:i.some(o=>t.has(o)):nl.has(r)?!Array.isArray(i)||!i.every(il)?n():i.length===0&&t.has("")?!0:i.some(o=>t.has(o.code)):il(i)?t.has(i.code):n()}function il(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&typeof e.code=="string"}function Hd(e){let t=e.find(r=>r.type==="VARIABLE");if(t?.type==="VARIABLE")throw new Error(`ParseError: unresolved batch variable @${t.name}.`)}function Yd(e,t){let r=ll(e.field,t);return e.not?r!=="":r===""}function jd(e,t,r,n,i){return e.op==="AND"?q(e.left,t,r,n,i)&&q(e.right,t,r,n,i):q(e.left,t,r,n,i)||q(e.right,t,r,n,i)}function ll(e,t,r,n){if(e.type==="FUNC_FIELD")return te(e.expr,t);if(e.type==="ARITH_FIELD")return String(ee(e.expr,t));if(e.type==="CASE_FIELD")return we(e.expr,t,r,n);if(e.type==="GROUPING_FIELD")return rr(e.ref,t);let i=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return Ye(t,i)}function ho(e,t,r,n){switch(e.type){case"VARIABLE":throw new Error(`ParseError: unresolved batch variable @${e.name}.`);case"VARIABLE_IN_LIST":throw new Error(`ParseError: unresolved batch array variable @${e.name}.`);case"STRING":return e.value;case"NUMBER":return G(e);case"KINTONE_FUNC":return ul(e.name);case"IN_LIST":return"";case"SUBQUERY_IN_LIST":return"";case"SCALAR_SUBQUERY":return e.resolved;case"ARITH_VALUE":return e.expr.type==="FIELD_REF"?Ye(t,e.expr.field):e.expr.type==="STRING_FUNC"?te(e.expr,t):String(ee(e.expr,t));case"CASE_VALUE":return we(e.expr,t,r,n);case"ARRAY":return e.elements.map(i=>i.value).join(",")}}function we(e,t,r,n){for(let i of e.branches)if(q(i.condition,t,r,void 0,n))return sl(i.result,t,r,n);return e.elseResult!==null?sl(e.elseResult,t,r,n):""}function el(e,t,r,n){for(let i of e.branches)if(q(i.condition,t,r,void 0,n))return ol(i.result,t,r,n);return e.elseResult===null?null:ol(e.elseResult,t,r,n)}function ol(e,t,r,n){return e.type==="ARRAY"?e.elements.map(i=>i.value).join(","):e.type==="FIELD_REF"?t[e.field]??"":e.type==="ARITH"?ee(e,t):lt(e,t,r,n)}function sl(e,t,r,n){return e.type==="ARRAY"?e.elements.map(i=>i.value).join(","):e.type==="FIELD_REF"?t[e.field]??"":e.type==="ARITH"?String(ee(e,t)):String(se(e,t,r,n))}function ul(e){let t=new Date;switch(e){case"TODAY":{let r=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),i=String(t.getDate()).padStart(2,"0");return`${r}-${n}-${i}`}case"NOW":return t.toISOString();case"LOGINUSER":return""}}var Gn=new Map,qd=200;function al(e,t){if(!Ia(t))return e.includes(t);let r=Gn.get(t);if(!r){let n="^";for(let i=0;i<t.length;i++){let o=t[i];o==="%"?n+=".*":o==="_"?n+=".":n+=o.replace(/[.+*?^${}()|[\]\\]/g,"\\$&")}n+="$",r=new RegExp(n,"u"),Gn.size>=qd&&Gn.clear(),Gn.set(t,r)}return r.test(e)}function ir(e){return pl(e)}function cl(e){return pl(e.flatMap(t=>t.rules.map(r=>r.condition)))}function pl(e){let t=[],r=new Set,n=o=>{if(Array.isArray(o)){o.forEach(n);return}if(o===null||typeof o!="object")return;let s=o;if(s.type==="EXISTS"||s.type==="SUBQUERY_IN_LIST"||s.type==="SCALAR_SUBQUERY")throw ae("CHECK \u306B\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");if(s.type==="FIELD"&&typeof s.field=="string")i(typeof s.tableAlias=="string"?s.tableAlias:null,s.field);else if(s.type==="FIELD_REF"&&typeof s.field=="string"){let a=s.field.indexOf(".");i(a>0?s.field.slice(0,a):null,a>0?s.field.slice(a+1):s.field)}for(let a of Object.values(s))n(a)},i=(o,s)=>{if(/^(COUNT|SUM|AVG|MIN|MAX|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/i.test(s))throw ae("CHECK \u306B\u96C6\u7D04\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");let a=`${o??""}\0${s}`;r.has(a)||(r.add(a),t.push({tableAlias:o,field:s}))};return n(e),t}function ae(e){return new S(e,{kind:"EOF",value:"CHECK",pos:0})}function Vn(e,t,r){let n=[];return e.forEach((i,o)=>{for(let s of i.rules){if(!q(s.condition,t,r))continue;let a=se(s.message,t);n.push({groupIndex:o,message:a==null?"":String(a)});break}}),n}function Ao(e){if(it(e))throw new j("UPDATE / DELETE \u306E WHERE \u306B LIKE / NOT LIKE \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002LIKE \u306F kSQL \u306E\u610F\u5473\u8AD6\u306B\u5F93\u3063\u3066 JS \u3067\u8A55\u4FA1\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u304C\u3001\u89AA\u30EC\u30B3\u30FC\u30C9 DML \u306B\u306F JS \u8A55\u4FA1\u7D4C\u8DEF\u304C\u306A\u3044\u305F\u3081\u3001\u5B89\u5168\u4E0A\u62D2\u5426\u3057\u307E\u3057\u305F\u3002SELECT \u3067\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u3092\u78BA\u8A8D\u3057\u3001IN \u307E\u305F\u306F\u5B8C\u5168\u4E00\u81F4\u3067\u5BFE\u8C61\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}var zd=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),Xd=new Set(["CHECK_BOX","MULTI_SELECT"]);function Hn(e,t=new Map){let r=e.values.map(n=>Jd(e.fields,n,t));return kr(r,100).map(n=>({app:e.appId,records:n}))}function Jd(e,t,r){let n={};return e.forEach((i,o)=>{let s=t[o];s.type==="CASE_VALUE"?n[i]={value:ut(s.expr,{},r.get(i))}:n[i]={value:je(s,r.get(i))}}),n}function vr(e){Ao(e.where);let t=Il(e);return{app:e.appId,query:W(e.where),fields:["$id",...t],totalCount:!1}}function Dr(e,t,r=new Map){let n=Qd(e.assignments,r);return kr(t,100).map(i=>({app:e.appId,records:i.map(o=>({id:o,record:n}))}))}function Qd(e,t){let r={};for(let{field:n,value:i}of e)i.type==="ARITH"||i.type==="SCALAR_ARITH"||i.type==="CONCAT_OP"||i.type==="CASE_VALUE"||i.type==="STRING_FUNC"||i.type==="SOURCE_FIELD"||(r[n]={value:je(i,t.get(n))});return r}function Rl(e){return e.assignments.some(t=>t.value.type==="ARITH"||t.value.type==="SCALAR_ARITH"||t.value.type==="CONCAT_OP"||t.value.type==="CASE_VALUE")}function Yn(e){return e.assignments.some(t=>t.value.type==="ARITH"||t.value.type==="SCALAR_ARITH"||t.value.type==="CONCAT_OP"||t.value.type==="CASE_VALUE"||t.value.type==="STRING_FUNC")}function So(e){Ao(e.where);let t=new Set;for(let{value:r}of e.assignments)r.type==="ARITH"?ml(r,t):r.type==="SCALAR_ARITH"||r.type==="CONCAT_OP"?or(r,t):r.type==="STRING_FUNC"?To(r,t):r.type==="CASE_VALUE"&&gl(r.expr,t);return Il(e).forEach(r=>t.add(r)),{app:e.appId,query:W(e.where),fields:["$id",...t],totalCount:!1}}function ml(e,t){_r(e.left,t),_r(e.right,t)}function _r(e,t){e.type==="FIELD_REF"?t.add(e.field):e.type==="ARITH"?ml(e,t):e.type==="STRING_FUNC"&&To(e,t)}function To(e,t){for(let r of e.args)Zd(r,t)}function Zd(e,t){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"){yo(e,t);return}or(e,t)}function or(e,t){if(e.type==="FIELD"){t.add(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field);return}if(e.type==="STRING_FUNC"){To(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){or(e.left,t),or(e.right,t);return}e.type==="CASE_WHEN"&&gl(e,t)}function yo(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&ef(e.arg,t);return}e.type==="AGG_ARITH"&&(yo(e.left,t),yo(e.right,t))}function ef(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?_r(e,t):or(e,t)}function dl(e,t){if(e.type!=="ARRAY"){if(e.type==="FIELD_REF"||e.type==="ARITH"){_r(e,t);return}or(e,t)}}function gl(e,t){for(let r of e.branches)Wn(r.condition,t),dl(r.result,t);e.elseResult!==null&&dl(e.elseResult,t)}function Wn(e,t){switch(e.type){case"BINARY":e.left.type==="FIELD"?t.add(e.left.field):e.left.type==="ARITH_FIELD"&&_r(e.left.expr,t);break;case"NULL_CHECK":e.field.type==="FIELD"&&t.add(e.field.field);break;case"LOGICAL":Wn(e.left,t),Wn(e.right,t);break;case"NOT":case"GROUP":Wn(e.expr,t);break;case"EXISTS":case"BOOLEAN":break}}function wo(e,t,r=new Map){let n=t.map(i=>{let o=Number(i.$id.value),s=hl(i),a={};for(let{field:l,value:p}of e.assignments)a[l]={value:Io(p,s,r.get(l),i)};return{id:o,record:a}});return kr(n,100).map(i=>({app:e.appId,records:i}))}function Io(e,t,r,n){if(e.type==="ARITH")return String(n?Po(e,n):ee(e,t));if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP")return String(se(e,t));if(e.type==="STRING_FUNC")return te(e,t);if(e.type==="CASE_VALUE")return ut(e.expr,t,r);if(e.type==="SOURCE_FIELD")throw new j("SOURCE_FIELD \u306F UPDATE ... FROM \u5C02\u7528\u3067\u3059");return je(e,r)}function jn(e,t,r){if(e.type==="STRING")return e.value;if(e.type==="NUMBER")return G(e);if(e.type==="ARITH")return String(ee(e,t));if(e.type==="CASE_VALUE")return we(e.expr,t,r);throw new Error(`${e.type} \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`)}var tf=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);function bo(e,t,r=new Map){let n=t.map(({target:i,source:o})=>{let s=Number(i.$id?.value);if(!Number.isSafeInteger(s)||s<=0)throw new j("UPDATE ... FROM \u306E\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u304C\u4E0D\u6B63\u3067\u3059");let a=hl(i),l={};for(let{field:p,value:d}of e.assignments){let c=r.get(p);if(d.type==="SOURCE_FIELD"){if(tf.has(c??""))throw new j(`UPDATE ... FROM \u306E SOURCE_FIELD \u306F ${c} \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9: ${p}\uFF09`);if(!Object.prototype.hasOwnProperty.call(o,d.field))throw new j(`UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u5217 ${d.field} \u304C\u5B58\u5728\u3057\u307E\u305B\u3093`);let u=o[d.field];if(typeof u!="string")throw new j(`UPDATE ... FROM \u306E SOURCE_FIELD \u306F\u30B9\u30AB\u30E9\u30FC\u5024\u306E\u307F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\uFF08\u5217: ${d.field}\uFF09`);if((c==="NUMBER"||c==="CALC")&&u!==""&&!Number.isFinite(Number(u)))throw new j(`\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9 ${p} \u306B\u5909\u63DB\u3067\u304D\u306A\u3044\u5024\u3067\u3059: ${u}`);l[p]={value:je({type:"STRING",value:u},c)}}else{if(d.type==="STRING_FUNC")throw new j("UPDATE ... FROM \u306E SET \u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u3092\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");d.type==="ARITH"?l[p]={value:String(Po(d,i))}:d.type==="SCALAR_ARITH"||d.type==="CONCAT_OP"?l[p]={value:String(se(d,a))}:d.type==="CASE_VALUE"?l[p]={value:ut(d.expr,a,c)}:l[p]={value:je(d,c)}}}return{id:s,record:l}});return kr(n,100).map(i=>({app:e.appId,records:i}))}function hl(e){return Object.fromEntries(Object.entries(e).map(([t,r])=>[t,typeof r.value=="string"?r.value:JSON.stringify(r.value??"")]))}function Po(e,t){let r=fl(e.left,t),n=fl(e.right,t);switch(e.op){case"+":return r+n;case"-":return r-n;case"*":return r*n;case"/":if(n===0)throw new j("\u7B97\u8853\u5F0F\u3067\u30BC\u30ED\u9664\u7B97\u304C\u767A\u751F\u3057\u307E\u3057\u305F");return r/n;case"%":if(n===0)throw new j("\u7B97\u8853\u5F0F\u3067\u30BC\u30ED\u9664\u7B97\u304C\u767A\u751F\u3057\u307E\u3057\u305F");return r%n}}function fl(e,t){if(e.type==="NUMBER")return e.value;if(e.type==="ARITH")return Po(e,t);if(e.type==="STRING_FUNC")throw new j("UPDATE SET \u306E\u7B97\u8853\u5F0F\u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093");let r=t[e.field]?.value??"",n=Number(r);if(Number.isNaN(n))throw new j(`\u7B97\u8853\u5F0F\u306E\u30D5\u30A3\u30FC\u30EB\u30C9 "${e.field}" \u306E\u5024 "${r}" \u306F\u6570\u5024\u3067\u306F\u3042\u308A\u307E\u305B\u3093`);return n}function yl(e){return Ao(e.where),{app:e.appId,query:W(e.where),fields:["$id"],totalCount:!1}}function Al(e,t){return kr(t,100).map(r=>({app:e,ids:r}))}function Sl(e){return zd.has(e??"")}function rf(e){return Xd.has(e??"")}function nf(e){if(!e||/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?Z$/.test(e))return e;let t=e.replace(/\//g,"-").replace(" ","T");/T\d{2}:\d{2}$/.test(t)&&(t+=":00");let r=new Date(t);return isNaN(r.getTime())?e:r.toISOString().replace(/\.\d{3}Z$/,"Z")}function of(e){return!e||/^\d{4}-\d{2}-\d{2}$/.test(e)?e:e.replace(/\//g,"-")}function Tl(e,t){return Sl(t)?e===""?[]:e.split(",").map(r=>({code:r.trim()})):rf(t)?e===""?[]:e.split(",").map(r=>r.trim()):t==="DATETIME"?nf(e):t==="DATE"?of(e):e}function wl(e,t){return Sl(t)?e.map(r=>({code:r})):e}function El(e,t,r){return e.type==="ARRAY"?wl(e.elements.map(n=>n.value),r):e.type==="STRING"?Tl(e.value,r):e.type==="STRING_FUNC"?te(e,t):e.type==="FIELD_REF"||e.type==="ARITH"?String(ee(e,t)):String(se(e,t))}function Il(e){if(!e.checkGroups)return[];let t=`app${e.appId}`.toLowerCase();return[...new Set(ir(e.checkGroups).filter(r=>r.tableAlias===null||r.tableAlias.toLowerCase()===t).map(r=>r.field).filter(r=>r!=="$id"))]}function ut(e,t,r){for(let n of e.branches)if(q(n.condition,t))return El(n.result,t,r);return e.elseResult!==null?El(e.elseResult,t,r):""}function je(e,t){let r=Co(e,t);if(!r.ok)throw new j(r.message);return r.value}function Co(e,t){try{return{ok:!0,value:sf(e,t)}}catch(r){return{ok:!1,message:r instanceof Error?r.message:String(r)}}}function sf(e,t){switch(e.type){case"VARIABLE":throw new j(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"VARIABLE_IN_LIST":throw new j(`\u672A\u89E3\u6C7A\u306E\u914D\u5217\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"STRING":return Tl(e.value,t);case"NUMBER":return G(e);case"ARRAY":return wl(e.elements.map(r=>r.value),t);case"KINTONE_FUNC":throw new j(`${e.name}() \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`);case"IN_LIST":throw new j("IN_LIST \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");case"ARITH_VALUE":throw new j("\u7B97\u8853\u5F0F\u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");case"CASE_VALUE":throw new j("CASE WHEN \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");case"SUBQUERY_IN_LIST":throw new j("IN (SELECT ...) \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");case"SCALAR_SUBQUERY":throw new j("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093")}}function kr(e,t){let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}var j=class extends Error{constructor(t){super(t),this.name="DmlConvertError"}};var No=new Set(["CHECK_BOX","MULTI_SELECT"]),af=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function Ur(e){throw new Error(`ArgumentError: ${e}`)}function bl(e,t,r){let n=lf(r.fieldType,e.field),i=uf(t,n,e.field),o=new Set(i),s=[],a=new Set,l=new Set;for(let g of e.operations){let y=g.value;y!==""&&(g.kind==="ADD"?(a.has(y)||s.push(y),a.add(y)):l.add(y))}for(let g of a)l.has(g)&&Ur(`APPLY multi-value field ${e.field} has conflicting ADD and REMOVE for ${JSON.stringify(g)}.`);let p=i.filter(g=>!l.has(g)),d=s.filter(g=>!o.has(g)),c=[...p,...d],u=new Set(i.filter(g=>l.has(g))).size,f=new Set,E=new Set,R=e.operations.map(g=>{let y=g.kind==="ADD"?f:E,T=!y.has(g.value);return y.add(g.value),{kind:g.kind,value:g.value,changed:g.value!==""&&T&&(g.kind==="ADD"?!o.has(g.value):o.has(g.value))}}),m=No.has(n)?c:c.map(g=>({code:g}));return{field:e.field,fieldType:n,operations:R,postImageValue:m,addedValues:d.length,removedValues:u,changedValues:d.length+u}}function lf(e,t){return No.has(e)||af.has(e)?e:Ur(`APPLY multi-value target ${t} has unsupported type ${e}.`)}function uf(e,t,r){if(!Array.isArray(e))return Ur(`APPLY snapshot for ${r} must be an array.`);let n=e.map((i,o)=>No.has(t)?typeof i!="string"?Ur(`APPLY snapshot for ${r} must contain string values (item ${o+1}).`):i:typeof i!="object"||i===null||typeof i.code!="string"?Ur(`APPLY snapshot for ${r} must contain {code: string} values (item ${o+1}).`):i.code);return[...new Set(n.filter(i=>i!==""))]}function $(e){throw new Error(`ArgumentError: ${e}`)}function _o(e){let t=e.where;return t.type!=="BINARY"||t.op!=="="||t.left.type!=="FIELD"||t.left.tableAlias!==null||t.left.field!=="$id"||t.right.type!=="NUMBER"||!Number.isSafeInteger(t.right.value)||t.right.value<=0?$("APPLY parent selector must be a single positive $id."):t.right.value}function qe(e,t){let r=e.applyBlocks;if(!r?.length)return $("APPLY block is missing.");let n=new Map(t.map(a=>[a.code,a])),i=new Map,o=new Map,s=new Map;for(let a of e.assignments)Oo(a.field,null,n),cf(a.value,n);for(let a of r){(i.has(a.field)||o.has(a.field))&&$(`APPLY has more than one block for field ${a.field}.`),e.assignments.some(c=>c.field===a.field)&&$(`APPLY target ${a.field} is also assigned by parent SET.`);let l=t.find(c=>c.code===a.field&&!c.inSubtable);if(!l)return a.targetKind==="SUBTABLE"?$(`APPLY target ${a.field} is not a SUBTABLE.`):$(`APPLY target ${a.field} does not exist as a top-level field.`);if(ya(a,l.fieldType),a.targetKind==="MULTI_VALUE"){l.writable===!1&&$(`APPLY target ${a.field} is not writable (${l.fieldType}).`),o.set(a.field,l);continue}let p=l,d=new Map(t.filter(c=>c.inSubtable&&c.subtableCode===a.field).map(c=>[c.code,c]));i.set(a.field,p),s.set(a.field,d);for(let c of a.operations)if(c.kind==="PATCH"){for(let u of c.assignments)Oo(u.field,a.field,n,d),Lo(u.value,a.field,n,d);c.selector.kind==="WHERE"&&Lo(c.selector.where,a.field,n,d)}else if(c.kind==="APPEND"){let u=new Set;for(let f of c.fields)u.has(f)&&$(`APPLY APPEND specifies child ${f} more than once.`),u.add(f),Oo(f,a.field,n,d)}else c.kind==="REMOVE"&&c.selector.kind==="WHERE"&&Lo(c.selector.where,a.field,n,d)}return{targetTables:i,targetMultiValueFields:o,childrenByTable:s,fieldsByCode:n}}function cf(e,t){Mr(e,r=>{if(r==="$id"||r==="$revision")return;let n=t.get(r);(!n||n.inSubtable)&&$(`APPLY parent reference ${r} is not a top-level field.`),n.fieldType==="FILE"&&$(`APPLY parent FILE reference ${r} is not supported.`)})}function Oo(e,t,r,n){(e.startsWith("_")||e.startsWith("$"))&&$(`APPLY assignment target ${e} is a system field.`);let i=t===null?[...r.values()].find(o=>o.code===e&&!o.inSubtable):n?.get(e);if(!i){let o=r.get(e);t!==null&&o?.inSubtable&&$(`APPLY child ${e} does not belong to subtable ${t}.`),$(`APPLY ${t===null?"parent field":"child"} ${e} does not exist.`)}(i.fieldType==="SUBTABLE"||i.fieldType==="FILE"||i.writable===!1)&&$(`APPLY assignment target ${e} is not writable (${i.fieldType}).`)}function Lo(e,t,r,n){Mr(e,i=>{if(i==="_rid"||i==="_idx"||n.has(i))return;r.get(i)?.inSubtable&&$(`APPLY child reference ${i} does not belong to subtable ${t}.`),$(`APPLY child reference ${i} does not exist in subtable ${t}.`)})}function qn(e,t){let r=qe(e,t),n=new Set(["$id","$revision"]);for(let i of t)i.inSubtable||i.fieldType==="FILE"||n.add(i.code);for(let i of r.targetTables.values())n.add(i.code);for(let i of e.assignments)Mr(i.value,o=>{let s=r.fieldsByCode.get(o);!s?.inSubtable&&s?.fieldType!=="FILE"&&n.add(o)});return[...n]}function zn(e,t){let r={_rid:e.id??"",_idx:String(t)};for(let[n,i]of Object.entries(e.value??{}))r[n]=_l(i?.value);return r}function Cl(e){let{statement:t,snapshot:r,fieldInfos:n}=e,i=e.metadata??qe(t,n),o=ko(r.$id?.value,"APPLY snapshot $id"),s=_o(t);return o!==s&&$(`APPLY snapshot $id ${o} does not match requested $id ${s}.`),Ol(t,r,i,o)}function Nl(e,t,r,n=qe(e,r)){let i=new Set;return t.map(o=>{let s=ko(o.$id?.value,"APPLY snapshot $id");return i.has(s)&&$(`APPLY snapshots contain duplicate parentId ${s}.`),i.add(s),Ol(e,o,n,s)})}function Ol(e,t,r,n){let i=ko(t.$revision?.value,"APPLY snapshot $revision"),o=[],s=[];for(let d of e.applyBlocks){if(d.targetKind==="MULTI_VALUE"){let P=r.targetMultiValueFields.get(d.field);P||$(`APPLY multi-value metadata for ${d.field} is missing.`),s.push(bl(d,t[d.field]?.value,P));continue}let c=r.childrenByTable.get(d.field),u=mf(t,d.field),f=new Set;for(let P of u)P.id||$(`APPLY snapshot for ${d.field} contains a row without _rid.`),f.has(P.id)&&$(`APPLY snapshot for ${d.field} contains duplicate _rid ${P.id}.`),f.add(P.id);let E=P=>P.field==="_rid"?"SINGLE_LINE_TEXT":P.field==="_idx"?"NUMBER":c.get(P.field)?.fieldType,R=[],m=[],g=[],y=new Set,T=new Set,A=new Set,N=d.operations.some(P=>P.kind==="REMOVE");for(let[P,h]of d.operations.entries()){if(h.kind==="APPEND"){let O=vo(h,c,d.field);g.push({kind:"APPEND",addedRows:O.length}),m.push(...O);continue}if(h.kind==="REMOVE"){let O=ff(h,u,E,d.field);h.expectRows&&Pl(h.expectRows,O.length,n,d.field,P,h.kind),g.push({kind:"REMOVE",removedRows:O.length});for(let v of O){let k=u[v].id;T.has(v)&&$(`APPLY row ${k} is selected by both PATCH and REMOVE.`),A.has(v)&&$(`APPLY removes row ${k} more than once.`),A.add(v)}continue}if(h.kind!=="PATCH")continue;let C=df(h,u,E,d.field);h.expectRows&&Pl(h.expectRows,C.length,n,d.field,P,h.kind),g.push({kind:"PATCH",matchedRows:C.length,changedRows:C.length});for(let O of C){let v=u[O];A.has(O)&&$(`APPLY row ${v.id} is selected by both PATCH and REMOVE.`),T.add(O);let k=zn(v,O);for(let I of h.assignments){let U=`${v.id}\0${I.field}`;y.has(U)&&$(`APPLY patches cell ${v.id}.${I.field} more than once.`),y.add(U),R.push({rowIndex:O,field:I.field,value:jn(I.value,k,E)})}}}let w=new Map;for(let P of R){let h=w.get(P.rowIndex)??{};h[P.field]={value:P.value},w.set(P.rowIndex,h)}let b=[...u.flatMap((P,h)=>A.has(h)?[]:[{id:P.id,value:{...P.value,...w.get(h)??{}}}]),...m],D={table:d.field,operations:g,changedSubtableRows:w.size+A.size+m.length,deletedRows:A.size,snapshotRowIds:u.map(P=>P.id),postImageRows:b};N?o.push({...D,payloadShape:"FULL_SURVIVORS",removedRowIds:u.flatMap((P,h)=>A.has(h)?[P.id]:[]),payloadRows:b.map(P=>({...P.id===void 0?{}:{id:P.id},value:P.value}))}):o.push({...D,payloadShape:"PATCH_ONLY",payloadRows:[...u.map((P,h)=>{let C=w.get(h);return C?{id:P.id,value:C}:{id:P.id}}),...m.map(P=>({value:P.value}))]})}let a=gf(t),l={};for(let d of e.assignments){let c=r.fieldsByCode.get(d.field)?.fieldType;l[d.field]={value:Io(d.value,a,c,t)}}let p={...t};Object.assign(p,l);for(let d of o)p[d.table]={value:d.postImageRows};for(let d of s)p[d.field]={value:d.postImageValue};return{app:e.appId,parentId:n,revision:i,parentRows:1,changedSubtableRows:o.reduce((d,c)=>d+c.changedSubtableRows,0),parentValues:l,postImage:p,tables:o,multiValues:s}}function Pl(e,t,r,n,i,o){if(e.kind==="EXACT"?t===e.count:e.kind==="BETWEEN"?t>=e.min&&t<=e.max:e.kind==="AT_LEAST"?t>=e.count:t<=e.count)return;let a=e.kind==="EXACT"?`exactly ${e.count}`:e.kind==="BETWEEN"?`between ${e.min} and ${e.max}`:e.kind==="AT_LEAST"?`at least ${e.count}`:`at most ${e.count}`;$(`APPLY EXPECT ROWS mismatch for parent $id ${r}, table ${n}, operation ${i+1} (${o}): expected ${a}, actual ${t}.`)}function Xn(e,t){let r=e.tables.map(o=>{let s=t[o.table]?.value;if(!Array.isArray(s)||s.length!==o.postImageRows.length)return $(`APPLY normalized post-image for ${o.table} has an unexpected row count.`);let a=o.payloadRows.map((l,p)=>{let d=s[p];return d?.value?l.id===void 0?{value:d.value}:l.value===void 0?{id:l.id}:{id:l.id,value:Object.fromEntries(Object.keys(l.value).map(c=>[c,d.value[c]]))}:$(`APPLY normalized post-image for ${o.table} row ${p+1} has no value.`)});return{...o,payloadRows:a,postImageRows:s}}),n=Object.fromEntries(Object.keys(e.parentValues).map(o=>[o,t[o]??e.parentValues[o]])),i=e.multiValues.map(o=>{let s=t[o.field]?.value;return Array.isArray(s)?{...o,postImageValue:s}:$(`APPLY normalized post-image for ${o.field} is not an array.`)});return{...e,parentValues:n,tables:r,multiValues:i,postImage:t}}function vo(e,t,r){return e.values.map(n=>({value:pf(e,n,t,r)}))}function pf(e,t,r,n){if(t.length!==e.fields.length)return $(`APPLY APPEND for ${n} has ${t.length} values for ${e.fields.length} fields.`);let i=new Map(e.fields.map((s,a)=>[s,t[a]])),o={};for(let s of r.values()){if(s.fieldType==="FILE"||s.writable===!1)continue;let a=i.get(s.code);o[s.code]={value:a===void 0?Do(s):a.type==="CASE_VALUE"?ut(a.expr,{},s.fieldType):je(a,s.fieldType)}}return o}function Do(e){return e.defaultValue!==void 0&&e.defaultValue!==null?e.defaultValue:["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(e.fieldType)?[]:""}function df(e,t,r,n){return Ll(e.selector,t,r,n)}function ff(e,t,r,n){return Ll(e.selector,t,r,n)}function Ll(e,t,r,n){if(e.kind==="ALL_ROWS")return t.map((l,p)=>p);let i=e.where,o=t.flatMap((l,p)=>q(i,zn(l,p),r)?[p]:[]),s=Ef(i);s!==null&&o.length===0&&$(`APPLY _rid ${s} does not exist in snapshot table ${n}.`);let a=Rf(i);return a!==null&&o.length===0&&$(`APPLY _idx ${a} does not exist in snapshot table ${n}.`),o}function Ef(e){return e.type!=="BINARY"||e.op!=="="||e.left.type!=="FIELD"||e.left.tableAlias!==null||e.left.field!=="_rid"?null:e.right.type==="STRING"?e.right.value:e.right.type==="NUMBER"?e.right.raw??String(e.right.value):null}function Rf(e){return e.type!=="BINARY"||e.op!=="="||e.left.type!=="FIELD"||e.left.tableAlias!==null||e.left.field!=="_idx"||e.right.type!=="NUMBER"?null:Number.isSafeInteger(e.right.value)&&e.right.value>=0?e.right.value:null}function mf(e,t){let r=e[t]?.value;return Array.isArray(r)?r.map(n=>{let i=n;return{id:typeof i.id=="string"?i.id:"",value:i.value&&typeof i.value=="object"?i.value:{}}}):$(`APPLY snapshot field ${t} is not a subtable value.`)}function ko(e,t){let r=Number(e);return(!Number.isSafeInteger(r)||r<=0)&&$(`${t} must be a positive integer.`),r}function gf(e){let t={};for(let[r,n]of Object.entries(e))t[r]=_l(n?.value);return t}function _l(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return String(e);try{return JSON.stringify(e)}catch{return String(e)}}function Mr(e,t){if(Array.isArray(e)){e.forEach(n=>Mr(n,t));return}if(e===null||typeof e!="object")return;let r=e;(r.type==="FIELD"||r.type==="FIELD_REF")&&typeof r.field=="string"&&t(r.field);for(let n of Object.values(r))Mr(n,t)}function X(e){throw new Error(`ArgumentError: ${e}`)}function Qn(e){let t=Number(e.$revision?.value);return!Number.isSafeInteger(t)||t<=0?X("APPLY snapshot $revision must be a positive integer."):t}function xr(e){if(!Number.isSafeInteger(e.parentId)||e.parentId<=0)return X("APPLY plan parentId must be a positive integer.");if(!Number.isSafeInteger(e.revision)||e.revision<=0)return X("APPLY plan revision must be a positive integer.");let t={...e.parentValues},r=new Set(Object.keys(t));for(let i of e.multiValues)r.has(i.field)&&X(`APPLY plan contains duplicate top-level field ${i.field}.`),r.add(i.field),t[i.field]={value:i.postImageValue};let n=new Set;for(let i of e.tables)r.has(i.table)&&X(`APPLY plan contains duplicate top-level field ${i.table}.`),n.has(i.table)&&X(`APPLY plan contains duplicate table ${i.table}.`),n.add(i.table),r.add(i.table),hf(i),t[i.table]={value:i.payloadRows};return{app:e.app,records:[{id:e.parentId,revision:e.revision,record:t}]}}function vl(e){if(e.records.length===0)return[];let t=e.plans[0]?.app;if(!Number.isSafeInteger(t)||t<=0||e.plans.length!==e.records.length)return X("prepared APPLY plans and records must have the same positive-app parent count.");let r=[];for(let n=0;n<e.records.length;n+=100)r.push({app:t,records:e.records.slice(n,n+100)});return r}function hf(e){let t=Uo(e.snapshotRowIds,`${e.table} snapshot`),r=e.payloadRows.flatMap(d=>d.id===void 0?[]:[d.id]);for(let d of e.payloadRows)d.id===void 0&&d.value===void 0&&X(`APPLY ${e.payloadShape} table ${e.table} contains an APPEND row without value.`);if(Uo(r,`${e.table} payload`),e.payloadShape==="PATCH_ONLY"){e.operations.some(u=>u.kind==="REMOVE")&&X(`APPLY PATCH_ONLY table ${e.table} cannot contain REMOVE.`);let d=e.payloadRows.slice(0,t.length).map(u=>u.id??"");Jn(t,d,`APPLY PATCH_ONLY table ${e.table} must retain every snapshot row id in order.`),e.payloadRows.slice(t.length).some(u=>u.id!==void 0)&&X(`APPLY PATCH_ONLY table ${e.table} must place every APPEND row after snapshot rows.`);let c=e.postImageRows.slice(0,t.length).map(u=>u.id??"");Jn(t,c,`APPLY PATCH_ONLY table ${e.table} post-image must retain every snapshot row id in order.`),e.postImageRows.slice(t.length).some(u=>u.id!==void 0)&&X(`APPLY PATCH_ONLY table ${e.table} post-image must place every APPEND row after snapshot rows.`);return}e.operations.some(d=>d.kind==="REMOVE")||X(`APPLY FULL_SURVIVORS table ${e.table} requires a REMOVE operation.`);let n=Uo(e.removedRowIds,`${e.table} removed`);e.deletedRows!==n.length&&X(`APPLY FULL_SURVIVORS table ${e.table} deleted row count does not match removed ids.`),e.payloadRows.length!==e.postImageRows.length&&X(`APPLY FULL_SURVIVORS table ${e.table} payload/post-image row counts must match.`);let i=e.postImageRows.flatMap(d=>d.id===void 0?[]:[d.id]),o=new Set(n),s=new Set(i);for(let d of n)s.has(d)&&X(`APPLY FULL_SURVIVORS table ${e.table} has intersecting survivor/removed id ${d}.`);let a=t.filter(d=>!o.has(d));Jn(a,i,`APPLY FULL_SURVIVORS table ${e.table} must retain every survivor in snapshot order.`);let l=e.payloadRows.slice(0,i.length).map(d=>d.id??"");Jn(i,l,`APPLY FULL_SURVIVORS table ${e.table} payload must enumerate every survivor in order.`),(e.payloadRows.slice(i.length).some(d=>d.id!==void 0)||e.postImageRows.slice(i.length).some(d=>d.id!==void 0))&&X(`APPLY FULL_SURVIVORS table ${e.table} must place every APPEND row after survivors.`),e.payloadRows.some(d=>d.value===void 0)&&X(`APPLY FULL_SURVIVORS table ${e.table} requires values for every survivor.`),e.payloadRows.some((d,c)=>!Mo(d.value,e.postImageRows[c]?.value))&&X(`APPLY FULL_SURVIVORS table ${e.table} payload must contain every post-image child value.`);let p=new Set([...i,...n]);(p.size!==t.length||t.some(d=>!p.has(d)))&&X(`APPLY FULL_SURVIVORS table ${e.table} does not partition every snapshot row.`)}function Uo(e,t){let r=[...e],n=new Set;for(let i of r)i||X(`APPLY ${t} contains an empty row id.`),n.has(i)&&X(`APPLY ${t} contains duplicate row id ${i}.`),n.add(i);return r}function Jn(e,t,r){(e.length!==t.length||e.some((n,i)=>n!==t[i]))&&X(r)}function Mo(e,t){if(Object.is(e,t))return!0;if(Array.isArray(e)||Array.isArray(t))return Array.isArray(e)&&Array.isArray(t)&&e.length===t.length&&e.every((s,a)=>Mo(s,t[a]));if(e===null||t===null||typeof e!="object"||typeof t!="object")return!1;let r=e,n=t,i=Object.keys(r),o=Object.keys(n);return i.length===o.length&&i.every(s=>Object.prototype.hasOwnProperty.call(n,s)&&Mo(r[s],n[s]))}function Dl(e,t,r,n){if(typeof e!="string"||!/^\d+$/.test(e))throw new Error(`SettingsError: numberPrecision.${t} must be an integer string.`);let i=0;for(let o of e)i=i*10+o.charCodeAt(0)-48;if(i<r||i>n)throw new Error(`SettingsError: numberPrecision.${t} must be between ${r} and ${n}.`);return i}function kl(e){let t=e.numberPrecision;if(t==null||typeof t!="object")throw new Error("SettingsError: numberPrecision is missing from app settings.");let r=Dl(t.digits,"digits",1,30),n=Dl(t.decimalPlaces,"decimalPlaces",0,10),i=t.roundingMode;if(i!=="HALF_EVEN"&&i!=="UP"&&i!=="DOWN")throw new Error("SettingsError: numberPrecision.roundingMode is unsupported.");return{digits:r,decimalPlaces:n,roundingMode:i}}function Ul(e){return e.sign===0?{integerDigits:0,fractionDigits:0}:{integerDigits:Math.max(e.coefficient.length-e.scale,0),fractionDigits:Math.max(e.scale,0)}}var yf=new Set(["CHECK_BOX","MULTI_SELECT"]),Af=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT"]);function he(e,t,r){if(t.fieldType==="DATE"||t.fieldType==="TIME"||t.fieldType==="DATETIME"){let i=Sf(e);if(i!==""&&!Tf(i,t.fieldType))return{ok:!1,code:"ERR_TYPE_DATE",message:`${t.code} \u306E\u65E5\u4ED8\u30FB\u6642\u523B\u5F62\u5F0F\u304C\u4E0D\u6B63\u3067\u3059`}}let n;try{n=Fr(e,t.fieldType)}catch(i){let o=i instanceof Error?i.message:String(i);return{ok:!1,code:wf(t.fieldType),message:o}}if(t.required&&Zn(n))return{ok:!1,code:"ERR_REQUIRED",message:`${t.code} \u306F\u5FC5\u9808\u3067\u3059`};if(!Zn(n)&&t.fieldType==="NUMBER"){let i=String(n),o=Ae(i);if(o===null)return{ok:!1,code:"ERR_TYPE_NUMBER",message:`${t.code} \u306F\u6570\u5024\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`};if(t.minValue!=null&&Tn(i,t.minValue)<0)return{ok:!1,code:"ERR_RANGE_MIN",message:`${t.code} \u306F ${t.minValue} \u4EE5\u4E0A\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`};if(t.maxValue!=null&&Tn(i,t.maxValue)>0)return{ok:!1,code:"ERR_RANGE_MAX",message:`${t.code} \u306F ${t.maxValue} \u4EE5\u4E0B\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`};if(r!==void 0){let{integerDigits:s}=Ul(o),a=r.digits-r.decimalPlaces;if(s>a)return{ok:!1,code:"ERR_NUMBER_INTEGER_DIGITS",message:`${t.code} \u306E\u6574\u6570\u90E8\u306F ${s} \u6841\u3067\u3059\u3002\u8A31\u5BB9\u306F ${a} \u6841\u307E\u3067\u3067\u3059 (digits=${r.digits}, decimalPlaces=${r.decimalPlaces})`}}}if(!Zn(n)&&(t.fieldType==="DATE"||t.fieldType==="TIME"||t.fieldType==="DATETIME")&&!St(String(n),t.fieldType))return{ok:!1,code:"ERR_TYPE_DATE",message:`${t.code} \u306E\u65E5\u4ED8\u30FB\u6642\u523B\u5F62\u5F0F\u304C\u4E0D\u6B63\u3067\u3059`};if(typeof n=="string"){let i=n.length,o=t.minLength==null?null:Number(t.minLength),s=t.maxLength==null?null:Number(t.maxLength);if(Number.isFinite(o)&&i<o)return{ok:!1,code:"ERR_LENGTH_MIN",message:`${t.code} \u306F ${o} \u6587\u5B57\u4EE5\u4E0A\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`};if(Number.isFinite(s)&&i>s)return{ok:!1,code:"ERR_LENGTH_MAX",message:`${t.code} \u306F ${s} \u6587\u5B57\u4EE5\u4E0B\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`}}return!Zn(n)&&Af.has(t.fieldType)&&t.optionOrder&&(Array.isArray(n)?n.map(String):[String(n)]).some(o=>!(o in t.optionOrder))?{ok:!1,code:"ERR_CHOICE_INVALID",message:`${t.code} \u306B\u5B9A\u7FA9\u5916\u306E\u9078\u629E\u80A2\u304C\u3042\u308A\u307E\u3059`}:{ok:!0,value:n}}function Sf(e){return e==null?"":ei(e)&&e.type==="NUMBER"?G(e):ei(e)&&e.type==="STRING"?e.value:typeof e=="string"||typeof e=="number"?String(e):""}function Tf(e,t){if(t==="DATE")return St(e.replace(/\//g,"-"),"DATE");if(t==="TIME")return St(e,"TIME");let r=e.replace(/\//g,"-").replace(" ","T");return/T\d{2}:\d{2}$/.test(r)&&(r+=":00"),/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$/.test(r)?St(r.slice(0,10),"DATE")&&St(r.slice(11),"TIME"):St(r,"DATETIME")}function Fr(e,t){if(ei(e)){let n=Co(e,t);if(!n.ok)throw new Error(n.message);return n.value}if(Array.isArray(e))return e.map(n=>typeof n=="object"&&n!==null&&"code"in n?String(n.code):String(n));let r=e==null?"":String(e);if(yf.has(t)){if(r==="")return[];try{let n=JSON.parse(r);if(Array.isArray(n))return n.map(String)}catch{}return r.split(",").map(n=>n.trim())}return r}function ei(e){return typeof e=="object"&&e!==null&&typeof e.type=="string"}function Tt(e){if(e==null||e==="")return!0;if(Array.isArray(e))return e.length===0;if(ei(e)){if(e.type==="STRING")return e.value==="";if(e.type==="ARRAY")return e.elements.length===0}return!1}function Zn(e){return e===""||Array.isArray(e)&&e.length===0}function wf(e){return e==="NUMBER"?"ERR_TYPE_NUMBER":"ERR_TYPE_DATE"}function St(e,t){if(t==="TIME"){let p=/^(\d{2}):(\d{2})(?::(\d{2}))?$/.exec(e);return p!==null&&Number(p[1])<=23&&Number(p[2])<=59&&Number(p[3]??0)<=59}let r=t==="DATE"?e:e.slice(0,10),n=/^(\d{4})-(\d{2})-(\d{2})$/.exec(r);if(!n)return!1;let i=Number(n[1]),o=Number(n[2]),s=Number(n[3]),a=new Date(Date.UTC(i,o-1,s));if(a.getUTCFullYear()!==i||a.getUTCMonth()!==o-1||a.getUTCDate()!==s)return!1;if(t==="DATE")return!0;let l=e.slice(11,e.endsWith("Z")?-1:e.length-6).replace(/\.\d+$/,"");return/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(?::\d{2})?(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/.test(e)&&St(l,"TIME")}var sr=["$err_statement","$err_operation","$err_row","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id"];function xo(e,t,r){let n=new Map(r.map(i=>[i.code,i]));for(let i of e)if(i.mode==="update"){i.record??={};for(let o of t){if(!i.payload.has(o))continue;let s=i.payload.get(o),a=n.get(o).fieldType,l=["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(a)&&Array.isArray(s)&&s.every(d=>typeof d=="object"&&d!==null&&"code"in d),p=s;try{p=Fr(s,a)}catch{}i.record[o]={value:l?s:p}}}}function Fo(e,t,r,n,i,o,s,a=[],l=!0,p=!0,d={}){let c=new Map(i.map(m=>[m.code,m])),u=[],f=new Set,E=[];d.validateUpdateBuiltIns===!1&&xo(e,n,i);let R;for(let m of e){m.record??={};let g=p?[...m.preErrors]:[],y=[],T=[],A=m.mode==="create"||d.validateUpdateBuiltIns!==!1;for(let b of n){if(!m.payload.has(b))continue;let D=m.payload.get(b),P=c.get(b).fieldType,h=["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(P)&&Array.isArray(D)&&D.every(O=>typeof O=="object"&&O!==null&&"code"in O);if(!A)continue;let C=he(D,c.get(b),s);C.ok?m.record[b]={value:h?D:C.value}:y.push({field:b,code:C.code,message:C.message})}if(l&&m.mode==="create")for(let b of i){if(b.inSubtable||m.payload.has(b.code))continue;if(Tt(b.defaultValue)){let P=he("",b,s);P.ok?b.required&&y.push({field:b.code,code:"ERR_REQUIRED",message:`${b.code} \u306F\u5FC5\u9808\u3067\u3059`}):y.push({field:b.code,code:P.code,message:P.message})}else{let P=he(b.defaultValue,b,s);P.ok||y.push({field:b.code,code:P.code,message:`\u65E2\u5B9A\u5024: ${P.message}`})}}if(a.length>0){let b=m.evaluationRow??Object.fromEntries([...m.payload].map(([h,C])=>[h,ve(C)])),D=m.evaluationFieldTypes,P=h=>{let C=h.tableAlias?`${h.tableAlias}.${h.field}`:h.field;return D?.get(C)??D?.get(h.field)};try{for(let h of Vn(a,b,P))T.push({field:"",code:"ERR_CHECK",message:h.message})}catch(h){R??=h}}let N=b=>b.map(D=>{let P={};for(let h of r)P[h]=ve(m.payload.get(h));return P.$err_statement=String(o),P.$err_operation=t,P.$err_row=String(m.rowNumber),P.$err_field=D.field,P.$err_code=D.code,P.$err_message=D.message,P.$err_value="",P.$err_subtable="",P.$err_subrow="",P.$err_subrow_id="",P}),w={rowNumber:m.rowNumber,preErrors:N(g),builtInErrors:N(y),checkErrors:N(T)};E.push(w);let L=[...w.preErrors,...w.builtInErrors,...w.checkErrors];L.length>0&&f.add(m.rowNumber),u.push(...L)}if(R!==void 0)throw R;return{errors:u,invalidRows:f.size,invalidRowNumbers:f,candidateResults:E}}function ve(e){if(e==null)return"";if(typeof e=="object"&&"type"in e){let t=e;if(t.type==="NUMBER")return t.raw??String(t.value??"");if(t.type==="STRING")return String(t.value??"");if(t.type==="ARRAY")return JSON.stringify(t.elements?.map(r=>r.value)??[])}return Array.isArray(e)?JSON.stringify(e):String(e)}function Ko(e){let t=e.filter(n=>!n.inSubtable),r=new Map;for(let n of e){if(!n.inSubtable||!n.subtableCode)continue;let i=r.get(n.subtableCode)??[];i.push(n),r.set(n.subtableCode,i)}return{topLevel:t,topByCode:new Map(t.map(n=>[n.code,n])),childrenByTable:r}}function If(e){return e.required===!0||e.minValue!==void 0||e.maxValue!==void 0||e.minLength!==void 0||e.maxLength!==void 0||e.optionOrder!==void 0}function bf(e){return e.fieldType==="NUMBER"||If(e)}function ti(e,t,r){return{subtable:e,subrow:t+1,subrowId:String(r.id??"")}}function Bo(e,t){let{topByCode:r,childrenByTable:n}=Ko(t),i=bf;if(e.targets===void 0)return[...t.filter(l=>!l.inSubtable&&l.fieldType!=="SUBTABLE"&&i(l)),...t.filter(l=>l.inSubtable&&!!l.subtableCode&&i(l))].map(l=>({field:l,...l.subtableCode?{subtableCode:l.subtableCode}:{}}));let o=[],s=new Set,a=(l,p)=>{let d=p?`${p}\0${l.code}`:l.code;if(s.has(d))throw new Error(`ArgumentError: VALIDATE \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${l.code} \u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059\u3002`);if(s.add(d),!i(l))throw new Error(`ArgumentError: VALIDATE \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${l.code} \u306B\u306F\u76E3\u67FB\u53EF\u80FD\u306A\u5236\u7D04\u304C\u3042\u308A\u307E\u305B\u3093\u3002`);o.push({field:l,...p?{subtableCode:p}:{}})};for(let l of e.targets){if(l.kind==="SUBTABLE"){let c=n.get(l.subtableCode);if(!c)throw new Error(`ArgumentError: VALIDATE \u306E\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB ${l.subtableCode} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093\u3002`);if(l.children.length===0)throw new Error(`ArgumentError: VALIDATE \u306E\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB ${l.subtableCode} \u306B\u306F1\u3064\u4EE5\u4E0A\u306E\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u5FC5\u8981\u3067\u3059\u3002`);for(let u of l.children){let f=c.find(E=>E.code===u);if(!f){let E=[...n.entries()].some(([R,m])=>R!==l.subtableCode&&m.some(g=>g.code===u));throw new Error(E?`ArgumentError: VALIDATE \u306E\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${u} \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB ${l.subtableCode} \u306B\u5C5E\u3057\u3066\u3044\u307E\u305B\u3093\u3002`:`ArgumentError: VALIDATE \u306E\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${u} \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB ${l.subtableCode} \u306B\u5B58\u5728\u3057\u307E\u305B\u3093\u3002`)}a(f,l.subtableCode)}continue}let p=l.field;if(p==="$id")throw new Error("ArgumentError: VALIDATE \u3067\u306F\u30B7\u30B9\u30C6\u30E0\u30D5\u30A3\u30FC\u30EB\u30C9 $id \u3092\u76E3\u67FB\u3067\u304D\u307E\u305B\u3093\u3002");let d=r.get(p);if(d?.fieldType==="SUBTABLE"){let c=(n.get(p)??[]).filter(i);if(c.length===0)throw new Error(`ArgumentError: VALIDATE \u306E\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB ${p} \u306B\u306F\u76E3\u67FB\u53EF\u80FD\u306A\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u3042\u308A\u307E\u305B\u3093\u3002`);c.forEach(u=>a(u,p));continue}if(d){a(d);continue}throw[...n.values()].some(c=>c.some(u=>u.code===p))?new Error(`ArgumentError: VALIDATE \u306E\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${p} \u306F\u6240\u6709\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u3092\u542B\u3080 T(${p}) \u5F62\u5F0F\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`):new Error(`ArgumentError: VALIDATE \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${p} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093\u3002`)}return o}function Kr(e,t){return Tt(e)?"":ve(Fr(e,t))}var Pf=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]),Br=sr;function De(e,t=["$id"]){let r=Ko(e),n=r.topLevel.filter(o=>o.fieldType!=="SUBTABLE"&&o.fieldType!=="FILE"&&!Pf.has(o.fieldType)),i=new Map;for(let[o,s]of r.childrenByTable)i.set(o,s.filter(a=>a.fieldType!=="FILE"));return{topLevel:n,subtables:i,payloadFields:["$id",...new Set(t.filter(o=>o!=="$id"))]}}function wt(e,t){if(t.topLevel.some(r=>r.fieldType==="NUMBER"&&r.code in e))return!0;for(let[r,n]of t.subtables){if(!n.some(o=>o.fieldType==="NUMBER"))continue;let i=e[r]?.value;if(Array.isArray(i))for(let o of i){let s=o?.value;if(n.some(a=>a.fieldType==="NUMBER"&&!!s&&a.code in s))return!0}}return!1}function It(e,t,r,n,i=1,o="UPDATE"){let s=Cf(e),a=[],l=new Set,p=[...t.payloadFields,...Br],d=ve(e.$id?.value),c=(u,f,E,R)=>{l.add(i);let m={};for(let g of t.payloadFields)m[g]=g==="$id"?d:ve(e[g]?.value);m.$err_statement=String(n),m.$err_operation=o,m.$err_row=String(i),m.$err_field=u.code,m.$err_code=E.code,m.$err_message=E.message,m.$err_value=Kr(f,u.fieldType),m.$err_subtable=R?.subtable??"",m.$err_subrow=R?String(R.subrow):"",m.$err_subrow_id=R?.subrowId??"",a.push(m)};for(let u of t.topLevel){let f=e[u.code]?.value,E=he(f,u,r);E.ok?s[u.code]={value:Ml(f,u.fieldType,E.value)}:c(u,f,E)}for(let[u,f]of t.subtables){let E=e[u]?.value;if(!Array.isArray(E))continue;let R=s[u]?.value;for(let m=0;m<E.length;m++){let g=E[m],y=R[m];for(let T of f){let A=g.value?.[T.code]?.value,N=he(A,T,r);N.ok?(y.value??={},y.value[T.code]={value:Ml(A,T.fieldType,N.value)}):c(T,A,N,ti(u,m,g))}}}return{normalizedRecord:s,errors:a,columns:p,invalidRows:l.size,invalidRowNumbers:l,errorCount:a.length}}function Ml(e,t,r){return["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(t)&&Array.isArray(e)&&e.every(n=>typeof n=="object"&&n!==null&&"code"in n)?e:r}function Cf(e){let t={};for(let[r,n]of Object.entries(e)){let i=n?.value;t[r]={value:Array.isArray(i)?i.map(o=>{if(o===null||typeof o!="object")return o;let s=o;return s.value?{...s,value:Object.fromEntries(Object.entries(s.value).map(([a,l])=>[a,{...l}]))}:{...s}}):i}}return t}async function ri(e){let{statement:t,snapshots:r,fieldInfos:n,metadata:i,dmlMaxRows:o,dmlMaxSubtableRows:s,statementNumber:a=1}=e;xl(o,"dmlMaxRows"),xl(s,"dmlMaxSubtableRows");for(let T of r)Qn(T);let l=Nl(t,r,n,i),p=De(n,t.assignments.map(T=>T.field)),d=l.some(T=>wt(T.postImage,p));if(d&&!e.loadNumberPrecision)throw new Error("InternalError: APPLY number precision loader is required for NUMBER post-images.");let c=d?await e.loadNumberPrecision():void 0,u=l.map((T,A)=>It(T.postImage,p,c,a,e.parentRowNumbers?.[A]??A+1));if(!t.validateOnly){let T=u.flatMap(A=>A.errors);if(T.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:u[0]?.columns??[],errors:T})}`)}let f=l.length,E=l.reduce((T,A)=>T+A.changedSubtableRows,0),R=f>o||E>s;if(!t.validateOnly&&f>o)throw new Error(`ArgumentError: APPLY parent rows (${f}) exceed dmlMaxRows (${o}).`);if(!t.validateOnly&&E>s)throw new Error(`ArgumentError: APPLY changed subtable rows (${E}) exceed dmlMaxSubtableRows (${s}).`);let m=l.map((T,A)=>Xn(T,u[A].normalizedRecord)),g=m.flatMap(T=>xr(T).records),y=u.map(T=>({errors:T.errors,columns:T.columns,invalidRows:T.invalidRows,errorCount:T.errorCount}));return Fl({plans:m,records:g,validations:y,guards:{revisionRequired:!0,parentRows:f,dmlMaxRows:o,subtableRows:E,dmlMaxSubtableRows:s,wouldExceed:R}})}function xl(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function Fl(e,t=new Set){if(e===null||typeof e!="object"||t.has(e))return e;t.add(e);for(let r of Object.values(e))Fl(r,t);return Object.freeze(e)}var $o=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function ni(e,t){if(new Set(e.fields).size!==e.fields.length)return ke("DML target fields contain duplicates.");let r=new Map(t.map(o=>[o.code,o]));for(let o of e.fields)Kl(o,null,r);let n=new Map,i=new Map;for(let o of e.applyBlocks??[]){if(n.has(o.field))return ke(`APPLY has more than one block for table ${o.field}.`);let s=t.find(l=>l.code===o.field&&!l.inSubtable);if(!s||s.fieldType!=="SUBTABLE")return ke(`APPLY target ${o.field} is not a SUBTABLE.`);let a=new Map(t.filter(l=>l.inSubtable&&l.subtableCode===o.field).map(l=>[l.code,l]));n.set(o.field,s),i.set(o.field,a);for(let l of o.operations){if(l.kind!=="APPEND")return ke(`APPLY INSERT supports APPEND only (${l.kind}).`);let p=new Set;for(let d of l.fields){if(p.has(d))return ke(`APPLY APPEND specifies child ${d} more than once.`);p.add(d),Kl(d,o.field,r,a)}for(let d of l.values)if(d.length!==l.fields.length)return ke(`APPLY APPEND for ${o.field} has ${d.length} values for ${l.fields.length} fields.`)}}return{targetTables:n,targetMultiValueFields:new Map,childrenByTable:i,fieldsByCode:r}}function Nf(e,t,r=ni(e,t),n){let i=new Map(t.map(a=>[a.code,a.fieldType])),o=Hn(e,i).flatMap(a=>a.records);if(n&&n.length!==o.length)throw new Error("InternalError: APPLY create parent row number count differs from VALUES rows.");let s=(e.applyBlocks??[]).map(a=>{let l=r.childrenByTable.get(a.field),p=a.operations.flatMap(d=>vo(d,l,a.field));return{table:a.field,rows:p,addedRows:p.length}});return o.map((a,l)=>{let p={};for(let c of t)c.inSubtable||c.fieldType==="SUBTABLE"||c.fieldType==="FILE"||c.writable===!1||$o.has(c.fieldType)||(p[c.code]=a[c.code]??{value:Do(c)});let d={...a};for(let c of s){let u=c.rows.map(f=>({value:f.value}));p[c.table]={value:u},d[c.table]={value:u}}return{parentRowNumber:n?.[l]??l+1,tables:s,postImage:p,record:d}})}async function $r(e){let{statement:t,fieldInfos:r,dmlMaxRows:n,dmlMaxSubtableRows:i,statementNumber:o=1}=e;Bl(n,"dmlMaxRows"),Bl(i,"dmlMaxSubtableRows");let s=e.metadata??ni(t,r),a=Nf(t,r,s,e.parentRowNumbers),l=r.filter(A=>A.fieldType==="SUBTABLE"||A.fieldType!=="FILE"&&A.writable!==!1&&!$o.has(A.fieldType)),p=De(l,t.fields),d=a.some(A=>wt(A.postImage,p));if(d&&!e.loadNumberPrecision)throw new Error("InternalError: APPLY number precision loader is required for NUMBER post-images.");let c=d?await e.loadNumberPrecision():void 0,u=a.map(A=>It(A.postImage,p,c,o,A.parentRowNumber,"INSERT"));if(!t.validateOnly){let A=u.flatMap(N=>N.errors);if(A.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:u[0]?.columns??[],errors:A})}`)}let f=a.length,E=a.reduce((A,N)=>A+N.tables.reduce((w,L)=>w+L.addedRows,0),0),R=f>n||E>i;if(!t.validateOnly&&f>n)throw new Error(`ArgumentError: APPLY parent rows (${f}) exceed dmlMaxRows (${n}).`);if(!t.validateOnly&&E>i)throw new Error(`ArgumentError: APPLY changed subtable rows (${E}) exceed dmlMaxSubtableRows (${i}).`);let m=a.map((A,N)=>{let w=u[N].normalizedRecord,L={};for(let b of t.fields)L[b]=w[b];for(let b of A.tables){let D=w[b.table]?.value;L[b.table]={value:b.rows.map((P,h)=>({value:Object.fromEntries(Object.keys(P.value).map(C=>[C,D[h]?.value?.[C]??P.value[C]]))}))}}return{...A,postImage:w,record:L}}),g=m.map(A=>A.record),y=[];for(let A=0;A<g.length;A+=100)y.push({app:t.appId,records:g.slice(A,A+100)});let T=u.map(A=>({errors:A.errors,columns:A.columns,invalidRows:A.invalidRows,errorCount:A.errorCount}));return $l({applyBlocks:t.applyBlocks??[],candidates:m,records:g,batches:y,validations:T,guards:{revisionRequired:!1,parentRows:f,dmlMaxRows:n,subtableRows:E,dmlMaxSubtableRows:i,wouldExceed:R}})}function Kl(e,t,r,n){if(e.startsWith("_")||e.startsWith("$"))return ke(`APPLY assignment target ${e} is a system field.`);let i=t===null?[...r.values()].find(o=>o.code===e&&!o.inSubtable):n?.get(e);if(!i){let o=r.get(e);return t!==null&&o?.inSubtable?ke(`APPLY child ${e} does not belong to subtable ${t}.`):ke(`APPLY ${t===null?"parent field":"child"} ${e} does not exist.`)}if(i.fieldType==="SUBTABLE"||i.fieldType==="FILE"||i.writable===!1||$o.has(i.fieldType))return ke(`APPLY assignment target ${e} is not writable (${i.fieldType}).`)}function Bl(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function ke(e){throw new Error(`ArgumentError: ${e}`)}function $l(e,t=new Set){if(e===null||typeof e!="object"||t.has(e))return e;t.add(e);for(let r of Object.values(e))$l(r,t);return Object.freeze(e)}async function Vl(e){let{statement:t,matches:r,fieldInfos:n,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:s=1}=e;Gl(i,"dmlMaxRows"),Gl(o,"dmlMaxSubtableRows"),Df(t,r);let a=r.filter(g=>g.targetId===void 0),l=r.filter(g=>g.targetId!==void 0),p=Of(t,a.map(g=>g.sourceRowIndex)),d=await $r({statement:p,fieldInfos:n,metadata:ni(p,n),dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:s,parentRowNumbers:a.map(g=>g.sourceRowIndex+1),loadNumberPrecision:e.loadNumberPrecision}),c=[],u=new Set;for(let g of l){let y=g.targetId;u.has(y)&&Go(`UPSERT APPLY resolves more than one source row to parent $id ${y}.`),u.add(y),g.snapshot||Go(`UPSERT APPLY snapshot for parent $id ${y} is missing.`);let T=Number(g.snapshot.$id?.value);T!==y&&Go(`UPSERT APPLY snapshot $id ${T} does not match target $id ${y}.`);let A=Lf(t,g.sourceRowIndex,y),N=A.applyBlocks?.length?qe(A,n):_f(n);c.push(await ri({statement:A,snapshots:[g.snapshot],fieldInfos:n,metadata:N,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:s,parentRowNumbers:[g.sourceRowIndex+1],loadNumberPrecision:e.loadNumberPrecision}))}let f=vf(c,i,o),E=d.guards.parentRows+f.guards.parentRows,R=d.guards.subtableRows+f.guards.subtableRows,m=E>i||R>o;if(!t.validateOnly){let g=[...d.validations.flatMap(y=>y.errors),...f.validations.flatMap(y=>y.errors)];if(g.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:d.validations[0]?.columns??f.validations[0]?.columns??[],errors:g})}`)}if(!t.validateOnly&&E>i)throw new Error(`ArgumentError: APPLY parent rows (${E}) exceed dmlMaxRows (${i}).`);if(!t.validateOnly&&R>o)throw new Error(`ArgumentError: APPLY changed subtable rows (${R}) exceed dmlMaxSubtableRows (${o}).`);return Vo({create:d,update:f,createBatches:d.batches,updateBatches:kf(f.records,t.appId),guards:{revisionRequired:f.guards.parentRows>0,parentRows:E,dmlMaxRows:i,subtableRows:R,dmlMaxSubtableRows:o,wouldExceed:m,create:d.guards,update:f.guards}})}function Of(e,t){return{type:"INSERT",appId:e.appId,fields:[...e.fields],values:t.map(r=>e.values[r]),applyBlocks:e.onInsertApplyBlocks??[],validateOnly:!0}}function Lf(e,t,r){let n=e.fields.map((i,o)=>({field:i,value:e.values[t][o]}));return{type:"UPDATE",appId:e.appId,subtableCode:null,assignments:n,from:null,where:{type:"BINARY",op:"=",left:{type:"FIELD",tableAlias:null,field:"$id"},right:{type:"NUMBER",value:r,raw:String(r)}},applyBlocks:e.onUpdateApplyBlocks??[],validateOnly:!0}}function _f(e){return{targetTables:new Map,targetMultiValueFields:new Map,childrenByTable:new Map,fieldsByCode:new Map(e.map(t=>[t.code,t]))}}function vf(e,t,r){let n=e.flatMap(a=>a.plans),i=e.flatMap(a=>a.records),o=e.flatMap(a=>a.validations),s=n.reduce((a,l)=>a+l.changedSubtableRows,0);return Vo({plans:n,records:i,validations:o,guards:{revisionRequired:!0,parentRows:n.length,dmlMaxRows:t,subtableRows:s,dmlMaxSubtableRows:r,wouldExceed:n.length>t||s>r}})}function Df(e,t){if(t.length!==e.values.length)throw new Error("InternalError: UPSERT APPLY match count differs from VALUES rows.");let r=new Set;for(let n of t){if(!Number.isSafeInteger(n.sourceRowIndex)||n.sourceRowIndex<0||n.sourceRowIndex>=e.values.length||r.has(n.sourceRowIndex))throw new Error("InternalError: UPSERT APPLY matches must cover each source row exactly once.");r.add(n.sourceRowIndex)}}function kf(e,t){let r=[];for(let n=0;n<e.length;n+=100)r.push({app:t,records:e.slice(n,n+100)});return r}function Gl(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function Go(e){throw new Error(`ArgumentError: ${e}`)}function Vo(e,t=new Set){if(e===null||typeof e!="object"||t.has(e))return e;t.add(e);for(let r of Object.values(e))Vo(r,t);return Object.freeze(e)}function Vr(e){return ar("UPDATE",[Yl(e)])}function Wo(e){return ar("INSERT",[Hl(e)])}function Ho(e){return ar("UPSERT",[Hl(e.create),Yl(e.update)])}function Ie(e,t){let r=t.failedBranch?.toLowerCase(),n=e.branches.map(i=>{let o=e.statementKind==="UPSERT"?i.branch==="insert"?t.successfulInserts:t.successfulUpdates:t.successfulParents,s=e.statementKind==="UPSERT"?i.branch==="insert"?t.successfulInsertChunks:t.successfulUpdateChunks:t.successfulChunks,a=r===i.branch;return{...i,...o!==void 0?{successfulParents:o}:{},chunk:{...i.chunk,...s!==void 0?{successfulChunks:s}:{},...a&&t.failedChunkIndex!==void 0?{failedChunkIndex:t.failedChunkIndex}:{},...a&&t.failedStage!==void 0?{failedStage:t.failedStage}:{}}}});return{...e,branches:n,partialSuccess:{possible:!0,successfulParents:t.successfulParents,successfulChunks:t.successfulChunks,...r?{failedBranch:r}:{},...t.retryAttempted!==void 0?{retryAttempted:t.retryAttempted}:{}}}}function oi(e,t,r){return e.type==="UPDATE"?ar("UPDATE",[ii("update",e.applyBlocks??[],null,!0,t,r)]):e.type==="INSERT"?ar("INSERT",[ii("insert",e.applyBlocks??[],e.values.length,!1,t,r)]):ar("UPSERT",[ii("insert",e.onInsertApplyBlocks??[],null,!1,t,r),ii("update",e.onUpdateApplyBlocks??[],null,!0,t,r)])}function ar(e,t){return{statementKind:e,branches:t,nonTransactional:!0,partialSuccess:{possible:!0}}}function Hl(e){let t=new Map;if(e.applyBlocks)for(let r of e.applyBlocks){let n=r.operations.map(i=>{if(i.kind!=="APPEND")throw new Error(`InternalError: prepared APPLY INSERT contains ${i.kind}.`);let o=i.values.length*e.guards.parentRows;return{kind:"APPEND",count:o,addedRows:o}});t.set(r.field,{targetKind:r.targetKind,field:r.field,operations:n,changedCount:n.reduce((i,o)=>i+(o.addedRows??0),0)})}else for(let r of e.candidates)for(let n of r.tables){let i=t.get(n.table),o=i?.operations[0]?.addedRows??0;t.set(n.table,{targetKind:"SUBTABLE",field:n.table,operations:[{kind:"APPEND",count:o+n.addedRows,addedRows:o+n.addedRows}],changedCount:(i?.changedCount??0)+n.addedRows})}return{branch:"insert",parentRows:e.guards.parentRows,targets:[...t.values()],guards:e.guards,chunk:{size:100,plannedChunks:e.batches.length},deletedParentRows:0}}function Yl(e){let t=new Map,r=0;for(let n of e.plans){let i=!1;for(let o of n.tables){let s=t.get(o.table);t.set(o.table,{targetKind:"SUBTABLE",field:o.table,operations:Wl(s?.operations,o.operations.map(a=>({...a,count:a.kind==="PATCH"?a.changedRows:a.kind==="APPEND"?a.addedRows:a.removedRows}))),changedCount:(s?.changedCount??0)+o.changedSubtableRows}),i||=o.deletedRows>0}for(let o of n.multiValues){let s=t.get(o.field),a={parentId:n.parentId,value:o.postImageValue};t.set(o.field,{targetKind:"MULTI_VALUE",field:o.field,fieldType:o.fieldType,operations:Wl(s?.operations,o.operations.map(l=>({kind:l.kind,value:l.value,count:l.changed?1:0,changed:l.changed}))),changedCount:(s?.changedCount??0)+o.changedValues,postImages:[...s?.postImages??[],a]})}i&&(r+=1)}return{branch:"update",parentRows:e.guards.parentRows,targets:[...t.values()],guards:e.guards,chunk:{size:100,plannedChunks:Math.ceil(e.records.length/100)},deletedParentRows:r}}function Wl(e,t){return e?t.map((r,n)=>{let i=e[n];if(!i||i.kind!==r.kind||i.value!==r.value)throw new Error("InternalError: APPLY diagnostic operation shape differs between parents.");return{...r,...i.changed!==void 0?{changed:i.changed}:{},count:Gr(i.count,r.count),...r.matchedRows!==void 0?{matchedRows:Gr(i.matchedRows,r.matchedRows)}:{},...r.changedRows!==void 0?{changedRows:Gr(i.changedRows,r.changedRows)}:{},...r.addedRows!==void 0?{addedRows:Gr(i.addedRows,r.addedRows)}:{},...r.removedRows!==void 0?{removedRows:Gr(i.removedRows,r.removedRows)}:{}}}):t.map(r=>({...r}))}function Gr(e,t){return e==null||t===null?null:e+t}function ii(e,t,r,n,i,o){let s=t.map(d=>{let c=d.operations.map(f=>Uf(f,r)),u=c.every(f=>f.count!==null)?c.reduce((f,E)=>f+E.count,0):null;return{targetKind:d.targetKind,field:d.field,operations:c,changedCount:u}}),a=s.filter(d=>d.targetKind==="SUBTABLE"),l=a.every(d=>d.changedCount!==null)?a.reduce((d,c)=>d+c.changedCount,0):null,p=r===null||l===null?null:r>i||l>o;return{branch:e,parentRows:r,targets:s,guards:{revisionRequired:n,parentRows:r,dmlMaxRows:i,subtableRows:l,dmlMaxSubtableRows:o,wouldExceed:p},chunk:{size:100,plannedChunks:r===null?null:Math.ceil(r/100)},deletedParentRows:e==="insert"?0:null}}function Uf(e,t){if(e.kind==="APPEND"){let r=t===null?null:e.values.length*t;return{kind:e.kind,count:r,addedRows:r}}return e.kind==="PATCH"?{kind:e.kind,count:null,matchedRows:null,changedRows:null}:e.kind==="REMOVE"?{kind:e.kind,count:null,removedRows:null}:{kind:e.kind,value:e.value,count:null}}var ze=class extends Error{constructor(t,r){let n=r instanceof Error?r.message:String(r),i=t.failedStage==="POST_CHUNK"?"POST":"PUT",o=t.failedBranch?` UPSERT ${t.failedBranch}`:"";super(`ApplyWritePartialFailureError: APPLY${o} ${i} chunk ${t.failedChunkIndex+1} failed (index ${t.failedChunkIndex}) after ${t.successfulChunks} successful chunk(s) and ${t.successfulParents} successful parent(s); writes are non-transactional and were not retried. Cause: ${n}`),this.name="ApplyWritePartialFailureError",this.partialSuccess=t,this.cause=r}};async function jl(e,t,r){Ht("phase10c");let n=vl(e),i=0,o=0;for(let s=0;s<n.length;s+=1){let a=n[s];try{await t.putRecords(a)}catch(l){throw new ze({successfulChunks:i,successfulParents:o,failedChunkIndex:s,failedStage:"PUT_CHUNK",nonTransactional:!0,retryAttempted:!1,...r?{diagnostic:Ie(r,{successfulChunks:i,successfulParents:o,failedChunkIndex:s,failedStage:"PUT_CHUNK",failedBranch:"UPDATE",retryAttempted:!1})}:{}},l)}i+=1,o+=a.records.length}return{type:"UPDATE",updatedCount:o,successfulChunks:i,successfulParents:o,nonTransactional:!0}}async function ql(e,t,r){Ht("phase13c");let n=[],i=0,o=0;for(let s=0;s<e.batches.length;s+=1){let a=e.batches[s];try{let l=await t.postRecords({app:a.app,records:[...a.records]});n.push(l.ids)}catch(l){throw new ze({successfulChunks:i,successfulParents:o,failedChunkIndex:s,failedStage:"POST_CHUNK",nonTransactional:!0,retryAttempted:!1,...r?{diagnostic:Ie(r,{successfulChunks:i,successfulParents:o,failedChunkIndex:s,failedStage:"POST_CHUNK",failedBranch:"INSERT",retryAttempted:!1})}:{}},l)}i+=1,o+=a.records.length}return{type:"INSERT",createdIds:n,insertedCount:o,successfulChunks:i,successfulParents:o,nonTransactional:!0}}async function zl(e,t,r){Ht("phase14c");let n=[],i=0,o=0,s=0,a=0;for(let l=0;l<e.createBatches.length;l+=1){let p=e.createBatches[l];try{let d=await t.postRecords({app:p.app,records:[...p.records]});n.push(d.ids)}catch(d){throw new ze({successfulChunks:i+o,successfulParents:s+a,successfulInserts:s,successfulUpdates:a,failedChunkIndex:l,failedBranch:"INSERT",failedStage:"POST_CHUNK",nonTransactional:!0,retryAttempted:!1,...r?{diagnostic:Ie(r,{successfulChunks:i+o,successfulParents:s+a,successfulInserts:s,successfulUpdates:a,successfulInsertChunks:i,successfulUpdateChunks:o,failedChunkIndex:l,failedStage:"POST_CHUNK",failedBranch:"INSERT",retryAttempted:!1})}:{}},d)}i+=1,s+=p.records.length}for(let l=0;l<e.updateBatches.length;l+=1){let p=e.updateBatches[l];try{await t.putRecords({app:p.app,records:[...p.records]})}catch(d){throw new ze({successfulChunks:i+o,successfulParents:s+a,successfulInserts:s,successfulUpdates:a,failedChunkIndex:l,failedBranch:"UPDATE",failedStage:"PUT_CHUNK",nonTransactional:!0,retryAttempted:!1,...r?{diagnostic:Ie(r,{successfulChunks:i+o,successfulParents:s+a,successfulInserts:s,successfulUpdates:a,successfulInsertChunks:i,successfulUpdateChunks:o,failedChunkIndex:l,failedStage:"PUT_CHUNK",failedBranch:"UPDATE",retryAttempted:!1})}:{}},d)}o+=1,a+=p.records.length}return{type:"UPSERT",createdIds:n,insertedCount:s,updatedCount:a,successfulChunks:i+o,successfulParents:s+a,successfulInsertChunks:i,successfulUpdateChunks:o,nonTransactional:!0}}function Xl(e,t){let r=ne(e);return r.type!=="GROUPING_SETS"?null:{source:r.source,expandedSetCount:r.sets.length,groupingItemCount:t??r.allItems.length,setLimit:64,itemLimit:16,outputRowLimit:5e4}}function Ue(e){if(e===null)return!1;switch(e.type){case"BINARY":return si(e.left);case"NULL_CHECK":return si(e.field);case"LOGICAL":return Ue(e.left)||Ue(e.right);case"NOT":case"GROUP":return Ue(e.expr);case"EXISTS":case"BOOLEAN":return!1}}function si(e){if(Array.isArray(e))return e.some(si);if(e===null||typeof e!="object")return!1;let t=e;return t.type==="FIELD"?t.field!=="$id":t.type==="SELECT"?!1:Object.values(t).some(si)}async function Ce(e,t,r,n,i){let o=await Ee(e,t,r,n,{maxRecords:i.maxRecords,parallel:i.parallel,onLimit:i.onLimit??"error",onTruncate:i.onTruncate,onSearchAborted:i.onSearchAborted});return{records:o,metrics:{fetchedRows:o.length}}}async function ai(e,t,r,n){let{records:i,metrics:o}=await Ce(e,t,r,["$id"],n);return{ids:ea(i),metrics:o}}function jo(e,t){let r=oo(e,{allowUnqualifiedFields:!0,allowKlike:!0,fieldTypes:t.fieldTypes,fieldOptions:t.fieldOptions});return{prefilter:r.condition,appliedKlikes:r.appliedKlikes,unappliedKlikes:r.allKlikes.filter(n=>!r.appliedKlikes.has(n))}}function Mf(e,t){return e.key.type==="FIELD_NAME"?t.get(e.key.name):void 0}function xf(e,t){return e.columns.some(r=>"alias"in r&&r.alias===t)}function Wr(e){let{stmt:t}=e,r=[],n=t.columns.flatMap(s=>s.type==="WINDOW_COL"?s.orderBy:[]),i=[...t.orderBy,...n];for(let s of i){if(s.key.type!=="FIELD_NAME")continue;let a=Mf(s,e.orderSemantics);if(!a){r.push("ORDER_KEY_UNRESOLVED");continue}a.fieldType==="KSQL_AMBIGUOUS"?r.push("ORDER_KEY_AMBIGUOUS"):a.compareMode==="unsupported"&&r.push("ORDER_KEY_UNSUPPORTED")}if(r.includes("ORDER_KEY_AMBIGUOUS"))throw new Error("ArgumentError: ORDER BY key is an ambiguous column reference (reason=ORDER_KEY_AMBIGUOUS). Qualify the key with its table alias.");if(r.includes("ORDER_KEY_UNSUPPORTED")||r.includes("ORDER_KEY_UNRESOLVED")){let s=r.includes("ORDER_KEY_UNSUPPORTED")?"ORDER_KEY_UNSUPPORTED":"ORDER_KEY_UNRESOLVED";throw new Error(`ArgumentError: ORDER BY key has no canonical comparison contract (reason=${s}).`)}return t.orderBy.length>0&&n.length===0&&t.orderBy.every(s=>s.key.type==="FIELD_NAME"&&s.key.name==="$id"&&!xf(t,s.key.name))||r.push("ORDER_KEY_NOT_REST_EQUIVALENT"),e.whereCapability!=="EXACT_PUSHDOWN"&&r.push("WHERE_NOT_EXACT"),e.staticMode!=="SIMPLE"&&r.push("QUERY_SHAPE_LOCAL"),(t.limit===null||t.limit<0||t.limit>500)&&r.push("LIMIT_NOT_REST_WINDOW"),((t.offset??0)<0||(t.offset??0)>1e4)&&r.push("OFFSET_NOT_REST_WINDOW"),t.limit!==null&&t.limit>e.maxRecords&&r.push("MAX_RECORDS_WINDOW"),e.hasKlike&&r.push("KLIKE_NOT_REST_WINDOW"),r.length===0?{kind:"CANONICAL_REST_TOP_N",requiresCompleteInput:!1,localOrderBy:!1,applyLocalOffsetLimit:!1,reasonCodes:[]}:{kind:"CANONICAL_LOCAL",requiresCompleteInput:i.length>0,localOrderBy:t.orderBy.length>0,applyLocalOffsetLimit:t.orderBy.length>0,reasonCodes:[...new Set(r)]}}var Ff=new Set(["RECORD_NUMBER","SINGLE_LINE_TEXT","NUMBER","CALC","DATE","DATETIME","TIME","CREATED_TIME","UPDATED_TIME","DROP_DOWN","RADIO_BUTTON","STATUS","LINK","CREATOR","MODIFIER"]);function Kf(e,t){return e.columns.some(r=>"alias"in r&&r.alias===t)}function Hr(e){let{stmt:t}=e,r=[];t.orderMode!=="KINTONE_NATIVE"&&r.push("KORDER_MODE_REQUIRED"),(t.from.cteName!==null||t.from.subtableCode||e.staticMode!=="SIMPLE")&&r.push("KORDER_QUERY_SHAPE_UNSUPPORTED"),e.whereCapability!=="EXACT_PUSHDOWN"&&r.push("KORDER_WHERE_NOT_EXACT"),e.hasKlike&&r.push("KORDER_KLIKE_UNSUPPORTED"),t.orderBy.length===0&&r.push("KORDER_KEY_REQUIRED");for(let a of t.orderBy){if(a.key.type!=="FIELD_NAME"){r.push(`KORDER_KEY_NOT_DIRECT_FIELD(key=${a.key.type})`);continue}let l=a.key.name,p=e.orderSemantics.get(l);if(!p){r.push(`KORDER_KEY_UNRESOLVED(field=${l})`);continue}if(Kf(t,l)){r.push(`KORDER_KEY_NOT_DIRECT_FIELD(field=${l})`);continue}if(l!=="$id"){if(!p.source||p.source.fieldCode!==l){r.push(`KORDER_KEY_NOT_DIRECT_FIELD(field=${l})`);continue}Ff.has(p.fieldType)||r.push(`KORDER_TYPE_UNSUPPORTED(field=${l}, type=${p.fieldType})`)}}(t.limit===null||!Number.isSafeInteger(t.limit)||t.limit<0)&&r.push(`KORDER_LIMIT_INVALID(limit=${String(t.limit)})`);let n=t.offset??0;(!Number.isSafeInteger(n)||n<0)&&r.push(`KORDER_OFFSET_INVALID(offset=${n})`);let i=t.limit===null?Number.NaN:n+t.limit;t.limit!==null&&!Number.isSafeInteger(i)&&r.push(`KORDER_SCAN_ROWS_INVALID(offset=${n}, limit=${t.limit})`);let o=[...new Set(r)];if(o.length>0)throw new Error(`ArgumentError: KORDER BY cannot be executed (mode=KINTONE_NATIVE; ${o.join(", ")}). Use ORDER BY for canonical local ordering or simplify the query.`);let s=t.limit<=500&&n<=1e4&&t.limit<=e.maxRecords;if(!s&&i>e.maxRecords)throw new Error(`ArgumentError: KORDER BY cannot be executed (mode=KINTONE_NATIVE; KORDER_SCAN_ROWS_EXCEEDS_MAX_RECORDS(scanRows=${i}, maxRecords=${e.maxRecords})). Use ORDER BY for canonical local ordering, raise maxRecords, or reduce LIMIT/OFFSET.`);return{kind:s?"KORDER_NATIVE":"KORDER_CURSOR",requiresCompleteInput:!1,localOrderBy:!1,applyLocalOffsetLimit:!1,reasonCodes:[],scanRows:i}}var li=class extends Error{constructor(t,r,n){super(`CursorCapacityError: host=${t} \u306E active cursor \u4E0A\u9650 ${r} \u306B ${n}ms \u4EE5\u5185\u3067\u7A7A\u304D\u304C\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002`),this.name="CursorCapacityError"}},ui=class extends Error{constructor(t){super("CursorCreateOutcomeUnknownError: Create Cursor \u306E\u6210\u5426\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093\u3002\u81EA\u52D5\u518D\u8A66\u884C\u305B\u305A\u3001\u6700\u592710\u5206+\u5B89\u5168\u4F59\u88D5\u306E\u9593\u306F\u67A0\u3092\u9694\u96E2\u3057\u307E\u3059\u3002"),this.name="CursorCreateOutcomeUnknownError",this.cause=t}},ci=class extends Error{constructor(t){let r=t instanceof Error?t.message:String(t);super(`CursorCleanupWarning: Cursor \u306E\u89E3\u653E\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093\u3002\u7D50\u679C\u306F\u6709\u52B9\u3067\u3059\u304C\u3001\u6700\u592710\u5206+\u5B89\u5168\u4F59\u88D5\u306E\u9593\u306F\u67A0\u3092\u9694\u96E2\u3057\u307E\u3059\u3002\u8A73\u7D30: ${r}`),this.name="CursorCleanupWarning",this.cause=t}};async function Jl(e){let t=await e.client.openCursor({app:e.app,fields:e.fields.length>0?e.fields:void 0,query:e.query,size:500}),r=[],n=0,i,o;try{if(t.totalCount>e.offset)for(;r.length<e.limit;){let s=await t.nextPage();for(let a of s.records)if(n<e.offset)n+=1;else if(r.length<e.limit)r.push(a);else break;if(!s.next)break}}catch(s){throw i=s,s}finally{try{await t.close()}catch(s){i&&i instanceof Error?Object.defineProperty(i,"cursorCleanupError",{value:s,configurable:!0}):o=new ci(s).message}}return{records:r,cleanupWarning:o}}function qo(e){let t=[];e.where&&t.push(W(e.where));let r=e.orderBy.map(n=>{if(n.key.type!=="FIELD_NAME")throw new Error("ArgumentError: KORDER cursor key must be a direct field.");return`${n.key.name} ${n.direction==="ASC"?"asc":"desc"}`});return t.push(`order by ${r.join(", ")}`),t.join(" ")}function Xe(e,t){let r={};for(let[n,i]of Object.entries(e)){let o=i.value,s=o==null?"":typeof o=="string"?o:JSON.stringify(o);t&&(r[`${t}.${n}`]=s),r[n]=s}return r}function Bf(e,t,r,n={}){let{on:i,type:o}=r,s=i.left.tableAlias?`${i.left.tableAlias}.${i.left.field}`:i.left.field,a=i.right.tableAlias?`${i.right.tableAlias}.${i.right.field}`:i.right.field;if(Ql(e,s,n.leftColumns),Ql(t,a,n.rightColumns),o==="RIGHT"){let c=new Map;for(let E of e){let R=E[s]??"",m=c.get(R);m?m.push(E):c.set(R,[E])}let u={};for(let E of n.leftColumns??Object.keys(e[0]??{}))u[E]="";let f=[];for(let E of t){let R=E[a]??"",m=c.get(R)??[];if(m.length>0)for(let g of m)f.push({...g,...E});else f.push({...u,...E})}return f}let l=new Map;for(let c of t){let u=c[a]??"",f=l.get(u);f?f.push(c):l.set(u,[c])}let p=[],d={};for(let c of n.rightColumns??Object.keys(t[0]??{}))d[c]="";for(let c of e){let u=c[s]??"",f=l.get(u)??[];if(f.length>0)for(let E of f)p.push({...c,...E});else o==="LEFT"&&p.push({...c,...d})}return p}function Ql(e,t,r){if(e.length>0?e.some(i=>!Object.prototype.hasOwnProperty.call(i,t)):r!==void 0&&!r.includes(t))throw new Error(`ArgumentError: JOIN key ${t} is not available in the materialized table.`)}function $f(e,t,r,n,i){return t===null?e:e.filter(o=>q(t,o,r,n,i))}function ou(e){return e.some(t=>t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"||t.type==="STRFUNC_COL"&&Yr(t.expr)||t.type==="SCALAR_VALUE_COL"&&ct(t.expr))}function Gf(e,t,r,n){let i=new Map;for(let s of e){let a=t.map(p=>Wf(p,s)).join("\0"),l=i.get(a);l?l.push(s):i.set(a,[s])}i.size===0&&t.length===0&&ou(r)&&i.set("",[]);let o=[];for(let s of i.values()){let a={...s[0]};for(let l of t)l.type==="ARITH_KEY"?a[ts(l.expr)]=String(ee(l.expr,s[0])):l.type==="FUNC_KEY"&&(a[pt(l.expr)]=te(l.expr,s[0]));su(a,s,r,n),o.push(a)}return o}function Vf(e,t,r,n,i={}){let o=[],s=0,a=()=>{if(s++,i.maxGeneratedRows!==void 0&&s>i.maxGeneratedRows)throw new Error(`LimitError: B65 generated grouping rows ${s} exceed limit ${i.maxGeneratedRows} (reason=GROUPING_OUTPUT_LIMIT_EXCEEDED).`)};for(let l of t.sets){let p={children:new Map},d=[];for(let u of e){let f=p;for(let E of l.items){let R=Zl(E,u),m=f.children.get(R);m||(m={children:new Map},f.children.set(R,m)),f=m}f.rows||(a(),f.rows=[],d.push(f.rows)),f.rows.push(u)}e.length===0&&l.items.length===0&&(a(),p.rows=[],d.push(p.rows));let c=new Set(l.items.map(u=>u.canonicalId));for(let u of d){let f={...u[0]},E=new Map;for(let R of l.items)E.has(R.canonicalId)||E.set(R.canonicalId,Zl(R,u[0]));for(let R of t.allItems){let m=E.get(R.canonicalId)??"";f[R.directKey]=m,R.unqualifiedBridgeKey!==null&&(f[R.unqualifiedBridgeKey]=m)}su(f,u,r,n),Ba(f,c),o.push(f)}}return o}function Zl(e,t){return t?t[e.directKey]??(e.unqualifiedBridgeKey===null?void 0:t[e.unqualifiedBridgeKey])??"":""}function su(e,t,r,n){for(let i of r)if(i.type==="AGGREGATE"){let o=Se(i.func,i.distinct,i.arg),s=String(Jo(i.func,i.distinct,i.arg,i.separator,t,n));e[i.alias??o]=s,i.alias&&(e[o]=s)}else if(i.type==="ARITH_AGG_COL"){let o=i.alias??lr(i.expr);e[o]=String(pi(i.expr,t,n))}else if(i.type==="STRFUNC_COL"&&Yr(i.expr)){let o=i.alias??pt(i.expr),s=rs(i.expr,t,n);e[o]=te(s,e)}else if(i.type==="SCALAR_VALUE_COL"&&ct(i.expr)){let o=i.alias??Me(i.expr),s=di(i.expr,t,n);e[o]=String(se(s,e))}}function Wf(e,t){return e.type==="FIELD_NAME"?t[e.name]??"":e.type==="FUNC_KEY"?te(e.expr,t):String(ee(e.expr,t))}function Jo(e,t,r,n,i,o){if(r.type==="WILDCARD")return e==="COUNT"?i.length:0;let s=[];for(let f of i){let E;if(r.type==="FIELD_REF"){let R=f[r.field];if(R===void 0||R===""&&e!=="MIN"&&e!=="MAX")continue;E=R}else if(r.type==="ARITH"||r.type==="NUMBER"||r.type==="STRING_FUNC"){let R=ee(r,f);if(isNaN(R))continue;E=String(R)}else{let R=lt(r,f);if(R===null||R===""&&e!=="MIN"&&e!=="MAX"||typeof R=="number"&&Number.isNaN(R))continue;E=String(R)}s.push(E)}let a=e==="STDDEV_POP"||e==="STDDEV_SAMP"||e==="VAR_POP"||e==="VAR_SAMP"||e==="MEDIAN",l=a?s.map(f=>{let E=Number(f);if(!Number.isFinite(E))throw new Error(`ArgumentError: ${e} \u306E\u5F15\u6570\u306B\u975E\u6570\u5024\u307E\u305F\u306F\u975E\u6709\u9650\u306E\u5024\u304C\u3042\u308A\u307E\u3059: ${f}`);return E}):null,p=t?a?[...new Set(l)]:[...new Set(s)]:a?l:s;if(e==="COUNT")return p.length;if(e==="GROUP_CONCAT")return p.join(n??",");let d=e==="MIN"||e==="MAX"||e==="MODE"?au(r,o):void 0,c=typeof d=="string"?x(d):d??(r.type==="FIELD_REF"||r.type==="FIELD"||r.type==="STRING"||r.type==="CONCAT_OP"||r.type==="CASE_WHEN"?x("string"):x("number"));if(e==="MODE"){if(s.length===0)return"";let f=new Map;for(let m of s)f.set(m,(f.get(m)??0)+1);let E="",R=0;for(let[m,g]of f){if(g>R){E=m,R=g;continue}if(g!==R)continue;let y=yt(m,E,c);(y<0||y===0&&at(m,E)<0)&&(E=m)}return E}if(e==="MIN"||e==="MAX"){let f=p;if(f.length===0)return 0;let E=f[0];for(let R of f.slice(1)){let m=yt(R,E,c);(e==="MAX"&&m>0||e==="MIN"&&m<0)&&(E=R)}return E}let u=a?p:p.map(Number);switch(e){case"SUM":return u.reduce((f,E)=>f+E,0);case"AVG":return u.length===0?0:u.reduce((f,E)=>f+E,0)/u.length;case"MEDIAN":{if(u.length===0)return"";let f=[...u].sort((R,m)=>R-m),E=Math.floor(f.length/2);return f.length%2===1?f[E]:(f[E-1]+f[E])/2}case"VAR_POP":case"VAR_SAMP":case"STDDEV_POP":case"STDDEV_SAMP":{let f=e==="VAR_SAMP"||e==="STDDEV_SAMP";if(u.length===0||f&&u.length<2)return"";let E=u[0],R=0,m=0,g=0;for(let T of u){let A=T-E;R++;let N=A-m;m+=N/R,g+=N*(A-m)}let y=Math.max(0,g/(f?R-1:R));return e==="STDDEV_POP"||e==="STDDEV_SAMP"?Math.sqrt(y):y}}}function Hf(e){let t=e.indexOf(".");return t>0?{type:"FIELD",tableAlias:e.slice(0,t),field:e.slice(t+1)}:{type:"FIELD",tableAlias:null,field:e}}function pi(e,t,r){if(e.type==="NUMBER")return e.value;if(e.type==="AGG_REF")return Number(Jo(e.func,e.distinct,e.arg,e.separator,t,r));let n=pi(e.left,t,r),i=pi(e.right,t,r);switch(e.op){case"+":return n+i;case"-":return n-i;case"*":return n*i;case"/":return i!==0?n/i:NaN;case"%":return i!==0?n%i:NaN}}function lr(e){return Ar(e)}function au(e,t){if(e.type==="FIELD_REF")return t?.(Hf(e.field))??"string";if(e.type==="FIELD")return t?.(e)??"string";if(e.type==="NUMBER"||e.type==="ARITH"||e.type==="SCALAR_ARITH")return"number";if(e.type==="STRING"||e.type==="CONCAT_OP"||e.type==="VARIABLE")return"string";if(e.type==="STRING_FUNC"){let o=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);return e.func==="CAST"?e.args[1]?.type==="STRING"&&e.args[1].value==="NUMBER"?"number":"string":o.has(e.func)?"number":"string"}let r=[...e.branches.map(o=>o.result),...e.elseResult===null?[]:[e.elseResult]].filter(o=>o.type!=="ARRAY").map(o=>au(o,t));if(r.length===0||r.some(o=>o===void 0))return"string";let n=r.map(o=>typeof o=="string"?o:o.compareMode==="number"||o.compareMode==="recordNumber"?"number":"string");if(!n.every(o=>o===n[0]))return"string";let i=r[0];return r.every(o=>JSON.stringify(o)===JSON.stringify(i))?i:n[0]}function Yf(e,t,r,n){return t===null?e:e.filter(i=>q(t,i,r,void 0,n))}function jf(e,t,r,n,i){if(e.length===0)return e;let o=qf(e,t,{scalarCache:r,resolveFieldType:n,resolveFieldSemantics:i}),s=new Set;return e.filter(a=>{let l=o(a);return s.has(l)?!1:(s.add(l),!0)})}function qf(e,t,r){let n=[];if(t.some(s=>s.type==="WILDCARD")){let s=new Set;for(let a of e)for(let l of Object.keys(a))s.add(l);n=[...s].sort()}let i=[];if(t.some(s=>s.type==="PARENT_WILDCARD")){let s=new Set;for(let a of e)for(let l of Object.keys(a))l.startsWith("_p.")&&s.add(l);i=[...s].sort()}let o={...r,wildcardKeys:n,parentWildcardKeys:i};return s=>JSON.stringify(Zf(t,s,o))}function Qo(e,t,r,n,i,o){return t.length===0?e:lu(e,t,r,n,i,o).rows.map(s=>s.row)}function lu(e,t,r,n,i,o){let s=t.map(({key:p})=>{if(p.type==="ARITH_KEY")return{semantics:x("number")};if(p.type==="FUNC_KEY")return{semantics:x(uu.has(p.expr.func)?"number":"string")};if(p.type==="GROUPING_KEY")return{semantics:x("number")};let d=i?.get(p.name);if(d)return{semantics:d};let c=r?.get(p.name);return c?{semantics:{fieldType:"MULTI_SELECT",compareMode:"option",inSubtable:!1,requiresCollectionOperators:!1,optionOrder:c}}:{semantics:x(n?.get(p.name)??"string")}}),a=e.map(p=>({row:p,keys:t.map(({key:d},c)=>({s:Jf(d,p,o)}))})),l=(p,d)=>zf(p,d,t,s);return a.sort(l),{rows:a,compare:l}}function zf(e,t,r,n){for(let i=0;i<r.length;i++){let o=Xf(e.keys[i],t.keys[i],n[i]);if(o!==0)return r[i].direction==="ASC"?o:-o}return 0}function Xf(e,t,r){return yt(e.s,t.s,r.semantics)}var uu=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function Jf(e,t,r){switch(e.type){case"FIELD_NAME":return r?.(e.name,t)??t[e.name]??"";case"ARITH_KEY":return String(ee(e.expr,t));case"FUNC_KEY":return te(e.expr,t);case"GROUPING_KEY":return rr(e.ref,t)}}function Zo(e,t,r,n){let i=new Map;for(let[o,s]of e.entries()){if(!("alias"in s)||s.alias===null)continue;let a=s.alias;switch(s.type){case"FIELD":i.set(a,l=>Ye(l,s.field));break;case"LITERAL_COL":i.set(a,()=>s.value);break;case"AGGREGATE":{let l=Se(s.func,s.distinct,s.arg);i.set(a,p=>p[a]??p[l]??"0");break}case"ARITH_AGG_COL":{let l=lr(s.expr);i.set(a,p=>p[a]??p[l]??"0");break}case"WINDOW_COL":i.set(a,l=>l[a]??"");break;case"ARITH_COL":i.set(a,l=>String(ee(s.expr,l)));break;case"STRFUNC_COL":{let l=pt(s.expr);i.set(a,p=>Yr(s.expr)?p[a]??p[l]??te(s.expr,p,r,n):te(s.expr,p,r,n));break}case"CASE_COL":i.set(a,l=>we(s.expr,l,r,n));break;case"SCALAR_VALUE_COL":{let l=Me(s.expr);i.set(a,p=>ct(s.expr)?p[a]??p[l]??"":String(se(s.expr,p,r,n)));break}case"SCALAR_SUBQUERY_COL":i.set(a,()=>t?.get(o)??"");break;case"GROUPING_COL":i.set(a,l=>rr(s.ref,l));break;case"VARIABLE_COL":break}}return(o,s)=>i.get(o)?.(s)}function es(e,t,r,n,i){let o=t.filter(s=>s.type==="WINDOW_COL");if(e.length===0||o.length===0)return e;for(let s of o){let a=new Map;for(let l of e){let p=JSON.stringify(s.partitionBy.map(c=>Qf(l,c))),d=a.get(p);d?d.push(l):a.set(p,[l])}for(let l of a.values()){let p=lu(l,s.orderBy,r,n,i),d=p.rows,c=1,u=1;for(let f=0;f<d.length;f++){f>0&&p.compare(d[f-1],d[f])!==0&&(c=f+1,u++);let E=s.func==="ROW_NUMBER"?f+1:s.func==="RANK"?c:u;d[f].row[s.alias]=String(E)}}}return e}function Qf(e,t){let r=t.tableAlias?`${t.tableAlias}.${t.field}`:t.field;return Ye(e,r)}function fi(e,t,r){let n=r??0;return t===null?e.slice(n):e.slice(n,n+t)}function Xo(e,t,r,n={}){switch(e.type){case"VARIABLE_COL":throw new Error(`internal error: unresolved SELECT variable @${e.name}`);case"WILDCARD":return{kind:"EXPANDED",entries:(n.wildcardKeys??Object.keys(t)).map(o=>[o,t[o]!==void 0?t[o]:null])};case"PARENT_WILDCARD":return{kind:"EXPANDED",entries:(n.parentWildcardKeys??Object.keys(t).filter(o=>o.startsWith("_p.")).sort()).map(o=>[o,t[o]!==void 0?t[o]:null])};case"FIELD":return Ye(t,e.field);case"LITERAL_COL":return e.value;case"AGGREGATE":{let i=Se(e.func,e.distinct,e.arg);return t[e.alias??i]??t[i]??"0"}case"ARITH_AGG_COL":{let i=e.alias??lr(e.expr);return t[i]??"0"}case"ARITH_COL":return String(ee(e.expr,t));case"CASE_COL":return we(e.expr,t,n.resolveFieldType,n.resolveFieldSemantics);case"GROUPING_COL":return rr(e.ref,t);case"STRFUNC_COL":{let i=pt(e.expr);return Yr(e.expr)?t[e.alias??i]??t[i]??te(e.expr,t,n.resolveFieldType,n.resolveFieldSemantics):te(e.expr,t,n.resolveFieldType,n.resolveFieldSemantics)}case"SCALAR_VALUE_COL":{let i=Me(e.expr);return ct(e.expr)?t[e.alias??i]??t[i]??"":String(se(e.expr,t,n.resolveFieldType,n.resolveFieldSemantics))}case"SCALAR_SUBQUERY_COL":return n.scalarCache?.get(r)??"";case"WINDOW_COL":return t[e.alias]??""}}function Zf(e,t,r={}){return e.map((n,i)=>{let o=Xo(n,t,i,r);return typeof o=="string"?o:o.entries.map(([,s])=>s)})}function Ei(e,t,r,n,i,o,s){if(t.length===1&&t[0].type==="WILDCARD"){let u=e.map(E=>{let R=nu(tu(E),s),m=Xo(t[0],E,0,{wildcardKeys:Object.keys(R)}),g={};if(typeof m!="string")for(let[y,T]of m.entries)T!==null&&(g[y]=T);return g}),f=u.length>0?Object.keys(u[0]):[...i??[]];return{rows:u,columns:f}}let a=rE(t),l=t.some(u=>u.type==="WILDCARD"||u.type==="PARENT_WILDCARD"),p=l?null:eE(t,a),d=p??[];return l&&e.length===0?{rows:[],columns:tE(t,a)}:{rows:e.map((u,f)=>{let E={},R={scalarCache:r,resolveFieldType:n,resolveFieldSemantics:o,wildcardKeys:Object.keys(nu(tu(u),s)),parentWildcardKeys:Object.keys(u).filter(m=>m.startsWith("_p.")).sort()};for(let[m,g]of t.entries()){let y=Xo(g,u,m,R);switch(g.type){case"VARIABLE_COL":break;case"WILDCARD":if(typeof y!="string")for(let[T,A]of y.entries)A!==null&&(E[T]=A);break;case"PARENT_WILDCARD":{if(typeof y!="string")for(let[T,A]of y.entries)A!==null&&(E[T]=A),f===0&&d.push(T);break}case"FIELD":{let T=p?.[m]??g.alias??a.get(m)??g.field;E[T]=y,p===null&&f===0&&d.push(T);break}case"LITERAL_COL":{let T=p?.[m]??g.alias??`'${g.value}'`;E[T]=y,p===null&&f===0&&d.push(T);break}case"AGGREGATE":{let T=Se(g.func,g.distinct,g.arg),A=p?.[m]??g.alias??T;E[A]=y,p===null&&f===0&&d.push(A);break}case"ARITH_AGG_COL":{let T=p?.[m]??g.alias??lr(g.expr);E[T]=y,p===null&&f===0&&d.push(T);break}case"ARITH_COL":{let T=p?.[m]??g.alias??ts(g.expr);E[T]=y,p===null&&f===0&&d.push(T);break}case"CASE_COL":{let T=p?.[m]??g.alias??"case";E[T]=y,p===null&&f===0&&d.push(T);break}case"GROUPING_COL":{let T=p?.[m]??g.alias??`GROUPING(${g.ref.field.tableAlias?`${g.ref.field.tableAlias}.`:""}${g.ref.field.field})`;E[T]=y,p===null&&f===0&&d.push(T);break}case"STRFUNC_COL":{let T=p?.[m]??g.alias??pt(g.expr);E[T]=y,p===null&&f===0&&d.push(T);break}case"SCALAR_VALUE_COL":{let T=p?.[m]??g.alias??Me(g.expr);E[T]=y,p===null&&f===0&&d.push(T);break}case"SCALAR_SUBQUERY_COL":{let T=p?.[m]??g.alias??"(subquery)";E[T]=y,p===null&&f===0&&d.push(T);break}case"WINDOW_COL":{let T=p?.[m]??g.alias;E[T]=y,p===null&&f===0&&d.push(T);break}}}return E}),columns:d}}function eE(e,t){return e.map((r,n)=>cu(r,n,t))}function tE(e,t){let r=[],n=new Set;for(let[i,o]of e.entries()){if(o.type==="WILDCARD"||o.type==="PARENT_WILDCARD")continue;let s=cu(o,i,t);n.has(s)||(n.add(s),r.push(s))}return r}function cu(e,t,r){switch(e.type){case"VARIABLE_COL":throw new Error(`internal error: unresolved SELECT variable @${e.name}`);case"FIELD":return e.alias??r.get(t)??e.field;case"LITERAL_COL":return e.alias??`'${e.value}'`;case"AGGREGATE":return e.alias??Se(e.func,e.distinct,e.arg);case"ARITH_AGG_COL":return e.alias??lr(e.expr);case"ARITH_COL":return e.alias??ts(e.expr);case"CASE_COL":return e.alias??"case";case"STRFUNC_COL":return e.alias??pt(e.expr);case"SCALAR_VALUE_COL":return e.alias??Me(e.expr);case"GROUPING_COL":return e.alias??`GROUPING(${e.ref.field.tableAlias?`${e.ref.field.tableAlias}.`:""}${e.ref.field.field})`;case"SCALAR_SUBQUERY_COL":return e.alias??"(subquery)";case"WINDOW_COL":return e.alias;case"WILDCARD":case"PARENT_WILDCARD":throw new Error("internal: computeOutputKey received a wildcard column")}}function rE(e){let t=new Map;for(let n of e){if(n.type!=="FIELD"||n.alias)continue;let i=eu(n.field);t.set(i,(t.get(i)??0)+1)}let r=new Map;for(let[n,i]of e.entries()){if(i.type!=="FIELD"||i.alias)continue;let o=eu(i.field),s=(t.get(o)??0)>1,a=i.field.includes(".")&&!i.field.startsWith("_p.");r.set(n,s&&a?i.field:o)}return r}function eu(e){if(e.startsWith("_p."))return e;let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function tu(e){let t={};for(let[r,n]of Object.entries(e))r.startsWith("_p.")||(t[r]=n);return t}function ts(e){let t=r=>r.type==="FIELD_REF"?r.field:r.type==="NUMBER"?G(r):r.type==="STRING_FUNC"?pt(r):`(${t(r.left)}${r.op}${t(r.right)})`;return e.type==="ARITH"?`${t(e.left)}${e.op}${t(e.right)}`:t(e)}function pt(e){let t=e.args.map(r=>r.type==="AGG_REF"||r.type==="AGG_ARITH"?lr(r):Me(r));return`${e.func}(${t.join(",")})`}function Me(e){switch(e.type){case"STRING":return`'${e.value}'`;case"NUMBER":return G(e);case"VARIABLE":return`@${e.name}`;case"FIELD":return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;case"STRING_FUNC":return pt(e);case"CASE_WHEN":return"case";case"SCALAR_ARITH":return`${Me(e.left)}${e.op}${Me(e.right)}`;case"CONCAT_OP":return`${Me(e.left)}||${Me(e.right)}`}}function nE(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:ct(e)}function ct(e){return e.type==="STRING_FUNC"?Yr(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?ct(e.left)||ct(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>ru(t.result))||e.elseResult!==null&&ru(e.elseResult):!1}function ru(e){return e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?!1:ct(e)}function Yr(e){return e.args.some(t=>nE(t))}function iE(e,t,r){if(e.type==="AGG_REF"){let n=Jo(e.func,e.distinct,e.arg,e.separator,t,r);return typeof n=="number"?{type:"NUMBER",value:n,raw:String(n)}:{type:"STRING",value:n}}if(e.type==="AGG_ARITH"){let n=pi(e,t,r);return{type:"NUMBER",value:n,raw:String(n)}}return e.type==="STRING_FUNC"?rs(e,t,r):di(e,t,r)}function di(e,t,r){return e.type==="STRING_FUNC"?rs(e,t,r):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?{...e,left:di(e.left,t,r),right:di(e.right,t,r)}:e}function rs(e,t,r){return{type:"STRING_FUNC",func:e.func,args:e.args.map(n=>iE(n,t,r))}}function nu(e,t){if(!t||t.size===0)return e;let r={};for(let[n,i]of Object.entries(e))[...t].some(o=>n.startsWith(`${o}.`))||(r[n]=i);return r}function iu(e,t){if(e!==void 0)return t?e.flatMap(r=>[`${t}.${r}`,r]):[...e]}function zo(e,t,r){if(!(e===void 0&&t===void 0&&r.length===0))return[...new Set([...e??[],...t??[],...Object.keys(r[0]??{})])]}function oE(e){let t=new Map;for(let r of e)!("alias"in r)||!r.alias||(r.type==="ARITH_COL"||r.type==="ARITH_AGG_COL"||r.type==="WINDOW_COL"?t.set(r.alias,x("number")):r.type==="AGGREGATE"?r.func==="COUNT"||r.func==="SUM"||r.func==="AVG"||r.func==="STDDEV_POP"||r.func==="STDDEV_SAMP"||r.func==="VAR_POP"||r.func==="VAR_SAMP"||r.func==="MEDIAN"?t.set(r.alias,x("number")):r.func==="GROUP_CONCAT"&&t.set(r.alias,x("string")):r.type==="LITERAL_COL"||r.type==="CASE_COL"||r.type==="SCALAR_SUBQUERY_COL"||r.type==="SCALAR_VALUE_COL"?t.set(r.alias,x("string")):r.type==="STRFUNC_COL"&&t.set(r.alias,x(uu.has(r.expr.func)?"number":"string")));return t}function ns(e){let{stmt:t,tables:r,scalarCache:n,optionOrders:i,sortKinds:o,orderSemantics:s,fieldTypeResolver:a,fieldSemanticsResolver:l,havingFieldTypeResolver:p,havingFieldSemanticsResolver:d,aggregateSortKindResolver:c,appliedKlikes:u,sourceColumns:f,tableColumns:E,hiddenQualifiedAliases:R,resolvedGroupingSpec:m}=e,g=oE(t.columns);for(let[L,b]of s??[])g.set(L,b);let y=[],T=t.from.alias;y=(r.get(T)??r.get(null)??[]).map(L=>Xe(L,T));let N=zo(iu(E?.get(T),T),void 0,y);for(let L of t.joins){let b=L.table.alias,P=(r.get(b)??[]).map(C=>Xe(C,b)),h=zo(iu(E?.get(b),b),void 0,P);y=Bf(y,P,L,{leftColumns:N,rightColumns:h}),N=zo(N,h,y)}y=$f(y,t.where,a,u,l);let w=ne(t);if(w.type==="GROUPING_SETS"){if(!m)throw new Error("internal error: B65 grouping sets require a metadata-resolved grouping spec.");y=Vf(y,m,t.columns,c,{maxGeneratedRows:5e4})}else(w.type==="PLAIN"||ou(t.columns))&&(y=Gf(y,w.type==="PLAIN"?w.allItems:[],t.columns,c));return y=Yf(y,t.having,p,d),y=es(y,t.columns,i,o,g),t.distinct&&(y=jf(y,t.columns,n,a,l)),y=Qo(y,t.orderBy,i,o,g,Zo(t.columns,n,a,l)),y=fi(y,t.limit,t.offset),Ei(y,t.columns,n,a,f,l,R)}function pu(e,t){let r=[];for(let n of e){let i=is(n.$id?.value),o=sE(n[t]?.value);if(o.length!==0)for(let s=0;s<o.length;s++){let a=o[s],l={_pid:{value:i},_rid:{value:a.id??""},_idx:{value:String(s)}};for(let[p,d]of Object.entries(n)){if(p===t)continue;let c=is(d?.value);l[`_p.${p}`]={value:c}}for(let[p,d]of Object.entries(a.value??{}))l[p]={value:is(d?.value)};r.push(l)}}return r}function sE(e){return Array.isArray(e)?e.filter(t=>!!t&&typeof t=="object"):[]}function is(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return String(e);try{return JSON.stringify(e)}catch{return String(e)}}function du(e){return["$id",...new Set([...e.topLevel.map(t=>t.code).filter(t=>t!=="$id"&&t!=="$revision"),...e.subtables.keys()])]}function fu(e,t){let r=jr(e);for(let[n,i]of Object.entries(t))r[n]=jr(i);return r}function Eu(e){let t=[...e.preErrors.map(i=>os(i)),...e.postImageErrors.map(i=>os(i,i.$err_subtable!=="")),...e.checkErrors.map(i=>os(i))],r=new Set;t.length>0&&r.add(e.rowNumber);let n={};for(let i of new Set(e.setFields)){if(!Object.prototype.hasOwnProperty.call(e.normalizedPostImage,i))throw new Error(`InternalError: normalized post-image is missing SET field: ${i}`);n[i]=jr(e.normalizedPostImage[i])}return{errors:t,invalidRows:r.size,invalidRowNumbers:r,writeRecord:n}}function os(e,t=!1){return{...e,$err_value:t?e.$err_value??"":"",$err_subtable:t?e.$err_subtable??"":"",$err_subrow:t?e.$err_subrow??"":"",$err_subrow_id:t?e.$err_subrow_id??"":""}}function jr(e,t=new Map){if(e===null||typeof e!="object")return e;let r=e,n=t.get(r);if(n!==void 0)return n;if(Array.isArray(e)){let o=[];t.set(r,o);for(let s of e)o.push(jr(s,t));return o}let i={};t.set(r,i);for(let[o,s]of Object.entries(e))i[o]=jr(s,t);return i}var Je=["=","!=",">","<",">=","<="],aE=["=","!=","in","not in"],lE=new Map([["RECORD_NUMBER",new Set([...Je,"in","not in"])],["__ID__",new Set([...Je,"in","not in"])],["CREATOR",new Set(["in","not in"])],["MODIFIER",new Set(["in","not in"])],["CREATED_TIME",new Set(Je)],["UPDATED_TIME",new Set(Je)],["DATE",new Set(Je)],["TIME",new Set(Je)],["DATETIME",new Set(Je)],["SINGLE_LINE_TEXT",new Set(["=","!=","in","not in","like","not like"])],["LINK",new Set(["=","!=","in","not in","like","not like"])],["NUMBER",new Set([...Je,"in","not in"])],["CALC",new Set([...Je,"in","not in"])],["MULTI_LINE_TEXT",new Set(["like","not like"])],["RICH_TEXT",new Set(["like","not like"])],["CHECK_BOX",new Set(["in","not in"])],["RADIO_BUTTON",new Set(["in","not in"])],["DROP_DOWN",new Set(["in","not in"])],["MULTI_SELECT",new Set(["in","not in"])],["FILE",new Set(["like","not like"])],["USER_SELECT",new Set(["in","not in"])],["ORGANIZATION_SELECT",new Set(["in","not in"])],["GROUP_SELECT",new Set(["in","not in"])],["STATUS",new Set(aE)]]),Ru=new Set(["RECORD_NUMBER","__ID__","CREATOR","MODIFIER","CREATED_TIME","UPDATED_TIME","DATE","TIME","DATETIME","SINGLE_LINE_TEXT","LINK","NUMBER","CALC","MULTI_LINE_TEXT","RICH_TEXT","RADIO_BUTTON","DROP_DOWN","STATUS","KSQL_STRING","KSQL_NUMBER","KSQL_BOOLEAN"]),mu=new Set(["CHECK_BOX","MULTI_SELECT","FILE","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE","CATEGORY"]);function uE(e){return lE.get(e)??new Set}function ur(e,t){return e===null?{capability:"EXACT_PUSHDOWN",reasons:[{code:"WHERE_EXACT"}]}:qr(e,t)}function qr(e,t){switch(e.type){case"BOOLEAN":return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]};case"BINARY":return cE(e.op,e.left,e.right.type,t);case"NULL_CHECK":return e.field.type!=="FIELD"?as():pE(e.field,e.not?"IS NOT NULL":"IS NULL",t);case"EXISTS":return as();case"GROUP":return qr(e.expr,t);case"NOT":{let r=qr(e.expr,t);return r.capability==="SUPERSET_PREFILTER"?{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]}:r}case"LOGICAL":{let r=qr(e.left,t),n=qr(e.right,t);return fE(e.op,r,n)}}}function cE(e,t,r,n){if(t.type!=="FIELD")return as();let i=n(t);if(!i)return Ri("WHERE_FIELD_UNRESOLVED",t.field,void 0,ss(e));if(!dE(i.fieldType,e))return Ri("WHERE_OPERATOR_UNSUPPORTED",t.field,i.fieldType,ss(e));let o=ss(e),s=uE(i.fieldType),a=r==="STRING"||r==="NUMBER"||r==="IN_LIST"||r==="KINTONE_FUNC",l=!i.requiresCollectionOperators||o!=="="&&o!=="!=",p=e==="LIKE"||e==="NOT_LIKE";return a&&l&&s.has(o)&&!p?{capability:"EXACT_PUSHDOWN",reasons:[{code:"WHERE_EXACT",field:t.field,fieldType:i.fieldType,operator:o}]}:{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_RESIDUAL",field:t.field,fieldType:i.fieldType,operator:o}]}}function pE(e,t,r){let n=r(e);return n?!Ru.has(n.fieldType)&&!mu.has(n.fieldType)?Ri("WHERE_OPERATOR_UNSUPPORTED",e.field,n.fieldType,t):{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_RESIDUAL",field:e.field,fieldType:n.fieldType,operator:t}]}:Ri("WHERE_FIELD_UNRESOLVED",e.field,void 0,t)}function dE(e,t){return Ru.has(e)?!0:mu.has(e)?t==="="||t==="!="||t==="<>"||t==="IN"||t==="NOT_IN"||t==="LIKE"||t==="NOT_LIKE"||t==="KLIKE"||t==="NOT_KLIKE":!1}function ss(e){switch(e){case"<>":return"!=";case"IN":return"in";case"NOT_IN":return"not in";case"LIKE":case"KLIKE":return"like";case"NOT_LIKE":case"NOT_KLIKE":return"not like";default:return e}}function fE(e,t,r){let n=[...t.reasons,...r.reasons];return t.capability==="UNSUPPORTED"||r.capability==="UNSUPPORTED"?{capability:"UNSUPPORTED",reasons:n}:t.capability==="EXACT_PUSHDOWN"&&r.capability==="EXACT_PUSHDOWN"?{capability:"EXACT_PUSHDOWN",reasons:n}:e==="AND"&&(t.capability==="EXACT_PUSHDOWN"||r.capability==="EXACT_PUSHDOWN"||t.capability==="SUPERSET_PREFILTER"||r.capability==="SUPERSET_PREFILTER")?{capability:"SUPERSET_PREFILTER",reasons:[{code:"WHERE_SUPERSET_PREFILTER"},...n]}:{capability:"LOCAL_ONLY",reasons:n}}function as(){return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]}}function Ri(e,t,r,n){return{capability:"UNSUPPORTED",reasons:[{code:e,field:t,fieldType:r,operator:n}]}}var M=class extends Error{constructor(t){super(`ImportSourceError: ${t}`),this.name="ImportSourceError"}};function gu(e,t){if(!t)throw new M("IMPORT source capability is not available.");let r=t(e);if(!r)throw new M(`source "${e}" is not supplied.`);return r}async function mi(e,t){let r=t.get(e);return r||(r=e.load().then(n=>{if(!(n.bytes instanceof Uint8Array))throw new M("loader must return Uint8Array bytes.");if(n.bytes.byteLength>10485760)throw new M("source exceeds the 10485760 byte limit.");return n}),t.set(e,r)),r}function EE(e,t){try{return new TextDecoder(t==="sjis"?"shift_jis":"utf-8",{fatal:!0}).decode(e).replace(/^\uFEFF/,"")}catch{throw new M(`invalid ${t.toUpperCase()} byte sequence.`)}}function RE(e){let t=[],r=[],n="",i=!1,o=!1,s=0,a=()=>{r.push(n),n="",o=!1},l=()=>{a(),t.push(r),r=[]};for(;s<e.length;){let p=e[s];if(i){if(p==='"'){if(e[s+1]==='"'){n+='"',s+=2;continue}i=!1,o=!0,s++;continue}n+=p,s++;continue}if(o&&p!==","&&p!=="\r"&&p!==`
4
- `)throw new M(`unexpected character after closing quote at offset ${s}.`);if(p==='"'){if(n.length!==0)throw new M(`quote in unquoted cell at offset ${s}.`);i=!0,s++;continue}if(p===","){a(),s++;continue}if(p==="\r"||p===`
5
- `){p==="\r"&&e[s+1]===`
6
- `&&s++,l(),s++;continue}n+=p,s++}if(i)throw new M("unterminated quoted cell.");return(n.length>0||r.length>0||o)&&l(),t}function mE(e){let t=new Set;e.forEach((r,n)=>{if(r==="")throw new M(`CSV column ${n+1} has an empty name.`);if(t.has(r))throw new M(`CSV column name "${r}" is duplicated.`);t.add(r)})}function gi(e,t){let r=RE(EE(e,t.encoding)),n,i;if(t.hasHeader?(n=r[0]??[],i=r.slice(1)):(i=r,n=t.columns?[...t.columns]:Array.from({length:i[0]?.length??0},(o,s)=>`c${s+1}`)),mE(n),i.length===0)throw new M("CSV has no data rows.");return i.forEach((o,s)=>{if(o.length!==n.length)throw new M(`CSV row ${s+(t.hasHeader?2:1)} has ${o.length} cells; expected ${n.length}.`)}),{columns:n,rows:i}}var gE=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),hE=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),zr=class extends Error{constructor(){super("multiple-value CSV cell contains an empty LF-delimited item");this.code="ERR_IMPORT_MULTI_EMPTY_ITEM";this.name="ImportCsvValueError"}};function hu(e,t,r){if(!gE.has(t??""))return e;if(e==="")return[];let n=e.split(/\r\n|\n/);if(n.some(i=>i===""))throw new zr;return hE.has(t??"")?n.map(i=>({code:i})):n}function Qe(e,t,r,n){throw new M(`JSON ${e} (offset=${t}, line=${r}, column=${n}).`)}function yu(e){try{return new TextDecoder("utf-8",{fatal:!0}).decode(e)}catch{throw new M("JSON source is not valid UTF-8.")}}function Au(e){let t=[],r=0,n=1,i=1,o=()=>{let a=e[r++];return a===`
7
- `?(n++,i=1):i++,a},s=()=>({offset:r,line:n,column:i});for(;r<e.length;){let a=e[r];if(a===" "||a===" "||a==="\r"||a===`
8
- `){o();continue}let l=s();if("{}[]:,".includes(a)){o(),t.push({kind:"punct",value:a,...l});continue}if(a==='"'){o();let u="",f=!1;for(;r<e.length;){let E=o();if(E==='"'){f=!0;break}if(E.charCodeAt(0)<32&&Qe("string contains an unescaped control character",l.offset,l.line,l.column),E!=="\\"){u+=E;continue}r>=e.length&&Qe("string has an unterminated escape",l.offset,l.line,l.column);let R=o(),m={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:`
9
- `,r:"\r",t:" "};if(R in m){u+=m[R];continue}R!=="u"&&Qe(`has invalid escape \\${R}`,r-2,n,Math.max(1,i-2));let g=e.slice(r,r+4);/^[0-9a-fA-F]{4}$/.test(g)||Qe("has invalid unicode escape",r,n,i);for(let T=0;T<4;T++)o();let y=Number.parseInt(g,16);if(y>=55296&&y<=56319){(e.slice(r,r+2)!=="\\u"||!/^[0-9a-fA-F]{4}$/.test(e.slice(r+2,r+6)))&&Qe("has an unpaired high surrogate",r,n,i),o(),o();let T=e.slice(r,r+4);for(let N=0;N<4;N++)o();let A=Number.parseInt(T,16);(A<56320||A>57343)&&Qe("has an invalid surrogate pair",r-4,n,Math.max(1,i-4)),u+=String.fromCodePoint(65536+(y-55296<<10)+A-56320)}else y>=56320&&y<=57343?Qe("has an unpaired low surrogate",r-4,n,Math.max(1,i-4)):u+=String.fromCharCode(y)}f||Qe("string is unterminated",l.offset,l.line,l.column),t.push({kind:"string",value:u,...l});continue}let p=e.slice(r),d=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/.exec(p)?.[0];if(d){for(let u=0;u<d.length;u++)o();t.push({kind:"number",lexeme:d,...l});continue}let c=/^(true|false|null)/.exec(p)?.[0];if(c){for(let u=0;u<c.length;u++)o();t.push({kind:"literal",value:c==="true"?!0:c==="false"?!1:null,...l});continue}Qe(`has an unexpected token ${JSON.stringify(a)}`,l.offset,l.line,l.column)}return t.push({kind:"eof",offset:r,line:n,column:i}),t}function hi(e){return e.kind==="eof"?"end of input":e.kind==="punct"?e.value:e.kind}function yi(e){if(e.byteLength===0)throw new M("JSON source is empty.");let t=Au(yu(e)),r=0,n=(p,d=t[r])=>{throw new M(`JSON ${p} (offset=${d.offset}, line=${d.line}, column=${d.column}).`)},i=(p,d)=>p.kind==="punct"&&p.value===d,o=p=>{let d=t[r];(d.kind!=="punct"||d.value!==p)&&n(`expected ${p}; found ${hi(d)}`,d),r++},s=()=>{let p=t[r++];if(p.kind==="string")return p.value;if(p.kind==="number")return{kind:"number",lexeme:p.lexeme};if(p.kind==="literal")return p.value;if(p.kind==="punct"&&p.value==="{"){let d=new Map;if(i(t[r],"}"))return r++,d;for(;;){let c=t[r++];if(c.kind!=="string")return n(`object key must be a string; found ${hi(c)}`,c);let u=c.value;d.has(u)&&n(`duplicate key ${JSON.stringify(u)}`,c),o(":"),d.set(u,s());let f=t[r];if(i(f,"}")){r++;break}o(",")}return d}if(p.kind==="punct"&&p.value==="["){let d=[];if(i(t[r],"]"))return r++,d;for(;;){d.push(s());let c=t[r];if(i(c,"]")){r++;break}o(",")}return d}return n(`expected a value; found ${hi(p)}`,p)},a=s();t[r].kind!=="eof"&&n(`has trailing data; found ${hi(t[r])}`);let l=a instanceof Map?[a]:Array.isArray(a)?a:n("root must be an object or array.",t[0]);if(l.length===0)throw new M("JSON source contains no records.");return l.forEach((p,d)=>{if(!(p instanceof Map))throw new M(`JSON record ${d+1} must be an object.`)}),l}var yE=new Set(["CHECK_BOX","MULTI_SELECT"]),Su=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function xe(e,t,r){throw new M(`JSON field validation failed (row=${e}, field=${t}): ${r}`)}function AE(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof Map)&&e.kind==="number"}function SE(e,t,r){if(e===null)return"";if(typeof e=="string")return e;if(typeof e=="boolean"&&xe(r,t.code,"boolean is not accepted."),AE(e)){t.fieldType==="NUMBER"&&xe(r,t.code,"precision target requires a JSON string."),(!/^-?(?:0|[1-9]\d*)$/.test(e.lexeme)||e.lexeme==="-0")&&xe(r,t.code,`JSON number ${e.lexeme} must be a non-negative-zero safe integer lexeme.`);let i=Number(e.lexeme);return Number.isSafeInteger(i)||xe(r,t.code,`JSON number ${e.lexeme} is outside the safe integer range.`),String(i)}e instanceof Map&&xe(r,t.code,"object is not accepted for a flat field."),Array.isArray(e)||xe(r,t.code,"unsupported value type."),!yE.has(t.fieldType)&&!Su.has(t.fieldType)&&xe(r,t.code,"array is accepted only for multi-value fields.");let n=e.map(i=>(typeof i!="string"&&xe(r,t.code,"array elements must be strings."),i));return new Set(n).size!==n.length&&xe(r,t.code,"array elements must not contain duplicates."),Su.has(t.fieldType)?JSON.stringify(n.map(i=>({code:i}))):JSON.stringify(n)}function ls(e,t,r,n){if(t.encoding&&t.encoding!=="utf8")throw new M("JSON source is UTF-8 only.");let i=yi(t.bytes);if(i.length>n)throw new M(`source rows (${i.length}) exceed maxRecords (${n}).`);let o=new Map(r.map(l=>[l.code,l]));if(o.size!==r.length)throw new M("JSON target fields contain duplicates.");let s=[],a=[];return i.forEach((l,p)=>{for(let u of l.keys())o.has(u)||xe(p+1,u,"unknown key (not declared in INTO).");let d={},c=new Set;for(let u of r)l.has(u.code)&&(c.add(u.code),d[u.code]=SE(l.get(u.code),u,p+1));s.push(d),a.push(c)}),{rows:s,columns:r.map(l=>l.code),columnMeta:new Map(r.map(l=>[l.code,{fieldType:l.fieldType}])),importPresence:a}}function us(e,t,r,n,i,o){let s=gi(t.bytes,{encoding:e.encoding??t.encoding??"utf8",hasHeader:e.hasHeader,columns:e.columns});if(s.rows.length>r)throw new M(`source rows (${s.rows.length}) exceed maxRecords (${r}).`);if(e.mappingMode==="BY_NAME"){if(!n||!i)throw new Error("InternalError: BY NAME requires destination form metadata.");if(new Set(n).size!==n.length)throw new M("ERR_IMPORT_HEADER_REUSED: a BY NAME header cannot be consumed more than once.");let l=new Map(s.columns.map((g,y)=>[g,y]));for(let g of n)if(!l.has(g))throw new M(`ERR_IMPORT_MISSING_COLUMN: required header "${g}" is missing.`);let p=new Map(i.map(g=>[g.code,g])),d=new Set(n);if(o&&d.has(o))throw new M("ERR_IMPORT_HEADER_REUSED: record-number source header is lookup-only and cannot be a write target.");if(o&&!l.has(o))throw new M(`ERR_IMPORT_MISSING_COLUMN: required header "${o}" is missing.`);let c=[],u=[],f=g=>s.rows.filter(y=>y[g]!=="").length,E=g=>g.fieldType==="FILE"?"FILE attachment is outside flat IMPORT scope":g.inSubtable||g.fieldType==="SUBTABLE"?"subtable field is not writable in Phase 3":g.writable===!1?`non-writable ${g.fieldType} field`:`known export-only ${g.fieldType} field`;for(let[g,y]of s.columns.entries()){if(d.has(y)||y===o)continue;let T=p.get(y);if(T)c.push({column:y,reason:E(T),nonEmptyCells:f(g)});else if(e.ignoreUnknownColumns)u.push({column:y,reason:"unknown column ignored by explicit policy",nonEmptyCells:f(g)});else throw new M(`ERR_IMPORT_UNKNOWN_COLUMN: unknown CSV header "${y}".`)}for(let g of n){let y=p.get(g);if(!y)throw new Error(`ArgumentError: DML target field ${g} does not exist.`);if(y.inSubtable||y.writable===!1||y.fieldType==="FILE"||y.fieldType==="SUBTABLE")throw new Error(`ArgumentError: DML target field ${g} is not writable (${y.fieldType}).`)}let R=[];return{rows:s.rows.map(g=>{let y=[],T={};for(let A of n){let N=g[l.get(A)];try{T[A]=hu(N,p.get(A)?.fieldType,{cliKintone:!0})}catch(w){if(!(w instanceof zr))throw w;T[A]=N,y.push({field:A,code:w.code,message:w.message})}}return R.push(y),T}),columns:[...n],columnMeta:new Map(n.map(g=>[g,{fieldType:p.get(g)?.fieldType??"SINGLE_LINE_TEXT"}])),importRowErrors:R,...o?{recordNumberSourceValues:s.rows.map(g=>g[l.get(o)])}:{},importAudit:{mapping:"BY_NAME",writtenColumns:[...n],ignoredKnownColumns:c,ignoredUnknownColumns:u}}}return{rows:s.rows.map(l=>Object.fromEntries(s.columns.map((p,d)=>[p,l[d]]))),columns:s.columns,columnMeta:new Map(s.columns.map(l=>[l,{fieldType:"SINGLE_LINE_TEXT"}]))}}var Xr=(e,t,r)=>{throw new M(`JSON subtable validation failed (parentRow=${e}, field=${t}): ${r}`)};function Tu(e,t,r,n,i=n){if(t.encoding&&t.encoding!=="utf8")throw new M("JSON source is UTF-8 only.");let o=yi(t.bytes);if(o.length>n)throw new M(`source parent rows (${o.length}) exceed maxRecords (${n}).`);let s=new Map(r.map(l=>[l.kind==="FIELD"?l.field:l.subtableCode,l]));if(s.size!==r.length)throw new M("IMPORT targets contain duplicates.");let a=0;return{records:o.map((l,p)=>{let d=p+1;for(let E of l.keys())s.has(E)||Xr(d,E,"unknown key (not declared in INTO).");let c=new Map,u=new Map,f=new Set;for(let E of r){let R=E.kind==="FIELD"?E.field:E.subtableCode;if(!l.has(R))continue;let m=l.get(R);if(E.kind==="FIELD"){m instanceof Map&&Xr(d,R,"object is not accepted for a top-level field."),c.set(R,m);continue}Array.isArray(m)||Xr(d,R,"subtable value must be an array."),f.add(R);let g=new Set(E.children),y=m.map((T,A)=>{T instanceof Map||Xr(d,R,`childRow=${A+1} must be an object.`);let N=T;for(let w of N.keys())g.has(w)||Xr(d,w,`unknown child key in subtable ${R} at childRow=${A+1}.`);if(a++,a>i)throw new M(`source child rows (${a}) exceed limit (${i}).`);return{childRowNumber:A+1,values:N}});u.set(R,y)}return{rowNumber:d,top:c,subtables:u,replacementTables:f}})}}function wu(e,t,r,n,i,o){let s=gi(t.bytes,{encoding:e.encoding??t.encoding??"utf8",hasHeader:e.hasHeader,columns:e.columns});if(!e.hasHeader||s.columns[0]!=="*")throw new M('ERR_IMPORT_MARKER: first CSV header must be "*".');let a=new Map(s.columns.map((u,f)=>[u,f]));if(o&&!a.has(o))throw new M(`ERR_IMPORT_MISSING_COLUMN: required header "${o}" is missing.`);let l=r.filter(u=>u.kind==="FIELD"),p=r.filter(u=>u.kind==="SUBTABLE");for(let u of l)if(!a.has(u.field))throw new M(`ERR_IMPORT_MISSING_COLUMN: required header "${u.field}" is missing.`);for(let u of p){if(!u.rowIdSourceHeader||!a.has(u.rowIdSourceHeader))throw new M(`ERR_IMPORT_MISSING_COLUMN: row-ID header for ${u.subtableCode} is missing.`);for(let f of u.children)if(!a.has(f))throw new M(`ERR_IMPORT_MISSING_COLUMN: required child header "${f}" is missing.`)}let d=[],c;if(s.rows.forEach((u,f)=>{let E=f+2,R=u[0];if(R!==""&&R!=="*")throw new M(`ERR_IMPORT_MARKER: invalid marker ${JSON.stringify(R)} at source row ${E}.`);if(R==="*"){if(d.length>=i)throw new M(`source parent rows exceed maxRecords (${i}).`);c={rowNumber:d.length+1,markerRowNumber:E,top:new Map(l.map(m=>[m.field,u[a.get(m.field)]])),subtables:new Map(p.map(m=>[m.subtableCode,[]])),replacementTables:new Set(n),...o?{recordNumberSourceValue:u[a.get(o)]}:{}},d.push(c)}else if(c){for(let m of l){let g=u[a.get(m.field)];if(g!==""&&g!==c.top.get(m.field))throw new M(`ERR_IMPORT_PARENT_VALUE_ON_CONTINUATION: ${m.field} at source row ${E}.`)}if(o){let m=u[a.get(o)];if(m!==""&&m!==c.recordNumberSourceValue)throw new M(`ERR_IMPORT_PARENT_VALUE_ON_CONTINUATION: ${o} at source row ${E}.`)}}else throw new M(`ERR_IMPORT_MARKER: first data row must start a parent (source row ${E}).`);for(let m of p){let g=u[a.get(m.rowIdSourceHeader)],y=new Map(m.children.map(A=>[A,u[a.get(A)]]));if(g===""&&[...y.values()].every(A=>A===""))continue;let T=c.subtables.get(m.subtableCode);T.push({childRowNumber:T.length+1,sourceRowNumber:E,...g?{rowId:g}:{},values:y})}}),d.length===0)throw new M("CSV has no parent rows.");return{records:d}}var TE=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),wE=new Set(["SUBTABLE","FILE","CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function ds(e,t){if(t!=null&&e.invalidParentRows.size>t)throw new Error(`RejectLimitExceededError: rejected parents (${e.invalidParentRows.size}) exceed REJECT LIMIT (${t}).`)}function Cu(e,t,r,n,i){let o=new Map(r.filter(u=>!u.inSubtable).map(u=>[u.code,u])),s=new Map;for(let u of r)if(u.inSubtable&&u.subtableCode){let f=s.get(u.subtableCode);f||s.set(u.subtableCode,f=new Map),f.set(u.code,u)}let a=t.filter(u=>u.kind==="FIELD"),l=t.filter(u=>u.kind==="SUBTABLE");for(let u of a)Iu(u.field,o.get(u.field),void 0);for(let u of l){let f=o.get(u.subtableCode);if(!f||f.fieldType!=="SUBTABLE")throw new Error(`ArgumentError: IMPORT subtable ${u.subtableCode} does not exist.`);let E=s.get(u.subtableCode)??new Map;for(let R of u.children)Iu(R,E.get(R),u.subtableCode)}let p=new Map(l.map(u=>[u.subtableCode,{parentsPresent:0,childRows:0,validChildRows:0,invalidChildRows:0}])),d=e.records.map(u=>IE(u,a,l,o,s,n,i,p)),c=d.flatMap(u=>[...u.errors]);return{parents:d,errors:c,invalidParentRows:new Set(d.filter(u=>!u.valid).map(u=>u.parentRow)),tableCounts:p}}function IE(e,t,r,n,i,o,s,a){let l=[],p={};for(let u of t)e.top.has(u.field)&&ps(e.top.get(u.field),n.get(u.field),o,p,u.field,l,cs(e,s,u.field));let d={};if(s==="INSERT")for(let u of n.values())u.fieldType==="SUBTABLE"||u.writable===!1||e.top.has(u.code)||bu(u,o,d,l,cs(e,s,u.code));let c=new Map;for(let u of r){if(!e.subtables.has(u.subtableCode))continue;let f=a.get(u.subtableCode);f.parentsPresent++;let E=[];for(let R of e.subtables.get(u.subtableCode)){f.childRows++;let m=l.length,g={},y=i.get(u.subtableCode);for(let T of u.children){let A=y.get(T),N=cs(e,s,T,u.subtableCode,R.childRowNumber,R.sourceRowNumber??e.markerRowNumber);R.values.has(T)?ps(R.values.get(T),A,o,g,T,l,N):bu(A,o,g,l,N)}l.length===m?(f.validChildRows++,E.push(g)):f.invalidChildRows++}c.set(u.subtableCode,E)}return{parentRow:e.rowNumber,valid:l.length===0,top:p,subtables:c,replacementTables:e.replacementTables,errors:l}}function Iu(e,t,r){if(!t)throw new Error(r?`ArgumentError: IMPORT child ${e} does not belong to subtable ${r}.`:`ArgumentError: IMPORT top-level field ${e} does not exist.`);if(t.writable===!1||r&&wE.has(t.fieldType))throw new Error(`ArgumentError: IMPORT ${r?`child ${r}.${e}`:`field ${e}`} is not writable (${t.fieldType}).`)}function bu(e,t,r,n,i){let o=Tt(e.defaultValue)?"":e.defaultValue;ps(o,e,t,r,e.code,n,i,!Tt(e.defaultValue))}function ps(e,t,r,n,i,o,s,a=!1){let l=bE(e),p=he(l,t,r);p.ok?n[i]={value:PE(l,t)?l:p.value}:o.push({...s,code:p.code,message:a?`\u65E2\u5B9A\u5024: ${p.message}`:p.message})}function bE(e){return Pu(e)?e.lexeme:Array.isArray(e)?e.map(t=>t instanceof Map?t:Pu(t)?t.lexeme:t):e}function Pu(e){return typeof e=="object"&&e!==null&&e.kind==="number"}function PE(e,t){return TE.has(t.fieldType)&&Array.isArray(e)&&e.every(r=>typeof r=="object"&&r!==null&&"code"in r)}function cs(e,t,r,n,i,o){let s=o??e.markerRowNumber;return{operation:t,parentRow:e.rowNumber,field:r,...n?{subtable:n}:{},...i==null?{}:{subrow:i},...s==null?{}:{sourceRow:s},sourceValues:n?e.subtables.get(n)?.[i-1]?.values??new Map:e.top}}var fs=["$err_statement","$err_operation","$err_row","$err_field","$err_subtable","$err_subrow","$err_source_row","$err_code","$err_message"];function Es(e,t,r=1){return e.map(n=>{let i={};for(let o of t)i[o]=n.sourceValues.get(o)==null?"":CE(n.sourceValues.get(o));return i.$err_statement=String(r),i.$err_operation=n.operation,i.$err_row=String(n.parentRow),i.$err_field=n.field,i.$err_subtable=n.subtable??"",i.$err_subrow=n.subrow==null?"":String(n.subrow),i.$err_source_row=n.sourceRow==null?null:String(n.sourceRow),i.$err_code=n.code,i.$err_message=n.message,i})}function CE(e){return e==null?"":typeof e=="object"&&e!==null&&"kind"in e&&"lexeme"in e&&e.kind==="number"?String(e.lexeme):Array.isArray(e)?JSON.stringify(e):String(e)}function Rs(e,t,r){let n={};for(let[i,o]of e)n[i]={value:o};for(let[i,o]of t)n[i]={value:o.map(s=>({...r==="PRESERVE"&&s.rowId?{id:s.rowId}:{},value:Object.fromEntries([...s.values].map(([a,l])=>[a,{value:l}]))}))};return n}function Nu(e,t){return Rs(e,t,"DROP")}function Ou(e){for(let t of e.records)for(let[r,n]of t.subtables)for(let i of n)if(i.rowId!==void 0||i.values.has("_rid")||i.values.has("id"))throw new Error(`ArgumentError: JSON IMPORT subtable ${r} does not accept _rid/id; rows are always newly numbered.`)}function Lu(e,t,r){return e.map((n,i)=>{let o=t[i],s=o===void 0?void 0:r.get(o);if(o!==void 0&&!s)throw new Error(`InternalError: IMPORT UPSERT target APP record ${o} was not loaded.`);let a=[...n.subtables].map(([l,p])=>{let d=s?.record[l]?.value,c=Array.isArray(d)?d.length:0;return{table:l,existingRows:c,inputRows:p.length,addRows:p.length,deleteRows:c}});return{parentRow:n.parentRow,mode:o===void 0?"INSERT":"UPDATE",...o===void 0?{}:{targetId:o,revision:s?.revision},top:n.top,subtables:n.subtables,tables:a}})}function NE(e,t){let r=e[t]?.value;return Array.isArray(r)?r:[]}function _u(e){let t=new Map;for(let r of e)for(let[n,i]of r.subtables)for(let o of i){if(!o.rowId)continue;let s=`${n}\0${o.rowId}`;if(t.has(s))throw new Error(`ERR_SUBTABLE_ROW_ID_DUP_SOURCE: duplicate row ID ${o.rowId} in ${n}`);t.set(s,r.rowNumber)}}function vu(e,t,r,n,i){return t.map((o,s)=>{let a=e[s],l=r[s],p=l===void 0?void 0:n.get(l),d=[...o.errors];if(!p||l===void 0)return{parentRow:o.parentRow,targetId:l??0,valid:!1,top:o.top,subtables:new Map,tables:[],errors:d};let c=new Map,u=[];for(let f of o.replacementTables){let E=NE(p.record,f),R=new Set(E.map(w=>w.id).filter(w=>!!w)),m=a.subtables.get(f)??[],g=o.subtables.get(f)??[],y=0,T=0,A=0,N=m.map((w,L)=>{let b=g[L]??{};return w.rowId&&R.has(w.rowId)?(y++,{rowId:w.rowId,record:b}):(w.rowId&&((i.get(w.rowId)??[]).some(P=>P.parentId!==l||P.table!==f)&&d.push({operation:"UPDATE",parentRow:o.parentRow,field:w.rowId,subtable:f,subrow:w.childRowNumber,sourceRow:w.sourceRowNumber,code:"ERR_IMPORT_FIELD_OWNERSHIP",message:`rowIdOwnedElsewhere: ${w.rowId}`,sourceValues:w.values}),A++),T++,{record:b})});c.set(f,N),u.push({table:f,existingRows:E.length,inputRows:m.length,updateRows:y,addRows:T,deleteRows:E.length-y,rowIdNotFound:A})}return{parentRow:o.parentRow,targetId:l,...p.revision===void 0?{}:{revision:p.revision},valid:d.length===0,top:o.top,subtables:c,tables:u,errors:d}})}var ms="#__import_source";function Du(e){return{...e,from:{appId:0,alias:null,cteName:ms}}}function OE(e){return/^[0-9]+$/.test(e)?e.replace(/^0+(?=\d)/,""):null}function gs(e,t){let r=e.map(OE),n=new Set;for(let i of r)if(i!==null){if(n.has(i))throw new Error("ERR_RECORD_NUMBER_DUP_SOURCE: source contains a duplicate record number");n.add(i)}return{normalized:r,errors:r.map(i=>i===null?[{field:t,code:"ERR_RECORD_NUMBER_INVALID",message:`${t} must be a non-empty ASCII decimal record number`}]:[])}}var LE="\u691C\u7D22\u304C 10 \u4E07\u4EF6\u3067\u6253\u3061\u5207\u3089\u308C\u3001\u7D50\u679C\u304C\u6B20\u843D\u3057\u305F\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002",fr=class extends Error{constructor(){super("SearchAbortedError: kintone \u306E\u691C\u7D22\u304C 10 \u4E07\u4EF6\u3067\u6253\u3061\u5207\u3089\u308C\u305F\u305F\u3081\u3001\u5B8C\u5168\u306A\u5BFE\u8C61\u96C6\u5408\u3092\u78BA\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002"),this.name="SearchAbortedError"}},Be=new WeakMap,Rr=new WeakMap,ki=new WeakMap,ku=new WeakMap,_E=1;function vE(e,t){if(t)return t;let r=ku.get(e);return r||(r=`client:${_E++}`,ku.set(e,r)),r}async function Ps(e,t,r={}){let n=Date.now(),i=vE(t,r.cacheContext),o=Rm(e,r.enableImport===!0),s=DE(),a=kE(t,s),l={aborted:!1},p=UE(a,l,!ME(o)),d=await FE(o,p,r,i);return s.elapsedMs=Date.now()-n,{...xE(d,l),metrics:s}}function DE(){return{getCalls:0,postCalls:0,putCalls:0,deleteCalls:0,fieldCalls:0,numberPrecisionCalls:0,appsCalls:0,processStatusCalls:0,cursorCreateCalls:0,cursorGetCalls:0,cursorDeleteCalls:0,cursorRecordsScanned:0,cursorActiveCurrent:0,cursorActivePeak:0,cursorCleanupFailures:0,cursorCreateOutcomeUnknown:0,cursorQuarantinedCurrent:0,fetchedRows:0,elapsedMs:0}}function kE(e,t){return{getRecords:async r=>{t.getCalls+=1;let n=await e.getRecords(r);return t.fetchedRows+=n.records.length,n},openCursor:async r=>{t.cursorCreateCalls+=1;let n;try{n=await e.openCursor(r)}catch(s){throw s instanceof Error&&s.name==="CursorCreateOutcomeUnknownError"&&(t.cursorCreateOutcomeUnknown+=1,t.cursorQuarantinedCurrent+=1),s}t.cursorActiveCurrent+=1,t.cursorActivePeak=Math.max(t.cursorActivePeak,t.cursorActiveCurrent);let i=!1,o=()=>{i||(i=!0,t.cursorActiveCurrent-=1)};return{totalCount:n.totalCount,nextPage:async()=>{t.cursorGetCalls+=1;let s=await n.nextPage();return t.cursorRecordsScanned+=s.records.length,s.next||o(),s},close:async()=>{i||(t.cursorDeleteCalls+=1);try{await n.close(),o()}catch(s){throw t.cursorCleanupFailures+=1,t.cursorQuarantinedCurrent+=1,s}}}},postRecords:r=>(t.postCalls+=1,e.postRecords(r)),putRecords:r=>(t.putCalls+=1,e.putRecords(r)),deleteRecords:r=>(t.deleteCalls+=1,e.deleteRecords(r)),getApps:()=>(t.appsCalls+=1,e.getApps()),getFields:r=>(t.fieldCalls+=1,e.getFields(r)),getNumberPrecision:r=>(t.numberPrecisionCalls+=1,e.getNumberPrecision(r)),getProcessStatuses:r=>(t.processStatusCalls+=1,e.getProcessStatuses(r))}}function UE(e,t,r){return{...e,getRecords:async n=>{let i=await e.getRecords(n);if(i.searchAborted&&(t.aborted=!0,r))throw new fr;return i}}}function ME(e){return e.type==="SELECT"||e.type==="UNION"||e.type==="WITH"}function xE(e,t){if(!t.aborted||e.type!=="SELECT")return e;let r=new Set(e.warnings??[]);return r.add(LE),{...e,warnings:[...r]}}async function FE(e,t,r,n){let i=hs(e);if(i!==null&&!jR(e))throw new Error(`ParseError: variable @${i} is not defined in a batch.`);if(Cn("phase15b",e),Sa("phase15b",e),tr(e),e.type!=="EXPLAIN"&&await YE(e,t,n),e.type==="IMPORT")return GR(e,t,r,n);if(e.type==="UPDATE"&&e.applyBlocks?.length){if(e.validationErrorTable)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return qu(e,t,r,n)}if("validateOnly"in e&&e.validateOnly===!0){if(e.validationErrorTable)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return mc(e,t,{...r,onLimitReached:"error"},n,void 0,1)}if("onErrorSkip"in e&&e.onErrorSkip===!0)throw new Error("ArgumentError: ON ERROR SKIP requires a batch.");switch(e.type){case"VALIDATE":return BE(e,t,r,n);case"SELECT":return Et(e,t,r,n);case"UNION":return lc(e,t,r,n);case"WITH":return cR(e,t,r,n);case"INSERT":return BR(e,t,r,n);case"INSERT_SELECT":return Ac(e,t,r,n);case"UPSERT":return sm(e,t,r,n);case"UPSERT_SELECT":return Ic(e,t,r,n);case"UPDATE":return qu(e,t,r,n);case"DELETE":return om(e,t,r,n);case"REORDER":return dm(e,t,r,n);case"SHOW_APPS":return bc(t);case"DESCRIBE":return Pc(e,t,n);case"EXPLAIN":return hm(e,t,n,r.maxRecords??1e4,r.cursorMaxActive??2,e.query.type==="UPDATE"&&e.query.applyBlocks?.length?Pe(r.dmlMaxRows,"dmlMaxRows",rt):rt,e.query.type==="UPDATE"&&e.query.applyBlocks?.length?Pe(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",be):be);case"CREATE_TEMP_TABLE":throw new Error("ArgumentError: CREATE TEMP TABLE requires a batch (temp tables are batch-scoped).");case"DROP_TEMP_TABLE":throw new Error("ArgumentError: DROP TEMP TABLE requires a batch (temp tables are batch-scoped).");case"SET_VARIABLE":throw new Error("ArgumentError: SET variable requires a batch.");case"DECLARE_VARIABLE":throw new Error("ArgumentError: DECLARE variable requires a batch.");case"ASSERT":return VE(e,t,r,n)}}var Cs=["$id","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id","$err_count"],Ns=["$id","$err_subtable","$err_field","$err_code","$err_count"];function Os(e){let t=[],r=new Set,n=o=>{r.has(o)||(r.add(o),t.push(o))},i=o=>{if(Array.isArray(o)){o.forEach(i);return}if(o===null||typeof o!="object")return;let s=o;s.type==="FIELD"&&typeof s.field=="string"&&n(s.field),s.type==="FIELD_REF"&&typeof s.field=="string"&&n(s.field),Object.values(s).forEach(i)};return i(e),t}function KE(e=!1){let t=e?Ns:Cs;return new Map(t.map(r=>[r,{fieldType:r==="$id"||r==="$err_count"?"KSQL_NUMBER":"KSQL_STRING",sortKind:r==="$id"||r==="$err_count"?"number":"string",semantics:x(r==="$id"||r==="$err_count"?"number":"string")}]))}async function BE(e,t,r,n){if(e.errorTable)throw new Error("ArgumentError: VALIDATE INTO requires a batch.");return $E(e,t,r,n)}async function $E(e,t,r,n){let i=await J(e.appId,t,n),o=new Map(i.filter(I=>!I.inSubtable).map(I=>[I.code,I])),s=new Set(i.filter(I=>I.inSubtable).map(I=>I.code)),a=Bo(e,i),l=e.checkGroups??[],p=ir(l);for(let I of p){if(I.field!=="$id"&&!o.has(I.field)&&!s.has(I.field))throw ae(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${I.field} \u306F APP${e.appId} \u306B\u5B58\u5728\u3057\u307E\u305B\u3093`);if(I.field!=="$id"&&!o.has(I.field)&&s.has(I.field))throw new Error(`ArgumentError: VALIDATE \u306E CHECK \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${I.field} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let d=new Map([...o].map(([I,U])=>[I,U.fieldType]));d.set("$id","RECORD_NUMBER"),vt(e,d);let c=Os(e.where),u=[...new Set(["$id",...a.map(I=>I.subtableCode??I.field.code),...c,...p.map(I=>I.field)])];for(let I of c){if(I!=="$id"&&!o.has(I)&&!s.has(I))throw new Error(`ArgumentError: WHERE field ${I} does not exist in APP${e.appId}.`);if(I!=="$id"&&!o.has(I)&&s.has(I))throw new Error(`ArgumentError: VALIDATE \u306E WHERE \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${I} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let f=a.some(I=>I.field.fieldType==="NUMBER")?await $e(e.appId,t,n):void 0,E=I=>I.field==="$id"?z({fieldType:"__ID__"}):o.get(I.field)?.semantics??(o.has(I.field)?z(o.get(I.field)):void 0),R=ur(e.where,E);if(R.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Pt(R)}).`);let m=new Map([...o].map(([I,U])=>[I,U.fieldType])),g=new Map([...o.values()].flatMap(I=>I.optionOrder?[[I.code,new Set(Object.keys(I.optionOrder))]]:[])),y=e.where===null?null:R.capability==="EXACT_PUSHDOWN"?e.where:Xt(e.where,{allowUnqualifiedFields:!0,fieldTypes:m,fieldOptions:g,allowKlike:!1}),T=y===null?"":W(y),N=(await Ee(t.getRecords,e.appId,T,u,{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1,onLimit:"error"})).map(I=>({id:String(I.$id?.value??""),record:I,flat:Xe(I,null)})).filter(I=>e.where===null||q(e.where,I.flat,U=>d.get(U.field))),w=[],L=new Map,b=new Map,D=new Set,P=0,h=I=>{if(D.add(I.id),P+=1,e.summary){let H=JSON.stringify([I.id,I.subtable??"",I.field,I.code]),fe=b.get(H);fe?fe.$err_count=String(Number(fe.$err_count)+1):b.set(H,{$id:I.id,$err_subtable:I.subtable??"",$err_field:I.field,$err_code:I.code,$err_count:"1"});return}let U=JSON.stringify([I.id,I.subtable??"",I.field,I.code,I.message]),B=L.get(U);B?(B.$err_count=String(Number(B.$err_count)+1),I.subrow!==void 0&&(B.$err_subrow=`${B.$err_subrow},${I.subrow}`,B.$err_subrow_id=`${B.$err_subrow_id},${I.subrowId??""}`)):L.set(U,{$id:I.id,$err_field:I.field,$err_code:I.code,$err_message:I.message,$err_value:I.value,$err_subtable:I.subtable??"",$err_subrow:I.subrow===void 0?"":String(I.subrow),$err_subrow_id:I.subrowId??"",$err_count:"1"})},C=a.filter(I=>!I.subtableCode),O=new Map;for(let I of a){if(!I.subtableCode)continue;let U=O.get(I.subtableCode)??[];U.push(I),O.set(I.subtableCode,U)}for(let I of N){for(let U of C){let B=I.record[U.field.code]?.value,H=he(B,U.field,f);H.ok||h({id:I.id,field:U.field.code,code:H.code,message:H.message,value:Kr(B,U.field.fieldType)})}for(let[U,B]of O){let H=I.record[U]?.value;if(Array.isArray(H))for(let fe=0;fe<H.length;fe++){let F=H[fe];for(let _ of B){let V=F.value?.[_.field.code]?.value,re=he(V,_.field,f);if(!re.ok){let Ge=ti(U,fe,F);h({id:I.id,field:_.field.code,code:re.code,message:re.message,value:Kr(V,_.field.fieldType),...Ge})}}}}for(let U of Vn(l,I.flat,B=>d.get(B.field)))h({id:I.id,field:"",code:"ERR_CHECK",message:U.message,value:""})}if(e.summary)w.push(...b.values());else for(let I of L.values()){let U=Number(I.$err_count);I.$err_subtable!==""&&U>=2&&(I.$err_message=`${I.$err_message}\uFF08${U}\u884C: ${I.$err_subrow}\uFF09`),w.push(I)}let k={type:"SELECT",columns:[...e.summary?Ns:Cs],rows:w,rowCount:w.length,validateStats:{errorRecords:D.size,errorCount:P}};return Be.set(k,KE(e.summary===!0)),k}var dt=1e4;function ft(e,t,r,n,i,o){let s=e.get(t);if(s&&(s.columns.length!==r.length||s.columns.some((l,p)=>l!==r[p])||!GE(s.columnMeta,o)))throw new Error(`ArgumentError: validation error table ${t} has a different schema.`);let a=s?.rows??[];if(a.length+n.length>i)throw new Error(`ArgumentError: temp table ${t} exceeds max rows (${i}).`);e.set(t,{columns:[...r],rows:[...a,...n],columnMeta:o})}function GE(e,t){if(e===t)return!0;if(!e||!t||e.size!==t.size)return!1;for(let[r,n]of e){let i=t.get(r);if(!i||i.sortKind!==n.sortKind||i.fieldType!==n.fieldType||!xn(i.semantics,n.semantics))return!1}return!0}function hs(e){if(Array.isArray(e)){for(let t of e){let r=hs(t);if(r!==null)return r}return null}if(e!==null&&typeof e=="object"){let t=e;if((t.type==="VARIABLE"||t.type==="VARIABLE_COL"||t.type==="VARIABLE_IN_LIST")&&typeof t.name=="string")return t.name;for(let r of Object.values(t)){let n=hs(r);if(n!==null)return n}}return null}var nn=class extends Error{constructor(t){super(`AssertError: ${t}`),this.name="AssertError"}},cr=class extends Error{constructor(t){super(t),this.name="ScalarSubqueryError"}};async function VE(e,t,r,n,i){let o=await Ai(e.left,t,r,n,i),s=e.left.type==="NUMBER"||e.left.type==="ARITH"?x("number"):x("string");if(e.op==="BETWEEN"){if(e.low===null||e.high===null)throw new Error("ArgumentError: malformed ASSERT statement.");let l=await Ai(e.low,t,r,n,i),p=await Ai(e.high,t,r,n,i);if(!At(">=",o,l,s)||!At("<=",o,p,s))throw new nn(`assertion failed: ${e.text} (actual: ${o}).`);return{type:"ASSERT",condition:e.text}}if(e.right===null)throw new Error("ArgumentError: malformed ASSERT statement.");let a=await Ai(e.right,t,r,n,i);if(!At(e.op,o,a,s))throw new nn(`assertion failed: ${e.text} (actual: ${o}).`);return{type:"ASSERT",condition:e.text}}async function Ai(e,t,r,n,i){switch(e.type){case"VARIABLE":throw new Error(`ParseError: unresolved batch variable @${e.name}.`);case"NUMBER":return G(e);case"STRING":return e.value;case"ARITH":return String(ys(e));case"SCALAR_SUBQUERY":try{return await WE(e.query,t,r,n,i)}catch(o){throw o instanceof cr?new nn(o.message):o}}}async function WE(e,t,r,n,i){let{query:o,probed:s}=HE(e),a=await tn(o,t,r,n,i);if(a.columns.length!==1)throw new cr(`scalar subquery returned ${a.columns.length} columns (expected 1 column).`);if(a.rowCount===0)throw new cr("scalar subquery returned no rows (expected 1 row).");if(a.rowCount>1){let l=s&&a.rowCount===2?"2 or more rows":`${a.rowCount} rows`;throw new cr(`scalar subquery returned ${l} (expected 1 row).`)}return a.rows[0]?.[a.columns[0]]??""}function HE(e){return ne(e).type!=="NONE"||e.columns.some(r=>r.type==="AGGREGATE"||r.type==="ARITH_AGG_COL")||e.distinct||e.limit!==null?{query:e,probed:!1}:{query:{...e,limit:2},probed:!0}}function ys(e){if(e.type==="NUMBER")return e.value;if(e.type==="ARITH"){let t=ys(e.left),r=ys(e.right);switch(e.op){case"+":return t+r;case"-":return t-r;case"*":return t*r;case"/":return t/r;case"%":return t%r}}throw new Error(`ArgumentError: unsupported operand in ASSERT expression: ${e.type}`)}async function Ui(e,t,r,n,i=!1){let o=[e.from,...e.joins.map(u=>u.table)],s=i||Ue(e.where)?[...new Set(o.filter(u=>u.cteName===null).map(u=>u.appId))]:[],a=new Map(await Promise.all(s.map(async u=>{let f=await J(u,t,r);return[u,new Map(f.map(E=>[E.code,E]))]}))),l=new Set,p=u=>{if(Array.isArray(u)){u.forEach(p);return}if(u===null||typeof u!="object")return;let f=u;if(f.type!=="SELECT"){if(f.type==="BINARY"&&[">","<",">=","<="].includes(String(f.op))){let E=f.left;E?.type==="FIELD"&&typeof E.field=="string"&&l.add(E.field)}Object.values(f).forEach(p)}};p(e.where),p(e.having);for(let u of e.columns)u.type==="CASE_COL"&&p(u.expr);let d=new Map;await Promise.all([...a].map(async([u,f])=>{if(![...l].some(m=>f.get(m)?.fieldType==="STATUS"))return;let R=await xs(u,t,r);R&&d.set(u,R)}));let c=(u,f,E)=>{if(f==="$id")return nr(z({fieldType:"__ID__"}),u.appId,"$id");if(E&&u.subtableCode){if(f==="_rid")return x("string");if(f==="_idx"||f==="_pid")return x("number")}let R=a.get(u.appId)?.get(Re(u,f));if(!R)return;let m=R.semantics??z(R),g=R.fieldType==="STATUS"&&d.has(u.appId)?{...m,optionOrder:d.get(u.appId)}:m;return nr(g,u.appId,R.code)};return u=>{if(u.tableAlias!==null){if(u.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null)return c(e.from,u.field,!1);let E=o.find(R=>Le(R)===u.tableAlias);return E?E.cteName!==null?n?.get(E.cteName)?.columnMeta?.get(u.field)?.semantics??x("string"):c(E,u.field,!0):void 0}if(e.joins.length===0)return e.from.cteName!==null?n?.get(e.from.cteName)?.columnMeta?.get(u.field)?.semantics??x("string"):c(e.from,u.field,!0);let f=o.flatMap(E=>{let R=E.cteName!==null?n?.get(E.cteName)?.columnMeta?.get(u.field)?.semantics:c(E,u.field,!0);return R?[R]:[]});if(f.length===1)return f[0];if(!o.some(E=>Ti(E,u.field)!==void 0))return f.length>1?x("string"):void 0}}function Ls(e){let t=r=>{if(r===null||typeof r!="object")return!1;if(Array.isArray(r))return r.some(t);let n=r;return n.type==="CASE_WHEN"&&n.branches?.some(i=>Ue(i.condition))?!0:Object.values(n).some(t)};return e.columns.some(t)}function Qu(e,t){let r=new Map;for(let n of e.columns){if(!("alias"in n)||!n.alias)continue;let i;n.type==="FIELD"?i=t(Oe(n.field)):n.type==="ARITH_COL"||n.type==="ARITH_AGG_COL"||n.type==="WINDOW_COL"?i=x("number"):n.type==="AGGREGATE"?n.func==="MIN"||n.func==="MAX"||n.func==="MODE"?n.arg.type!=="WILDCARD"&&(i=ks(n.arg,o=>{let s=t(o);if(s)return{sortKind:s.compareMode==="number"||s.compareMode==="recordNumber"?"number":"string",fieldType:s.fieldType,semantics:s}}).semantics):i=n.func==="GROUP_CONCAT"?x("string"):x("number"):n.type==="STRFUNC_COL"?i=Nt(n.expr).semantics:(n.type==="LITERAL_COL"||n.type==="SCALAR_SUBQUERY_COL"||n.type==="CASE_COL"||n.type==="SCALAR_VALUE_COL")&&(i=x("string")),i&&r.set(n.alias,i)}return n=>n.tableAlias===null&&r.has(n.field)?r.get(n.field):t(n)}async function bi(e,t,r,n){if(e.where===null)return ur(null,()=>{});let i=await Ui(e,t,r,n);return ur(e.where,i)}function Pt(e){let t=e.reasons.find(n=>n.code==="WHERE_FIELD_UNRESOLVED"||n.code==="WHERE_OPERATOR_UNSUPPORTED")??e.reasons[0];return[t?.field?`field=${t.field}`:null,t?.fieldType?`type=${t.fieldType}`:null,t?.operator?`operator=${t.operator}`:null,t?.code?`reason=${t.code}`:null].filter(n=>n!==null).join(", ")||"reason=WHERE_UNSUPPORTED"}function Pi(e){return e.orderBy.length>0||e.columns.some(t=>t.type==="WINDOW_COL"&&t.orderBy.length>0)}async function pr(e,t,r){if(e.subtableCode||e.type==="UPDATE"&&e.from!=null)return;let n=Ue(e.where)?await J(e.appId,t,r):[],i=new Map(n.map(s=>[s.code,s]));if(e.where.type==="BOOLEAN"&&e.where.value===!1)return;let o=ur(e.where,s=>{if(s.field==="$id")return z({fieldType:"__ID__"});let a=i.get(s.field);return a?.semantics??(a?z(a):void 0)});if(o.capability!=="EXACT_PUSHDOWN")throw new j(`WHERE predicate cannot be represented by kintone REST (${Pt(o)})`)}async function Et(e,t,r,n,i,o=!1){let s;if(await Mi(e,t,n,i),zE(e))return s=QE(e),o&&Be.set(s,await Ss(e,s.columns,t,n,i)),s;await Cc(e,t,r,n,i);let a=await bi(e,t,n,i);if(a.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Pt(a)}).`);let l=He(e),p=a.capability==="EXACT_PUSHDOWN"?l:"FULL_SCAN",d=await sn(e,t,n,i),c=Pi(e)?(e.orderMode==="KINTONE_NATIVE"?Hr:Wr)({stmt:e,staticMode:p,whereCapability:a.capability,orderSemantics:d.semantics,maxRecords:r.maxRecords??1e4,hasKlike:oe(e.where)}):null;await eR(e,c?.kind==="CANONICAL_LOCAL"?"FULL_SCAN":p,t,n);let u=Zu(e,r,c);try{p==="SIMPLE"?s=await ZE(e,t,u.effectiveOptions,n,c,d):s=await uR(e,t,u.effectiveOptions,n,i,a.capability==="EXACT_PUSHDOWN",d)}catch(f){ec(u,f)}return o&&Be.set(s,await Ss(e,s.columns,t,n,i)),s}var on=new WeakMap;async function YE(e,t,r){let n=new Set,i=async o=>{if(o===null||typeof o!="object"||n.has(o))return;if(n.add(o),Array.isArray(o)){for(let a of o)await i(a);return}let s=o;s.type==="SELECT"&&await Mi(o,t,r);for(let a of Object.values(s))await i(a)};await i(e)}async function jE(e,t,r,n){let i=[e.from,...e.joins.map(d=>d.table)],o=i.filter(d=>d.cteName===null),s=new Map(await Promise.all([...new Set(o.map(d=>d.appId))].map(async d=>{let c=await J(d,t,r);return[d,new Map(c.map(u=>[u.code,u]))]}))),a=(d,c)=>{if(c==="$id")return"$id";let u=Re(d,c);return s.get(d.appId)?.has(u)?u:null},l=(d,c)=>{if(d.cteName===null)return!1;let u=n?.get(d.cteName);return u?u.columns.includes(c):!0},p=(d,c,u,f)=>{let E=i.filter(g=>g.cteName===null&&a(g,u.field)!==null).length,R=i.some(g=>l(g,u.field)),m=Le(d);return{canonicalId:`source:${c}:APP${d.appId}:${f}`,directKey:u.tableAlias&&m?`${u.tableAlias}.${u.field}`:u.field,unqualifiedBridgeKey:E===1&&!R?u.field:null,physical:!0}};return d=>{if(d.tableAlias!==null){let f=i.findIndex(m=>Le(m)===d.tableAlias);if(f<0)throw new Error(`ArgumentError: B65 field ${d.tableAlias}.${d.field} has an unknown table alias.`);let E=i[f];if(E.cteName!==null)throw new Error(`ArgumentError: B65 field ${d.tableAlias}.${d.field} resolves to materialized source ${E.cteName}; physical APP fields are required.`);let R=a(E,d.field);if(R===null)throw new Error(`ArgumentError: B65 field ${d.tableAlias}.${d.field} does not exist in APP${E.appId}.`);return p(E,f,d,R)}let c=i.flatMap((f,E)=>{if(f.cteName!==null)return[];let R=a(f,d.field);return R===null?[]:[{table:f,tableIndex:E,code:R}]}),u=i.filter(f=>l(f,d.field));if(c.length+u.length>1)throw new Error(`ArgumentError: B65 field ${d.field} is ambiguous across multiple sources.`);if(c.length===1&&u.length===0){let f=c[0];return p(f.table,f.tableIndex,d,f.code)}throw u.length===1?new Error(`ArgumentError: B65 field ${d.field} resolves to a materialized CTE/temp column; physical APP fields are required.`):new Error(`ArgumentError: B65 field ${d.field} does not exist in a physical APP source.`)}}async function Mi(e,t,r,n){on.delete(e);let i=ne(e),o=JSON.stringify(e.columns).includes('"GROUPING_')||JSON.stringify(e.orderBy).includes('"GROUPING_');if(i.type==="NONE"&&!o)return;let s=await jE(e,t,r,n),a=Ha(e,s,Va);a&&on.set(e,a)}function qE(e){let t=[...e].join(", ");return`${e.size===1&&e.has("STATISTICAL_AGGREGATE")?"\u7D71\u8A08\u96C6\u7D04\u306E\u6B63\u3057\u3044\u7D50\u679C":e.size===1&&e.has("GROUPING_SETS")?"\u5C0F\u8A08\u30FB\u7DCF\u8A08\u306E\u6B63\u3057\u3044\u7D50\u679C":e.has("GROUPING_SETS")?"\u30AF\u30A8\u30EA\u306E\u6B63\u3057\u3044\u7D50\u679C":"ORDER BY\u306E\u6B63\u3057\u3044\u7D50\u679C"}\u306B\u306F\u5B8C\u5168\u306A\u5019\u88DC\u96C6\u5408\u304C\u5FC5\u8981\u3067\u3059\u3002complete input reason: ${t}\u3002`}function Zu(e,t,r){let n=r?.kind==="CANONICAL_REST_TOP_N"||r?.kind==="KORDER_NATIVE"||r?.kind==="KORDER_CURSOR"?gt({...e,orderBy:[]}):gt(e),i=n.size>0&&t.onLimitReached==="truncate";return{reasons:n,effectiveOptions:i?{...t,onLimitReached:"error"}:t,truncateWasDisabled:i}}function ec(e,t){throw e.reasons.size>0&&t instanceof ye?new ye(qE(e.reasons)+(e.truncateWasDisabled?"onLimit=truncate\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002":"")+t.message):t}async function Uu(e,t){try{return await t()}catch(r){ec(e,r)}}function et(e){return e?.type==="BOOLEAN"&&e.value===!1}function zE(e){return e.from.appId===0&&e.from.cteName===nt}function Ci(e){return e.type==="FIELD_REF"?!0:e.type==="ARITH"?Ci(e.left)||Ci(e.right):e.type==="STRING_FUNC"?_s(e):!1}function XE(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:Jr(e)}function Jr(e){return e.type==="FIELD"?!0:e.type==="STRING_FUNC"?_s(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?Jr(e.left)||Jr(e.right):e.type==="CASE_WHEN"?[...e.branches.map(r=>r.result),...e.elseResult?[e.elseResult]:[]].some(r=>r.type!=="ARRAY"&&(r.type==="FIELD_REF"||r.type==="ARITH"?Ci(r):Jr(r))):!1}function _s(e){return e.args.some(t=>XE(t))}function JE(e){for(let t of e.columns)switch(t.type){case"VARIABLE_COL":throw new Error(`internal error: unresolved SELECT variable @${t.name}`);case"LITERAL_COL":break;case"ARITH_COL":if(Ci(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"STRFUNC_COL":if(_s(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"SCALAR_VALUE_COL":if(Jr(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"WINDOW_COL":if(t.partitionBy.length>0||t.orderBy.length>0)throw new Error("ArgumentError: field reference is not allowed without FROM.");break;default:throw new Error(`ArgumentError: ${t.type} is not supported without FROM.`)}}function QE(e){if(e.joins.length>0||e.where||ne(e).type!=="NONE"||e.having||e.orderBy.length>0||e.distinct)throw new Error("ArgumentError: JOIN/WHERE/GROUP BY/HAVING/ORDER BY/DISTINCT are not supported without FROM.");JE(e);let t=es([{}],e.columns),{rows:r,columns:n}=Ei(t,e.columns),i=fi(r,e.limit,e.offset);return{type:"SELECT",rows:i,columns:n,rowCount:i.length,warnings:[]}}async function ZE(e,t,r,n,i,o){let s=i?.kind==="CANONICAL_REST_TOP_N"?sc(e):e,a=Nn(s),l=i?.kind==="CANONICAL_LOCAL"?ht(e,e.from):a.fields,p=await Ds(e,t,n),d=Us(e,p),c=e.columns.some(L=>L.type==="CASE_COL")?await Ui(e,t,n,void 0,Ls(e)):void 0,u=r.maxRecords??1e4,f=new Set,E=r.onLimitReached??"error",R=r.fetchParallel??1,m=e.orderBy.length>0?i?.kind==="CANONICAL_REST_TOP_N"||i?.kind==="KORDER_NATIVE"||i?.kind==="KORDER_CURSOR":e.limit!==null&&e.limit<=500,g=e.limit===null?null:(e.offset??0)+e.limit,y=e.orderBy.length===0&&g!==null&&g<=u&&!oe(e.where)?g:void 0,T;if((i?.kind==="KORDER_NATIVE"||i?.kind==="KORDER_CURSOR")&&e.limit===0)T=[];else if(i?.kind==="KORDER_CURSOR"){let L=await Jl({client:t,app:a.app,fields:a.fields,query:qo(e),offset:e.offset??0,limit:e.limit});T=L.records,L.cleanupWarning&&f.add(L.cleanupWarning)}else if(m)T=(await t.getRecords({app:a.app,query:a.query,fields:a.fields})).records;else{let L=e.where?W(e.where):"";T=await Ee(t.getRecords,a.app,L,l,{parallel:R,maxRecords:u,stopAfter:y,onLimit:E,onTruncate:b=>{f.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${b} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${b} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`)}})}let A=T.map(L=>Xe(L,null));m||(A=Qo(A,e.orderBy,o.optionOrders,o.sortKinds,o.semantics,Zo(e.columns,void 0,d.row,c)),A=fi(A,e.limit,e.offset));let{rows:N,columns:w}=Ei(A,e.columns,void 0,d.row,void 0,c);return{type:"SELECT",rows:N,columns:w,rowCount:N.length,warnings:[...f]}}async function eR(e,t,r,n){let i=new Map,o=(s,a)=>{if(a.length===0)return;let l=i.get(s);l||(l=new Set,i.set(s,l));for(let p of a)l.add(p)};if(t==="SIMPLE"){let s=Nn(e);o(s.app,s.fields)}else{let s=[e.from,...e.joins.map(a=>a.table)].filter(a=>a.cteName===null);for(let a of s)o(a.appId,ht(e,a))}for(let[s,a]of i.entries()){let l=[...a].filter(u=>!RR(u));if(l.length===0)continue;let p=await J(s,r,n);if(p.length===0)continue;let d=new Set(p.map(u=>u.code)),c=l.filter(u=>!d.has(u));if(c.length>0)throw new Error(`ArgumentError: unknown field code(s): ${c.join(", ")} (APP${s})`)}}function tc(e){return e.where===null||e.from.subtableCode||e.from.cteName!==null?null:e.joins.length===0?Cr(e.where,{tableAlias:e.from.alias??void 0,allowUnqualifiedFields:!0}):e.from.alias?Cr(e.where,{tableAlias:e.from.alias}):null}async function rc(e,t,r){let n=new Map,i=(s,a)=>{if(a===null)return;let l=n.get(s);l?l.push(a):n.set(s,[a])};if(i(e.from.appId,tc(e)),e.where!==null)for(let s of e.joins){if(!s.table.alias||s.table.subtableCode||s.table.cteName!==null)continue;let a=Cr(e.where,{tableAlias:s.table.alias});i(s.table.appId,a)}let o=await Promise.all([...n.entries()].map(async([s,a])=>{let[l,p]=await Promise.all([de(s,t,r),mR(s,t,r)]),d=tR(a).filter(c=>l.get(c)==="STATUS");if(d.length>0){let c=await Ms(s,t,r);if(c.enable&&c.states&&c.states.length>0){let u=new Set(c.states.map(f=>f.name));for(let f of d)p.set(f,u)}}return[s,l,p]}));return{fieldTypesByApp:new Map(o.map(([s,a])=>[s,a])),fieldOptionsByApp:new Map(o.map(([s,,a])=>[s,a]))}}function tR(e){let t=new Set,r=n=>{if(n.type==="BINARY"){n.left.type==="FIELD"&&t.add(n.left.field);return}if(n.type==="LOGICAL"){r(n.left),r(n.right);return}(n.type==="GROUP"||n.type==="NOT")&&r(n.expr)};for(let n of e)r(n);return[...t]}function Ze(e,t){if(e!==null)switch(e.type){case"BINARY":(e.op==="IN"||e.op==="NOT_IN")&&e.left.type==="FIELD"&&t.push(e.left),e.left.type==="CASE_FIELD"&&Ni(e.left.expr,t),e.right.type==="CASE_VALUE"&&Ni(e.right.expr,t);return;case"LOGICAL":Ze(e.left,t),Ze(e.right,t);return;case"NOT":case"GROUP":Ze(e.expr,t);return;case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}function Ni(e,t){for(let r of e.branches)Ze(r.condition,t)}function rR(e){let t=[];Ze(e.where,t),Ze(e.having,t);for(let r of e.columns)r.type==="CASE_COL"&&Ni(r.expr,t);return t}function Le(e){return e.alias??e.cteName}function nc(e,t){return[e.from,...e.joins.map(r=>r.table)].find(r=>Le(r)===t)}function vs(e){return[e.from,...e.joins.map(t=>t.table)].filter(t=>t.cteName===null)}async function Ds(e,t,r){let n=rR(e);if(n.length===0)return new Map;let i=new Set,o=vs(e);for(let a of n){if(a.tableAlias!==null){if(a.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){i.add(e.from.appId);continue}let l=nc(e,a.tableAlias);l&&l.cteName===null&&i.add(l.appId);continue}if(e.joins.length===0){e.from.cteName===null&&i.add(e.from.appId);continue}for(let l of o)i.add(l.appId)}let s=await Promise.all([...i].map(async a=>[a,await de(a,t,r)]));return new Map(s)}function Oe(e){let t=e.indexOf(".");return t>0?{type:"FIELD",tableAlias:e.slice(0,t),field:e.slice(t+1)}:{type:"FIELD",tableAlias:null,field:e}}function ic(e,t,r){e!=="MIN"&&e!=="MAX"&&e!=="MODE"||t.type==="WILDCARD"||bt(t,r)}function bt(e,t){if(e.type==="FIELD_REF"){t.push(Oe(e.field));return}if(e.type==="FIELD"){t.push(e);return}if(e.type==="ARITH"){bt(e.left,t),bt(e.right,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){bt(e.left,t),bt(e.right,t);return}if(e.type==="STRING_FUNC"){for(let r of e.args)r.type!=="AGG_REF"&&r.type!=="AGG_ARITH"&&bt(r,t);return}if(e.type==="CASE_WHEN")for(let r of[...e.branches.map(n=>n.result),...e.elseResult?[e.elseResult]:[]])r.type!=="ARRAY"&&bt(r,t)}function Oi(e,t){if(e.type==="AGG_REF"){ic(e.func,e.arg,t);return}e.type==="AGG_ARITH"&&(Oi(e.left,t),Oi(e.right,t))}function As(e,t){for(let r of e.args)r.type==="AGG_REF"||r.type==="AGG_ARITH"?Oi(r,t):Qr(r,t)}function Qr(e,t){if(e.type==="STRING_FUNC"){As(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){Qr(e.left,t),Qr(e.right,t);return}if(e.type==="CASE_WHEN"){let r=[...e.branches.map(n=>n.result),...e.elseResult?[e.elseResult]:[]];for(let n of r)n.type==="STRING_FUNC"?As(n,t):n.type!=="ARRAY"&&n.type!=="FIELD_REF"&&n.type!=="ARITH"&&Qr(n,t)}}function nR(e){let t=[];for(let r of e)r.type==="AGGREGATE"?ic(r.func,r.arg,t):r.type==="ARITH_AGG_COL"?Oi(r.expr,t):r.type==="STRFUNC_COL"?As(r.expr,t):r.type==="SCALAR_VALUE_COL"&&Qr(r.expr,t);return t}var iR=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DROP_DOWN","RADIO_BUTTON","STATUS","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME"]);function oR(e){return e.sortKind!==void 0?e.sortKind:e.fieldType==="NUMBER"||e.fieldType==="RECORD_NUMBER"?"number":iR.has(e.fieldType)?"string":void 0}async function oc(e,t,r,n){let i=nR(e.columns);if(i.length===0)return;let o=new Set,s=vs(e);for(let f of i)if(f.tableAlias!==null){if(f.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){o.add(e.from.appId);continue}let E=nc(e,f.tableAlias);E&&E.cteName===null&&o.add(E.appId)}else if(e.joins.length===0)e.from.cteName===null&&o.add(e.from.appId);else for(let E of s)o.add(E.appId);let a=new Map(await Promise.all([...o].map(async f=>{let E=await J(f,t,r);return[f,new Map(E.map(R=>[R.code,R]))]}))),l=new Map,p=new Set(i.map(f=>f.field));await Promise.all([...a].map(async([f,E])=>{if(![...p].some(m=>E.get(m)?.fieldType==="STATUS"))return;let R=await xs(f,t,r);R&&l.set(f,R)}));let d=[e.from,...e.joins.map(f=>f.table)],c=(f,E)=>{let R=f.semantics??z(f);return f.fieldType==="STATUS"&&l.has(E)?{...R,optionOrder:l.get(E)}:R};return f=>{let E;if(f.tableAlias!==null)if(f.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null)E=a.get(e.from.appId)?.get(f.field);else{let m=d.find(g=>Le(g)===f.tableAlias);if(!m)return;if(m.cteName!==null)return n?.get(m.cteName)?.columnMeta?.get(f.field)?.semantics??x("string");E=a.get(m.appId)?.get(Re(m,f.field))}else if(e.joins.length===0){if(e.from.cteName!==null)return n?.get(e.from.cteName)?.columnMeta?.get(f.field)?.semantics??x("string");E=a.get(e.from.appId)?.get(Re(e.from,f.field))}else{let m=d.flatMap(g=>{if(g.cteName!==null){let T=n?.get(g.cteName);return T?.columns.includes(f.field)?[T.columnMeta?.get(f.field)?.semantics??x("string")]:[]}let y=a.get(g.appId)?.get(Re(g,f.field));return y?[c(y,g.appId)]:[]});return m.length!==1?void 0:m[0]}if(!E)return;let R=f.tableAlias!==null?d.find(m=>Le(m)===f.tableAlias):e.joins.length===0?e.from:void 0;return c(E,R?.appId??e.from.appId)}}function Re(e,t){return e.subtableCode&&t.startsWith("_p.")?t.slice(3):t}function Ti(e,t){if(e.subtableCode){if(t==="_rid")return"SINGLE_LINE_TEXT";if(t==="_idx"||t==="_pid")return"NUMBER"}}function Fe(e,t){let r=e.semantics??z(e);return{sortKind:oR(e),fieldType:e.fieldType,semantics:t===void 0?r:nr(r,t,e.code)}}function sc(e){return e.orderBy.some(r=>r.key.type==="FIELD_NAME"&&r.key.name==="$id")?e:{...e,orderBy:[...e.orderBy,{key:{type:"FIELD_NAME",name:"$id"},direction:"ASC"}]}}function Y(e){return{sortKind:e,semantics:x(e)}}function Ke(){return{semantics:x("string","KSQL_UNKNOWN")}}function ac(e="KSQL_ARRAY"){return{semantics:{fieldType:e,compareMode:"unsupported",inSubtable:!1,requiresCollectionOperators:!1}}}function dr(e){if(e==="$id")return{sortKind:"number",fieldType:"__ID__",semantics:z({fieldType:"__ID__"})};if(e==="_rid")return Y("string");if(e==="_pid"||e==="_idx"||e==="$revision")return Y("number")}var sR=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function Nt(e){if(e.func==="CAST"){let t=e.args[1];return t?.type==="STRING"&&t.value==="NUMBER"?Y("number"):Y("string")}return sR.has(e.func)?Y("number"):Y("string")}function Er(e,t){return e.type==="STRING"?Y("string"):e.type==="ARRAY"?ac():e.type==="NUMBER"||e.type==="ARITH"||e.type==="SCALAR_ARITH"?Y("number"):e.type==="STRING_FUNC"?Nt(e):e.type==="FIELD_REF"?t(Oe(e.field))??Ke():e.type==="FIELD"?t(e)??Ke():Ke()}function xi(e){if(e.length===0)return Ke();let t=e[0],r=n=>{if(!n)return;let{source:i,...o}=n;return o};return e.every(n=>n.sortKind===t.sortKind&&n.fieldType===t.fieldType&&xn(r(n.semantics),r(t.semantics)))?e.every(i=>xn(i.semantics,t.semantics))?t:{...t,semantics:r(t.semantics)}:e.some(n=>n.semantics?.compareMode==="unsupported")?ac("KSQL_MIXED_UNSUPPORTED"):Ke()}function ks(e,t){if(e.type==="FIELD_REF")return t(Oe(e.field))??Ke();if(e.type==="FIELD")return t(e)??Ke();if(e.type==="NUMBER"||e.type==="ARITH"||e.type==="SCALAR_ARITH")return Y("number");if(e.type==="STRING"||e.type==="CONCAT_OP"||e.type==="VARIABLE")return Y("string");if(e.type==="STRING_FUNC")return Nt(e);let r=e.branches.map(n=>Er(n.result,t));return e.elseResult&&r.push(Er(e.elseResult,t)),xi(r)}function aR(e){return e.columns.some(t=>t.type==="FIELD"||t.type==="WILDCARD"||t.type==="PARENT_WILDCARD"||t.type==="CASE_COL"||t.type==="AGGREGATE"&&(t.func==="MIN"||t.func==="MAX"||t.func==="MODE"))}async function Ss(e,t,r,n,i){let o=new Map;aR(e)&&await Promise.all(vs(e).map(async c=>{if(o.has(c.appId))return;let u=await J(c.appId,r,n);o.set(c.appId,new Map(u.map(f=>[f.code,f])))}));let s=[e.from,...e.joins.map(c=>c.table)],a=c=>{if(c.tableAlias!==null){if(c.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){let R=o.get(e.from.appId)?.get(c.field);return R?Fe(R,e.from.appId):void 0}let f=s.find(R=>Le(R)===c.tableAlias);if(!f)return;if(f.cteName!==null)return i?.get(f.cteName)?.columnMeta?.get(c.field);let E=o.get(f.appId)?.get(Re(f,c.field));return E?Fe(E,f.appId):dr(c.field)}if(e.joins.length===0){if(e.from.cteName!==null)return i?.get(e.from.cteName)?.columnMeta?.get(c.field);let f=o.get(e.from.appId)?.get(Re(e.from,c.field));return f?Fe(f,e.from.appId):dr(c.field)}let u=s.flatMap(f=>{if(f.cteName!==null){let m=i?.get(f.cteName);return m?.columns.includes(c.field)?[m.columnMeta?.get(c.field)]:[]}let E=o.get(f.appId)?.get(Re(f,c.field)),R=E?Fe(E,f.appId):dr(c.field);return R?[R]:[]});return u.length===1?u[0]:void 0},l=new Map,p=e.columns.some(c=>c.type==="WILDCARD"||c.type==="PARENT_WILDCARD");if(e.columns.length===1&&(e.columns[0].type==="WILDCARD"||e.columns[0].type==="PARENT_WILDCARD")){for(let c of t){let u=a(Oe(c));u&&l.set(c,u)}return l}if(p)for(let c of t){let u=a(Oe(c));u&&l.set(c,u)}return e.columns.filter(c=>c.type!=="WILDCARD"&&c.type!=="PARENT_WILDCARD").forEach((c,u)=>{let f=p?"alias"in c&&c.alias?c.alias:void 0:t[u];if(!f)return;let E;if(c.type==="FIELD")E=a(Oe(c.field));else if(c.type==="AGGREGATE")c.func==="GROUP_CONCAT"?E=Y("string"):c.func==="COUNT"||c.func==="SUM"||c.func==="AVG"||c.func==="STDDEV_POP"||c.func==="STDDEV_SAMP"||c.func==="VAR_POP"||c.func==="VAR_SAMP"||c.func==="MEDIAN"?E=Y("number"):(c.func==="MIN"||c.func==="MAX"||c.func==="MODE")&&c.arg.type!=="WILDCARD"&&(E=ks(c.arg,a));else if(c.type==="ARITH_AGG_COL"||c.type==="ARITH_COL")E=Y("number");else if(c.type==="GROUPING_COL")E=Y("number");else if(c.type==="LITERAL_COL")E=Y("string");else if(c.type==="SCALAR_VALUE_COL"){let R=c.expr;R.type==="STRING_FUNC"?E=Nt(R):R.type==="NUMBER"||R.type==="SCALAR_ARITH"?E=Y("number"):R.type==="FIELD"?E=a(R):E=Y("string")}else if(c.type==="STRFUNC_COL")E=Nt(c.expr);else if(c.type==="WINDOW_COL")E=Y("number");else if(c.type==="CASE_COL"){let R=c.expr.branches.map(m=>Er(m.result,a));c.expr.elseResult&&R.push(Er(c.expr.elseResult,a)),E=xi(R)}else c.type==="SCALAR_SUBQUERY_COL"&&(E=Ke());E&&l.set(f,E)}),l}function lR(e,t){let r=Be.get(e),n=Be.get(t),i=new Map;return e.columns.forEach((o,s)=>{let a=r?.get(o),l=t.columns[s],p=l===void 0?void 0:n?.get(l);a&&p?i.set(o,xi([a,p])):(a||p)&&i.set(o,Ke())}),i}function Us(e,t){let r=[e.from,...e.joins.map(a=>a.table)],n=r.filter(a=>a.cteName===null),i=new Set(e.columns.map(a=>"alias"in a?a.alias:null).filter(a=>a!==null)),o=a=>{if(a.tableAlias!==null){if(a.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null)return t.get(e.from.appId)?.get(a.field);let p=r.find(d=>Le(d)===a.tableAlias);return!p||p.cteName!==null?void 0:Ti(p,a.field)??t.get(p.appId)?.get(Re(p,a.field))}if(e.joins.length===0)return e.from.cteName!==null?void 0:Ti(e.from,a.field)??t.get(e.from.appId)?.get(Re(e.from,a.field));if(r.some(p=>p.cteName!==null))return;let l=n.flatMap(p=>{let d=Ti(p,a.field)??t.get(p.appId)?.get(Re(p,a.field));return d?[d]:[]});return l.length===1?l[0]:void 0};return{row:o,having:a=>{if(!(a.tableAlias===null&&i.has(a.field)))return o(a)}}}async function uR(e,t,r,n,i,o=!0,s){let a=r.maxRecords??1e4,l=new Set,p=r.fetchParallel??1;await Promise.all([un(e.where,t,r,n,i),un(e.having,t,r,n,i)]);let[d,c,u]=await Promise.all([rc(e,t,n),Ds(e,t,n),oc(e,t,n,i)]),f=Us(e,c),E=await Ui(e,t,n,i,Ue(e.having)||Ls(e)),R=Qu(e,E),m=Qt(e,d);lo(m);let g=m.mainCondition,y=m.joinConditions,T=et(e.where),A=T?Promise.resolve([]):Zr(e,e.from,t,a,p,!0,r.onLimitReached??"error",l,g,o),N=[],w=[];for(let U of e.joins){if(T){N.push({join:U,promise:Promise.resolve([])});continue}let B=U.table.alias?y.get(U.table.alias)??null:null;B!==null?N.push({join:U,promise:Zr(e,U.table,t,a,p,!1,r.onLimitReached??"error",l,B)}):w.push(U)}let L=Oc(e.columns,t,r,n,i),b=s?Promise.resolve(s):sn(e,t,n,i);L.catch(()=>{}),b.catch(()=>{});let D=await A,P=new Map;P.set(e.from.alias,D);for(let{join:U,promise:B}of N)P.set(U.table.alias,await B);await Promise.all(w.map(async U=>{let H=await fc(e,U,P,t,a,p,r.onLimitReached??"error",l,null)??await Zr(e,U.table,t,a,p,!1,r.onLimitReached??"error",l,null);P.set(U.table.alias,H)}));let h=await L,{optionOrders:C,sortKinds:O,semantics:v}=await b,{rows:k,columns:I}=ns({tables:P,stmt:e,scalarCache:h,optionOrders:C,sortKinds:O,orderSemantics:v,fieldTypeResolver:f.row,fieldSemanticsResolver:E,havingFieldTypeResolver:f.having,havingFieldSemanticsResolver:R,aggregateSortKindResolver:u,appliedKlikes:m.appliedKlikes,resolvedGroupingSpec:on.get(e)});return{type:"SELECT",rows:k,columns:I,rowCount:k.length,warnings:[...l]}}async function lc(e,t,r,n){let[i,o]=await Promise.all([e.left.type==="UNION"?lc(e.left,t,r,n):Et(e.left,t,r,n),Et(e.right,t,r,n)]),s=i.columns,a=o.columns,l=o.rows.map(c=>{let u={};return s.forEach((f,E)=>{u[f]=c[a[E]??f]??""}),u}),p=[...i.rows,...l],d=e.all?p:uc(p,s);return{type:"SELECT",rows:d,columns:s,rowCount:d.length}}function uc(e,t){let r=new Set;return e.filter(n=>{let i=JSON.stringify(t.map(o=>n[o]??""));return r.has(i)?!1:(r.add(i),!0)})}async function cR(e,t,r,n,i,o=!1){if((i==null||i.size===0)&&qt(e))return Et(zt(e),t,r,n,void 0,o);let s=new Map(i??[]);for(let a of e.ctes){let l;a.query.type==="SHOW_APPS"?l=await bc(t):a.query.type==="DESCRIBE"?l=await Pc(a.query,t,n):l=await Ot(a.query,t,r,s,n,!0),s.set(a.name,{rows:l.rows,columns:l.columns,columnMeta:Be.get(l)})}return Ot(e.query,t,r,s,n,o)}async function Ot(e,t,r,n,i,o=!1){if(e.type==="UNION"){let[l,p]=await Promise.all([Ot(e.left,t,r,n,i,o),Ot(e.right,t,r,n,i,o)]),d=l.columns,c=p.columns,u=p.rows.map(m=>{let g={};return d.forEach((y,T)=>{g[y]=m[c[T]??y]??""}),g}),f=[...l.rows,...u],E=e.all?f:uc(f,d),R={type:"SELECT",rows:E,columns:d,rowCount:E.length};return o&&Be.set(R,lR(l,p)),R}if(!(e.from.cteName!=null&&e.from.cteName!==nt||e.joins.some(l=>l.table.cteName!=null)))return Et(e,t,r,i,n,o);let a=await pR(e,t,r,n,i);return o&&Be.set(a,await Ss(e,a.columns,t,i,n)),a}async function pR(e,t,r,n,i){await Mi(e,t,i,n);let o=on.get(e),s=new Set,a=F=>{if(F.alias!==null||F.cteName===null)return F;let _=Le(F);return s.add(_),{...F,alias:_}};e={...e,from:a(e.from),joins:e.joins.map(F=>({...F,table:a(F.table)}))};let l=new Set;for(let F of[e.from,...e.joins.map(_=>_.table)]){let _=Le(F);if(_!==null){if(l.has(_))throw new Error(`ArgumentError: effective alias ${_} is used by multiple tables.`);l.add(_)}}let p=F=>{let _=n.get(F);if(!_)throw new Error(`ArgumentError: materialized source ${F} is not available.`);return _};for(let F of[e.from,...e.joins.map(_=>_.table)])F.cteName!==null&&p(F.cteName);let d=r.maxRecords??1e4,c=new Set,u=r.fetchParallel??1;await Promise.all([un(e.where,t,r,i,n),un(e.having,t,r,i,n),Cc(e,t,r,i,n)]);let f=await bi(e,t,i,n);if(f.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Pt(f)}).`);let E=await sn(e,t,i,n),R=Pi(e)?(e.orderMode==="KINTONE_NATIVE"?Hr:Wr)({stmt:e,staticMode:"FULL_SCAN",whereCapability:f.capability,orderSemantics:E.semantics,maxRecords:d,hasKlike:oe(e.where)}):null,m=Zu(e,r,R),g=m.effectiveOptions,[y,T,A]=await Promise.all([rc(e,t,i),Ds(e,t,i),oc(e,t,i,n)]),N=Us(e,T),w=await Ui(e,t,i,n,Ue(e.having)||Ls(e)),L=Qu(e,w),b=Qt(e,y);lo(b);let D=Oc(e.columns,t,g,i,n),P=Promise.resolve(E);D.catch(()=>{}),P.catch(()=>{});let h=new Map,C=new Map;if(e.from.cteName!=null){let F=p(e.from.cteName);h.set(e.from.alias,F.rows.map(Mu)),C.set(e.from.alias,F.columns)}else{let F=await Uu(m,()=>Zr(e,e.from,t,d,u,!0,g.onLimitReached??"error",c,b.mainCondition,f.capability==="EXACT_PUSHDOWN"));h.set(e.from.alias,F)}let O=e.joins.map(F=>Uu(m,async()=>{if(F.table.cteName!=null){let _=p(F.table.cteName);h.set(F.table.alias,_.rows.map(Mu)),C.set(F.table.alias,_.columns)}else{let _=F.table.alias?b.joinConditions.get(F.table.alias)??null:null,re=await fc(e,F,h,t,d,u,g.onLimitReached??"error",c,_)??await Zr(e,F.table,t,d,u,!1,g.onLimitReached??"error",c,_);h.set(F.table.alias,re)}}));await Promise.all(O);let v=await D,{optionOrders:k,sortKinds:I,semantics:U}=await P,B=e.joins.length===0&&e.from.cteName!=null?p(e.from.cteName).columns:void 0,{rows:H,columns:fe}=ns({tables:h,stmt:e,scalarCache:v,optionOrders:k,sortKinds:I,orderSemantics:U,fieldTypeResolver:N.row,fieldSemanticsResolver:w,havingFieldTypeResolver:N.having,havingFieldSemanticsResolver:L,aggregateSortKindResolver:A,appliedKlikes:b.appliedKlikes,sourceColumns:B,tableColumns:C,hiddenQualifiedAliases:s,resolvedGroupingSpec:o});return{type:"SELECT",rows:H,columns:fe,rowCount:H.length,warnings:[...c]}}function Mu(e){return Object.fromEntries(Object.entries(e).map(([t,r])=>[t,{value:r??""}]))}async function Zr(e,t,r,n,i,o,s,a,l=null,p=!0){let d=ht(e,t),c=R=>{a.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${R} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${R} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`)};if(!t.subtableCode){let R=o&&p?_a(e,t.appId).query:"",m=l!==null?W(l):"",g=R&&m?`(${R}) and (${m})`:R||m;return(await Ce(r.getRecords,t.appId,g,d,{parallel:i,maxRecords:n,onLimit:s,onTruncate:c})).records}let E=(await Ce(r.getRecords,t.appId,"",d,{parallel:i,maxRecords:n,onLimit:s,onTruncate:c})).records;return pu(E,t.subtableCode)}var cc=50;function dR(e){let t=Ae(e);return t!==null?JSON.stringify(t):e}function Ts(e){return JSON.stringify(e)}function Lt(e,t){return JSON.stringify(e.map((r,n)=>t[n]?dR(r):r))}function pn(e,t){let r=e.raw.get(Ts(t));if(r!==void 0)return r;if(e.numericKey.some(Boolean))return e.normalized.get(Lt(t,e.numericKey))}async function dn(e,t,r,n,i,o){let s=i.maxRecords??1e4,a=i.fetchParallel??1,l=t.map(m=>o.get(m)==="NUMBER"),p={raw:new Map,normalized:new Map,numericKey:l},d=(m,g,y)=>{let T=m.get(g);(T===void 0||y>T)&&m.set(g,y)},c=(m,g)=>{d(p.raw,Ts(m),g),l.some(Boolean)&&d(p.normalized,Lt(m,l),g)},u=new Set,f=[],E=new Set;for(let m of r){let g=Ts(m);E.has(g)||(E.add(g),m.some(y=>y==="")?f.push(m):u.add(m[0]))}let R=["$id",...t];for(let m of mr([...u],cc)){let g=`${t[0]} in (${m.map(Li).join(",")})`,y=await Ee(n.getRecords,e,g,R,{maxRecords:s,parallel:a});for(let T of y){let A=Number(T.$id?.value);Number.isFinite(A)&&c(t.map(N=>pc(T[N]?.value)),A)}}for(let m of f){let g=t.map((T,A)=>`${T} = ${Li(m[A])}`).join(" and "),y=await Ee(n.getRecords,e,g,["$id"],{maxRecords:s,parallel:a});y.length!==0&&c(m,fR(y))}return p}function fR(e){let t=Number.NEGATIVE_INFINITY;for(let r of e){let n=Number(r.$id?.value);Number.isFinite(n)&&n>t&&(t=n)}if(!Number.isFinite(t))throw new Error("\u30EC\u30B3\u30FC\u30C9\u306B\u6570\u5024\u306E $id \u304C\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093\u3002");return t}function pc(e){return typeof e=="string"?e:e==null?"":String(e)}function Li(e){return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function mr(e,t){let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}var dc=50,ER=6,xu=dc*ER;async function fc(e,t,r,n,i,o,s,a,l=null){if(t.type!=="INNER"||!t.table.alias||t.table.subtableCode)return null;let p=t.on.left.tableAlias,d=t.on.right.tableAlias;if(!p||!d)return null;let c,u,f;if(p===t.table.alias&&d!==t.table.alias)c=d,u=t.on.right.field,f=t.on.left.field;else if(d===t.table.alias&&p!==t.table.alias)c=p,u=t.on.left.field,f=t.on.right.field;else return null;let E=r.get(c);if(!E)return null;let R=new Set;for(let w of E){let L=w[u]?.value,b=pc(L).trim();b.length>0&&R.add(b)}let m=[...R];if(m.length===0)return[];if(m.length>xu)return a.add(`JOIN\u30AD\u30FC\u304C ${m.length} \u4EF6\u306E\u305F\u3081 ON \u6700\u9069\u5316\u3092\u30B9\u30AD\u30C3\u30D7\u3057\u3001JOIN\u5148\u3092\u5168\u4EF6\u53D6\u5F97\u3057\u307E\u3059\uFF08\u4E0A\u9650 ${xu} \u4EF6\uFF09\u3002`),null;let g=ht(e,t.table),y=w=>{a.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${w} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${w} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`)},T=mr(m,dc),A=[],N=new Set;for(let w of T){let L=`${f} in (${w.map(Li).join(",")})`,b=l!==null?`(${L}) and (${W(l)})`:L,D=await Ce(n.getRecords,t.table.appId,b,g,{parallel:o,maxRecords:i,onLimit:s,onTruncate:y});for(let P of D.records){let h=`${P.$id?.value??""}:${JSON.stringify(P)}`;N.has(h)||(N.add(h),A.push(P))}}return A}var Fu=new Map,Ku=new Map,Bu=new Map,$u=new Map,Gu=new Map,Vu=new Map;function gr(e,t,r){return e.get(t)?.get(r)}function hr(e,t,r,n){let i=e.get(t);i||(i=new Map,e.set(t,i)),i.set(r,n)}function RR(e){return e.startsWith("_")||e.startsWith("$")}async function J(e,t,r){let n=gr($u,r,e);if(n)return n;let i=t.getFields(e);return hr($u,r,e,i),i}async function $e(e,t,r){let n=gr(Vu,r,e);if(n)return n;let i=t.getNumberPrecision(e);return hr(Vu,r,e,i),i}async function Ms(e,t,r){let n=gr(Gu,r,e);if(n)return n;let i=t.getProcessStatuses(e);return hr(Gu,r,e,i),i}async function xs(e,t,r){let n=await Ms(e,t,r);return n.enable&&n.states!==null?new Map(n.states.map(i=>[i.name,i.index])):void 0}async function de(e,t,r){let n=gr(Fu,r,e);if(n)return n;let i=await J(e,t,r),o=new Map(i.map(s=>[s.code,s.fieldType]));return hr(Fu,r,e,o),o}async function ws(e,t,r){let n=gr(Ku,r,e);if(n)return n;let i=await J(e,t,r),o=new Map;for(let s of i){if(!s.optionOrder)continue;let a=Object.entries(s.optionOrder);a.length!==0&&o.set(s.code,new Map(a))}return hr(Ku,r,e,o),o}async function mR(e,t,r){let n=await ws(e,t,r);return new Map([...n.entries()].map(([i,o])=>[i,new Set(o.keys())]))}async function Wu(e,t,r){let n=gr(Bu,r,e);if(n)return n;let i=await J(e,t,r),o=new Map;for(let s of i)s.sortKind&&o.set(s.code,s.sortKind);return hr(Bu,r,e,o),o}function gR(e){let t=[...e.orderBy,...e.columns.flatMap(r=>r.type==="WINDOW_COL"?r.orderBy:[])];return[...new Set(t.flatMap(r=>r.key.type==="FIELD_NAME"?[r.key.name]:[]))]}async function hR(e,t,r,n){let i=gR(e);if(i.length===0)return new Map;let o=[e.from,...e.joins.map(c=>c.table)],s=new Set,a=new Map(await Promise.all([...new Set(o.filter(c=>c.cteName===null).map(c=>c.appId))].map(async c=>{let u=await J(c,t,r);return[c,new Map(u.map(f=>[f.code,f]))]}))),l=c=>{if(c.tableAlias!==null){if(c.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){let R=a.get(e.from.appId)?.get(c.field);return R?Fe(R,e.from.appId):void 0}let f=o.find(R=>Le(R)===c.tableAlias);if(!f)return;if(f.cteName!==null)return n?.get(f.cteName)?.columnMeta?.get(c.field);let E=a.get(f.appId)?.get(Re(f,c.field));return E?Fe(E,f.appId):dr(c.field)}if(e.joins.length===0){if(e.from.cteName!==null)return n?.get(e.from.cteName)?.columnMeta?.get(c.field);let f=a.get(e.from.appId)?.get(Re(e.from,c.field));return f?Fe(f,e.from.appId):dr(c.field)}let u=o.flatMap(f=>{if(f.cteName!==null){let m=n?.get(f.cteName),g=m?.columns.includes(c.field)?m.columnMeta?.get(c.field):void 0;return g?[g]:[]}let E=a.get(f.appId)?.get(Re(f,c.field)),R=E?Fe(E,f.appId):dr(c.field);return R?[R]:[]});return u.length>1&&s.add(c.field),u.length===1?u[0]:void 0},p=new Map;for(let c of e.columns){if(!("alias"in c)||!c.alias)continue;let u;if(c.type==="FIELD")u=l(Oe(c.field));else if(c.type==="ARITH_COL"||c.type==="ARITH_AGG_COL"||c.type==="WINDOW_COL")u=Y("number");else if(c.type==="GROUPING_COL")u=Y("number");else if(c.type==="LITERAL_COL"||c.type==="SCALAR_VALUE_COL")u=Y("string");else if(c.type==="STRFUNC_COL")u=Nt(c.expr);else if(c.type==="SCALAR_SUBQUERY_COL")u=Ke();else if(c.type==="CASE_COL"){let f=c.expr.branches.map(E=>Er(E.result,l));c.expr.elseResult&&f.push(Er(c.expr.elseResult,l)),u=xi(f)}else c.type==="AGGREGATE"&&(c.func==="MIN"||c.func==="MAX"||c.func==="MODE"?c.arg.type!=="WILDCARD"&&(u=ks(c.arg,l)):u=c.func==="GROUP_CONCAT"?Y("string"):Y("number"));u?.semantics&&p.set(c.alias,u.semantics)}let d=new Map;for(let c of i){let u=p.get(c)??l(Oe(c))?.semantics;if(!u){let E=Oe(c);E.tableAlias===null&&s.has(E.field)&&d.set(c,z({fieldType:"KSQL_AMBIGUOUS"}));continue}let f=u;if(u.fieldType==="STATUS"&&u.source&&e.orderMode!=="KINTONE_NATIVE"){let E=await Ms(u.source.appId,t,r);E.enable&&E.states!==null&&(f={...u,optionOrder:new Map(E.states.map(R=>[R.name,R.index]))})}d.set(c,f)}return d}async function sn(e,t,r,n){let i=e.columns.some(l=>l.type==="WINDOW_COL"&&l.orderBy.length>0);if(e.orderBy.length===0&&!i)return{optionOrders:new Map,sortKinds:new Map,semantics:new Map};let[o,s,a]=await Promise.all([yR(e,t,r),AR(e,t,r),hR(e,t,r,n)]);return{optionOrders:o,sortKinds:s,semantics:a}}async function yR(e,t,r){let n=new Map,i=[e.from,...e.joins.map(s=>s.table)],o=new Set;for(let s of i){if(s.cteName!=null||o.has(s.appId))continue;o.add(s.appId);let a=await ws(s.appId,t,r);for(let[l,p]of a.entries())n.has(l)||n.set(l,p)}for(let s of i){if(s.cteName!=null||!s.alias)continue;let a=await ws(s.appId,t,r);for(let[l,p]of a.entries())n.set(`${s.alias}.${l}`,p)}return n}async function AR(e,t,r){let n=new Map,i=[e.from,...e.joins.map(s=>s.table)],o=new Set;for(let s of i){if(s.cteName!=null||o.has(s.appId))continue;o.add(s.appId);let a=await Wu(s.appId,t,r);for(let[l,p]of a.entries())n.has(l)||n.set(l,p)}for(let s of i){if(s.cteName!=null||!s.alias)continue;let a=await Wu(s.appId,t,r);for(let[l,p]of a.entries())n.set(`${s.alias}.${l}`,p)}return n}function Ec(e,t){if(typeof e!="string")return e;let r=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),n=new Set(["CHECK_BOX","MULTI_SELECT"]);if(r.has(t??"")){if(e==="")return[];try{let i=JSON.parse(e);if(Array.isArray(i)&&i.every(o=>typeof o=="object"&&"code"in o))return i.map(o=>({code:o.code}))}catch{}return e.split(",").map(i=>({code:i.trim()}))}if(n.has(t??"")){if(e==="")return[];try{let i=JSON.parse(e);if(Array.isArray(i))return i.map(String)}catch{}return e.split(",").map(i=>i.trim())}return e}var SR=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function TR(e,t,r){let n=new Map(r.map(i=>[i.code,i]));for(let i of t){let o=n.get(i);if(!o)throw new Error(`ArgumentError: DML target field ${i} does not exist.`);if(o.inSubtable)throw new Error(`ArgumentError: DML target field ${i} is inside a subtable. Use subtable DML syntax (for example, APP${e}$\u30C6\u30FC\u30D6\u30EB).`);if(o.writable===!1||SR.has(o.fieldType))throw new Error(`ArgumentError: DML target field ${i} is not writable (${o.fieldType}).`)}}async function _e(e,t,r,n){let i=await J(e,r,n);return TR(e,t,i),i}async function tt(e,t,r,n,i){let o=new Map(r.map(s=>[s.code,s]));return t.some(s=>o.get(s)?.fieldType==="NUMBER")?$e(e,n,i):void 0}function _t(e,t,r,n){let i=new Map(r.map(o=>[o.code,o]));e.forEach((o,s)=>{for(let a of t){let l=i.get(a),p=o[a]?.value??"",d=he(p,l,n);if(!d.ok)throw new Error(`DmlValidationError: ${d.code} ${d.message} (row=${s+1}, field=${a})`);let c=["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(l.fieldType)&&Array.isArray(p)&&p.every(u=>typeof u=="object"&&u!==null&&"code"in u);o[a]={value:c?p:d.value}}})}async function wR(e,t,r,n,i){let o=await _e(e.appId,e.fields,t,n),s=await $r({statement:e,fieldInfos:o,dmlMaxRows:Pe(r.dmlMaxRows,"dmlMaxRows",rt),dmlMaxSubtableRows:Pe(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",be),statementNumber:i,loadNumberPrecision:()=>$e(e.appId,t,n)});return em(e,s,o)}async function IR(e,t,r,n,i){let{fieldInfos:o,prepared:s}=await Rc(e,t,r,n,i);return rm(e,s,o)}async function Rc(e,t,r,n,i){let o=await _e(e.appId,e.fields,t,n),s=new Map(o.map(m=>[m.code,m.fieldType])),a=Tc(e),l=new Set;for(let m of a){let g=Lt(m,e.keyFields.map(y=>s.get(y)==="NUMBER"));if(l.has(g))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");l.add(g)}let p=await dn(e.appId,e.keyFields,a,t,r,s),d=a.map(m=>pn(p,m)),c=new Map,u=[...new Set(d.filter(m=>m!==void 0))],f=["$id","$revision",...o.filter(m=>!m.inSubtable&&m.fieldType!=="FILE").map(m=>m.code)];for(let m of mr(u,100)){let g=await t.getRecords({app:e.appId,query:`$id in (${m.join(",")}) limit 500`,fields:[...new Set(f)]});for(let y of g.records){let T=Number(y.$id?.value);Number.isSafeInteger(T)&&T>0&&c.set(T,y)}}let E=d.map((m,g)=>({sourceRowIndex:g,...m===void 0?{}:{targetId:m,snapshot:c.get(m)}})),R=await Vl({statement:e,matches:E,fieldInfos:o,dmlMaxRows:Pe(r.dmlMaxRows,"dmlMaxRows",rt),dmlMaxSubtableRows:Pe(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",be),statementNumber:i,loadNumberPrecision:()=>$e(e.appId,t,n)});return{fieldInfos:o,prepared:R}}async function bR(e,t,r,n){if(r.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let i=await _e(e.appId,e.fields,t,n),o=await $r({statement:e,fieldInfos:i,dmlMaxRows:Pe(r.dmlMaxRows,"dmlMaxRows",rt),dmlMaxSubtableRows:Pe(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",be),loadNumberPrecision:()=>$e(e.appId,t,n)}),s=Wo(o);if(r.confirm&&!await r.confirm(o.guards.parentRows,"INSERT",{statementIndex:0,statementCount:1,statementType:"INSERT",targetAppId:e.appId,applyDetail:Fi(s),applyDiagnostic:s}))throw new Q("INSERT",o.guards.parentRows);let a=await ql(o,t,s);return{...a,diagnostic:Ie(s,a)}}async function PR(e,t,r,n){if(r.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let{prepared:i}=await Rc(e,t,r,n,1),o=Ho(i);if(r.confirm){let a=Fi(o);if(!await r.confirm(i.guards.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPSERT",targetAppId:e.appId,applyDetail:a,applyDiagnostic:o}))throw new Q("UPDATE",i.guards.parentRows)}let s=await zl(i,t,o);return{type:"UPSERT",insertedCount:s.insertedCount,updatedCount:s.updatedCount,successfulChunks:s.successfulChunks,successfulParents:s.successfulParents,successfulInsertChunks:s.successfulInsertChunks,successfulUpdateChunks:s.successfulUpdateChunks,nonTransactional:s.nonTransactional,diagnostic:Ie(o,s)}}function CR(e,t){let r=new Map;for(let n of[...e,...t]){let i=r.get(n.table);r.set(n.table,i?{table:n.table,patchRows:i.patchRows+n.patchRows,appendRows:i.appendRows+n.appendRows,removeRows:i.removeRows+n.removeRows}:{...n})}return[...r.values()]}function Fi(e,t=!0){let r=e.branches.find(u=>u.branch==="insert"),n=e.branches.find(u=>u.branch==="update"),i=e.branches.flatMap(u=>u.targets),o=CR(r?Si(r):[],n?Si(n):[]),s=NR(i),a=e.branches.reduce((u,f)=>u+(f.parentRows??0),0),l=i.filter(u=>u.targetKind==="SUBTABLE").reduce((u,f)=>u+(f.changedCount??0),0),p=o.reduce((u,f)=>u+f.appendRows,0),d=o.reduce((u,f)=>u+f.removeRows,0),c={kind:e.statementKind==="UPDATE"?"APPLY_PATCH":e.statementKind==="INSERT"?"APPLY_INSERT":"APPLY_UPSERT",parentRows:a,changedSubtableRows:l,addedSubtableRows:p,tables:o,...s.length>0?{multiValues:s}:{},deletedRows:d,deletedParentRows:e.branches.reduce((u,f)=>u+(f.deletedParentRows??0),0),revisionRequired:e.branches.some(u=>u.guards.revisionRequired),irreversible:!0,retryOnRevisionConflict:!1,...t?{nonTransactional:!0,partialSuccessPossible:!0}:{}};if(e.statementKind==="INSERT"&&r)return{...c,insertedParentRows:r.parentRows??0,initialSubtableRows:r.targets.filter(u=>u.targetKind==="SUBTABLE").reduce((u,f)=>u+(f.changedCount??0),0)};if(e.statementKind==="UPSERT"&&r&&n){let u=Si(r),f=Si(n);return{...c,insertedParentRows:r.parentRows??0,initialSubtableRows:r.targets.filter(E=>E.targetKind==="SUBTABLE").reduce((E,R)=>E+(R.changedCount??0),0),updatedParentRows:n.parentRows??0,applyBranches:{insert:{parentRows:r.parentRows??0,initialSubtableRows:u.reduce((E,R)=>E+R.appendRows,0),tables:u},update:{parentRows:n.parentRows??0,changedSubtableRows:n.targets.filter(E=>E.targetKind==="SUBTABLE").reduce((E,R)=>E+(R.changedCount??0),0),addedSubtableRows:f.reduce((E,R)=>E+R.appendRows,0),tables:f,deletedRows:f.reduce((E,R)=>E+R.removeRows,0),deletedParentRows:n.deletedParentRows??0}}}}return c}function Si(e){return e.targets.filter(t=>t.targetKind==="SUBTABLE").map(t=>{let r=Ct(t,"APPEND"),n=Ct(t,"REMOVE");return{table:t.field,patchRows:(t.changedCount??0)-r-n,appendRows:r,removeRows:n}})}function Ct(e,t){return e.operations.filter(r=>r.kind===t).reduce((r,n)=>r+(n.count??0),0)}function NR(e){let t=new Map;for(let r of e.filter(n=>n.targetKind==="MULTI_VALUE")){let n={field:r.field,fieldType:r.fieldType??"UNKNOWN",addedValues:Ct(r,"ADD"),removedValues:Ct(r,"REMOVE_VALUE"),changedValues:r.changedCount??0,parents:(r.postImages??[]).map(o=>({parentId:o.parentId,postImage:o.value}))},i=t.get(r.field);t.set(r.field,i?{...i,addedValues:i.addedValues+n.addedValues,removedValues:i.removedValues+n.removedValues,changedValues:i.changedValues+n.changedValues,parents:[...i.parents,...n.parents]}:n)}return[...t.values()]}async function mc(e,t,r,n,i,o){if(e.type==="INSERT"&&e.applyBlocks?.length)return wR(e,t,r,n,o);if(e.type==="UPSERT"&&(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length))return IR(e,t,r,n,o);if(e.type==="UPDATE"&&e.applyBlocks?.length){let s=await Sc(e,t,r,n,o);if(s.type!=="VALIDATION")throw new Error("InternalError: APPLY VALIDATE ONLY returned a mutation result.");return s}return(await Fs(e,t,r,n,i,o)).result}var _i=class extends Error{constructor(r,n){super(`RejectLimitExceededError: ${r}`);this.diagnostic=n;this.name="RejectLimitExceededError"}};async function Fs(e,t,r,n,i,o,s=!0,a=!0){let l=e.type==="UPDATE"?"UPDATE":e.type.startsWith("UPSERT")?"UPSERT":"INSERT",p=e.type==="UPDATE"?["$id",...e.assignments.map(v=>v.field)]:[...e.fields];if(new Set(p).size!==p.length)throw new Error("ArgumentError: DML target fields contain duplicates.");let d=e.type==="UPDATE"?e.assignments.map(v=>v.field):e.fields,c=await _e(e.appId,d,t,n);e.type==="UPDATE"&&await pr(e,t,n);let u=new Map(c.map(v=>[v.code,v])),f=await tt(e.appId,d,c,t,n),E=De(c,p),R=du(E),m=(await OR(e,l,t,r,n,i,u,e.type==="UPDATE"?R:void 0)).sort((v,k)=>v.rowNumber-k.rowNumber),g=m.filter(v=>v.mode==="update"),y=e.type==="UPDATE"?vR:e.type.startsWith("UPSERT")?v=>DR(v,t,r.maxRecords??1e4):void 0,T=r.loadUpdateModeSnapshots??y,A=g.length>0&&T!==void 0,N=new Map;if(A){xo(g,d,c);let v=await T({appId:e.appId,candidates:g,fields:R}),k=new Map;for(let I of g){if(I.targetId===void 0)throw new Error(`InternalError: update-mode validation candidate has no targetId (row=${I.rowNumber}).`);let U=v.get(I.targetId);if(!U)throw new Error(`InternalError: update-mode snapshot is missing for record ${I.targetId}.`);let B=fu(U,I.record??{});k.set(I.rowNumber,B)}f===void 0&&[...k.values()].some(I=>wt(I,E))&&(f=await $e(e.appId,t,n));for(let I of g){let U=k.get(I.rowNumber);if(!U)throw new Error(`InternalError: validation post-image is missing for row ${I.rowNumber}.`);N.set(I.rowNumber,It(U,E,f,o,I.rowNumber,l))}}let w=Fo(m,l,p,d,c,o,f,e.checkGroups??[],s,a,{validateUpdateBuiltIns:!A}),{errors:L,invalidRows:b,invalidRowNumbers:D}=w;if(A){let v=new Map(w.candidateResults.map(k=>[k.rowNumber,k]));L=[],D=new Set;for(let k of m){let I=v.get(k.rowNumber);if(!I)throw new Error(`InternalError: validation detail is missing for row ${k.rowNumber}.`);if(k.mode==="create"){let H=[...I.preErrors,...I.builtInErrors,...I.checkErrors];L.push(...H),H.length>0&&D.add(k.rowNumber);continue}let U=N.get(k.rowNumber);if(!U)throw new Error(`InternalError: prepared post-image validation is missing for row ${k.rowNumber}.`);let B=Eu({rowNumber:k.rowNumber,setFields:d,normalizedPostImage:U.normalizedRecord,preErrors:I.preErrors,postImageErrors:U.errors,checkErrors:I.checkErrors});k.record=B.writeRecord,L.push(...B.errors);for(let H of B.invalidRowNumbers)D.add(H)}b=D.size}let P=[...p,...sr],h={type:"VALIDATION",operation:l,validatedRows:m.length,validRows:m.length-b,invalidRows:b,errorCount:L.length,columns:P,errors:L,...e.validationErrorTable?{errTable:e.validationErrorTable}:e.onErrorSkip&&e.errorTable?{errTable:e.errorTable}:{}},C=new Map;for(let v of p){if(v==="$id"){C.set(v,{sortKind:"number",fieldType:"RECORD_NUMBER",semantics:z({fieldType:"RECORD_NUMBER"})});continue}let k=u.get(v);k&&C.set(v,Fe(k,e.appId))}let O=new Set(["$err_statement","$err_row"]);for(let v of sr)C.set(v,Y(O.has(v)?"number":"string"));return Rr.set(h,C),{result:h,candidates:m,invalidRowNumbers:D,columnMeta:C}}async function Hu(e,t,r,n,i,o){let s=await Fs(e,t,r,n,i,o),a=e.errorTable;if(!a)throw new Error("ArgumentError: ON ERROR SKIP requires INTO #error_table.");ft(i,a,s.result.columns,s.result.errors,r.tempTableMaxRows??dt,s.columnMeta);let l=e.rejectLimit??null;if(l!==null&&s.result.invalidRows>l)throw new _i(`rejected rows (${s.result.invalidRows}) exceed REJECT LIMIT (${l}).`,s.result);let p=s.candidates.filter(E=>!s.invalidRowNumbers.has(E.rowNumber));if(r.confirm){let E=e.type.startsWith("INSERT")?"INSERT":"UPDATE";if(!await r.confirm(p.length,E))throw new Q(E,p.length)}let d={affectedRows:p.length,skippedRows:s.result.invalidRows,rejectLimit:l,errTable:a};if(e.type==="INSERT"||e.type==="INSERT_SELECT"){let E=[];for(let R=0;R<p.length;R+=100){let m=await t.postRecords({app:e.appId,records:p.slice(R,R+100).map(g=>g.record)});E.push(m.ids)}return{type:"INSERT",createdIds:E,insertedCount:E.flat().length,...d}}if(e.type==="UPDATE"){let E=p.map(R=>{if(R.targetId===void 0)throw new Error("InternalError: prepared UPDATE candidate has no targetId.");return{id:R.targetId,record:R.record}});for(let R=0;R<E.length;R+=100)await t.putRecords({app:e.appId,records:E.slice(R,R+100)});return{type:"UPDATE",updatedCount:E.length,...d}}let c=p.filter(E=>E.mode==="create"),u=p.filter(E=>E.mode==="update").map(E=>{if(E.targetId===void 0)throw new Error("InternalError: prepared UPSERT candidate has no targetId.");return{id:E.targetId,record:E.record}}),f=0;for(let E=0;E<c.length;E+=100){let R=await t.postRecords({app:e.appId,records:c.slice(E,E+100).map(m=>m.record)});f+=R.ids.length}for(let E=0;E<u.length;E+=100)await t.putRecords({app:e.appId,records:u.slice(E,E+100)});return{type:"UPSERT",insertedCount:f,updatedCount:u.length,...d}}async function OR(e,t,r,n,i,o,s,a){if(e.type==="UPDATE")return _R(e,r,n,i,o,a);let l,p,d,c,u;if(e.type==="INSERT"||e.type==="UPSERT")Yu(e,e.fields),u=new Map(e.fields.map(A=>[A,s.get(A)?.fieldType??""])),vt(e,u),l=e.values.map(A=>A.map((N,w)=>N.type==="CASE_VALUE"?ut(N.expr,{},s.get(e.fields[w])?.fieldType):N));else{let A=await Bs.materialize(e,r,n,i,o,[...s.values()]),N=(e.checkGroups?.length??0)>0;if(A.columns.length<e.fields.length||!N&&A.columns.length!==e.fields.length)throw new Error(`SELECT \u306E\u5217\u6570\uFF08${A.columns.length}\uFF09\u3068 DML \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u6570\uFF08${e.fields.length}\uFF09\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093`);if(N&&new Set(A.columns).size!==A.columns.length)throw ae("CHECK \u4ED8\u304D DML \u30BD\u30FC\u30B9 SELECT \u306E\u51FA\u529B\u540D\u306F\u4E00\u610F\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059");Yu(e,A.columns),p=A.rows,d=A.importPresence,c=A.importRowErrors;let w=A.columnMeta;u=new Map(A.columns.map(L=>{let b=w?.get(L),D=b?.fieldType??(b?.semantics?.compareMode==="number"||b?.sortKind==="number"?"NUMBER":"SINGLE_LINE_TEXT");return[L,D]})),vt(e,u),l=A.rows.map(L=>A.columns.map(b=>L[b]??""))}let f=l.map((A,N)=>({rowNumber:N+1,operation:t,mode:"create",payload:new Map(e.fields.flatMap((w,L)=>d&&!d[N]?.has(w)?[]:[[w,A[L]]])),preErrors:[...c?.[N]??[]],record:{},evaluationRow:p?.[N]??Object.fromEntries(e.fields.map((w,L)=>[w,ve(A[L])])),evaluationFieldTypes:u}));if(e.type!=="UPSERT"&&e.type!=="UPSERT_SELECT")return f;for(let A of e.keyFields)if(!e.fields.includes(A))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${A}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let E=new Map([...s].map(([A,N])=>[A,N.fieldType])),R=f.map(A=>e.keyFields.map(N=>ve(A.payload.get(N)))),m=e.keyFields.map(A=>E.get(A)==="NUMBER"),g=new Map;for(let A of R){let N=Lt(A,m);g.set(N,(g.get(N)??0)+1)}let y=ki.has(e);if(y&&[...g.values()].some(A=>A>1))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");let T=await dn(e.appId,e.keyFields,R,r,n,E);return f.forEach((A,N)=>{let w=R[N],L=pn(T,w);A.mode=L===void 0?"create":"update",L!==void 0&&(A.targetId=L),e.keyFields.forEach((b,D)=>{w[D]===""&&A.preErrors.push({field:b,code:"ERR_KEY_EMPTY",message:`UPSERT \u30AD\u30FC ${b} \u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093`})}),!y&&(g.get(Lt(w,m))??0)>1&&A.preErrors.push({field:e.keyFields[0],code:"ERR_KEY_DUP_SOURCE",message:"UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059"})}),f}function Ks(e){return e.checkGroups?ir(e.checkGroups):[]}function Yu(e,t){let r=new Set(t);for(let n of Ks(e)){if(n.tableAlias!==null)throw ae(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${n.tableAlias}.${n.field} \u306F\u3053\u306E\u8A55\u4FA1\u884C\u3067\u306F\u4FEE\u98FE\u3067\u304D\u307E\u305B\u3093`);if(!r.has(n.field))throw ae(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${n.field} \u306F\u8A55\u4FA1\u884C\u306B\u5B58\u5728\u3057\u307E\u305B\u3093`)}}var LR=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE","KSQL_ARRAY"]);function vt(e,t){if(e.checkGroups)for(let r of cl(e.checkGroups)){let n=r.tableAlias?`${r.tableAlias}.${r.field}`:r.field,i=t.get(n)??t.get(r.field);if(LR.has(i??""))throw ae(`CHECK \u306E\u6BD4\u8F03\u3067\u306F ${i} \u30D5\u30A3\u30FC\u30EB\u30C9 ${n} \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`)}}async function _R(e,t,r,n,i,o){if(e.from)return UR(e,e.from,t,r,n,i,o);await Nc(e.assignments,t,r,n);let s=await de(e.appId,t,n),a=gc(e,s);vt(e,Is(s,e.appId));let l,p=new Map,d=new Map;if(Yn(e)){let c=So(e),u=[...new Set([...c.fields,...a,...o??[]])],f=await Ce(t.getRecords,c.app,c.query,u,{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1,onLimit:"error"});d=wi(f.records),p=d,l=wo(e,f.records,s).flatMap(E=>E.records)}else{let c=vr(e);if(a.length>0){let u=[...new Set(["$id",...a,...o??[]])],f=await Ce(t.getRecords,c.app,c.query,u,{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1,onLimit:"error"});d=wi(f.records),p=d,l=Dr(e,[...p.keys()],s).flatMap(E=>E.records)}else if(o){let u=await Ce(t.getRecords,c.app,c.query,[...o],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1,onLimit:"error"});d=wi(u.records),l=Dr(e,[...d.keys()],s).flatMap(f=>f.records)}else{let u=await ai(t.getRecords,c.app,c.query,{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1});l=Dr(e,u.ids,s).flatMap(f=>f.records)}}return l.sort((c,u)=>c.id-u.id).map((c,u)=>({rowNumber:u+1,operation:"UPDATE",mode:"update",payload:new Map([["$id",String(c.id)],...e.assignments.map(f=>[f.field,c.record[f.field]?.value??""])]),preErrors:[],record:c.record,targetId:c.id,validationSnapshot:d.get(c.id),evaluationRow:kR(p.get(c.id),e.appId),evaluationFieldTypes:Is(s,e.appId)}))}function wi(e){let t=new Map;for(let r of e){let n=r.$id?.value,i=Number(n);if(!Number.isSafeInteger(i)||i<=0)throw new Error(`InternalError: invalid $id in UPDATE validation snapshot: ${String(n)}.`);if(t.has(i))throw new Error(`InternalError: duplicate $id in UPDATE validation snapshot: ${i}.`);t.set(i,r)}return t}async function vR(e){let t=new Map;for(let r of e.candidates){if(r.targetId===void 0||!r.validationSnapshot)throw new Error(`InternalError: update-mode snapshot is missing for record ${String(r.targetId)}.`);if(t.has(r.targetId))throw new Error(`InternalError: duplicate UPDATE validation candidate target: ${r.targetId}.`);t.set(r.targetId,r.validationSnapshot)}return t}async function DR(e,t,r){let n=[...new Set(e.candidates.map(s=>{let a=s.targetId;if(!Number.isSafeInteger(a)||a===void 0||a<=0)throw new Error(`InternalError: invalid targetId in UPSERT validation candidate: ${String(a)}.`);return a}))];if(n.length>r)throw new ye(`\u53D6\u5F97\u4EF6\u6570\u304C\u4E0A\u9650\uFF08${r} \u4EF6\uFF09\u3092\u8D85\u3048\u307E\u3057\u305F\u3002WHERE \u53E5\u3067\u7D5E\u308A\u8FBC\u3080\u304B\u3001maxRecords \u3092\u5F15\u304D\u4E0A\u3052\u3066\u304F\u3060\u3055\u3044\u3002`);let i=new Set(n),o=new Map;for(let s of mr(n,100)){let a=await t.getRecords({app:e.appId,query:`$id in (${s.join(",")}) limit 500`,fields:[...new Set(e.fields)]});for(let l of a.records){let p=l.$id?.value,d=Number(p);if(!Number.isSafeInteger(d)||d<=0)throw new Error(`InternalError: invalid $id in UPSERT validation snapshot: ${String(p)}.`);if(!i.has(d))throw new Error(`InternalError: unexpected $id in UPSERT validation snapshot: ${d}.`);if(o.has(d))throw new Error(`InternalError: duplicate $id in UPSERT validation snapshot: ${d}.`);o.set(d,l)}}for(let s of n)if(!o.has(s))throw new Error(`InternalError: update-mode snapshot is missing for record ${s}.`);return o}function gc(e,t){if(e.from)return[];let r=new Set;for(let n of Ks(e)){if(n.tableAlias!==null&&n.tableAlias.toLowerCase()!==`app${e.appId}`.toLowerCase())throw ae(`CHECK \u306E\u4FEE\u98FE\u5B50 ${n.tableAlias} \u306F\u66F4\u65B0\u5148 APP${e.appId} \u3067\u306F\u3042\u308A\u307E\u305B\u3093`);if(n.field!=="$id"&&!t.has(n.field))throw ae(`CHECK \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u30D5\u30A3\u30FC\u30EB\u30C9 ${n.field} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093`);r.add(n.field)}return[...r]}function kR(e,t){if(!e)return{};let r=Xe(e,null);return Object.fromEntries([...Object.entries(r),...Object.entries(r).map(([n,i])=>[`APP${t}.${n}`,i])])}function Is(e,t){return new Map([...e,...[...e].map(([r,n])=>[`APP${t}.${r}`,n]),["$id","RECORD_NUMBER"],[`APP${t}.$id`,"RECORD_NUMBER"]])}async function UR(e,t,r,n,i,o,s){let a=await Dc(e,t,r,i,o);vt(e,a.evaluationTypes);let l=await hc(e,t,r,n,i,o,s),p=await de(e.appId,r,i),d=bo(e,l,p).flatMap(f=>f.records),c=new Map(l.map(f=>[Number(f.target.$id?.value),f])),u=s?wi(l.map(f=>f.target)):new Map;return d.sort((f,E)=>f.id-E.id).map((f,E)=>({rowNumber:E+1,operation:"UPDATE",mode:"update",payload:new Map([["$id",String(f.id)],...e.assignments.map(R=>[R.field,f.record[R.field]?.value??""])]),preErrors:[],record:f.record,targetId:f.id,validationSnapshot:u.get(f.id),evaluationRow:Um(c.get(f.id),e.appId,t.alias),evaluationFieldTypes:a.evaluationTypes}))}var MR=cc,xR=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);async function hc(e,t,r,n,i,o,s){let a=await FR(e,t,r,i),l=await Dc(e,t,r,i,o),p=[...new Set(e.assignments.filter(N=>N.value.type==="SOURCE_FIELD").map(N=>N.value.type==="SOURCE_FIELD"?N.value.field:"").concat(l.sourceFields))],d=[...new Set([t.joinKeyField,...p])],c=await KR(t,d,p,r,n,i,o),u=new Map,f=new Map;for(let N of c){if(!Object.prototype.hasOwnProperty.call(N,t.joinKeyField))throw new Error(`ArgumentError: UPDATE ... FROM source column ${t.joinKeyField} does not exist.`);let w=ju(N[t.joinKeyField],a,"source");if(u.has(w))throw new Error(`ArgumentError: UPDATE ... FROM source has multiple rows for normalized key ${w}.`);u.set(w,N),f.set(w,String(N[t.joinKeyField]).trim())}if(u.size===0)return[];let E=n.maxRecords??1e4,R=[...new Set([...im(e),...l.targetFields,...s??[]])],m=t.targetFilter===null?"":vr({...e,from:null,where:t.targetFilter,checkGroups:void 0}).query,g=[],y=new Set,T=0;for(let N of mr([...f.values()],MR)){let w=`${t.targetJoinField} in (${N.map(Li).join(",")})`,L=m?`(${w}) and (${m})`:w,b=await Ce(r.getRecords,e.appId,L,R,{maxRecords:E,parallel:n.fetchParallel??1,onLimit:"error"});if(T+=b.records.length,T>E)throw new ye(`\u53D6\u5F97\u4EF6\u6570\u304C\u4E0A\u9650\uFF08${E} \u4EF6\uFF09\u3092\u8D85\u3048\u307E\u3057\u305F\u3002WHERE \u53E5\u3067\u7D5E\u308A\u8FBC\u3080\u304B\u3001maxRecords \u3092\u5F15\u304D\u4E0A\u3052\u3066\u304F\u3060\u3055\u3044\u3002`);for(let D of b.records){let P=D.$id?.value;if(typeof P!="string"||P==="")throw new Error("ArgumentError: UPDATE ... FROM target record does not contain a valid $id.");y.has(P)||(y.add(P),g.push(D))}}let A=[];for(let N of g){let w=N[t.targetJoinField]?.value,L=ju(w,a,"target");if(L===null)continue;let b=u.get(L);b!==void 0&&A.push({target:N,source:b})}return A}async function FR(e,t,r,n){if(t.targetJoinField==="$id")return"id";let i=(await J(e.appId,r,n)).find(o=>o.code===t.targetJoinField);if(!i)throw new Error(`ArgumentError: UPDATE ... FROM target column ${t.targetJoinField} does not exist.`);if(i.inSubtable||i.writable===!1||i.fieldType!=="SINGLE_LINE_TEXT"&&i.fieldType!=="NUMBER")throw new Error(`ArgumentError: UPDATE ... FROM does not support target join field type ${i.fieldType} (${t.targetJoinField}).`);return i.fieldType==="NUMBER"?"number":"string"}async function KR(e,t,r,n,i,o,s){if(e.cteName!==null){let d=s?.get(e.cteName);if(!d)throw new Error(`ArgumentError: temp table ${e.cteName} is not available.`);for(let c of t)if(!d.columns.includes(c))throw new Error(`ArgumentError: UPDATE ... FROM source column ${c} does not exist.`);return d.rows}let a=await de(e.appId,n,o),l=e.joinKeyField==="$id"?"RECORD_NUMBER":a.get(e.joinKeyField);if(l===void 0)throw new Error(`ArgumentError: UPDATE ... FROM source column ${e.joinKeyField} does not exist.`);if(e.joinKeyField!=="$id"&&l!=="SINGLE_LINE_TEXT"&&l!=="NUMBER")throw new Error(`ArgumentError: UPDATE ... FROM does not support source join field type ${l} (${e.joinKeyField}).`);for(let d of r){if(d!=="$id"&&!a.has(d))throw new Error(`ArgumentError: UPDATE ... FROM source column ${d} does not exist.`);let c=d==="$id"?"RECORD_NUMBER":a.get(d);if(xR.has(c??""))throw new Error(`ArgumentError: UPDATE ... FROM does not support source field type ${c} (${d}).`)}return(await Ce(n.getRecords,e.appId,"",t,{maxRecords:i.maxRecords??1e4,parallel:i.fetchParallel??1,onLimit:"error"})).records.map(d=>Xe(d,null))}function ju(e,t,r){if(typeof e!="string")throw new Error(`ArgumentError: UPDATE ... FROM ${r} key must be a scalar string: ${String(e)}`);if(t==="string"){if(e===""){if(r==="target")return null;throw new Error("ArgumentError: UPDATE ... FROM source key must not be empty.")}return e}if(t==="number"&&r==="target"&&e==="")return null;if(t==="id"){let i=e.trim(),o=Number(i);if(i===""||!Number.isSafeInteger(o)||o<=0)throw new Error(`ArgumentError: UPDATE ... FROM ${r} key must be a positive safe integer: ${e}`);return String(o)}let n=Ae(e);if(n===null)throw new Error(`ArgumentError: UPDATE ... FROM ${r} key must be a finite decimal: ${e}`);return JSON.stringify(n)}async function fn(e,t,r,n,i){let o=await Fs(e,t,r,n,i,1,!1,!1);if(o.result.errors.length>0){let c=o.result.errors[0];throw new Error(`DmlValidationError: ${c.$err_code} ${c.$err_message} (row=${c.$err_row}, field=${c.$err_field})`)}let s=o.candidates,a=e.type.startsWith("INSERT")?"INSERT":"UPDATE";if(r.confirm&&s.length>0&&!await r.confirm(s.length,a))throw new Q(a,s.length);if(e.type==="INSERT"||e.type==="INSERT_SELECT"){let c=[];for(let u=0;u<s.length;u+=100){let f=await t.postRecords({app:e.appId,records:s.slice(u,u+100).map(E=>E.record)});c.push(f.ids)}return{type:"INSERT",createdIds:c,insertedCount:c.flat().length}}if(e.type==="UPDATE"){let c=s.map(u=>({id:u.targetId,record:u.record}));for(let u=0;u<c.length;u+=100)await t.putRecords({app:e.appId,records:c.slice(u,u+100)});return{type:"UPDATE",updatedCount:c.length}}let l=s.filter(c=>c.mode==="create"),p=s.filter(c=>c.mode==="update").map(c=>({id:c.targetId,record:c.record})),d=0;for(let c=0;c<l.length;c+=100){let u=await t.postRecords({app:e.appId,records:l.slice(c,c+100).map(f=>f.record)});d+=u.ids.length}for(let c=0;c<p.length;c+=100)await t.putRecords({app:e.appId,records:p.slice(c,c+100)});return{type:"UPSERT",insertedCount:d,updatedCount:p.length}}async function BR(e,t,r,n){if(e.applyBlocks?.length)return bR(e,t,r,n);if(e.checkGroups?.length)return fn(e,t,r,n);if(e.subtableCode)return am(e,t,r,n);let i=await _e(e.appId,e.fields,t,n),o=await tt(e.appId,e.fields,i,t,n),s=await de(e.appId,t,n),a=Hn(e,s);_t(a.flatMap(p=>p.records),e.fields,i,o);let l=[];for(let p of a){let d=await t.postRecords(p);l.push(d.ids)}return{type:"INSERT",createdIds:l,insertedCount:l.flat().length}}function $R(){return{type:"SELECT",distinct:!1,columns:[],from:{appId:0,alias:null,cteName:nt},joins:[],where:null,groupBy:[],having:null,orderMode:"CANONICAL",orderBy:[],limit:null,offset:null}}async function GR(e,t,r,n,i){if(!r.enableImport)throw new Error("UnsupportedError: IMPORT capability is disabled.");let o=gu(e.source.sourceName,r.importSource);if(e.targets?.some(c=>c.kind==="SUBTABLE")){if(!e.validateOnly&&!r.supportsImportConfirmDetail)throw new Error("UnsupportedError: IMPORT subtable mutation requires a surface that displays parent/table replacement and deletion detail; use VALIDATE ONLY/EXPLAIN.");if(e.source.kind==="CSV"){if(e.writeMode!=="UPDATE_RECORD_NUMBER"||!e.recordNumberSourceHeader)throw new Error("ArgumentError: CSV subtable replacement requires IMPORT UPDATE and MATCH RECORD NUMBER SOURCE.");if(!e.replaceSubtables?.length)throw new Error("ArgumentError: CSV subtable replacement requires REPLACE SUBTABLES (...).");let _=new Set(e.targets.filter(V=>V.kind==="SUBTABLE").map(V=>V.subtableCode));if(e.replaceSubtables.some(V=>!_.has(V)))throw new Error("ArgumentError: REPLACE SUBTABLES contains a table not declared in INTO.");for(let V of e.targets.filter(re=>re.kind==="SUBTABLE"))if(!V.rowIdSourceHeader||!e.replaceSubtables.includes(V.subtableCode))throw new Error(`ArgumentError: CSV subtable ${V.subtableCode} requires ROW ID SOURCE and REPLACE SUBTABLES declaration.`)}if(e.validationErrorTable&&!i)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");let c=e.targets,u=await J(e.appId,t,n),f=c.flatMap(_=>_.kind==="FIELD"?[_.field]:_.children),E=u.some(_=>f.includes(_.code)&&_.fieldType==="NUMBER")?await $e(e.appId,t,n):void 0,R=await mi(o,new Map),m=e.source.kind==="JSON"?Tu(e.source,R,c,r.maxRecords??1e4):wu(e.source,R,c,e.replaceSubtables??[],r.maxRecords??1e4,e.recordNumberSourceHeader),g=e.source.kind==="CSV"?"UPDATE":e.keyFields?"UPSERT":"INSERT",y=Cu(m,c,u,E,g);if(e.source.kind==="CSV")return VR(e,m,y,u,t,r,i);ds(y,e.rejectLimit);let T=[...new Set(c.flatMap(_=>_.kind==="FIELD"?[_.field]:_.children))],A=Es(y.errors,T),N=[...T,...fs],w=y.invalidParentRows.size,L={preflight:"ACTUAL_DATA",parents:{total:y.parents.length,valid:y.parents.length-w,invalid:w,mutationCandidates:y.parents.filter(_=>_.valid).length},tables:Object.fromEntries(y.tableCounts),writesKintone:!1},b={type:"VALIDATION",operation:g,validatedRows:y.parents.length,validRows:y.parents.length-w,invalidRows:w,errorCount:A.length,columns:N,errors:A,importDetail:L,...e.validationErrorTable?{errTable:e.validationErrorTable}:{}};if(e.validationErrorTable&&i&&ft(i,e.validationErrorTable,N,A,r.tempTableMaxRows??dt,new Map),e.validateOnly)return b;if(Ou(m),y.errors.length>0&&!e.onErrorSkip){let _=y.errors[0];throw new Error(`DmlValidationError: ${_.code} ${_.message} (row=${_.parentRow}, field=${_.field})`)}if(e.onErrorSkip){if(!i||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch and INTO error table.");ft(i,e.errorTable,N,A,r.tempTableMaxRows??dt,new Map)}let D=y.parents.filter(_=>_.valid),P=new Map(u.map(_=>[_.code,_.fieldType])),h=D.map(()=>{});if(e.keyFields){for(let ge of e.keyFields)if(!e.fields.includes(ge))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${ge}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let _=e.keyFields.map(ge=>P.get(ge)==="NUMBER"),V=new Set,re=D.map(ge=>e.keyFields.map(Mt=>String(ge.top[Mt]?.value??"")));for(let ge of re){let Mt=Lt(ge,_);if(V.has(Mt))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");V.add(Mt)}let Ge=await dn(e.appId,e.keyFields,re,t,r,P);re.forEach((ge,Mt)=>{h[Mt]=pn(Ge,ge)})}let C=c.filter(_=>_.kind==="SUBTABLE").map(_=>_.subtableCode),O=new Map,v=h.filter(_=>_!==void 0);for(let _ of mr([...new Set(v)],100)){let V=await t.getRecords({app:e.appId,query:`$id in (${_.join(",")}) limit 500`,fields:["$id","$revision",...C]});for(let re of V.records){let Ge=Number(re.$id?.value),ge=Number(re.$revision?.value);Number.isFinite(Ge)&&O.set(Ge,{id:Ge,...Number.isFinite(ge)?{revision:ge}:{},record:re})}}let k=Lu(D,h,O),I={kind:"IMPORT_JSON_SUBTABLE",rowIdPolicy:"DROP_AND_RENUMBER_ALL",parentsToWrite:k.length,insertedParents:k.filter(_=>_.mode==="INSERT").length,updatedParents:k.filter(_=>_.mode==="UPDATE").length,hasDeletes:k.some(_=>_.tables.some(V=>V.deleteRows>0)),parents:k.map(_=>({parentRow:_.parentRow,mode:_.mode,..._.targetId===void 0?{}:{targetId:_.targetId},tables:_.tables}))};if(k.length>0){if(!r.confirm)throw new Error("UnsupportedError: JSON IMPORT subtable mutation requires explicit confirmation detail approval.");if(!await r.confirm(k.length,e.keyFields?"UPDATE":"INSERT",{statementIndex:0,statementCount:1,statementType:"IMPORT",targetAppId:e.appId,importDetail:I}))throw new Q(e.keyFields?"UPDATE":"INSERT",k.length)}let U=_=>new Map(Object.entries(_).map(([V,re])=>[V,re.value])),B=_=>Nu(U(_.top),new Map([..._.subtables].map(([V,re])=>[V,re.map(Ge=>({values:U(Ge)}))]))),H=k.filter(_=>_.mode==="INSERT"),fe=k.filter(_=>_.mode==="UPDATE"),F=[];for(let _=0;_<H.length;_+=100){let V=await t.postRecords({app:e.appId,records:H.slice(_,_+100).map(B)});F.push(V.ids)}for(let _=0;_<fe.length;_+=100)await t.putRecords({app:e.appId,records:fe.slice(_,_+100).map(V=>({id:V.targetId,...V.revision===void 0?{}:{revision:V.revision},record:B(V)}))});return e.keyFields?{type:"UPSERT",insertedCount:F.flat().length,updatedCount:fe.length,affectedRows:k.length,skippedRows:y.invalidParentRows.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:I}:{type:"INSERT",createdIds:F,insertedCount:F.flat().length,affectedRows:k.length,skippedRows:y.invalidParentRows.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:I}}if(e.writeMode==="UPDATE_RECORD_NUMBER")return WR(e,o,t,r,n,i);let s={appId:e.appId,fields:e.fields,select:$R(),validateOnly:e.validateOnly,validationErrorTable:e.validationErrorTable,onErrorSkip:e.onErrorSkip,errorTable:e.errorTable,rejectLimit:e.rejectLimit,checkGroups:e.checkGroups},a=e.keyFields?{type:"UPSERT_SELECT",...s,keyFields:e.keyFields}:{type:"INSERT_SELECT",...s},l={source:e.source,handle:o,cache:new Map};ki.set(a,l);let p=c=>(l.audit&&Object.assign(c,{importAudit:l.audit}),c);if(a.validateOnly){if(a.validationErrorTable&&!i)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");let c=await mc(a,t,{...r,onLimitReached:"error"},n,i,1);return a.validationErrorTable&&i&&ft(i,a.validationErrorTable,c.columns,c.errors,r.tempTableMaxRows??dt,Rr.get(c)??new Map),p(c)}if(a.onErrorSkip){if(!i)throw new Error("ArgumentError: ON ERROR SKIP requires a batch.");let c=await(a.type==="UPSERT_SELECT",Hu(a,t,r,n,i,1));return p(c)}let d=await(a.type==="UPSERT_SELECT"?Ic(a,t,r,n,i):Ac(a,t,r,n,i));return p(d)}async function VR(e,t,r,n,i,o,s){if(!e.recordNumberSourceHeader||!e.replaceSubtables?.length)throw new Error("InternalError: incomplete CSV subtable replacement AST.");_u(t.records);let a=t.records.map(O=>O.recordNumberSourceValue??""),l=gs(a,e.recordNumberSourceHeader),p=[...e.replaceSubtables],d=[...new Set(n.filter(O=>!O.inSubtable&&O.fieldType==="SUBTABLE").map(O=>O.code))],c=await Ee(i.getRecords,e.appId,"",["$id","$revision",...d],{maxRecords:o.maxRecords??1e4,parallel:o.fetchParallel??1,onLimit:"error"}),u=new Map,f=new Map;for(let O of c){let v=Number(O.$id?.value),k=Number(O.$revision?.value);if(Number.isFinite(v)){u.set(v,{id:v,...Number.isFinite(k)?{revision:k}:{},record:O});for(let I of d){let U=O[I]?.value;if(Array.isArray(U)){for(let B of U)if(B.id){let H=f.get(B.id)??[];H.push({parentId:v,table:I}),f.set(B.id,H)}}}}}let E=l.normalized.map(O=>O===null?void 0:Number(O)),R=r.parents.map((O,v)=>{let k=[...O.errors];for(let U of l.errors[v])k.push({operation:"UPDATE",parentRow:O.parentRow,field:U.field,code:U.code,message:U.message,sourceValues:t.records[v].top});let I=E[v];return I!==void 0&&!u.has(I)&&k.push({operation:"UPDATE",parentRow:O.parentRow,field:e.recordNumberSourceHeader,code:"ERR_RECORD_NUMBER_NOT_FOUND",message:`record number ${I} does not exist in APP${e.appId}`,sourceValues:t.records[v].top}),{...O,valid:k.length===0,errors:k}}),m=vu(t.records,R,E,u,f),g=m.flatMap(O=>[...O.errors]),y=new Set(m.filter(O=>!O.valid).map(O=>O.parentRow)),T={...r,parents:R,errors:g,invalidParentRows:y};ds(T,e.rejectLimit);let A=m.filter(O=>O.valid),N=m.flatMap(O=>O.tables),w=(O,v)=>N.filter(k=>k.table===O).reduce((k,I)=>k+Number(I[v]),0),L=Object.fromEntries(p.map(O=>[O,{existingRows:w(O,"existingRows"),inputRows:w(O,"inputRows"),updateRows:w(O,"updateRows"),addRows:w(O,"addRows"),deleteRows:w(O,"deleteRows"),rowIdNotFound:w(O,"rowIdNotFound")}])),b={kind:"IMPORT_CSV_SUBTABLE_REPLACE",rowIdPolicy:"PRESERVE_EXISTING",parentsToWrite:A.length,insertedParents:0,updatedParents:A.length,hasDeletes:A.some(O=>O.tables.some(v=>v.deleteRows>0)),totalDeleteRows:A.flatMap(O=>O.tables).reduce((O,v)=>O+v.deleteRows,0),rowIdNotFound:A.flatMap(O=>O.tables).reduce((O,v)=>O+v.rowIdNotFound,0),invalidParents:y.size,parents:A.map(O=>({parentRow:O.parentRow,mode:"UPDATE",targetId:O.targetId,tables:O.tables}))},D=[...new Set(e.targets.flatMap(O=>O.kind==="FIELD"?[O.field]:O.children))],P=Es(g,D),h=[...D,...fs];if(e.validateOnly){if(e.validationErrorTable&&!s)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return e.validationErrorTable&&s&&ft(s,e.validationErrorTable,h,P,o.tempTableMaxRows??dt,new Map),{type:"VALIDATION",operation:"UPDATE",validatedRows:R.length,validRows:R.length-y.size,invalidRows:y.size,errorCount:P.length,columns:h,errors:P,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},importDetail:{preflight:"ACTUAL_DATA",parents:{total:R.length,valid:A.length,invalid:y.size,mutationCandidates:A.length},tables:L,rowIdPolicy:"PRESERVE_EXISTING",rowIdNotFound:b.rowIdNotFound,writesKintone:!1}}}if(g.length&&!e.onErrorSkip){let O=g[0];throw new Error(`DmlValidationError: ${O.code} ${O.message} (row=${O.parentRow}, field=${O.field})`)}if(e.onErrorSkip){if(!s||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch and INTO error table.");ft(s,e.errorTable,h,P,o.tempTableMaxRows??dt,new Map)}if(A.length){if(!o.supportsImportConfirmDetail||!o.confirm)throw new Error("UnsupportedError: CSV subtable replacement requires explicit rendered detail approval.");if(!await o.confirm(A.length,"UPDATE",{statementIndex:0,statementCount:1,statementType:"IMPORT",targetAppId:e.appId,importDetail:b}))throw new Q("UPDATE",A.length)}let C=O=>new Map(Object.entries(O).map(([v,k])=>[v,k.value]));for(let O of A){let v=Rs(C(O.top),new Map([...O.subtables].map(([k,I])=>[k,I.map(U=>({...U.rowId?{rowId:U.rowId}:{},values:C(U.record)}))])),"PRESERVE");await i.putRecords({app:e.appId,records:[{id:O.targetId,...O.revision===void 0?{}:{revision:O.revision},record:v}]})}return{type:"UPDATE",updatedCount:A.length,affectedRows:A.length,skippedRows:y.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:b}}async function WR(e,t,r,n,i,o){if(e.source.kind!=="CSV"||e.source.mappingMode!=="BY_NAME"||!e.recordNumberSourceHeader)throw new Error("InternalError: invalid IMPORT UPDATE AST.");if(new Set(e.fields).size!==e.fields.length)throw new Error("ArgumentError: DML target fields contain duplicates.");let s=await _e(e.appId,e.fields,r,i),a=await tt(e.appId,e.fields,s,r,i),l=await mi(t,new Map),p=us(e.source,l,n.maxRecords??1e4,e.fields,s,e.recordNumberSourceHeader),d=p.recordNumberSourceValues;if(!d)throw new Error("InternalError: record-number source values were not materialized.");let c=gs(d,e.recordNumberSourceHeader),u=new Set,f=[...new Set(c.normalized.filter(b=>b!==null))];for(let b=0;b<f.length;b+=100){let D=f.slice(b,b+100),P=await r.getRecords({app:e.appId,query:`$id in (${D.join(",")}) limit 500`,fields:["$id"]});for(let h of P.records){let C=h.$id?.value;typeof C=="string"&&C!==""&&u.add(C.replace(/^0+(?=\d)/,""))}}let E=new Map(s.map(b=>[b.code,b])),R=new Map(e.fields.map(b=>[b,E.get(b)?.fieldType??"SINGLE_LINE_TEXT"])),m=p.rows.map((b,D)=>{let P=c.normalized[D],h=[...p.importRowErrors?.[D]??[],...c.errors[D]];return P!==null&&!u.has(P)&&h.push({field:e.recordNumberSourceHeader,code:"ERR_RECORD_NUMBER_NOT_FOUND",message:`record number ${P} does not exist in APP${e.appId}`}),{rowNumber:D+1,operation:"UPDATE",mode:"update",...P!==null&&u.has(P)?{targetId:Number(P)}:{},payload:new Map([[e.recordNumberSourceHeader,d[D]],...e.fields.map(C=>[C,b[C]??""])]),preErrors:h,record:{},evaluationRow:b,evaluationFieldTypes:R}}),g=[e.recordNumberSourceHeader,...e.fields],y=Fo(m,"UPDATE",g,e.fields,s,1,a,e.checkGroups??[],!1),T=[...g,...sr],A={type:"VALIDATION",operation:"UPDATE",validatedRows:m.length,validRows:m.length-y.invalidRows,invalidRows:y.invalidRows,errorCount:y.errors.length,columns:T,errors:y.errors,...e.validationErrorTable??e.errorTable?{errTable:e.validationErrorTable??e.errorTable}:{}};if(Object.assign(A,{importAudit:p.importAudit}),e.validateOnly){if(e.validationErrorTable&&!o)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return e.validationErrorTable&&o&&ft(o,e.validationErrorTable,T,y.errors,n.tempTableMaxRows??dt,new Map),A}if(!e.onErrorSkip&&y.invalidRows>0){let b=y.errors[0];throw new Error(`DmlValidationError: ${b.$err_code} ${b.$err_message} (row=${b.$err_row}, field=${b.$err_field})`)}if(e.onErrorSkip){if(!o||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch.");if(ft(o,e.errorTable,T,y.errors,n.tempTableMaxRows??dt,new Map),e.rejectLimit!=null&&y.invalidRows>e.rejectLimit)throw new _i(`rejected rows (${y.invalidRows}) exceed REJECT LIMIT (${e.rejectLimit}).`,A)}let N=m.filter(b=>!y.invalidRowNumbers.has(b.rowNumber));if(n.confirm&&!await n.confirm(N.length,"UPDATE"))throw new Q("UPDATE",N.length);let w=N.map(b=>({id:b.targetId,record:b.record}));for(let b=0;b<w.length;b+=100)await r.putRecords({app:e.appId,records:w.slice(b,b+100)});let L={type:"UPDATE",updatedCount:w.length,...e.onErrorSkip?{affectedRows:w.length,skippedRows:y.invalidRows,rejectLimit:e.rejectLimit??null,errTable:e.errorTable}:{}};return Object.assign(L,{insertedCount:0,importAudit:p.importAudit}),L}async function HR(e,t,r,n,i,o){let s=ki.get(e);if(!s){let R=i&&i.size>0?await Ot(e.select,t,r,i,n,!0):await Et(e.select,t,r,n,void 0,!0);return{rows:R.rows,columns:R.columns,columnMeta:Be.get(R)}}let a=await mi(s.handle,s.cache),l=r.maxRecords??1e4,p=new Map((o??[]).map(R=>[R.code,R])),d=e.fields.map(R=>({code:R,fieldType:p.get(R)?.fieldType??"SINGLE_LINE_TEXT"})),c=s.source.kind==="JSON"?ls(s.source,a,d,l):us(s.source,a,l,e.fields,o);if(s.audit=c.importAudit,s.source.kind==="JSON"||!s.source.projection)return c;let u=Du(s.source.projection),f=new Map(i??[]);f.set(ms,c);let E=await Ot(u,t,{...r,onLimitReached:"error"},f,n,!0);return{rows:E.rows,columns:E.columns,columnMeta:Be.get(E)}}var Bs={materialize:HR};function yc(e){for(let t=0;t<(e.importRowErrors?.length??0);t++){let r=e.importRowErrors?.[t]?.[0];if(r)throw new Error(`DmlValidationError: ${r.code} ${r.message} (row=${t+1}, field=${r.field})`)}}async function Ac(e,t,r,n,i){if(e.checkGroups?.length)return fn(e,t,r,n,i);let o=await _e(e.appId,e.fields,t,n),s=await tt(e.appId,e.fields,o,t,n),a=await Bs.materialize(e,t,r,n,i,o),{rows:l,columns:p}=a;if(yc(a),p.length!==e.fields.length){let f=p.length===0&&l.length===0?"\u3002\u7D50\u679C\u304C 0 \u884C\u306E\u305F\u3081\u5217\u3092\u7279\u5B9A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08SELECT * \u3092\u7A7A\u30BD\u30FC\u30B9\u306B\u4F7F\u3046\u3068\u5217\u3092\u6C7A\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002\u660E\u793A\u5217\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF09":"";throw new Error(`SELECT \u306E\u5217\u6570\uFF08${p.length}\uFF09\u3068 INSERT \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u6570\uFF08${e.fields.length}\uFF09\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093${f}`)}if(r.confirm&&!await r.confirm(l.length,"INSERT"))throw new Q("INSERT",l.length);let d=await de(e.appId,t,n),c=l.map((f,E)=>{let R={};return e.fields.forEach((m,g)=>{if(a.importPresence&&!a.importPresence[E]?.has(m))return;let y=f[p[g]]??"";R[m]={value:Ec(y,d.get(m))}}),R});c.forEach(f=>_t([f],e.fields.filter(E=>E in f),o,s));let u=[];for(let f=0;f<c.length;f+=100){let E=c.slice(f,f+100),R=await t.postRecords({app:e.appId,records:E});u.push(R.ids)}return{type:"INSERT",createdIds:u,insertedCount:u.flat().length}}async function qu(e,t,r,n,i){if(e.applyBlocks?.length)return Sc(e,t,r,n);if(e.checkGroups?.length&&et(e.where)){let E=await _e(e.appId,e.assignments.map(m=>m.field),t,n);await tt(e.appId,e.assignments.map(m=>m.field),E,t,n);let R=await de(e.appId,t,n);return gc(e,R),vt(e,Is(R,e.appId)),await pr(e,t,n),{type:"UPDATE",updatedCount:0}}if(e.checkGroups?.length)return fn(e,t,r,n,i);if(e.subtableCode)return await pr(e,t,n),lm(e,t,r,n);let o=await _e(e.appId,e.assignments.map(E=>E.field),t,n),s=e.assignments.map(E=>E.field),a=await tt(e.appId,s,o,t,n);if(await pr(e,t,n),et(e.where))return{type:"UPDATE",updatedCount:0};if(e.from!=null)return nm(e,e.from,t,r,n,i);let l=r.maxRecords??1e4;await Nc(e.assignments,t,r,n);let p=await de(e.appId,t,n);if(Yn(e)){let E=So(e),m=(await Ce(t.getRecords,E.app,E.query,[...E.fields],{maxRecords:l,parallel:r.fetchParallel??1})).records,g=wo(e,m,p);if(_t(g.flatMap(y=>y.records.map(T=>T.record)),s,o,a),r.confirm&&!await r.confirm(m.length,"UPDATE"))throw new Q("UPDATE",m.length);for(let y of g)await t.putRecords(y);return{type:"UPDATE",updatedCount:m.length}}let d=vr(e),u=(await ai(t.getRecords,d.app,d.query,{maxRecords:l,parallel:r.fetchParallel??1})).ids,f=Dr(e,u,p);if(_t(f.flatMap(E=>E.records.map(R=>R.record)),s,o,a),r.confirm&&!await r.confirm(u.length,"UPDATE"))throw new Q("UPDATE",u.length);for(let E of f)await t.putRecords(E);return{type:"UPDATE",updatedCount:u.length}}async function Sc(e,t,r,n,i=1){if(!e.validateOnly&&r.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");if(!We(e.where))return YR(e,t,r,n,i);let o=await J(e.appId,t,n),s=qe(e,o),a=qn(e,o),l=_o(e),p=await t.getRecords({app:e.appId,query:`$id = ${l} limit 2`,fields:[...a]});if(p.records.length===0)throw new Error(`ArgumentError: APPLY parent $id ${l} does not exist.`);if(p.records.length!==1)throw new Error(`ArgumentError: APPLY parent $id ${l} returned multiple records.`);let d=Number(p.records[0].$id?.value);if(d!==l)throw new Error(`ArgumentError: APPLY snapshot $id ${d} does not match requested $id ${l}.`);Qn(p.records[0]);let c=Cl({statement:e,snapshot:p.records[0],fieldInfos:o,metadata:s}),u=De(o,e.assignments.map(N=>N.field)),f=wt(c.postImage,u)?await $e(e.appId,t,n):void 0,E=It(c.postImage,u,f,i);if(!e.validateOnly&&E.errorCount>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:E.columns,errors:E.errors})}`);let R=Pe(r.dmlMaxRows,"dmlMaxRows",rt),m=Pe(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",be),g=c.parentRows>R||c.changedSubtableRows>m;if(e.validateOnly){let N=Vr({plans:[c],records:xr(c).records,validations:[],guards:{revisionRequired:!0,parentRows:c.parentRows,dmlMaxRows:R,subtableRows:c.changedSubtableRows,dmlMaxSubtableRows:m,wouldExceed:g}}),w={type:"VALIDATION",operation:"UPDATE",validatedRows:1,validRows:E.invalidRows===0?1:0,invalidRows:E.invalidRows===0?0:1,errorCount:E.errorCount,columns:[...E.columns],errors:E.errors,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},apply:an(N.branches[0]),guards:ln(N.branches[0]),deletedRows:{total:c.tables.reduce((L,b)=>L+b.deletedRows,0),parentRows:c.tables.some(L=>L.deletedRows>0)?1:0},diagnostic:N};return Rr.set(w,Ki(E.columns,o,e.appId)),w}if(c.parentRows>R)throw new Error(`ArgumentError: APPLY parent rows (${c.parentRows}) exceed dmlMaxRows (${R}).`);if(c.changedSubtableRows>m)throw new Error(`ArgumentError: APPLY changed subtable rows (${c.changedSubtableRows}) exceed dmlMaxSubtableRows (${m}).`);let y=Xn(c,E.normalizedRecord),T=xr(y),A=Vr({plans:[y],records:T.records,validations:[],guards:{revisionRequired:!0,parentRows:c.parentRows,dmlMaxRows:R,subtableRows:c.changedSubtableRows,dmlMaxSubtableRows:m,wouldExceed:g}});if(r.confirm){let N=Fi(A,!1);if(!await r.confirm(c.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPDATE",targetAppId:e.appId,applyDetail:N,applyDiagnostic:A}))throw new Q("UPDATE",c.parentRows)}return await t.putRecords(T),{type:"UPDATE",updatedCount:c.parentRows,diagnostic:Ie(A,{successfulChunks:1,successfulParents:c.parentRows})}}async function YR(e,t,r,n,i){let o=Pe(r.dmlMaxRows,"dmlMaxRows",rt),s=Pe(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",be),a=await J(e.appId,t,n),l=qe(e,a),p;if(vi(e))p=await XR(e,t,r,a,n);else{let f=qn(e,a),E=vr(e).query,R=o+1;p=await Ee(t.getRecords,e.appId,E,[...f],{pageSize:Math.min(500,R),parallel:r.fetchParallel??1,maxRecords:R,stopAfter:R,onLimit:"error"})}if(!e.validateOnly&&p.length>o)throw new Error(`ArgumentError: APPLY parent rows (${p.length}) exceed dmlMaxRows (${o}).`);let d=await ri({statement:e,snapshots:p,fieldInfos:a,metadata:l,dmlMaxRows:o,dmlMaxSubtableRows:s,statementNumber:i,loadNumberPrecision:()=>$e(e.appId,t,n)});if(e.validateOnly)return tm(e,d,a);wa("phase15b",e);let c=Vr(d);if(r.confirm){let f=Fi(c);if(!await r.confirm(d.guards.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPDATE",targetAppId:e.appId,applyDetail:f,applyDiagnostic:c}))throw new Q("UPDATE",d.guards.parentRows)}let u=await jl(d,t,c);return{...u,diagnostic:Ie(c,u)}}function vi(e){return(e.applyBlocks?.length??0)>0&&!We(e.where)&&(it(e.where)||oe(e.where))}function jR(e){let t=e.type==="EXPLAIN"?e.query:e;return t.type==="UPDATE"&&vi(t)&&oe(t.where)}var qR=`APPLY \u8907\u6570\u89AA UPDATE \u306E\u89AA WHERE \u306B\u3001\u5B89\u5168\u306B\u62BC\u3057\u4E0B\u3052\u3089\u308C\u306A\u3044 KLIKE / NOT KLIKE \u304C\u3042\u308A\u307E\u3059\u3002
3
+ `;)this.pos++;continue}if(t==="/"&&this.input[this.pos+1]==="*"){let r=this.pos;this.pos+=2;let n=!1;for(;this.pos<this.input.length;){if(this.input[this.pos]==="*"&&this.input[this.pos+1]==="/"){this.pos+=2,n=!0;break}this.pos++}if(!n)throw new le("\u30D6\u30ED\u30C3\u30AF\u30B3\u30E1\u30F3\u30C8\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u307E\u305B\u3093",r,this.input,!0);continue}break}}makeToken(t,r,n){return{kind:t,value:r,pos:n}}};function ro(e){let t=e.codePointAt(0);return t>=65&&t<=90||t>=97&&t<=122||t===95||t===36||Lp(t)}function fs(e){let t=e.codePointAt(0);return ro(e)||t>=48&&t<=57}function Vt(e){let t=e.codePointAt(0);return t>=48&&t<=57}function Lp(e){return e>=12352&&e<=12543||e>=13312&&e<=40959||e>=63744&&e<=64255||e>=65281&&e<=65376}var _p=/^([+-]?)(?:(\d+)(?:\.(\d*))?|\.(\d+))(?:[eE]([+-]?)(\d+))?$/;function Dp(e,t){if(t===void 0)return 0;let r=0;for(let n of t)if(r=r*10+(n.charCodeAt(0)-48),!Number.isSafeInteger(r))return null;return e==="-"?-r:r}function Ae(e){let t=_p.exec(e.trim());if(t===null)return null;let r=Dp(t[5],t[6]);if(r===null)return null;let n=t[3]??t[4]??"",i=`${t[2]??""}${n}`.replace(/^0+/,"");if(i==="")return{sign:0,coefficient:"0",scale:0};let o=n.length-r;if(!Number.isSafeInteger(o))return null;let a=/0+$/.exec(i)?.[0].length??0;return a>0&&(i=i.slice(0,-a),o-=a,!Number.isSafeInteger(o))||!Number.isSafeInteger(i.length-o)?null:{sign:t[1]==="-"?-1:1,coefficient:i,scale:o}}function vp(e){if(e.sign===0)return"0";let t=e.coefficient,r;if(e.scale<=0)r=`${t}${"0".repeat(-e.scale)}`;else if(t.length>e.scale){let n=t.length-e.scale;r=`${t.slice(0,n)}.${t.slice(n)}`}else r=`0.${"0".repeat(e.scale-t.length)}${t}`;return e.sign===-1?`-${r}`:r}function Rs(e){let t=Ae(e);return t===null?null:vp(t)}function kp(e,t){let r=e.coefficient.length-e.scale,n=t.coefficient.length-t.scale;if(!Number.isSafeInteger(r)||!Number.isSafeInteger(n))throw new Error("ArgumentError: exact decimal scale is outside the supported range.");if(r!==n)return r<n?-1:1;let i=Math.max(e.coefficient.length,t.coefficient.length);for(let o=0;o<i;o++){let a=o<e.coefficient.length?e.coefficient.charCodeAt(o):48,s=o<t.coefficient.length?t.coefficient.charCodeAt(o):48;if(a!==s)return a<s?-1:1}return 0}function On(e,t){if(e.sign!==t.sign)return e.sign<t.sign?-1:1;if(e.sign===0)return 0;let r=kp(e,t);return e.sign===-1?r===0?0:r===-1?1:-1:r}function Ln(e,t){let r=Ae(e),n=Ae(t);if(r===null||n===null)throw new Error("ArgumentError: compareDecimal requires finite decimal inputs.");return On(r,n)}var at="__NO_FROM__";function ue(e){return{type:"NUMBER",value:Number(e),raw:e}}function G(e){let t=e.raw??String(e.value);return Rs(t)??t}function ms(e){let t=1;for(let n of e){if(t>Math.floor(64/2)){let i=t*2;throw new Error(`ArgumentError: B65 expanded grouping set count ${i} exceeds limit 64 (reason=GROUPING_SET_LIMIT_EXCEEDED).`)}t*=2}let r=[{items:[]}];for(let n of e)r=r.flatMap(i=>[{items:[...i.items,n]},{items:[...i.items]}]);return r}function Up(e){return`${e.tableAlias??""}\0${e.field}`}function ne(e){if(e.grouping!==void 0&&e.groupBy.length>0)throw new Error("internal error: SELECT cannot contain both groupBy and grouping.");if(e.grouping===void 0)return e.groupBy.length===0?{type:"NONE"}:{type:"PLAIN",allItems:e.groupBy,sets:[e.groupBy]};let t=new Set,r=[];for(let i of e.grouping.sets)for(let o of i.items){let a=Up(o);t.has(a)||(t.add(a),r.push(o))}let n=e.grouping.sets.map(i=>({items:[...i.items]}));return{type:"GROUPING_SETS",source:e.grouping.source,allItems:r,sets:n}}function hs(e){return ne(e).type!=="NONE"}function gs(e,t){let r=ne(e);if(r.type!=="GROUPING_SETS")return null;let n=new Map,i=s=>{let l=t(s),d=n.get(l.canonicalId);if(d)return d;let p={...l,field:s};return n.set(p.canonicalId,p),p},o=r.allItems.map(i).filter((s,l,d)=>d.findIndex(p=>p.canonicalId===s.canonicalId)===l),a=r.sets.map(s=>({items:s.items.map(i)}));return{type:"GROUPING_SETS",source:r.source,allItems:o,sets:a}}function _n(e){return`'${e.replace(/'/g,"''")}'`}function Ht(e,t=!1){if(e.type==="FIELD_REF")return e.field;if(e.type==="NUMBER")return G(e);if(e.type==="STRING_FUNC")return io(e);let r=`${Ht(e.left)}${e.op}${Ht(e.right)}`;return t?r:`(${r})`}function ys(e){if(e.type==="FIELD")return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;if(e.type==="FUNC_FIELD")return io(e.expr);if(e.type==="ARITH_FIELD")return Ht(e.expr);if(e.type==="GROUPING_FIELD"){let t=e.ref.field;return`GROUPING(${t.tableAlias?`${t.tableAlias}.`:""}${t.field})`}return no(e.expr)}function Ss(e){switch(e.type){case"STRING":return _n(e.value);case"NUMBER":return G(e);case"VARIABLE":return`@${e.name}`;case"VARIABLE_IN_LIST":return`@${e.name}`;case"KINTONE_FUNC":return`${e.name}()`;case"ARRAY":return`[${e.elements.map(t=>_n(t.value)).join(",")}]`;case"IN_LIST":return`(${e.values.map(Ss).join(",")})`;case"ARITH_VALUE":return Ht(e.expr);case"CASE_VALUE":return no(e.expr);case"SUBQUERY_IN_LIST":return"(SUBQUERY)";case"SCALAR_SUBQUERY":return"(SUBQUERY)"}}function Tr(e){switch(e.type){case"BINARY":return`${ys(e.left)} ${e.op.replace("_"," ")} ${Ss(e.right)}`;case"NULL_CHECK":return`${ys(e.field)} IS ${e.not?"NOT ":""}NULL`;case"LOGICAL":return`(${Tr(e.left)} ${e.op} ${Tr(e.right)})`;case"NOT":return`NOT (${Tr(e.expr)})`;case"GROUP":return`(${Tr(e.expr)})`;case"BOOLEAN":return e.value?"TRUE":"FALSE";case"EXISTS":return`${e.not?"NOT ":""}EXISTS (SUBQUERY)`}}function As(e){return e.type==="ARRAY"?`[${e.elements.map(t=>_n(t.value)).join(",")}]`:e.type==="FIELD_REF"||e.type==="ARITH"?Ht(e):St(e)}function no(e){let t=e.branches.map(n=>`WHEN ${Tr(n.condition)} THEN ${As(n.result)}`).join(" "),r=e.elseResult===null?"":` ELSE ${As(e.elseResult)}`;return`CASE ${t}${r} END`}function Mp(e){return e.type==="AGG_REF"?Se(e.func,e.distinct,e.arg):e.type==="AGG_ARITH"?wr(e):St(e)}function io(e){return`${e.func}(${e.args.map(Mp).join(",")})`}function St(e){switch(e.type){case"STRING":return _n(e.value);case"NUMBER":return G(e);case"VARIABLE":return`@${e.name}`;case"FIELD":return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;case"STRING_FUNC":return io(e);case"CASE_WHEN":return no(e);case"SCALAR_ARITH":return`(${St(e.left)}${e.op}${St(e.right)})`;case"CONCAT_OP":return`(${St(e.left)}||${St(e.right)})`}}function xp(e){return e.type==="WILDCARD"?"*":e.type==="FIELD_REF"||e.type==="ARITH"?Ht(e,!0):St(e)}function Se(e,t,r){let n=xp(r);return t?`${e}(DISTINCT ${n})`:`${e}(${n})`}function wr(e){return e.type==="NUMBER"?G(e):e.type==="AGG_REF"?Se(e.func,e.distinct,e.arg):`${wr(e.left)}${e.op}${wr(e.right)}`}var oo=new Set(["YESTERDAY","TOMORROW","FROM_TODAY","THIS_WEEK","LAST_WEEK","NEXT_WEEK","THIS_MONTH","LAST_MONTH","NEXT_MONTH","THIS_YEAR","LAST_YEAR","NEXT_YEAR"]),je="WHERE_RELATIVE_DATE_REQUIRES_EXACT_PUSHDOWN";function Ne(e){return oo.has(e)}var Ts=20,ao=Object.freeze({UPPER:"UPPER",LOWER:"LOWER",TRIM:"TRIM",LTRIM:"LTRIM",RTRIM:"RTRIM",LENGTH:"LENGTH",LENGTH_CHAR:"LENGTH_CHAR",SUBSTRING:"SUBSTRING",SUBSTR:"SUBSTRING",LEFT:"LEFT",RIGHT:"RIGHT",INSTR:"INSTR",CONCAT:"CONCAT",REPLACE:"REPLACE",REGEXP_LIKE:"REGEXP_LIKE",REGEXP_REPLACE:"REGEXP_REPLACE",REGEXP_SUBSTR:"REGEXP_SUBSTR",TRANSLATE:"TRANSLATE",COALESCE:"COALESCE",ISNULL:"ISNULL",NULLIF:"NULLIF",GREATEST:"GREATEST",LEAST:"LEAST",LPAD:"LPAD",RPAD:"RPAD",ROUND:"ROUND",FLOOR:"FLOOR",CEIL:"CEIL",CEILING:"CEIL",TRUNCATE:"TRUNCATE",TRUNC:"TRUNCATE",ABS:"ABS",MOD:"MOD",POWER:"POWER",POW:"POWER",SQRT:"SQRT",FORMAT:"FORMAT",CAST:"CAST",CONVERT:"CAST",YEAR:"YEAR",MONTH:"MONTH",DAY:"DAY",DAYOFWEEK:"DAYOFWEEK",QUARTER:"QUARTER",WEEK:"WEEK",DATE_FORMAT:"DATE_FORMAT",DATEDIFF:"DATEDIFF",DATE_ADD:"DATE_ADD",LAST_DAY:"LAST_DAY"}),Is=Object.freeze(["CURRENT_DATE","CURRENT_TIMESTAMP"]),so=Object.freeze({COUNT:"COUNT",SUM:"SUM",AVG:"AVG",MAX:"MAX",MIN:"MIN",GROUP_CONCAT:"GROUP_CONCAT",STDDEV_POP:"STDDEV_POP",STDDEV_SAMP:"STDDEV_SAMP",VAR_POP:"VAR_POP",VAR_SAMP:"VAR_SAMP",MEDIAN:"MEDIAN",MODE:"MODE"}),hg=Object.freeze(Object.values(so).filter(e=>e!==void 0)),Fp=Object.freeze(["COUNT","SUM","AVG","MAX","MIN"]),Kp=new Set(Fp);function Bp(e){return Kp.has(e)}var bs=Object.freeze({ROW_NUMBER:"ROW_NUMBER",RANK:"RANK",DENSE_RANK:"DENSE_RANK"}),Dn=Object.freeze({TODAY:"TODAY",NOW:"NOW",LOGINUSER:"LOGINUSER"});function ws(e){return Dn[e]!==void 0}var $p=Object.freeze([...oo]),Gp=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),Vp=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function Wp(e){return Gp.has(e)}function Hp(e){return Vp.has(e)}function Yp(e){return Number.isInteger(e)&&e>=1&&e<=31}var gg=Object.freeze(Array.from(new Set([...Object.keys(ao),...Is,...Object.keys(so),...Object.keys(bs),...Object.keys(Dn),...$p,"IF"]))),jp=new Set(["IDENT","BIDENT","COUNT","SUM","AVG","MAX","MIN","GROUP_CONCAT","STDDEV_POP","STDDEV_SAMP","VAR_POP","VAR_SAMP","MEDIAN","MODE","ROW_NUMBER","RANK","DENSE_RANK","TODAY","NOW","LOGINUSER","UPPER","LOWER","TRIM","LTRIM","RTRIM","LENGTH","LENGTH_CHAR","SUBSTRING","SUBSTR","CONCAT","REPLACE","TRANSLATE","COALESCE","NULLIF","ISNULL","REGEXP_LIKE","REGEXP_REPLACE","REGEXP_SUBSTR","LEFT","RIGHT","INSTR","GREATEST","LEAST","LPAD","RPAD","CAST","CONVERT","FORMAT","ROUND","FLOOR","CEIL","CEILING","TRUNCATE","TRUNC","ABS","MOD","POWER","POW","SQRT","YEAR","MONTH","DAY","DAYOFWEEK","QUARTER","WEEK","DATE_FORMAT","DATEDIFF","DATE_ADD","LAST_DAY","IF"]);function qp(e,t){return e.kind==="("||e.kind==="."||t.kind===")"||t.kind===","||t.kind==="."?!1:t.kind==="("?!jp.has(e.kind):!0}var A=class extends Error{constructor(r,n){super(`${r}\uFF08\u4F4D\u7F6E ${n.pos}\u3001\u30C8\u30FC\u30AF\u30F3: \u300C${n.value}\u300D\uFF09`);this.token=n;this.name="ParseError"}},Yt=class{constructor(t,r={}){this.tokens=t;this.capabilities=r;this.allowUnaryPlusNumber=!1;this.scalarAllowsAggregateArgs=!0;this.scalarAllowsCase=!0;this.pos=0;this.insideAggregateArg=0;this.groupingFieldContext="FORBIDDEN";this.allowRelativeDateFunctions=!1;this.cteNames=new Set;this.tempTableRefs=[]}parse(){let t=this.parseStatements();if(t.length===0)throw new A("SQL \u6587\u304C\u3042\u308A\u307E\u305B\u3093",this.peek());if(t.length>1)throw new A("\u3053\u306E API \u306F\u5358\u6587\u306E\u307F\u53D7\u3051\u4ED8\u3051\u307E\u3059\uFF08\u8907\u6587\u306F\u30D0\u30C3\u30C1\u5B9F\u884C API \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",this.peek());if(this.tempTableRefs.length>0){let r=this.tempTableRefs[0];throw new A(`temp table ${r.value} is not defined in this batch.`,r)}return t[0]}parseStatements(){let t=[];for(;;){for(;this.peek().kind===";";)this.advance();if(this.peek().kind==="EOF")break;let r=this.peek();if(t.push(this.parseStatement()),t.length>Ts)throw new A(`batch exceeds ${Ts} statements.`,r);let n=this.peek();if(n.kind!==";"&&n.kind!=="EOF")throw new A("\u6587\u306E\u533A\u5207\u308A\u306B\u306F ; \u304C\u5FC5\u8981\u3067\u3059",n)}return this.expect("EOF"),t}parseStatement(){let t=this.peek();switch(t.kind){case"WITH":return this.parseWith();case"SELECT":return this.tryParseUnionChain(this.parseSelect(!0));case"INSERT":return this.parseInsert();case"UPDATE":return this.parseUpdate();case"DELETE":return this.parseDelete();case"REORDER":return this.parseReorder();case"UPSERT":return this.parseUpsert();case"SHOW":return this.parseShow();case"DESCRIBE":case"DESC":return this.parseDescribe();case"EXPLAIN":return this.parseExplain();case"SET":return this.parseSetVariable();case"ASSERT":return this.parseAssert();case"IDENT":{let r=t.value.toUpperCase();if(r==="CREATE")return this.parseCreateTempTable();if(r==="DROP")return this.parseDropTempTable();if(r==="DECLARE")return this.parseDeclareVariable();if(r==="VALIDATE")return this.parseValidate();if(r==="IMPORT"){if(!this.capabilities.import)throw new A("IMPORT is not supported (capability is disabled).",t);return this.parseImport()}break}default:break}throw new A("SELECT / INSERT / UPDATE / DELETE / REORDER / VALIDATE / WITH / SHOW / DESCRIBE / EXPLAIN / CREATE TEMP TABLE / DROP TEMP TABLE / SET / DECLARE / ASSERT \u306E\u3044\u305A\u308C\u304B\u3067\u59CB\u307E\u308B SQL \u6587\u304C\u5FC5\u8981\u3067\u3059",t)}parseSetVariable(){this.expect("SET");let t=this.expect("VARIABLE","SET \u306E\u5F8C\u306B\u306F\u5909\u6570\u540D\uFF08\u4F8B: @name\uFF09\u304C\u5FC5\u8981\u3067\u3059");this.expect("=");let r=this.peek().kind==="["?this.parseArrayLiteral():this.parseScalarExpr("SET",!0);return{type:"SET_VARIABLE",name:t.value.slice(1).toLowerCase(),expr:r}}parseDeclareVariable(){this.advance();let t=this.expect("VARIABLE","DECLARE \u306E\u5F8C\u306B\u306F\u5909\u6570\u540D\uFF08\u4F8B: @name\uFF09\u304C\u5FC5\u8981\u3067\u3059");this.expect("=");let r=this.parseScalarExpr("DECLARE",!1);if(r.type==="SCALAR_SUBQUERY")throw new A("DECLARE \u306E\u65E2\u5B9A\u5024\u306B\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());return{type:"DECLARE_VARIABLE",name:t.value.slice(1).toLowerCase(),default:r}}parseScalarExpr(t,r){let n=this.peek();if(n.kind==="VARIABLE")throw new A(`${t} \u306E\u53F3\u8FBA\u3067\u306F\u4ED6\u306E\u5909\u6570\u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093`,n);if(n.kind==="NULL")throw new A(`${t} \u306E\u53F3\u8FBA\u3067 NULL \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`,n);if(n.kind==="("&&this.peekAt(1).kind==="SELECT"){if(!r)throw new A("DECLARE \u306E\u65E2\u5B9A\u5024\u306B\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);this.advance();let a=this.parseSelect();if(this.expect(")"),this.isArithOp(this.peek().kind))throw new A("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u5F8C\u306B\u7B97\u8853\u6F14\u7B97\u5B50\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(!a.columns.some(l=>l.type==="WILDCARD"||l.type==="PARENT_WILDCARD")&&a.columns.length!==1)throw new A("scalar subquery in SET must return exactly 1 column.",n);return{type:"SCALAR_SUBQUERY",query:a}}if(n.kind==="STRING")return this.advance(),{type:"STRING",value:n.value};let i=Dn[n.kind];if(i==="LOGINUSER")throw new A(`${t} \u306E\u53F3\u8FBA\u3067 LOGINUSER() \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u5B9F\u884C\u74B0\u5883\u5171\u901A\u306E\u30ED\u30B0\u30A4\u30F3\u30E6\u30FC\u30B6\u30FC\u89E3\u6C7A\u306F\u672A\u5BFE\u5FDC\u3067\u3059\uFF09`,n);if(i!==void 0)return this.parseSqlValue();let o=this.parseArithAddSub();if(this.rejectNonScalarExpr(o,n,t),o.type==="NUMBER"||o.type==="STRING_FUNC"||o.type==="ARITH")return o;throw new A(`${t} \u306E\u53F3\u8FBA\u306B\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u542B\u307E\u306A\u3044\u30B9\u30AB\u30E9\u30FC\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,n)}rejectNonScalarExpr(t,r,n){if(!(t.type==="STRING"||t.type==="NUMBER")){if(t.type==="FIELD_REF"||t.type==="FIELD"||t.type==="VARIABLE"||t.type==="AGG_REF")throw new A(`${n} \u306E\u53F3\u8FBA\u3067\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u30FB\u96C6\u8A08\u95A2\u6570\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`,r);if(t.type==="ARITH"||t.type==="SCALAR_ARITH"||t.type==="CONCAT_OP"||t.type==="AGG_ARITH"){this.rejectNonScalarExpr(t.left,r,n),this.rejectNonScalarExpr(t.right,r,n);return}if(t.type==="STRING_FUNC"){for(let i of t.args)this.rejectNonScalarExpr(i,r,n);return}throw new A(`${n} \u306E\u53F3\u8FBA\u3067\u306F CASE \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`,r)}}parseCreateTempTable(){this.advance(),this.expectSoftKeyword("TEMP","CREATE \u306E\u5F8C\u306B\u306F TEMP TABLE \u304C\u5FC5\u8981\u3067\u3059\uFF08\u4F8B: CREATE TEMP TABLE #temp AS SELECT ...\uFF09"),this.expectSoftKeyword("TABLE","CREATE TEMP \u306E\u5F8C\u306B\u306F TABLE \u304C\u5FC5\u8981\u3067\u3059");let t=this.parseTempTableName();this.expect("AS","CREATE TEMP TABLE \u306B\u306F AS SELECT \u304C\u5FC5\u8981\u3067\u3059");let r=this.peek(),n;if(r.kind==="WITH")n=this.parseWith();else if(r.kind==="SELECT")n=this.tryParseUnionChain(this.parseSelect());else throw new A("CREATE TEMP TABLE ... AS \u306E\u5F8C\u306B\u306F SELECT / WITH \u304C\u5FC5\u8981\u3067\u3059",r);return{type:"CREATE_TEMP_TABLE",name:t,query:n}}parseDropTempTable(){return this.advance(),this.expectSoftKeyword("TEMP","DROP \u306E\u5F8C\u306B\u306F TEMP TABLE \u304C\u5FC5\u8981\u3067\u3059\uFF08\u4F8B: DROP TEMP TABLE #temp\uFF09"),this.expectSoftKeyword("TABLE","DROP TEMP \u306E\u5F8C\u306B\u306F TABLE \u304C\u5FC5\u8981\u3067\u3059"),{type:"DROP_TEMP_TABLE",name:this.parseTempTableName()}}expectSoftKeyword(t,r){let n=this.peek();if(n.kind==="IDENT"&&n.value.toUpperCase()===t){this.advance();return}throw new A(r,n)}parseTempTableName(){let t=this.peek();if(t.kind==="IDENT"&&t.value.startsWith("#"))return this.advance(),t.value;throw new A("\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u306F # \u3067\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08\u4F8B: #temp\uFF09",t)}parseShow(){if(this.advance(),!this.consume("APPS"))throw new A("SHOW \u306E\u5F8C\u306B\u306F APPS \u304C\u5FC5\u8981\u3067\u3059\uFF08\u4F8B: SHOW APPS\uFF09",this.peek());return{type:"SHOW_APPS"}}parseDescribe(){this.advance();let t=this.parseIdentifier(),{appId:r,subtableCode:n}=qe(t,this.prev());if(n)throw new A("DESCRIBE \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u540D\u3092\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093",this.prev());return{type:"DESCRIBE",appId:r}}parseExplain(){this.advance();let t=this.peek(),r;if(t.kind==="WITH"){let n=this.parseWith();if(n.type!=="WITH")throw new A("EXPLAIN \u306B\u7D9A\u304F WITH \u53E5\u304C\u4E0D\u6B63\u3067\u3059",t);r=n}else if(t.kind==="SELECT"){let n=this.parseSelect(!0);r=this.tryParseUnionChain(n)}else if(t.kind==="INSERT")r=this.parseInsert();else if(t.kind==="UPSERT")r=this.parseUpsert();else if(t.kind==="UPDATE")r=this.parseUpdate();else if(t.kind==="DELETE")r=this.parseDelete();else if(t.kind==="REORDER")r=this.parseReorder();else if(t.kind==="IDENT"&&t.value.toUpperCase()==="VALIDATE")r=this.parseValidate();else if(t.kind==="IDENT"&&t.value.toUpperCase()==="IMPORT"){if(!this.capabilities.import)throw new A("IMPORT is not supported (capability is disabled).",t);r=this.parseImport()}else throw new A("EXPLAIN \u306E\u5F8C\u306B\u306F SELECT / WITH / INSERT / UPSERT / UPDATE / DELETE / REORDER / VALIDATE \u304C\u5FC5\u8981\u3067\u3059",t);return{type:"EXPLAIN",query:r}}parseImport(){this.advance();let t;this.peek().kind==="UPDATE"&&(this.advance(),t="UPDATE_RECORD_NUMBER"),this.expect("INTO"),this.rejectTempTableDml();let r=this.parseIdentifier(),{appId:n,subtableCode:i}=qe(r,this.prev());if(i)throw new A("IMPORT does not support subtables in Phase 1.",this.prev());this.expect("(");let o=[],a=[],s=new Set;for(;;){let w=this.parseIdentifier();if(s.has(w))throw new A(`IMPORT target ${w} is declared more than once.`,this.prev());if(s.add(w),this.peek().kind==="("){this.advance();let _=this.parseIdentList();if(this.expect(")"),new Set(_).size!==_.length)throw new A(`IMPORT subtable ${w} contains duplicate child declarations.`,this.prev());let I;if(this.isSoftKeyword("ROW")){this.advance();for(let k of["ID","SOURCE"]){if(!this.isSoftKeyword(k))throw new A("ROW must be followed by ID SOURCE <header>.",this.peek());this.advance()}I=this.parseIdentifier()}o.push({kind:"SUBTABLE",subtableCode:w,children:_,...I?{rowIdSourceHeader:I}:{}})}else a.push(w),o.push({kind:"FIELD",field:w});if(this.peek().kind!==",")break;this.advance()}if(this.expect(")"),this.expect("FROM"),!this.isSoftKeyword("CSV")&&!this.isSoftKeyword("JSON"))throw new A("IMPORT FROM requires CSV or JSON.",this.peek());let l=this.peek().value.toUpperCase();this.advance();let d=this.parseIdentifier(),p,c=!0,u;if(this.isSoftKeyword("ENCODING")){if(l==="JSON")throw new A("JSON source is UTF-8 only; ENCODING is not allowed.",this.peek());this.advance();let w=this.parseIdentifier().toUpperCase();if(w!=="UTF8"&&w!=="SJIS")throw new A("ENCODING must be UTF8 or SJIS.",this.prev());p=w==="UTF8"?"utf8":"sjis"}if(this.peek().kind==="NOT"&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="HEADER"){if(l==="JSON")throw new A("NO HEADER is CSV-only.",this.peek());this.advance(),this.advance(),c=!1}else if(this.isSoftKeyword("NO")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="HEADER"){if(l==="JSON")throw new A("NO HEADER is CSV-only.",this.peek());this.advance(),this.advance(),c=!1}if(this.isSoftKeyword("COLUMNS")){if(l==="JSON")throw new A("COLUMNS is CSV-only.",this.peek());if(c)throw new A("COLUMNS requires NO HEADER.",this.peek());this.advance(),this.expect("("),u=this.parseIdentList(),this.expect(")")}let f;if(this.peek().kind==="SELECT"){if(l==="JSON")throw new A("SELECT projection is CSV-only.",this.peek());if(f=this.parseSelect(),f.from.cteName!==at||f.joins.length>0)throw new A("IMPORT projection cannot use FROM or JOIN.",this.prev());if(f.where||f.groupBy.length||f.grouping!==void 0||f.having||f.orderBy.length||f.limit!==null||f.offset!==null)throw new A("IMPORT projection supports SELECT expressions only.",this.prev());if(this.validateImportProjectionScope(f,this.prev()),o.some(w=>w.kind==="SUBTABLE"))throw new A("IMPORT subtable sources cannot use SELECT projection.",this.prev());if(f.columns.length!==a.length)throw new A(`IMPORT projection has ${f.columns.length} columns; target has ${a.length}.`,this.prev())}let E="POSITION",R=!1;if(this.peek().kind==="BY"||this.isSoftKeyword("BY")){if(l==="JSON")throw new A("BY NAME is CSV-only.",this.peek());if(this.advance(),!this.isSoftKeyword("NAME"))throw new A("BY must be followed by NAME in IMPORT.",this.peek());if(this.advance(),!c)throw new A("BY NAME requires HEADER.",this.prev());if(f)throw new A("BY NAME and SELECT projection are mutually exclusive.",this.prev());if(E="BY_NAME",this.isSoftKeyword("IGNORE")){if(this.advance(),!this.isSoftKeyword("UNKNOWN"))throw new A("IGNORE must be followed by UNKNOWN COLUMNS.",this.peek());if(this.advance(),!this.isSoftKeyword("COLUMNS"))throw new A("IGNORE UNKNOWN must be followed by COLUMNS.",this.peek());this.advance(),R=!0}}let h,m;if(this.isSoftKeyword("MATCH")){this.advance();for(let w of["RECORD","NUMBER","SOURCE"]){if(!this.isSoftKeyword(w))throw new A("MATCH must be followed by RECORD NUMBER SOURCE <header>.",this.peek());this.advance()}m=this.parseIdentifier()}this.peek().kind==="ON"&&this.peekAt(1).kind==="DUPLICATE"&&(h=this.parseOnDuplicate());let g;if(this.peek().kind==="REPLACE"||this.isSoftKeyword("REPLACE")){if(this.advance(),!this.isSoftKeyword("SUBTABLES"))throw new A("REPLACE must be followed by SUBTABLES (...).",this.peek());if(this.advance(),this.expect("("),g=this.parseIdentList(),this.expect(")"),new Set(g).size!==g.length)throw new A("REPLACE SUBTABLES contains duplicates.",this.prev())}let T=o.filter(w=>w.kind==="SUBTABLE");if(T.length){if(f)throw new A("IMPORT subtables cannot use SELECT projection.",this.prev());if(l==="JSON"){if(T.some(w=>w.rowIdSourceHeader))throw new A("JSON subtable IMPORT does not accept ROW ID SOURCE.",this.prev());if(g)throw new A("REPLACE SUBTABLES is CSV-only; JSON uses nested-array replacement semantics.",this.prev())}else{if(t!=="UPDATE_RECORD_NUMBER"||!m)throw new A("CSV subtable IMPORT requires IMPORT UPDATE and MATCH RECORD NUMBER SOURCE.",this.prev());if(E!=="BY_NAME")throw new A("CSV subtable IMPORT requires BY NAME.",this.prev());if(!g)throw new A("CSV subtable IMPORT requires REPLACE SUBTABLES (...).",this.prev());let w=new Set(g);for(let _ of T){if(!_.rowIdSourceHeader)throw new A(`CSV subtable ${_.subtableCode} requires ROW ID SOURCE <header>.`,this.prev());if(!w.has(_.subtableCode))throw new A(`IMPORT declares child columns for non-replaced subtable ${_.subtableCode}.`,this.prev())}for(let _ of w)if(!T.some(I=>I.subtableCode===_))throw new A(`REPLACE SUBTABLES target ${_} is not declared in INTO.`,this.prev())}}else if(g)throw new A("REPLACE SUBTABLES requires subtable targets in INTO.",this.prev());if(t){if(l!=="CSV")throw new A("IMPORT UPDATE supports CSV only.",this.prev());if(E!=="BY_NAME")throw new A("IMPORT UPDATE requires BY NAME.",this.prev());if(!m)throw new A("IMPORT UPDATE requires MATCH RECORD NUMBER SOURCE <header>.",this.peek());if(h)throw new A("IMPORT UPDATE and ON DUPLICATE are mutually exclusive.",this.prev())}else if(m)throw new A("MATCH RECORD NUMBER SOURCE requires IMPORT UPDATE.",this.prev());let S=this.parseCheckGroups(),P=this.parseDmlControlSuffix();return{type:"IMPORT",appId:n,fields:a,targets:o,source:l==="JSON"?{kind:"JSON",sourceName:d}:{kind:"CSV",sourceName:d,encoding:p,hasHeader:c,mappingMode:E,ignoreUnknownColumns:R,...u?{columns:u}:{},...f?{projection:f}:{}},...t?{writeMode:t,recordNumberSourceHeader:m}:{},...g?{replaceSubtables:g}:{},...h?{keyFields:h}:{},...S,...P}}validateImportProjectionScope(t,r){if(Array.isArray(t)){t.forEach(i=>this.validateImportProjectionScope(i,r));return}if(t===null||typeof t!="object")return;let n=t;if(n.type==="SCALAR_SUBQUERY"||n.type==="SCALAR_SUBQUERY_COL")throw new A("IMPORT projection cannot use subqueries.",r);if(typeof n.tableAlias=="string")throw new A("IMPORT projection cannot use qualified column references.",r);Object.values(n).forEach(i=>this.validateImportProjectionScope(i,r))}parseValidate(){let t=this.advance(),r=this.parseIdentifier(),{appId:n,subtableCode:i}=qe(r,this.prev());if(i)throw new A(`VALIDATE APP${n}$${i} \u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002VALIDATE APP${n} (${i}) \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044`,this.prev());let o;if(this.consume("(")){o=[];do{let c=this.parseIdentifier();if(this.consume("(")){let u=this.peek().kind===")"?[]:this.parseIdentList();this.expect(")"),o.push({kind:"SUBTABLE",subtableCode:c,children:u})}else o.push({kind:"FIELD",field:c})}while(this.consume(","));this.expect(")")}let a;this.isSoftKeyword("SUMMARY")&&(this.advance(),a=!0);let s=this.consume("WHERE")?this.parseWhereExpr(void 0,!0):null,l=this.parseCheckGroups(),d;if(this.consume("INTO")){let c=this.peek();if(c.kind!=="IDENT"||!c.value.startsWith("#"))throw new A("VALIDATE INTO \u306B\u306F # \u3067\u59CB\u307E\u308B\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",c);d=this.parseTableName()}let p={type:"VALIDATE",appId:n,targets:o,...a?{summary:a}:{},where:s,...l,...d?{errorTable:d}:{}};return this.assertValidateExpressions(p,t),p}assertValidateExpressions(t,r){let n=i=>{if(Array.isArray(i)){i.forEach(n);return}if(i===null||typeof i!="object")return;let o=i;if(o.type==="EXISTS"||o.type==="SUBQUERY_IN_LIST"||o.type==="SCALAR_SUBQUERY")throw new A("VALIDATE \u306E WHERE / CHECK \u306B\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);if(o.type==="FIELD"&&o.tableAlias!==null&&o.tableAlias!==void 0)throw new A("VALIDATE \u306E WHERE / CHECK \u3067\u306F\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);if(o.type==="FIELD_REF"&&typeof o.field=="string"&&o.field.includes("."))throw new A("VALIDATE \u306E WHERE / CHECK \u3067\u306F\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);Object.values(o).forEach(n)};n(t.where),n(t.checkGroups)}parseAssert(){this.expect("ASSERT");let t=this.pos,r=this.parseAssertOperand(),n=this.peek();if(this.consume("BETWEEN")){let a=this.parseAssertOperand();this.expect("AND","ASSERT \u306E BETWEEN \u306B\u306F AND \u304C\u5FC5\u8981\u3067\u3059\uFF08\u4F8B: ASSERT (SELECT COUNT(*) FROM #t) BETWEEN 1 AND 500\uFF09");let s=this.parseAssertOperand();return this.rejectAssertCompound(),{type:"ASSERT",left:r,op:"BETWEEN",right:null,low:a,high:s,text:this.renderTokenRange(t,this.pos)}}let i=this.tryAssertCompareOp();if(i===null)throw new A("ASSERT \u306B\u306F\u6BD4\u8F03\u6F14\u7B97\u5B50\uFF08= <> < <= > >=\uFF09\u307E\u305F\u306F BETWEEN \u304C\u5FC5\u8981\u3067\u3059\uFF08\u5024\u306E\u307F\u306E ASSERT \u306F\u4E0D\u53EF\uFF09",n);let o=this.parseAssertOperand();return this.rejectAssertCompound(),{type:"ASSERT",left:r,op:i,right:o,low:null,high:null,text:this.renderTokenRange(t,this.pos)}}parseAssertOperand(){let t=this.peek();if(t.kind==="VARIABLE")return this.advance(),{type:"VARIABLE",name:t.value.slice(1).toLowerCase()};if(t.kind==="STRING")return this.advance(),{type:"STRING",value:t.value};if(t.kind==="("&&this.peekAt(1).kind==="SELECT"){this.advance();let r=this.parseSelect();if(this.expect(")"),this.isArithOp(this.peek().kind))throw new A("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u5F8C\u306B\u7B97\u8853\u6F14\u7B97\u5B50\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: ASSERT (SELECT COUNT(*) * 2 FROM APP100) > 10\uFF09",this.peek());if(!r.columns.some(i=>i.type==="WILDCARD"||i.type==="PARENT_WILDCARD")&&r.columns.length>1)throw new A("scalar subquery in ASSERT must return exactly 1 column.",t);return{type:"SCALAR_SUBQUERY",query:r}}if(t.kind==="NUMBER"||t.kind==="("||t.kind==="-"){let r=this.parseArithAddSub();return this.rejectNonLiteralArith(r,t),r.type==="NUMBER",r}throw this.tryStringFuncName()!==null?new A("ASSERT \u306E\u5F0F\u3067\u306F\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",t):new A("ASSERT \u306E\u5F0F\u306B\u306F\u30EA\u30C6\u30E9\u30EB\u30FB\u7B97\u8853\u5F0F\u30FB\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF09",t)}rejectNonLiteralArith(t,r){if(t.type==="FIELD_REF")throw new A(`ASSERT \u3067\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08FROM \u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u304C\u3042\u308A\u307E\u305B\u3093\uFF09: ${t.field}`,r);if(t.type==="STRING_FUNC")throw new A("ASSERT \u306E\u5F0F\u3067\u306F\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",r);t.type==="ARITH"&&(this.rejectNonLiteralArith(t.left,r),this.rejectNonLiteralArith(t.right,r))}tryAssertCompareOp(){switch(this.peek().kind){case"=":return this.advance(),"=";case"!=":return this.advance(),"!=";case"<>":return this.advance(),"<>";case">":return this.advance(),">";case"<":return this.advance(),"<";case">=":return this.advance(),">=";case"<=":return this.advance(),"<=";default:return null}}rejectAssertCompound(){let t=this.peek();if(t.kind==="AND"||t.kind==="OR")throw new A("ASSERT \u306F AND / OR \u306B\u3088\u308B\u8907\u5408\u6761\u4EF6\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093\uFF08\u8907\u6570\u306E ASSERT \u6587\u306B\u5206\u3051\u3066\u304F\u3060\u3055\u3044\uFF09",t)}renderTokenRange(t,r){let n="";for(let i=t;i<r;i++){let o=this.tokens[i],a;o.kind==="STRING"?a=`'${o.value.replace(/'/g,"''")}'`:o.kind==="BIDENT"?a=`\`${o.value}\``:a=o.value,n.length>0&&qp(this.tokens[i-1],o)&&(n+=" "),n+=a}return n}parseSelect(t=!1){this.expect("SELECT");let r=this.consume("DISTINCT"),n=this.parseSelectColumns(),i=this.consume("FROM"),o=i?this.parseTableRef():{appId:0,alias:null,cteName:at},a=i?this.parseJoins():[],s=this.consume("WHERE")?this.parseWhereExpr(void 0,!0):null,l=[],d,p=null;if(this.consume("GROUP")){if(this.expect("BY"),this.peek().kind==="DISTINCT"||this.isSoftKeyword("DISTINCT"))throw new A("B65: GROUP BY DISTINCT is not supported in Phase1.",this.peek());if(this.isGroupingSetsStart()?d=this.parseGroupingSetsClause():this.isRollupStart()?d=this.parseRollupClause():this.isCubeStart()?d=this.parseCubeClause():l=this.parseGroupByKeys(),d&&this.peek().kind===",")throw new A("B65: ordinary GROUP BY items cannot be mixed with grouping elements.",this.peek());this.consume("HAVING")&&(p=this.parseWhereExpr("HAVING"))}let c="CANONICAL",u=[];if(this.consume("ORDER"))this.expect("BY"),u=this.parseOrderBy();else if(this.consume("KORDER")){if(!t)throw new A("KORDER BY \u306F\u5229\u7528\u8005\u3078\u7D50\u679C\u3092\u8FD4\u3059\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB SELECT \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059",this.prev());c="KINTONE_NATIVE",this.expect("BY"),u=this.parseOrderBy()}let f=this.consume("LIMIT")?this.parseUnsignedInt():null,E=this.consume("OFFSET")?this.parseUnsignedInt():null,R=n.some(m=>m.type==="WINDOW_COL"),h=n.some(m=>this.selectColumnHasAggregate(m));if(R&&(l.length>0||d!==void 0||h))throw new A("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306F GROUP BY / \u96C6\u8A08\u95A2\u6570\u3068\u540C\u3058 SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());if(d&&c==="KINTONE_NATIVE")throw new A("B65: KORDER BY cannot be combined with grouping sets in Phase1.",this.peek());return{type:"SELECT",distinct:r,columns:n,from:o,joins:a,where:s,groupBy:l,...d?{grouping:d}:{},having:p,orderMode:c,orderBy:u,limit:f,offset:E}}parseWith(){this.expect("WITH");let t=[];do{let n=this.parseIdentifier();this.expect("AS"),this.expect("(");let i,o=this.peek().kind;o==="SHOW"?i=this.parseShow():o==="DESCRIBE"||o==="DESC"?i=this.parseDescribe():i=this.tryParseUnionChain(this.parseSelect()),this.expect(")"),t.push({name:n,query:i}),this.cteNames.add(n)}while(this.consume(","));let r=this.tryParseUnionChain(this.parseSelect());return this.cteNames.clear(),{type:"WITH",ctes:t,query:r}}tryParseUnionChain(t){if(this.peek().kind!=="UNION")return t;if(t.type==="SELECT"&&t.orderMode==="KINTONE_NATIVE")throw new A("KORDER BY \u306F UNION \u5206\u5C90\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());this.advance();let r=this.consume("ALL"),n=this.parseSelect(),i={type:"UNION",all:r,left:t,right:n};return this.tryParseUnionChain(i)}parseSelectColumns(){let t=[];do t.push(this.parseSelectColumn());while(this.consume(","));return t}parseSelectColumn(){if(this.consume("*"))return{type:"WILDCARD"};if(this.isUnsupportedGroupingIdStart())throw new A("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){let o=this.parseGroupingRef(),a=this.consume("AS")?this.parseAliasName():null;return{type:"GROUPING_COL",ref:o,alias:a}}if(this.tryAggregateFunc()===null&&this.hasTopLevelTokenBeforeValueEnd("||")){let o=this.parseScalarValueExpr({allowAggregateArgs:!0}),a=this.consume("AS")?this.parseAliasName():null;return{type:"SCALAR_VALUE_COL",expr:o,alias:a}}if(this.peek().kind==="VARIABLE"){let o=this.advance();if(!this.consume("AS"))throw new A("SELECT \u5217\u306E\u30D0\u30C3\u30C1\u5909\u6570\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());return{type:"VARIABLE_COL",name:o.value.slice(1).toLowerCase(),alias:this.parseAliasName()}}let t=this.tryWindowFunc();if(t!==null)return this.parseWindowColumn(t);if(this.peek().kind==="CASE"){let o=this.parseCaseWhenExpr(!0),a=this.consume("AS")?this.parseAliasName():null;return{type:"CASE_COL",expr:o,alias:a}}if(this.peek().kind==="IF"){let o=this.parseIfExpr(!0),a=this.consume("AS")?this.parseAliasName():null;return{type:"CASE_COL",expr:o,alias:a}}if(this.tryStringFuncName()!==null){let o=this.parseStringFuncExpr();if(this.isArithOp(this.peek().kind)){let s=this.continueArith(o),l=this.consume("AS")?this.parseAliasName():null;return{type:"ARITH_COL",expr:s,alias:l}}let a=this.consume("AS")?this.parseAliasName():null;return{type:"STRFUNC_COL",expr:o,alias:a}}let r=this.tryAggregateFunc();if(r!==null){let o=this.parseAggregateRef(r);if(this.isArithOp(this.peek().kind)){let s=this.continueAggArith(o),l=this.consume("AS")?this.parseAliasName():null;return{type:"ARITH_AGG_COL",expr:s,alias:l}}let a=this.consume("AS")?this.parseAliasName():null;return{type:"AGGREGATE",func:o.func,distinct:o.distinct,arg:o.arg,...o.separator!==void 0?{separator:o.separator}:{},alias:a}}if(this.peek().kind==="("&&this.peekAt(1).kind==="SELECT"){this.advance();let o=this.parseSelect();this.expect(")");let a=this.consume("AS")?this.parseAliasName():null;return{type:"SCALAR_SUBQUERY_COL",query:o,alias:a}}if(this.peek().kind==="STRING"){let o=this.expect("STRING").value,a=this.consume("AS")?this.parseAliasName():null;return{type:"LITERAL_COL",value:o,alias:a}}if(this.peek().kind==="("||this.peek().kind==="NUMBER"){let o=this.parseArithAddSub(),a=this.consume("AS")?this.parseAliasName():null;return{type:"ARITH_COL",expr:o,alias:a}}let n=this.parseColumnFieldRef();if(n==="_p.*")return{type:"PARENT_WILDCARD"};if(n==="_parent.*")throw new A("_parent.* \u306F\u5EC3\u6B62\u3057\u307E\u3057\u305F\u3002_p.* \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044",this.prev());if(this.isArithOp(this.peek().kind)){let o={type:"FIELD_REF",field:n},a=this.continueArith(o),s=this.consume("AS")?this.parseAliasName():null;return{type:"ARITH_COL",expr:a,alias:s}}let i=this.consume("AS")?this.parseAliasName():null;return{type:"FIELD",field:n,alias:i}}tryWindowFunc(){return bs[this.peek().kind]??null}parseWindowColumn(t){if(this.advance(),this.expect("("),this.peek().kind!==")")throw new A(`${t} \u306F\u5F15\u6570\u3092\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093`,this.peek());this.expect(")"),this.expectSoftKeyword("OVER",`${t} \u306B\u306F OVER (...) \u304C\u5FC5\u8981\u3067\u3059`),this.expect("(");let r=[];if(this.isSoftKeyword("PARTITION")){this.advance(),this.expect("BY","PARTITION \u306E\u5F8C\u306B\u306F BY \u304C\u5FC5\u8981\u3067\u3059");do{let o=this.parseQualifiedIdent();r.push({type:"FIELD",tableAlias:o.tableAlias,field:o.field})}while(this.consume(","))}let n=this.consume("ORDER")?(this.expect("BY"),this.parseOrderBy(!1)):[];if(this.expect(")"),!this.consume("AS"))throw new A("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());let i=this.parseAliasName();return{type:"WINDOW_COL",func:t,partitionBy:r,orderBy:n,alias:i}}selectColumnHasAggregate(t){return t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"?!0:t.type==="STRFUNC_COL"?t.expr.args.some(r=>this.stringFuncArgHasAggregate(r)):t.type==="SCALAR_VALUE_COL"?this.scalarValueHasAggregate(t.expr):!1}stringFuncArgHasAggregate(t){return t.type==="AGG_REF"||t.type==="AGG_ARITH"?!0:this.scalarValueHasAggregate(t)}scalarValueHasAggregate(t){return t.type==="STRING_FUNC"?t.args.some(r=>this.stringFuncArgHasAggregate(r)):t.type==="SCALAR_ARITH"||t.type==="CONCAT_OP"?this.scalarValueHasAggregate(t.left)||this.scalarValueHasAggregate(t.right):t.type==="CASE_WHEN"?[...t.branches.map(n=>n.result),...t.elseResult?[t.elseResult]:[]].some(n=>n.type==="ARRAY"||n.type==="FIELD_REF"||n.type==="ARITH"?!1:this.scalarValueHasAggregate(n)):!1}isArithOp(t){return t==="+"||t==="-"||t==="*"||t==="/"||t==="%"}continueAggArith(t){return this.continueAggArithAddSub(this.continueAggArithMulDiv(t))}continueAggArithMulDiv(t){for(;this.peek().kind==="*"||this.peek().kind==="/"||this.peek().kind==="%";){let r=this.parseArithOp();t={type:"AGG_ARITH",left:t,op:r,right:this.parseAggPrimary()}}return t}continueAggArithAddSub(t){for(;this.peek().kind==="+"||this.peek().kind==="-";){let r=this.parseArithOp();t={type:"AGG_ARITH",left:t,op:r,right:this.parseAggArithMulDiv()}}return t}parseAggArithMulDiv(){return this.continueAggArithMulDiv(this.parseAggPrimary())}parseAggPrimary(){if(this.consume("(")){let r=this.continueAggArith(this.parseAggPrimary());return this.expect(")"),r}if(this.peek().kind==="-"){this.advance();let r=this.parseAggPrimary();return r.type==="NUMBER"?ue(`-${G(r)}`):{type:"AGG_ARITH",left:ue("0"),op:"-",right:r}}if(this.peek().kind==="NUMBER"){let r=this.advance();return ue(r.value)}let t=this.tryAggregateFunc();if(t!==null)return this.parseAggregateRef(t);throw new A("\u96C6\u8A08\u7B97\u8853\u5F0F\u306B\u306F\u96C6\u8A08\u95A2\u6570\u307E\u305F\u306F\u6570\u5024\u304C\u5FC5\u8981\u3067\u3059",this.peek())}parseScalarValueExpr(t={}){let r=this.scalarAllowsAggregateArgs,n=this.scalarAllowsCase;this.scalarAllowsAggregateArgs=t.allowAggregateArgs===!0,this.scalarAllowsCase=t.allowCase!==!1;let i;try{i=this.parseScalarAddSubConcat(this.scalarAllowsCase)}finally{this.scalarAllowsAggregateArgs=r,this.scalarAllowsCase=n}let o=this.peek();if(o.kind==="IS"||o.kind==="="||o.kind==="!="||o.kind==="<>"||o.kind===">"||o.kind==="<"||o.kind===">="||o.kind==="<="||o.kind==="LIKE"||o.kind==="KLIKE"||o.kind==="IN"||o.kind==="BETWEEN")throw new A("\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306B\u6BD4\u8F03\u30FB\u8FF0\u8A9E\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",o);return i}parseScalarAddSubConcat(t){let r=this.parseScalarMulDiv(t);for(;this.peek().kind==="+"||this.peek().kind==="-"||this.peek().kind==="||";){let n=this.advance(),i=this.parseScalarMulDiv(t);r=n.kind==="||"?{type:"CONCAT_OP",left:r,right:i}:{type:"SCALAR_ARITH",left:r,op:n.kind==="+"?"+":"-",right:i}}return r}parseScalarMulDiv(t){let r=this.parseScalarPrimary(t);for(;this.peek().kind==="*"||this.peek().kind==="/"||this.peek().kind==="%";){let n=this.advance(),i=n.kind==="*"?"*":n.kind==="/"?"/":"%";r={type:"SCALAR_ARITH",left:r,op:i,right:this.parseScalarPrimary(t)}}return r}parseScalarPrimary(t){let r=this.peek();if(r.kind==="("){if(this.peekAt(1).kind==="SELECT")throw new A("\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306B\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);this.advance();let n=this.parseScalarAddSubConcat(t);return this.expect(")"),n}if(r.kind==="+"||r.kind==="-"){if(this.advance(),this.peek().kind==="+"||this.peek().kind==="-")throw new A("\u5358\u9805\u7B26\u53F7\u3092\u91CD\u306D\u3066\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",this.peek());let n=this.parseScalarPrimary(t);if(n.type==="NUMBER")return ue(`${r.kind==="-"?"-":"+"}${G(n)}`);if(r.kind==="+")throw new A("\u5358\u9805 + \u306E\u76F4\u5F8C\u306B\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059",r);return{type:"SCALAR_ARITH",left:ue("0"),op:"-",right:n}}if(r.kind==="STRING")return this.advance(),{type:"STRING",value:r.value};if(r.kind==="NUMBER")return this.advance(),ue(r.value);if(r.kind==="VARIABLE")return this.advance(),{type:"VARIABLE",name:r.value.slice(1).toLowerCase()};if(r.kind==="CASE"){if(!t)throw new A("\u3053\u306E\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u3067\u306F CASE \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);return this.parseCaseWhenExpr()}if(this.tryAggregateFunc()!==null)throw new A(this.insideAggregateArg>0?"\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093":"\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306B\u96C6\u7D04\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);if(this.tryStringFuncName()!==null)return this.parseStringFuncExpr();if(r.kind==="IDENT"||r.kind==="BIDENT")return this.advance(),this.consume(".")?{type:"FIELD",tableAlias:r.value,field:this.parseIdentifier()}:{type:"FIELD",tableAlias:null,field:r.value};throw new A("\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306E\u30AA\u30DA\u30E9\u30F3\u30C9\u304C\u5FC5\u8981\u3067\u3059",r)}hasTopLevelTokenBeforeValueEnd(t){let r=0;for(let n=this.pos;n<this.tokens.length;n++){let i=this.tokens[n].kind;if(i==="("||i==="[")r++;else if(i===")"||i==="]"){if(r===0)break;r--}if(i===t)return!0;if(r===0&&(i===","||i==="AS"||i==="FROM"||i==="WHERE"||i==="WHEN"||i==="THEN"||i==="ELSE"||i==="END"||i===";"||i==="EOF"))break}return!1}parseArithAddSub(){return this.continueArithAddSub(this.parseArithMulDiv())}parseArithMulDiv(){return this.continueArithMulDiv(this.parseArithPrimary())}continueArith(t){return this.continueArithAddSub(this.continueArithMulDiv(t))}continueArithMulDiv(t){for(;this.peek().kind==="*"||this.peek().kind==="/"||this.peek().kind==="%";){let r=this.parseArithOp(),n=this.parseArithPrimary();t={type:"ARITH",left:t,op:r,right:n}}return t}continueArithAddSub(t){for(;this.peek().kind==="+"||this.peek().kind==="-";){let r=this.parseArithOp(),n=this.parseArithMulDiv();t={type:"ARITH",left:t,op:r,right:n}}return t}parseArithPrimary(){if(this.consume("(")){let r=this.parseArithAddSub();return this.expect(")"),r}if(this.allowUnaryPlusNumber&&this.peek().kind==="+"){this.advance();let r=this.expect("NUMBER","\u5358\u9805 + \u306E\u76F4\u5F8C\u306B\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");return ue(`+${r.value}`)}if(this.peek().kind==="-"){if(this.advance(),this.peek().kind==="-"||this.peek().kind==="+")throw new A("\u5358\u9805\u7B26\u53F7\u3092\u91CD\u306D\u3066\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",this.peek());let r=this.parseArithPrimary();return r.type==="NUMBER"?ue(`-${G(r)}`):{type:"ARITH",left:ue("0"),op:"-",right:r}}if(this.tryStringFuncName()!==null)return this.parseStringFuncExpr();let t=this.peek();if(t.kind==="NUMBER")return this.advance(),ue(t.value);if(t.kind==="IDENT"||t.kind==="BIDENT"){this.advance();let r=t.value;if(this.peek().kind==="."){this.advance();let n=this.advance();r=`${r}.${n.value}`}return{type:"FIELD_REF",field:r}}throw new A("\u7B97\u8853\u5F0F\u306E\u30AA\u30DA\u30E9\u30F3\u30C9\u306B\u306F\u8B58\u5225\u5B50\u30FB\u6570\u5024\u30FB\u62EC\u5F27\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",t)}parseIfExpr(t=!1){this.advance(),this.expect("(");let r=this.parseCaseCondition(t);this.expect(",");let n=this.parseCaseResult();this.expect(",");let i=this.parseCaseResult();return this.expect(")"),{type:"CASE_WHEN",branches:[{condition:r,result:n}],elseResult:i}}parseCaseWhenExpr(t=!1){this.expect("CASE");let r=[];for(;this.peek().kind==="WHEN";){this.advance();let i=this.parseCaseCondition(t);this.expect("THEN");let o=this.parseCaseResult();r.push({condition:i,result:o})}if(r.length===0)throw new A("CASE \u306E\u5F8C\u306B\u306F WHEN \u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",this.peek());let n=null;return this.consume("ELSE")&&(n=this.parseCaseResult()),this.expect("END"),{type:"CASE_WHEN",branches:r,elseResult:n}}parseCaseCondition(t){return t?this.parseWhereExpr("SELECT_CASE"):this.parseWhereExpr()}parseCaseResult(){let t=this.peek();if(this.insideAggregateArg>0&&this.tryAggregateFunc()!==null)throw new A("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",t);return t.kind==="["?this.parseArrayLiteral():this.hasTopLevelTokenBeforeValueEnd("||")?this.parseScalarValueExpr({allowAggregateArgs:!0}):t.kind==="STRING"?(this.advance(),{type:"STRING",value:t.value}):this.tryStringFuncName()!==null?this.parseStringFuncExpr():this.parseArithAddSub()}tryStringFuncName(){if(this.peekAt(1).kind==="("){let r=ao[this.peek().kind];if(r==="LEFT"||r==="RIGHT")return r}let t=ao[this.peek().kind]??null;if(t!==null&&t!=="LEFT"&&t!=="RIGHT")return t;if(this.peek().kind==="IDENT"){let r=this.peek().value.toUpperCase();if(Is.includes(r)&&this.peekAt(1).kind==="(")return r}return null}parseStringFuncExpr(){let t=this.peek().kind,r=this.tryStringFuncName();if(this.advance(),this.expect("("),t==="CAST"){let i=this.parseStringFuncArg();this.expect("AS");let o=this.parseCastType();return this.expect(")"),{type:"STRING_FUNC",func:"CAST",args:[i,o]}}if(t==="CONVERT"){let i=this.parseStringFuncArg();this.expect(",");let o=this.parseCastType();return this.expect(")"),{type:"STRING_FUNC",func:"CAST",args:[i,o]}}let n=[];if(this.peek().kind!==")")do n.push(this.parseStringFuncArg());while(this.consume(","));return this.expect(")"),{type:"STRING_FUNC",func:r,args:n}}parseCastType(){let t=this.peek(),r;if(t.kind==="IDENT"||t.kind==="BIDENT")this.advance(),r=t.value.toUpperCase();else throw new A("\u30AD\u30E3\u30B9\u30C8\u5148\u306E\u578B\u540D\uFF08TEXT, NUMBER, INT \u306A\u3069\uFF09\u304C\u5FC5\u8981\u3067\u3059",t);this.peek().kind==="("&&(this.advance(),this.parseUnsignedInt(),this.expect(")"));let n=zp(r);if(n===null)throw new A(`\u4E0D\u660E\u306A\u30AD\u30E3\u30B9\u30C8\u578B\u300C${r}\u300D\u3002TEXT \u307E\u305F\u306F NUMBER \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,t);return{type:"STRING",value:n}}parseStringFuncArg(){if(this.scalarAllowsAggregateArgs){let t=this.pos;try{let r=this.parseAggPrimary(),n=this.continueAggArith(r);if(this.hasAggregateOperand(n))return n}catch{}this.pos=t}return this.parseScalarAddSubConcat(this.scalarAllowsCase)}hasAggregateOperand(t){return t.type==="AGG_REF"?!0:t.type==="AGG_ARITH"?this.hasAggregateOperand(t.left)||this.hasAggregateOperand(t.right):!1}tryAggregateFunc(){return so[this.peek().kind]??null}parseAggregateRef(t){this.advance(),this.expect("(");let r=this.consume("DISTINCT"),n=r?this.prev():null;if(t==="MODE"&&n)throw new A("MODE \u3067\u306F DISTINCT \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);let i;if(this.consume("*")){if(!Bp(t))throw new A(`${t}(*) \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30D5\u30A3\u30FC\u30EB\u30C9\u307E\u305F\u306F\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,this.prev());i={type:"WILDCARD"}}else i=this.parseAggregateArgExpr();let o;if(this.isSoftKeyword("SEPARATOR")){let a=this.advance();if(t!=="GROUP_CONCAT")throw new A("SEPARATOR \u306F GROUP_CONCAT \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059",a);o=this.expect("STRING","SEPARATOR \u306E\u5F8C\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059").value}return this.expect(")"),{type:"AGG_REF",func:t,distinct:r,arg:i,...o!==void 0?{separator:o}:{}}}isAggregateArgEnd(){return this.peek().kind===")"||this.isSoftKeyword("SEPARATOR")}parseAggregateArgExpr(){let t=this.pos;try{let r=this.parseArithAddSub();if(this.isAggregateArgEnd())return r}catch{}this.pos=t,this.insideAggregateArg++;try{let r;try{r=this.parseScalarValueExpr({allowCase:!0,allowAggregateArgs:!1})}catch(n){if(n instanceof A){if(n.message.includes("\u6BD4\u8F03\u30FB\u8FF0\u8A9E"))throw new A("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u306B\u6BD4\u8F03\u30FB\u8FF0\u8A9E\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002CASE \u3067\u5024\u3092\u660E\u793A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u4F8B: SUM(CASE WHEN amount > 0 THEN 1 ELSE 0 END)",n.token);if(n.message.includes("\u96C6\u7D04\u95A2\u6570"))throw new A("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n.token)}throw n}if(!this.isAggregateArgEnd())throw new A("\u3053\u306E\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5F62\u5F0F\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002CASE \u3067\u5024\u3092\u660E\u793A\u3059\u308B\u304B\u3001CTE \u3067\u5F0F\u3092\u5217\u306B\u3057\u3066\u304B\u3089\u96C6\u8A08\u3057\u3066\u304F\u3060\u3055\u3044\u3002",this.peek());return this.assertNoNestedAggregate(r),r}finally{this.insideAggregateArg--}}assertNoNestedAggregate(t){let r=n=>{if(n===null||typeof n!="object")return;let i=n;if(i.type==="AGG_REF"||i.type==="AGG_ARITH")throw new A("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());for(let o of Object.values(i))r(o)};r(t)}parseTableRef(){let t=this.peek(),r=this.parseTableName();if(t.kind==="IDENT"&&r.startsWith("#"))return this.tempTableRefs.push(this.prev()),{appId:0,alias:this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias(),cteName:r};if(this.cteNames.has(r))return{appId:0,alias:this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias(),cteName:r};let{appId:n,subtableCode:i}=qe(r,this.prev());if(i){let s=this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias();return{appId:n,alias:s,cteName:null,subtableCode:i}}let o=this.tryParseImplicitAlias(),a=this.consume("AS")?this.parseTableAliasName():o??r;return{appId:n,alias:a,cteName:null}}parseTableAliasName(){let t=this.peek();if((t.kind==="IDENT"||t.kind==="BIDENT")&&t.value.startsWith("#"))throw new A("\u30A8\u30A4\u30EA\u30A2\u30B9\u540D\u306B # \u3067\u59CB\u307E\u308B\u540D\u524D\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",t);return this.parseIdentifier()}tryParseImplicitAlias(){let t=this.peek().kind;return t==="IDENT"||t==="BIDENT"?t==="IDENT"&&this.peek().value.toUpperCase()==="VALIDATE"&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="ONLY"||t==="IDENT"&&this.peek().value.toUpperCase()==="CHECK"&&this.peekAt(1).kind==="WHEN"?null:this.parseTableAliasName():null}parseJoins(){let t=[];for(;;){let r=this.tryJoinType();if(r===null)break;let n=this.parseTableRef();this.expect("ON");let i=this.parseJoinCondition();t.push({type:r,table:n,on:i})}return t}tryJoinType(){return this.consume("INNER")?(this.expect("JOIN"),"INNER"):this.consume("LEFT")?(this.expect("JOIN"),"LEFT"):this.consume("RIGHT")?(this.expect("JOIN"),"RIGHT"):this.consume("JOIN")?"INNER":null}parseJoinCondition(){let t=this.parseQualifiedIdent();this.expect("=");let r=this.parseQualifiedIdent();return{left:t,right:r}}parseQualifiedIdent(){let t=this.parseIdentifier();if(this.consume(".")){if(this.peek().kind==="*")throw new A("\u3053\u3053\u3067\u306F * \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());let r=this.parseIdentifier();return{tableAlias:t,field:r}}return{tableAlias:null,field:t}}parseWhereExpr(t=this.groupingFieldContext,r=this.allowRelativeDateFunctions){let n=this.groupingFieldContext,i=this.allowRelativeDateFunctions;this.groupingFieldContext=t??n,this.allowRelativeDateFunctions=r;try{return this.parseOrExpr()}finally{this.groupingFieldContext=n,this.allowRelativeDateFunctions=i}}parseOrExpr(){let t=this.parseAndExpr();for(;this.consume("OR");){let r=this.parseAndExpr();t={type:"LOGICAL",op:"OR",left:t,right:r}}return t}parseAndExpr(){let t=this.parseNotExpr();for(;this.consume("AND");){let r=this.parseNotExpr();t={type:"LOGICAL",op:"AND",left:t,right:r}}return t}parseNotExpr(){if(this.consume("EXISTS")){this.expect("(");let t=this.parseSelect();return this.expect(")"),{type:"EXISTS",not:!1,query:t}}if(this.consume("NOT")){if(this.consume("EXISTS")){this.expect("(");let r=this.parseSelect();return this.expect(")"),{type:"EXISTS",not:!0,query:r}}return{type:"NOT",expr:this.parseNotExpr()}}return this.parseCompareExpr()}isArithParen(){let t=0,r=this.pos;for(;r<this.tokens.length;){let n=this.tokens[r].kind;if(n==="(")t++;else if(n===")"&&(t--,t===0)){let i=this.tokens[r+1]?.kind;return i==="*"||i==="/"||i==="+"||i==="-"}r++}return!1}parseCompareExpr(){if(this.peek().kind==="("&&!this.isArithParen()){this.advance();let i=this.parseWhereExpr();return this.expect(")"),{type:"GROUP",expr:i}}let t=this.parseFieldValue();if(this.consume("IS")){let i=this.consume("NOT");return this.expect("NULL"),{type:"NULL_CHECK",field:t,not:i}}if(this.consume("BETWEEN")){let i=this.parseWhereSqlValue();this.expect("AND");let o=this.parseWhereSqlValue();return{type:"LOGICAL",op:"AND",left:{type:"BINARY",op:">=",left:t,right:i},right:{type:"BINARY",op:"<=",left:t,right:o}}}if(this.consume("NOT")){if(this.consume("IN")){let i=this.parseInRight();return{type:"BINARY",op:"NOT_IN",left:t,right:i}}if(this.consume("LIKE")){let i=this.parseSqlValue();return{type:"BINARY",op:"NOT_LIKE",left:t,right:i}}if(this.consume("KLIKE")){let i=this.parseKlikePattern();return{type:"BINARY",op:"NOT_KLIKE",left:t,right:i}}throw new A("NOT \u306E\u5F8C\u306B\u306F IN\u3001LIKE\u3001KLIKE \u306E\u3044\u305A\u308C\u304B\u304C\u5FC5\u8981\u3067\u3059",this.peek())}if(this.consume("IN")){let i=this.parseInRight();return{type:"BINARY",op:"IN",left:t,right:i}}if(this.consume("KLIKE")){let i=this.parseKlikePattern();return{type:"BINARY",op:"KLIKE",left:t,right:i}}let r=this.parseCompareOp(),n=this.parseWhereSqlValue();return{type:"BINARY",op:r,left:t,right:n}}parseCompareOp(){let t=this.advance();switch(t.kind){case"=":return"=";case"!=":return"!=";case"<>":return"<>";case">":return">";case"<":return"<";case">=":return">=";case"<=":return"<=";case"LIKE":return"LIKE";default:throw new A("\u6BD4\u8F03\u6F14\u7B97\u5B50\uFF08=, !=, >, <, >=, <=, LIKE, KLIKE, IN, IS\uFF09\u304C\u5FC5\u8981\u3067\u3059",t)}}parseKlikePattern(){let t=this.peek();if(t.kind==="STRING")return this.advance(),{type:"STRING",value:t.value};if(t.kind==="VARIABLE")return this.advance(),{type:"VARIABLE",name:t.value.slice(1).toLowerCase()};throw new A("KLIKE / NOT KLIKE \u306E\u53F3\u8FBA\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u307E\u305F\u306F\u30D0\u30C3\u30C1\u5909\u6570\u304C\u5FC5\u8981\u3067\u3059",t)}parseFieldValue(){if(this.isUnsupportedGroupingIdStart())throw new A("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){if(this.groupingFieldContext==="FORBIDDEN"||this.insideAggregateArg>0)throw new A("B65: GROUPING() is only allowed in SELECT, SELECT CASE conditions, HAVING, and direct ORDER BY.",this.peek());return{type:"GROUPING_FIELD",ref:this.parseGroupingRef()}}if(this.tryStringFuncName()!==null){let n=this.parseStringFuncExpr();return this.isArithOp(this.peek().kind)?{type:"ARITH_FIELD",expr:this.continueArith(n)}:{type:"FUNC_FIELD",expr:n}}let t=this.tryAggregateFunc();if(t!==null){if(this.insideAggregateArg>0)throw new A("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let n=this.parseAggregateRef(t);return{type:"FIELD",tableAlias:null,field:Se(n.func,n.distinct,n.arg)}}if(this.peek().kind==="CASE")return{type:"CASE_FIELD",expr:this.parseCaseWhenExpr()};if(this.peek().kind==="IF")return{type:"CASE_FIELD",expr:this.parseIfExpr()};if(this.peek().kind==="("){this.advance();let n=this.parseArithAddSub();return this.expect(")"),{type:"ARITH_FIELD",expr:this.continueArith(n)}}if(this.peek().kind==="-")return{type:"ARITH_FIELD",expr:this.parseArithAddSub()};let r=this.parseQualifiedIdent();if(this.isArithOp(this.peek().kind)){let i={type:"FIELD_REF",field:r.tableAlias?`${r.tableAlias}.${r.field}`:r.field};return{type:"ARITH_FIELD",expr:this.continueArith(i)}}return{type:"FIELD",tableAlias:r.tableAlias,field:r.field}}parseWhereSqlValue(){let t=this.peek();return this.allowRelativeDateFunctions&&t.kind==="IDENT"&&this.peekAt(1).kind==="("&&Ne(t.value.toUpperCase())?this.parseRelativeDateFunction():this.parseSqlValue()}parseRelativeDateFunction(){let t=this.expect("IDENT"),r=t.value.toUpperCase();switch(this.expect("("),r){case"YESTERDAY":case"TOMORROW":case"THIS_YEAR":case"LAST_YEAR":case"NEXT_YEAR":return this.expect(")",`${r}() \u306F\u5F15\u6570\u3092\u53D7\u3051\u53D6\u308A\u307E\u305B\u3093`),{type:"KINTONE_FUNC",name:r,args:{kind:"NONE"}};case"FROM_TODAY":{let n="";if(this.consume("-")&&(n="-"),this.peek().kind==="+")throw new A("FROM_TODAY \u306E offset \u306B + \u7B26\u53F7\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let i=this.expect("NUMBER","FROM_TODAY \u306B\u306F\u6574\u6570 offset \u3068\u5358\u4F4D\u304C\u5FC5\u8981\u3067\u3059");if(!/^\d+$/.test(i.value))throw new A("FROM_TODAY \u306E offset \u306F10\u9032\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",i);let o=`${n}${i.value}`,a=Number(o);if(!Number.isSafeInteger(a))throw new A("FROM_TODAY \u306E offset \u306F\u5B89\u5168\u306A\u6574\u6570\u306E\u7BC4\u56F2\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",i);this.expect(",","FROM_TODAY \u306E offset \u3068\u5358\u4F4D\u306F\u30AB\u30F3\u30DE\u3067\u533A\u5207\u3063\u3066\u304F\u3060\u3055\u3044");let s=this.expect("IDENT","FROM_TODAY \u306E\u5358\u4F4D\u306B\u306F\u975E\u5F15\u7528\u306E DAYS / WEEKS / MONTHS / YEARS \u304C\u5FC5\u8981\u3067\u3059"),l=s.value.toUpperCase();if(!Wp(l))throw new A("FROM_TODAY \u306E\u5358\u4F4D\u306B\u306F DAYS / WEEKS / MONTHS / YEARS \u304C\u5FC5\u8981\u3067\u3059",s);this.expect(")","FROM_TODAY \u306F offset \u3068\u5358\u4F4D\u306E2\u5F15\u6570\u3060\u3051\u3092\u53D7\u3051\u53D6\u308A\u307E\u3059");let d=String(a===0?0:a);return{type:"KINTONE_FUNC",name:r,args:{kind:"FROM_TODAY",offset:a,offsetText:d,unit:l}}}case"THIS_WEEK":case"LAST_WEEK":case"NEXT_WEEK":{let n=null;if(this.peek().kind!==")"){let i=this.expect("IDENT",`${r} \u306E\u66DC\u65E5\u306B\u306F\u975E\u5F15\u7528\u306E SUNDAY ... SATURDAY \u304C\u5FC5\u8981\u3067\u3059`),o=i.value.toUpperCase();if(!Hp(o))throw new A(`${r} \u306E\u66DC\u65E5\u304C\u4E0D\u6B63\u3067\u3059`,i);n=o}return this.expect(")",`${r} \u306F\u66DC\u65E5\u3092\u6700\u59271\u500B\u3060\u3051\u53D7\u3051\u53D6\u308A\u307E\u3059`),{type:"KINTONE_FUNC",name:r,args:{kind:"WEEK",weekday:n}}}case"THIS_MONTH":case"LAST_MONTH":case"NEXT_MONTH":{let n=null;if(this.peek().kind!==")"){let i=this.peek();if(i.kind==="IDENT"&&i.value.toUpperCase()==="LAST")this.advance(),n="LAST";else if(i.kind==="NUMBER"&&/^\d+$/.test(i.value)){this.advance();let o=Number(i.value);if(!Yp(o))throw new A(`${r} \u306E\u65E5\u306F 1 \u304B\u3089 31 \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,i);n=o}else throw new A(`${r} \u306E\u65E5\u306F\u975E\u5F15\u7528\u306E LAST \u307E\u305F\u306F 1 \u304B\u3089 31 \u304C\u5FC5\u8981\u3067\u3059`,i)}return this.expect(")",`${r} \u306F\u65E5\u3092\u6700\u59271\u500B\u3060\u3051\u53D7\u3051\u53D6\u308A\u307E\u3059`),{type:"KINTONE_FUNC",name:r,args:{kind:"MONTH",day:n}}}default:throw new A(`\u672A\u77E5\u306E\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570 ${r} \u3067\u3059`,t)}}parseSqlValue(){let t=this.peek();if(t.kind==="VARIABLE")return this.advance(),{type:"VARIABLE",name:t.value.slice(1).toLowerCase()};if(t.kind==="STRING")return this.advance(),{type:"STRING",value:t.value};if(ws(t.kind))return this.advance(),this.expect("("),this.expect(")"),{type:"KINTONE_FUNC",name:Dn[t.kind]};if(t.kind==="CASE")return{type:"CASE_VALUE",expr:this.parseCaseWhenExpr()};if(t.kind==="IF")return{type:"CASE_VALUE",expr:this.parseIfExpr()};if(t.kind==="("&&this.peekAt(1).kind==="SELECT"){this.advance();let r=this.parseSelect();if(this.expect(")"),this.isArithOp(this.peek().kind))throw new A("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u5F8C\u306B\u7B97\u8853\u6F14\u7B97\u5B50\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: (SELECT AVG(\u5408\u8A08\u8CBB\u7528)/2 FROM APP88)\uFF09",this.peek());return{type:"SCALAR_SUBQUERY",query:r}}if(t.kind==="NUMBER"||t.kind==="IDENT"||t.kind==="BIDENT"||t.kind==="("||t.kind==="-"||this.tryStringFuncName()!==null){let r=this.parseArithAddSub();return r.type==="NUMBER"?r:{type:"ARITH_VALUE",expr:r}}throw new A("\u5024\uFF08\u6587\u5B57\u5217\u30FB\u6570\u5024\u30FB\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u30FBTODAY()\u30FBNOW()\u30FBLOGINUSER()\uFF09\u304C\u5FC5\u8981\u3067\u3059",t)}parseInRight(){if(this.consume("(")){let r=this.parseInListOrSubquery();return this.expect(")"),r}return{type:"VARIABLE_IN_LIST",name:this.expect("VARIABLE","IN / NOT IN \u306E\u5F8C\u306B\u306F (\u5024\u30EA\u30B9\u30C8\u307E\u305F\u306F SELECT) \u304B\u914D\u5217\u5909\u6570\u304C\u5FC5\u8981\u3067\u3059").value.slice(1).toLowerCase()}}parseInListOrSubquery(){if(this.peek().kind==="SELECT"){let t=this.parseSelect(),r=t.columns[0],n=r&&r.type==="FIELD"?r.alias??r.field:null;return{type:"SUBQUERY_IN_LIST",query:t,column:n}}return{type:"IN_LIST",values:this.parseInValues()}}parseInValues(){let t=[],r="IN \u30EA\u30B9\u30C8\u306B\u306F\u6587\u5B57\u5217\u3001\u6570\u5024\u3001\u307E\u305F\u306F\u30D0\u30C3\u30C1\u5909\u6570\u304C\u5FC5\u8981\u3067\u3059";do{let n=this.advance();if(n.kind==="STRING")t.push({type:"STRING",value:n.value});else if(n.kind==="NUMBER")t.push(ue(n.value));else if(n.kind==="-"||n.kind==="+"){let i=this.peek();if(i.kind!=="NUMBER")throw new A(r,n);this.advance();let o=n.kind==="-"?"-":"+";t.push(ue(`${o}${i.value}`))}else if(n.kind==="VARIABLE")t.push({type:"VARIABLE",name:n.value.slice(1).toLowerCase()});else throw new A(r,n)}while(this.consume(","));return t}parseIdentList(){let t=[];do t.push(this.parseIdentifier());while(this.consume(","));return t}parseGroupByKeys(){let t=[];do{if(t.length>0&&(this.isRollupStart()||this.isGroupingSetsStart()||this.isCubeStart()))throw new A("B65: ordinary GROUP BY items cannot be mixed with grouping elements.",this.peek());t.push(this.parseGroupByKey())}while(this.consume(","));return t}isRollupStart(){return this.isSoftKeyword("ROLLUP")&&this.peekAt(1).kind==="("}isCubeStart(){return this.isSoftKeyword("CUBE")&&this.peekAt(1).kind==="("}isGroupingSetsStart(){return this.isSoftKeyword("GROUPING")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="SETS"&&this.peekAt(2).kind==="("}isGroupingFunctionStart(){return this.isSoftKeyword("GROUPING")&&this.peekAt(1).kind==="("}isUnsupportedGroupingIdStart(){return this.isSoftKeyword("GROUPING_ID")&&this.peekAt(1).kind==="("}groupingItemSyntaxKey(t){return`${t.tableAlias??""}\0${t.field}`}groupingAllItems(t){let r=new Set,n=[];for(let i of t)for(let o of i.items){let a=this.groupingItemSyntaxKey(o);r.has(a)||(r.add(a),n.push(o))}return n}parseGroupingFieldItem(){if(this.isRollupStart()||this.isGroupingSetsStart()||this.isCubeStart())throw new A("B65: nested grouping elements are not supported in Phase1.",this.peek());let t=this.peek(),r=this.parseQualifiedIdent();if(this.peek().kind!==","&&this.peek().kind!==")")throw new A("B65: grouping items must be physical field references only.",t);return{type:"FIELD",tableAlias:r.tableAlias,field:r.field}}parseGroupingSetsClause(){if(this.advance(),this.advance(),this.expect("("),this.peek().kind===")")throw new A("B65: GROUPING SETS requires at least one grouping set; use (()) for the empty set.",this.peek());let t=[];do if(this.consume("(")){let r=[];if(this.peek().kind!==")")do r.push(this.parseGroupingFieldItem());while(this.consume(","));this.expect(")"),t.push({items:r})}else t.push({items:[this.parseGroupingFieldItem()]});while(this.consume(","));return this.expect(")"),{type:"GROUPING_SETS",source:"GROUPING_SETS",allItems:this.groupingAllItems(t),sets:t}}parseRollupClause(){if(this.advance(),this.expect("("),this.peek().kind===")")throw new A("B65: ROLLUP requires at least one field.",this.peek());let t=[];do t.push(this.parseGroupingFieldItem());while(this.consume(","));this.expect(")");let r=Array.from({length:t.length+1},(n,i)=>({items:t.slice(0,t.length-i)}));return{type:"GROUPING_SETS",source:"ROLLUP",allItems:this.groupingAllItems(r),sets:r}}parseCubeClause(){if(this.advance(),this.expect("("),this.peek().kind===")")throw new A("B65: CUBE requires at least one field.",this.peek());let t=[];do t.push(this.parseGroupingFieldItem());while(this.consume(","));this.expect(")");let r=ms(t);return{type:"GROUPING_SETS",source:"CUBE",allItems:this.groupingAllItems(r),sets:r}}parseGroupingRef(){let t=this.advance();if(this.expect("("),this.peek().kind===")")throw new A("B65: GROUPING() requires exactly one physical field argument.",this.peek());let r=this.parseQualifiedIdent();if(this.peek().kind!==")")throw new A("B65: GROUPING() requires exactly one physical field argument.",t);return this.expect(")"),{type:"GROUPING_REF",field:{type:"FIELD",tableAlias:r.tableAlias,field:r.field}}}parseGroupByKey(){if(this.tryStringFuncName()!==null){let r=this.parseStringFuncExpr();return this.isArithOp(this.peek().kind)?{type:"ARITH_KEY",expr:this.continueArith(r)}:{type:"FUNC_KEY",expr:r}}if(this.peek().kind==="("||this.peek().kind==="NUMBER")return{type:"ARITH_KEY",expr:this.parseArithAddSub()};let t=this.parseFieldPath();if(this.isArithOp(this.peek().kind)){let r={type:"FIELD_REF",field:t};return{type:"ARITH_KEY",expr:this.continueArith(r)}}return{type:"FIELD_NAME",name:t}}parseOrderBy(t=!0){let r=[];do{let n=this.parseOrderByKey(t),i="ASC";this.consume("DESC")?i="DESC":this.consume("ASC"),r.push({key:n,direction:i})}while(this.consume(","));return r}parseOrderByKey(t=!0){if(this.isUnsupportedGroupingIdStart())throw new A("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){if(!t)throw new A("B65: GROUPING() is not allowed in window ORDER BY.",this.peek());return{type:"GROUPING_KEY",ref:this.parseGroupingRef()}}if(this.tryStringFuncName()!==null){let n=this.parseStringFuncExpr();return this.isArithOp(this.peek().kind)?{type:"ARITH_KEY",expr:this.continueArith(n)}:{type:"FUNC_KEY",expr:n}}if(this.peek().kind==="("||this.peek().kind==="NUMBER")return{type:"ARITH_KEY",expr:this.parseArithAddSub()};let r=this.parseFieldPath();if(this.isArithOp(this.peek().kind)){let n={type:"FIELD_REF",field:r};return{type:"ARITH_KEY",expr:this.continueArith(n)}}return{type:"FIELD_NAME",name:r}}parseInsert(){this.expect("INSERT"),this.expect("INTO"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:r,subtableCode:n}=qe(t,this.prev());this.expect("(");let i=this.parseIdentList();if(this.expect(")"),this.peek().kind==="SELECT"){let p=this.parseSelect();if(this.isApplyBlockStart()||this.prev().kind==="IDENT"&&this.prev().value.toUpperCase()==="APPLY"&&(this.peek().kind==="IDENT"||this.peek().kind==="BIDENT")&&this.peekAt(1).kind==="(")throw new A("INSERT INTO ... SELECT \u306F APPLY \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(n)throw new A("INSERT INTO ... SELECT \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u3067\u306F\u672A\u5BFE\u5FDC\u3067\u3059",this.prev());let c=this.parseCheckGroups(),u=this.parseDmlControlSuffix();return{type:"INSERT_SELECT",appId:r,fields:i,select:p,...c,...u}}this.expect("VALUES");let o=[];do{this.expect("(");let p=this.parseInsertRow(i.length);this.expect(")"),o.push(p)}while(this.consume(","));let a=[];for(;this.isApplyBlockStart();)a.push(this.parseApplyBlock());if(this.isSoftKeyword("APPLY")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="SUBTABLE")throw new A("APPLY SUBTABLE noun is not supported; use APPLY <field> (...)",this.peek());if(a.length>0&&this.isSoftKeyword("CHECK"))throw new A("APPLY \u30D6\u30ED\u30C3\u30AF\u306E\u5F8C\u306B CHECK \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());if(a.length>0&&(this.peek().kind==="ON"||this.isSoftKeyword("REJECT")))throw new A("ON ERROR SKIP / REJECT LIMIT \u306F APPLY \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let s=this.parseCheckGroups(),l=this.parseDmlControlSuffix();if(this.isSoftKeyword("APPLY"))throw new A("APPLY \u306F CHECK / VALIDATE ONLY \u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(n&&s.checkGroups)throw new A("CHECK \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB INSERT \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(n&&(l.validateOnly||l.onErrorSkip))throw new A("VALIDATE ONLY / ON ERROR SKIP \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB INSERT \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());let d=a.length>0?{applyBlocks:a}:{};return n?{type:"INSERT",appId:r,subtableCode:n,fields:i,values:o,...d,...s,...l}:{type:"INSERT",appId:r,fields:i,values:o,...d,...s,...l}}parseUpsert(){this.expect("UPSERT"),this.expect("INTO"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:r,subtableCode:n}=qe(t,this.prev());if(n)throw new A("UPSERT \u306F\u307E\u3060\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());this.expect("(");let i=this.parseIdentList();if(this.expect(")"),this.peek().kind==="SELECT"){let c=this.parseSelect(),u=this.parseOnDuplicate();if(this.isUpsertApplyBranchStart()||this.isApplyBlockStart())throw new A("UPSERT INTO ... SELECT \u306F ON INSERT / ON UPDATE APPLY \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.peek());let f=this.parseCheckGroups(),E=this.parseDmlControlSuffix();if(this.isUpsertApplyBranchStart()||this.isApplyBlockStart())throw new A("UPSERT INTO ... SELECT \u306F ON INSERT / ON UPDATE APPLY \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.peek());return{type:"UPSERT_SELECT",appId:r,fields:i,select:c,keyFields:u,...f,...E}}this.expect("VALUES");let o=[];do this.expect("("),o.push(this.parseInsertRow(i.length)),this.expect(")");while(this.consume(","));let a=this.parseOnDuplicate(),s=this.parseUpsertApplyBranches(),l=s.onInsertApplyBlocks!==void 0||s.onUpdateApplyBlocks!==void 0;if(l&&this.isSoftKeyword("CHECK"))throw new A("UPSERT \u306E\u5206\u5C90 APPLY \u306F CHECK \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());if(l&&(this.peek().kind==="ON"||this.isSoftKeyword("REJECT")))throw new A("UPSERT \u306E\u5206\u5C90 APPLY \u306F ON ERROR SKIP / REJECT LIMIT \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let d=this.parseCheckGroups(),p=this.parseDmlControlSuffix();if(this.isUpsertApplyBranchStart()||this.isApplyBlockStart())throw new A("ON INSERT / ON UPDATE APPLY \u306F CHECK / VALIDATE ONLY \u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());return{type:"UPSERT",appId:r,fields:i,values:o,keyFields:a,...s,...d,...p}}parseOnDuplicate(){if(this.expectKeyword("ON","UPSERT \u306B\u306F ON DUPLICATE (\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9) \u304C\u5FC5\u8981\u3067\u3059"),!this.consume("DUPLICATE"))throw new A("ON \u306E\u5F8C\u306B\u306F DUPLICATE \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.expect("(");let t=this.parseIdentList();if(this.expect(")"),t.length===0)throw new A("ON DUPLICATE \u306B\u306F\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",this.prev());return t}isUpsertApplyBranchStart(){return this.peek().kind==="ON"&&(this.peekAt(1).kind==="INSERT"||this.peekAt(1).kind==="UPDATE")}parseUpsertApplyBranches(){let t,r;for(;this.isUpsertApplyBranchStart();){this.advance();let n=this.advance(),i=n.kind==="INSERT";if(i&&t||!i&&r)throw new A(`ON ${i?"INSERT":"UPDATE"} APPLY \u306F 1 \u56DE\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059`,n);if(!this.isApplyBlockStart())throw new A(`ON ${i?"INSERT":"UPDATE"} \u306E\u5F8C\u306B\u306F APPLY \u30D6\u30ED\u30C3\u30AF\u304C\u5FC5\u8981\u3067\u3059`,this.peek());let o=[];for(;this.isApplyBlockStart();)o.push(this.parseApplyBlock());i?t=o:r=o}if(this.isApplyBlockStart())throw new A("UPSERT \u306E APPLY \u306B\u306F ON INSERT \u307E\u305F\u306F ON UPDATE \u304C\u5FC5\u8981\u3067\u3059",this.peek());return{...t?{onInsertApplyBlocks:t}:{},...r?{onUpdateApplyBlocks:r}:{}}}parseArrayLiteral(){this.expect("[");let t=[];if(this.peek().kind!=="]")do{let r=this.expect("STRING");t.push({type:"STRING",value:r.value})}while(this.consume(","));return this.expect("]"),{type:"ARRAY",elements:t}}parseInsertRow(t){let r=[];do if(this.peek().kind==="[")r.push(this.parseArrayLiteral());else if(this.peek().kind==="CASE"){let n=this.parseCaseWhenExpr();r.push({type:"CASE_VALUE",expr:n})}else if(this.peek().kind==="IF"){let n=this.parseIfExpr();r.push({type:"CASE_VALUE",expr:n})}else if(this.peek().kind==="-"||this.peek().kind==="+"){let n=this.advance(),i=this.expect("NUMBER","INSERT \u306E\u5358\u9805\u7B26\u53F7\u306E\u76F4\u5F8C\u306B\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");r.push(ue(`${n.kind==="-"?"-":"+"}${i.value}`))}else{let n=this.advance();if(n.kind==="STRING")r.push({type:"STRING",value:n.value});else if(n.kind==="NUMBER")r.push(ue(n.value));else throw new A("INSERT \u306E\u5024\u306B\u306F\u6587\u5B57\u5217\u30FB\u6570\u5024\u30FB\u914D\u5217\u30EA\u30C6\u30E9\u30EB\u30FBCASE WHEN \u304C\u5FC5\u8981\u3067\u3059",n)}while(this.consume(","));if(r.length!==t)throw new A(`\u30AB\u30E9\u30E0\u6570\uFF08${t}\uFF09\u3068\u5024\u306E\u6570\uFF08${r.length}\uFF09\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093`,this.prev());return r}parseUpdate(){this.expect("UPDATE"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:r,subtableCode:n}=qe(t,this.prev());this.expect("SET");let i=this.parseAssignments();if(n&&i.some(u=>u.value.type==="STRING_FUNC"))throw new A("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE SET \u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u3092\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.prev());let o=null;if(this.consume("FROM")){let u=this.parseTableRef();if(u.subtableCode)throw new A("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u306B\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.prev());if(u.cteName!==null&&!u.cteName.startsWith("#"))throw new A("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u306F #temp \u307E\u305F\u306F APP<n> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08CTE \u306F\u975E\u5BFE\u5FDC\uFF09",this.prev());if(!u.alias)throw new A("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u306B\u306F\u30A8\u30A4\u30EA\u30A2\u30B9\u304C\u5FC5\u8981\u3067\u3059",this.prev());if(u.alias.toLowerCase()===`app${r}`.toLowerCase())throw new A(`UPDATE ... FROM \u306E\u30BD\u30FC\u30B9 alias \u306F\u66F4\u65B0\u5148 APP${r} \u3068\u540C\u540D\u306B\u3067\u304D\u307E\u305B\u3093`,this.prev());o={appId:u.appId,cteName:u.cteName,alias:u.alias,targetJoinField:"",joinKeyField:"",targetFilter:null}}let a=this.peek();if(!this.consume("WHERE"))throw new A("UPDATE \u6587\u306B\u306F WHERE \u53E5\u304C\u5FC5\u8981\u3067\u3059\uFF08\u5168\u4EF6\u66F4\u65B0\u3092\u9632\u3050\u305F\u3081\uFF09",a);let s=this.parseWhereExpr(void 0,!0),l=[];for(;this.isApplyBlockStart();)l.push(this.parseApplyBlock());if(this.isSoftKeyword("APPLY")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="SUBTABLE")throw new A("APPLY SUBTABLE noun is not supported; use APPLY <field> (...)",this.peek());if(l.length>0&&this.peek().kind==="WHERE")throw new A("\u89AA WHERE \u306F APPLY \u30D6\u30ED\u30C3\u30AF\u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(o!==null){if(n)throw new A("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE ... FROM \u306F\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093",a);this.validateUpdateFromAssignments(i,o.alias,a);let u=this.decomposeUpdateFromWhere(s,r,o.alias,a);o.targetJoinField=u.targetJoinField,o.joinKeyField=u.joinKeyField,o.targetFilter=u.targetFilter}else{if(i.some(u=>u.value.type==="SOURCE_FIELD"))throw new A("SET \u306E\u5024\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u5358\u72EC\u3067\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",a);if(i.some(u=>u.value.type==="STRING_FUNC"&&this.nodeContainsAnyQualifier(u.value)))throw new A("UPDATE SET \u306E\u6587\u5B57\u5217\u95A2\u6570\u3067\u306F\u66F4\u65B0\u5148\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u4FEE\u98FE\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044",a)}if(l.length>0&&this.isSoftKeyword("CHECK"))throw new A("APPLY \u30D6\u30ED\u30C3\u30AF\u306E\u5F8C\u306B CHECK \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());if(l.length>0&&(this.peek().kind==="ON"||this.isSoftKeyword("REJECT")))throw new A("ON ERROR SKIP / REJECT LIMIT \u306F APPLY \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let d=this.parseCheckGroups(),p=this.parseDmlControlSuffix();if(this.isSoftKeyword("APPLY"))throw new A("APPLY \u306F VALIDATE ONLY \u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(n&&d.checkGroups)throw new A("CHECK \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(n&&(p.validateOnly||p.onErrorSkip))throw new A("VALIDATE ONLY / ON ERROR SKIP \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());let c=l.length>0?{applyBlocks:l}:{};return o!==null?{type:"UPDATE",appId:r,assignments:i,where:s,from:o,...c,...d,...p}:n?{type:"UPDATE",appId:r,subtableCode:n,assignments:i,where:s,...c,...d,...p}:{type:"UPDATE",appId:r,assignments:i,where:s,...c,...d,...p}}isApplyBlockStart(){return this.isSoftKeyword("APPLY")&&(this.peekAt(1).kind==="IDENT"||this.peekAt(1).kind==="BIDENT")&&this.peekAt(2).kind==="("}parseApplyBlock(){this.advance();let t=this.parseIdentifier();if(this.expect("("),this.peek().kind===")"||this.peek().kind===";")throw new A("APPLY \u30D6\u30ED\u30C3\u30AF\u306B\u306F\u64CD\u4F5C\u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",this.peek());let r=[];for(;r.push(this.parseApplyOperation()),!(!this.consume(";")||this.peek().kind===")");)if(this.peek().kind===";")throw new A("APPLY \u30D6\u30ED\u30C3\u30AF\u306B\u7A7A\u306E\u64CD\u4F5C\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());this.expect(")","APPLY \u30D6\u30ED\u30C3\u30AF\u306E\u672B\u5C3E\u306B\u306F ) \u304C\u5FC5\u8981\u3067\u3059");let n=r.some(o=>o.kind==="PATCH"||o.kind==="APPEND"||o.kind==="REMOVE"),i=r.some(o=>o.kind==="ADD"||o.kind==="REMOVE_VALUE");if(n&&i)throw new A("1 \u3064\u306E APPLY \u30D6\u30ED\u30C3\u30AF\u306B\u884C\u64CD\u4F5C\u3068\u591A\u5024\u64CD\u4F5C\u306F\u6DF7\u5728\u3067\u304D\u307E\u305B\u3093",this.prev());return i?{field:t,targetKind:"MULTI_VALUE",operations:r}:{field:t,targetKind:"SUBTABLE",operations:r}}parseApplyOperation(){if(this.isSoftKeyword("ADD"))return this.advance(),{kind:"ADD",value:this.expect("STRING","ADD \u306E\u5F8C\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059").value};if(this.isSoftKeyword("PATCH")){this.advance(),this.expect("SET","PATCH \u306E\u5F8C\u306B\u306F SET \u304C\u5FC5\u8981\u3067\u3059");let t=this.parseAssignments(),r=this.parseApplyRowSelector(),n=this.parseExpectRowsGuard();return{kind:"PATCH",assignments:t,selector:r,...n?{expectRows:n}:{}}}if(this.isSoftKeyword("APPEND")){if(this.advance(),this.expect("(","APPEND \u306E\u5F8C\u306B\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u4E00\u89A7\u304C\u5FC5\u8981\u3067\u3059"),this.peek().kind===")")throw new A("APPEND \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u4E00\u89A7\u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093",this.peek());let t=[];do t.push(this.parseIdentifier());while(this.consume(","));this.expect(")"),this.expect("VALUES","APPEND \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u4E00\u89A7\u306E\u5F8C\u306B\u306F VALUES \u304C\u5FC5\u8981\u3067\u3059");let r=[];do this.expect("(","APPEND VALUES \u306E\u5404\u884C\u306F ( \u3067\u59CB\u3081\u3066\u304F\u3060\u3055\u3044"),r.push(this.parseInsertRow(t.length)),this.expect(")");while(this.consume(","));return{kind:"APPEND",fields:t,values:r}}if(this.isSoftKeyword("REMOVE")){if(this.advance(),this.peek().kind==="STRING")return{kind:"REMOVE_VALUE",value:this.advance().value};let t=this.parseApplyRowSelector(),r=this.parseExpectRowsGuard();return{kind:"REMOVE",selector:t,...r?{expectRows:r}:{}}}throw new A("APPLY \u306E\u64CD\u4F5C\u306B\u306F PATCH / APPEND / REMOVE / ADD \u304C\u5FC5\u8981\u3067\u3059",this.peek())}parseApplyRowSelector(){if(this.consume("WHERE"))return{kind:"WHERE",where:this.parseWhereExpr(void 0,!0)};if(this.consume("ALL")){if(!this.isSoftKeyword("ROWS"))throw new A("ALL \u306E\u5F8C\u306B\u306F ROWS \u304C\u5FC5\u8981\u3067\u3059",this.peek());return this.advance(),{kind:"ALL_ROWS"}}throw new A("PATCH / REMOVE \u306B\u306F WHERE \u307E\u305F\u306F ALL ROWS \u304C\u5FC5\u8981\u3067\u3059",this.peek())}parseExpectRowsGuard(){if(this.isSoftKeyword("EXPECT")){if(this.advance(),!this.isSoftKeyword("ROWS"))throw new A("EXPECT \u306E\u5F8C\u306B\u306F ROWS \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(this.advance(),this.consume("BETWEEN")){let t=this.parseExpectRowsCount();this.expect("AND","EXPECT ROWS BETWEEN \u306E\u4E0B\u9650\u3068\u4E0A\u9650\u306F AND \u3067\u533A\u5207\u3063\u3066\u304F\u3060\u3055\u3044");let r=this.parseExpectRowsCount();if(t>r)throw new A("EXPECT ROWS BETWEEN \u306E\u4E0B\u9650\u306F\u4E0A\u9650\u4EE5\u4E0B\u306B\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());return{kind:"BETWEEN",min:t,max:r}}if(this.isSoftKeyword("AT")){if(this.advance(),this.peek().value.toUpperCase()==="LEAST")return this.advance(),{kind:"AT_LEAST",count:this.parseExpectRowsCount()};if(this.isSoftKeyword("MOST"))return this.advance(),{kind:"AT_MOST",count:this.parseExpectRowsCount()};throw new A("EXPECT ROWS AT \u306E\u5F8C\u306B\u306F LEAST \u307E\u305F\u306F MOST \u304C\u5FC5\u8981\u3067\u3059",this.peek())}return{kind:"EXACT",count:this.parseExpectRowsCount()}}}parseExpectRowsCount(){let t=this.expect("NUMBER","EXPECT ROWS \u306B\u306F 0 \u4EE5\u4E0A\u306E\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059");if(!/^\d+$/.test(t.value)||!Number.isSafeInteger(Number(t.value)))throw new A("EXPECT ROWS \u306F 0 \u4EE5\u4E0A\u306E\u5B89\u5168\u306A\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",t);return Number(t.value)}parseCheckGroups(){let t=[];for(;this.isSoftKeyword("CHECK")&&this.peekAt(1).kind==="WHEN";){let r=this.advance(),n=[];for(;this.consume("WHEN");){let i=this.parseWhereExpr();this.expect("THEN","CHECK WHEN \u306E\u6761\u4EF6\u306E\u5F8C\u306B\u306F THEN \u304C\u5FC5\u8981\u3067\u3059");let o=this.parseScalarValueExpr({allowCase:!1});n.push({condition:i,message:o})}if(n.length===0)throw new A("CHECK \u306E\u5F8C\u306B\u306F WHEN \u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",r);t.push({rules:n})}return t.length>0?{checkGroups:t}:{}}parseDmlControlSuffix(){if(this.peek().kind==="ON")return this.parseOnErrorSkipSuffix();if(this.isSoftKeyword("REJECT"))throw new A("REJECT LIMIT \u306B\u306F ON ERROR SKIP INTO \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(!this.isSoftKeyword("VALIDATE"))return{};let t=this.advance();if(!this.isSoftKeyword("ONLY"))throw new A("VALIDATE \u306E\u5F8C\u306B\u306F ONLY \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance();let r=null;if(this.consume("INTO")){let n=this.peek();if(n.kind!=="IDENT"||!n.value.startsWith("#"))throw new A("VALIDATE ONLY INTO \u306B\u306F # \u3067\u59CB\u307E\u308B\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",n);r=this.parseTableName()}if(this.peek().kind==="ON"||this.isSoftKeyword("REJECT"))throw new A("VALIDATE ONLY \u3068 ON ERROR / REJECT LIMIT \u306F\u4F75\u8A18\u3067\u304D\u307E\u305B\u3093",t);return{validateOnly:!0,validationErrorTable:r}}parseOnErrorSkipSuffix(){let t=this.advance();if(!this.isSoftKeyword("ERROR"))throw new A("ON \u306E\u5F8C\u306B\u306F ERROR \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(this.advance(),!this.isSoftKeyword("SKIP"))throw new A("ON ERROR \u306E\u5F8C\u306B\u306F SKIP \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance(),this.expect("INTO","ON ERROR SKIP \u306B\u306F INTO #\u4E00\u6642\u30C6\u30FC\u30D6\u30EB \u304C\u5FC5\u8981\u3067\u3059");let r=this.peek();if(r.kind!=="IDENT"||!r.value.startsWith("#"))throw new A("ON ERROR SKIP INTO \u306B\u306F # \u3067\u59CB\u307E\u308B\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",r);let n=this.parseTableName(),i=null;if(this.isSoftKeyword("REJECT")){this.advance(),this.expect("LIMIT","REJECT \u306E\u5F8C\u306B\u306F LIMIT \u304C\u5FC5\u8981\u3067\u3059");let o=this.expect("NUMBER","REJECT LIMIT \u306B\u306F 0 \u4EE5\u4E0A\u306E\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059");if(!/^\d+$/.test(o.value))throw new A("REJECT LIMIT \u306F 0 \u4EE5\u4E0A\u306E\u5B89\u5168\u306A\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",o);if(i=Number(o.value),!Number.isSafeInteger(i))throw new A("REJECT LIMIT \u306F 0 \u4EE5\u4E0A\u306E\u5B89\u5168\u306A\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",o)}if(this.isSoftKeyword("REJECT")||this.isSoftKeyword("VALIDATE")||this.peek().kind==="ON")throw new A("ON ERROR SKIP \u306E\u53E5\u304C\u91CD\u8907\u307E\u305F\u306F\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059",t);return{onErrorSkip:!0,errorTable:n,rejectLimit:i}}isSoftKeyword(t){return this.peek().kind==="IDENT"&&this.peek().value.toUpperCase()===t}validateUpdateFromAssignments(t,r,n){for(let i of t){if(i.value.type==="STRING_FUNC")throw new A("UPDATE ... FROM \u306E SET \u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u3092\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);if(i.value.type==="SOURCE_FIELD"){if(i.value.alias.toLowerCase()!==r.toLowerCase())throw new A(`UPDATE ... FROM \u306E SET \u53C2\u7167\u306F\u30BD\u30FC\u30B9 alias ${r} \u3067\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044`,n);continue}if(this.nodeContainsQualifiedField(i.value,r))throw new A("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u5217\u306F SET \u306E\u76F4\u63A5\u5024\u3068\u3057\u3066\u306E\u307F\u53C2\u7167\u3067\u304D\u307E\u3059",n);if(i.value.type==="SCALAR_SUBQUERY")throw new A("UPDATE ... FROM \u306E SET \u3067\u306F\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);if(this.nodeContainsAnyQualifier(i.value))throw new A("UPDATE ... FROM \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u5F0F\u3067\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u4FEE\u98FE\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044",n)}}decomposeUpdateFromWhere(t,r,n,i){let o=this.flattenTopLevelAnd(t),a=[];if(o.forEach((p,c)=>{let u=this.matchUpdateFromJoin(p,r,n);u!==null&&a.push({index:c,...u})}),a.length!==1)throw new A("UPDATE ... FROM \u306E WHERE \u306B\u306F target.key = source.key \u306E\u7D50\u5408\u7B49\u5024\u304C\u3061\u3087\u3046\u30691\u3064\u5FC5\u8981\u3067\u3059",i);let s=a[0];for(let p=0;p<o.length;p++){if(p!==s.index&&this.nodeContainsQualifiedField(o[p],n))throw new A("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9 alias \u306F\u7D50\u5408\u7B49\u5024\u4EE5\u5916\u306E WHERE \u6761\u4EF6\u3067\u306F\u53C2\u7167\u3067\u304D\u307E\u305B\u3093",i);if(p!==s.index&&this.nodeContainsForeignQualifier(o[p],r))throw new A(`UPDATE ... FROM \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u30D5\u30A3\u30EB\u30BF\u306F APP${r} \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3060\u3051\u3092\u53C2\u7167\u3067\u304D\u307E\u3059`,i)}let d=o.filter((p,c)=>c!==s.index).reduce((p,c)=>p===null?c:{type:"LOGICAL",op:"AND",left:p,right:c},null);return{targetJoinField:s.targetField,joinKeyField:s.sourceField,targetFilter:d}}flattenTopLevelAnd(t){return t.type==="GROUP"?this.flattenTopLevelAnd(t.expr):t.type==="LOGICAL"&&t.op==="AND"?[...this.flattenTopLevelAnd(t.left),...this.flattenTopLevelAnd(t.right)]:[t]}matchUpdateFromJoin(t,r,n){if(t.type!=="BINARY"||t.op!=="="||t.left.type!=="FIELD")return null;let i=t.right.type==="ARITH_VALUE"&&t.right.expr.type==="FIELD_REF"?this.splitQualifiedField(t.right.expr.field):null;if(i===null)return null;let o={alias:t.left.tableAlias,field:t.left.field};return this.isTargetRef(o,r)&&this.isSourceRef(i,n)?{targetField:o.field,sourceField:i.field}:this.isSourceRef(o,n)&&this.isTargetRef(i,r)?{targetField:i.field,sourceField:o.field}:null}splitQualifiedField(t){let r=t.indexOf(".");return r<0?{alias:null,field:t}:{alias:t.slice(0,r),field:t.slice(r+1)}}isTargetRef(t,r){return t.alias===null||t.alias.toLowerCase()===`app${r}`.toLowerCase()}isSourceRef(t,r){return t.alias?.toLowerCase()===r.toLowerCase()}nodeContainsQualifiedField(t,r){if(Array.isArray(t))return t.some(i=>this.nodeContainsQualifiedField(i,r));if(t===null||typeof t!="object")return!1;let n=t;if(n.type==="FIELD"&&typeof n.tableAlias=="string"&&n.tableAlias.toLowerCase()===r.toLowerCase())return!0;if(n.type==="FIELD_REF"&&typeof n.field=="string"){let i=this.splitQualifiedField(n.field);if(this.isSourceRef(i,r))return!0}return Object.values(n).some(i=>this.nodeContainsQualifiedField(i,r))}nodeContainsForeignQualifier(t,r){if(Array.isArray(t))return t.some(o=>this.nodeContainsForeignQualifier(o,r));if(t===null||typeof t!="object")return!1;let n=t,i=`app${r}`.toLowerCase();if(n.type==="FIELD"&&typeof n.tableAlias=="string")return n.tableAlias.toLowerCase()!==i;if(n.type==="FIELD_REF"&&typeof n.field=="string"){let o=this.splitQualifiedField(n.field);if(o.alias!==null)return o.alias.toLowerCase()!==i}return Object.values(n).some(o=>this.nodeContainsForeignQualifier(o,r))}nodeContainsAnyQualifier(t){if(Array.isArray(t))return t.some(n=>this.nodeContainsAnyQualifier(n));if(t===null||typeof t!="object")return!1;let r=t;return r.type==="FIELD"&&typeof r.tableAlias=="string"||r.type==="FIELD_REF"&&typeof r.field=="string"&&this.splitQualifiedField(r.field).alias!==null?!0:Object.values(r).some(n=>this.nodeContainsAnyQualifier(n))}parseAssignments(){let t=[];do{let r=this.parseIdentifier();this.expect("=");let n=this.parseAssignmentValue();t.push({field:r,value:n})}while(this.consume(","));return t}parseAssignmentValue(){let t=this.peek();if(this.hasTopLevelTokenBeforeValueEnd("||")){let i=this.parseScalarValueExpr();if(i.type==="CONCAT_OP"||i.type==="SCALAR_ARITH"||i.type==="STRING_FUNC")return i;if(i.type==="CASE_WHEN")return{type:"CASE_VALUE",expr:i};throw new A("SET \u306E\u5024\u306B\u306F\u9023\u7D50\u3092\u542B\u3080\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u304C\u5FC5\u8981\u3067\u3059",t)}if(t.kind==="VARIABLE")return this.parseSqlValue();if(t.kind==="STRING")return this.parseSqlValue();if(ws(t.kind))return this.parseSqlValue();if(t.kind==="IN")return this.parseSqlValue();if(t.kind==="CASE"||t.kind==="IF")return this.parseSqlValue();if(t.kind==="[")return this.parseArrayLiteral();if(t.kind==="("&&this.peekAt(1).kind==="SELECT"){this.advance();let i=this.parseSelect();return this.expect(")"),{type:"SCALAR_SUBQUERY",query:i}}let r=this.allowUnaryPlusNumber;this.allowUnaryPlusNumber=!0;let n;try{n=this.parseArithAddSub()}finally{this.allowUnaryPlusNumber=r}if(n.type==="NUMBER"||n.type==="ARITH"||n.type==="STRING_FUNC")return n;if(n.type==="FIELD_REF"){let i=n.field.indexOf(".");if(i>0&&i<n.field.length-1)return{type:"SOURCE_FIELD",alias:n.field.slice(0,i),field:n.field.slice(i+1)}}throw new A("SET \u306E\u5024\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u5358\u72EC\u3067\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",t)}parseArithOp(){let t=this.advance();switch(t.kind){case"+":return"+";case"-":return"-";case"*":return"*";case"/":return"/";case"%":return"%";default:throw new A("\u7B97\u8853\u6F14\u7B97\u5B50\uFF08+ - * / %\uFF09\u304C\u5FC5\u8981\u3067\u3059",t)}}parseDelete(){this.expect("DELETE"),this.expect("FROM"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:r,subtableCode:n}=qe(t,this.prev()),i=this.peek();if(!this.consume("WHERE"))throw new A("DELETE \u6587\u306B\u306F WHERE \u53E5\u304C\u5FC5\u9808\u3067\u3059\uFF08\u5168\u4EF6\u524A\u9664\u3092\u9632\u3050\u305F\u3081\uFF09",i);let o=this.parseWhereExpr(void 0,!0);return n?{type:"DELETE",appId:r,subtableCode:n,where:o}:{type:"DELETE",appId:r,where:o}}parseReorder(){this.expect("REORDER");let t=this.consume("ALL");this.rejectTempTableDml();let r=this.parseIdentifier(),{appId:n,subtableCode:i}=qe(r,this.prev());if(!i)throw new A("REORDER \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u306E\u307F\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08\u4F8B: REORDER APP100$\u660E\u7D30 ...\uFF09",this.prev());this.expect("BY");let o=this.parseOrderBy();if(o.length===0)throw new A("REORDER \u306B\u306F BY \u30AD\u30FC\u304C\u5FC5\u8981\u3067\u3059",this.prev());let a=null;if(t){if(this.peek().kind==="WHERE")throw new A("REORDER ALL \u3067\u306F WHERE \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek())}else{let s=this.peek();if(!this.consume("WHERE"))throw new A("REORDER \u306B\u306F WHERE \u53E5\u304C\u5FC5\u9808\u3067\u3059\uFF08\u8AA4\u64CD\u4F5C\u9632\u6B62\uFF09",s);a=this.parseWhereExpr(void 0,!0)}return{type:"REORDER",appId:n,subtableCode:i,all:t,by:o,where:a}}peek(){return this.tokens[this.pos]??{kind:"EOF",value:"",pos:-1}}peekAt(t){return this.tokens[this.pos+t]??{kind:"EOF",value:"",pos:-1}}prev(){return this.tokens[this.pos-1]??{kind:"EOF",value:"",pos:-1}}advance(){let t=this.peek();return t.kind!=="EOF"&&this.pos++,t}consume(t){return this.peek().kind===t?(this.advance(),!0):!1}expect(t,r){let n=this.peek();if(n.kind!==t)throw new A(r??`\u300C${t}\u300D\u304C\u5FC5\u8981\u3067\u3059`,n);return this.advance()}expectKeyword(t,r){return this.expect(t,r)}parseUnsignedInt(){let t=this.expect("NUMBER","\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059"),r=Number(t.value);if(!Number.isInteger(r)||r<0)throw new A("\u6B63\u306E\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059",t);return r}parseIdentifier(){let t=this.peek();if(t.kind==="IDENT"||t.kind==="BIDENT"){if(t.kind==="IDENT"&&t.value.startsWith("#"))throw new A("\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\uFF08# \u3067\u59CB\u307E\u308B\u540D\u524D\uFF09\u306F FROM / JOIN / CREATE / DROP TEMP TABLE \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059",t);return this.advance(),t.value}throw new A("\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u307E\u305F\u306F\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}parseTableName(){let t=this.peek();if(t.kind==="IDENT"||t.kind==="BIDENT")return this.advance(),t.value;throw new A("\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u307E\u305F\u306F\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}rejectTempTableDml(){let t=this.peek();if(t.kind==="IDENT"&&t.value.startsWith("#"))throw new A(`DML on temp table ${t.value} is not supported.`,t)}parseAliasName(){let t=this.peek();if(t.value.startsWith("#"))throw new A("\u30A8\u30A4\u30EA\u30A2\u30B9\u540D\u306B # \u3067\u59CB\u307E\u308B\u540D\u524D\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",t);if(t.kind==="IDENT"||t.kind==="BIDENT"||Cn.has(t.value.toUpperCase()))return this.advance(),t.value.toLowerCase();throw new A("\u30A8\u30A4\u30EA\u30A2\u30B9\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}parseFieldPath(){let t=this.parseIdentifier();if(this.peek().kind!==".")return t;this.advance();let r=this.parseIdentifier();return`${t}.${r}`}parseColumnFieldRef(){let t=this.parseIdentifier();if(this.peek().kind!==".")return t;if(this.advance(),this.consume("*"))return`${t}.*`;let r=this.parseIdentifier();return`${t}.${r}`}};function zp(e){let t=e.toUpperCase(),r=new Set(["TEXT","VARCHAR","CHAR","NCHAR","NVARCHAR","STRING"]),n=new Set(["NUMBER","INT","INTEGER","NUMERIC","DECIMAL","FLOAT","DOUBLE","REAL","BIGINT","SMALLINT"]);return r.has(t)?"TEXT":n.has(t)?"NUMBER":null}function qe(e,t){let r=e.match(/^[Aa][Pp][Pp](\d+)(?:\$(.+))?$/);if(!r)throw new A(`\u30C6\u30FC\u30D6\u30EB\u540D\u306F APP + \u6570\u5B57\uFF08\u307E\u305F\u306F APP + \u6570\u5B57 + $\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\uFF09\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: APP100 / APP100$\u660E\u7D30\uFF09\u3002\u300C${e}\u300D\u306F\u7121\u52B9\u3067\u3059`,t);return{appId:Number(r[1]),subtableCode:r[2]??null}}function Ps(e){return e==="INSERT"||e==="INSERT_SELECT"||e==="UPDATE"||e==="DELETE"||e==="UPSERT"||e==="UPSERT_SELECT"||e==="REORDER"||e==="IMPORT"}var Xp=new Set(["STDDEV_POP","STDDEV_SAMP","VAR_POP","VAR_SAMP","MEDIAN","MODE"]);function ce(e,t){for(let r of t)e.add(r)}function vn(e,t=new Set){if(e===null||typeof e!="object"||t.has(e))return!1;t.add(e);let r=e;return(r.type==="AGGREGATE"||r.type==="AGG_REF")&&typeof r.func=="string"&&Xp.has(r.func)||r.type==="FIELD"&&typeof r.field=="string"&&/^(STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/i.test(r.field)?!0:Object.values(r).some(n=>Array.isArray(n)?n.some(i=>vn(i,t)):vn(n,t))}function Tt(e){let t=new Set;if(Ps(e.type))return t.add("DML"),t;switch(e.type){case"VALIDATE":t.add("VALIDATE");break;case"SELECT":ce(t,qt(e));break;case"UNION":ce(t,Ns(e));break;case"WITH":for(let r of e.ctes)ce(t,Tt(r.query));ce(t,Tt(e.query));break;case"CREATE_TEMP_TABLE":ce(t,Tt(e.query));break;default:break}return vn(e)&&t.add("STATISTICAL_AGGREGATE"),t}function Ns(e){let t=e.left.type==="SELECT"?qt(e.left):Ns(e.left);return ce(t,qt(e.right)),t}function qt(e){let t=new Set;ne(e).type==="GROUPING_SETS"&&t.add("GROUPING_SETS"),e.orderBy.length>0&&t.add("LOCAL_ORDER");for(let r of e.columns)if(r.type==="WINDOW_COL"&&r.orderBy.length>0&&t.add("WINDOW_ORDER"),r.type==="SCALAR_SUBQUERY_COL"&&ce(t,qt(r.query)),r.type==="CASE_COL")for(let n of r.expr.branches)ce(t,jt(n.condition));return ce(t,jt(e.where)),ce(t,jt(e.having)),vn(e)&&t.add("STATISTICAL_AGGREGATE"),t}function jt(e){let t=new Set;if(e===null)return t;switch(e.type){case"BINARY":(e.right.type==="SUBQUERY_IN_LIST"||e.right.type==="SCALAR_SUBQUERY")&&ce(t,qt(e.right.query));break;case"LOGICAL":ce(t,jt(e.left)),ce(t,jt(e.right));break;case"NOT":case"GROUP":ce(t,jt(e.expr));break;case"EXISTS":ce(t,qt(e.query));break;case"NULL_CHECK":case"BOOLEAN":break}return t}var Jp=Object.freeze({v1:Object.freeze({operations:new Set(["PATCH"]),insert:!1,upsert:!1,multipleBlocks:!1,multipleParents:!1,idxSelectors:!1,expectRows:!1,updateFrom:!1,check:!1,onErrorSkip:!1,rejectLimit:!1}),"v1.1":Object.freeze({operations:new Set(["PATCH","APPEND"]),insert:!1,upsert:!1,multipleBlocks:!0,multipleParents:!1,idxSelectors:!1,expectRows:!1,updateFrom:!1,check:!1,onErrorSkip:!1,rejectLimit:!1}),"v1.2":Object.freeze({operations:new Set(["PATCH","APPEND","REMOVE"]),insert:!1,upsert:!1,multipleBlocks:!0,multipleParents:!1,idxSelectors:!1,expectRows:!1,updateFrom:!1,check:!1,onErrorSkip:!1,rejectLimit:!1}),phase10a:Object.freeze({operations:new Set(["PATCH","APPEND","REMOVE"]),insert:!1,upsert:!1,multipleBlocks:!0,multipleParents:!0,idxSelectors:!1,expectRows:!1,updateFrom:!1,check:!1,onErrorSkip:!1,rejectLimit:!1}),phase11:Object.freeze({operations:new Set(["PATCH","APPEND","REMOVE"]),insert:!1,upsert:!1,multipleBlocks:!0,multipleParents:!0,idxSelectors:!0,expectRows:!1,updateFrom:!1,check:!1,onErrorSkip:!1,rejectLimit:!1}),phase12:Object.freeze({operations:new Set(["PATCH","APPEND","REMOVE"]),insert:!1,upsert:!1,multipleBlocks:!0,multipleParents:!0,idxSelectors:!0,expectRows:!0,updateFrom:!1,check:!1,onErrorSkip:!1,rejectLimit:!1}),phase13a:Object.freeze({operations:new Set(["PATCH","APPEND","REMOVE"]),insert:!0,upsert:!1,multipleBlocks:!0,multipleParents:!0,idxSelectors:!0,expectRows:!0,updateFrom:!1,check:!1,onErrorSkip:!1,rejectLimit:!1}),phase14a:Object.freeze({operations:new Set(["PATCH","APPEND","REMOVE"]),insert:!0,upsert:!0,multipleBlocks:!0,multipleParents:!0,idxSelectors:!0,expectRows:!0,updateFrom:!1,check:!1,onErrorSkip:!1,rejectLimit:!1}),phase14b:Object.freeze({operations:new Set(["PATCH","APPEND","REMOVE"]),insert:!0,upsert:!0,multipleBlocks:!0,multipleParents:!0,idxSelectors:!0,expectRows:!0,updateFrom:!1,check:!1,onErrorSkip:!1,rejectLimit:!1}),phase14c:Object.freeze({operations:new Set(["PATCH","APPEND","REMOVE"]),insert:!0,upsert:!0,multipleBlocks:!0,multipleParents:!0,idxSelectors:!0,expectRows:!0,updateFrom:!1,check:!1,onErrorSkip:!1,rejectLimit:!1}),phase15a:Object.freeze({operations:new Set(["PATCH","APPEND","REMOVE","ADD","REMOVE_VALUE"]),insert:!0,upsert:!0,multipleBlocks:!0,multipleParents:!0,idxSelectors:!0,expectRows:!0,updateFrom:!1,check:!1,onErrorSkip:!1,rejectLimit:!1}),phase15b:Object.freeze({operations:new Set(["PATCH","APPEND","REMOVE","ADD","REMOVE_VALUE"]),insert:!0,upsert:!0,multipleBlocks:!0,multipleParents:!0,idxSelectors:!0,expectRows:!0,updateFrom:!1,check:!1,onErrorSkip:!1,rejectLimit:!1})}),co=Object.freeze({phase10a:Object.freeze({multipleParentPreflight:!1,internalPreparedWrite:!1,publicMultipleParentWrite:!1,insertWrite:!1,upsertWrite:!1}),phase10b:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!1,publicMultipleParentWrite:!1,insertWrite:!1,upsertWrite:!1}),phase10c:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!1,insertWrite:!1,upsertWrite:!1}),phase10d:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!1,upsertWrite:!1}),phase11:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!1,upsertWrite:!1}),phase12:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!1,upsertWrite:!1}),phase13a:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!1,upsertWrite:!1}),phase13b:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!1,upsertWrite:!1}),phase13c:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!0,upsertWrite:!1}),phase14a:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!0,upsertWrite:!1}),phase14b:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!0,upsertWrite:!1}),phase14c:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!0,upsertWrite:!0}),phase15a:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!0,upsertWrite:!0}),phase15b:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!0,upsertWrite:!0})}),Ir="v1";function K(e){throw new Error(`UnsupportedError: APPLY ${Ir} scope does not support ${e}`)}function Qp(e,t){let r=Ir;Ir=e;try{return t()}finally{Ir=r}}function Zp(e){let t=e.type==="EXPLAIN"?e.query:e;return t.type==="UPDATE"||t.type==="INSERT"?t.applyBlocks?.length?t:null:t.type==="UPSERT"&&(t.onInsertApplyBlocks?.length||t.onUpdateApplyBlocks?.length)?t:null}function Un(e,t){return Qp(e,()=>ed(t,Jp[e]))}function ed(e,t){let r=Zp(e);if(r===null)return;if(r.type==="UPSERT"){rd(r,t);return}let n=r.applyBlocks;if(lo(n),!t.multipleBlocks&&n.length!==1&&K("multiple APPLY blocks in this phase"),r.type==="INSERT"){nd(r,n,t);return}let i=r;i.subtableCode&&K("a subtable UPDATE as the parent statement in this phase"),!t.updateFrom&&i.from!=null&&K("UPDATE ... FROM in this phase"),!t.check&&i.checkGroups?.length&&K("CHECK in this phase"),!t.onErrorSkip&&i.onErrorSkip&&K("ON ERROR SKIP in this phase"),!t.rejectLimit&&i.rejectLimit!=null&&K("REJECT LIMIT in this phase"),id(i.where,t.multipleParents),Os(n,t)}function Os(e,t){for(let r of e){for(let n of r.operations)t.operations.has(n.kind)||K(`${n.kind} in this phase`);Ls(r);for(let n of r.operations){if(n.kind==="APPEND"){for(let i of n.fields)kn(i,"APPEND targets");Xt(n.values,"APPEND values");continue}if(n.kind==="REMOVE"){!t.expectRows&&n.expectRows&&K("EXPECT ROWS in this phase"),n.selector.kind==="WHERE"&&Cs(n.selector.where,t.idxSelectors);continue}if(n.kind==="PATCH"){!t.expectRows&&n.expectRows&&K("EXPECT ROWS in this phase"),n.assignments.length===0&&K("an empty PATCH operation in this phase");for(let i of n.assignments){if(i.field.startsWith("_")||i.field.startsWith("$"))throw new Error(`ArgumentError: APPLY assignment target ${i.field} is a system field.`);i.field.includes(".")&&K("parent or qualified PATCH targets in this phase")}Xt(n.assignments,"PATCH assignments"),n.selector.kind==="WHERE"&&Cs(n.selector.where,t.idxSelectors)}}}}function Ls(e){let t=e.operations.some(i=>i.kind==="PATCH"||i.kind==="APPEND"||i.kind==="REMOVE"),r=e.operations.some(i=>i.kind==="ADD"||i.kind==="REMOVE_VALUE");if(t&&r)throw new Error("ArgumentError: APPLY block cannot mix row operations and multi-value operations.");let n=r?"MULTI_VALUE":"SUBTABLE";if(e.targetKind!==n)throw new Error(`ArgumentError: APPLY block target kind ${String(e.targetKind)} does not match ${n} operations.`)}var td=new Set(["MULTI_SELECT","CHECK_BOX","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function _s(e,t){if(Ls(e),e.targetKind==="MULTI_VALUE"){if(!td.has(t))throw new Error(`ArgumentError: APPLY multi-value operations require MULTI_SELECT, CHECK_BOX, USER_SELECT, ORGANIZATION_SELECT, or GROUP_SELECT target; ${e.field} is ${t}.`);return}if(t!=="SUBTABLE")throw new Error(`ArgumentError: APPLY row operations require a SUBTABLE target; ${e.field} is ${t}.`)}function lo(e){let t=new Set;for(let r of e){if(t.has(r.field))throw new Error(`ArgumentError: APPLY ${Ir} scope allows only one block for table ${r.field}`);t.add(r.field)}}function rd(e,t){t.upsert||K("UPSERT in this phase"),!t.check&&e.checkGroups?.length&&K("CHECK in this phase"),!t.onErrorSkip&&e.onErrorSkip&&K("ON ERROR SKIP in this phase"),!t.rejectLimit&&e.rejectLimit!=null&&K("REJECT LIMIT in this phase");let r=e.onInsertApplyBlocks??[],n=e.onUpdateApplyBlocks??[];lo(r),lo(n),!t.multipleBlocks&&(r.length>1||n.length>1)&&K("multiple APPLY blocks in this phase"),Ds(r,"UPSERT ON INSERT"),Os(n,{...t,idxSelectors:!1,expectRows:!1})}function Ds(e,t){for(let r of e)for(let n of r.operations){n.kind!=="APPEND"&&K(`${n.kind} for ${t} in this phase`);for(let i of n.fields)kn(i,"APPEND targets");Xt(n.values,"APPEND values")}}function nd(e,t,r){r.insert||K("INSERT in this phase"),e.subtableCode&&K("a subtable INSERT as the parent statement in this phase"),!r.check&&e.checkGroups?.length&&K("CHECK in this phase"),!r.onErrorSkip&&e.onErrorSkip&&K("ON ERROR SKIP in this phase"),!r.rejectLimit&&e.rejectLimit!=null&&K("REJECT LIMIT in this phase"),Ds(t,"INSERT")}function ze(e){if(e.type!=="BINARY"||e.op!=="="||e.left.type!=="FIELD"||e.left.tableAlias!==null||e.left.field!=="$id"||e.right.type!=="NUMBER")return!1;let t=e.right.raw??String(e.right.value);return/^\d+$/.test(t)&&e.right.value>0&&Number.isSafeInteger(e.right.value)}function vs(e,t){let r=co[e],n="validateOnly"in t&&t.validateOnly===!0;if(t.type!=="EXPLAIN"&&!n&&ks(t)&&e!=="phase15b")throw new Error(`UnsupportedError: APPLY ${zt(e)} multi-value execution is not connected`);if(t.type==="UPSERT"&&(t.onInsertApplyBlocks?.length||t.onUpdateApplyBlocks?.length)){if(t.validateOnly!==!0&&!r.upsertWrite)throw new Error(`UnsupportedError: APPLY ${zt(e)} UPSERT execution is not connected`);return}if(t.type==="INSERT"&&t.applyBlocks?.length){if(t.validateOnly!==!0&&!r.insertWrite)throw new Error(`UnsupportedError: APPLY ${zt(e)} INSERT execution is not connected`);return}if(!(t.type!=="UPDATE"||!t.applyBlocks?.length)&&!r.multipleParentPreflight&&!ze(t.where))throw new Error(`UnsupportedError: APPLY ${zt(e)} execution does not support multiple-parent APPLY`)}function ks(e){let t=e.type==="EXPLAIN"?e.query:e;return(t.type==="UPDATE"||t.type==="INSERT"?t.applyBlocks??[]:t.type==="UPSERT"?[...t.onInsertApplyBlocks??[],...t.onUpdateApplyBlocks??[]]:[]).some(n=>n.targetKind==="MULTI_VALUE"||n.operations.some(i=>i.kind==="ADD"||i.kind==="REMOVE_VALUE"))}function Us(e,t){if(!(t.type!=="UPDATE"||!t.applyBlocks?.length||ze(t.where))&&!co[e].publicMultipleParentWrite)throw new Error(`UnsupportedError: APPLY ${zt(e)} public multiple-parent write is not connected`)}function Jt(e){if(!co[e].internalPreparedWrite)throw new Error(`UnsupportedError: APPLY ${zt(e)} internal prepared write is not available`)}function zt(e){return`Phase ${e.slice(5)}`}function id(e,t){ze(e)||(e.type==="BINARY"&&e.op==="="&&e.left.type==="FIELD"&&e.left.tableAlias===null&&e.left.field==="$id"&&K("a parent $id that is not a positive safe integer in this phase"),t||K("a parent WHERE other than the single condition $id = <positive safe integer> in this phase"),uo(e,t))}function uo(e,t){if(Array.isArray(e)){for(let o of e)uo(o,t);return}if(e===null||typeof e!="object")return;let r=e,n=typeof r.type=="string"?r.type:null,i=typeof r.op=="string"?r.op:null;!t&&(i==="KLIKE"||i==="NOT_KLIKE")&&K("KLIKE in parent WHERE"),(n==="SELECT"||n==="SCALAR_SUBQUERY"||n==="SUBQUERY_IN_LIST"||n==="EXISTS")&&K("subqueries in parent WHERE"),(n==="WINDOW_COL"||n==="AGGREGATE"||n==="AGG_REF"||n==="AGG_ARITH"||n==="ARITH_AGG_COL")&&K("aggregate or window expressions in parent WHERE"),(n==="FIELD"||n==="FIELD_REF")&&typeof r.field=="string"&&/^(count|sum|avg|min|max|group_concat)\s*\(/i.test(r.field)&&K("aggregate or window expressions in parent WHERE"),n==="KINTONE_FUNC"&&!(typeof r.name=="string"&&Ne(r.name))&&K("non-deterministic kintone functions in parent WHERE");for(let o of Object.values(r))uo(o,t)}function Cs(e,t){Xt(e,"child row selectors",t)}function Xt(e,t,r=!1){if(Array.isArray(e)){for(let s of e)Xt(s,t,r);return}if(e===null||typeof e!="object")return;let n=e,i=typeof n.type=="string"?n.type:null,o=typeof n.kind=="string"?n.kind:null,a=typeof n.op=="string"?n.op:null;if((a==="KLIKE"||a==="NOT_KLIKE")&&K(`KLIKE in ${t}`),(i==="SELECT"||i==="SCALAR_SUBQUERY"||i==="SUBQUERY_IN_LIST"||i==="EXISTS")&&K(`subqueries in ${t}`),(i==="WINDOW_COL"||i==="AGGREGATE"||i==="AGG_REF"||i==="AGG_ARITH"||i==="ARITH_AGG_COL")&&K(`aggregate or window expressions in ${t}`),i==="KINTONE_FUNC"&&!(typeof n.name=="string"&&Ne(n.name))&&K(`non-deterministic kintone functions in ${t}`),i==="FIELD"){let s=n.tableAlias,l=n.field;s!=null&&K(`qualified or parent field references in ${t}`),kn(l,t,r)}if(i==="FIELD_REF"&&kn(n.field,t,r),!(o==="PATCH"||o==="APPEND"||o==="REMOVE"))for(let s of Object.values(n))Xt(s,t,r)}function kn(e,t,r=!1){if(typeof e!="string")return;let n=e.toLowerCase();n==="_idx"&&!r&&K(`_idx in ${t}`),(n.startsWith("_p.")||n.includes("."))&&K(`parent or qualified field references in ${t}`),/^(count|sum|avg|min|max|group_concat)\s*\(/i.test(e)&&K(`aggregate expressions in ${t}`)}function br(e){switch(e.type){case"BOOLEAN":return{type:"BOOLEAN",value:!e.value};case"BINARY":{let t=od(e.op);if(t===null)throw new J(`NOT ${e.op} \u306F\u30B5\u30DD\u30FC\u30C8\u5BFE\u8C61\u5916\u3067\u3059`);return{...e,op:t}}case"NULL_CHECK":return{...e,not:!e.not};case"LOGICAL":return{type:"LOGICAL",op:e.op==="AND"?"OR":"AND",left:br(e.left),right:br(e.right)};case"NOT":return e.expr;case"GROUP":return{type:"GROUP",expr:br(e.expr)};case"EXISTS":return{...e,not:!e.not}}}function od(e){switch(e){case"=":return"!=";case"!=":case"<>":return"=";case">":return"<=";case"<":return">=";case">=":return"<";case"<=":return">";case"LIKE":return"NOT_LIKE";case"NOT_LIKE":return"LIKE";case"KLIKE":return"NOT_KLIKE";case"NOT_KLIKE":return"KLIKE";case"IN":return"NOT_IN";case"NOT_IN":return"IN"}}function Ms(e){return e.includes("%")||e.includes("_")}function Pr(e){return e.type==="BINARY"&&(e.op==="LIKE"||e.op==="NOT_LIKE")}function Qt(e){return e.type==="BINARY"&&(e.op==="KLIKE"||e.op==="NOT_KLIKE")}function st(e){if(e===null)return!1;if(Pr(e))return!0;switch(e.type){case"LOGICAL":return st(e.left)||st(e.right);case"NOT":case"GROUP":return st(e.expr);case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return!1}}function oe(e){if(e===null)return!1;if(Qt(e))return!0;switch(e.type){case"LOGICAL":return oe(e.left)||oe(e.right);case"NOT":case"GROUP":return oe(e.expr);case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return!1}}function W(e){switch(e.type){case"BINARY":return ad(e);case"NULL_CHECK":return ld(e);case"LOGICAL":return ud(e);case"NOT":return cd(e);case"GROUP":return pd(e);case"EXISTS":throw new J("EXISTS \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"BOOLEAN":throw new J("internal error: BOOLEAN predicate reached kintone query conversion")}}function ad(e){if(Pr(e))throw new J("LIKE / NOT LIKE \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093\uFF08\u5E38\u306B JS \u8A55\u4FA1\u304C\u5FC5\u8981\u3067\u3059\uFF09");let t=Fs(e.left),r=sd(e.op),n=dd(e.right,e.op);return`${t} ${r} ${n}`}function sd(e){switch(e){case"=":return"=";case"!=":case"<>":return"!=";case">":return">";case"<":return"<";case">=":return">=";case"<=":return"<=";case"LIKE":return"like";case"NOT_LIKE":return"not like";case"KLIKE":return"like";case"NOT_KLIKE":return"not like";case"IN":return"in";case"NOT_IN":return"not in"}}function ld(e){let t=Fs(e.field);return e.not?`${t} != ""`:`${t} = ""`}function ud(e){let t=W(e.left),r=W(e.right),n=e.op==="AND"?"and":"or",i=xs(e.left)?`(${t})`:t,o=xs(e.right)?`(${r})`:r;return`${i} ${n} ${o}`}function cd(e){return W(br(e.expr))}function pd(e){return`(${W(e.expr)})`}function Fs(e){if(e.type==="FUNC_FIELD")throw new J(`WHERE \u53E5\u306E\u95A2\u6570\uFF08${e.expr.func}\uFF09\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093`);if(e.type==="ARITH_FIELD")throw new J("WHERE \u53E5\u306E\u7B97\u8853\u5F0F\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");if(e.type==="CASE_FIELD")throw new J("WHERE \u53E5\u306E CASE WHEN \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");if(e.type==="GROUPING_FIELD")throw new J("GROUPING() \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");return Sd(e.field)}function dd(e,t){switch(e.type){case"VARIABLE":throw new J(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"VARIABLE_IN_LIST":throw new J(`\u672A\u89E3\u6C7A\u306E\u914D\u5217\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"STRING":return Ks(e);case"NUMBER":return G(e);case"KINTONE_FUNC":return fd(e);case"IN_LIST":return yd(e,t);case"ARITH_VALUE":throw new J("WHERE \u53E5\u306E\u53F3\u8FBA\u7B97\u8853\u5F0F\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"CASE_VALUE":throw new J("WHERE \u53E5\u306E\u53F3\u8FBA CASE WHEN \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"SUBQUERY_IN_LIST":throw new J("IN (SELECT ...) \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"SCALAR_SUBQUERY":throw new J("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"ARRAY":throw new J("\u914D\u5217\u30EA\u30C6\u30E9\u30EB\u306F WHERE \u53E5\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093")}}function Ks(e){return`"${e.value.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function fd(e){switch(e.name){case"TODAY":case"NOW":case"LOGINUSER":return`${e.name}()`}return Ed(e)}function Ed(e){switch(e.name){case"YESTERDAY":case"TOMORROW":case"THIS_YEAR":case"LAST_YEAR":case"NEXT_YEAR":return e.args?.kind!=="NONE"?Nr():`${e.name}()`;case"FROM_TODAY":return e.args?.kind!=="FROM_TODAY"||!hd(e.args.offset,e.args.offsetText)||!Rd.has(e.args.unit)?Nr():`${e.name}(${e.args.offsetText}, ${e.args.unit})`;case"THIS_WEEK":case"LAST_WEEK":case"NEXT_WEEK":return e.args?.kind!=="WEEK"||e.args.weekday!==null&&!md.has(e.args.weekday)?Nr():e.args.weekday===null?`${e.name}()`:`${e.name}(${e.args.weekday})`;case"THIS_MONTH":case"LAST_MONTH":case"NEXT_MONTH":return e.args?.kind!=="MONTH"||!gd(e.args.day)?Nr():e.args.day===null?`${e.name}()`:`${e.name}(${e.args.day})`}return Nr()}var Rd=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),md=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function hd(e,t){return!Number.isSafeInteger(e)||!/^(?:0|[1-9]\d*|-[1-9]\d*)$/.test(t)?!1:Number(t)===e}function gd(e){return e===null||e==="LAST"||typeof e=="number"&&Number.isInteger(e)&&e>=1&&e<=31}function Nr(){throw new J("internal error: invalid relative date function AST reached kintone query conversion")}function yd(e,t){if(t!=="IN"&&t!=="NOT_IN")throw new J("IN_LIST \u306F IN / NOT IN \u6F14\u7B97\u5B50\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059");return Ad(e.values),`(${e.values.map(n=>n.type==="STRING"?Ks(n):G(n)).join(",")})`}function Ad(e){let t=e.find(r=>r.type==="VARIABLE");if(t?.type==="VARIABLE")throw new J(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${t.name} \u304C\u3042\u308A\u307E\u3059`)}function Sd(e){return/^[\w$\u3000-\u9FFF]+$/u.test(e)?e:`"${e.replace(/"/g,'\\"')}"`}function xs(e){return e.type==="LOGICAL"}var J=class extends Error{constructor(t){super(t),this.name="KintoneQueryError"}};function Td(e){return e.some(t=>t.type==="WINDOW_COL")}function Ce(e){return e.from.subtableCode||e.joins.some(t=>t.table.subtableCode)||e.joins.length>0||ne(e).type!=="NONE"||e.distinct||Td(e.columns)||e.columns.some(t=>t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"||t.type==="SCALAR_SUBQUERY_COL"||t.type==="STRFUNC_COL"&&Ws(t.expr)||t.type==="SCALAR_VALUE_COL"&&Or(t.expr))||lt(e.where)||e.orderBy.some(t=>t.key.type!=="FIELD_NAME")?"FULL_SCAN":"SIMPLE"}function lt(e){if(e===null)return!1;switch(e.type){case"BOOLEAN":return!0;case"BINARY":return Bs(e.left)||e.right.type==="ARITH_VALUE"||e.right.type==="CASE_VALUE"||e.right.type==="SUBQUERY_IN_LIST"||e.right.type==="SCALAR_SUBQUERY"||Pr(e);case"NULL_CHECK":return Bs(e.field);case"LOGICAL":return lt(e.left)||lt(e.right);case"NOT":case"GROUP":return lt(e.expr);case"EXISTS":return!0}}function Bs(e){return e.type==="FUNC_FIELD"||e.type==="ARITH_FIELD"||e.type==="CASE_FIELD"}function Mn(e){let t=[],n=(e.limit!==null||e.offset!==null)&&e.orderBy.length===0;if(e.where!==null&&t.push(W(e.where)),e.orderBy.length>0){let i=e.orderBy.map(wd).join(", ");t.push(`order by ${i}`)}else n&&t.push("order by $id asc");return e.limit!==null&&t.push(`limit ${e.limit}`),e.offset!==null&&t.push(`offset ${e.offset}`),{app:e.from.appId,query:t.join(" "),fields:Id(e.columns),totalCount:!1}}function Vs(e,t){let r=[];return e.where!==null&&e.joins.length===0&&!lt(e.where)&&r.push(W(e.where)),{app:t,query:r.join(" "),fields:[]}}function wt(e,t){let n=Cd(e).get(t);if(!n)return[];if(n.allFields)return[];let i=new Set(n.fields);return n.table.subtableCode&&i.add(n.table.subtableCode),i.size===0&&i.add("$id"),[...i]}function wd(e){let t=e.direction==="ASC"?"asc":"desc";if(e.key.type!=="FIELD_NAME")throw new Error("ORDER BY \u5F0F\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093\uFF08FULL_SCAN \u304C\u5FC5\u8981\u3067\u3059\uFF09");return`${e.key.name} ${t}`}function Id(e){if(e.some(n=>n.type==="WILDCARD"||n.type==="AGGREGATE"||n.type==="ARITH_AGG_COL"||n.type==="CASE_COL"||n.type==="SCALAR_SUBQUERY_COL"))return[];let r=[];for(let n of e)n.type==="FIELD"?r.push(fo(n.field)):n.type==="ARITH_COL"?Cr(n.expr,r):n.type==="STRFUNC_COL"?Eo(n.expr,r):n.type==="SCALAR_VALUE_COL"&&Zt(n.expr,r);return[...new Set(r)]}function bd(e,t){Cr(e.left,t),Cr(e.right,t)}function Cr(e,t){e.type==="FIELD_REF"?t.push(fo(e.field)):e.type==="ARITH"?bd(e,t):e.type==="STRING_FUNC"&&Eo(e,t)}function fo(e){let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function Eo(e,t){for(let r of e.args)Pd(r,t)}function Pd(e,t){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"){po(e,t);return}Zt(e,t)}function Zt(e,t){if(e.type==="FIELD"){t.push(fo(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field));return}if(e.type==="STRING_FUNC"){Eo(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){Zt(e.left,t),Zt(e.right,t);return}if(e.type==="CASE_WHEN"){for(let r of e.branches)$s(r.result,t);e.elseResult&&$s(e.elseResult,t)}}function $s(e,t){if(e.type!=="ARRAY"){if(e.type==="FIELD_REF"||e.type==="ARITH"){Cr(e,t);return}Zt(e,t)}}function po(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&Nd(e.arg,t);return}e.type==="AGG_ARITH"&&(po(e.left,t),po(e.right,t))}function Nd(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?Cr(e,t):Zt(e,t)}function Ws(e){return e.args.some(t=>t.type==="AGG_REF"||t.type==="AGG_ARITH"?!0:Or(t))}function Or(e){return e.type==="STRING_FUNC"?Ws(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?Or(e.left)||Or(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>Gs(t.result))||e.elseResult!==null&&Gs(e.elseResult):!1}function Gs(e){return e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?!1:Or(e)}function Cd(e){let t=[e.from,...e.joins.map(y=>y.table)].filter(y=>y.cteName===null),r=new Map;for(let y of t)r.set(y,{table:y,allFields:!1,fields:new Set});if(r.size===0)return r;let n=t[0]??null,i=t.find(y=>!!y.subtableCode)??null,o=new Map;for(let y of t)y.alias&&o.set(y.alias,y),y.subtableCode||(o.set(`APP${y.appId}`,y),o.set(`app${y.appId}`,y));let a=Od(e.columns),s=y=>{let O=r.get(y);O&&(O.allFields=!0,O.fields.clear())},l=()=>{for(let y of t)s(y)},d=()=>{for(let y of t)y.subtableCode&&s(y)},p=(y,O)=>{let L=r.get(y);if(!(!L||L.allFields)){if(y.subtableCode){if(O.startsWith("_p.")){let N=O.slice(3);N&&N!=="*"&&L.fields.add(N);return}return void 0}O&&L.fields.add(O)}},c=(y,O="select")=>{if(!y||y==="*")return;if(y==="_p.*"){d();return}if(y.endsWith(".*")){let N=y.slice(0,-2);if(!N){l();return}if(N==="_p"){d();return}let v=o.get(N);if(v){s(v);return}return}if((O==="orderBy"||O==="having"||O==="groupBy")&&a.has(y)||(O==="orderBy"||O==="having"||O==="groupBy")&&Ld(y))return;let L=y.indexOf(".");if(L>0){let N=y.slice(0,L),v=y.slice(L+1);if(N==="_p"){i&&p(i,`_p.${v}`);return}let b=o.get(N);if(b){p(b,v);return}}n&&p(n,y)},u=(y,O,L="select")=>{if(O){if(O==="_p"){i&&p(i,`_p.${y}`);return}let N=o.get(O);if(N){p(N,y);return}}c(y,L)},f=(y,O="select")=>{if(y.type==="FIELD_REF"){c(y.field,O);return}if(y.type==="ARITH"){f(y.left,O),f(y.right,O);return}if(y.type==="STRING_FUNC"){h(y,O);return}},E=(y,O="select")=>{if(y.type==="AGG_REF"){y.arg.type!=="WILDCARD"&&g(y.arg,O);return}y.type==="AGG_ARITH"&&(E(y.left,O),E(y.right,O))},R=(y,O="select")=>{if(y.type==="AGG_REF"||y.type==="AGG_ARITH"){E(y,O);return}m(y,O)},h=(y,O="select")=>{for(let L of y.args)R(L,O)},m=(y,O="select")=>{if(y.type==="FIELD"){u(y.field,y.tableAlias,O);return}if(y.type==="STRING_FUNC"){h(y,O);return}if(y.type==="SCALAR_ARITH"||y.type==="CONCAT_OP"){m(y.left,O),m(y.right,O);return}y.type==="CASE_WHEN"&&S(y,O)},g=(y,O="select")=>{if(y.type==="FIELD_REF"||y.type==="ARITH"){f(y,O);return}m(y,O)},T=(y,O="select")=>{if(y.type!=="ARRAY"){if(y.type==="FIELD_REF"||y.type==="ARITH"){f(y,O);return}m(y,O)}},S=(y,O="select")=>{for(let L of y.branches)_(L.condition,O),T(L.result,O);y.elseResult&&T(y.elseResult,O)},P=(y,O="select")=>{if(y.type==="FIELD"){u(y.field,y.tableAlias,O);return}if(y.type==="FUNC_FIELD"){h(y.expr,O);return}if(y.type==="ARITH_FIELD"){f(y.expr,O);return}y.type!=="GROUPING_FIELD"&&S(y.expr,O)},w=(y,O="select")=>{if(y.type==="ARITH_VALUE"){f(y.expr,O);return}if(y.type==="CASE_VALUE"){S(y.expr,O);return}},_=(y,O="where")=>{if(y)switch(y.type){case"BINARY":P(y.left,O),w(y.right,O);return;case"NULL_CHECK":P(y.field,O);return;case"LOGICAL":_(y.left,O),_(y.right,O);return;case"NOT":case"GROUP":_(y.expr,O);return;case"EXISTS":case"BOOLEAN":return}},I=y=>{if(y.type==="FIELD_NAME"){c(y.name,"groupBy");return}if(y.type==="ARITH_KEY"){f(y.expr,"groupBy");return}h(y.expr,"groupBy")},k=(y,O="orderBy")=>{if(y.type==="FIELD_NAME"){c(y.name,O);return}if(y.type==="ARITH_KEY"){f(y.expr,O);return}y.type!=="GROUPING_KEY"&&h(y.expr,O)};for(let y of e.columns)switch(y.type){case"WILDCARD":l();break;case"PARENT_WILDCARD":d();break;case"FIELD":c(y.field,"select");break;case"LITERAL_COL":break;case"VARIABLE_COL":throw new Error(`internal error: unresolved SELECT variable @${y.name}`);case"AGGREGATE":y.arg.type!=="WILDCARD"&&g(y.arg,"select");break;case"ARITH_AGG_COL":E(y.expr,"select");break;case"ARITH_COL":f(y.expr,"select");break;case"CASE_COL":S(y.expr,"select");break;case"STRFUNC_COL":h(y.expr,"select");break;case"SCALAR_VALUE_COL":m(y.expr,"select");break;case"GROUPING_COL":break;case"SCALAR_SUBQUERY_COL":break;case"WINDOW_COL":for(let O of y.partitionBy)u(O.field,O.tableAlias,"select");for(let O of y.orderBy)k(O.key,"select");break}for(let y of e.joins)u(y.on.left.field,y.on.left.tableAlias,"where"),u(y.on.right.field,y.on.right.tableAlias,"where");_(e.where,"where");let C=ne(e);if(C.type==="PLAIN")for(let y of C.allItems)I(y);else if(C.type==="GROUPING_SETS")for(let y of C.allItems)u(y.field,y.tableAlias,"select");_(e.having,"having");for(let y of e.orderBy)k(y.key);return r}function Od(e){let t=new Set;for(let r of e){if(r.type==="FIELD"&&r.alias){t.add(r.alias);continue}if(r.type==="LITERAL_COL"){t.add(r.alias??`'${r.value}'`);continue}if(r.type==="AGGREGATE"){r.alias?t.add(r.alias):t.add(Se(r.func,r.distinct,r.arg));continue}if(r.type==="ARITH_AGG_COL"){r.alias&&t.add(r.alias);continue}if(r.type==="ARITH_COL"){r.alias&&t.add(r.alias);continue}if(r.type==="CASE_COL"){t.add(r.alias??"case");continue}if(r.type==="STRFUNC_COL"){r.alias&&t.add(r.alias);continue}if(r.type==="SCALAR_VALUE_COL"){r.alias&&t.add(r.alias);continue}if(r.type==="GROUPING_COL"){t.add(r.alias??`GROUPING(${r.ref.field.tableAlias?`${r.ref.field.tableAlias}.`:""}${r.ref.field.field})`);continue}if(r.type==="SCALAR_SUBQUERY_COL"){t.add(r.alias??"(subquery)");continue}r.type==="WINDOW_COL"&&t.add(r.alias)}return t}function Ld(e){return/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/i.test(e)}function ut(e){if(e.ctes.length!==1)return!1;let t=e.ctes[0];if(t.query.type!=="SELECT"||Ce(t.query)!=="SIMPLE"||!t.query.columns.every(n=>n.type==="WILDCARD"||n.type==="FIELD"&&(n.alias===null||n.alias===n.field)))return!1;let r=e.query;return r.type!=="SELECT"||r.from.cteName!==t.name||r.joins.length>0||hs(r)||r.distinct?!1:!r.columns.some(n=>n.type==="AGGREGATE"||n.type==="ARITH_AGG_COL")}function ct(e){let t=e.ctes[0].query,r=e.query,n=xn(r.where,r.from.alias),i=t.where===null?n:n===null?t.where:{type:"LOGICAL",op:"AND",left:t.where,right:n},o=r.columns.every(a=>a.type==="WILDCARD")?t.columns:r.columns;return{type:"SELECT",from:t.from,joins:[],columns:o,where:i,groupBy:[],having:null,orderMode:"CANONICAL",orderBy:r.orderBy.length>0?r.orderBy:t.orderBy,limit:r.limit??t.limit,offset:r.offset??t.offset,distinct:!1}}function xn(e,t){if(e===null||t===null)return e;switch(e.type){case"BINARY":return{...e,left:Hs(e.left,t)};case"NULL_CHECK":return{...e,field:Hs(e.field,t)};case"LOGICAL":return{...e,left:xn(e.left,t),right:xn(e.right,t)};case"NOT":case"GROUP":return{...e,expr:xn(e.expr,t)};case"EXISTS":case"BOOLEAN":return e}}function Hs(e,t){return e.type==="FIELD"&&e.tableAlias===t?{...e,tableAlias:null}:e}function er(e,t={}){return Lr(e,r=>_d(r,t))}function _r(e,t={}){return Lr(e,r=>Ys(r,t)||js(r,t))}function Lr(e,t){switch(e.type){case"BINARY":return t(e)?e:null;case"LOGICAL":if(e.op!=="AND")return null;{let r=Lr(e.left,t),n=Lr(e.right,t);return r&&n?{...e,left:r,right:n}:r??n??null}case"GROUP":return Lr(e.expr,t);case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return null}}function _d(e,t){return Dd(e,t)||Ud(e,t)?!0:Ys(e,t)?t.fieldTypes?.get(e.left.field)==="NUMBER":kd(e,t)}function Dd(e,t){return t.allowKlike===!1||e.op!=="KLIKE"&&e.op!=="NOT_KLIKE"||e.left.type!=="FIELD"||!Ro(e.left,t)?!1:e.right.type==="STRING"||t.allowUnresolvedKlikeVariables===!0&&e.right.type==="VARIABLE"}var vd=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]);function kd(e,t){if(!js(e,t)||e.left.type!=="FIELD"||e.right.type!=="IN_LIST")return!1;let r=t.fieldTypes?.get(e.left.field);if(r===void 0||!vd.has(r))return!1;let n=t.fieldOptions?.get(e.left.field);return n===void 0?!1:e.right.values.every(i=>i.type==="STRING"&&i.value!==""&&n.has(i.value))}function Ud(e,t){return!Md(e.left,t)||e.right.type!=="NUMBER"?!1:e.op==="="||e.op===">"||e.op==="<"||e.op===">="||e.op==="<="}function Md(e,t){if(e.type!=="FIELD"||e.field!=="$id")return!1;let r=t.tableAlias??null;return e.tableAlias===r?!0:t.allowUnqualifiedFields===!0&&e.tableAlias===null}function Ys(e,t){return e.left.type!=="FIELD"||e.left.field==="$id"||!Ro(e.left,t)||e.right.type!=="NUMBER"?!1:e.op==="="?!0:(e.op==="<"||e.op===">")&&/^[+-]?\d+$/.test(G(e.right))&&Number.isSafeInteger(e.right.value)}function js(e,t){return e.left.type!=="FIELD"||e.left.field==="$id"||!Ro(e.left,t)||e.op!=="IN"&&e.op!=="NOT_IN"||e.right.type!=="IN_LIST"||e.right.values.length===0?!1:e.right.values.every(r=>r.type==="STRING"&&r.value!=="")}function Ro(e,t){let r=t.tableAlias??null;return e.tableAlias===r?!0:t.allowUnqualifiedFields===!0&&e.tableAlias===null}function mo(e,t={}){let r=e!==null&&t.extractCondition!==!1?er(e,t):null,n=new Set;tr(r,n);let i=new Set;return tr(e,i),{condition:r,appliedKlikes:n,allKlikes:[...i]}}function rr(e,t={}){let n={allowKlike:e.joins.every(p=>p.type==="INNER"),allowUnresolvedKlikeVariables:t.allowUnresolvedVariables},i=!e.from.subtableCode&&e.from.cteName===null,o=e.joins.length===0||e.from.alias!==null,a=mo(e.where,{...n,extractCondition:i&&o,tableAlias:e.from.alias??void 0,allowUnqualifiedFields:e.joins.length===0,fieldTypes:t.fieldTypesByApp?.get(e.from.appId),fieldOptions:t.fieldOptionsByApp?.get(e.from.appId)}),s=a.condition,l=new Map;if(e.where!==null)for(let p of e.joins){if(!p.table.alias||p.table.subtableCode||p.table.cteName!==null)continue;let c=er(e.where,{...n,tableAlias:p.table.alias,fieldTypes:t.fieldTypesByApp?.get(p.table.appId),fieldOptions:t.fieldOptionsByApp?.get(p.table.appId)});c!==null&&l.set(p.table.alias,c)}let d=new Set(a.appliedKlikes);for(let p of l.values())tr(p,d);return{mainCondition:s,joinConditions:l,appliedKlikes:d,allKlikes:a.allKlikes}}function ho(e){return e.allKlikes.filter(t=>!e.appliedKlikes.has(t))}function tr(e,t){if(e!==null){if(Qt(e)){t.add(e);return}switch(e.type){case"LOGICAL":tr(e.left,t),tr(e.right,t);return;case"NOT":case"GROUP":tr(e.expr,t);return;case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}}var ie=class extends Error{constructor(t){super(`ArgumentError: ${t}`),this.name="ArgumentError"}};function or(e){qs(e)}function yo(e){if(ho(e).length>0)throw new ie("FULL_SCAN \u306E KLIKE / NOT KLIKE \u3092\u5B89\u5168\u306B\u62BC\u3057\u4E0B\u3052\u3089\u308C\u307E\u305B\u3093\u3002OR / NOT \u914D\u4E0B\u3001CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3001LEFT / RIGHT JOIN \u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044")}function qs(e){switch(e.type){case"SELECT":ir(e);return;case"UNION":So(e);return;case"WITH":zs(e);return;case"EXPLAIN":qs(e.query);return;case"CREATE_TEMP_TABLE":Ao(e.query);return;case"SET_VARIABLE":case"DECLARE_VARIABLE":case"ASSERT":nr(e);return;case"UPDATE":if(e.applyBlocks?.length&&!ze(e.where)&&oe(e.where)){go(e.where),nr(e);return}if(pt(e)&&e.subtableCode)throw new ie("KLIKE / NOT KLIKE \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306E WHERE \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");if(!e.applyBlocks?.length&&!e.subtableCode&&oe(e.where)&&!Fd(e,e.where)){go(e.where),nr(e);return}if(pt(e))throw new ie("KLIKE / NOT KLIKE \u306F\u901A\u5E38\u89AA UPDATE \u306E WHERE\u3001\u307E\u305F\u306F APPLY \u8907\u6570\u89AA UPDATE \u306E\u5B89\u5168\u306A\u89AA WHERE \u3060\u3051\u3067\u4F7F\u7528\u3067\u304D\u307E\u3059");return;case"DELETE":if(pt(e)&&e.subtableCode)throw new ie("KLIKE / NOT KLIKE \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB DELETE \u306E WHERE \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");if(!e.subtableCode&&oe(e.where)){go(e.where),nr(e);return}if(pt(e))throw new ie("KLIKE / NOT KLIKE \u306F\u901A\u5E38\u89AA DELETE \u306E WHERE \u3060\u3051\u3067\u4F7F\u7528\u3067\u304D\u307E\u3059");return;case"INSERT":case"INSERT_SELECT":if(pt(e))throw new ie("KLIKE / NOT KLIKE \u306F INSERT / INSERT SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"UPSERT":case"UPSERT_SELECT":if(pt(e))throw new ie("KLIKE / NOT KLIKE \u306F UPSERT / UPSERT SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"REORDER":if(pt(e))throw new ie("KLIKE / NOT KLIKE \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB REORDER \u306E WHERE \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"VALIDATE":if(pt(e))throw new ie("KLIKE / NOT KLIKE \u306F VALIDATE \u306E WHERE / CHECK \u3067\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"SHOW_APPS":case"DESCRIBE":case"DROP_TEMP_TABLE":return}}function go(e){Kn(e,t=>{if(!Qt(t))return;let r=t.right;if(r.type!=="STRING"&&r.type!=="VARIABLE")throw new ie("KLIKE / NOT KLIKE \u306E\u53F3\u8FBA\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u307E\u305F\u306F\u6587\u5B57\u5217\u30D0\u30C3\u30C1\u5909\u6570\u304C\u5FC5\u8981\u3067\u3059");if(r.type==="STRING"&&r.value.includes("%"))throw new ie("KLIKE / NOT KLIKE \u306E\u691C\u7D22\u8A9E\u306B % \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002SQL \u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u691C\u7D22\u306B\u306F LIKE \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044")})}function Ao(e){e.type==="SELECT"?ir(e):e.type==="UNION"?So(e):zs(e)}function So(e){Ao(e.left),ir(e.right)}function zs(e){if(ut(e)){ir(ct(e));return}for(let t of e.ctes)t.query.type==="SELECT"?ir(t.query):t.query.type==="UNION"&&So(t.query);Ao(e.query)}function ir(e){if(xd(e),oe(e.where)&&!(Ce(e)==="SIMPLE"&&e.from.cteName===null&&e.joins.every(r=>r.table.cteName===null))){let r=rr(e,{allowUnresolvedVariables:!0});if(ho(r).length===0){nr(e);return}throw new ie("FULL_SCAN \u306E KLIKE / NOT KLIKE \u306F\u3001\u7269\u7406\u30C6\u30FC\u30D6\u30EB\u306B\u5BFE\u3059\u308B AND \u30EA\u30FC\u30D5\u3068\u3057\u3066\u5FC5\u305A\u62BC\u3057\u4E0B\u3052\u3089\u308C\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002OR / NOT \u914D\u4E0B\u3001CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3001LEFT / RIGHT JOIN \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093")}nr(e)}function xd(e){Kn(e,t=>{if(!Qt(t))return;if(!Fn(e.where,t))throw new ie("KLIKE / NOT KLIKE \u306F SELECT \u306E WHERE \u53E5\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059");let r=t.right;if(r.type!=="STRING"&&r.type!=="VARIABLE")throw new ie("KLIKE / NOT KLIKE \u306E\u53F3\u8FBA\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u307E\u305F\u306F\u6587\u5B57\u5217\u30D0\u30C3\u30C1\u5909\u6570\u304C\u5FC5\u8981\u3067\u3059");if(r.type==="STRING"&&r.value.includes("%"))throw new ie("KLIKE / NOT KLIKE \u306E\u691C\u7D22\u8A9E\u306B % \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002SQL \u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u691C\u7D22\u306B\u306F LIKE \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044")})}function nr(e){Bn(e,t=>{t.type==="SELECT"&&ir(t)},!0)}function pt(e){let t=!1;return Bn(e,r=>{r.type==="BINARY"&&(r.op==="KLIKE"||r.op==="NOT_KLIKE")&&(t=!0)}),t}function Fd(e,t){let r=!1,n=i=>{if(r||i===t||i===null||typeof i!="object")return;if(Array.isArray(i)){for(let a of i)n(a);return}let o=i;if(o.type!=="SELECT"){if(o.type==="BINARY"&&(o.op==="KLIKE"||o.op==="NOT_KLIKE")){r=!0;return}for(let a of Object.values(o))n(a)}};return n(e),r}function Fn(e,t){if(e===null)return!1;if(e===t)return!0;switch(e.type){case"LOGICAL":return Fn(e.left,t)||Fn(e.right,t);case"NOT":case"GROUP":return Fn(e.expr,t);case"BINARY":case"NULL_CHECK":case"EXISTS":return!1;case"BOOLEAN":return!1}}function Kn(e,t){if(Array.isArray(e)){for(let n of e)Kn(n,t);return}if(e===null||typeof e!="object")return;let r=e;(r.type==="BINARY"||r.type==="NULL_CHECK"||r.type==="LOGICAL"||r.type==="NOT"||r.type==="GROUP"||r.type==="EXISTS")&&t(r);for(let n of Object.values(r))n!==e&&Kd(n)||Kn(n,t)}function Bn(e,t,r=!1){if(Array.isArray(e)){for(let i of e)Bn(i,t);return}if(e===null||typeof e!="object")return;let n=e;r||t(n);for(let i of Object.values(n))Bn(i,t)}function Kd(e){return e!==null&&typeof e=="object"&&e.type==="SELECT"}var Xs=Symbol("ksql.groupingRowMeta"),Js=new WeakMap;function Qs(e,t){return Object.defineProperty(e,Xs,{value:{includedCanonicalIds:t},enumerable:!1,configurable:!1,writable:!1}),e}function Bd(e){return e[Xs]}function $d(e){return Bd(e)?.includedCanonicalIds}function Zs(e,t){Js.set(e,t)}function ar(e,t){let r=$d(t);if(!r)throw new Error("internal error: GROUPING() evaluation requires B65 grouping row membership.");let n=Js.get(e);if(!n)throw new Error("internal error: GROUPING() reference was not resolved during B65 planning.");return r.has(n)?"0":"1"}var tl=e=>{if(e.expandedSetCount>64)throw new Error(`ArgumentError: B65 expanded grouping set count ${e.expandedSetCount} exceeds limit ${64} (reason=GROUPING_SET_LIMIT_EXCEEDED).`);if(e.canonicalItemCount>16)throw new Error(`ArgumentError: B65 canonical grouping item count ${e.canonicalItemCount} exceeds limit ${16} (reason=GROUPING_ITEM_LIMIT_EXCEEDED).`)};function Vn(e){return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field}function Io(e){let t=e.indexOf(".");return t>0?{type:"FIELD",tableAlias:e.slice(0,t),field:e.slice(t+1)}:{type:"FIELD",tableAlias:null,field:e}}function Te(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(n=>Te(n,t));return}let r=e;if(!(r.type==="SELECT"||r.type==="SCALAR_SUBQUERY")){if(r.type==="GROUPING_REF"){t.push(r);return}Object.values(r).forEach(n=>Te(n,t))}}function Wn(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(n=>Wn(n,t));return}let r=e;if(!(r.type==="SELECT"||r.type==="SCALAR_SUBQUERY")){if(r.type==="AGGREGATE"||r.type==="AGG_REF"){Te(r.arg,t);return}Object.values(r).forEach(n=>Wn(n,t))}}function Dr(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(i=>Dr(i,t));return}let r=e,n=r.type;if(!(n==="SELECT"||n==="SCALAR_SUBQUERY"||n==="GROUPING_REF"||n==="AGG_REF"||n==="AGG_ARITH")){if(n==="FIELD"&&typeof r.field=="string"){t.push({type:"FIELD",tableAlias:typeof r.tableAlias=="string"?r.tableAlias:null,field:r.field});return}if(n==="FIELD_REF"&&typeof r.field=="string"){t.push(Io(r.field));return}Object.values(r).forEach(i=>Dr(i,t))}}function wo(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(wo);let t=e;return t.type==="AGG_REF"||t.type==="AGG_ARITH"?!0:t.type==="SELECT"||t.type==="SCALAR_SUBQUERY"?!1:Object.values(t).some(wo)}function Gd(e){return!("alias"in e)||e.alias===null?!1:e.type==="AGGREGATE"||e.type==="ARITH_AGG_COL"?!0:e.type==="STRFUNC_COL"||e.type==="SCALAR_VALUE_COL"?wo(e):!1}function Vd(e){return new Set(e.flatMap(t=>"alias"in t&&typeof t.alias=="string"?[t.alias]:[]))}function el(e){return e.tableAlias===null&&/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/.test(e.field)}function Wd(e,t,r){let n=t(e.field);if(!n.physical)throw new Error(`ArgumentError: B65 grouping reference ${Vn(e.field)} must resolve to a physical APP field.`);if(!r.has(n.canonicalId))throw new Error(`ArgumentError: B65 GROUPING argument ${Vn(e.field)} is not present in grouping allItems (reason=B65_GROUPING_ARG_NOT_ITEM).`);Zs(e,n.canonicalId)}function To(e,t,r,n){let i=t(e);if(!i.physical||!r.has(i.canonicalId))throw new Error(`ArgumentError: B65 non-aggregate field ${Vn(e)} in ${n} is not a grouping item (reason=B65_NON_GROUPED_DEPENDENCY).`)}function Hd(e){if(e.type==="GROUPING_KEY")return[];if(e.type==="FIELD_NAME")return[Io(e.name)];let t=[];return Dr(e,t),t}function rl(e){let t=ne(e),r=[];for(let i of e.columns)i.type!=="WINDOW_COL"&&Te(i,r);Te(e.having,r),Te(e.orderBy,r);let n=[];Te(e.where,n),Te(e.joins,n),Wn(e.columns,n),Wn(e.having,n);for(let i of e.columns)i.type==="WINDOW_COL"&&Te(i,n);if(n.length>0)throw new Error("ArgumentError: B65 GROUPING() is not allowed in WHERE, JOIN, window, aggregate arguments, or DML expressions.");if(t.type!=="GROUPING_SETS"){if(r.length>0)throw new Error("ArgumentError: B65 GROUPING() requires GROUP BY ROLLUP or GROUPING SETS.");return}if(e.orderMode==="KINTONE_NATIVE")throw new Error("ArgumentError: B65 KORDER BY is not supported in Phase1.");if(e.columns.some(i=>i.type==="WINDOW_COL"))throw new Error("ArgumentError: B65 window functions are not supported in Phase1.");if(e.columns.some(i=>i.type==="WILDCARD"||i.type==="PARENT_WILDCARD"))throw new Error("ArgumentError: B65 wildcard projection is not supported in Phase1.")}function nl(e,t,r=()=>{}){rl(e);let n=ne(e),i=[];for(let p of e.columns)p.type!=="WINDOW_COL"&&Te(p,i);if(Te(e.having,i),Te(e.orderBy,i),n.type!=="GROUPING_SETS")return null;let o=gs(e,t),a=new Set,s=[];for(let p of o.allItems){let c=p;if(!c.physical)throw new Error(`ArgumentError: B65 grouping item ${Vn(p.field)} must resolve to a physical APP field.`);a.has(c.canonicalId)||(a.add(c.canonicalId),s.push(c))}r({expandedSetCount:n.sets.length,canonicalItemCount:a.size});for(let p of i)Wd(p,t,a);let l=Vd(e.columns);for(let p of e.columns){if(p.type==="GROUPING_COL"||p.type==="AGGREGATE"||p.type==="ARITH_AGG_COL"||p.type==="LITERAL_COL"||p.type==="VARIABLE_COL"||p.type==="SCALAR_SUBQUERY_COL")continue;let c=[];p.type==="FIELD"?c.push(Io(p.field)):Dr(p,c);for(let u of c)To(u,t,a,"SELECT")}if(e.having){let p=[];Dr(e.having,p);for(let c of p)c.tableAlias===null&&l.has(c.field)||el(c)||To(c,t,a,"HAVING")}for(let p of e.orderBy)for(let c of Hd(p.key))c.tableAlias===null&&l.has(c.field)||el(c)||To(c,t,a,"ORDER BY");let d=new Set;for(let p of s)d.add(p.directKey),p.unqualifiedBridgeKey!==null&&d.add(p.unqualifiedBridgeKey);for(let p of e.columns){if(!Gd(p))continue;let c="alias"in p?p.alias:null;if(c!==null&&d.has(c))throw new Error(`ArgumentError: B65 aggregate alias ${c} collides with a grouping runtime key (reason=B65_AGGREGATE_ALIAS_COLLISION).`)}return o}var Yd=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME","CREATOR","MODIFIER"]),jd=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]);function z(e){let t;e.fieldType==="RECORD_NUMBER"||e.fieldType==="__ID__"?t="recordNumber":e.fieldType==="NUMBER"?t="number":e.fieldType==="CALC"?t=e.sortKind==="number"?"number":"string":jd.has(e.fieldType)?t="option":Yd.has(e.fieldType)?t="string":t="unsupported";let r=e.optionOrder?new Map(Object.entries(e.optionOrder)):void 0;return{fieldType:e.fieldType,compareMode:t,inSubtable:e.inSubtable===!0,requiresCollectionOperators:e.inSubtable===!0||e.requiresCollectionOperators===!0,...r&&r.size>0?{optionOrder:r}:{}}}function x(e,t=e==="number"?"KSQL_NUMBER":"KSQL_STRING"){return{fieldType:t,compareMode:e,inSubtable:!1,requiresCollectionOperators:!1}}function sr(e,t,r){return{...e,source:{appId:t,fieldCode:r}}}function Hn(e,t){if(e===t)return!0;if(!e||!t||e.fieldType!==t.fieldType||e.compareMode!==t.compareMode||e.inSubtable!==t.inSubtable||e.requiresCollectionOperators!==t.requiresCollectionOperators||e.source?.appId!==t.source?.appId||e.source?.fieldCode!==t.source?.fieldCode)return!1;let r=e.optionOrder,n=t.optionOrder;if(r===n)return!0;if(!r||!n||r.size!==n.size)return!1;for(let[i,o]of r)if(n.get(i)!==o)return!1;return!0}function dt(e,t){let r=e[Symbol.iterator](),n=t[Symbol.iterator]();for(;;){let i=r.next(),o=n.next();if(i.done||o.done)return i.done&&o.done?0:i.done?-1:1;let a=i.value.codePointAt(0)??0,s=o.value.codePointAt(0)??0;if(a<s)return-1;if(a>s)return 1}}function qd(e,t){return e<t?-1:e>t?1:0}function il(e){if(e==="")return{band:0};let t=Ae(e);if(t!==null)return{band:2,value:t};let r=Number(e);return r===Number.NEGATIVE_INFINITY?{band:1}:r===Number.POSITIVE_INFINITY?{band:3}:e==="NaN"?{band:4}:{band:5,value:e}}function zd(e,t){let r=il(e),n=il(t);return r.band!==n.band?r.band<n.band?-1:1:r.band===2&&n.band===2?On(r.value,n.value):r.band===5&&n.band===5?dt(r.value,n.value):0}function ol(e,t){if(e==="")return{empty:!0,normalizedId:"",display:e};let r=/^\d+$/.test(e)?e:t?/-(\d+)$/.exec(e)?.[1]:void 0;if(r===void 0)throw new Error(`ArgumentError: invalid ${t?"RECORD_NUMBER":"$id"} value: ${e}`);return{empty:!1,normalizedId:r.replace(/^0+(?=\d)/,""),display:e}}function Xd(e,t,r){let n=ol(e,r),i=ol(t,r);if(n.empty||i.empty)return n.empty===i.empty?0:n.empty?-1:1;if(n.normalizedId.length!==i.normalizedId.length)return n.normalizedId.length<i.normalizedId.length?-1:1;let o=dt(n.normalizedId,i.normalizedId);return o!==0?o:dt(n.display,i.display)}function Jd(e,t){if(e==="")return[];if(t!=="CHECK_BOX"&&t!=="MULTI_SELECT")return[e];try{let r=JSON.parse(e);return Array.isArray(r)?r.map(n=>String(n??"")):[e]}catch{return[e]}}function al(e,t){let r=t.optionOrder??new Map,i=[...new Set(Jd(e,t.fieldType))].map(o=>{let a=r.get(o);return a===void 0?{knownBand:1,rank:0,label:o}:{knownBand:0,rank:a,label:o}});return i.sort(sl),i}function sl(e,t){return e.knownBand!==t.knownBand?e.knownBand<t.knownBand?-1:1:e.rank!==t.rank?e.rank<t.rank?-1:1:dt(e.label,t.label)}function Qd(e,t,r){let n=al(e,r),i=al(t,r),o=Math.min(n.length,i.length);for(let a=0;a<o;a++){let s=sl(n[a],i[a]);if(s!==0)return s}return n.length<i.length?-1:n.length>i.length?1:0}function It(e,t,r){switch(r.compareMode){case"string":return dt(e,t);case"number":return zd(e,t);case"recordNumber":return Xd(e,t,r.fieldType==="RECORD_NUMBER");case"option":return Qd(e,t,r);case"unsupported":throw new Error(`ArgumentError: values of type ${r.fieldType} cannot be compared.`)}}function bt(e,t,r,n=x("string")){let i=It(t,r,n);switch(e){case"=":return i===0;case"!=":case"<>":return i!==0;case">":return i>0;case"<":return i<0;case">=":return i>=0;case"<=":return i<=0}}function ll(e,t){if(t==="least"&&e.includes(""))return"";let r=t==="greatest"?e.filter(o=>o!==""):[...e];if(r.length===0)return"";let n=r.every(o=>!Number.isNaN(Number(o))),i=(o,a)=>{if(n){let s=Ae(o),l=Ae(a),d=s!==null&&l!==null?On(s,l):qd(Number(o),Number(a));if(d!==0)return d}return dt(o,a)};return r.reduce((o,a)=>{let s=i(a,o);return t==="greatest"?s>0?a:o:s<0?a:o})}function ee(e,t){if(e.type==="NUMBER")return e.value;if(e.type==="FIELD_REF")return Number(Xe(t,e.field));if(e.type==="STRING_FUNC")return Number(te(e,t));let r=ee(e.left,t),n=ee(e.right,t);switch(e.op){case"+":return r+n;case"-":return r-n;case"*":return r*n;case"/":return n!==0?r/n:NaN;case"%":return n!==0?r%n:NaN}}function ae(e,t,r,n){switch(e.type){case"STRING":return e.value;case"NUMBER":return e.value;case"FIELD":return Xe(t,e.tableAlias?`${e.tableAlias}.${e.field}`:e.field);case"VARIABLE":throw new Error(`ArgumentError: unresolved variable @${e.name} reached scalar evaluator.`);case"STRING_FUNC":return te(e,t,r,n);case"CASE_WHEN":return we(e,t,r,n);case"CONCAT_OP":return te({type:"STRING_FUNC",func:"CONCAT",args:[e.left,e.right]},t,r,n);case"SCALAR_ARITH":{let i=Number(ae(e.left,t,r,n)),o=Number(ae(e.right,t,r,n));switch(e.op){case"+":return i+o;case"-":return i-o;case"*":return i*o;case"/":return o!==0?i/o:NaN;case"%":return o!==0?i%o:NaN}}}}function ft(e,t,r,n){switch(e.type){case"CASE_WHEN":return dl(e,t,r,n);case"SCALAR_ARITH":{let i=ft(e.left,t,r,n),o=ft(e.right,t,r,n);if(i===null||o===null)return null;let a=Number(i),s=Number(o);switch(e.op){case"+":return a+s;case"-":return a-s;case"*":return a*s;case"/":return s!==0?a/s:NaN;case"%":return s!==0?a%s:NaN}}case"CONCAT_OP":{let i=ft(e.left,t,r,n),o=ft(e.right,t,r,n);return`${i??""}${o??""}`}default:return ae(e,t,r,n)}}function Yn(e,t,r){let n=Math.pow(10,r),i=Math[e](t*n)/n;return r>0?String(parseFloat(i.toFixed(r))):String(i)}function Zd(e){return e>=55296&&e<=56319}function ef(e){return e>=56320&&e<=57343}function qn(e,t){return t>0&&t<e.length&&Zd(e.charCodeAt(t-1))&&ef(e.charCodeAt(t))}function ul(e,t){if(Number.isNaN(e)||e===Number.NEGATIVE_INFINITY)return 0;if(e===Number.POSITIVE_INFINITY)return t;let r=Math.trunc(e);return r<0?Math.max(t+r,0):Math.min(r,t)}function Po(e,t){let r=Math.min(Math.max(0,t),e.length);return qn(e,r)&&(r-=1),e.slice(0,r)}function tf(e,t){let r=Math.max(0,e.length-t);return qn(e,r)&&(r+=1),e.slice(r)}function rf(e,t,r){let n=ul(t,e.length),i=ul(r,e.length);return i<=n?"":(qn(e,n)&&(n+=1),qn(e,i)&&(i-=1),e.slice(n,Math.max(n,i)))}function nf(e,t){let r=e.repeat(Math.ceil(t/e.length));return Po(r,t)}var of=200,vr=new Map;function af(e){if(/[^ims]/.test(e))throw new Error("ArgumentError: regular expression flags may contain only i, m, or s.");if(new Set(e).size!==e.length)throw new Error("ArgumentError: regular expression flags must not contain duplicates.");return`${e}u`}function bo(e,t,r=!1){let n=af(t)+(r?"g":""),i=`${e}\0${n}`,o=vr.get(i);if(o!==void 0)return o.lastIndex=0,o;let a;try{a=new RegExp(e,n)}catch(s){let l=s instanceof Error?s.message:String(s);throw new Error(`ArgumentError: invalid regular expression: ${l}`)}if(vr.size>=of){let s=vr.keys().next().value;s!==void 0&&vr.delete(s)}return vr.set(i,a),a}function sf(e){if(e.includes("$`")||e.includes("$'"))throw new Error("ArgumentError: REGEXP_REPLACE replacement must not contain $` or $'.")}function lf(e){if(e===void 0)return 0;if(!/^\d+$/.test(e))throw new Error("ArgumentError: REGEXP_REPLACE occurrence must be a non-negative integer.");return Number(e)}function uf(e,t,r,n){let i="";for(let o=0;o<e.length;o+=1){let a=e[o];if(a!=="$"||o+1>=e.length){i+=a;continue}let s=e[o+1];if(s==="$"){i+="$",o+=1;continue}if(s==="&"){i+=t,o+=1;continue}if(s==="<"&&n!==void 0){let l=e.indexOf(">",o+2);if(l>=0){i+=n[e.slice(o+2,l)]??"",o=l;continue}}if(/\d/.test(s)){let l=e[o+2];if(l!==void 0&&/\d/.test(l)){let p=Number(s+l);if(p>=1&&p<=r.length){i+=r[p-1]??"",o+=2;continue}}let d=Number(s);if(d>=1&&d<=r.length){i+=r[d-1]??"",o+=1;continue}}i+="$"}return i}function cf(e,t,r,n){let i=0;return e.replace(t,(o,...a)=>{if(i+=1,i!==n)return o;let s=a[a.length-1],l=typeof s=="object"&&s!==null,d=a.length-(l?3:2),p=a.slice(0,d);return uf(r,o,p,l?s:void 0)})}function te(e,t,r,n){let i=e.args.map(o=>gf(o,t,r,n));switch(e.func){case"UPPER":return(i[0]??"").toUpperCase();case"LOWER":return(i[0]??"").toLowerCase();case"TRIM":return(i[0]??"").trim();case"LTRIM":return(i[0]??"").trimStart();case"RTRIM":return(i[0]??"").trimEnd();case"LENGTH":return String((i[0]??"").length);case"LENGTH_CHAR":return pe("LENGTH_CHAR",i,1,1),String([...i[0]??""].length);case"SUBSTRING":{let o=i[0]??"",a=Math.max(0,Number(i[1]??"1")-1),s=i[2]!==void 0?Number(i[2]):void 0;return rf(o,a,s!==void 0?a+s:o.length)}case"LEFT":{pe("LEFT",i,2,2);let o=i[0],a=Math.trunc(Number(i[1]));return Number.isNaN(a)||a<=0?"":Po(o,a)}case"RIGHT":{pe("RIGHT",i,2,2);let o=i[0],a=Math.trunc(Number(i[1]));return Number.isNaN(a)||a<=0?"":tf(o,a)}case"INSTR":return pe("INSTR",i,2,2),String(i[0].indexOf(i[1])+1);case"LPAD":case"RPAD":{pe(e.func,i,2,3);let o=i[0],a=Math.trunc(Number(i[1]));if(Number.isNaN(a)||a<=0)return"";if(o.length>=a)return Po(o,a);let s=i[2]??" ";if(s==="")return o;let l=nf(s,a-o.length);return e.func==="LPAD"?l+o:o+l}case"GREATEST":case"LEAST":return pe(e.func,i,2),ll(i,e.func==="GREATEST"?"greatest":"least");case"CONCAT":return i.join("");case"REPLACE":{let o=i[0]??"",a=i[1]??"",s=i[2]??"";return a===""?o:o.split(a).join(s)}case"REGEXP_LIKE":return pe("REGEXP_LIKE",i,2,3),bo(i[1],i[2]??"").test(i[0])?"1":"0";case"REGEXP_REPLACE":{pe("REGEXP_REPLACE",i,3,5),sf(i[2]);let o=lf(i[4]),a=bo(i[1],i[3]??"",!0);return o===0?i[0].replace(a,i[2]):cf(i[0],a,i[2],o)}case"REGEXP_SUBSTR":return pe("REGEXP_SUBSTR",i,2,3),bo(i[1],i[2]??"").exec(i[0])?.[0]??"";case"TRANSLATE":{pe("TRANSLATE",i,3,3);let o=[...i[1]],a=[...i[2]];if(o.length!==a.length)throw new Error(`ArgumentError: TRANSLATE \u306E from \u3068 to \u306F\u540C\u3058\u6587\u5B57\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08from=${o.length}, to=${a.length}\uFF09`);let s=new Map;return o.forEach((l,d)=>{s.has(l)||s.set(l,a[d])}),[...i[0]].map(l=>s.get(l)??l).join("")}case"COALESCE":return i.find(o=>o!=="")??"";case"NULLIF":return(i[0]??"")===(i[1]??"")?"":i[0]??"";case"ISNULL":return(i[0]??"")!==""?i[0]??"":i[1]??"";case"ROUND":return Yn("round",Number(i[0]??"0"),Number(i[1]??"0"));case"FLOOR":return Yn("floor",Number(i[0]??"0"),Number(i[1]??"0"));case"CEIL":return Yn("ceil",Number(i[0]??"0"),Number(i[1]??"0"));case"TRUNCATE":return pe("TRUNCATE",i,1,2),Yn("trunc",Number(i[0]),Number(i[1]??"0"));case"CAST":{let o=i[0]??"";if((i[1]??"TEXT")==="NUMBER"){let s=Number(o);return isNaN(s)?o:String(s)}return o}case"FORMAT":{let o=Number(i[0]??"0"),a=i[1]??"0";return mf(o,a)}case"YEAR":{let o=i[0]??"";return o.length>=4?String(parseInt(o.slice(0,4),10)):""}case"MONTH":{let o=i[0]??"";return o.length>=7?String(parseInt(o.slice(5,7),10)):""}case"DAY":{let o=i[0]??"";return o.length>=10?String(parseInt(o.slice(8,10),10)):""}case"DAYOFWEEK":return pe(e.func,i,1,1),jn(i[0])?String(No(i[0])+1):"";case"QUARTER":return pe(e.func,i,1,1),jn(i[0])?String(Math.ceil(Number(i[0].slice(5,7))/3)):"";case"WEEK":return pe(e.func,i,1,1),jn(i[0])?String(pl(i[0])):"";case"DATE_FORMAT":return df(i[0]??"",i[1]??"");case"DATEDIFF":return ff(i[0]??"",i[1]??"");case"DATE_ADD":return Ef(i[0]??"",Number(i[1]??"0"),(i[2]??"DAY").toUpperCase());case"LAST_DAY":return pe("LAST_DAY",i,1,1),Rf(i[0]);case"ABS":return String(Math.abs(Number(i[0]??"0")));case"MOD":{let o=Number(i[0]??"0"),a=Number(i[1]??"0");return String(a!==0?o%a:NaN)}case"POWER":return String(Math.pow(Number(i[0]??"0"),Number(i[1]??"0")));case"SQRT":return String(Math.sqrt(Number(i[0]??"0")));case"CURRENT_DATE":{let o=new Date,a=o.getFullYear(),s=String(o.getMonth()+1).padStart(2,"0"),l=String(o.getDate()).padStart(2,"0");return`${a}-${s}-${l}`}case"CURRENT_TIMESTAMP":return new Date().toISOString()}}function pe(e,t,r,n=Number.POSITIVE_INFINITY){if(t.length>=r&&t.length<=n)return;let i=r===n?String(r):n===Number.POSITIVE_INFINITY?`${r} or more`:`${r} to ${n}`;throw new Error(`ArgumentError: ${e} expects ${i} argument(s).`)}function kr(e){return{y:e.slice(0,4)||"0000",mo:e.slice(5,7)||"01",d:e.slice(8,10)||"01",h:e.length>=13?e.slice(11,13):"00",mi:e.length>=16?e.slice(14,16):"00",sec:e.length>=19?e.slice(17,19):"00"}}function zn(e){let t=new Date(0);return t.setUTCHours(0,0,0,0),t.setUTCFullYear(Number(e.slice(0,4)),Number(e.slice(5,7))-1,Number(e.slice(8,10))),t}function jn(e){let t=e.slice(0,10);if(!/^\d{4}-\d{2}-\d{2}$/.test(t))return!1;let r=zn(t);return r.getUTCFullYear()===Number(t.slice(0,4))&&r.getUTCMonth()+1===Number(t.slice(5,7))&&r.getUTCDate()===Number(t.slice(8,10))}function No(e){return zn(e).getUTCDay()}function cl(e){let t=zn(e),r=t.getUTCDay()||7;return t.setUTCDate(t.getUTCDate()+4-r),t}function pf(e){return cl(e).getUTCFullYear()}function pl(e){let t=cl(e),r=t.getUTCFullYear(),n=zn(`${String(r).padStart(4,"0")}-01-04`),i=n.getUTCDay()||7;return n.setUTCDate(n.getUTCDate()+4-i),1+Math.round((t.getTime()-n.getTime())/(7*864e5))}function df(e,t){if(!e||e.length<10)return"";let{y:r,mo:n,d:i,h:o,mi:a,sec:s}=kr(e),l=jn(e);return t.replace(/%[YymcdeHiswavG]/g,d=>{switch(d){case"%Y":return r;case"%y":return r.slice(2);case"%m":return n;case"%c":return String(parseInt(n,10));case"%d":return i;case"%e":return String(parseInt(i,10));case"%H":return o;case"%i":return a;case"%s":return s;case"%w":return l?String(No(e)):"";case"%a":return l?["\u65E5","\u6708","\u706B","\u6C34","\u6728","\u91D1","\u571F"][No(e)]:"";case"%v":return l?String(pl(e)).padStart(2,"0"):"";case"%G":return l?String(pf(e)).padStart(4,"0"):"";default:return d}})}function ff(e,t){if(e.length<10||t.length<10)return"0";let r=kr(e),n=kr(t),i=Date.UTC(+r.y,+r.mo-1,+r.d),o=Date.UTC(+n.y,+n.mo-1,+n.d);return String(Math.round((i-o)/864e5))}function Ef(e,t,r){if(r!=="YEAR"&&r!=="MONTH"&&r!=="DAY")throw new Error("ArgumentError: DATE_ADD unit must be YEAR, MONTH, or DAY.");if(!e||e.length<10)return e;let{y:n,mo:i,d:o}=kr(e),a=new Date(Date.UTC(+n,+i-1,+o));switch(r){case"YEAR":a.setUTCFullYear(a.getUTCFullYear()+t);break;case"MONTH":a.setUTCMonth(a.getUTCMonth()+t);break;case"DAY":a.setUTCDate(a.getUTCDate()+t);break}let s=String(a.getUTCFullYear()).padStart(4,"0"),l=String(a.getUTCMonth()+1).padStart(2,"0"),d=String(a.getUTCDate()).padStart(2,"0");return`${s}-${l}-${d}`}function Rf(e){if(!e||e.length<10)return e;let{y:t,mo:r}=kr(e),n=new Date(Date.UTC(+t,+r,0)),i=String(n.getUTCFullYear()).padStart(4,"0"),o=String(n.getUTCMonth()+1).padStart(2,"0"),a=String(n.getUTCDate()).padStart(2,"0");return`${i}-${o}-${a}`}function mf(e,t){if(/^-?\d+$/.test(t.trim()))return hf(e,Math.max(0,Number(t)));let r=t.endsWith("%"),n=t.includes(","),i=r?e*100:e,o=t.replace(/%$/,"").lastIndexOf("."),a=o>=0?t.slice(o+1).replace(/%$/,""):"",s=(a.match(/0/g)??[]).length,l=(a.match(/#/g)??[]).length,d=s+l,p=i.toFixed(d),[c,u=""]=p.split(".");l>0&&(u=u.replace(/0+$/,""));let f=n?c.replace(/\B(?=(\d{3})+(?!\d))/g,","):c,E=u?`${f}.${u}`:f;return r?E+"%":E}function hf(e,t){let r=e.toFixed(t),[n,i]=r.split("."),o=n.replace(/\B(?=(\d{3})+(?!\d))/g,",");return i?`${o}.${i}`:o}function gf(e,t,r,n){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?"":e.type==="NUMBER"?G(e):String(ae(e,t,r,n))}function Xe(e,t){let r=e[t];if(r!==void 0)return r;let n=t.indexOf(".");if(n>0){let i=e[t.slice(n+1)];if(i!==void 0)return i}return""}function q(e,t,r,n,i){switch(e.type){case"BOOLEAN":return e.value;case"BINARY":return yf(e,t,r,n,i);case"NULL_CHECK":return bf(e,t);case"LOGICAL":return Pf(e,t,r,n,i);case"NOT":return!q(e.expr,t,r,n,i);case"GROUP":return q(e.expr,t,r,n,i);case"EXISTS":{let o=e.resolved;return e.not?!o:o}}}function yf(e,t,r,n,i){if(e.op==="KLIKE"||e.op==="NOT_KLIKE"){if(n?.has(e))return!0;throw new Error("KLIKE / NOT KLIKE \u306F\u62BC\u3057\u4E0B\u3052\u6E08\u307F\u96C6\u5408\u306B\u542B\u307E\u308C\u306A\u3044\u305F\u3081 JavaScript \u5074\u3067\u306F\u8A55\u4FA1\u3067\u304D\u307E\u305B\u3093")}let o=Al(e.left,t,r,i),a=e.left.type==="FIELD"?r?.(e.left):void 0,s=Sf(e.left,a,i);return Af(e.op,o,e.right,t,a,r,s,i)}function Af(e,t,r,n,i,o,a=x("string"),s){if(e==="IN"||e==="NOT_IN"){let d=null;if(r.type==="IN_LIST"&&(If(r.values),d=new Set(r.values.map(c=>c.type==="NUMBER"?i==="NUMBER"?G(c):String(c.value):c.value))),r.type==="SUBQUERY_IN_LIST"&&(d=r.resolved),d===null)return e==="NOT_IN";let p=wf(t,d,i);return e==="IN"?p:!p}if(e==="LIKE"){let d=Co(r,n,o);return yl(t,d)}if(e==="NOT_LIKE"){let d=Co(r,n,o);return!yl(t,d)}if(e==="KLIKE"||e==="NOT_KLIKE")throw new Error("KLIKE / NOT KLIKE \u306F JavaScript \u5074\u3067\u306F\u8A55\u4FA1\u3067\u304D\u307E\u305B\u3093\uFF08SIMPLE SELECT \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059\uFF09");let l=Co(r,n,o,s);return bt(e,t,l,a)}var fl=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function Sf(e,t,r){if(e.type==="FIELD")return r?.(e)??(t?z({fieldType:t}):x("string"));if(e.type==="ARITH_FIELD")return x("number");if(e.type==="FUNC_FIELD")return x(fl.has(e.expr.func)?"number":"string");if(e.type==="CASE_FIELD"){let i=[...e.expr.branches.map(o=>o.result),...e.expr.elseResult?[e.expr.elseResult]:[]].map(o=>{if(o.type==="NUMBER"||o.type==="ARITH")return x("number");if(o.type==="STRING_FUNC")return x(fl.has(o.func)?"number":"string");if(o.type==="FIELD_REF"){let a=o.field.indexOf("."),s=a>0?{type:"FIELD",tableAlias:o.field.slice(0,a),field:o.field.slice(a+1)}:{type:"FIELD",tableAlias:null,field:o.field};return r?.(s)??x("string")}return x("string")});if(i.length>0&&i.every(o=>o.compareMode===i[0].compareMode))return i[0]}return e.type==="GROUPING_FIELD"?x("number"):x("string")}var El=new Set(["CHECK_BOX","MULTI_SELECT"]),Rl=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE"]),Tf=new Set(["CREATOR","MODIFIER"]);function wf(e,t,r){let n=()=>t.has(e);if(r===void 0)return n();if(r==="NUMBER"){let o=x("number");return[...t].some(a=>bt("=",e,a,o))}let i;if(El.has(r)||Rl.has(r)||Tf.has(r))try{i=JSON.parse(e)}catch{return n()}else return n();return El.has(r)?!Array.isArray(i)||!i.every(o=>typeof o=="string")?n():i.length===0&&t.has("")?!0:i.some(o=>t.has(o)):Rl.has(r)?!Array.isArray(i)||!i.every(ml)?n():i.length===0&&t.has("")?!0:i.some(o=>t.has(o.code)):ml(i)?t.has(i.code):n()}function ml(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&typeof e.code=="string"}function If(e){let t=e.find(r=>r.type==="VARIABLE");if(t?.type==="VARIABLE")throw new Error(`ParseError: unresolved batch variable @${t.name}.`)}function bf(e,t){let r=Al(e.field,t);return e.not?r!=="":r===""}function Pf(e,t,r,n,i){return e.op==="AND"?q(e.left,t,r,n,i)&&q(e.right,t,r,n,i):q(e.left,t,r,n,i)||q(e.right,t,r,n,i)}function Al(e,t,r,n){if(e.type==="FUNC_FIELD")return te(e.expr,t);if(e.type==="ARITH_FIELD")return String(ee(e.expr,t));if(e.type==="CASE_FIELD")return we(e.expr,t,r,n);if(e.type==="GROUPING_FIELD")return ar(e.ref,t);let i=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return Xe(t,i)}function Co(e,t,r,n){switch(e.type){case"VARIABLE":throw new Error(`ParseError: unresolved batch variable @${e.name}.`);case"VARIABLE_IN_LIST":throw new Error(`ParseError: unresolved batch array variable @${e.name}.`);case"STRING":return e.value;case"NUMBER":return G(e);case"KINTONE_FUNC":return Nf(e.name);case"IN_LIST":return"";case"SUBQUERY_IN_LIST":return"";case"SCALAR_SUBQUERY":return e.resolved;case"ARITH_VALUE":return e.expr.type==="FIELD_REF"?Xe(t,e.expr.field):e.expr.type==="STRING_FUNC"?te(e.expr,t):String(ee(e.expr,t));case"CASE_VALUE":return we(e.expr,t,r,n);case"ARRAY":return e.elements.map(i=>i.value).join(",")}}function we(e,t,r,n){for(let i of e.branches)if(q(i.condition,t,r,void 0,n))return gl(i.result,t,r,n);return e.elseResult!==null?gl(e.elseResult,t,r,n):""}function dl(e,t,r,n){for(let i of e.branches)if(q(i.condition,t,r,void 0,n))return hl(i.result,t,r,n);return e.elseResult===null?null:hl(e.elseResult,t,r,n)}function hl(e,t,r,n){return e.type==="ARRAY"?e.elements.map(i=>i.value).join(","):e.type==="FIELD_REF"?t[e.field]??"":e.type==="ARITH"?ee(e,t):ft(e,t,r,n)}function gl(e,t,r,n){return e.type==="ARRAY"?e.elements.map(i=>i.value).join(","):e.type==="FIELD_REF"?t[e.field]??"":e.type==="ARITH"?String(ee(e,t)):String(ae(e,t,r,n))}function Sl(e){let t=new Date;switch(e){case"TODAY":{let r=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),i=String(t.getDate()).padStart(2,"0");return`${r}-${n}-${i}`}case"NOW":return t.toISOString();case"LOGINUSER":return""}}function Nf(e){if(Ne(e))throw new Error(`${e}: ${je}`);switch(e){case"TODAY":case"NOW":case"LOGINUSER":return Sl(e);default:throw new Error(`InternalError: unexpected KINTONE_FUNC name: ${e}`)}}var Xn=new Map,Cf=200;function yl(e,t){if(!Ms(t))return e.includes(t);let r=Xn.get(t);if(!r){let n="^";for(let i=0;i<t.length;i++){let o=t[i];o==="%"?n+=".*":o==="_"?n+=".":n+=o.replace(/[.+*?^${}()|[\]\\]/g,"\\$&")}n+="$",r=new RegExp(n,"u"),Xn.size>=Cf&&Xn.clear(),Xn.set(t,r)}return r.test(e)}function lr(e){return wl(e)}function Tl(e){return wl(e.flatMap(t=>t.rules.map(r=>r.condition)))}function wl(e){let t=[],r=new Set,n=o=>{if(Array.isArray(o)){o.forEach(n);return}if(o===null||typeof o!="object")return;let a=o;if(a.type==="EXISTS"||a.type==="SUBQUERY_IN_LIST"||a.type==="SCALAR_SUBQUERY")throw se("CHECK \u306B\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");if(a.type==="FIELD"&&typeof a.field=="string")i(typeof a.tableAlias=="string"?a.tableAlias:null,a.field);else if(a.type==="FIELD_REF"&&typeof a.field=="string"){let s=a.field.indexOf(".");i(s>0?a.field.slice(0,s):null,s>0?a.field.slice(s+1):a.field)}for(let s of Object.values(a))n(s)},i=(o,a)=>{if(/^(COUNT|SUM|AVG|MIN|MAX|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/i.test(a))throw se("CHECK \u306B\u96C6\u7D04\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");let s=`${o??""}\0${a}`;r.has(s)||(r.add(s),t.push({tableAlias:o,field:a}))};return n(e),t}function se(e){return new A(e,{kind:"EOF",value:"CHECK",pos:0})}function Jn(e,t,r){let n=[];return e.forEach((i,o)=>{for(let a of i.rules){if(!q(a.condition,t,r))continue;let s=ae(a.message,t);n.push({groupIndex:o,message:s==null?"":String(s)});break}}),n}function Lo(e){if(st(e))throw new j("UPDATE / DELETE \u306E WHERE \u306B LIKE / NOT LIKE \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002LIKE \u306F kSQL \u306E\u610F\u5473\u8AD6\u306B\u5F93\u3063\u3066 JS \u3067\u8A55\u4FA1\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u304C\u3001\u89AA\u30EC\u30B3\u30FC\u30C9 DML \u306B\u306F JS \u8A55\u4FA1\u7D4C\u8DEF\u304C\u306A\u3044\u305F\u3081\u3001\u5B89\u5168\u4E0A\u62D2\u5426\u3057\u307E\u3057\u305F\u3002SELECT \u3067\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u3092\u78BA\u8A8D\u3057\u3001IN \u307E\u305F\u306F\u5B8C\u5168\u4E00\u81F4\u3067\u5BFE\u8C61\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}var Of=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),Lf=new Set(["CHECK_BOX","MULTI_SELECT"]);function Zn(e,t=new Map){let r=e.values.map(n=>_f(e.fields,n,t));return Fr(r,100).map(n=>({app:e.appId,records:n}))}function _f(e,t,r){let n={};return e.forEach((i,o)=>{let a=t[o];a.type==="CASE_VALUE"?n[i]={value:Et(a.expr,{},r.get(i))}:n[i]={value:Je(a,r.get(i))}}),n}function Mr(e){Lo(e.where);let t=Ml(e);return{app:e.appId,query:W(e.where),fields:["$id",...t],totalCount:!1}}function xr(e,t,r=new Map){let n=Df(e.assignments,r);return Fr(t,100).map(i=>({app:e.appId,records:i.map(o=>({id:o,record:n}))}))}function Df(e,t){let r={};for(let{field:n,value:i}of e)i.type==="ARITH"||i.type==="SCALAR_ARITH"||i.type==="CONCAT_OP"||i.type==="CASE_VALUE"||i.type==="STRING_FUNC"||i.type==="SOURCE_FIELD"||(r[n]={value:Je(i,t.get(n))});return r}function Nl(e){return e.assignments.some(t=>t.value.type==="ARITH"||t.value.type==="SCALAR_ARITH"||t.value.type==="CONCAT_OP"||t.value.type==="CASE_VALUE")}function ei(e){return e.assignments.some(t=>t.value.type==="ARITH"||t.value.type==="SCALAR_ARITH"||t.value.type==="CONCAT_OP"||t.value.type==="CASE_VALUE"||t.value.type==="STRING_FUNC")}function _o(e){Lo(e.where);let t=new Set;for(let{value:r}of e.assignments)r.type==="ARITH"?Cl(r,t):r.type==="SCALAR_ARITH"||r.type==="CONCAT_OP"?ur(r,t):r.type==="STRING_FUNC"?Do(r,t):r.type==="CASE_VALUE"&&Ol(r.expr,t);return Ml(e).forEach(r=>t.add(r)),{app:e.appId,query:W(e.where),fields:["$id",...t],totalCount:!1}}function Cl(e,t){Ur(e.left,t),Ur(e.right,t)}function Ur(e,t){e.type==="FIELD_REF"?t.add(e.field):e.type==="ARITH"?Cl(e,t):e.type==="STRING_FUNC"&&Do(e,t)}function Do(e,t){for(let r of e.args)vf(r,t)}function vf(e,t){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"){Oo(e,t);return}ur(e,t)}function ur(e,t){if(e.type==="FIELD"){t.add(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field);return}if(e.type==="STRING_FUNC"){Do(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){ur(e.left,t),ur(e.right,t);return}e.type==="CASE_WHEN"&&Ol(e,t)}function Oo(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&kf(e.arg,t);return}e.type==="AGG_ARITH"&&(Oo(e.left,t),Oo(e.right,t))}function kf(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?Ur(e,t):ur(e,t)}function Il(e,t){if(e.type!=="ARRAY"){if(e.type==="FIELD_REF"||e.type==="ARITH"){Ur(e,t);return}ur(e,t)}}function Ol(e,t){for(let r of e.branches)Qn(r.condition,t),Il(r.result,t);e.elseResult!==null&&Il(e.elseResult,t)}function Qn(e,t){switch(e.type){case"BINARY":e.left.type==="FIELD"?t.add(e.left.field):e.left.type==="ARITH_FIELD"&&Ur(e.left.expr,t);break;case"NULL_CHECK":e.field.type==="FIELD"&&t.add(e.field.field);break;case"LOGICAL":Qn(e.left,t),Qn(e.right,t);break;case"NOT":case"GROUP":Qn(e.expr,t);break;case"EXISTS":case"BOOLEAN":break}}function vo(e,t,r=new Map){let n=t.map(i=>{let o=Number(i.$id.value),a=Ll(i),s={};for(let{field:l,value:d}of e.assignments)s[l]={value:ko(d,a,r.get(l),i)};return{id:o,record:s}});return Fr(n,100).map(i=>({app:e.appId,records:i}))}function ko(e,t,r,n){if(e.type==="ARITH")return String(n?Mo(e,n):ee(e,t));if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP")return String(ae(e,t));if(e.type==="STRING_FUNC")return te(e,t);if(e.type==="CASE_VALUE")return Et(e.expr,t,r);if(e.type==="SOURCE_FIELD")throw new j("SOURCE_FIELD \u306F UPDATE ... FROM \u5C02\u7528\u3067\u3059");return Je(e,r)}function ti(e,t,r){if(e.type==="STRING")return e.value;if(e.type==="NUMBER")return G(e);if(e.type==="ARITH")return String(ee(e,t));if(e.type==="CASE_VALUE")return we(e.expr,t,r);throw new Error(`${e.type} \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`)}var Uf=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);function Uo(e,t,r=new Map){let n=t.map(({target:i,source:o})=>{let a=Number(i.$id?.value);if(!Number.isSafeInteger(a)||a<=0)throw new j("UPDATE ... FROM \u306E\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u304C\u4E0D\u6B63\u3067\u3059");let s=Ll(i),l={};for(let{field:d,value:p}of e.assignments){let c=r.get(d);if(p.type==="SOURCE_FIELD"){if(Uf.has(c??""))throw new j(`UPDATE ... FROM \u306E SOURCE_FIELD \u306F ${c} \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9: ${d}\uFF09`);if(!Object.prototype.hasOwnProperty.call(o,p.field))throw new j(`UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u5217 ${p.field} \u304C\u5B58\u5728\u3057\u307E\u305B\u3093`);let u=o[p.field];if(typeof u!="string")throw new j(`UPDATE ... FROM \u306E SOURCE_FIELD \u306F\u30B9\u30AB\u30E9\u30FC\u5024\u306E\u307F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\uFF08\u5217: ${p.field}\uFF09`);if((c==="NUMBER"||c==="CALC")&&u!==""&&!Number.isFinite(Number(u)))throw new j(`\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9 ${d} \u306B\u5909\u63DB\u3067\u304D\u306A\u3044\u5024\u3067\u3059: ${u}`);l[d]={value:Je({type:"STRING",value:u},c)}}else{if(p.type==="STRING_FUNC")throw new j("UPDATE ... FROM \u306E SET \u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u3092\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");p.type==="ARITH"?l[d]={value:String(Mo(p,i))}:p.type==="SCALAR_ARITH"||p.type==="CONCAT_OP"?l[d]={value:String(ae(p,s))}:p.type==="CASE_VALUE"?l[d]={value:Et(p.expr,s,c)}:l[d]={value:Je(p,c)}}}return{id:a,record:l}});return Fr(n,100).map(i=>({app:e.appId,records:i}))}function Ll(e){return Object.fromEntries(Object.entries(e).map(([t,r])=>[t,typeof r.value=="string"?r.value:JSON.stringify(r.value??"")]))}function Mo(e,t){let r=bl(e.left,t),n=bl(e.right,t);switch(e.op){case"+":return r+n;case"-":return r-n;case"*":return r*n;case"/":if(n===0)throw new j("\u7B97\u8853\u5F0F\u3067\u30BC\u30ED\u9664\u7B97\u304C\u767A\u751F\u3057\u307E\u3057\u305F");return r/n;case"%":if(n===0)throw new j("\u7B97\u8853\u5F0F\u3067\u30BC\u30ED\u9664\u7B97\u304C\u767A\u751F\u3057\u307E\u3057\u305F");return r%n}}function bl(e,t){if(e.type==="NUMBER")return e.value;if(e.type==="ARITH")return Mo(e,t);if(e.type==="STRING_FUNC")throw new j("UPDATE SET \u306E\u7B97\u8853\u5F0F\u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093");let r=t[e.field]?.value??"",n=Number(r);if(Number.isNaN(n))throw new j(`\u7B97\u8853\u5F0F\u306E\u30D5\u30A3\u30FC\u30EB\u30C9 "${e.field}" \u306E\u5024 "${r}" \u306F\u6570\u5024\u3067\u306F\u3042\u308A\u307E\u305B\u3093`);return n}function _l(e){return Lo(e.where),{app:e.appId,query:W(e.where),fields:["$id"],totalCount:!1}}function Dl(e,t){return Fr(t,100).map(r=>({app:e,ids:r}))}function vl(e){return Of.has(e??"")}function Mf(e){return Lf.has(e??"")}function xf(e){if(!e||/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?Z$/.test(e))return e;let t=e.replace(/\//g,"-").replace(" ","T");/T\d{2}:\d{2}$/.test(t)&&(t+=":00");let r=new Date(t);return isNaN(r.getTime())?e:r.toISOString().replace(/\.\d{3}Z$/,"Z")}function Ff(e){return!e||/^\d{4}-\d{2}-\d{2}$/.test(e)?e:e.replace(/\//g,"-")}function kl(e,t){return vl(t)?e===""?[]:e.split(",").map(r=>({code:r.trim()})):Mf(t)?e===""?[]:e.split(",").map(r=>r.trim()):t==="DATETIME"?xf(e):t==="DATE"?Ff(e):e}function Ul(e,t){return vl(t)?e.map(r=>({code:r})):e}function Pl(e,t,r){return e.type==="ARRAY"?Ul(e.elements.map(n=>n.value),r):e.type==="STRING"?kl(e.value,r):e.type==="STRING_FUNC"?te(e,t):e.type==="FIELD_REF"||e.type==="ARITH"?String(ee(e,t)):String(ae(e,t))}function Ml(e){if(!e.checkGroups)return[];let t=`app${e.appId}`.toLowerCase();return[...new Set(lr(e.checkGroups).filter(r=>r.tableAlias===null||r.tableAlias.toLowerCase()===t).map(r=>r.field).filter(r=>r!=="$id"))]}function Et(e,t,r){for(let n of e.branches)if(q(n.condition,t))return Pl(n.result,t,r);return e.elseResult!==null?Pl(e.elseResult,t,r):""}function Je(e,t){let r=xo(e,t);if(!r.ok)throw new j(r.message);return r.value}function xo(e,t){try{return{ok:!0,value:Kf(e,t)}}catch(r){return{ok:!1,message:r instanceof Error?r.message:String(r)}}}function Kf(e,t){switch(e.type){case"VARIABLE":throw new j(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"VARIABLE_IN_LIST":throw new j(`\u672A\u89E3\u6C7A\u306E\u914D\u5217\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"STRING":return kl(e.value,t);case"NUMBER":return G(e);case"ARRAY":return Ul(e.elements.map(r=>r.value),t);case"KINTONE_FUNC":throw new j(`${e.name}() \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`);case"IN_LIST":throw new j("IN_LIST \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");case"ARITH_VALUE":throw new j("\u7B97\u8853\u5F0F\u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");case"CASE_VALUE":throw new j("CASE WHEN \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");case"SUBQUERY_IN_LIST":throw new j("IN (SELECT ...) \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");case"SCALAR_SUBQUERY":throw new j("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093")}}function Fr(e,t){let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}var j=class extends Error{constructor(t){super(t),this.name="DmlConvertError"}};var Fo=new Set(["CHECK_BOX","MULTI_SELECT"]),Bf=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function Kr(e){throw new Error(`ArgumentError: ${e}`)}function xl(e,t,r){let n=$f(r.fieldType,e.field),i=Gf(t,n,e.field),o=new Set(i),a=[],s=new Set,l=new Set;for(let m of e.operations){let g=m.value;g!==""&&(m.kind==="ADD"?(s.has(g)||a.push(g),s.add(g)):l.add(g))}for(let m of s)l.has(m)&&Kr(`APPLY multi-value field ${e.field} has conflicting ADD and REMOVE for ${JSON.stringify(m)}.`);let d=i.filter(m=>!l.has(m)),p=a.filter(m=>!o.has(m)),c=[...d,...p],u=new Set(i.filter(m=>l.has(m))).size,f=new Set,E=new Set,R=e.operations.map(m=>{let g=m.kind==="ADD"?f:E,T=!g.has(m.value);return g.add(m.value),{kind:m.kind,value:m.value,changed:m.value!==""&&T&&(m.kind==="ADD"?!o.has(m.value):o.has(m.value))}}),h=Fo.has(n)?c:c.map(m=>({code:m}));return{field:e.field,fieldType:n,operations:R,postImageValue:h,addedValues:p.length,removedValues:u,changedValues:p.length+u}}function $f(e,t){return Fo.has(e)||Bf.has(e)?e:Kr(`APPLY multi-value target ${t} has unsupported type ${e}.`)}function Gf(e,t,r){if(!Array.isArray(e))return Kr(`APPLY snapshot for ${r} must be an array.`);let n=e.map((i,o)=>Fo.has(t)?typeof i!="string"?Kr(`APPLY snapshot for ${r} must contain string values (item ${o+1}).`):i:typeof i!="object"||i===null||typeof i.code!="string"?Kr(`APPLY snapshot for ${r} must contain {code: string} values (item ${o+1}).`):i.code);return[...new Set(n.filter(i=>i!==""))]}function $(e){throw new Error(`ArgumentError: ${e}`)}function $o(e){let t=e.where;return t.type!=="BINARY"||t.op!=="="||t.left.type!=="FIELD"||t.left.tableAlias!==null||t.left.field!=="$id"||t.right.type!=="NUMBER"||!Number.isSafeInteger(t.right.value)||t.right.value<=0?$("APPLY parent selector must be a single positive $id."):t.right.value}function Qe(e,t){let r=e.applyBlocks;if(!r?.length)return $("APPLY block is missing.");let n=new Map(t.map(s=>[s.code,s])),i=new Map,o=new Map,a=new Map;for(let s of e.assignments)Ko(s.field,null,n),Vf(s.value,n);for(let s of r){(i.has(s.field)||o.has(s.field))&&$(`APPLY has more than one block for field ${s.field}.`),e.assignments.some(c=>c.field===s.field)&&$(`APPLY target ${s.field} is also assigned by parent SET.`);let l=t.find(c=>c.code===s.field&&!c.inSubtable);if(!l)return s.targetKind==="SUBTABLE"?$(`APPLY target ${s.field} is not a SUBTABLE.`):$(`APPLY target ${s.field} does not exist as a top-level field.`);if(_s(s,l.fieldType),s.targetKind==="MULTI_VALUE"){l.writable===!1&&$(`APPLY target ${s.field} is not writable (${l.fieldType}).`),o.set(s.field,l);continue}let d=l,p=new Map(t.filter(c=>c.inSubtable&&c.subtableCode===s.field).map(c=>[c.code,c]));i.set(s.field,d),a.set(s.field,p);for(let c of s.operations)if(c.kind==="PATCH"){for(let u of c.assignments)Ko(u.field,s.field,n,p),Bo(u.value,s.field,n,p);c.selector.kind==="WHERE"&&Bo(c.selector.where,s.field,n,p)}else if(c.kind==="APPEND"){let u=new Set;for(let f of c.fields)u.has(f)&&$(`APPLY APPEND specifies child ${f} more than once.`),u.add(f),Ko(f,s.field,n,p)}else c.kind==="REMOVE"&&c.selector.kind==="WHERE"&&Bo(c.selector.where,s.field,n,p)}return{targetTables:i,targetMultiValueFields:o,childrenByTable:a,fieldsByCode:n}}function Vf(e,t){Br(e,r=>{if(r==="$id"||r==="$revision")return;let n=t.get(r);(!n||n.inSubtable)&&$(`APPLY parent reference ${r} is not a top-level field.`),n.fieldType==="FILE"&&$(`APPLY parent FILE reference ${r} is not supported.`)})}function Ko(e,t,r,n){(e.startsWith("_")||e.startsWith("$"))&&$(`APPLY assignment target ${e} is a system field.`);let i=t===null?[...r.values()].find(o=>o.code===e&&!o.inSubtable):n?.get(e);if(!i){let o=r.get(e);t!==null&&o?.inSubtable&&$(`APPLY child ${e} does not belong to subtable ${t}.`),$(`APPLY ${t===null?"parent field":"child"} ${e} does not exist.`)}(i.fieldType==="SUBTABLE"||i.fieldType==="FILE"||i.writable===!1)&&$(`APPLY assignment target ${e} is not writable (${i.fieldType}).`)}function Bo(e,t,r,n){Br(e,i=>{if(i==="_rid"||i==="_idx"||n.has(i))return;r.get(i)?.inSubtable&&$(`APPLY child reference ${i} does not belong to subtable ${t}.`),$(`APPLY child reference ${i} does not exist in subtable ${t}.`)})}function ri(e,t){let r=Qe(e,t),n=new Set(["$id","$revision"]);for(let i of t)i.inSubtable||i.fieldType==="FILE"||n.add(i.code);for(let i of r.targetTables.values())n.add(i.code);for(let i of e.assignments)Br(i.value,o=>{let a=r.fieldsByCode.get(o);!a?.inSubtable&&a?.fieldType!=="FILE"&&n.add(o)});return[...n]}function ni(e,t){let r={_rid:e.id??"",_idx:String(t)};for(let[n,i]of Object.entries(e.value??{}))r[n]=Vl(i?.value);return r}function Kl(e){let{statement:t,snapshot:r,fieldInfos:n}=e,i=e.metadata??Qe(t,n),o=Wo(r.$id?.value,"APPLY snapshot $id"),a=$o(t);return o!==a&&$(`APPLY snapshot $id ${o} does not match requested $id ${a}.`),$l(t,r,i,o)}function Bl(e,t,r,n=Qe(e,r)){let i=new Set;return t.map(o=>{let a=Wo(o.$id?.value,"APPLY snapshot $id");return i.has(a)&&$(`APPLY snapshots contain duplicate parentId ${a}.`),i.add(a),$l(e,o,n,a)})}function $l(e,t,r,n){let i=Wo(t.$revision?.value,"APPLY snapshot $revision"),o=[],a=[];for(let p of e.applyBlocks){if(p.targetKind==="MULTI_VALUE"){let C=r.targetMultiValueFields.get(p.field);C||$(`APPLY multi-value metadata for ${p.field} is missing.`),a.push(xl(p,t[p.field]?.value,C));continue}let c=r.childrenByTable.get(p.field),u=zf(t,p.field),f=new Set;for(let C of u)C.id||$(`APPLY snapshot for ${p.field} contains a row without _rid.`),f.has(C.id)&&$(`APPLY snapshot for ${p.field} contains duplicate _rid ${C.id}.`),f.add(C.id);let E=C=>C.field==="_rid"?"SINGLE_LINE_TEXT":C.field==="_idx"?"NUMBER":c.get(C.field)?.fieldType,R=[],h=[],m=[],g=new Set,T=new Set,S=new Set,P=p.operations.some(C=>C.kind==="REMOVE");for(let[C,y]of p.operations.entries()){if(y.kind==="APPEND"){let L=Go(y,c,p.field);m.push({kind:"APPEND",addedRows:L.length}),h.push(...L);continue}if(y.kind==="REMOVE"){let L=Yf(y,u,E,p.field);y.expectRows&&Fl(y.expectRows,L.length,n,p.field,C,y.kind),m.push({kind:"REMOVE",removedRows:L.length});for(let N of L){let v=u[N].id;T.has(N)&&$(`APPLY row ${v} is selected by both PATCH and REMOVE.`),S.has(N)&&$(`APPLY removes row ${v} more than once.`),S.add(N)}continue}if(y.kind!=="PATCH")continue;let O=Hf(y,u,E,p.field);y.expectRows&&Fl(y.expectRows,O.length,n,p.field,C,y.kind),m.push({kind:"PATCH",matchedRows:O.length,changedRows:O.length});for(let L of O){let N=u[L];S.has(L)&&$(`APPLY row ${N.id} is selected by both PATCH and REMOVE.`),T.add(L);let v=ni(N,L);for(let b of y.assignments){let U=`${N.id}\0${b.field}`;g.has(U)&&$(`APPLY patches cell ${N.id}.${b.field} more than once.`),g.add(U),R.push({rowIndex:L,field:b.field,value:ti(b.value,v,E)})}}}let w=new Map;for(let C of R){let y=w.get(C.rowIndex)??{};y[C.field]={value:C.value},w.set(C.rowIndex,y)}let I=[...u.flatMap((C,y)=>S.has(y)?[]:[{id:C.id,value:{...C.value,...w.get(y)??{}}}]),...h],k={table:p.field,operations:m,changedSubtableRows:w.size+S.size+h.length,deletedRows:S.size,snapshotRowIds:u.map(C=>C.id),postImageRows:I};P?o.push({...k,payloadShape:"FULL_SURVIVORS",removedRowIds:u.flatMap((C,y)=>S.has(y)?[C.id]:[]),payloadRows:I.map(C=>({...C.id===void 0?{}:{id:C.id},value:C.value}))}):o.push({...k,payloadShape:"PATCH_ONLY",payloadRows:[...u.map((C,y)=>{let O=w.get(y);return O?{id:C.id,value:O}:{id:C.id}}),...h.map(C=>({value:C.value}))]})}let s=Xf(t),l={};for(let p of e.assignments){let c=r.fieldsByCode.get(p.field)?.fieldType;l[p.field]={value:ko(p.value,s,c,t)}}let d={...t};Object.assign(d,l);for(let p of o)d[p.table]={value:p.postImageRows};for(let p of a)d[p.field]={value:p.postImageValue};return{app:e.appId,parentId:n,revision:i,parentRows:1,changedSubtableRows:o.reduce((p,c)=>p+c.changedSubtableRows,0),parentValues:l,postImage:d,tables:o,multiValues:a}}function Fl(e,t,r,n,i,o){if(e.kind==="EXACT"?t===e.count:e.kind==="BETWEEN"?t>=e.min&&t<=e.max:e.kind==="AT_LEAST"?t>=e.count:t<=e.count)return;let s=e.kind==="EXACT"?`exactly ${e.count}`:e.kind==="BETWEEN"?`between ${e.min} and ${e.max}`:e.kind==="AT_LEAST"?`at least ${e.count}`:`at most ${e.count}`;$(`APPLY EXPECT ROWS mismatch for parent $id ${r}, table ${n}, operation ${i+1} (${o}): expected ${s}, actual ${t}.`)}function ii(e,t){let r=e.tables.map(o=>{let a=t[o.table]?.value;if(!Array.isArray(a)||a.length!==o.postImageRows.length)return $(`APPLY normalized post-image for ${o.table} has an unexpected row count.`);let s=o.payloadRows.map((l,d)=>{let p=a[d];return p?.value?l.id===void 0?{value:p.value}:l.value===void 0?{id:l.id}:{id:l.id,value:Object.fromEntries(Object.keys(l.value).map(c=>[c,p.value[c]]))}:$(`APPLY normalized post-image for ${o.table} row ${d+1} has no value.`)});return{...o,payloadRows:s,postImageRows:a}}),n=Object.fromEntries(Object.keys(e.parentValues).map(o=>[o,t[o]??e.parentValues[o]])),i=e.multiValues.map(o=>{let a=t[o.field]?.value;return Array.isArray(a)?{...o,postImageValue:a}:$(`APPLY normalized post-image for ${o.field} is not an array.`)});return{...e,parentValues:n,tables:r,multiValues:i,postImage:t}}function Go(e,t,r){return e.values.map(n=>({value:Wf(e,n,t,r)}))}function Wf(e,t,r,n){if(t.length!==e.fields.length)return $(`APPLY APPEND for ${n} has ${t.length} values for ${e.fields.length} fields.`);let i=new Map(e.fields.map((a,s)=>[a,t[s]])),o={};for(let a of r.values()){if(a.fieldType==="FILE"||a.writable===!1)continue;let s=i.get(a.code);o[a.code]={value:s===void 0?Vo(a):s.type==="CASE_VALUE"?Et(s.expr,{},a.fieldType):Je(s,a.fieldType)}}return o}function Vo(e){return e.defaultValue!==void 0&&e.defaultValue!==null?e.defaultValue:["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(e.fieldType)?[]:""}function Hf(e,t,r,n){return Gl(e.selector,t,r,n)}function Yf(e,t,r,n){return Gl(e.selector,t,r,n)}function Gl(e,t,r,n){if(e.kind==="ALL_ROWS")return t.map((l,d)=>d);let i=e.where,o=t.flatMap((l,d)=>q(i,ni(l,d),r)?[d]:[]),a=jf(i);a!==null&&o.length===0&&$(`APPLY _rid ${a} does not exist in snapshot table ${n}.`);let s=qf(i);return s!==null&&o.length===0&&$(`APPLY _idx ${s} does not exist in snapshot table ${n}.`),o}function jf(e){return e.type!=="BINARY"||e.op!=="="||e.left.type!=="FIELD"||e.left.tableAlias!==null||e.left.field!=="_rid"?null:e.right.type==="STRING"?e.right.value:e.right.type==="NUMBER"?e.right.raw??String(e.right.value):null}function qf(e){return e.type!=="BINARY"||e.op!=="="||e.left.type!=="FIELD"||e.left.tableAlias!==null||e.left.field!=="_idx"||e.right.type!=="NUMBER"?null:Number.isSafeInteger(e.right.value)&&e.right.value>=0?e.right.value:null}function zf(e,t){let r=e[t]?.value;return Array.isArray(r)?r.map(n=>{let i=n;return{id:typeof i.id=="string"?i.id:"",value:i.value&&typeof i.value=="object"?i.value:{}}}):$(`APPLY snapshot field ${t} is not a subtable value.`)}function Wo(e,t){let r=Number(e);return(!Number.isSafeInteger(r)||r<=0)&&$(`${t} must be a positive integer.`),r}function Xf(e){let t={};for(let[r,n]of Object.entries(e))t[r]=Vl(n?.value);return t}function Vl(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return String(e);try{return JSON.stringify(e)}catch{return String(e)}}function Br(e,t){if(Array.isArray(e)){e.forEach(n=>Br(n,t));return}if(e===null||typeof e!="object")return;let r=e;(r.type==="FIELD"||r.type==="FIELD_REF")&&typeof r.field=="string"&&t(r.field);for(let n of Object.values(r))Br(n,t)}function X(e){throw new Error(`ArgumentError: ${e}`)}function ai(e){let t=Number(e.$revision?.value);return!Number.isSafeInteger(t)||t<=0?X("APPLY snapshot $revision must be a positive integer."):t}function $r(e){if(!Number.isSafeInteger(e.parentId)||e.parentId<=0)return X("APPLY plan parentId must be a positive integer.");if(!Number.isSafeInteger(e.revision)||e.revision<=0)return X("APPLY plan revision must be a positive integer.");let t={...e.parentValues},r=new Set(Object.keys(t));for(let i of e.multiValues)r.has(i.field)&&X(`APPLY plan contains duplicate top-level field ${i.field}.`),r.add(i.field),t[i.field]={value:i.postImageValue};let n=new Set;for(let i of e.tables)r.has(i.table)&&X(`APPLY plan contains duplicate top-level field ${i.table}.`),n.has(i.table)&&X(`APPLY plan contains duplicate table ${i.table}.`),n.add(i.table),r.add(i.table),Jf(i),t[i.table]={value:i.payloadRows};return{app:e.app,records:[{id:e.parentId,revision:e.revision,record:t}]}}function Wl(e){if(e.records.length===0)return[];let t=e.plans[0]?.app;if(!Number.isSafeInteger(t)||t<=0||e.plans.length!==e.records.length)return X("prepared APPLY plans and records must have the same positive-app parent count.");let r=[];for(let n=0;n<e.records.length;n+=100)r.push({app:t,records:e.records.slice(n,n+100)});return r}function Jf(e){let t=Ho(e.snapshotRowIds,`${e.table} snapshot`),r=e.payloadRows.flatMap(p=>p.id===void 0?[]:[p.id]);for(let p of e.payloadRows)p.id===void 0&&p.value===void 0&&X(`APPLY ${e.payloadShape} table ${e.table} contains an APPEND row without value.`);if(Ho(r,`${e.table} payload`),e.payloadShape==="PATCH_ONLY"){e.operations.some(u=>u.kind==="REMOVE")&&X(`APPLY PATCH_ONLY table ${e.table} cannot contain REMOVE.`);let p=e.payloadRows.slice(0,t.length).map(u=>u.id??"");oi(t,p,`APPLY PATCH_ONLY table ${e.table} must retain every snapshot row id in order.`),e.payloadRows.slice(t.length).some(u=>u.id!==void 0)&&X(`APPLY PATCH_ONLY table ${e.table} must place every APPEND row after snapshot rows.`);let c=e.postImageRows.slice(0,t.length).map(u=>u.id??"");oi(t,c,`APPLY PATCH_ONLY table ${e.table} post-image must retain every snapshot row id in order.`),e.postImageRows.slice(t.length).some(u=>u.id!==void 0)&&X(`APPLY PATCH_ONLY table ${e.table} post-image must place every APPEND row after snapshot rows.`);return}e.operations.some(p=>p.kind==="REMOVE")||X(`APPLY FULL_SURVIVORS table ${e.table} requires a REMOVE operation.`);let n=Ho(e.removedRowIds,`${e.table} removed`);e.deletedRows!==n.length&&X(`APPLY FULL_SURVIVORS table ${e.table} deleted row count does not match removed ids.`),e.payloadRows.length!==e.postImageRows.length&&X(`APPLY FULL_SURVIVORS table ${e.table} payload/post-image row counts must match.`);let i=e.postImageRows.flatMap(p=>p.id===void 0?[]:[p.id]),o=new Set(n),a=new Set(i);for(let p of n)a.has(p)&&X(`APPLY FULL_SURVIVORS table ${e.table} has intersecting survivor/removed id ${p}.`);let s=t.filter(p=>!o.has(p));oi(s,i,`APPLY FULL_SURVIVORS table ${e.table} must retain every survivor in snapshot order.`);let l=e.payloadRows.slice(0,i.length).map(p=>p.id??"");oi(i,l,`APPLY FULL_SURVIVORS table ${e.table} payload must enumerate every survivor in order.`),(e.payloadRows.slice(i.length).some(p=>p.id!==void 0)||e.postImageRows.slice(i.length).some(p=>p.id!==void 0))&&X(`APPLY FULL_SURVIVORS table ${e.table} must place every APPEND row after survivors.`),e.payloadRows.some(p=>p.value===void 0)&&X(`APPLY FULL_SURVIVORS table ${e.table} requires values for every survivor.`),e.payloadRows.some((p,c)=>!Yo(p.value,e.postImageRows[c]?.value))&&X(`APPLY FULL_SURVIVORS table ${e.table} payload must contain every post-image child value.`);let d=new Set([...i,...n]);(d.size!==t.length||t.some(p=>!d.has(p)))&&X(`APPLY FULL_SURVIVORS table ${e.table} does not partition every snapshot row.`)}function Ho(e,t){let r=[...e],n=new Set;for(let i of r)i||X(`APPLY ${t} contains an empty row id.`),n.has(i)&&X(`APPLY ${t} contains duplicate row id ${i}.`),n.add(i);return r}function oi(e,t,r){(e.length!==t.length||e.some((n,i)=>n!==t[i]))&&X(r)}function Yo(e,t){if(Object.is(e,t))return!0;if(Array.isArray(e)||Array.isArray(t))return Array.isArray(e)&&Array.isArray(t)&&e.length===t.length&&e.every((a,s)=>Yo(a,t[s]));if(e===null||t===null||typeof e!="object"||typeof t!="object")return!1;let r=e,n=t,i=Object.keys(r),o=Object.keys(n);return i.length===o.length&&i.every(a=>Object.prototype.hasOwnProperty.call(n,a)&&Yo(r[a],n[a]))}function Hl(e,t,r,n){if(typeof e!="string"||!/^\d+$/.test(e))throw new Error(`SettingsError: numberPrecision.${t} must be an integer string.`);let i=0;for(let o of e)i=i*10+o.charCodeAt(0)-48;if(i<r||i>n)throw new Error(`SettingsError: numberPrecision.${t} must be between ${r} and ${n}.`);return i}function Yl(e){let t=e.numberPrecision;if(t==null||typeof t!="object")throw new Error("SettingsError: numberPrecision is missing from app settings.");let r=Hl(t.digits,"digits",1,30),n=Hl(t.decimalPlaces,"decimalPlaces",0,10),i=t.roundingMode;if(i!=="HALF_EVEN"&&i!=="UP"&&i!=="DOWN")throw new Error("SettingsError: numberPrecision.roundingMode is unsupported.");return{digits:r,decimalPlaces:n,roundingMode:i}}function jl(e){return e.sign===0?{integerDigits:0,fractionDigits:0}:{integerDigits:Math.max(e.coefficient.length-e.scale,0),fractionDigits:Math.max(e.scale,0)}}var Qf=new Set(["CHECK_BOX","MULTI_SELECT"]),Zf=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT"]);function ge(e,t,r){if(t.fieldType==="DATE"||t.fieldType==="TIME"||t.fieldType==="DATETIME"){let i=eE(e);if(i!==""&&!tE(i,t.fieldType))return{ok:!1,code:"ERR_TYPE_DATE",message:`${t.code} \u306E\u65E5\u4ED8\u30FB\u6642\u523B\u5F62\u5F0F\u304C\u4E0D\u6B63\u3067\u3059`}}let n;try{n=Gr(e,t.fieldType)}catch(i){let o=i instanceof Error?i.message:String(i);return{ok:!1,code:rE(t.fieldType),message:o}}if(t.required&&si(n))return{ok:!1,code:"ERR_REQUIRED",message:`${t.code} \u306F\u5FC5\u9808\u3067\u3059`};if(!si(n)&&t.fieldType==="NUMBER"){let i=String(n),o=Ae(i);if(o===null)return{ok:!1,code:"ERR_TYPE_NUMBER",message:`${t.code} \u306F\u6570\u5024\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`};if(t.minValue!=null&&Ln(i,t.minValue)<0)return{ok:!1,code:"ERR_RANGE_MIN",message:`${t.code} \u306F ${t.minValue} \u4EE5\u4E0A\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`};if(t.maxValue!=null&&Ln(i,t.maxValue)>0)return{ok:!1,code:"ERR_RANGE_MAX",message:`${t.code} \u306F ${t.maxValue} \u4EE5\u4E0B\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`};if(r!==void 0){let{integerDigits:a}=jl(o),s=r.digits-r.decimalPlaces;if(a>s)return{ok:!1,code:"ERR_NUMBER_INTEGER_DIGITS",message:`${t.code} \u306E\u6574\u6570\u90E8\u306F ${a} \u6841\u3067\u3059\u3002\u8A31\u5BB9\u306F ${s} \u6841\u307E\u3067\u3067\u3059 (digits=${r.digits}, decimalPlaces=${r.decimalPlaces})`}}}if(!si(n)&&(t.fieldType==="DATE"||t.fieldType==="TIME"||t.fieldType==="DATETIME")&&!Pt(String(n),t.fieldType))return{ok:!1,code:"ERR_TYPE_DATE",message:`${t.code} \u306E\u65E5\u4ED8\u30FB\u6642\u523B\u5F62\u5F0F\u304C\u4E0D\u6B63\u3067\u3059`};if(typeof n=="string"){let i=n.length,o=t.minLength==null?null:Number(t.minLength),a=t.maxLength==null?null:Number(t.maxLength);if(Number.isFinite(o)&&i<o)return{ok:!1,code:"ERR_LENGTH_MIN",message:`${t.code} \u306F ${o} \u6587\u5B57\u4EE5\u4E0A\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`};if(Number.isFinite(a)&&i>a)return{ok:!1,code:"ERR_LENGTH_MAX",message:`${t.code} \u306F ${a} \u6587\u5B57\u4EE5\u4E0B\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`}}return!si(n)&&Zf.has(t.fieldType)&&t.optionOrder&&(Array.isArray(n)?n.map(String):[String(n)]).some(o=>!(o in t.optionOrder))?{ok:!1,code:"ERR_CHOICE_INVALID",message:`${t.code} \u306B\u5B9A\u7FA9\u5916\u306E\u9078\u629E\u80A2\u304C\u3042\u308A\u307E\u3059`}:{ok:!0,value:n}}function eE(e){return e==null?"":li(e)&&e.type==="NUMBER"?G(e):li(e)&&e.type==="STRING"?e.value:typeof e=="string"||typeof e=="number"?String(e):""}function tE(e,t){if(t==="DATE")return Pt(e.replace(/\//g,"-"),"DATE");if(t==="TIME")return Pt(e,"TIME");let r=e.replace(/\//g,"-").replace(" ","T");return/T\d{2}:\d{2}$/.test(r)&&(r+=":00"),/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$/.test(r)?Pt(r.slice(0,10),"DATE")&&Pt(r.slice(11),"TIME"):Pt(r,"DATETIME")}function Gr(e,t){if(li(e)){let n=xo(e,t);if(!n.ok)throw new Error(n.message);return n.value}if(Array.isArray(e))return e.map(n=>typeof n=="object"&&n!==null&&"code"in n?String(n.code):String(n));let r=e==null?"":String(e);if(Qf.has(t)){if(r==="")return[];try{let n=JSON.parse(r);if(Array.isArray(n))return n.map(String)}catch{}return r.split(",").map(n=>n.trim())}return r}function li(e){return typeof e=="object"&&e!==null&&typeof e.type=="string"}function Nt(e){if(e==null||e==="")return!0;if(Array.isArray(e))return e.length===0;if(li(e)){if(e.type==="STRING")return e.value==="";if(e.type==="ARRAY")return e.elements.length===0}return!1}function si(e){return e===""||Array.isArray(e)&&e.length===0}function rE(e){return e==="NUMBER"?"ERR_TYPE_NUMBER":"ERR_TYPE_DATE"}function Pt(e,t){if(t==="TIME"){let d=/^(\d{2}):(\d{2})(?::(\d{2}))?$/.exec(e);return d!==null&&Number(d[1])<=23&&Number(d[2])<=59&&Number(d[3]??0)<=59}let r=t==="DATE"?e:e.slice(0,10),n=/^(\d{4})-(\d{2})-(\d{2})$/.exec(r);if(!n)return!1;let i=Number(n[1]),o=Number(n[2]),a=Number(n[3]),s=new Date(Date.UTC(i,o-1,a));if(s.getUTCFullYear()!==i||s.getUTCMonth()!==o-1||s.getUTCDate()!==a)return!1;if(t==="DATE")return!0;let l=e.slice(11,e.endsWith("Z")?-1:e.length-6).replace(/\.\d+$/,"");return/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(?::\d{2})?(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/.test(e)&&Pt(l,"TIME")}var cr=["$err_statement","$err_operation","$err_row","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id"];function jo(e,t,r){let n=new Map(r.map(i=>[i.code,i]));for(let i of e)if(i.mode==="update"){i.record??={};for(let o of t){if(!i.payload.has(o))continue;let a=i.payload.get(o),s=n.get(o).fieldType,l=["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(s)&&Array.isArray(a)&&a.every(p=>typeof p=="object"&&p!==null&&"code"in p),d=a;try{d=Gr(a,s)}catch{}i.record[o]={value:l?a:d}}}}function qo(e,t,r,n,i,o,a,s=[],l=!0,d=!0,p={}){let c=new Map(i.map(h=>[h.code,h])),u=[],f=new Set,E=[];p.validateUpdateBuiltIns===!1&&jo(e,n,i);let R;for(let h of e){h.record??={};let m=d?[...h.preErrors]:[],g=[],T=[],S=h.mode==="create"||p.validateUpdateBuiltIns!==!1;for(let I of n){if(!h.payload.has(I))continue;let k=h.payload.get(I),C=c.get(I).fieldType,y=["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(C)&&Array.isArray(k)&&k.every(L=>typeof L=="object"&&L!==null&&"code"in L);if(!S)continue;let O=ge(k,c.get(I),a);O.ok?h.record[I]={value:y?k:O.value}:g.push({field:I,code:O.code,message:O.message})}if(l&&h.mode==="create")for(let I of i){if(I.inSubtable||h.payload.has(I.code))continue;if(Nt(I.defaultValue)){let C=ge("",I,a);C.ok?I.required&&g.push({field:I.code,code:"ERR_REQUIRED",message:`${I.code} \u306F\u5FC5\u9808\u3067\u3059`}):g.push({field:I.code,code:C.code,message:C.message})}else{let C=ge(I.defaultValue,I,a);C.ok||g.push({field:I.code,code:C.code,message:`\u65E2\u5B9A\u5024: ${C.message}`})}}if(s.length>0){let I=h.evaluationRow??Object.fromEntries([...h.payload].map(([y,O])=>[y,Ue(O)])),k=h.evaluationFieldTypes,C=y=>{let O=y.tableAlias?`${y.tableAlias}.${y.field}`:y.field;return k?.get(O)??k?.get(y.field)};try{for(let y of Jn(s,I,C))T.push({field:"",code:"ERR_CHECK",message:y.message})}catch(y){R??=y}}let P=I=>I.map(k=>{let C={};for(let y of r)C[y]=Ue(h.payload.get(y));return C.$err_statement=String(o),C.$err_operation=t,C.$err_row=String(h.rowNumber),C.$err_field=k.field,C.$err_code=k.code,C.$err_message=k.message,C.$err_value="",C.$err_subtable="",C.$err_subrow="",C.$err_subrow_id="",C}),w={rowNumber:h.rowNumber,preErrors:P(m),builtInErrors:P(g),checkErrors:P(T)};E.push(w);let _=[...w.preErrors,...w.builtInErrors,...w.checkErrors];_.length>0&&f.add(h.rowNumber),u.push(..._)}if(R!==void 0)throw R;return{errors:u,invalidRows:f.size,invalidRowNumbers:f,candidateResults:E}}function Ue(e){if(e==null)return"";if(typeof e=="object"&&"type"in e){let t=e;if(t.type==="NUMBER")return t.raw??String(t.value??"");if(t.type==="STRING")return String(t.value??"");if(t.type==="ARRAY")return JSON.stringify(t.elements?.map(r=>r.value)??[])}return Array.isArray(e)?JSON.stringify(e):String(e)}function zo(e){let t=e.filter(n=>!n.inSubtable),r=new Map;for(let n of e){if(!n.inSubtable||!n.subtableCode)continue;let i=r.get(n.subtableCode)??[];i.push(n),r.set(n.subtableCode,i)}return{topLevel:t,topByCode:new Map(t.map(n=>[n.code,n])),childrenByTable:r}}function nE(e){return e.required===!0||e.minValue!==void 0||e.maxValue!==void 0||e.minLength!==void 0||e.maxLength!==void 0||e.optionOrder!==void 0}function iE(e){return e.fieldType==="NUMBER"||nE(e)}function ui(e,t,r){return{subtable:e,subrow:t+1,subrowId:String(r.id??"")}}function Xo(e,t){let{topByCode:r,childrenByTable:n}=zo(t),i=iE;if(e.targets===void 0)return[...t.filter(l=>!l.inSubtable&&l.fieldType!=="SUBTABLE"&&i(l)),...t.filter(l=>l.inSubtable&&!!l.subtableCode&&i(l))].map(l=>({field:l,...l.subtableCode?{subtableCode:l.subtableCode}:{}}));let o=[],a=new Set,s=(l,d)=>{let p=d?`${d}\0${l.code}`:l.code;if(a.has(p))throw new Error(`ArgumentError: VALIDATE \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${l.code} \u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059\u3002`);if(a.add(p),!i(l))throw new Error(`ArgumentError: VALIDATE \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${l.code} \u306B\u306F\u76E3\u67FB\u53EF\u80FD\u306A\u5236\u7D04\u304C\u3042\u308A\u307E\u305B\u3093\u3002`);o.push({field:l,...d?{subtableCode:d}:{}})};for(let l of e.targets){if(l.kind==="SUBTABLE"){let c=n.get(l.subtableCode);if(!c)throw new Error(`ArgumentError: VALIDATE \u306E\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB ${l.subtableCode} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093\u3002`);if(l.children.length===0)throw new Error(`ArgumentError: VALIDATE \u306E\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB ${l.subtableCode} \u306B\u306F1\u3064\u4EE5\u4E0A\u306E\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u5FC5\u8981\u3067\u3059\u3002`);for(let u of l.children){let f=c.find(E=>E.code===u);if(!f){let E=[...n.entries()].some(([R,h])=>R!==l.subtableCode&&h.some(m=>m.code===u));throw new Error(E?`ArgumentError: VALIDATE \u306E\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${u} \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB ${l.subtableCode} \u306B\u5C5E\u3057\u3066\u3044\u307E\u305B\u3093\u3002`:`ArgumentError: VALIDATE \u306E\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${u} \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB ${l.subtableCode} \u306B\u5B58\u5728\u3057\u307E\u305B\u3093\u3002`)}s(f,l.subtableCode)}continue}let d=l.field;if(d==="$id")throw new Error("ArgumentError: VALIDATE \u3067\u306F\u30B7\u30B9\u30C6\u30E0\u30D5\u30A3\u30FC\u30EB\u30C9 $id \u3092\u76E3\u67FB\u3067\u304D\u307E\u305B\u3093\u3002");let p=r.get(d);if(p?.fieldType==="SUBTABLE"){let c=(n.get(d)??[]).filter(i);if(c.length===0)throw new Error(`ArgumentError: VALIDATE \u306E\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB ${d} \u306B\u306F\u76E3\u67FB\u53EF\u80FD\u306A\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u3042\u308A\u307E\u305B\u3093\u3002`);c.forEach(u=>s(u,d));continue}if(p){s(p);continue}throw[...n.values()].some(c=>c.some(u=>u.code===d))?new Error(`ArgumentError: VALIDATE \u306E\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${d} \u306F\u6240\u6709\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u3092\u542B\u3080 T(${d}) \u5F62\u5F0F\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`):new Error(`ArgumentError: VALIDATE \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${d} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093\u3002`)}return o}function Vr(e,t){return Nt(e)?"":Ue(Gr(e,t))}var oE=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]),Wr=cr;function Me(e,t=["$id"]){let r=zo(e),n=r.topLevel.filter(o=>o.fieldType!=="SUBTABLE"&&o.fieldType!=="FILE"&&!oE.has(o.fieldType)),i=new Map;for(let[o,a]of r.childrenByTable)i.set(o,a.filter(s=>s.fieldType!=="FILE"));return{topLevel:n,subtables:i,payloadFields:["$id",...new Set(t.filter(o=>o!=="$id"))]}}function Ct(e,t){if(t.topLevel.some(r=>r.fieldType==="NUMBER"&&r.code in e))return!0;for(let[r,n]of t.subtables){if(!n.some(o=>o.fieldType==="NUMBER"))continue;let i=e[r]?.value;if(Array.isArray(i))for(let o of i){let a=o?.value;if(n.some(s=>s.fieldType==="NUMBER"&&!!a&&s.code in a))return!0}}return!1}function Ot(e,t,r,n,i=1,o="UPDATE"){let a=aE(e),s=[],l=new Set,d=[...t.payloadFields,...Wr],p=Ue(e.$id?.value),c=(u,f,E,R)=>{l.add(i);let h={};for(let m of t.payloadFields)h[m]=m==="$id"?p:Ue(e[m]?.value);h.$err_statement=String(n),h.$err_operation=o,h.$err_row=String(i),h.$err_field=u.code,h.$err_code=E.code,h.$err_message=E.message,h.$err_value=Vr(f,u.fieldType),h.$err_subtable=R?.subtable??"",h.$err_subrow=R?String(R.subrow):"",h.$err_subrow_id=R?.subrowId??"",s.push(h)};for(let u of t.topLevel){let f=e[u.code]?.value,E=ge(f,u,r);E.ok?a[u.code]={value:ql(f,u.fieldType,E.value)}:c(u,f,E)}for(let[u,f]of t.subtables){let E=e[u]?.value;if(!Array.isArray(E))continue;let R=a[u]?.value;for(let h=0;h<E.length;h++){let m=E[h],g=R[h];for(let T of f){let S=m.value?.[T.code]?.value,P=ge(S,T,r);P.ok?(g.value??={},g.value[T.code]={value:ql(S,T.fieldType,P.value)}):c(T,S,P,ui(u,h,m))}}}return{normalizedRecord:a,errors:s,columns:d,invalidRows:l.size,invalidRowNumbers:l,errorCount:s.length}}function ql(e,t,r){return["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(t)&&Array.isArray(e)&&e.every(n=>typeof n=="object"&&n!==null&&"code"in n)?e:r}function aE(e){let t={};for(let[r,n]of Object.entries(e)){let i=n?.value;t[r]={value:Array.isArray(i)?i.map(o=>{if(o===null||typeof o!="object")return o;let a=o;return a.value?{...a,value:Object.fromEntries(Object.entries(a.value).map(([s,l])=>[s,{...l}]))}:{...a}}):i}}return t}async function ci(e){let{statement:t,snapshots:r,fieldInfos:n,metadata:i,dmlMaxRows:o,dmlMaxSubtableRows:a,statementNumber:s=1}=e;zl(o,"dmlMaxRows"),zl(a,"dmlMaxSubtableRows");for(let T of r)ai(T);let l=Bl(t,r,n,i),d=Me(n,t.assignments.map(T=>T.field)),p=l.some(T=>Ct(T.postImage,d));if(p&&!e.loadNumberPrecision)throw new Error("InternalError: APPLY number precision loader is required for NUMBER post-images.");let c=p?await e.loadNumberPrecision():void 0,u=l.map((T,S)=>Ot(T.postImage,d,c,s,e.parentRowNumbers?.[S]??S+1));if(!t.validateOnly){let T=u.flatMap(S=>S.errors);if(T.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:u[0]?.columns??[],errors:T})}`)}let f=l.length,E=l.reduce((T,S)=>T+S.changedSubtableRows,0),R=f>o||E>a;if(!t.validateOnly&&f>o)throw new Error(`ArgumentError: APPLY parent rows (${f}) exceed dmlMaxRows (${o}).`);if(!t.validateOnly&&E>a)throw new Error(`ArgumentError: APPLY changed subtable rows (${E}) exceed dmlMaxSubtableRows (${a}).`);let h=l.map((T,S)=>ii(T,u[S].normalizedRecord)),m=h.flatMap(T=>$r(T).records),g=u.map(T=>({errors:T.errors,columns:T.columns,invalidRows:T.invalidRows,errorCount:T.errorCount}));return Xl({plans:h,records:m,validations:g,guards:{revisionRequired:!0,parentRows:f,dmlMaxRows:o,subtableRows:E,dmlMaxSubtableRows:a,wouldExceed:R}})}function zl(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function Xl(e,t=new Set){if(e===null||typeof e!="object"||t.has(e))return e;t.add(e);for(let r of Object.values(e))Xl(r,t);return Object.freeze(e)}var Jo=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function pi(e,t){if(new Set(e.fields).size!==e.fields.length)return xe("DML target fields contain duplicates.");let r=new Map(t.map(o=>[o.code,o]));for(let o of e.fields)Jl(o,null,r);let n=new Map,i=new Map;for(let o of e.applyBlocks??[]){if(n.has(o.field))return xe(`APPLY has more than one block for table ${o.field}.`);let a=t.find(l=>l.code===o.field&&!l.inSubtable);if(!a||a.fieldType!=="SUBTABLE")return xe(`APPLY target ${o.field} is not a SUBTABLE.`);let s=new Map(t.filter(l=>l.inSubtable&&l.subtableCode===o.field).map(l=>[l.code,l]));n.set(o.field,a),i.set(o.field,s);for(let l of o.operations){if(l.kind!=="APPEND")return xe(`APPLY INSERT supports APPEND only (${l.kind}).`);let d=new Set;for(let p of l.fields){if(d.has(p))return xe(`APPLY APPEND specifies child ${p} more than once.`);d.add(p),Jl(p,o.field,r,s)}for(let p of l.values)if(p.length!==l.fields.length)return xe(`APPLY APPEND for ${o.field} has ${p.length} values for ${l.fields.length} fields.`)}}return{targetTables:n,targetMultiValueFields:new Map,childrenByTable:i,fieldsByCode:r}}function sE(e,t,r=pi(e,t),n){let i=new Map(t.map(s=>[s.code,s.fieldType])),o=Zn(e,i).flatMap(s=>s.records);if(n&&n.length!==o.length)throw new Error("InternalError: APPLY create parent row number count differs from VALUES rows.");let a=(e.applyBlocks??[]).map(s=>{let l=r.childrenByTable.get(s.field),d=s.operations.flatMap(p=>Go(p,l,s.field));return{table:s.field,rows:d,addedRows:d.length}});return o.map((s,l)=>{let d={};for(let c of t)c.inSubtable||c.fieldType==="SUBTABLE"||c.fieldType==="FILE"||c.writable===!1||Jo.has(c.fieldType)||(d[c.code]=s[c.code]??{value:Vo(c)});let p={...s};for(let c of a){let u=c.rows.map(f=>({value:f.value}));d[c.table]={value:u},p[c.table]={value:u}}return{parentRowNumber:n?.[l]??l+1,tables:a,postImage:d,record:p}})}async function Hr(e){let{statement:t,fieldInfos:r,dmlMaxRows:n,dmlMaxSubtableRows:i,statementNumber:o=1}=e;Ql(n,"dmlMaxRows"),Ql(i,"dmlMaxSubtableRows");let a=e.metadata??pi(t,r),s=sE(t,r,a,e.parentRowNumbers),l=r.filter(S=>S.fieldType==="SUBTABLE"||S.fieldType!=="FILE"&&S.writable!==!1&&!Jo.has(S.fieldType)),d=Me(l,t.fields),p=s.some(S=>Ct(S.postImage,d));if(p&&!e.loadNumberPrecision)throw new Error("InternalError: APPLY number precision loader is required for NUMBER post-images.");let c=p?await e.loadNumberPrecision():void 0,u=s.map(S=>Ot(S.postImage,d,c,o,S.parentRowNumber,"INSERT"));if(!t.validateOnly){let S=u.flatMap(P=>P.errors);if(S.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:u[0]?.columns??[],errors:S})}`)}let f=s.length,E=s.reduce((S,P)=>S+P.tables.reduce((w,_)=>w+_.addedRows,0),0),R=f>n||E>i;if(!t.validateOnly&&f>n)throw new Error(`ArgumentError: APPLY parent rows (${f}) exceed dmlMaxRows (${n}).`);if(!t.validateOnly&&E>i)throw new Error(`ArgumentError: APPLY changed subtable rows (${E}) exceed dmlMaxSubtableRows (${i}).`);let h=s.map((S,P)=>{let w=u[P].normalizedRecord,_={};for(let I of t.fields)_[I]=w[I];for(let I of S.tables){let k=w[I.table]?.value;_[I.table]={value:I.rows.map((C,y)=>({value:Object.fromEntries(Object.keys(C.value).map(O=>[O,k[y]?.value?.[O]??C.value[O]]))}))}}return{...S,postImage:w,record:_}}),m=h.map(S=>S.record),g=[];for(let S=0;S<m.length;S+=100)g.push({app:t.appId,records:m.slice(S,S+100)});let T=u.map(S=>({errors:S.errors,columns:S.columns,invalidRows:S.invalidRows,errorCount:S.errorCount}));return Zl({applyBlocks:t.applyBlocks??[],candidates:h,records:m,batches:g,validations:T,guards:{revisionRequired:!1,parentRows:f,dmlMaxRows:n,subtableRows:E,dmlMaxSubtableRows:i,wouldExceed:R}})}function Jl(e,t,r,n){if(e.startsWith("_")||e.startsWith("$"))return xe(`APPLY assignment target ${e} is a system field.`);let i=t===null?[...r.values()].find(o=>o.code===e&&!o.inSubtable):n?.get(e);if(!i){let o=r.get(e);return t!==null&&o?.inSubtable?xe(`APPLY child ${e} does not belong to subtable ${t}.`):xe(`APPLY ${t===null?"parent field":"child"} ${e} does not exist.`)}if(i.fieldType==="SUBTABLE"||i.fieldType==="FILE"||i.writable===!1||Jo.has(i.fieldType))return xe(`APPLY assignment target ${e} is not writable (${i.fieldType}).`)}function Ql(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function xe(e){throw new Error(`ArgumentError: ${e}`)}function Zl(e,t=new Set){if(e===null||typeof e!="object"||t.has(e))return e;t.add(e);for(let r of Object.values(e))Zl(r,t);return Object.freeze(e)}async function tu(e){let{statement:t,matches:r,fieldInfos:n,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a=1}=e;eu(i,"dmlMaxRows"),eu(o,"dmlMaxSubtableRows"),dE(t,r);let s=r.filter(m=>m.targetId===void 0),l=r.filter(m=>m.targetId!==void 0),d=lE(t,s.map(m=>m.sourceRowIndex)),p=await Hr({statement:d,fieldInfos:n,metadata:pi(d,n),dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a,parentRowNumbers:s.map(m=>m.sourceRowIndex+1),loadNumberPrecision:e.loadNumberPrecision}),c=[],u=new Set;for(let m of l){let g=m.targetId;u.has(g)&&Qo(`UPSERT APPLY resolves more than one source row to parent $id ${g}.`),u.add(g),m.snapshot||Qo(`UPSERT APPLY snapshot for parent $id ${g} is missing.`);let T=Number(m.snapshot.$id?.value);T!==g&&Qo(`UPSERT APPLY snapshot $id ${T} does not match target $id ${g}.`);let S=uE(t,m.sourceRowIndex,g),P=S.applyBlocks?.length?Qe(S,n):cE(n);c.push(await ci({statement:S,snapshots:[m.snapshot],fieldInfos:n,metadata:P,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a,parentRowNumbers:[m.sourceRowIndex+1],loadNumberPrecision:e.loadNumberPrecision}))}let f=pE(c,i,o),E=p.guards.parentRows+f.guards.parentRows,R=p.guards.subtableRows+f.guards.subtableRows,h=E>i||R>o;if(!t.validateOnly){let m=[...p.validations.flatMap(g=>g.errors),...f.validations.flatMap(g=>g.errors)];if(m.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:p.validations[0]?.columns??f.validations[0]?.columns??[],errors:m})}`)}if(!t.validateOnly&&E>i)throw new Error(`ArgumentError: APPLY parent rows (${E}) exceed dmlMaxRows (${i}).`);if(!t.validateOnly&&R>o)throw new Error(`ArgumentError: APPLY changed subtable rows (${R}) exceed dmlMaxSubtableRows (${o}).`);return Zo({create:p,update:f,createBatches:p.batches,updateBatches:fE(f.records,t.appId),guards:{revisionRequired:f.guards.parentRows>0,parentRows:E,dmlMaxRows:i,subtableRows:R,dmlMaxSubtableRows:o,wouldExceed:h,create:p.guards,update:f.guards}})}function lE(e,t){return{type:"INSERT",appId:e.appId,fields:[...e.fields],values:t.map(r=>e.values[r]),applyBlocks:e.onInsertApplyBlocks??[],validateOnly:!0}}function uE(e,t,r){let n=e.fields.map((i,o)=>({field:i,value:e.values[t][o]}));return{type:"UPDATE",appId:e.appId,subtableCode:null,assignments:n,from:null,where:{type:"BINARY",op:"=",left:{type:"FIELD",tableAlias:null,field:"$id"},right:{type:"NUMBER",value:r,raw:String(r)}},applyBlocks:e.onUpdateApplyBlocks??[],validateOnly:!0}}function cE(e){return{targetTables:new Map,targetMultiValueFields:new Map,childrenByTable:new Map,fieldsByCode:new Map(e.map(t=>[t.code,t]))}}function pE(e,t,r){let n=e.flatMap(s=>s.plans),i=e.flatMap(s=>s.records),o=e.flatMap(s=>s.validations),a=n.reduce((s,l)=>s+l.changedSubtableRows,0);return Zo({plans:n,records:i,validations:o,guards:{revisionRequired:!0,parentRows:n.length,dmlMaxRows:t,subtableRows:a,dmlMaxSubtableRows:r,wouldExceed:n.length>t||a>r}})}function dE(e,t){if(t.length!==e.values.length)throw new Error("InternalError: UPSERT APPLY match count differs from VALUES rows.");let r=new Set;for(let n of t){if(!Number.isSafeInteger(n.sourceRowIndex)||n.sourceRowIndex<0||n.sourceRowIndex>=e.values.length||r.has(n.sourceRowIndex))throw new Error("InternalError: UPSERT APPLY matches must cover each source row exactly once.");r.add(n.sourceRowIndex)}}function fE(e,t){let r=[];for(let n=0;n<e.length;n+=100)r.push({app:t,records:e.slice(n,n+100)});return r}function eu(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function Qo(e){throw new Error(`ArgumentError: ${e}`)}function Zo(e,t=new Set){if(e===null||typeof e!="object"||t.has(e))return e;t.add(e);for(let r of Object.values(e))Zo(r,t);return Object.freeze(e)}function jr(e){return pr("UPDATE",[iu(e)])}function ea(e){return pr("INSERT",[nu(e)])}function ta(e){return pr("UPSERT",[nu(e.create),iu(e.update)])}function Ie(e,t){let r=t.failedBranch?.toLowerCase(),n=e.branches.map(i=>{let o=e.statementKind==="UPSERT"?i.branch==="insert"?t.successfulInserts:t.successfulUpdates:t.successfulParents,a=e.statementKind==="UPSERT"?i.branch==="insert"?t.successfulInsertChunks:t.successfulUpdateChunks:t.successfulChunks,s=r===i.branch;return{...i,...o!==void 0?{successfulParents:o}:{},chunk:{...i.chunk,...a!==void 0?{successfulChunks:a}:{},...s&&t.failedChunkIndex!==void 0?{failedChunkIndex:t.failedChunkIndex}:{},...s&&t.failedStage!==void 0?{failedStage:t.failedStage}:{}}}});return{...e,branches:n,partialSuccess:{possible:!0,successfulParents:t.successfulParents,successfulChunks:t.successfulChunks,...r?{failedBranch:r}:{},...t.retryAttempted!==void 0?{retryAttempted:t.retryAttempted}:{}}}}function fi(e,t,r){return e.type==="UPDATE"?pr("UPDATE",[di("update",e.applyBlocks??[],null,!0,t,r)]):e.type==="INSERT"?pr("INSERT",[di("insert",e.applyBlocks??[],e.values.length,!1,t,r)]):pr("UPSERT",[di("insert",e.onInsertApplyBlocks??[],null,!1,t,r),di("update",e.onUpdateApplyBlocks??[],null,!0,t,r)])}function pr(e,t){return{statementKind:e,branches:t,nonTransactional:!0,partialSuccess:{possible:!0}}}function nu(e){let t=new Map;if(e.applyBlocks)for(let r of e.applyBlocks){let n=r.operations.map(i=>{if(i.kind!=="APPEND")throw new Error(`InternalError: prepared APPLY INSERT contains ${i.kind}.`);let o=i.values.length*e.guards.parentRows;return{kind:"APPEND",count:o,addedRows:o}});t.set(r.field,{targetKind:r.targetKind,field:r.field,operations:n,changedCount:n.reduce((i,o)=>i+(o.addedRows??0),0)})}else for(let r of e.candidates)for(let n of r.tables){let i=t.get(n.table),o=i?.operations[0]?.addedRows??0;t.set(n.table,{targetKind:"SUBTABLE",field:n.table,operations:[{kind:"APPEND",count:o+n.addedRows,addedRows:o+n.addedRows}],changedCount:(i?.changedCount??0)+n.addedRows})}return{branch:"insert",parentRows:e.guards.parentRows,targets:[...t.values()],guards:e.guards,chunk:{size:100,plannedChunks:e.batches.length},deletedParentRows:0}}function iu(e){let t=new Map,r=0;for(let n of e.plans){let i=!1;for(let o of n.tables){let a=t.get(o.table);t.set(o.table,{targetKind:"SUBTABLE",field:o.table,operations:ru(a?.operations,o.operations.map(s=>({...s,count:s.kind==="PATCH"?s.changedRows:s.kind==="APPEND"?s.addedRows:s.removedRows}))),changedCount:(a?.changedCount??0)+o.changedSubtableRows}),i||=o.deletedRows>0}for(let o of n.multiValues){let a=t.get(o.field),s={parentId:n.parentId,value:o.postImageValue};t.set(o.field,{targetKind:"MULTI_VALUE",field:o.field,fieldType:o.fieldType,operations:ru(a?.operations,o.operations.map(l=>({kind:l.kind,value:l.value,count:l.changed?1:0,changed:l.changed}))),changedCount:(a?.changedCount??0)+o.changedValues,postImages:[...a?.postImages??[],s]})}i&&(r+=1)}return{branch:"update",parentRows:e.guards.parentRows,targets:[...t.values()],guards:e.guards,chunk:{size:100,plannedChunks:Math.ceil(e.records.length/100)},deletedParentRows:r}}function ru(e,t){return e?t.map((r,n)=>{let i=e[n];if(!i||i.kind!==r.kind||i.value!==r.value)throw new Error("InternalError: APPLY diagnostic operation shape differs between parents.");return{...r,...i.changed!==void 0?{changed:i.changed}:{},count:Yr(i.count,r.count),...r.matchedRows!==void 0?{matchedRows:Yr(i.matchedRows,r.matchedRows)}:{},...r.changedRows!==void 0?{changedRows:Yr(i.changedRows,r.changedRows)}:{},...r.addedRows!==void 0?{addedRows:Yr(i.addedRows,r.addedRows)}:{},...r.removedRows!==void 0?{removedRows:Yr(i.removedRows,r.removedRows)}:{}}}):t.map(r=>({...r}))}function Yr(e,t){return e==null||t===null?null:e+t}function di(e,t,r,n,i,o){let a=t.map(p=>{let c=p.operations.map(f=>EE(f,r)),u=c.every(f=>f.count!==null)?c.reduce((f,E)=>f+E.count,0):null;return{targetKind:p.targetKind,field:p.field,operations:c,changedCount:u}}),s=a.filter(p=>p.targetKind==="SUBTABLE"),l=s.every(p=>p.changedCount!==null)?s.reduce((p,c)=>p+c.changedCount,0):null,d=r===null||l===null?null:r>i||l>o;return{branch:e,parentRows:r,targets:a,guards:{revisionRequired:n,parentRows:r,dmlMaxRows:i,subtableRows:l,dmlMaxSubtableRows:o,wouldExceed:d},chunk:{size:100,plannedChunks:r===null?null:Math.ceil(r/100)},deletedParentRows:e==="insert"?0:null}}function EE(e,t){if(e.kind==="APPEND"){let r=t===null?null:e.values.length*t;return{kind:e.kind,count:r,addedRows:r}}return e.kind==="PATCH"?{kind:e.kind,count:null,matchedRows:null,changedRows:null}:e.kind==="REMOVE"?{kind:e.kind,count:null,removedRows:null}:{kind:e.kind,value:e.value,count:null}}var Ze=class extends Error{constructor(t,r){let n=r instanceof Error?r.message:String(r),i=t.failedStage==="POST_CHUNK"?"POST":"PUT",o=t.failedBranch?` UPSERT ${t.failedBranch}`:"";super(`ApplyWritePartialFailureError: APPLY${o} ${i} chunk ${t.failedChunkIndex+1} failed (index ${t.failedChunkIndex}) after ${t.successfulChunks} successful chunk(s) and ${t.successfulParents} successful parent(s); writes are non-transactional and were not retried. Cause: ${n}`),this.name="ApplyWritePartialFailureError",this.partialSuccess=t,this.cause=r}};async function ou(e,t,r){Jt("phase10c");let n=Wl(e),i=0,o=0;for(let a=0;a<n.length;a+=1){let s=n[a];try{await t.putRecords(s)}catch(l){throw new Ze({successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"PUT_CHUNK",nonTransactional:!0,retryAttempted:!1,...r?{diagnostic:Ie(r,{successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"PUT_CHUNK",failedBranch:"UPDATE",retryAttempted:!1})}:{}},l)}i+=1,o+=s.records.length}return{type:"UPDATE",updatedCount:o,successfulChunks:i,successfulParents:o,nonTransactional:!0}}async function au(e,t,r){Jt("phase13c");let n=[],i=0,o=0;for(let a=0;a<e.batches.length;a+=1){let s=e.batches[a];try{let l=await t.postRecords({app:s.app,records:[...s.records]});n.push(l.ids)}catch(l){throw new Ze({successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"POST_CHUNK",nonTransactional:!0,retryAttempted:!1,...r?{diagnostic:Ie(r,{successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"POST_CHUNK",failedBranch:"INSERT",retryAttempted:!1})}:{}},l)}i+=1,o+=s.records.length}return{type:"INSERT",createdIds:n,insertedCount:o,successfulChunks:i,successfulParents:o,nonTransactional:!0}}async function su(e,t,r){Jt("phase14c");let n=[],i=0,o=0,a=0,s=0;for(let l=0;l<e.createBatches.length;l+=1){let d=e.createBatches[l];try{let p=await t.postRecords({app:d.app,records:[...d.records]});n.push(p.ids)}catch(p){throw new Ze({successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,failedChunkIndex:l,failedBranch:"INSERT",failedStage:"POST_CHUNK",nonTransactional:!0,retryAttempted:!1,...r?{diagnostic:Ie(r,{successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,successfulInsertChunks:i,successfulUpdateChunks:o,failedChunkIndex:l,failedStage:"POST_CHUNK",failedBranch:"INSERT",retryAttempted:!1})}:{}},p)}i+=1,a+=d.records.length}for(let l=0;l<e.updateBatches.length;l+=1){let d=e.updateBatches[l];try{await t.putRecords({app:d.app,records:[...d.records]})}catch(p){throw new Ze({successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,failedChunkIndex:l,failedBranch:"UPDATE",failedStage:"PUT_CHUNK",nonTransactional:!0,retryAttempted:!1,...r?{diagnostic:Ie(r,{successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,successfulInsertChunks:i,successfulUpdateChunks:o,failedChunkIndex:l,failedStage:"PUT_CHUNK",failedBranch:"UPDATE",retryAttempted:!1})}:{}},p)}o+=1,s+=d.records.length}return{type:"UPSERT",createdIds:n,insertedCount:a,updatedCount:s,successfulChunks:i+o,successfulParents:a+s,successfulInsertChunks:i,successfulUpdateChunks:o,nonTransactional:!0}}function lu(e,t){let r=ne(e);return r.type!=="GROUPING_SETS"?null:{source:r.source,expandedSetCount:r.sets.length,groupingItemCount:t??r.allItems.length,setLimit:64,itemLimit:16,outputRowLimit:5e4}}function Fe(e){if(e===null)return!1;switch(e.type){case"BINARY":return Ei(e.left);case"NULL_CHECK":return Ei(e.field);case"LOGICAL":return Fe(e.left)||Fe(e.right);case"NOT":case"GROUP":return Fe(e.expr);case"EXISTS":case"BOOLEAN":return!1}}function Ei(e){if(Array.isArray(e))return e.some(Ei);if(e===null||typeof e!="object")return!1;let t=e;return t.type==="FIELD"?t.field!=="$id":t.type==="SELECT"?!1:Object.values(t).some(Ei)}async function Oe(e,t,r,n,i){let o=await Ee(e,t,r,n,{maxRecords:i.maxRecords,parallel:i.parallel,onLimit:i.onLimit??"error",onTruncate:i.onTruncate,onSearchAborted:i.onSearchAborted});return{records:o,metrics:{fetchedRows:o.length}}}async function Ri(e,t,r,n){let{records:i,metrics:o}=await Oe(e,t,r,["$id"],n);return{ids:ds(i),metrics:o}}function na(e,t){let r=mo(e,{allowUnqualifiedFields:!0,allowKlike:!0,fieldTypes:t.fieldTypes,fieldOptions:t.fieldOptions});return{prefilter:r.condition,appliedKlikes:r.appliedKlikes,unappliedKlikes:r.allKlikes.filter(n=>!r.appliedKlikes.has(n))}}function RE(e,t){return e.key.type==="FIELD_NAME"?t.get(e.key.name):void 0}function mE(e,t){return e.columns.some(r=>"alias"in r&&r.alias===t)}function qr(e){let{stmt:t}=e,r=[],n=t.columns.flatMap(a=>a.type==="WINDOW_COL"?a.orderBy:[]),i=[...t.orderBy,...n];for(let a of i){if(a.key.type!=="FIELD_NAME")continue;let s=RE(a,e.orderSemantics);if(!s){r.push("ORDER_KEY_UNRESOLVED");continue}s.fieldType==="KSQL_AMBIGUOUS"?r.push("ORDER_KEY_AMBIGUOUS"):s.compareMode==="unsupported"&&r.push("ORDER_KEY_UNSUPPORTED")}if(r.includes("ORDER_KEY_AMBIGUOUS"))throw new Error("ArgumentError: ORDER BY key is an ambiguous column reference (reason=ORDER_KEY_AMBIGUOUS). Qualify the key with its table alias.");if(r.includes("ORDER_KEY_UNSUPPORTED")||r.includes("ORDER_KEY_UNRESOLVED")){let a=r.includes("ORDER_KEY_UNSUPPORTED")?"ORDER_KEY_UNSUPPORTED":"ORDER_KEY_UNRESOLVED";throw new Error(`ArgumentError: ORDER BY key has no canonical comparison contract (reason=${a}).`)}return t.orderBy.length>0&&n.length===0&&t.orderBy.every(a=>a.key.type==="FIELD_NAME"&&a.key.name==="$id"&&!mE(t,a.key.name))||r.push("ORDER_KEY_NOT_REST_EQUIVALENT"),e.whereCapability!=="EXACT_PUSHDOWN"&&r.push("WHERE_NOT_EXACT"),e.staticMode!=="SIMPLE"&&r.push("QUERY_SHAPE_LOCAL"),(t.limit===null||t.limit<0||t.limit>500)&&r.push("LIMIT_NOT_REST_WINDOW"),((t.offset??0)<0||(t.offset??0)>1e4)&&r.push("OFFSET_NOT_REST_WINDOW"),t.limit!==null&&t.limit>e.maxRecords&&r.push("MAX_RECORDS_WINDOW"),e.hasKlike&&r.push("KLIKE_NOT_REST_WINDOW"),r.length===0?{kind:"CANONICAL_REST_TOP_N",requiresCompleteInput:!1,localOrderBy:!1,applyLocalOffsetLimit:!1,reasonCodes:[]}:{kind:"CANONICAL_LOCAL",requiresCompleteInput:i.length>0,localOrderBy:t.orderBy.length>0,applyLocalOffsetLimit:t.orderBy.length>0,reasonCodes:[...new Set(r)]}}var hE=new Set(["RECORD_NUMBER","SINGLE_LINE_TEXT","NUMBER","CALC","DATE","DATETIME","TIME","CREATED_TIME","UPDATED_TIME","DROP_DOWN","RADIO_BUTTON","STATUS","LINK","CREATOR","MODIFIER"]);function gE(e,t){return e.columns.some(r=>"alias"in r&&r.alias===t)}function zr(e){let{stmt:t}=e,r=[];t.orderMode!=="KINTONE_NATIVE"&&r.push("KORDER_MODE_REQUIRED"),(t.from.cteName!==null||t.from.subtableCode||e.staticMode!=="SIMPLE")&&r.push("KORDER_QUERY_SHAPE_UNSUPPORTED"),e.whereCapability!=="EXACT_PUSHDOWN"&&(r.push(...(e.whereReasons??[]).filter(s=>s.functionName!==void 0).map(s=>s.code)),r.push("KORDER_WHERE_NOT_EXACT")),e.hasKlike&&r.push("KORDER_KLIKE_UNSUPPORTED"),t.orderBy.length===0&&r.push("KORDER_KEY_REQUIRED");for(let s of t.orderBy){if(s.key.type!=="FIELD_NAME"){r.push(`KORDER_KEY_NOT_DIRECT_FIELD(key=${s.key.type})`);continue}let l=s.key.name,d=e.orderSemantics.get(l);if(!d){r.push(`KORDER_KEY_UNRESOLVED(field=${l})`);continue}if(gE(t,l)){r.push(`KORDER_KEY_NOT_DIRECT_FIELD(field=${l})`);continue}if(l!=="$id"){if(!d.source||d.source.fieldCode!==l){r.push(`KORDER_KEY_NOT_DIRECT_FIELD(field=${l})`);continue}hE.has(d.fieldType)||r.push(`KORDER_TYPE_UNSUPPORTED(field=${l}, type=${d.fieldType})`)}}(t.limit===null||!Number.isSafeInteger(t.limit)||t.limit<0)&&r.push(`KORDER_LIMIT_INVALID(limit=${String(t.limit)})`);let n=t.offset??0;(!Number.isSafeInteger(n)||n<0)&&r.push(`KORDER_OFFSET_INVALID(offset=${n})`);let i=t.limit===null?Number.NaN:n+t.limit;t.limit!==null&&!Number.isSafeInteger(i)&&r.push(`KORDER_SCAN_ROWS_INVALID(offset=${n}, limit=${t.limit})`);let o=[...new Set(r)];if(o.length>0)throw new Error(`ArgumentError: KORDER BY cannot be executed (mode=KINTONE_NATIVE; ${o.join(", ")}). Use ORDER BY for canonical local ordering or simplify the query.`);let a=t.limit<=500&&n<=1e4&&t.limit<=e.maxRecords;if(!a&&i>e.maxRecords)throw new Error(`ArgumentError: KORDER BY cannot be executed (mode=KINTONE_NATIVE; KORDER_SCAN_ROWS_EXCEEDS_MAX_RECORDS(scanRows=${i}, maxRecords=${e.maxRecords})). Use ORDER BY for canonical local ordering, raise maxRecords, or reduce LIMIT/OFFSET.`);return{kind:a?"KORDER_NATIVE":"KORDER_CURSOR",requiresCompleteInput:!1,localOrderBy:!1,applyLocalOffsetLimit:!1,reasonCodes:[],scanRows:i}}var mi=class extends Error{constructor(t,r,n){super(`CursorCapacityError: host=${t} \u306E active cursor \u4E0A\u9650 ${r} \u306B ${n}ms \u4EE5\u5185\u3067\u7A7A\u304D\u304C\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002`),this.name="CursorCapacityError"}},hi=class extends Error{constructor(t){super("CursorCreateOutcomeUnknownError: Create Cursor \u306E\u6210\u5426\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093\u3002\u81EA\u52D5\u518D\u8A66\u884C\u305B\u305A\u3001\u6700\u592710\u5206+\u5B89\u5168\u4F59\u88D5\u306E\u9593\u306F\u67A0\u3092\u9694\u96E2\u3057\u307E\u3059\u3002"),this.name="CursorCreateOutcomeUnknownError",this.cause=t}},gi=class extends Error{constructor(t){let r=t instanceof Error?t.message:String(t);super(`CursorCleanupWarning: Cursor \u306E\u89E3\u653E\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093\u3002\u7D50\u679C\u306F\u6709\u52B9\u3067\u3059\u304C\u3001\u6700\u592710\u5206+\u5B89\u5168\u4F59\u88D5\u306E\u9593\u306F\u67A0\u3092\u9694\u96E2\u3057\u307E\u3059\u3002\u8A73\u7D30: ${r}`),this.name="CursorCleanupWarning",this.cause=t}};async function uu(e){let t=await e.client.openCursor({app:e.app,fields:e.fields.length>0?e.fields:void 0,query:e.query,size:500}),r=[],n=0,i,o;try{if(t.totalCount>e.offset)for(;r.length<e.limit;){let a=await t.nextPage();for(let s of a.records)if(n<e.offset)n+=1;else if(r.length<e.limit)r.push(s);else break;if(!a.next)break}}catch(a){throw i=a,a}finally{try{await t.close()}catch(a){i&&i instanceof Error?Object.defineProperty(i,"cursorCleanupError",{value:a,configurable:!0}):o=new gi(a).message}}return{records:r,cleanupWarning:o}}function ia(e){let t=[];e.where&&t.push(W(e.where));let r=e.orderBy.map(n=>{if(n.key.type!=="FIELD_NAME")throw new Error("ArgumentError: KORDER cursor key must be a direct field.");return`${n.key.name} ${n.direction==="ASC"?"asc":"desc"}`});return t.push(`order by ${r.join(", ")}`),t.join(" ")}function et(e,t){let r={};for(let[n,i]of Object.entries(e)){let o=i.value,a=o==null?"":typeof o=="string"?o:JSON.stringify(o);t&&(r[`${t}.${n}`]=a),r[n]=a}return r}function yE(e,t,r,n={}){let{on:i,type:o}=r,a=i.left.tableAlias?`${i.left.tableAlias}.${i.left.field}`:i.left.field,s=i.right.tableAlias?`${i.right.tableAlias}.${i.right.field}`:i.right.field;if(cu(e,a,n.leftColumns),cu(t,s,n.rightColumns),o==="RIGHT"){let c=new Map;for(let E of e){let R=E[a]??"",h=c.get(R);h?h.push(E):c.set(R,[E])}let u={};for(let E of n.leftColumns??Object.keys(e[0]??{}))u[E]="";let f=[];for(let E of t){let R=E[s]??"",h=c.get(R)??[];if(h.length>0)for(let m of h)f.push({...m,...E});else f.push({...u,...E})}return f}let l=new Map;for(let c of t){let u=c[s]??"",f=l.get(u);f?f.push(c):l.set(u,[c])}let d=[],p={};for(let c of n.rightColumns??Object.keys(t[0]??{}))p[c]="";for(let c of e){let u=c[a]??"",f=l.get(u)??[];if(f.length>0)for(let E of f)d.push({...c,...E});else o==="LEFT"&&d.push({...c,...p})}return d}function cu(e,t,r){if(e.length>0?e.some(i=>!Object.prototype.hasOwnProperty.call(i,t)):r!==void 0&&!r.includes(t))throw new Error(`ArgumentError: JOIN key ${t} is not available in the materialized table.`)}function AE(e,t,r,n,i){return t===null?e:e.filter(o=>q(t,o,r,n,i))}function hu(e){return e.some(t=>t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"||t.type==="STRFUNC_COL"&&Xr(t.expr)||t.type==="SCALAR_VALUE_COL"&&Rt(t.expr))}function SE(e,t,r,n){let i=new Map;for(let a of e){let s=t.map(d=>wE(d,a)).join("\0"),l=i.get(s);l?l.push(a):i.set(s,[a])}i.size===0&&t.length===0&&hu(r)&&i.set("",[]);let o=[];for(let a of i.values()){let s={...a[0]};for(let l of t)l.type==="ARITH_KEY"?s[pa(l.expr)]=String(ee(l.expr,a[0])):l.type==="FUNC_KEY"&&(s[mt(l.expr)]=te(l.expr,a[0]));gu(s,a,r,n),o.push(s)}return o}function TE(e,t,r,n,i={}){let o=[],a=0,s=()=>{if(a++,i.maxGeneratedRows!==void 0&&a>i.maxGeneratedRows)throw new Error(`LimitError: B65 generated grouping rows ${a} exceed limit ${i.maxGeneratedRows} (reason=GROUPING_OUTPUT_LIMIT_EXCEEDED).`)};for(let l of t.sets){let d={children:new Map},p=[];for(let u of e){let f=d;for(let E of l.items){let R=pu(E,u),h=f.children.get(R);h||(h={children:new Map},f.children.set(R,h)),f=h}f.rows||(s(),f.rows=[],p.push(f.rows)),f.rows.push(u)}e.length===0&&l.items.length===0&&(s(),d.rows=[],p.push(d.rows));let c=new Set(l.items.map(u=>u.canonicalId));for(let u of p){let f={...u[0]},E=new Map;for(let R of l.items)E.has(R.canonicalId)||E.set(R.canonicalId,pu(R,u[0]));for(let R of t.allItems){let h=E.get(R.canonicalId)??"";f[R.directKey]=h,R.unqualifiedBridgeKey!==null&&(f[R.unqualifiedBridgeKey]=h)}gu(f,u,r,n),Qs(f,c),o.push(f)}}return o}function pu(e,t){return t?t[e.directKey]??(e.unqualifiedBridgeKey===null?void 0:t[e.unqualifiedBridgeKey])??"":""}function gu(e,t,r,n){for(let i of r)if(i.type==="AGGREGATE"){let o=Se(i.func,i.distinct,i.arg),a=String(sa(i.func,i.distinct,i.arg,i.separator,t,n));e[i.alias??o]=a,i.alias&&(e[o]=a)}else if(i.type==="ARITH_AGG_COL"){let o=i.alias??dr(i.expr);e[o]=String(yi(i.expr,t,n))}else if(i.type==="STRFUNC_COL"&&Xr(i.expr)){let o=i.alias??mt(i.expr),a=da(i.expr,t,n);e[o]=te(a,e)}else if(i.type==="SCALAR_VALUE_COL"&&Rt(i.expr)){let o=i.alias??Ke(i.expr),a=Ai(i.expr,t,n);e[o]=String(ae(a,e))}}function wE(e,t){return e.type==="FIELD_NAME"?t[e.name]??"":e.type==="FUNC_KEY"?te(e.expr,t):String(ee(e.expr,t))}function sa(e,t,r,n,i,o){if(r.type==="WILDCARD")return e==="COUNT"?i.length:0;let a=[];for(let f of i){let E;if(r.type==="FIELD_REF"){let R=f[r.field];if(R===void 0||R===""&&e!=="MIN"&&e!=="MAX")continue;E=R}else if(r.type==="ARITH"||r.type==="NUMBER"||r.type==="STRING_FUNC"){let R=ee(r,f);if(isNaN(R))continue;E=String(R)}else{let R=ft(r,f);if(R===null||R===""&&e!=="MIN"&&e!=="MAX"||typeof R=="number"&&Number.isNaN(R))continue;E=String(R)}a.push(E)}let s=e==="STDDEV_POP"||e==="STDDEV_SAMP"||e==="VAR_POP"||e==="VAR_SAMP"||e==="MEDIAN",l=s?a.map(f=>{let E=Number(f);if(!Number.isFinite(E))throw new Error(`ArgumentError: ${e} \u306E\u5F15\u6570\u306B\u975E\u6570\u5024\u307E\u305F\u306F\u975E\u6709\u9650\u306E\u5024\u304C\u3042\u308A\u307E\u3059: ${f}`);return E}):null,d=t?s?[...new Set(l)]:[...new Set(a)]:s?l:a;if(e==="COUNT")return d.length;if(e==="GROUP_CONCAT")return d.join(n??",");let p=e==="MIN"||e==="MAX"||e==="MODE"?yu(r,o):void 0,c=typeof p=="string"?x(p):p??(r.type==="FIELD_REF"||r.type==="FIELD"||r.type==="STRING"||r.type==="CONCAT_OP"||r.type==="CASE_WHEN"?x("string"):x("number"));if(e==="MODE"){if(a.length===0)return"";let f=new Map;for(let h of a)f.set(h,(f.get(h)??0)+1);let E="",R=0;for(let[h,m]of f){if(m>R){E=h,R=m;continue}if(m!==R)continue;let g=It(h,E,c);(g<0||g===0&&dt(h,E)<0)&&(E=h)}return E}if(e==="MIN"||e==="MAX"){let f=d;if(f.length===0)return 0;let E=f[0];for(let R of f.slice(1)){let h=It(R,E,c);(e==="MAX"&&h>0||e==="MIN"&&h<0)&&(E=R)}return E}let u=s?d:d.map(Number);switch(e){case"SUM":return u.reduce((f,E)=>f+E,0);case"AVG":return u.length===0?0:u.reduce((f,E)=>f+E,0)/u.length;case"MEDIAN":{if(u.length===0)return"";let f=[...u].sort((R,h)=>R-h),E=Math.floor(f.length/2);return f.length%2===1?f[E]:(f[E-1]+f[E])/2}case"VAR_POP":case"VAR_SAMP":case"STDDEV_POP":case"STDDEV_SAMP":{let f=e==="VAR_SAMP"||e==="STDDEV_SAMP";if(u.length===0||f&&u.length<2)return"";let E=u[0],R=0,h=0,m=0;for(let T of u){let S=T-E;R++;let P=S-h;h+=P/R,m+=P*(S-h)}let g=Math.max(0,m/(f?R-1:R));return e==="STDDEV_POP"||e==="STDDEV_SAMP"?Math.sqrt(g):g}}}function IE(e){let t=e.indexOf(".");return t>0?{type:"FIELD",tableAlias:e.slice(0,t),field:e.slice(t+1)}:{type:"FIELD",tableAlias:null,field:e}}function yi(e,t,r){if(e.type==="NUMBER")return e.value;if(e.type==="AGG_REF")return Number(sa(e.func,e.distinct,e.arg,e.separator,t,r));let n=yi(e.left,t,r),i=yi(e.right,t,r);switch(e.op){case"+":return n+i;case"-":return n-i;case"*":return n*i;case"/":return i!==0?n/i:NaN;case"%":return i!==0?n%i:NaN}}function dr(e){return wr(e)}function yu(e,t){if(e.type==="FIELD_REF")return t?.(IE(e.field))??"string";if(e.type==="FIELD")return t?.(e)??"string";if(e.type==="NUMBER"||e.type==="ARITH"||e.type==="SCALAR_ARITH")return"number";if(e.type==="STRING"||e.type==="CONCAT_OP"||e.type==="VARIABLE")return"string";if(e.type==="STRING_FUNC"){let o=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);return e.func==="CAST"?e.args[1]?.type==="STRING"&&e.args[1].value==="NUMBER"?"number":"string":o.has(e.func)?"number":"string"}let r=[...e.branches.map(o=>o.result),...e.elseResult===null?[]:[e.elseResult]].filter(o=>o.type!=="ARRAY").map(o=>yu(o,t));if(r.length===0||r.some(o=>o===void 0))return"string";let n=r.map(o=>typeof o=="string"?o:o.compareMode==="number"||o.compareMode==="recordNumber"?"number":"string");if(!n.every(o=>o===n[0]))return"string";let i=r[0];return r.every(o=>JSON.stringify(o)===JSON.stringify(i))?i:n[0]}function bE(e,t,r,n){return t===null?e:e.filter(i=>q(t,i,r,void 0,n))}function PE(e,t,r,n,i){if(e.length===0)return e;let o=NE(e,t,{scalarCache:r,resolveFieldType:n,resolveFieldSemantics:i}),a=new Set;return e.filter(s=>{let l=o(s);return a.has(l)?!1:(a.add(l),!0)})}function NE(e,t,r){let n=[];if(t.some(a=>a.type==="WILDCARD")){let a=new Set;for(let s of e)for(let l of Object.keys(s))a.add(l);n=[...a].sort()}let i=[];if(t.some(a=>a.type==="PARENT_WILDCARD")){let a=new Set;for(let s of e)for(let l of Object.keys(s))l.startsWith("_p.")&&a.add(l);i=[...a].sort()}let o={...r,wildcardKeys:n,parentWildcardKeys:i};return a=>JSON.stringify(DE(t,a,o))}function la(e,t,r,n,i,o){return t.length===0?e:Au(e,t,r,n,i,o).rows.map(a=>a.row)}function Au(e,t,r,n,i,o){let a=t.map(({key:d})=>{if(d.type==="ARITH_KEY")return{semantics:x("number")};if(d.type==="FUNC_KEY")return{semantics:x(Su.has(d.expr.func)?"number":"string")};if(d.type==="GROUPING_KEY")return{semantics:x("number")};let p=i?.get(d.name);if(p)return{semantics:p};let c=r?.get(d.name);return c?{semantics:{fieldType:"MULTI_SELECT",compareMode:"option",inSubtable:!1,requiresCollectionOperators:!1,optionOrder:c}}:{semantics:x(n?.get(d.name)??"string")}}),s=e.map(d=>({row:d,keys:t.map(({key:p},c)=>({s:LE(p,d,o)}))})),l=(d,p)=>CE(d,p,t,a);return s.sort(l),{rows:s,compare:l}}function CE(e,t,r,n){for(let i=0;i<r.length;i++){let o=OE(e.keys[i],t.keys[i],n[i]);if(o!==0)return r[i].direction==="ASC"?o:-o}return 0}function OE(e,t,r){return It(e.s,t.s,r.semantics)}var Su=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function LE(e,t,r){switch(e.type){case"FIELD_NAME":return r?.(e.name,t)??t[e.name]??"";case"ARITH_KEY":return String(ee(e.expr,t));case"FUNC_KEY":return te(e.expr,t);case"GROUPING_KEY":return ar(e.ref,t)}}function ua(e,t,r,n){let i=new Map;for(let[o,a]of e.entries()){if(!("alias"in a)||a.alias===null)continue;let s=a.alias;switch(a.type){case"FIELD":i.set(s,l=>Xe(l,a.field));break;case"LITERAL_COL":i.set(s,()=>a.value);break;case"AGGREGATE":{let l=Se(a.func,a.distinct,a.arg);i.set(s,d=>d[s]??d[l]??"0");break}case"ARITH_AGG_COL":{let l=dr(a.expr);i.set(s,d=>d[s]??d[l]??"0");break}case"WINDOW_COL":i.set(s,l=>l[s]??"");break;case"ARITH_COL":i.set(s,l=>String(ee(a.expr,l)));break;case"STRFUNC_COL":{let l=mt(a.expr);i.set(s,d=>Xr(a.expr)?d[s]??d[l]??te(a.expr,d,r,n):te(a.expr,d,r,n));break}case"CASE_COL":i.set(s,l=>we(a.expr,l,r,n));break;case"SCALAR_VALUE_COL":{let l=Ke(a.expr);i.set(s,d=>Rt(a.expr)?d[s]??d[l]??"":String(ae(a.expr,d,r,n)));break}case"SCALAR_SUBQUERY_COL":i.set(s,()=>t?.get(o)??"");break;case"GROUPING_COL":i.set(s,l=>ar(a.ref,l));break;case"VARIABLE_COL":break}}return(o,a)=>i.get(o)?.(a)}function ca(e,t,r,n,i){let o=t.filter(a=>a.type==="WINDOW_COL");if(e.length===0||o.length===0)return e;for(let a of o){let s=new Map;for(let l of e){let d=JSON.stringify(a.partitionBy.map(c=>_E(l,c))),p=s.get(d);p?p.push(l):s.set(d,[l])}for(let l of s.values()){let d=Au(l,a.orderBy,r,n,i),p=d.rows,c=1,u=1;for(let f=0;f<p.length;f++){f>0&&d.compare(p[f-1],p[f])!==0&&(c=f+1,u++);let E=a.func==="ROW_NUMBER"?f+1:a.func==="RANK"?c:u;p[f].row[a.alias]=String(E)}}}return e}function _E(e,t){let r=t.tableAlias?`${t.tableAlias}.${t.field}`:t.field;return Xe(e,r)}function Si(e,t,r){let n=r??0;return t===null?e.slice(n):e.slice(n,n+t)}function aa(e,t,r,n={}){switch(e.type){case"VARIABLE_COL":throw new Error(`internal error: unresolved SELECT variable @${e.name}`);case"WILDCARD":return{kind:"EXPANDED",entries:(n.wildcardKeys??Object.keys(t)).map(o=>[o,t[o]!==void 0?t[o]:null])};case"PARENT_WILDCARD":return{kind:"EXPANDED",entries:(n.parentWildcardKeys??Object.keys(t).filter(o=>o.startsWith("_p.")).sort()).map(o=>[o,t[o]!==void 0?t[o]:null])};case"FIELD":return Xe(t,e.field);case"LITERAL_COL":return e.value;case"AGGREGATE":{let i=Se(e.func,e.distinct,e.arg);return t[e.alias??i]??t[i]??"0"}case"ARITH_AGG_COL":{let i=e.alias??dr(e.expr);return t[i]??"0"}case"ARITH_COL":return String(ee(e.expr,t));case"CASE_COL":return we(e.expr,t,n.resolveFieldType,n.resolveFieldSemantics);case"GROUPING_COL":return ar(e.ref,t);case"STRFUNC_COL":{let i=mt(e.expr);return Xr(e.expr)?t[e.alias??i]??t[i]??te(e.expr,t,n.resolveFieldType,n.resolveFieldSemantics):te(e.expr,t,n.resolveFieldType,n.resolveFieldSemantics)}case"SCALAR_VALUE_COL":{let i=Ke(e.expr);return Rt(e.expr)?t[e.alias??i]??t[i]??"":String(ae(e.expr,t,n.resolveFieldType,n.resolveFieldSemantics))}case"SCALAR_SUBQUERY_COL":return n.scalarCache?.get(r)??"";case"WINDOW_COL":return t[e.alias]??""}}function DE(e,t,r={}){return e.map((n,i)=>{let o=aa(n,t,i,r);return typeof o=="string"?o:o.entries.map(([,a])=>a)})}function Ti(e,t,r,n,i,o,a){if(t.length===1&&t[0].type==="WILDCARD"){let u=e.map(E=>{let R=Ru(fu(E),a),h=aa(t[0],E,0,{wildcardKeys:Object.keys(R)}),m={};if(typeof h!="string")for(let[g,T]of h.entries)T!==null&&(m[g]=T);return m}),f=u.length>0?Object.keys(u[0]):[...i??[]];return{rows:u,columns:f}}let s=UE(t),l=t.some(u=>u.type==="WILDCARD"||u.type==="PARENT_WILDCARD"),d=l?null:vE(t,s),p=d??[];return l&&e.length===0?{rows:[],columns:kE(t,s)}:{rows:e.map((u,f)=>{let E={},R={scalarCache:r,resolveFieldType:n,resolveFieldSemantics:o,wildcardKeys:Object.keys(Ru(fu(u),a)),parentWildcardKeys:Object.keys(u).filter(h=>h.startsWith("_p.")).sort()};for(let[h,m]of t.entries()){let g=aa(m,u,h,R);switch(m.type){case"VARIABLE_COL":break;case"WILDCARD":if(typeof g!="string")for(let[T,S]of g.entries)S!==null&&(E[T]=S);break;case"PARENT_WILDCARD":{if(typeof g!="string")for(let[T,S]of g.entries)S!==null&&(E[T]=S),f===0&&p.push(T);break}case"FIELD":{let T=d?.[h]??m.alias??s.get(h)??m.field;E[T]=g,d===null&&f===0&&p.push(T);break}case"LITERAL_COL":{let T=d?.[h]??m.alias??`'${m.value}'`;E[T]=g,d===null&&f===0&&p.push(T);break}case"AGGREGATE":{let T=Se(m.func,m.distinct,m.arg),S=d?.[h]??m.alias??T;E[S]=g,d===null&&f===0&&p.push(S);break}case"ARITH_AGG_COL":{let T=d?.[h]??m.alias??dr(m.expr);E[T]=g,d===null&&f===0&&p.push(T);break}case"ARITH_COL":{let T=d?.[h]??m.alias??pa(m.expr);E[T]=g,d===null&&f===0&&p.push(T);break}case"CASE_COL":{let T=d?.[h]??m.alias??"case";E[T]=g,d===null&&f===0&&p.push(T);break}case"GROUPING_COL":{let T=d?.[h]??m.alias??`GROUPING(${m.ref.field.tableAlias?`${m.ref.field.tableAlias}.`:""}${m.ref.field.field})`;E[T]=g,d===null&&f===0&&p.push(T);break}case"STRFUNC_COL":{let T=d?.[h]??m.alias??mt(m.expr);E[T]=g,d===null&&f===0&&p.push(T);break}case"SCALAR_VALUE_COL":{let T=d?.[h]??m.alias??Ke(m.expr);E[T]=g,d===null&&f===0&&p.push(T);break}case"SCALAR_SUBQUERY_COL":{let T=d?.[h]??m.alias??"(subquery)";E[T]=g,d===null&&f===0&&p.push(T);break}case"WINDOW_COL":{let T=d?.[h]??m.alias;E[T]=g,d===null&&f===0&&p.push(T);break}}}return E}),columns:p}}function vE(e,t){return e.map((r,n)=>Tu(r,n,t))}function kE(e,t){let r=[],n=new Set;for(let[i,o]of e.entries()){if(o.type==="WILDCARD"||o.type==="PARENT_WILDCARD")continue;let a=Tu(o,i,t);n.has(a)||(n.add(a),r.push(a))}return r}function Tu(e,t,r){switch(e.type){case"VARIABLE_COL":throw new Error(`internal error: unresolved SELECT variable @${e.name}`);case"FIELD":return e.alias??r.get(t)??e.field;case"LITERAL_COL":return e.alias??`'${e.value}'`;case"AGGREGATE":return e.alias??Se(e.func,e.distinct,e.arg);case"ARITH_AGG_COL":return e.alias??dr(e.expr);case"ARITH_COL":return e.alias??pa(e.expr);case"CASE_COL":return e.alias??"case";case"STRFUNC_COL":return e.alias??mt(e.expr);case"SCALAR_VALUE_COL":return e.alias??Ke(e.expr);case"GROUPING_COL":return e.alias??`GROUPING(${e.ref.field.tableAlias?`${e.ref.field.tableAlias}.`:""}${e.ref.field.field})`;case"SCALAR_SUBQUERY_COL":return e.alias??"(subquery)";case"WINDOW_COL":return e.alias;case"WILDCARD":case"PARENT_WILDCARD":throw new Error("internal: computeOutputKey received a wildcard column")}}function UE(e){let t=new Map;for(let n of e){if(n.type!=="FIELD"||n.alias)continue;let i=du(n.field);t.set(i,(t.get(i)??0)+1)}let r=new Map;for(let[n,i]of e.entries()){if(i.type!=="FIELD"||i.alias)continue;let o=du(i.field),a=(t.get(o)??0)>1,s=i.field.includes(".")&&!i.field.startsWith("_p.");r.set(n,a&&s?i.field:o)}return r}function du(e){if(e.startsWith("_p."))return e;let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function fu(e){let t={};for(let[r,n]of Object.entries(e))r.startsWith("_p.")||(t[r]=n);return t}function pa(e){let t=r=>r.type==="FIELD_REF"?r.field:r.type==="NUMBER"?G(r):r.type==="STRING_FUNC"?mt(r):`(${t(r.left)}${r.op}${t(r.right)})`;return e.type==="ARITH"?`${t(e.left)}${e.op}${t(e.right)}`:t(e)}function mt(e){let t=e.args.map(r=>r.type==="AGG_REF"||r.type==="AGG_ARITH"?dr(r):Ke(r));return`${e.func}(${t.join(",")})`}function Ke(e){switch(e.type){case"STRING":return`'${e.value}'`;case"NUMBER":return G(e);case"VARIABLE":return`@${e.name}`;case"FIELD":return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;case"STRING_FUNC":return mt(e);case"CASE_WHEN":return"case";case"SCALAR_ARITH":return`${Ke(e.left)}${e.op}${Ke(e.right)}`;case"CONCAT_OP":return`${Ke(e.left)}||${Ke(e.right)}`}}function ME(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:Rt(e)}function Rt(e){return e.type==="STRING_FUNC"?Xr(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?Rt(e.left)||Rt(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>Eu(t.result))||e.elseResult!==null&&Eu(e.elseResult):!1}function Eu(e){return e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?!1:Rt(e)}function Xr(e){return e.args.some(t=>ME(t))}function xE(e,t,r){if(e.type==="AGG_REF"){let n=sa(e.func,e.distinct,e.arg,e.separator,t,r);return typeof n=="number"?{type:"NUMBER",value:n,raw:String(n)}:{type:"STRING",value:n}}if(e.type==="AGG_ARITH"){let n=yi(e,t,r);return{type:"NUMBER",value:n,raw:String(n)}}return e.type==="STRING_FUNC"?da(e,t,r):Ai(e,t,r)}function Ai(e,t,r){return e.type==="STRING_FUNC"?da(e,t,r):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?{...e,left:Ai(e.left,t,r),right:Ai(e.right,t,r)}:e}function da(e,t,r){return{type:"STRING_FUNC",func:e.func,args:e.args.map(n=>xE(n,t,r))}}function Ru(e,t){if(!t||t.size===0)return e;let r={};for(let[n,i]of Object.entries(e))[...t].some(o=>n.startsWith(`${o}.`))||(r[n]=i);return r}function mu(e,t){if(e!==void 0)return t?e.flatMap(r=>[`${t}.${r}`,r]):[...e]}function oa(e,t,r){if(!(e===void 0&&t===void 0&&r.length===0))return[...new Set([...e??[],...t??[],...Object.keys(r[0]??{})])]}function FE(e){let t=new Map;for(let r of e)!("alias"in r)||!r.alias||(r.type==="ARITH_COL"||r.type==="ARITH_AGG_COL"||r.type==="WINDOW_COL"?t.set(r.alias,x("number")):r.type==="AGGREGATE"?r.func==="COUNT"||r.func==="SUM"||r.func==="AVG"||r.func==="STDDEV_POP"||r.func==="STDDEV_SAMP"||r.func==="VAR_POP"||r.func==="VAR_SAMP"||r.func==="MEDIAN"?t.set(r.alias,x("number")):r.func==="GROUP_CONCAT"&&t.set(r.alias,x("string")):r.type==="LITERAL_COL"||r.type==="CASE_COL"||r.type==="SCALAR_SUBQUERY_COL"||r.type==="SCALAR_VALUE_COL"?t.set(r.alias,x("string")):r.type==="STRFUNC_COL"&&t.set(r.alias,x(Su.has(r.expr.func)?"number":"string")));return t}function fa(e){let{stmt:t,tables:r,scalarCache:n,optionOrders:i,sortKinds:o,orderSemantics:a,fieldTypeResolver:s,fieldSemanticsResolver:l,havingFieldTypeResolver:d,havingFieldSemanticsResolver:p,aggregateSortKindResolver:c,appliedKlikes:u,sourceColumns:f,tableColumns:E,hiddenQualifiedAliases:R,resolvedGroupingSpec:h}=e,m=FE(t.columns);for(let[_,I]of a??[])m.set(_,I);let g=[],T=t.from.alias;g=(r.get(T)??r.get(null)??[]).map(_=>et(_,T));let P=oa(mu(E?.get(T),T),void 0,g);for(let _ of t.joins){let I=_.table.alias,C=(r.get(I)??[]).map(O=>et(O,I)),y=oa(mu(E?.get(I),I),void 0,C);g=yE(g,C,_,{leftColumns:P,rightColumns:y}),P=oa(P,y,g)}g=AE(g,t.where,s,u,l);let w=ne(t);if(w.type==="GROUPING_SETS"){if(!h)throw new Error("internal error: B65 grouping sets require a metadata-resolved grouping spec.");g=TE(g,h,t.columns,c,{maxGeneratedRows:5e4})}else(w.type==="PLAIN"||hu(t.columns))&&(g=SE(g,w.type==="PLAIN"?w.allItems:[],t.columns,c));return g=bE(g,t.having,d,p),g=ca(g,t.columns,i,o,m),t.distinct&&(g=PE(g,t.columns,n,s,l)),g=la(g,t.orderBy,i,o,m,ua(t.columns,n,s,l)),g=Si(g,t.limit,t.offset),Ti(g,t.columns,n,s,f,l,R)}function wu(e,t){let r=[];for(let n of e){let i=Ea(n.$id?.value),o=KE(n[t]?.value);if(o.length!==0)for(let a=0;a<o.length;a++){let s=o[a],l={_pid:{value:i},_rid:{value:s.id??""},_idx:{value:String(a)}};for(let[d,p]of Object.entries(n)){if(d===t)continue;let c=Ea(p?.value);l[`_p.${d}`]={value:c}}for(let[d,p]of Object.entries(s.value??{}))l[d]={value:Ea(p?.value)};r.push(l)}}return r}function KE(e){return Array.isArray(e)?e.filter(t=>!!t&&typeof t=="object"):[]}function Ea(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return String(e);try{return JSON.stringify(e)}catch{return String(e)}}function Iu(e){return["$id",...new Set([...e.topLevel.map(t=>t.code).filter(t=>t!=="$id"&&t!=="$revision"),...e.subtables.keys()])]}function bu(e,t){let r=Jr(e);for(let[n,i]of Object.entries(t))r[n]=Jr(i);return r}function Pu(e){let t=[...e.preErrors.map(i=>Ra(i)),...e.postImageErrors.map(i=>Ra(i,i.$err_subtable!=="")),...e.checkErrors.map(i=>Ra(i))],r=new Set;t.length>0&&r.add(e.rowNumber);let n={};for(let i of new Set(e.setFields)){if(!Object.prototype.hasOwnProperty.call(e.normalizedPostImage,i))throw new Error(`InternalError: normalized post-image is missing SET field: ${i}`);n[i]=Jr(e.normalizedPostImage[i])}return{errors:t,invalidRows:r.size,invalidRowNumbers:r,writeRecord:n}}function Ra(e,t=!1){return{...e,$err_value:t?e.$err_value??"":"",$err_subtable:t?e.$err_subtable??"":"",$err_subrow:t?e.$err_subrow??"":"",$err_subrow_id:t?e.$err_subrow_id??"":""}}function Jr(e,t=new Map){if(e===null||typeof e!="object")return e;let r=e,n=t.get(r);if(n!==void 0)return n;if(Array.isArray(e)){let o=[];t.set(r,o);for(let a of e)o.push(Jr(a,t));return o}let i={};t.set(r,i);for(let[o,a]of Object.entries(e))i[o]=Jr(a,t);return i}var Be=["=","!=",">","<",">=","<="],BE=new Set(["DATE","DATETIME","CREATED_TIME","UPDATED_TIME"]),$E=new Set(Be),GE=["=","!=","in","not in"],VE=new Map([["RECORD_NUMBER",new Set([...Be,"in","not in"])],["__ID__",new Set([...Be,"in","not in"])],["CREATOR",new Set(["in","not in"])],["MODIFIER",new Set(["in","not in"])],["CREATED_TIME",new Set(Be)],["UPDATED_TIME",new Set(Be)],["DATE",new Set(Be)],["TIME",new Set(Be)],["DATETIME",new Set(Be)],["SINGLE_LINE_TEXT",new Set(["=","!=","in","not in","like","not like"])],["LINK",new Set(["=","!=","in","not in","like","not like"])],["NUMBER",new Set([...Be,"in","not in"])],["CALC",new Set([...Be,"in","not in"])],["MULTI_LINE_TEXT",new Set(["like","not like"])],["RICH_TEXT",new Set(["like","not like"])],["CHECK_BOX",new Set(["in","not in"])],["RADIO_BUTTON",new Set(["in","not in"])],["DROP_DOWN",new Set(["in","not in"])],["MULTI_SELECT",new Set(["in","not in"])],["FILE",new Set(["like","not like"])],["USER_SELECT",new Set(["in","not in"])],["ORGANIZATION_SELECT",new Set(["in","not in"])],["GROUP_SELECT",new Set(["in","not in"])],["STATUS",new Set(GE)]]),Nu=new Set(["RECORD_NUMBER","__ID__","CREATOR","MODIFIER","CREATED_TIME","UPDATED_TIME","DATE","TIME","DATETIME","SINGLE_LINE_TEXT","LINK","NUMBER","CALC","MULTI_LINE_TEXT","RICH_TEXT","RADIO_BUTTON","DROP_DOWN","STATUS","KSQL_STRING","KSQL_NUMBER","KSQL_BOOLEAN"]),Cu=new Set(["CHECK_BOX","MULTI_SELECT","FILE","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE","CATEGORY"]);function WE(e){return VE.get(e)??new Set}function Lt(e,t){return e===null?{capability:"EXACT_PUSHDOWN",reasons:[{code:"WHERE_EXACT"}]}:Zr(e,t)}function Zr(e,t){switch(e.type){case"BOOLEAN":return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]};case"BINARY":return HE(e.op,e.left,e.right,t);case"NULL_CHECK":return e.field.type!=="FIELD"?ma():zE(e.field,e.not?"IS NOT NULL":"IS NULL",t);case"EXISTS":return ma();case"GROUP":return Zr(e.expr,t);case"NOT":{let r=Zr(e.expr,t);return r.capability!=="SUPERSET_PREFILTER"?r:Ou(r.reasons)?en({capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"},...r.reasons]}):{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]}}case"LOGICAL":{let r=Zr(e.left,t),n=Zr(e.right,t);return JE(e.op,r,n)}}}function HE(e,t,r,n){if(r.type==="KINTONE_FUNC"&&Ne(r.name))return jE(e,t,r,n);if(t.type!=="FIELD")return ma();let i=n(t);if(!i)return Ii("WHERE_FIELD_UNRESOLVED",t.field,void 0,wi(e));if(!XE(i.fieldType,e))return Ii("WHERE_OPERATOR_UNSUPPORTED",t.field,i.fieldType,wi(e));let o=wi(e),a=WE(i.fieldType),s=r.type==="STRING"||r.type==="NUMBER"||r.type==="IN_LIST"||YE(r),l=!i.requiresCollectionOperators||o!=="="&&o!=="!=",d=e==="LIKE"||e==="NOT_LIKE";return s&&l&&a.has(o)&&!d?{capability:"EXACT_PUSHDOWN",reasons:[{code:"WHERE_EXACT",field:t.field,fieldType:i.fieldType,operator:o}]}:{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_RESIDUAL",field:t.field,fieldType:i.fieldType,operator:o}]}}function YE(e){return e.type==="KINTONE_FUNC"&&(e.name==="TODAY"||e.name==="NOW"||e.name==="LOGINUSER")}function jE(e,t,r,n){let i=wi(e),o=r.name;if(t.type!=="FIELD")return Qr("WHERE_RELATIVE_DATE_CONTEXT_UNSUPPORTED",o,void 0,void 0,i);let a=n(t);return a?qE(r)?$E.has(i)?!BE.has(a.fieldType)||a.inSubtable||a.requiresCollectionOperators?Qr("WHERE_RELATIVE_DATE_FIELD_TYPE_UNSUPPORTED",o,t.field,a.fieldType,i):{capability:"EXACT_PUSHDOWN",reasons:[{code:"WHERE_EXACT",functionName:o,field:t.field,fieldType:a.fieldType,operator:i}]}:Qr("WHERE_RELATIVE_DATE_OPERATOR_UNSUPPORTED",o,t.field,a.fieldType,i):Qr("WHERE_RELATIVE_DATE_ARGUMENT_INVALID",o,t.field,a.fieldType,i):Qr("WHERE_RELATIVE_DATE_FIELD_TYPE_UNSUPPORTED",o,t.field,void 0,i)}function qE(e){if(!("args"in e)||!e.args)return!1;switch(e.name){case"YESTERDAY":case"TOMORROW":case"THIS_YEAR":case"LAST_YEAR":case"NEXT_YEAR":return e.args.kind==="NONE";case"FROM_TODAY":return e.args.kind==="FROM_TODAY"&&Number.isSafeInteger(e.args.offset)&&e.args.offsetText===String(e.args.offset===0?0:e.args.offset)&&(e.args.unit==="DAYS"||e.args.unit==="WEEKS"||e.args.unit==="MONTHS"||e.args.unit==="YEARS");case"THIS_WEEK":case"LAST_WEEK":case"NEXT_WEEK":return e.args.kind==="WEEK"&&(e.args.weekday===null||e.args.weekday==="SUNDAY"||e.args.weekday==="MONDAY"||e.args.weekday==="TUESDAY"||e.args.weekday==="WEDNESDAY"||e.args.weekday==="THURSDAY"||e.args.weekday==="FRIDAY"||e.args.weekday==="SATURDAY");case"THIS_MONTH":case"LAST_MONTH":case"NEXT_MONTH":return e.args.kind==="MONTH"&&(e.args.day===null||e.args.day==="LAST"||Number.isInteger(e.args.day)&&e.args.day>=1&&e.args.day<=31);default:return!1}}function zE(e,t,r){let n=r(e);return n?!Nu.has(n.fieldType)&&!Cu.has(n.fieldType)?Ii("WHERE_OPERATOR_UNSUPPORTED",e.field,n.fieldType,t):{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_RESIDUAL",field:e.field,fieldType:n.fieldType,operator:t}]}:Ii("WHERE_FIELD_UNRESOLVED",e.field,void 0,t)}function XE(e,t){return Nu.has(e)?!0:Cu.has(e)?t==="="||t==="!="||t==="<>"||t==="IN"||t==="NOT_IN"||t==="LIKE"||t==="NOT_LIKE"||t==="KLIKE"||t==="NOT_KLIKE":!1}function wi(e){switch(e){case"<>":return"!=";case"IN":return"in";case"NOT_IN":return"not in";case"LIKE":case"KLIKE":return"like";case"NOT_LIKE":case"NOT_KLIKE":return"not like";default:return e}}function JE(e,t,r){let n=[...t.reasons,...r.reasons];return t.capability==="UNSUPPORTED"||r.capability==="UNSUPPORTED"?en({capability:"UNSUPPORTED",reasons:n}):t.capability==="EXACT_PUSHDOWN"&&r.capability==="EXACT_PUSHDOWN"?{capability:"EXACT_PUSHDOWN",reasons:n}:e==="AND"&&(t.capability==="EXACT_PUSHDOWN"||r.capability==="EXACT_PUSHDOWN"||t.capability==="SUPERSET_PREFILTER"||r.capability==="SUPERSET_PREFILTER")?en({capability:"SUPERSET_PREFILTER",reasons:[{code:"WHERE_SUPERSET_PREFILTER"},...n]}):en({capability:"LOCAL_ONLY",reasons:n})}function ma(){return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]}}function Ii(e,t,r,n){return{capability:"UNSUPPORTED",reasons:[{code:e,field:t,fieldType:r,operator:n}]}}function Qr(e,t,r,n,i){return en({capability:"UNSUPPORTED",reasons:[{code:e,functionName:t,field:r,fieldType:n,operator:i}]})}function Ou(e){return e.some(t=>t.functionName!==void 0)}function en(e){if(e.capability==="EXACT_PUSHDOWN"||!Ou(e.reasons)||e.reasons.some(r=>r.code==="WHERE_RELATIVE_DATE_REQUIRES_EXACT_PUSHDOWN"))return e;let t=e.reasons.find(r=>r.functionName!==void 0);return{capability:e.capability,reasons:[...e.reasons,{code:"WHERE_RELATIVE_DATE_REQUIRES_EXACT_PUSHDOWN",functionName:t.functionName,field:t.field,fieldType:t.fieldType,operator:t.operator}]}}function Du(e,t){let r=[],n=new Set,i=o=>{if(Array.isArray(o)){o.forEach(i);return}if(o===null||typeof o!="object")return;let a=o;if(a.type==="KINTONE_FUNC"&&typeof a.name=="string"&&Ne(a.name)&&!n.has(a.name)){n.add(a.name),r.push(a.name);return}t&&a.type==="SELECT"||Object.values(a).forEach(i)};return i(e),r}function ga(e){return Du(e,!0)}function bi(e,t){let r=[],n=new Set,i=o=>{if(Array.isArray(o)){o.forEach(i);return}if(o===null||typeof o!="object"||n.has(o))return;n.add(o);let a=o;if(a.type==="SELECT"&&o!==t){r.push(o);return}Object.values(a).forEach(i)};return i(e),r}function Le(e,t,r,n){let i=ga(e.where);i.length>0&&r.push({kind:n?"FORBIDDEN":"SELECT",source:e,where:e.where,functionNames:i,path:t}),bi(e,e).forEach((o,a)=>Le(o,`${t}.select-source[${a}]`,r,n))}function tn(e,t,r,n){e.left.type==="UNION"?tn(e.left,`${t}.left`,r,n):Le(e.left,`${t}.left`,r,n),Le(e.right,`${t}.right`,r,n)}function Lu(e,t,r,n){if(!n&&ut(e)){Le(ct(e),`${t}.inlined`,r,!1);return}e.ctes.forEach((i,o)=>{i.query.type==="SELECT"?Le(i.query,`${t}.cte[${o}]`,r,!0):i.query.type==="UNION"&&tn(i.query,`${t}.cte[${o}]`,r,!0)}),e.query.type==="SELECT"?Le(e.query,`${t}.main`,r,!0):tn(e.query,`${t}.main`,r,!0)}function vu(e,t,r,n=!1){switch(e.type){case"SELECT":Le(e,t,r,n);return;case"UNION":tn(e,t,r,n);return;case"WITH":Lu(e,t,r,n);return;case"CREATE_TEMP_TABLE":e.query.type==="WITH"?Lu(e.query,`${t}.query`,r,!0):e.query.type==="UNION"?tn(e.query,`${t}.query`,r,!0):Le(e.query,`${t}.query`,r,!0);return;case"EXPLAIN":vu(e.query,`${t}.query`,r,n);return;case"VALIDATE":case"REORDER":{let i=ga(e.where);i.length>0&&r.push({kind:"FORBIDDEN",source:e,where:e.where,functionNames:i,path:t}),bi(e,e).forEach((o,a)=>Le(o,`${t}.select-source[${a}]`,r,!0));return}case"UPDATE":case"DELETE":{let i=ga(e.where);if(i.length>0){let o=n||!!e.subtableCode||e.type==="UPDATE"&&(e.from!=null||!!e.applyBlocks?.length);r.push({kind:o?"FORBIDDEN":"DML",source:e,where:e.where,functionNames:i,path:t})}if(e.type==="UPDATE"&&e.applyBlocks?.length){let o=Du(e.applyBlocks,!0);o.length>0&&r.push({kind:"FORBIDDEN",source:e,where:null,functionNames:o,path:`${t}.apply`})}bi(e,e).forEach((o,a)=>Le(o,`${t}.select-source[${a}]`,r,n));return}default:bi(e,e).forEach((i,o)=>Le(i,`${t}.select-source[${o}]`,r,n))}}function _u(e,t){return t.every(r=>new RegExp(`\\b${r}\\s*\\(`).test(e))}function QE(e){return{kind:e.kind,source:e.source,functionNames:e.functionNames,path:e.path,clientWhereEvaluation:!0,allowed:!1}}function ZE(e){let t=(e?.reasons??[]).filter(r=>r.functionName!==void 0).map(r=>r.code).filter(r=>r.startsWith("WHERE_RELATIVE_DATE_"));return t.includes(je)||t.push(je),[...new Set(t)]}function ha(e,t){let r=ZE(t);return{functionName:e.functionNames[0],path:e.path,code:r.find(n=>n!==je)??je,reasonCodes:r}}async function ku(e,t){let r=[];vu(e,"statement",r);let n=[];for(let i of r){if(i.kind==="FORBIDDEN"){let p=QE(i);return n.push(p),{hasRelativeDate:!0,nodes:n,allowed:!1,rejection:ha(i)}}if(i.kind==="SELECT"){let p=i.source,c=p.from.cteName===null&&!p.from.subtableCode&&p.joins.length===0,u=Ce(p),f=await t.select(p),E="";try{E=i.where===null?"":W(i.where)}catch{E=""}let R=c&&u==="SIMPLE"&&(p.orderBy.length===0||p.orderMode==="KINTONE_NATIVE")&&f.capability==="EXACT_PUSHDOWN"&&_u(E,i.functionNames),h={kind:i.kind,source:i.source,functionNames:i.functionNames,path:i.path,selectMode:u,capability:f,restQuery:E,clientWhereEvaluation:!R,allowed:R};if(n.push(h),!R)return{hasRelativeDate:!0,nodes:n,allowed:!1,rejection:ha(i,f)};continue}let o=i.source,a=await t.dml(o),s="";try{s=i.where===null?"":W(i.where)}catch{s=""}let l=a.capability==="EXACT_PUSHDOWN"&&_u(s,i.functionNames),d={kind:i.kind,source:i.source,functionNames:i.functionNames,path:i.path,capability:a,restQuery:s,clientWhereEvaluation:!l,allowed:l};if(n.push(d),!l)return{hasRelativeDate:!0,nodes:n,allowed:!1,rejection:ha(i,a)}}return{hasRelativeDate:r.length>0,nodes:n,allowed:!0}}function Uu(e){if(!e.allowed&&e.rejection){let t=e.rejection.reasonCodes.filter(r=>r!==je);throw new Error(`${e.rejection.functionName}: ${je}${t.length>0?` (reason=${t.join(", ")})`:""} (path=${e.rejection.path})`)}}var M=class extends Error{constructor(t){super(`ImportSourceError: ${t}`),this.name="ImportSourceError"}};function Mu(e,t){if(!t)throw new M("IMPORT source capability is not available.");let r=t(e);if(!r)throw new M(`source "${e}" is not supplied.`);return r}async function Pi(e,t){let r=t.get(e);return r||(r=e.load().then(n=>{if(!(n.bytes instanceof Uint8Array))throw new M("loader must return Uint8Array bytes.");if(n.bytes.byteLength>10485760)throw new M("source exceeds the 10485760 byte limit.");return n}),t.set(e,r)),r}function eR(e,t){try{return new TextDecoder(t==="sjis"?"shift_jis":"utf-8",{fatal:!0}).decode(e).replace(/^\uFEFF/,"")}catch{throw new M(`invalid ${t.toUpperCase()} byte sequence.`)}}function tR(e){let t=[],r=[],n="",i=!1,o=!1,a=0,s=()=>{r.push(n),n="",o=!1},l=()=>{s(),t.push(r),r=[]};for(;a<e.length;){let d=e[a];if(i){if(d==='"'){if(e[a+1]==='"'){n+='"',a+=2;continue}i=!1,o=!0,a++;continue}n+=d,a++;continue}if(o&&d!==","&&d!=="\r"&&d!==`
4
+ `)throw new M(`unexpected character after closing quote at offset ${a}.`);if(d==='"'){if(n.length!==0)throw new M(`quote in unquoted cell at offset ${a}.`);i=!0,a++;continue}if(d===","){s(),a++;continue}if(d==="\r"||d===`
5
+ `){d==="\r"&&e[a+1]===`
6
+ `&&a++,l(),a++;continue}n+=d,a++}if(i)throw new M("unterminated quoted cell.");return(n.length>0||r.length>0||o)&&l(),t}function rR(e){let t=new Set;e.forEach((r,n)=>{if(r==="")throw new M(`CSV column ${n+1} has an empty name.`);if(t.has(r))throw new M(`CSV column name "${r}" is duplicated.`);t.add(r)})}function Ni(e,t){let r=tR(eR(e,t.encoding)),n,i;if(t.hasHeader?(n=r[0]??[],i=r.slice(1)):(i=r,n=t.columns?[...t.columns]:Array.from({length:i[0]?.length??0},(o,a)=>`c${a+1}`)),rR(n),i.length===0)throw new M("CSV has no data rows.");return i.forEach((o,a)=>{if(o.length!==n.length)throw new M(`CSV row ${a+(t.hasHeader?2:1)} has ${o.length} cells; expected ${n.length}.`)}),{columns:n,rows:i}}var nR=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),iR=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),rn=class extends Error{constructor(){super("multiple-value CSV cell contains an empty LF-delimited item");this.code="ERR_IMPORT_MULTI_EMPTY_ITEM";this.name="ImportCsvValueError"}};function xu(e,t,r){if(!nR.has(t??""))return e;if(e==="")return[];let n=e.split(/\r\n|\n/);if(n.some(i=>i===""))throw new rn;return iR.has(t??"")?n.map(i=>({code:i})):n}function tt(e,t,r,n){throw new M(`JSON ${e} (offset=${t}, line=${r}, column=${n}).`)}function Fu(e){try{return new TextDecoder("utf-8",{fatal:!0}).decode(e)}catch{throw new M("JSON source is not valid UTF-8.")}}function Ku(e){let t=[],r=0,n=1,i=1,o=()=>{let s=e[r++];return s===`
7
+ `?(n++,i=1):i++,s},a=()=>({offset:r,line:n,column:i});for(;r<e.length;){let s=e[r];if(s===" "||s===" "||s==="\r"||s===`
8
+ `){o();continue}let l=a();if("{}[]:,".includes(s)){o(),t.push({kind:"punct",value:s,...l});continue}if(s==='"'){o();let u="",f=!1;for(;r<e.length;){let E=o();if(E==='"'){f=!0;break}if(E.charCodeAt(0)<32&&tt("string contains an unescaped control character",l.offset,l.line,l.column),E!=="\\"){u+=E;continue}r>=e.length&&tt("string has an unterminated escape",l.offset,l.line,l.column);let R=o(),h={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:`
9
+ `,r:"\r",t:" "};if(R in h){u+=h[R];continue}R!=="u"&&tt(`has invalid escape \\${R}`,r-2,n,Math.max(1,i-2));let m=e.slice(r,r+4);/^[0-9a-fA-F]{4}$/.test(m)||tt("has invalid unicode escape",r,n,i);for(let T=0;T<4;T++)o();let g=Number.parseInt(m,16);if(g>=55296&&g<=56319){(e.slice(r,r+2)!=="\\u"||!/^[0-9a-fA-F]{4}$/.test(e.slice(r+2,r+6)))&&tt("has an unpaired high surrogate",r,n,i),o(),o();let T=e.slice(r,r+4);for(let P=0;P<4;P++)o();let S=Number.parseInt(T,16);(S<56320||S>57343)&&tt("has an invalid surrogate pair",r-4,n,Math.max(1,i-4)),u+=String.fromCodePoint(65536+(g-55296<<10)+S-56320)}else g>=56320&&g<=57343?tt("has an unpaired low surrogate",r-4,n,Math.max(1,i-4)):u+=String.fromCharCode(g)}f||tt("string is unterminated",l.offset,l.line,l.column),t.push({kind:"string",value:u,...l});continue}let d=e.slice(r),p=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/.exec(d)?.[0];if(p){for(let u=0;u<p.length;u++)o();t.push({kind:"number",lexeme:p,...l});continue}let c=/^(true|false|null)/.exec(d)?.[0];if(c){for(let u=0;u<c.length;u++)o();t.push({kind:"literal",value:c==="true"?!0:c==="false"?!1:null,...l});continue}tt(`has an unexpected token ${JSON.stringify(s)}`,l.offset,l.line,l.column)}return t.push({kind:"eof",offset:r,line:n,column:i}),t}function Ci(e){return e.kind==="eof"?"end of input":e.kind==="punct"?e.value:e.kind}function Oi(e){if(e.byteLength===0)throw new M("JSON source is empty.");let t=Ku(Fu(e)),r=0,n=(d,p=t[r])=>{throw new M(`JSON ${d} (offset=${p.offset}, line=${p.line}, column=${p.column}).`)},i=(d,p)=>d.kind==="punct"&&d.value===p,o=d=>{let p=t[r];(p.kind!=="punct"||p.value!==d)&&n(`expected ${d}; found ${Ci(p)}`,p),r++},a=()=>{let d=t[r++];if(d.kind==="string")return d.value;if(d.kind==="number")return{kind:"number",lexeme:d.lexeme};if(d.kind==="literal")return d.value;if(d.kind==="punct"&&d.value==="{"){let p=new Map;if(i(t[r],"}"))return r++,p;for(;;){let c=t[r++];if(c.kind!=="string")return n(`object key must be a string; found ${Ci(c)}`,c);let u=c.value;p.has(u)&&n(`duplicate key ${JSON.stringify(u)}`,c),o(":"),p.set(u,a());let f=t[r];if(i(f,"}")){r++;break}o(",")}return p}if(d.kind==="punct"&&d.value==="["){let p=[];if(i(t[r],"]"))return r++,p;for(;;){p.push(a());let c=t[r];if(i(c,"]")){r++;break}o(",")}return p}return n(`expected a value; found ${Ci(d)}`,d)},s=a();t[r].kind!=="eof"&&n(`has trailing data; found ${Ci(t[r])}`);let l=s instanceof Map?[s]:Array.isArray(s)?s:n("root must be an object or array.",t[0]);if(l.length===0)throw new M("JSON source contains no records.");return l.forEach((d,p)=>{if(!(d instanceof Map))throw new M(`JSON record ${p+1} must be an object.`)}),l}var oR=new Set(["CHECK_BOX","MULTI_SELECT"]),Bu=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function $e(e,t,r){throw new M(`JSON field validation failed (row=${e}, field=${t}): ${r}`)}function aR(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof Map)&&e.kind==="number"}function sR(e,t,r){if(e===null)return"";if(typeof e=="string")return e;if(typeof e=="boolean"&&$e(r,t.code,"boolean is not accepted."),aR(e)){t.fieldType==="NUMBER"&&$e(r,t.code,"precision target requires a JSON string."),(!/^-?(?:0|[1-9]\d*)$/.test(e.lexeme)||e.lexeme==="-0")&&$e(r,t.code,`JSON number ${e.lexeme} must be a non-negative-zero safe integer lexeme.`);let i=Number(e.lexeme);return Number.isSafeInteger(i)||$e(r,t.code,`JSON number ${e.lexeme} is outside the safe integer range.`),String(i)}e instanceof Map&&$e(r,t.code,"object is not accepted for a flat field."),Array.isArray(e)||$e(r,t.code,"unsupported value type."),!oR.has(t.fieldType)&&!Bu.has(t.fieldType)&&$e(r,t.code,"array is accepted only for multi-value fields.");let n=e.map(i=>(typeof i!="string"&&$e(r,t.code,"array elements must be strings."),i));return new Set(n).size!==n.length&&$e(r,t.code,"array elements must not contain duplicates."),Bu.has(t.fieldType)?JSON.stringify(n.map(i=>({code:i}))):JSON.stringify(n)}function ya(e,t,r,n){if(t.encoding&&t.encoding!=="utf8")throw new M("JSON source is UTF-8 only.");let i=Oi(t.bytes);if(i.length>n)throw new M(`source rows (${i.length}) exceed maxRecords (${n}).`);let o=new Map(r.map(l=>[l.code,l]));if(o.size!==r.length)throw new M("JSON target fields contain duplicates.");let a=[],s=[];return i.forEach((l,d)=>{for(let u of l.keys())o.has(u)||$e(d+1,u,"unknown key (not declared in INTO).");let p={},c=new Set;for(let u of r)l.has(u.code)&&(c.add(u.code),p[u.code]=sR(l.get(u.code),u,d+1));a.push(p),s.push(c)}),{rows:a,columns:r.map(l=>l.code),columnMeta:new Map(r.map(l=>[l.code,{fieldType:l.fieldType}])),importPresence:s}}function Aa(e,t,r,n,i,o){let a=Ni(t.bytes,{encoding:e.encoding??t.encoding??"utf8",hasHeader:e.hasHeader,columns:e.columns});if(a.rows.length>r)throw new M(`source rows (${a.rows.length}) exceed maxRecords (${r}).`);if(e.mappingMode==="BY_NAME"){if(!n||!i)throw new Error("InternalError: BY NAME requires destination form metadata.");if(new Set(n).size!==n.length)throw new M("ERR_IMPORT_HEADER_REUSED: a BY NAME header cannot be consumed more than once.");let l=new Map(a.columns.map((m,g)=>[m,g]));for(let m of n)if(!l.has(m))throw new M(`ERR_IMPORT_MISSING_COLUMN: required header "${m}" is missing.`);let d=new Map(i.map(m=>[m.code,m])),p=new Set(n);if(o&&p.has(o))throw new M("ERR_IMPORT_HEADER_REUSED: record-number source header is lookup-only and cannot be a write target.");if(o&&!l.has(o))throw new M(`ERR_IMPORT_MISSING_COLUMN: required header "${o}" is missing.`);let c=[],u=[],f=m=>a.rows.filter(g=>g[m]!=="").length,E=m=>m.fieldType==="FILE"?"FILE attachment is outside flat IMPORT scope":m.inSubtable||m.fieldType==="SUBTABLE"?"subtable field is not writable in Phase 3":m.writable===!1?`non-writable ${m.fieldType} field`:`known export-only ${m.fieldType} field`;for(let[m,g]of a.columns.entries()){if(p.has(g)||g===o)continue;let T=d.get(g);if(T)c.push({column:g,reason:E(T),nonEmptyCells:f(m)});else if(e.ignoreUnknownColumns)u.push({column:g,reason:"unknown column ignored by explicit policy",nonEmptyCells:f(m)});else throw new M(`ERR_IMPORT_UNKNOWN_COLUMN: unknown CSV header "${g}".`)}for(let m of n){let g=d.get(m);if(!g)throw new Error(`ArgumentError: DML target field ${m} does not exist.`);if(g.inSubtable||g.writable===!1||g.fieldType==="FILE"||g.fieldType==="SUBTABLE")throw new Error(`ArgumentError: DML target field ${m} is not writable (${g.fieldType}).`)}let R=[];return{rows:a.rows.map(m=>{let g=[],T={};for(let S of n){let P=m[l.get(S)];try{T[S]=xu(P,d.get(S)?.fieldType,{cliKintone:!0})}catch(w){if(!(w instanceof rn))throw w;T[S]=P,g.push({field:S,code:w.code,message:w.message})}}return R.push(g),T}),columns:[...n],columnMeta:new Map(n.map(m=>[m,{fieldType:d.get(m)?.fieldType??"SINGLE_LINE_TEXT"}])),importRowErrors:R,...o?{recordNumberSourceValues:a.rows.map(m=>m[l.get(o)])}:{},importAudit:{mapping:"BY_NAME",writtenColumns:[...n],ignoredKnownColumns:c,ignoredUnknownColumns:u}}}return{rows:a.rows.map(l=>Object.fromEntries(a.columns.map((d,p)=>[d,l[p]]))),columns:a.columns,columnMeta:new Map(a.columns.map(l=>[l,{fieldType:"SINGLE_LINE_TEXT"}]))}}var nn=(e,t,r)=>{throw new M(`JSON subtable validation failed (parentRow=${e}, field=${t}): ${r}`)};function $u(e,t,r,n,i=n){if(t.encoding&&t.encoding!=="utf8")throw new M("JSON source is UTF-8 only.");let o=Oi(t.bytes);if(o.length>n)throw new M(`source parent rows (${o.length}) exceed maxRecords (${n}).`);let a=new Map(r.map(l=>[l.kind==="FIELD"?l.field:l.subtableCode,l]));if(a.size!==r.length)throw new M("IMPORT targets contain duplicates.");let s=0;return{records:o.map((l,d)=>{let p=d+1;for(let E of l.keys())a.has(E)||nn(p,E,"unknown key (not declared in INTO).");let c=new Map,u=new Map,f=new Set;for(let E of r){let R=E.kind==="FIELD"?E.field:E.subtableCode;if(!l.has(R))continue;let h=l.get(R);if(E.kind==="FIELD"){h instanceof Map&&nn(p,R,"object is not accepted for a top-level field."),c.set(R,h);continue}Array.isArray(h)||nn(p,R,"subtable value must be an array."),f.add(R);let m=new Set(E.children),g=h.map((T,S)=>{T instanceof Map||nn(p,R,`childRow=${S+1} must be an object.`);let P=T;for(let w of P.keys())m.has(w)||nn(p,w,`unknown child key in subtable ${R} at childRow=${S+1}.`);if(s++,s>i)throw new M(`source child rows (${s}) exceed limit (${i}).`);return{childRowNumber:S+1,values:P}});u.set(R,g)}return{rowNumber:p,top:c,subtables:u,replacementTables:f}})}}function Gu(e,t,r,n,i,o){let a=Ni(t.bytes,{encoding:e.encoding??t.encoding??"utf8",hasHeader:e.hasHeader,columns:e.columns});if(!e.hasHeader||a.columns[0]!=="*")throw new M('ERR_IMPORT_MARKER: first CSV header must be "*".');let s=new Map(a.columns.map((u,f)=>[u,f]));if(o&&!s.has(o))throw new M(`ERR_IMPORT_MISSING_COLUMN: required header "${o}" is missing.`);let l=r.filter(u=>u.kind==="FIELD"),d=r.filter(u=>u.kind==="SUBTABLE");for(let u of l)if(!s.has(u.field))throw new M(`ERR_IMPORT_MISSING_COLUMN: required header "${u.field}" is missing.`);for(let u of d){if(!u.rowIdSourceHeader||!s.has(u.rowIdSourceHeader))throw new M(`ERR_IMPORT_MISSING_COLUMN: row-ID header for ${u.subtableCode} is missing.`);for(let f of u.children)if(!s.has(f))throw new M(`ERR_IMPORT_MISSING_COLUMN: required child header "${f}" is missing.`)}let p=[],c;if(a.rows.forEach((u,f)=>{let E=f+2,R=u[0];if(R!==""&&R!=="*")throw new M(`ERR_IMPORT_MARKER: invalid marker ${JSON.stringify(R)} at source row ${E}.`);if(R==="*"){if(p.length>=i)throw new M(`source parent rows exceed maxRecords (${i}).`);c={rowNumber:p.length+1,markerRowNumber:E,top:new Map(l.map(h=>[h.field,u[s.get(h.field)]])),subtables:new Map(d.map(h=>[h.subtableCode,[]])),replacementTables:new Set(n),...o?{recordNumberSourceValue:u[s.get(o)]}:{}},p.push(c)}else if(c){for(let h of l){let m=u[s.get(h.field)];if(m!==""&&m!==c.top.get(h.field))throw new M(`ERR_IMPORT_PARENT_VALUE_ON_CONTINUATION: ${h.field} at source row ${E}.`)}if(o){let h=u[s.get(o)];if(h!==""&&h!==c.recordNumberSourceValue)throw new M(`ERR_IMPORT_PARENT_VALUE_ON_CONTINUATION: ${o} at source row ${E}.`)}}else throw new M(`ERR_IMPORT_MARKER: first data row must start a parent (source row ${E}).`);for(let h of d){let m=u[s.get(h.rowIdSourceHeader)],g=new Map(h.children.map(S=>[S,u[s.get(S)]]));if(m===""&&[...g.values()].every(S=>S===""))continue;let T=c.subtables.get(h.subtableCode);T.push({childRowNumber:T.length+1,sourceRowNumber:E,...m?{rowId:m}:{},values:g})}}),p.length===0)throw new M("CSV has no parent rows.");return{records:p}}var lR=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),uR=new Set(["SUBTABLE","FILE","CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function wa(e,t){if(t!=null&&e.invalidParentRows.size>t)throw new Error(`RejectLimitExceededError: rejected parents (${e.invalidParentRows.size}) exceed REJECT LIMIT (${t}).`)}function Yu(e,t,r,n,i){let o=new Map(r.filter(u=>!u.inSubtable).map(u=>[u.code,u])),a=new Map;for(let u of r)if(u.inSubtable&&u.subtableCode){let f=a.get(u.subtableCode);f||a.set(u.subtableCode,f=new Map),f.set(u.code,u)}let s=t.filter(u=>u.kind==="FIELD"),l=t.filter(u=>u.kind==="SUBTABLE");for(let u of s)Vu(u.field,o.get(u.field),void 0);for(let u of l){let f=o.get(u.subtableCode);if(!f||f.fieldType!=="SUBTABLE")throw new Error(`ArgumentError: IMPORT subtable ${u.subtableCode} does not exist.`);let E=a.get(u.subtableCode)??new Map;for(let R of u.children)Vu(R,E.get(R),u.subtableCode)}let d=new Map(l.map(u=>[u.subtableCode,{parentsPresent:0,childRows:0,validChildRows:0,invalidChildRows:0}])),p=e.records.map(u=>cR(u,s,l,o,a,n,i,d)),c=p.flatMap(u=>[...u.errors]);return{parents:p,errors:c,invalidParentRows:new Set(p.filter(u=>!u.valid).map(u=>u.parentRow)),tableCounts:d}}function cR(e,t,r,n,i,o,a,s){let l=[],d={};for(let u of t)e.top.has(u.field)&&Ta(e.top.get(u.field),n.get(u.field),o,d,u.field,l,Sa(e,a,u.field));let p={};if(a==="INSERT")for(let u of n.values())u.fieldType==="SUBTABLE"||u.writable===!1||e.top.has(u.code)||Wu(u,o,p,l,Sa(e,a,u.code));let c=new Map;for(let u of r){if(!e.subtables.has(u.subtableCode))continue;let f=s.get(u.subtableCode);f.parentsPresent++;let E=[];for(let R of e.subtables.get(u.subtableCode)){f.childRows++;let h=l.length,m={},g=i.get(u.subtableCode);for(let T of u.children){let S=g.get(T),P=Sa(e,a,T,u.subtableCode,R.childRowNumber,R.sourceRowNumber??e.markerRowNumber);R.values.has(T)?Ta(R.values.get(T),S,o,m,T,l,P):Wu(S,o,m,l,P)}l.length===h?(f.validChildRows++,E.push(m)):f.invalidChildRows++}c.set(u.subtableCode,E)}return{parentRow:e.rowNumber,valid:l.length===0,top:d,subtables:c,replacementTables:e.replacementTables,errors:l}}function Vu(e,t,r){if(!t)throw new Error(r?`ArgumentError: IMPORT child ${e} does not belong to subtable ${r}.`:`ArgumentError: IMPORT top-level field ${e} does not exist.`);if(t.writable===!1||r&&uR.has(t.fieldType))throw new Error(`ArgumentError: IMPORT ${r?`child ${r}.${e}`:`field ${e}`} is not writable (${t.fieldType}).`)}function Wu(e,t,r,n,i){let o=Nt(e.defaultValue)?"":e.defaultValue;Ta(o,e,t,r,e.code,n,i,!Nt(e.defaultValue))}function Ta(e,t,r,n,i,o,a,s=!1){let l=pR(e),d=ge(l,t,r);d.ok?n[i]={value:dR(l,t)?l:d.value}:o.push({...a,code:d.code,message:s?`\u65E2\u5B9A\u5024: ${d.message}`:d.message})}function pR(e){return Hu(e)?e.lexeme:Array.isArray(e)?e.map(t=>t instanceof Map?t:Hu(t)?t.lexeme:t):e}function Hu(e){return typeof e=="object"&&e!==null&&e.kind==="number"}function dR(e,t){return lR.has(t.fieldType)&&Array.isArray(e)&&e.every(r=>typeof r=="object"&&r!==null&&"code"in r)}function Sa(e,t,r,n,i,o){let a=o??e.markerRowNumber;return{operation:t,parentRow:e.rowNumber,field:r,...n?{subtable:n}:{},...i==null?{}:{subrow:i},...a==null?{}:{sourceRow:a},sourceValues:n?e.subtables.get(n)?.[i-1]?.values??new Map:e.top}}var Ia=["$err_statement","$err_operation","$err_row","$err_field","$err_subtable","$err_subrow","$err_source_row","$err_code","$err_message"];function ba(e,t,r=1){return e.map(n=>{let i={};for(let o of t)i[o]=n.sourceValues.get(o)==null?"":fR(n.sourceValues.get(o));return i.$err_statement=String(r),i.$err_operation=n.operation,i.$err_row=String(n.parentRow),i.$err_field=n.field,i.$err_subtable=n.subtable??"",i.$err_subrow=n.subrow==null?"":String(n.subrow),i.$err_source_row=n.sourceRow==null?null:String(n.sourceRow),i.$err_code=n.code,i.$err_message=n.message,i})}function fR(e){return e==null?"":typeof e=="object"&&e!==null&&"kind"in e&&"lexeme"in e&&e.kind==="number"?String(e.lexeme):Array.isArray(e)?JSON.stringify(e):String(e)}function Pa(e,t,r){let n={};for(let[i,o]of e)n[i]={value:o};for(let[i,o]of t)n[i]={value:o.map(a=>({...r==="PRESERVE"&&a.rowId?{id:a.rowId}:{},value:Object.fromEntries([...a.values].map(([s,l])=>[s,{value:l}]))}))};return n}function ju(e,t){return Pa(e,t,"DROP")}function qu(e){for(let t of e.records)for(let[r,n]of t.subtables)for(let i of n)if(i.rowId!==void 0||i.values.has("_rid")||i.values.has("id"))throw new Error(`ArgumentError: JSON IMPORT subtable ${r} does not accept _rid/id; rows are always newly numbered.`)}function zu(e,t,r){return e.map((n,i)=>{let o=t[i],a=o===void 0?void 0:r.get(o);if(o!==void 0&&!a)throw new Error(`InternalError: IMPORT UPSERT target APP record ${o} was not loaded.`);let s=[...n.subtables].map(([l,d])=>{let p=a?.record[l]?.value,c=Array.isArray(p)?p.length:0;return{table:l,existingRows:c,inputRows:d.length,addRows:d.length,deleteRows:c}});return{parentRow:n.parentRow,mode:o===void 0?"INSERT":"UPDATE",...o===void 0?{}:{targetId:o,revision:a?.revision},top:n.top,subtables:n.subtables,tables:s}})}function ER(e,t){let r=e[t]?.value;return Array.isArray(r)?r:[]}function Xu(e){let t=new Map;for(let r of e)for(let[n,i]of r.subtables)for(let o of i){if(!o.rowId)continue;let a=`${n}\0${o.rowId}`;if(t.has(a))throw new Error(`ERR_SUBTABLE_ROW_ID_DUP_SOURCE: duplicate row ID ${o.rowId} in ${n}`);t.set(a,r.rowNumber)}}function Ju(e,t,r,n,i){return t.map((o,a)=>{let s=e[a],l=r[a],d=l===void 0?void 0:n.get(l),p=[...o.errors];if(!d||l===void 0)return{parentRow:o.parentRow,targetId:l??0,valid:!1,top:o.top,subtables:new Map,tables:[],errors:p};let c=new Map,u=[];for(let f of o.replacementTables){let E=ER(d.record,f),R=new Set(E.map(w=>w.id).filter(w=>!!w)),h=s.subtables.get(f)??[],m=o.subtables.get(f)??[],g=0,T=0,S=0,P=h.map((w,_)=>{let I=m[_]??{};return w.rowId&&R.has(w.rowId)?(g++,{rowId:w.rowId,record:I}):(w.rowId&&((i.get(w.rowId)??[]).some(C=>C.parentId!==l||C.table!==f)&&p.push({operation:"UPDATE",parentRow:o.parentRow,field:w.rowId,subtable:f,subrow:w.childRowNumber,sourceRow:w.sourceRowNumber,code:"ERR_IMPORT_FIELD_OWNERSHIP",message:`rowIdOwnedElsewhere: ${w.rowId}`,sourceValues:w.values}),S++),T++,{record:I})});c.set(f,P),u.push({table:f,existingRows:E.length,inputRows:h.length,updateRows:g,addRows:T,deleteRows:E.length-g,rowIdNotFound:S})}return{parentRow:o.parentRow,targetId:l,...d.revision===void 0?{}:{revision:d.revision},valid:p.length===0,top:o.top,subtables:c,tables:u,errors:p}})}var Na="#__import_source";function Qu(e){return{...e,from:{appId:0,alias:null,cteName:Na}}}function RR(e){return/^[0-9]+$/.test(e)?e.replace(/^0+(?=\d)/,""):null}function Ca(e,t){let r=e.map(RR),n=new Set;for(let i of r)if(i!==null){if(n.has(i))throw new Error("ERR_RECORD_NUMBER_DUP_SOURCE: source contains a duplicate record number");n.add(i)}return{normalized:r,errors:r.map(i=>i===null?[{field:t,code:"ERR_RECORD_NUMBER_INVALID",message:`${t} must be a non-empty ASCII decimal record number`}]:[])}}var mR="\u691C\u7D22\u304C 10 \u4E07\u4EF6\u3067\u6253\u3061\u5207\u3089\u308C\u3001\u7D50\u679C\u304C\u6B20\u843D\u3057\u305F\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002",mr=class extends Error{constructor(){super("SearchAbortedError: kintone \u306E\u691C\u7D22\u304C 10 \u4E07\u4EF6\u3067\u6253\u3061\u5207\u3089\u308C\u305F\u305F\u3081\u3001\u5B8C\u5168\u306A\u5BFE\u8C61\u96C6\u5408\u3092\u78BA\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002"),this.name="SearchAbortedError"}},We=new WeakMap,gr=new WeakMap,Vi=new WeakMap,Zu=new WeakMap,hR=1;function gR(e,t){if(t)return t;let r=Zu.get(e);return r||(r=`client:${hR++}`,Zu.set(e,r)),r}async function xa(e,t,r={}){let n=Date.now(),i=gR(t,r.cacheContext),o=th(e,r.enableImport===!0),a=yR(),s=AR(t,a),l={aborted:!1},d=SR(s,l,!TR(o)),p=await IR(o,d,r,i);return a.elapsedMs=Date.now()-n,{...wR(p,l),metrics:a}}function yR(){return{getCalls:0,postCalls:0,putCalls:0,deleteCalls:0,fieldCalls:0,numberPrecisionCalls:0,appsCalls:0,processStatusCalls:0,cursorCreateCalls:0,cursorGetCalls:0,cursorDeleteCalls:0,cursorRecordsScanned:0,cursorActiveCurrent:0,cursorActivePeak:0,cursorCleanupFailures:0,cursorCreateOutcomeUnknown:0,cursorQuarantinedCurrent:0,fetchedRows:0,elapsedMs:0}}function AR(e,t){return{getRecords:async r=>{t.getCalls+=1;let n=await e.getRecords(r);return t.fetchedRows+=n.records.length,n},openCursor:async r=>{t.cursorCreateCalls+=1;let n;try{n=await e.openCursor(r)}catch(a){throw a instanceof Error&&a.name==="CursorCreateOutcomeUnknownError"&&(t.cursorCreateOutcomeUnknown+=1,t.cursorQuarantinedCurrent+=1),a}t.cursorActiveCurrent+=1,t.cursorActivePeak=Math.max(t.cursorActivePeak,t.cursorActiveCurrent);let i=!1,o=()=>{i||(i=!0,t.cursorActiveCurrent-=1)};return{totalCount:n.totalCount,nextPage:async()=>{t.cursorGetCalls+=1;let a=await n.nextPage();return t.cursorRecordsScanned+=a.records.length,a.next||o(),a},close:async()=>{i||(t.cursorDeleteCalls+=1);try{await n.close(),o()}catch(a){throw t.cursorCleanupFailures+=1,t.cursorQuarantinedCurrent+=1,a}}}},postRecords:r=>(t.postCalls+=1,e.postRecords(r)),putRecords:r=>(t.putCalls+=1,e.putRecords(r)),deleteRecords:r=>(t.deleteCalls+=1,e.deleteRecords(r)),getApps:()=>(t.appsCalls+=1,e.getApps()),getFields:r=>(t.fieldCalls+=1,e.getFields(r)),getNumberPrecision:r=>(t.numberPrecisionCalls+=1,e.getNumberPrecision(r)),getProcessStatuses:r=>(t.processStatusCalls+=1,e.getProcessStatuses(r))}}function SR(e,t,r){return{...e,getRecords:async n=>{let i=await e.getRecords(n);if(i.searchAborted&&(t.aborted=!0,r))throw new mr;return i}}}function TR(e){return e.type==="SELECT"||e.type==="UNION"||e.type==="WITH"}function wR(e,t){if(!t.aborted||e.type!=="SELECT")return e;let r=new Set(e.warnings??[]);return r.add(mR),{...e,warnings:[...r]}}async function Fa(e,t,r){return ku(e,{select:n=>dn(n,t,r),dml:n=>yc(n,t,r)})}async function IR(e,t,r,n){let i=await Fa(e,t,n);e.type!=="EXPLAIN"&&Uu(i);let o=Oa(e);if(o!==null&&!vm(e))throw new Error(`ParseError: variable @${o} is not defined in a batch.`);if(Un("phase15b",e),vs("phase15b",e),or(e),e.type!=="EXPLAIN"&&await DR(e,t,n),e.type==="IMPORT")return Cm(e,t,r,n);if(e.type==="UPDATE"&&e.applyBlocks?.length){if(e.validationErrorTable)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return fc(e,t,r,n)}if("validateOnly"in e&&e.validateOnly===!0){if(e.validationErrorTable)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return xc(e,t,{...r,onLimitReached:"error"},n,void 0,1)}if("onErrorSkip"in e&&e.onErrorSkip===!0)throw new Error("ArgumentError: ON ERROR SKIP requires a batch.");switch(e.type){case"VALIDATE":return PR(e,t,r,n);case"SELECT":return yt(e,t,r,n);case"UNION":return Oc(e,t,r,n);case"WITH":return XR(e,t,r,n);case"INSERT":return Pm(e,t,r,n);case"INSERT_SELECT":return $c(e,t,r,n);case"UPSERT":return Ym(e,t,r,n);case"UPSERT_SELECT":return Hc(e,t,r,n);case"UPDATE":return fc(e,t,r,n);case"DELETE":return Hm(e,t,r,n);case"REORDER":return Qm(e,t,r,n);case"SHOW_APPS":return Yc(t);case"DESCRIBE":return jc(e,t,n);case"EXPLAIN":return ih(e,t,n,r.maxRecords??1e4,r.cursorMaxActive??2,e.query.type==="UPDATE"&&e.query.applyBlocks?.length?Pe(r.dmlMaxRows,"dmlMaxRows",ot):ot,e.query.type==="UPDATE"&&e.query.applyBlocks?.length?Pe(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",be):be,i);case"CREATE_TEMP_TABLE":throw new Error("ArgumentError: CREATE TEMP TABLE requires a batch (temp tables are batch-scoped).");case"DROP_TEMP_TABLE":throw new Error("ArgumentError: DROP TEMP TABLE requires a batch (temp tables are batch-scoped).");case"SET_VARIABLE":throw new Error("ArgumentError: SET variable requires a batch.");case"DECLARE_VARIABLE":throw new Error("ArgumentError: DECLARE variable requires a batch.");case"ASSERT":return OR(e,t,r,n)}}var Ka=["$id","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id","$err_count"],Ba=["$id","$err_subtable","$err_field","$err_code","$err_count"];function $a(e){let t=[],r=new Set,n=o=>{r.has(o)||(r.add(o),t.push(o))},i=o=>{if(Array.isArray(o)){o.forEach(i);return}if(o===null||typeof o!="object")return;let a=o;a.type==="FIELD"&&typeof a.field=="string"&&n(a.field),a.type==="FIELD_REF"&&typeof a.field=="string"&&n(a.field),Object.values(a).forEach(i)};return i(e),t}function bR(e=!1){let t=e?Ba:Ka;return new Map(t.map(r=>[r,{fieldType:r==="$id"||r==="$err_count"?"KSQL_NUMBER":"KSQL_STRING",sortKind:r==="$id"||r==="$err_count"?"number":"string",semantics:x(r==="$id"||r==="$err_count"?"number":"string")}]))}async function PR(e,t,r,n){if(e.errorTable)throw new Error("ArgumentError: VALIDATE INTO requires a batch.");return NR(e,t,r,n)}async function NR(e,t,r,n){let i=await Q(e.appId,t,n),o=new Map(i.filter(b=>!b.inSubtable).map(b=>[b.code,b])),a=new Set(i.filter(b=>b.inSubtable).map(b=>b.code)),s=Xo(e,i),l=e.checkGroups??[],d=lr(l);for(let b of d){if(b.field!=="$id"&&!o.has(b.field)&&!a.has(b.field))throw se(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${b.field} \u306F APP${e.appId} \u306B\u5B58\u5728\u3057\u307E\u305B\u3093`);if(b.field!=="$id"&&!o.has(b.field)&&a.has(b.field))throw new Error(`ArgumentError: VALIDATE \u306E CHECK \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${b.field} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let p=new Map([...o].map(([b,U])=>[b,U.fieldType]));p.set("$id","RECORD_NUMBER"),Ft(e,p);let c=$a(e.where),u=[...new Set(["$id",...s.map(b=>b.subtableCode??b.field.code),...c,...d.map(b=>b.field)])];for(let b of c){if(b!=="$id"&&!o.has(b)&&!a.has(b))throw new Error(`ArgumentError: WHERE field ${b} does not exist in APP${e.appId}.`);if(b!=="$id"&&!o.has(b)&&a.has(b))throw new Error(`ArgumentError: VALIDATE \u306E WHERE \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${b} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let f=s.some(b=>b.field.fieldType==="NUMBER")?await He(e.appId,t,n):void 0,E=b=>b.field==="$id"?z({fieldType:"__ID__"}):o.get(b.field)?.semantics??(o.has(b.field)?z(o.get(b.field)):void 0),R=Lt(e.where,E);if(R.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Dt(R)}).`);let h=new Map([...o].map(([b,U])=>[b,U.fieldType])),m=new Map([...o.values()].flatMap(b=>b.optionOrder?[[b.code,new Set(Object.keys(b.optionOrder))]]:[])),g=e.where===null?null:R.capability==="EXACT_PUSHDOWN"?e.where:er(e.where,{allowUnqualifiedFields:!0,fieldTypes:h,fieldOptions:m,allowKlike:!1}),T=g===null?"":W(g),P=(await Ee(t.getRecords,e.appId,T,u,{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1,onLimit:"error"})).map(b=>({id:String(b.$id?.value??""),record:b,flat:et(b,null)})).filter(b=>e.where===null||q(e.where,b.flat,U=>p.get(U.field))),w=[],_=new Map,I=new Map,k=new Set,C=0,y=b=>{if(k.add(b.id),C+=1,e.summary){let H=JSON.stringify([b.id,b.subtable??"",b.field,b.code]),fe=I.get(H);fe?fe.$err_count=String(Number(fe.$err_count)+1):I.set(H,{$id:b.id,$err_subtable:b.subtable??"",$err_field:b.field,$err_code:b.code,$err_count:"1"});return}let U=JSON.stringify([b.id,b.subtable??"",b.field,b.code,b.message]),B=_.get(U);B?(B.$err_count=String(Number(B.$err_count)+1),b.subrow!==void 0&&(B.$err_subrow=`${B.$err_subrow},${b.subrow}`,B.$err_subrow_id=`${B.$err_subrow_id},${b.subrowId??""}`)):_.set(U,{$id:b.id,$err_field:b.field,$err_code:b.code,$err_message:b.message,$err_value:b.value,$err_subtable:b.subtable??"",$err_subrow:b.subrow===void 0?"":String(b.subrow),$err_subrow_id:b.subrowId??"",$err_count:"1"})},O=s.filter(b=>!b.subtableCode),L=new Map;for(let b of s){if(!b.subtableCode)continue;let U=L.get(b.subtableCode)??[];U.push(b),L.set(b.subtableCode,U)}for(let b of P){for(let U of O){let B=b.record[U.field.code]?.value,H=ge(B,U.field,f);H.ok||y({id:b.id,field:U.field.code,code:H.code,message:H.message,value:Vr(B,U.field.fieldType)})}for(let[U,B]of L){let H=b.record[U]?.value;if(Array.isArray(H))for(let fe=0;fe<H.length;fe++){let F=H[fe];for(let D of B){let V=F.value?.[D.field.code]?.value,re=ge(V,D.field,f);if(!re.ok){let Ye=ui(U,fe,F);y({id:b.id,field:D.field.code,code:re.code,message:re.message,value:Vr(V,D.field.fieldType),...Ye})}}}}for(let U of Jn(l,b.flat,B=>p.get(B.field)))y({id:b.id,field:"",code:"ERR_CHECK",message:U.message,value:""})}if(e.summary)w.push(...I.values());else for(let b of _.values()){let U=Number(b.$err_count);b.$err_subtable!==""&&U>=2&&(b.$err_message=`${b.$err_message}\uFF08${U}\u884C: ${b.$err_subrow}\uFF09`),w.push(b)}let v={type:"SELECT",columns:[...e.summary?Ba:Ka],rows:w,rowCount:w.length,validateStats:{errorRecords:k.size,errorCount:C}};return We.set(v,bR(e.summary===!0)),v}var ht=1e4;function gt(e,t,r,n,i,o){let a=e.get(t);if(a&&(a.columns.length!==r.length||a.columns.some((l,d)=>l!==r[d])||!CR(a.columnMeta,o)))throw new Error(`ArgumentError: validation error table ${t} has a different schema.`);let s=a?.rows??[];if(s.length+n.length>i)throw new Error(`ArgumentError: temp table ${t} exceeds max rows (${i}).`);e.set(t,{columns:[...r],rows:[...s,...n],columnMeta:o})}function CR(e,t){if(e===t)return!0;if(!e||!t||e.size!==t.size)return!1;for(let[r,n]of e){let i=t.get(r);if(!i||i.sortKind!==n.sortKind||i.fieldType!==n.fieldType||!Hn(i.semantics,n.semantics))return!1}return!0}function Oa(e){if(Array.isArray(e)){for(let t of e){let r=Oa(t);if(r!==null)return r}return null}if(e!==null&&typeof e=="object"){let t=e;if((t.type==="VARIABLE"||t.type==="VARIABLE_COL"||t.type==="VARIABLE_IN_LIST")&&typeof t.name=="string")return t.name;for(let r of Object.values(t)){let n=Oa(r);if(n!==null)return n}}return null}var pn=class extends Error{constructor(t){super(`AssertError: ${t}`),this.name="AssertError"}},fr=class extends Error{constructor(t){super(t),this.name="ScalarSubqueryError"}};async function OR(e,t,r,n,i){let o=await Li(e.left,t,r,n,i),a=e.left.type==="NUMBER"||e.left.type==="ARITH"?x("number"):x("string");if(e.op==="BETWEEN"){if(e.low===null||e.high===null)throw new Error("ArgumentError: malformed ASSERT statement.");let l=await Li(e.low,t,r,n,i),d=await Li(e.high,t,r,n,i);if(!bt(">=",o,l,a)||!bt("<=",o,d,a))throw new pn(`assertion failed: ${e.text} (actual: ${o}).`);return{type:"ASSERT",condition:e.text}}if(e.right===null)throw new Error("ArgumentError: malformed ASSERT statement.");let s=await Li(e.right,t,r,n,i);if(!bt(e.op,o,s,a))throw new pn(`assertion failed: ${e.text} (actual: ${o}).`);return{type:"ASSERT",condition:e.text}}async function Li(e,t,r,n,i){switch(e.type){case"VARIABLE":throw new Error(`ParseError: unresolved batch variable @${e.name}.`);case"NUMBER":return G(e);case"STRING":return e.value;case"ARITH":return String(La(e));case"SCALAR_SUBQUERY":try{return await LR(e.query,t,r,n,i)}catch(o){throw o instanceof fr?new pn(o.message):o}}}async function LR(e,t,r,n,i){let{query:o,probed:a}=_R(e),s=await un(o,t,r,n,i);if(s.columns.length!==1)throw new fr(`scalar subquery returned ${s.columns.length} columns (expected 1 column).`);if(s.rowCount===0)throw new fr("scalar subquery returned no rows (expected 1 row).");if(s.rowCount>1){let l=a&&s.rowCount===2?"2 or more rows":`${s.rowCount} rows`;throw new fr(`scalar subquery returned ${l} (expected 1 row).`)}return s.rows[0]?.[s.columns[0]]??""}function _R(e){return ne(e).type!=="NONE"||e.columns.some(r=>r.type==="AGGREGATE"||r.type==="ARITH_AGG_COL")||e.distinct||e.limit!==null?{query:e,probed:!1}:{query:{...e,limit:2},probed:!0}}function La(e){if(e.type==="NUMBER")return e.value;if(e.type==="ARITH"){let t=La(e.left),r=La(e.right);switch(e.op){case"+":return t+r;case"-":return t-r;case"*":return t*r;case"/":return t/r;case"%":return t%r}}throw new Error(`ArgumentError: unsupported operand in ASSERT expression: ${e.type}`)}async function Wi(e,t,r,n,i=!1){let o=[e.from,...e.joins.map(u=>u.table)],a=i||Fe(e.where)?[...new Set(o.filter(u=>u.cteName===null).map(u=>u.appId))]:[],s=new Map(await Promise.all(a.map(async u=>{let f=await Q(u,t,r);return[u,new Map(f.map(E=>[E.code,E]))]}))),l=new Set,d=u=>{if(Array.isArray(u)){u.forEach(d);return}if(u===null||typeof u!="object")return;let f=u;if(f.type!=="SELECT"){if(f.type==="BINARY"&&[">","<",">=","<="].includes(String(f.op))){let E=f.left;E?.type==="FIELD"&&typeof E.field=="string"&&l.add(E.field)}Object.values(f).forEach(d)}};d(e.where),d(e.having);for(let u of e.columns)u.type==="CASE_COL"&&d(u.expr);let p=new Map;await Promise.all([...s].map(async([u,f])=>{if(![...l].some(h=>f.get(h)?.fieldType==="STATUS"))return;let R=await za(u,t,r);R&&p.set(u,R)}));let c=(u,f,E)=>{if(f==="$id")return sr(z({fieldType:"__ID__"}),u.appId,"$id");if(E&&u.subtableCode){if(f==="_rid")return x("string");if(f==="_idx"||f==="_pid")return x("number")}let R=s.get(u.appId)?.get(Re(u,f));if(!R)return;let h=R.semantics??z(R),m=R.fieldType==="STATUS"&&p.has(u.appId)?{...h,optionOrder:p.get(u.appId)}:h;return sr(m,u.appId,R.code)};return u=>{if(u.tableAlias!==null){if(u.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null)return c(e.from,u.field,!1);let E=o.find(R=>ve(R)===u.tableAlias);return E?E.cteName!==null?n?.get(E.cteName)?.columnMeta?.get(u.field)?.semantics??x("string"):c(E,u.field,!0):void 0}if(e.joins.length===0)return e.from.cteName!==null?n?.get(e.from.cteName)?.columnMeta?.get(u.field)?.semantics??x("string"):c(e.from,u.field,!0);let f=o.flatMap(E=>{let R=E.cteName!==null?n?.get(E.cteName)?.columnMeta?.get(u.field)?.semantics:c(E,u.field,!0);return R?[R]:[]});if(f.length===1)return f[0];if(!o.some(E=>Di(E,u.field)!==void 0))return f.length>1?x("string"):void 0}}function Ga(e){let t=r=>{if(r===null||typeof r!="object")return!1;if(Array.isArray(r))return r.some(t);let n=r;return n.type==="CASE_WHEN"&&n.branches?.some(i=>Fe(i.condition))?!0:Object.values(n).some(t)};return e.columns.some(t)}function gc(e,t){let r=new Map;for(let n of e.columns){if(!("alias"in n)||!n.alias)continue;let i;n.type==="FIELD"?i=t(De(n.field)):n.type==="ARITH_COL"||n.type==="ARITH_AGG_COL"||n.type==="WINDOW_COL"?i=x("number"):n.type==="AGGREGATE"?n.func==="MIN"||n.func==="MAX"||n.func==="MODE"?n.arg.type!=="WILDCARD"&&(i=Ya(n.arg,o=>{let a=t(o);if(a)return{sortKind:a.compareMode==="number"||a.compareMode==="recordNumber"?"number":"string",fieldType:a.fieldType,semantics:a}}).semantics):i=n.func==="GROUP_CONCAT"?x("string"):x("number"):n.type==="STRFUNC_COL"?i=kt(n.expr).semantics:(n.type==="LITERAL_COL"||n.type==="SCALAR_SUBQUERY_COL"||n.type==="CASE_COL"||n.type==="SCALAR_VALUE_COL")&&(i=x("string")),i&&r.set(n.alias,i)}return n=>n.tableAlias===null&&r.has(n.field)?r.get(n.field):t(n)}async function dn(e,t,r,n){if(e.where===null)return Lt(null,()=>{});let i=await Wi(e,t,r,n);return Lt(e.where,i)}function Dt(e){let t=e.reasons.find(n=>n.code==="WHERE_FIELD_UNRESOLVED"||n.code==="WHERE_OPERATOR_UNSUPPORTED")??e.reasons[0];return[t?.field?`field=${t.field}`:null,t?.fieldType?`type=${t.fieldType}`:null,t?.operator?`operator=${t.operator}`:null,t?.code?`reason=${t.code}`:null].filter(n=>n!==null).join(", ")||"reason=WHERE_UNSUPPORTED"}function Ui(e){return e.orderBy.length>0||e.columns.some(t=>t.type==="WINDOW_COL"&&t.orderBy.length>0)}async function yc(e,t,r){if(e.subtableCode||e.type==="UPDATE"&&e.from!=null)return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]};let n=Fe(e.where)?await Q(e.appId,t,r):[],i=new Map(n.map(o=>[o.code,o]));return e.where.type==="BOOLEAN"&&e.where.value===!1?Lt(null,()=>{}):Lt(e.where,o=>{if(o.field==="$id")return z({fieldType:"__ID__"});let a=i.get(o.field);return a?.semantics??(a?z(a):void 0)})}async function Er(e,t,r){if(e.subtableCode||e.type==="UPDATE"&&e.from!=null)return;let n=await yc(e,t,r);if(n.capability!=="EXACT_PUSHDOWN")throw new j(`WHERE predicate cannot be represented by kintone REST (${Dt(n)})`)}async function yt(e,t,r,n,i,o=!1){let a;if(await Hi(e,t,n,i),UR(e))return a=FR(e),o&&We.set(a,await Da(e,a.columns,t,n,i)),a;await qc(e,t,r,n,i);let s=await dn(e,t,n,i);if(s.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Dt(s)}).`);let l=Ce(e),d=s.capability==="EXACT_PUSHDOWN"?l:"FULL_SCAN",p=await En(e,t,n,i),c=Ui(e)?(e.orderMode==="KINTONE_NATIVE"?zr:qr)({stmt:e,staticMode:d,whereCapability:s.capability,whereReasons:s.reasons,orderSemantics:p.semantics,maxRecords:r.maxRecords??1e4,hasKlike:oe(e.where)}):null;await BR(e,c?.kind==="CANONICAL_LOCAL"?"FULL_SCAN":d,t,n);let u=Ac(e,r,c);try{d==="SIMPLE"?a=await KR(e,t,u.effectiveOptions,n,c,p):a=await zR(e,t,u.effectiveOptions,n,i,s.capability==="EXACT_PUSHDOWN",p)}catch(f){Sc(u,f)}return o&&We.set(a,await Da(e,a.columns,t,n,i)),a}var fn=new WeakMap;async function DR(e,t,r){let n=new Set,i=async o=>{if(o===null||typeof o!="object"||n.has(o))return;if(n.add(o),Array.isArray(o)){for(let s of o)await i(s);return}let a=o;a.type==="SELECT"&&await Hi(o,t,r);for(let s of Object.values(a))await i(s)};await i(e)}async function vR(e,t,r,n){let i=[e.from,...e.joins.map(p=>p.table)],o=i.filter(p=>p.cteName===null),a=new Map(await Promise.all([...new Set(o.map(p=>p.appId))].map(async p=>{let c=await Q(p,t,r);return[p,new Map(c.map(u=>[u.code,u]))]}))),s=(p,c)=>{if(c==="$id")return"$id";let u=Re(p,c);return a.get(p.appId)?.has(u)?u:null},l=(p,c)=>{if(p.cteName===null)return!1;let u=n?.get(p.cteName);return u?u.columns.includes(c):!0},d=(p,c,u,f)=>{let E=i.filter(m=>m.cteName===null&&s(m,u.field)!==null).length,R=i.some(m=>l(m,u.field)),h=ve(p);return{canonicalId:`source:${c}:APP${p.appId}:${f}`,directKey:u.tableAlias&&h?`${u.tableAlias}.${u.field}`:u.field,unqualifiedBridgeKey:E===1&&!R?u.field:null,physical:!0}};return p=>{if(p.tableAlias!==null){let f=i.findIndex(h=>ve(h)===p.tableAlias);if(f<0)throw new Error(`ArgumentError: B65 field ${p.tableAlias}.${p.field} has an unknown table alias.`);let E=i[f];if(E.cteName!==null)throw new Error(`ArgumentError: B65 field ${p.tableAlias}.${p.field} resolves to materialized source ${E.cteName}; physical APP fields are required.`);let R=s(E,p.field);if(R===null)throw new Error(`ArgumentError: B65 field ${p.tableAlias}.${p.field} does not exist in APP${E.appId}.`);return d(E,f,p,R)}let c=i.flatMap((f,E)=>{if(f.cteName!==null)return[];let R=s(f,p.field);return R===null?[]:[{table:f,tableIndex:E,code:R}]}),u=i.filter(f=>l(f,p.field));if(c.length+u.length>1)throw new Error(`ArgumentError: B65 field ${p.field} is ambiguous across multiple sources.`);if(c.length===1&&u.length===0){let f=c[0];return d(f.table,f.tableIndex,p,f.code)}throw u.length===1?new Error(`ArgumentError: B65 field ${p.field} resolves to a materialized CTE/temp column; physical APP fields are required.`):new Error(`ArgumentError: B65 field ${p.field} does not exist in a physical APP source.`)}}async function Hi(e,t,r,n){fn.delete(e);let i=ne(e),o=JSON.stringify(e.columns).includes('"GROUPING_')||JSON.stringify(e.orderBy).includes('"GROUPING_');if(i.type==="NONE"&&!o)return;let a=await vR(e,t,r,n),s=nl(e,a,tl);s&&fn.set(e,s)}function kR(e){let t=[...e].join(", ");return`${e.size===1&&e.has("STATISTICAL_AGGREGATE")?"\u7D71\u8A08\u96C6\u7D04\u306E\u6B63\u3057\u3044\u7D50\u679C":e.size===1&&e.has("GROUPING_SETS")?"\u5C0F\u8A08\u30FB\u7DCF\u8A08\u306E\u6B63\u3057\u3044\u7D50\u679C":e.has("GROUPING_SETS")?"\u30AF\u30A8\u30EA\u306E\u6B63\u3057\u3044\u7D50\u679C":"ORDER BY\u306E\u6B63\u3057\u3044\u7D50\u679C"}\u306B\u306F\u5B8C\u5168\u306A\u5019\u88DC\u96C6\u5408\u304C\u5FC5\u8981\u3067\u3059\u3002complete input reason: ${t}\u3002`}function Ac(e,t,r){let n=r?.kind==="CANONICAL_REST_TOP_N"||r?.kind==="KORDER_NATIVE"||r?.kind==="KORDER_CURSOR"?Tt({...e,orderBy:[]}):Tt(e),i=n.size>0&&t.onLimitReached==="truncate";return{reasons:n,effectiveOptions:i?{...t,onLimitReached:"error"}:t,truncateWasDisabled:i}}function Sc(e,t){throw e.reasons.size>0&&t instanceof ye?new ye(kR(e.reasons)+(e.truncateWasDisabled?"onLimit=truncate\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002":"")+t.message):t}async function ec(e,t){try{return await t()}catch(r){Sc(e,r)}}function nt(e){return e?.type==="BOOLEAN"&&e.value===!1}function UR(e){return e.from.appId===0&&e.from.cteName===at}function Mi(e){return e.type==="FIELD_REF"?!0:e.type==="ARITH"?Mi(e.left)||Mi(e.right):e.type==="STRING_FUNC"?Va(e):!1}function MR(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:on(e)}function on(e){return e.type==="FIELD"?!0:e.type==="STRING_FUNC"?Va(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?on(e.left)||on(e.right):e.type==="CASE_WHEN"?[...e.branches.map(r=>r.result),...e.elseResult?[e.elseResult]:[]].some(r=>r.type!=="ARRAY"&&(r.type==="FIELD_REF"||r.type==="ARITH"?Mi(r):on(r))):!1}function Va(e){return e.args.some(t=>MR(t))}function xR(e){for(let t of e.columns)switch(t.type){case"VARIABLE_COL":throw new Error(`internal error: unresolved SELECT variable @${t.name}`);case"LITERAL_COL":break;case"ARITH_COL":if(Mi(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"STRFUNC_COL":if(Va(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"SCALAR_VALUE_COL":if(on(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"WINDOW_COL":if(t.partitionBy.length>0||t.orderBy.length>0)throw new Error("ArgumentError: field reference is not allowed without FROM.");break;default:throw new Error(`ArgumentError: ${t.type} is not supported without FROM.`)}}function FR(e){if(e.joins.length>0||e.where||ne(e).type!=="NONE"||e.having||e.orderBy.length>0||e.distinct)throw new Error("ArgumentError: JOIN/WHERE/GROUP BY/HAVING/ORDER BY/DISTINCT are not supported without FROM.");xR(e);let t=ca([{}],e.columns),{rows:r,columns:n}=Ti(t,e.columns),i=Si(r,e.limit,e.offset);return{type:"SELECT",rows:i,columns:n,rowCount:i.length,warnings:[]}}async function KR(e,t,r,n,i,o){let a=i?.kind==="CANONICAL_REST_TOP_N"?Nc(e):e,s=Mn(a),l=i?.kind==="CANONICAL_LOCAL"?wt(e,e.from):s.fields,d=await Ha(e,t,n),p=ja(e,d),c=e.columns.some(_=>_.type==="CASE_COL")?await Wi(e,t,n,void 0,Ga(e)):void 0,u=r.maxRecords??1e4,f=new Set,E=r.onLimitReached??"error",R=r.fetchParallel??1,h=e.orderBy.length>0?i?.kind==="CANONICAL_REST_TOP_N"||i?.kind==="KORDER_NATIVE"||i?.kind==="KORDER_CURSOR":e.limit!==null&&e.limit<=500,m=e.limit===null?null:(e.offset??0)+e.limit,g=e.orderBy.length===0&&m!==null&&m<=u&&!oe(e.where)?m:void 0,T;if((i?.kind==="KORDER_NATIVE"||i?.kind==="KORDER_CURSOR")&&e.limit===0)T=[];else if(i?.kind==="KORDER_CURSOR"){let _=await uu({client:t,app:s.app,fields:s.fields,query:ia(e),offset:e.offset??0,limit:e.limit});T=_.records,_.cleanupWarning&&f.add(_.cleanupWarning)}else if(h)T=(await t.getRecords({app:s.app,query:s.query,fields:s.fields})).records;else{let _=e.where?W(e.where):"";T=await Ee(t.getRecords,s.app,_,l,{parallel:R,maxRecords:u,stopAfter:g,onLimit:E,onTruncate:I=>{f.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${I} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${I} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`)}})}let S=T.map(_=>et(_,null));h||(S=la(S,e.orderBy,o.optionOrders,o.sortKinds,o.semantics,ua(e.columns,void 0,p.row,c)),S=Si(S,e.limit,e.offset));let{rows:P,columns:w}=Ti(S,e.columns,void 0,p.row,void 0,c);return{type:"SELECT",rows:P,columns:w,rowCount:P.length,warnings:[...f]}}async function BR(e,t,r,n){let i=new Map,o=(a,s)=>{if(s.length===0)return;let l=i.get(a);l||(l=new Set,i.set(a,l));for(let d of s)l.add(d)};if(t==="SIMPLE"){let a=Mn(e);o(a.app,a.fields)}else{let a=[e.from,...e.joins.map(s=>s.table)].filter(s=>s.cteName===null);for(let s of a)o(s.appId,wt(e,s))}for(let[a,s]of i.entries()){let l=[...s].filter(u=>!tm(u));if(l.length===0)continue;let d=await Q(a,r,n);if(d.length===0)continue;let p=new Set(d.map(u=>u.code)),c=l.filter(u=>!p.has(u));if(c.length>0)throw new Error(`ArgumentError: unknown field code(s): ${c.join(", ")} (APP${a})`)}}function Tc(e){return e.where===null||e.from.subtableCode||e.from.cteName!==null?null:e.joins.length===0?_r(e.where,{tableAlias:e.from.alias??void 0,allowUnqualifiedFields:!0}):e.from.alias?_r(e.where,{tableAlias:e.from.alias}):null}async function wc(e,t,r){let n=new Map,i=(a,s)=>{if(s===null)return;let l=n.get(a);l?l.push(s):n.set(a,[s])};if(i(e.from.appId,Tc(e)),e.where!==null)for(let a of e.joins){if(!a.table.alias||a.table.subtableCode||a.table.cteName!==null)continue;let s=_r(e.where,{tableAlias:a.table.alias});i(a.table.appId,s)}let o=await Promise.all([...n.entries()].map(async([a,s])=>{let[l,d]=await Promise.all([de(a,t,r),rm(a,t,r)]),p=$R(s).filter(c=>l.get(c)==="STATUS");if(p.length>0){let c=await qa(a,t,r);if(c.enable&&c.states&&c.states.length>0){let u=new Set(c.states.map(f=>f.name));for(let f of p)d.set(f,u)}}return[a,l,d]}));return{fieldTypesByApp:new Map(o.map(([a,s])=>[a,s])),fieldOptionsByApp:new Map(o.map(([a,,s])=>[a,s]))}}function $R(e){let t=new Set,r=n=>{if(n.type==="BINARY"){n.left.type==="FIELD"&&t.add(n.left.field);return}if(n.type==="LOGICAL"){r(n.left),r(n.right);return}(n.type==="GROUP"||n.type==="NOT")&&r(n.expr)};for(let n of e)r(n);return[...t]}function rt(e,t){if(e!==null)switch(e.type){case"BINARY":(e.op==="IN"||e.op==="NOT_IN")&&e.left.type==="FIELD"&&t.push(e.left),e.left.type==="CASE_FIELD"&&xi(e.left.expr,t),e.right.type==="CASE_VALUE"&&xi(e.right.expr,t);return;case"LOGICAL":rt(e.left,t),rt(e.right,t);return;case"NOT":case"GROUP":rt(e.expr,t);return;case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}function xi(e,t){for(let r of e.branches)rt(r.condition,t)}function GR(e){let t=[];rt(e.where,t),rt(e.having,t);for(let r of e.columns)r.type==="CASE_COL"&&xi(r.expr,t);return t}function ve(e){return e.alias??e.cteName}function Ic(e,t){return[e.from,...e.joins.map(r=>r.table)].find(r=>ve(r)===t)}function Wa(e){return[e.from,...e.joins.map(t=>t.table)].filter(t=>t.cteName===null)}async function Ha(e,t,r){let n=GR(e);if(n.length===0)return new Map;let i=new Set,o=Wa(e);for(let s of n){if(s.tableAlias!==null){if(s.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){i.add(e.from.appId);continue}let l=Ic(e,s.tableAlias);l&&l.cteName===null&&i.add(l.appId);continue}if(e.joins.length===0){e.from.cteName===null&&i.add(e.from.appId);continue}for(let l of o)i.add(l.appId)}let a=await Promise.all([...i].map(async s=>[s,await de(s,t,r)]));return new Map(a)}function De(e){let t=e.indexOf(".");return t>0?{type:"FIELD",tableAlias:e.slice(0,t),field:e.slice(t+1)}:{type:"FIELD",tableAlias:null,field:e}}function bc(e,t,r){e!=="MIN"&&e!=="MAX"&&e!=="MODE"||t.type==="WILDCARD"||_t(t,r)}function _t(e,t){if(e.type==="FIELD_REF"){t.push(De(e.field));return}if(e.type==="FIELD"){t.push(e);return}if(e.type==="ARITH"){_t(e.left,t),_t(e.right,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){_t(e.left,t),_t(e.right,t);return}if(e.type==="STRING_FUNC"){for(let r of e.args)r.type!=="AGG_REF"&&r.type!=="AGG_ARITH"&&_t(r,t);return}if(e.type==="CASE_WHEN")for(let r of[...e.branches.map(n=>n.result),...e.elseResult?[e.elseResult]:[]])r.type!=="ARRAY"&&_t(r,t)}function Fi(e,t){if(e.type==="AGG_REF"){bc(e.func,e.arg,t);return}e.type==="AGG_ARITH"&&(Fi(e.left,t),Fi(e.right,t))}function _a(e,t){for(let r of e.args)r.type==="AGG_REF"||r.type==="AGG_ARITH"?Fi(r,t):an(r,t)}function an(e,t){if(e.type==="STRING_FUNC"){_a(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){an(e.left,t),an(e.right,t);return}if(e.type==="CASE_WHEN"){let r=[...e.branches.map(n=>n.result),...e.elseResult?[e.elseResult]:[]];for(let n of r)n.type==="STRING_FUNC"?_a(n,t):n.type!=="ARRAY"&&n.type!=="FIELD_REF"&&n.type!=="ARITH"&&an(n,t)}}function VR(e){let t=[];for(let r of e)r.type==="AGGREGATE"?bc(r.func,r.arg,t):r.type==="ARITH_AGG_COL"?Fi(r.expr,t):r.type==="STRFUNC_COL"?_a(r.expr,t):r.type==="SCALAR_VALUE_COL"&&an(r.expr,t);return t}var WR=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DROP_DOWN","RADIO_BUTTON","STATUS","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME"]);function HR(e){return e.sortKind!==void 0?e.sortKind:e.fieldType==="NUMBER"||e.fieldType==="RECORD_NUMBER"?"number":WR.has(e.fieldType)?"string":void 0}async function Pc(e,t,r,n){let i=VR(e.columns);if(i.length===0)return;let o=new Set,a=Wa(e);for(let f of i)if(f.tableAlias!==null){if(f.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){o.add(e.from.appId);continue}let E=Ic(e,f.tableAlias);E&&E.cteName===null&&o.add(E.appId)}else if(e.joins.length===0)e.from.cteName===null&&o.add(e.from.appId);else for(let E of a)o.add(E.appId);let s=new Map(await Promise.all([...o].map(async f=>{let E=await Q(f,t,r);return[f,new Map(E.map(R=>[R.code,R]))]}))),l=new Map,d=new Set(i.map(f=>f.field));await Promise.all([...s].map(async([f,E])=>{if(![...d].some(h=>E.get(h)?.fieldType==="STATUS"))return;let R=await za(f,t,r);R&&l.set(f,R)}));let p=[e.from,...e.joins.map(f=>f.table)],c=(f,E)=>{let R=f.semantics??z(f);return f.fieldType==="STATUS"&&l.has(E)?{...R,optionOrder:l.get(E)}:R};return f=>{let E;if(f.tableAlias!==null)if(f.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null)E=s.get(e.from.appId)?.get(f.field);else{let h=p.find(m=>ve(m)===f.tableAlias);if(!h)return;if(h.cteName!==null)return n?.get(h.cteName)?.columnMeta?.get(f.field)?.semantics??x("string");E=s.get(h.appId)?.get(Re(h,f.field))}else if(e.joins.length===0){if(e.from.cteName!==null)return n?.get(e.from.cteName)?.columnMeta?.get(f.field)?.semantics??x("string");E=s.get(e.from.appId)?.get(Re(e.from,f.field))}else{let h=p.flatMap(m=>{if(m.cteName!==null){let T=n?.get(m.cteName);return T?.columns.includes(f.field)?[T.columnMeta?.get(f.field)?.semantics??x("string")]:[]}let g=s.get(m.appId)?.get(Re(m,f.field));return g?[c(g,m.appId)]:[]});return h.length!==1?void 0:h[0]}if(!E)return;let R=f.tableAlias!==null?p.find(h=>ve(h)===f.tableAlias):e.joins.length===0?e.from:void 0;return c(E,R?.appId??e.from.appId)}}function Re(e,t){return e.subtableCode&&t.startsWith("_p.")?t.slice(3):t}function Di(e,t){if(e.subtableCode){if(t==="_rid")return"SINGLE_LINE_TEXT";if(t==="_idx"||t==="_pid")return"NUMBER"}}function Ge(e,t){let r=e.semantics??z(e);return{sortKind:HR(e),fieldType:e.fieldType,semantics:t===void 0?r:sr(r,t,e.code)}}function Nc(e){return e.orderBy.some(r=>r.key.type==="FIELD_NAME"&&r.key.name==="$id")?e:{...e,orderBy:[...e.orderBy,{key:{type:"FIELD_NAME",name:"$id"},direction:"ASC"}]}}function Y(e){return{sortKind:e,semantics:x(e)}}function Ve(){return{semantics:x("string","KSQL_UNKNOWN")}}function Cc(e="KSQL_ARRAY"){return{semantics:{fieldType:e,compareMode:"unsupported",inSubtable:!1,requiresCollectionOperators:!1}}}function Rr(e){if(e==="$id")return{sortKind:"number",fieldType:"__ID__",semantics:z({fieldType:"__ID__"})};if(e==="_rid")return Y("string");if(e==="_pid"||e==="_idx"||e==="$revision")return Y("number")}var YR=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function kt(e){if(e.func==="CAST"){let t=e.args[1];return t?.type==="STRING"&&t.value==="NUMBER"?Y("number"):Y("string")}return YR.has(e.func)?Y("number"):Y("string")}function hr(e,t){return e.type==="STRING"?Y("string"):e.type==="ARRAY"?Cc():e.type==="NUMBER"||e.type==="ARITH"||e.type==="SCALAR_ARITH"?Y("number"):e.type==="STRING_FUNC"?kt(e):e.type==="FIELD_REF"?t(De(e.field))??Ve():e.type==="FIELD"?t(e)??Ve():Ve()}function Yi(e){if(e.length===0)return Ve();let t=e[0],r=n=>{if(!n)return;let{source:i,...o}=n;return o};return e.every(n=>n.sortKind===t.sortKind&&n.fieldType===t.fieldType&&Hn(r(n.semantics),r(t.semantics)))?e.every(i=>Hn(i.semantics,t.semantics))?t:{...t,semantics:r(t.semantics)}:e.some(n=>n.semantics?.compareMode==="unsupported")?Cc("KSQL_MIXED_UNSUPPORTED"):Ve()}function Ya(e,t){if(e.type==="FIELD_REF")return t(De(e.field))??Ve();if(e.type==="FIELD")return t(e)??Ve();if(e.type==="NUMBER"||e.type==="ARITH"||e.type==="SCALAR_ARITH")return Y("number");if(e.type==="STRING"||e.type==="CONCAT_OP"||e.type==="VARIABLE")return Y("string");if(e.type==="STRING_FUNC")return kt(e);let r=e.branches.map(n=>hr(n.result,t));return e.elseResult&&r.push(hr(e.elseResult,t)),Yi(r)}function jR(e){return e.columns.some(t=>t.type==="FIELD"||t.type==="WILDCARD"||t.type==="PARENT_WILDCARD"||t.type==="CASE_COL"||t.type==="AGGREGATE"&&(t.func==="MIN"||t.func==="MAX"||t.func==="MODE"))}async function Da(e,t,r,n,i){let o=new Map;jR(e)&&await Promise.all(Wa(e).map(async c=>{if(o.has(c.appId))return;let u=await Q(c.appId,r,n);o.set(c.appId,new Map(u.map(f=>[f.code,f])))}));let a=[e.from,...e.joins.map(c=>c.table)],s=c=>{if(c.tableAlias!==null){if(c.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){let R=o.get(e.from.appId)?.get(c.field);return R?Ge(R,e.from.appId):void 0}let f=a.find(R=>ve(R)===c.tableAlias);if(!f)return;if(f.cteName!==null)return i?.get(f.cteName)?.columnMeta?.get(c.field);let E=o.get(f.appId)?.get(Re(f,c.field));return E?Ge(E,f.appId):Rr(c.field)}if(e.joins.length===0){if(e.from.cteName!==null)return i?.get(e.from.cteName)?.columnMeta?.get(c.field);let f=o.get(e.from.appId)?.get(Re(e.from,c.field));return f?Ge(f,e.from.appId):Rr(c.field)}let u=a.flatMap(f=>{if(f.cteName!==null){let h=i?.get(f.cteName);return h?.columns.includes(c.field)?[h.columnMeta?.get(c.field)]:[]}let E=o.get(f.appId)?.get(Re(f,c.field)),R=E?Ge(E,f.appId):Rr(c.field);return R?[R]:[]});return u.length===1?u[0]:void 0},l=new Map,d=e.columns.some(c=>c.type==="WILDCARD"||c.type==="PARENT_WILDCARD");if(e.columns.length===1&&(e.columns[0].type==="WILDCARD"||e.columns[0].type==="PARENT_WILDCARD")){for(let c of t){let u=s(De(c));u&&l.set(c,u)}return l}if(d)for(let c of t){let u=s(De(c));u&&l.set(c,u)}return e.columns.filter(c=>c.type!=="WILDCARD"&&c.type!=="PARENT_WILDCARD").forEach((c,u)=>{let f=d?"alias"in c&&c.alias?c.alias:void 0:t[u];if(!f)return;let E;if(c.type==="FIELD")E=s(De(c.field));else if(c.type==="AGGREGATE")c.func==="GROUP_CONCAT"?E=Y("string"):c.func==="COUNT"||c.func==="SUM"||c.func==="AVG"||c.func==="STDDEV_POP"||c.func==="STDDEV_SAMP"||c.func==="VAR_POP"||c.func==="VAR_SAMP"||c.func==="MEDIAN"?E=Y("number"):(c.func==="MIN"||c.func==="MAX"||c.func==="MODE")&&c.arg.type!=="WILDCARD"&&(E=Ya(c.arg,s));else if(c.type==="ARITH_AGG_COL"||c.type==="ARITH_COL")E=Y("number");else if(c.type==="GROUPING_COL")E=Y("number");else if(c.type==="LITERAL_COL")E=Y("string");else if(c.type==="SCALAR_VALUE_COL"){let R=c.expr;R.type==="STRING_FUNC"?E=kt(R):R.type==="NUMBER"||R.type==="SCALAR_ARITH"?E=Y("number"):R.type==="FIELD"?E=s(R):E=Y("string")}else if(c.type==="STRFUNC_COL")E=kt(c.expr);else if(c.type==="WINDOW_COL")E=Y("number");else if(c.type==="CASE_COL"){let R=c.expr.branches.map(h=>hr(h.result,s));c.expr.elseResult&&R.push(hr(c.expr.elseResult,s)),E=Yi(R)}else c.type==="SCALAR_SUBQUERY_COL"&&(E=Ve());E&&l.set(f,E)}),l}function qR(e,t){let r=We.get(e),n=We.get(t),i=new Map;return e.columns.forEach((o,a)=>{let s=r?.get(o),l=t.columns[a],d=l===void 0?void 0:n?.get(l);s&&d?i.set(o,Yi([s,d])):(s||d)&&i.set(o,Ve())}),i}function ja(e,t){let r=[e.from,...e.joins.map(s=>s.table)],n=r.filter(s=>s.cteName===null),i=new Set(e.columns.map(s=>"alias"in s?s.alias:null).filter(s=>s!==null)),o=s=>{if(s.tableAlias!==null){if(s.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null)return t.get(e.from.appId)?.get(s.field);let d=r.find(p=>ve(p)===s.tableAlias);return!d||d.cteName!==null?void 0:Di(d,s.field)??t.get(d.appId)?.get(Re(d,s.field))}if(e.joins.length===0)return e.from.cteName!==null?void 0:Di(e.from,s.field)??t.get(e.from.appId)?.get(Re(e.from,s.field));if(r.some(d=>d.cteName!==null))return;let l=n.flatMap(d=>{let p=Di(d,s.field)??t.get(d.appId)?.get(Re(d,s.field));return p?[p]:[]});return l.length===1?l[0]:void 0};return{row:o,having:s=>{if(!(s.tableAlias===null&&i.has(s.field)))return o(s)}}}async function zR(e,t,r,n,i,o=!0,a){let s=r.maxRecords??1e4,l=new Set,d=r.fetchParallel??1;await Promise.all([hn(e.where,t,r,n,i),hn(e.having,t,r,n,i)]);let[p,c,u]=await Promise.all([wc(e,t,n),Ha(e,t,n),Pc(e,t,n,i)]),f=ja(e,c),E=await Wi(e,t,n,i,Fe(e.having)||Ga(e)),R=gc(e,E),h=rr(e,p);yo(h);let m=h.mainCondition,g=h.joinConditions,T=nt(e.where),S=T?Promise.resolve([]):sn(e,e.from,t,s,d,!0,r.onLimitReached??"error",l,m,o),P=[],w=[];for(let U of e.joins){if(T){P.push({join:U,promise:Promise.resolve([])});continue}let B=U.table.alias?g.get(U.table.alias)??null:null;B!==null?P.push({join:U,promise:sn(e,U.table,t,s,d,!1,r.onLimitReached??"error",l,B)}):w.push(U)}let _=Xc(e.columns,t,r,n,i),I=a?Promise.resolve(a):En(e,t,n,i);_.catch(()=>{}),I.catch(()=>{});let k=await S,C=new Map;C.set(e.from.alias,k);for(let{join:U,promise:B}of P)C.set(U.table.alias,await B);await Promise.all(w.map(async U=>{let H=await kc(e,U,C,t,s,d,r.onLimitReached??"error",l,null)??await sn(e,U.table,t,s,d,!1,r.onLimitReached??"error",l,null);C.set(U.table.alias,H)}));let y=await _,{optionOrders:O,sortKinds:L,semantics:N}=await I,{rows:v,columns:b}=fa({tables:C,stmt:e,scalarCache:y,optionOrders:O,sortKinds:L,orderSemantics:N,fieldTypeResolver:f.row,fieldSemanticsResolver:E,havingFieldTypeResolver:f.having,havingFieldSemanticsResolver:R,aggregateSortKindResolver:u,appliedKlikes:h.appliedKlikes,resolvedGroupingSpec:fn.get(e)});return{type:"SELECT",rows:v,columns:b,rowCount:v.length,warnings:[...l]}}async function Oc(e,t,r,n){let[i,o]=await Promise.all([e.left.type==="UNION"?Oc(e.left,t,r,n):yt(e.left,t,r,n),yt(e.right,t,r,n)]),a=i.columns,s=o.columns,l=o.rows.map(c=>{let u={};return a.forEach((f,E)=>{u[f]=c[s[E]??f]??""}),u}),d=[...i.rows,...l],p=e.all?d:Lc(d,a);return{type:"SELECT",rows:p,columns:a,rowCount:p.length}}function Lc(e,t){let r=new Set;return e.filter(n=>{let i=JSON.stringify(t.map(o=>n[o]??""));return r.has(i)?!1:(r.add(i),!0)})}async function XR(e,t,r,n,i,o=!1){if((i==null||i.size===0)&&ut(e))return yt(ct(e),t,r,n,void 0,o);let a=new Map(i??[]);for(let s of e.ctes){let l;s.query.type==="SHOW_APPS"?l=await Yc(t):s.query.type==="DESCRIBE"?l=await jc(s.query,t,n):l=await Ut(s.query,t,r,a,n,!0),a.set(s.name,{rows:l.rows,columns:l.columns,columnMeta:We.get(l)})}return Ut(e.query,t,r,a,n,o)}async function Ut(e,t,r,n,i,o=!1){if(e.type==="UNION"){let[l,d]=await Promise.all([Ut(e.left,t,r,n,i,o),Ut(e.right,t,r,n,i,o)]),p=l.columns,c=d.columns,u=d.rows.map(h=>{let m={};return p.forEach((g,T)=>{m[g]=h[c[T]??g]??""}),m}),f=[...l.rows,...u],E=e.all?f:Lc(f,p),R={type:"SELECT",rows:E,columns:p,rowCount:E.length};return o&&We.set(R,qR(l,d)),R}if(!(e.from.cteName!=null&&e.from.cteName!==at||e.joins.some(l=>l.table.cteName!=null)))return yt(e,t,r,i,n,o);let s=await JR(e,t,r,n,i);return o&&We.set(s,await Da(e,s.columns,t,i,n)),s}async function JR(e,t,r,n,i){await Hi(e,t,i,n);let o=fn.get(e),a=new Set,s=F=>{if(F.alias!==null||F.cteName===null)return F;let D=ve(F);return a.add(D),{...F,alias:D}};e={...e,from:s(e.from),joins:e.joins.map(F=>({...F,table:s(F.table)}))};let l=new Set;for(let F of[e.from,...e.joins.map(D=>D.table)]){let D=ve(F);if(D!==null){if(l.has(D))throw new Error(`ArgumentError: effective alias ${D} is used by multiple tables.`);l.add(D)}}let d=F=>{let D=n.get(F);if(!D)throw new Error(`ArgumentError: materialized source ${F} is not available.`);return D};for(let F of[e.from,...e.joins.map(D=>D.table)])F.cteName!==null&&d(F.cteName);let p=r.maxRecords??1e4,c=new Set,u=r.fetchParallel??1;await Promise.all([hn(e.where,t,r,i,n),hn(e.having,t,r,i,n),qc(e,t,r,i,n)]);let f=await dn(e,t,i,n);if(f.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Dt(f)}).`);let E=await En(e,t,i,n),R=Ui(e)?(e.orderMode==="KINTONE_NATIVE"?zr:qr)({stmt:e,staticMode:"FULL_SCAN",whereCapability:f.capability,whereReasons:f.reasons,orderSemantics:E.semantics,maxRecords:p,hasKlike:oe(e.where)}):null,h=Ac(e,r,R),m=h.effectiveOptions,[g,T,S]=await Promise.all([wc(e,t,i),Ha(e,t,i),Pc(e,t,i,n)]),P=ja(e,T),w=await Wi(e,t,i,n,Fe(e.having)||Ga(e)),_=gc(e,w),I=rr(e,g);yo(I);let k=Xc(e.columns,t,m,i,n),C=Promise.resolve(E);k.catch(()=>{}),C.catch(()=>{});let y=new Map,O=new Map;if(e.from.cteName!=null){let F=d(e.from.cteName);y.set(e.from.alias,F.rows.map(tc)),O.set(e.from.alias,F.columns)}else{let F=await ec(h,()=>sn(e,e.from,t,p,u,!0,m.onLimitReached??"error",c,I.mainCondition,f.capability==="EXACT_PUSHDOWN"));y.set(e.from.alias,F)}let L=e.joins.map(F=>ec(h,async()=>{if(F.table.cteName!=null){let D=d(F.table.cteName);y.set(F.table.alias,D.rows.map(tc)),O.set(F.table.alias,D.columns)}else{let D=F.table.alias?I.joinConditions.get(F.table.alias)??null:null,re=await kc(e,F,y,t,p,u,m.onLimitReached??"error",c,D)??await sn(e,F.table,t,p,u,!1,m.onLimitReached??"error",c,D);y.set(F.table.alias,re)}}));await Promise.all(L);let N=await k,{optionOrders:v,sortKinds:b,semantics:U}=await C,B=e.joins.length===0&&e.from.cteName!=null?d(e.from.cteName).columns:void 0,{rows:H,columns:fe}=fa({tables:y,stmt:e,scalarCache:N,optionOrders:v,sortKinds:b,orderSemantics:U,fieldTypeResolver:P.row,fieldSemanticsResolver:w,havingFieldTypeResolver:P.having,havingFieldSemanticsResolver:_,aggregateSortKindResolver:S,appliedKlikes:I.appliedKlikes,sourceColumns:B,tableColumns:O,hiddenQualifiedAliases:a,resolvedGroupingSpec:o});return{type:"SELECT",rows:H,columns:fe,rowCount:H.length,warnings:[...c]}}function tc(e){return Object.fromEntries(Object.entries(e).map(([t,r])=>[t,{value:r??""}]))}async function sn(e,t,r,n,i,o,a,s,l=null,d=!0){let p=wt(e,t),c=R=>{s.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${R} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${R} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`)};if(!t.subtableCode){let R=o&&d?Vs(e,t.appId).query:"",h=l!==null?W(l):"",m=R&&h?`(${R}) and (${h})`:R||h;return(await Oe(r.getRecords,t.appId,m,p,{parallel:i,maxRecords:n,onLimit:a,onTruncate:c})).records}let E=(await Oe(r.getRecords,t.appId,"",p,{parallel:i,maxRecords:n,onLimit:a,onTruncate:c})).records;return wu(E,t.subtableCode)}var _c=50;function QR(e){let t=Ae(e);return t!==null?JSON.stringify(t):e}function va(e){return JSON.stringify(e)}function Mt(e,t){return JSON.stringify(e.map((r,n)=>t[n]?QR(r):r))}function yn(e,t){let r=e.raw.get(va(t));if(r!==void 0)return r;if(e.numericKey.some(Boolean))return e.normalized.get(Mt(t,e.numericKey))}async function An(e,t,r,n,i,o){let a=i.maxRecords??1e4,s=i.fetchParallel??1,l=t.map(h=>o.get(h)==="NUMBER"),d={raw:new Map,normalized:new Map,numericKey:l},p=(h,m,g)=>{let T=h.get(m);(T===void 0||g>T)&&h.set(m,g)},c=(h,m)=>{p(d.raw,va(h),m),l.some(Boolean)&&p(d.normalized,Mt(h,l),m)},u=new Set,f=[],E=new Set;for(let h of r){let m=va(h);E.has(m)||(E.add(m),h.some(g=>g==="")?f.push(h):u.add(h[0]))}let R=["$id",...t];for(let h of yr([...u],_c)){let m=`${t[0]} in (${h.map(Ki).join(",")})`,g=await Ee(n.getRecords,e,m,R,{maxRecords:a,parallel:s});for(let T of g){let S=Number(T.$id?.value);Number.isFinite(S)&&c(t.map(P=>Dc(T[P]?.value)),S)}}for(let h of f){let m=t.map((T,S)=>`${T} = ${Ki(h[S])}`).join(" and "),g=await Ee(n.getRecords,e,m,["$id"],{maxRecords:a,parallel:s});g.length!==0&&c(h,ZR(g))}return d}function ZR(e){let t=Number.NEGATIVE_INFINITY;for(let r of e){let n=Number(r.$id?.value);Number.isFinite(n)&&n>t&&(t=n)}if(!Number.isFinite(t))throw new Error("\u30EC\u30B3\u30FC\u30C9\u306B\u6570\u5024\u306E $id \u304C\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093\u3002");return t}function Dc(e){return typeof e=="string"?e:e==null?"":String(e)}function Ki(e){return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function yr(e,t){let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}var vc=50,em=6,rc=vc*em;async function kc(e,t,r,n,i,o,a,s,l=null){if(t.type!=="INNER"||!t.table.alias||t.table.subtableCode)return null;let d=t.on.left.tableAlias,p=t.on.right.tableAlias;if(!d||!p)return null;let c,u,f;if(d===t.table.alias&&p!==t.table.alias)c=p,u=t.on.right.field,f=t.on.left.field;else if(p===t.table.alias&&d!==t.table.alias)c=d,u=t.on.left.field,f=t.on.right.field;else return null;let E=r.get(c);if(!E)return null;let R=new Set;for(let w of E){let _=w[u]?.value,I=Dc(_).trim();I.length>0&&R.add(I)}let h=[...R];if(h.length===0)return[];if(h.length>rc)return s.add(`JOIN\u30AD\u30FC\u304C ${h.length} \u4EF6\u306E\u305F\u3081 ON \u6700\u9069\u5316\u3092\u30B9\u30AD\u30C3\u30D7\u3057\u3001JOIN\u5148\u3092\u5168\u4EF6\u53D6\u5F97\u3057\u307E\u3059\uFF08\u4E0A\u9650 ${rc} \u4EF6\uFF09\u3002`),null;let m=wt(e,t.table),g=w=>{s.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${w} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${w} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`)},T=yr(h,vc),S=[],P=new Set;for(let w of T){let _=`${f} in (${w.map(Ki).join(",")})`,I=l!==null?`(${_}) and (${W(l)})`:_,k=await Oe(n.getRecords,t.table.appId,I,m,{parallel:o,maxRecords:i,onLimit:a,onTruncate:g});for(let C of k.records){let y=`${C.$id?.value??""}:${JSON.stringify(C)}`;P.has(y)||(P.add(y),S.push(C))}}return S}var nc=new Map,ic=new Map,oc=new Map,ac=new Map,sc=new Map,lc=new Map;function Ar(e,t,r){return e.get(t)?.get(r)}function Sr(e,t,r,n){let i=e.get(t);i||(i=new Map,e.set(t,i)),i.set(r,n)}function tm(e){return e.startsWith("_")||e.startsWith("$")}async function Q(e,t,r){let n=Ar(ac,r,e);if(n)return n;let i=t.getFields(e);return Sr(ac,r,e,i),i}async function He(e,t,r){let n=Ar(lc,r,e);if(n)return n;let i=t.getNumberPrecision(e);return Sr(lc,r,e,i),i}async function qa(e,t,r){let n=Ar(sc,r,e);if(n)return n;let i=t.getProcessStatuses(e);return Sr(sc,r,e,i),i}async function za(e,t,r){let n=await qa(e,t,r);return n.enable&&n.states!==null?new Map(n.states.map(i=>[i.name,i.index])):void 0}async function de(e,t,r){let n=Ar(nc,r,e);if(n)return n;let i=await Q(e,t,r),o=new Map(i.map(a=>[a.code,a.fieldType]));return Sr(nc,r,e,o),o}async function ka(e,t,r){let n=Ar(ic,r,e);if(n)return n;let i=await Q(e,t,r),o=new Map;for(let a of i){if(!a.optionOrder)continue;let s=Object.entries(a.optionOrder);s.length!==0&&o.set(a.code,new Map(s))}return Sr(ic,r,e,o),o}async function rm(e,t,r){let n=await ka(e,t,r);return new Map([...n.entries()].map(([i,o])=>[i,new Set(o.keys())]))}async function uc(e,t,r){let n=Ar(oc,r,e);if(n)return n;let i=await Q(e,t,r),o=new Map;for(let a of i)a.sortKind&&o.set(a.code,a.sortKind);return Sr(oc,r,e,o),o}function nm(e){let t=[...e.orderBy,...e.columns.flatMap(r=>r.type==="WINDOW_COL"?r.orderBy:[])];return[...new Set(t.flatMap(r=>r.key.type==="FIELD_NAME"?[r.key.name]:[]))]}async function im(e,t,r,n){let i=nm(e);if(i.length===0)return new Map;let o=[e.from,...e.joins.map(c=>c.table)],a=new Set,s=new Map(await Promise.all([...new Set(o.filter(c=>c.cteName===null).map(c=>c.appId))].map(async c=>{let u=await Q(c,t,r);return[c,new Map(u.map(f=>[f.code,f]))]}))),l=c=>{if(c.tableAlias!==null){if(c.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){let R=s.get(e.from.appId)?.get(c.field);return R?Ge(R,e.from.appId):void 0}let f=o.find(R=>ve(R)===c.tableAlias);if(!f)return;if(f.cteName!==null)return n?.get(f.cteName)?.columnMeta?.get(c.field);let E=s.get(f.appId)?.get(Re(f,c.field));return E?Ge(E,f.appId):Rr(c.field)}if(e.joins.length===0){if(e.from.cteName!==null)return n?.get(e.from.cteName)?.columnMeta?.get(c.field);let f=s.get(e.from.appId)?.get(Re(e.from,c.field));return f?Ge(f,e.from.appId):Rr(c.field)}let u=o.flatMap(f=>{if(f.cteName!==null){let h=n?.get(f.cteName),m=h?.columns.includes(c.field)?h.columnMeta?.get(c.field):void 0;return m?[m]:[]}let E=s.get(f.appId)?.get(Re(f,c.field)),R=E?Ge(E,f.appId):Rr(c.field);return R?[R]:[]});return u.length>1&&a.add(c.field),u.length===1?u[0]:void 0},d=new Map;for(let c of e.columns){if(!("alias"in c)||!c.alias)continue;let u;if(c.type==="FIELD")u=l(De(c.field));else if(c.type==="ARITH_COL"||c.type==="ARITH_AGG_COL"||c.type==="WINDOW_COL")u=Y("number");else if(c.type==="GROUPING_COL")u=Y("number");else if(c.type==="LITERAL_COL"||c.type==="SCALAR_VALUE_COL")u=Y("string");else if(c.type==="STRFUNC_COL")u=kt(c.expr);else if(c.type==="SCALAR_SUBQUERY_COL")u=Ve();else if(c.type==="CASE_COL"){let f=c.expr.branches.map(E=>hr(E.result,l));c.expr.elseResult&&f.push(hr(c.expr.elseResult,l)),u=Yi(f)}else c.type==="AGGREGATE"&&(c.func==="MIN"||c.func==="MAX"||c.func==="MODE"?c.arg.type!=="WILDCARD"&&(u=Ya(c.arg,l)):u=c.func==="GROUP_CONCAT"?Y("string"):Y("number"));u?.semantics&&d.set(c.alias,u.semantics)}let p=new Map;for(let c of i){let u=d.get(c)??l(De(c))?.semantics;if(!u){let E=De(c);E.tableAlias===null&&a.has(E.field)&&p.set(c,z({fieldType:"KSQL_AMBIGUOUS"}));continue}let f=u;if(u.fieldType==="STATUS"&&u.source&&e.orderMode!=="KINTONE_NATIVE"){let E=await qa(u.source.appId,t,r);E.enable&&E.states!==null&&(f={...u,optionOrder:new Map(E.states.map(R=>[R.name,R.index]))})}p.set(c,f)}return p}async function En(e,t,r,n){let i=e.columns.some(l=>l.type==="WINDOW_COL"&&l.orderBy.length>0);if(e.orderBy.length===0&&!i)return{optionOrders:new Map,sortKinds:new Map,semantics:new Map};let[o,a,s]=await Promise.all([om(e,t,r),am(e,t,r),im(e,t,r,n)]);return{optionOrders:o,sortKinds:a,semantics:s}}async function om(e,t,r){let n=new Map,i=[e.from,...e.joins.map(a=>a.table)],o=new Set;for(let a of i){if(a.cteName!=null||o.has(a.appId))continue;o.add(a.appId);let s=await ka(a.appId,t,r);for(let[l,d]of s.entries())n.has(l)||n.set(l,d)}for(let a of i){if(a.cteName!=null||!a.alias)continue;let s=await ka(a.appId,t,r);for(let[l,d]of s.entries())n.set(`${a.alias}.${l}`,d)}return n}async function am(e,t,r){let n=new Map,i=[e.from,...e.joins.map(a=>a.table)],o=new Set;for(let a of i){if(a.cteName!=null||o.has(a.appId))continue;o.add(a.appId);let s=await uc(a.appId,t,r);for(let[l,d]of s.entries())n.has(l)||n.set(l,d)}for(let a of i){if(a.cteName!=null||!a.alias)continue;let s=await uc(a.appId,t,r);for(let[l,d]of s.entries())n.set(`${a.alias}.${l}`,d)}return n}function Uc(e,t){if(typeof e!="string")return e;let r=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),n=new Set(["CHECK_BOX","MULTI_SELECT"]);if(r.has(t??"")){if(e==="")return[];try{let i=JSON.parse(e);if(Array.isArray(i)&&i.every(o=>typeof o=="object"&&"code"in o))return i.map(o=>({code:o.code}))}catch{}return e.split(",").map(i=>({code:i.trim()}))}if(n.has(t??"")){if(e==="")return[];try{let i=JSON.parse(e);if(Array.isArray(i))return i.map(String)}catch{}return e.split(",").map(i=>i.trim())}return e}var sm=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function lm(e,t,r){let n=new Map(r.map(i=>[i.code,i]));for(let i of t){let o=n.get(i);if(!o)throw new Error(`ArgumentError: DML target field ${i} does not exist.`);if(o.inSubtable)throw new Error(`ArgumentError: DML target field ${i} is inside a subtable. Use subtable DML syntax (for example, APP${e}$\u30C6\u30FC\u30D6\u30EB).`);if(o.writable===!1||sm.has(o.fieldType))throw new Error(`ArgumentError: DML target field ${i} is not writable (${o.fieldType}).`)}}async function ke(e,t,r,n){let i=await Q(e,r,n);return lm(e,t,i),i}async function it(e,t,r,n,i){let o=new Map(r.map(a=>[a.code,a]));return t.some(a=>o.get(a)?.fieldType==="NUMBER")?He(e,n,i):void 0}function xt(e,t,r,n){let i=new Map(r.map(o=>[o.code,o]));e.forEach((o,a)=>{for(let s of t){let l=i.get(s),d=o[s]?.value??"",p=ge(d,l,n);if(!p.ok)throw new Error(`DmlValidationError: ${p.code} ${p.message} (row=${a+1}, field=${s})`);let c=["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(l.fieldType)&&Array.isArray(d)&&d.every(u=>typeof u=="object"&&u!==null&&"code"in u);o[s]={value:c?d:p.value}}})}async function um(e,t,r,n,i){let o=await ke(e.appId,e.fields,t,n),a=await Hr({statement:e,fieldInfos:o,dmlMaxRows:Pe(r.dmlMaxRows,"dmlMaxRows",ot),dmlMaxSubtableRows:Pe(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",be),statementNumber:i,loadNumberPrecision:()=>He(e.appId,t,n)});return Bm(e,a,o)}async function cm(e,t,r,n,i){let{fieldInfos:o,prepared:a}=await Mc(e,t,r,n,i);return Gm(e,a,o)}async function Mc(e,t,r,n,i){let o=await ke(e.appId,e.fields,t,n),a=new Map(o.map(h=>[h.code,h.fieldType])),s=Vc(e),l=new Set;for(let h of s){let m=Mt(h,e.keyFields.map(g=>a.get(g)==="NUMBER"));if(l.has(m))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");l.add(m)}let d=await An(e.appId,e.keyFields,s,t,r,a),p=s.map(h=>yn(d,h)),c=new Map,u=[...new Set(p.filter(h=>h!==void 0))],f=["$id","$revision",...o.filter(h=>!h.inSubtable&&h.fieldType!=="FILE").map(h=>h.code)];for(let h of yr(u,100)){let m=await t.getRecords({app:e.appId,query:`$id in (${h.join(",")}) limit 500`,fields:[...new Set(f)]});for(let g of m.records){let T=Number(g.$id?.value);Number.isSafeInteger(T)&&T>0&&c.set(T,g)}}let E=p.map((h,m)=>({sourceRowIndex:m,...h===void 0?{}:{targetId:h,snapshot:c.get(h)}})),R=await tu({statement:e,matches:E,fieldInfos:o,dmlMaxRows:Pe(r.dmlMaxRows,"dmlMaxRows",ot),dmlMaxSubtableRows:Pe(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",be),statementNumber:i,loadNumberPrecision:()=>He(e.appId,t,n)});return{fieldInfos:o,prepared:R}}async function pm(e,t,r,n){if(r.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let i=await ke(e.appId,e.fields,t,n),o=await Hr({statement:e,fieldInfos:i,dmlMaxRows:Pe(r.dmlMaxRows,"dmlMaxRows",ot),dmlMaxSubtableRows:Pe(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",be),loadNumberPrecision:()=>He(e.appId,t,n)}),a=ea(o);if(r.confirm&&!await r.confirm(o.guards.parentRows,"INSERT",{statementIndex:0,statementCount:1,statementType:"INSERT",targetAppId:e.appId,applyDetail:ji(a),applyDiagnostic:a}))throw new Z("INSERT",o.guards.parentRows);let s=await au(o,t,a);return{...s,diagnostic:Ie(a,s)}}async function dm(e,t,r,n){if(r.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let{prepared:i}=await Mc(e,t,r,n,1),o=ta(i);if(r.confirm){let s=ji(o);if(!await r.confirm(i.guards.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPSERT",targetAppId:e.appId,applyDetail:s,applyDiagnostic:o}))throw new Z("UPDATE",i.guards.parentRows)}let a=await su(i,t,o);return{type:"UPSERT",insertedCount:a.insertedCount,updatedCount:a.updatedCount,successfulChunks:a.successfulChunks,successfulParents:a.successfulParents,successfulInsertChunks:a.successfulInsertChunks,successfulUpdateChunks:a.successfulUpdateChunks,nonTransactional:a.nonTransactional,diagnostic:Ie(o,a)}}function fm(e,t){let r=new Map;for(let n of[...e,...t]){let i=r.get(n.table);r.set(n.table,i?{table:n.table,patchRows:i.patchRows+n.patchRows,appendRows:i.appendRows+n.appendRows,removeRows:i.removeRows+n.removeRows}:{...n})}return[...r.values()]}function ji(e,t=!0){let r=e.branches.find(u=>u.branch==="insert"),n=e.branches.find(u=>u.branch==="update"),i=e.branches.flatMap(u=>u.targets),o=fm(r?_i(r):[],n?_i(n):[]),a=Em(i),s=e.branches.reduce((u,f)=>u+(f.parentRows??0),0),l=i.filter(u=>u.targetKind==="SUBTABLE").reduce((u,f)=>u+(f.changedCount??0),0),d=o.reduce((u,f)=>u+f.appendRows,0),p=o.reduce((u,f)=>u+f.removeRows,0),c={kind:e.statementKind==="UPDATE"?"APPLY_PATCH":e.statementKind==="INSERT"?"APPLY_INSERT":"APPLY_UPSERT",parentRows:s,changedSubtableRows:l,addedSubtableRows:d,tables:o,...a.length>0?{multiValues:a}:{},deletedRows:p,deletedParentRows:e.branches.reduce((u,f)=>u+(f.deletedParentRows??0),0),revisionRequired:e.branches.some(u=>u.guards.revisionRequired),irreversible:!0,retryOnRevisionConflict:!1,...t?{nonTransactional:!0,partialSuccessPossible:!0}:{}};if(e.statementKind==="INSERT"&&r)return{...c,insertedParentRows:r.parentRows??0,initialSubtableRows:r.targets.filter(u=>u.targetKind==="SUBTABLE").reduce((u,f)=>u+(f.changedCount??0),0)};if(e.statementKind==="UPSERT"&&r&&n){let u=_i(r),f=_i(n);return{...c,insertedParentRows:r.parentRows??0,initialSubtableRows:r.targets.filter(E=>E.targetKind==="SUBTABLE").reduce((E,R)=>E+(R.changedCount??0),0),updatedParentRows:n.parentRows??0,applyBranches:{insert:{parentRows:r.parentRows??0,initialSubtableRows:u.reduce((E,R)=>E+R.appendRows,0),tables:u},update:{parentRows:n.parentRows??0,changedSubtableRows:n.targets.filter(E=>E.targetKind==="SUBTABLE").reduce((E,R)=>E+(R.changedCount??0),0),addedSubtableRows:f.reduce((E,R)=>E+R.appendRows,0),tables:f,deletedRows:f.reduce((E,R)=>E+R.removeRows,0),deletedParentRows:n.deletedParentRows??0}}}}return c}function _i(e){return e.targets.filter(t=>t.targetKind==="SUBTABLE").map(t=>{let r=vt(t,"APPEND"),n=vt(t,"REMOVE");return{table:t.field,patchRows:(t.changedCount??0)-r-n,appendRows:r,removeRows:n}})}function vt(e,t){return e.operations.filter(r=>r.kind===t).reduce((r,n)=>r+(n.count??0),0)}function Em(e){let t=new Map;for(let r of e.filter(n=>n.targetKind==="MULTI_VALUE")){let n={field:r.field,fieldType:r.fieldType??"UNKNOWN",addedValues:vt(r,"ADD"),removedValues:vt(r,"REMOVE_VALUE"),changedValues:r.changedCount??0,parents:(r.postImages??[]).map(o=>({parentId:o.parentId,postImage:o.value}))},i=t.get(r.field);t.set(r.field,i?{...i,addedValues:i.addedValues+n.addedValues,removedValues:i.removedValues+n.removedValues,changedValues:i.changedValues+n.changedValues,parents:[...i.parents,...n.parents]}:n)}return[...t.values()]}async function xc(e,t,r,n,i,o){if(e.type==="INSERT"&&e.applyBlocks?.length)return um(e,t,r,n,o);if(e.type==="UPSERT"&&(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length))return cm(e,t,r,n,o);if(e.type==="UPDATE"&&e.applyBlocks?.length){let a=await Gc(e,t,r,n,o);if(a.type!=="VALIDATION")throw new Error("InternalError: APPLY VALIDATE ONLY returned a mutation result.");return a}return(await Xa(e,t,r,n,i,o)).result}var Bi=class extends Error{constructor(r,n){super(`RejectLimitExceededError: ${r}`);this.diagnostic=n;this.name="RejectLimitExceededError"}};async function Xa(e,t,r,n,i,o,a=!0,s=!0){let l=e.type==="UPDATE"?"UPDATE":e.type.startsWith("UPSERT")?"UPSERT":"INSERT",d=e.type==="UPDATE"?["$id",...e.assignments.map(N=>N.field)]:[...e.fields];if(new Set(d).size!==d.length)throw new Error("ArgumentError: DML target fields contain duplicates.");let p=e.type==="UPDATE"?e.assignments.map(N=>N.field):e.fields,c=await ke(e.appId,p,t,n);e.type==="UPDATE"&&await Er(e,t,n);let u=new Map(c.map(N=>[N.code,N])),f=await it(e.appId,p,c,t,n),E=Me(c,d),R=Iu(E),h=(await Rm(e,l,t,r,n,i,u,e.type==="UPDATE"?R:void 0)).sort((N,v)=>N.rowNumber-v.rowNumber),m=h.filter(N=>N.mode==="update"),g=e.type==="UPDATE"?gm:e.type.startsWith("UPSERT")?N=>ym(N,t,r.maxRecords??1e4):void 0,T=r.loadUpdateModeSnapshots??g,S=m.length>0&&T!==void 0,P=new Map;if(S){jo(m,p,c);let N=await T({appId:e.appId,candidates:m,fields:R}),v=new Map;for(let b of m){if(b.targetId===void 0)throw new Error(`InternalError: update-mode validation candidate has no targetId (row=${b.rowNumber}).`);let U=N.get(b.targetId);if(!U)throw new Error(`InternalError: update-mode snapshot is missing for record ${b.targetId}.`);let B=bu(U,b.record??{});v.set(b.rowNumber,B)}f===void 0&&[...v.values()].some(b=>Ct(b,E))&&(f=await He(e.appId,t,n));for(let b of m){let U=v.get(b.rowNumber);if(!U)throw new Error(`InternalError: validation post-image is missing for row ${b.rowNumber}.`);P.set(b.rowNumber,Ot(U,E,f,o,b.rowNumber,l))}}let w=qo(h,l,d,p,c,o,f,e.checkGroups??[],a,s,{validateUpdateBuiltIns:!S}),{errors:_,invalidRows:I,invalidRowNumbers:k}=w;if(S){let N=new Map(w.candidateResults.map(v=>[v.rowNumber,v]));_=[],k=new Set;for(let v of h){let b=N.get(v.rowNumber);if(!b)throw new Error(`InternalError: validation detail is missing for row ${v.rowNumber}.`);if(v.mode==="create"){let H=[...b.preErrors,...b.builtInErrors,...b.checkErrors];_.push(...H),H.length>0&&k.add(v.rowNumber);continue}let U=P.get(v.rowNumber);if(!U)throw new Error(`InternalError: prepared post-image validation is missing for row ${v.rowNumber}.`);let B=Pu({rowNumber:v.rowNumber,setFields:p,normalizedPostImage:U.normalizedRecord,preErrors:b.preErrors,postImageErrors:U.errors,checkErrors:b.checkErrors});v.record=B.writeRecord,_.push(...B.errors);for(let H of B.invalidRowNumbers)k.add(H)}I=k.size}let C=[...d,...cr],y={type:"VALIDATION",operation:l,validatedRows:h.length,validRows:h.length-I,invalidRows:I,errorCount:_.length,columns:C,errors:_,...e.validationErrorTable?{errTable:e.validationErrorTable}:e.onErrorSkip&&e.errorTable?{errTable:e.errorTable}:{}},O=new Map;for(let N of d){if(N==="$id"){O.set(N,{sortKind:"number",fieldType:"RECORD_NUMBER",semantics:z({fieldType:"RECORD_NUMBER"})});continue}let v=u.get(N);v&&O.set(N,Ge(v,e.appId))}let L=new Set(["$err_statement","$err_row"]);for(let N of cr)O.set(N,Y(L.has(N)?"number":"string"));return gr.set(y,O),{result:y,candidates:h,invalidRowNumbers:k,columnMeta:O}}async function cc(e,t,r,n,i,o){let a=await Xa(e,t,r,n,i,o),s=e.errorTable;if(!s)throw new Error("ArgumentError: ON ERROR SKIP requires INTO #error_table.");gt(i,s,a.result.columns,a.result.errors,r.tempTableMaxRows??ht,a.columnMeta);let l=e.rejectLimit??null;if(l!==null&&a.result.invalidRows>l)throw new Bi(`rejected rows (${a.result.invalidRows}) exceed REJECT LIMIT (${l}).`,a.result);let d=a.candidates.filter(E=>!a.invalidRowNumbers.has(E.rowNumber));if(r.confirm){let E=e.type.startsWith("INSERT")?"INSERT":"UPDATE";if(!await r.confirm(d.length,E))throw new Z(E,d.length)}let p={affectedRows:d.length,skippedRows:a.result.invalidRows,rejectLimit:l,errTable:s};if(e.type==="INSERT"||e.type==="INSERT_SELECT"){let E=[];for(let R=0;R<d.length;R+=100){let h=await t.postRecords({app:e.appId,records:d.slice(R,R+100).map(m=>m.record)});E.push(h.ids)}return{type:"INSERT",createdIds:E,insertedCount:E.flat().length,...p}}if(e.type==="UPDATE"){let E=d.map(R=>{if(R.targetId===void 0)throw new Error("InternalError: prepared UPDATE candidate has no targetId.");return{id:R.targetId,record:R.record}});for(let R=0;R<E.length;R+=100)await t.putRecords({app:e.appId,records:E.slice(R,R+100)});return{type:"UPDATE",updatedCount:E.length,...p}}let c=d.filter(E=>E.mode==="create"),u=d.filter(E=>E.mode==="update").map(E=>{if(E.targetId===void 0)throw new Error("InternalError: prepared UPSERT candidate has no targetId.");return{id:E.targetId,record:E.record}}),f=0;for(let E=0;E<c.length;E+=100){let R=await t.postRecords({app:e.appId,records:c.slice(E,E+100).map(h=>h.record)});f+=R.ids.length}for(let E=0;E<u.length;E+=100)await t.putRecords({app:e.appId,records:u.slice(E,E+100)});return{type:"UPSERT",insertedCount:f,updatedCount:u.length,...p}}async function Rm(e,t,r,n,i,o,a,s){if(e.type==="UPDATE")return hm(e,r,n,i,o,s);let l,d,p,c,u;if(e.type==="INSERT"||e.type==="UPSERT")pc(e,e.fields),u=new Map(e.fields.map(S=>[S,a.get(S)?.fieldType??""])),Ft(e,u),l=e.values.map(S=>S.map((P,w)=>P.type==="CASE_VALUE"?Et(P.expr,{},a.get(e.fields[w])?.fieldType):P));else{let S=await Qa.materialize(e,r,n,i,o,[...a.values()]),P=(e.checkGroups?.length??0)>0;if(S.columns.length<e.fields.length||!P&&S.columns.length!==e.fields.length)throw new Error(`SELECT \u306E\u5217\u6570\uFF08${S.columns.length}\uFF09\u3068 DML \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u6570\uFF08${e.fields.length}\uFF09\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093`);if(P&&new Set(S.columns).size!==S.columns.length)throw se("CHECK \u4ED8\u304D DML \u30BD\u30FC\u30B9 SELECT \u306E\u51FA\u529B\u540D\u306F\u4E00\u610F\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059");pc(e,S.columns),d=S.rows,p=S.importPresence,c=S.importRowErrors;let w=S.columnMeta;u=new Map(S.columns.map(_=>{let I=w?.get(_),k=I?.fieldType??(I?.semantics?.compareMode==="number"||I?.sortKind==="number"?"NUMBER":"SINGLE_LINE_TEXT");return[_,k]})),Ft(e,u),l=S.rows.map(_=>S.columns.map(I=>_[I]??""))}let f=l.map((S,P)=>({rowNumber:P+1,operation:t,mode:"create",payload:new Map(e.fields.flatMap((w,_)=>p&&!p[P]?.has(w)?[]:[[w,S[_]]])),preErrors:[...c?.[P]??[]],record:{},evaluationRow:d?.[P]??Object.fromEntries(e.fields.map((w,_)=>[w,Ue(S[_])])),evaluationFieldTypes:u}));if(e.type!=="UPSERT"&&e.type!=="UPSERT_SELECT")return f;for(let S of e.keyFields)if(!e.fields.includes(S))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${S}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let E=new Map([...a].map(([S,P])=>[S,P.fieldType])),R=f.map(S=>e.keyFields.map(P=>Ue(S.payload.get(P)))),h=e.keyFields.map(S=>E.get(S)==="NUMBER"),m=new Map;for(let S of R){let P=Mt(S,h);m.set(P,(m.get(P)??0)+1)}let g=Vi.has(e);if(g&&[...m.values()].some(S=>S>1))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");let T=await An(e.appId,e.keyFields,R,r,n,E);return f.forEach((S,P)=>{let w=R[P],_=yn(T,w);S.mode=_===void 0?"create":"update",_!==void 0&&(S.targetId=_),e.keyFields.forEach((I,k)=>{w[k]===""&&S.preErrors.push({field:I,code:"ERR_KEY_EMPTY",message:`UPSERT \u30AD\u30FC ${I} \u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093`})}),!g&&(m.get(Mt(w,h))??0)>1&&S.preErrors.push({field:e.keyFields[0],code:"ERR_KEY_DUP_SOURCE",message:"UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059"})}),f}function Ja(e){return e.checkGroups?lr(e.checkGroups):[]}function pc(e,t){let r=new Set(t);for(let n of Ja(e)){if(n.tableAlias!==null)throw se(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${n.tableAlias}.${n.field} \u306F\u3053\u306E\u8A55\u4FA1\u884C\u3067\u306F\u4FEE\u98FE\u3067\u304D\u307E\u305B\u3093`);if(!r.has(n.field))throw se(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${n.field} \u306F\u8A55\u4FA1\u884C\u306B\u5B58\u5728\u3057\u307E\u305B\u3093`)}}var mm=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE","KSQL_ARRAY"]);function Ft(e,t){if(e.checkGroups)for(let r of Tl(e.checkGroups)){let n=r.tableAlias?`${r.tableAlias}.${r.field}`:r.field,i=t.get(n)??t.get(r.field);if(mm.has(i??""))throw se(`CHECK \u306E\u6BD4\u8F03\u3067\u306F ${i} \u30D5\u30A3\u30FC\u30EB\u30C9 ${n} \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`)}}async function hm(e,t,r,n,i,o){if(e.from)return Sm(e,e.from,t,r,n,i,o);await zc(e.assignments,t,r,n);let a=await de(e.appId,t,n),s=Fc(e,a);Ft(e,Ua(a,e.appId));let l,d=new Map,p=new Map;if(ei(e)){let c=_o(e),u=[...new Set([...c.fields,...s,...o??[]])],f=await Oe(t.getRecords,c.app,c.query,u,{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1,onLimit:"error"});p=vi(f.records),d=p,l=vo(e,f.records,a).flatMap(E=>E.records)}else{let c=Mr(e);if(s.length>0){let u=[...new Set(["$id",...s,...o??[]])],f=await Oe(t.getRecords,c.app,c.query,u,{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1,onLimit:"error"});p=vi(f.records),d=p,l=xr(e,[...d.keys()],a).flatMap(E=>E.records)}else if(o){let u=await Oe(t.getRecords,c.app,c.query,[...o],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1,onLimit:"error"});p=vi(u.records),l=xr(e,[...p.keys()],a).flatMap(f=>f.records)}else{let u=await Ri(t.getRecords,c.app,c.query,{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1});l=xr(e,u.ids,a).flatMap(f=>f.records)}}return l.sort((c,u)=>c.id-u.id).map((c,u)=>({rowNumber:u+1,operation:"UPDATE",mode:"update",payload:new Map([["$id",String(c.id)],...e.assignments.map(f=>[f.field,c.record[f.field]?.value??""])]),preErrors:[],record:c.record,targetId:c.id,validationSnapshot:p.get(c.id),evaluationRow:Am(d.get(c.id),e.appId),evaluationFieldTypes:Ua(a,e.appId)}))}function vi(e){let t=new Map;for(let r of e){let n=r.$id?.value,i=Number(n);if(!Number.isSafeInteger(i)||i<=0)throw new Error(`InternalError: invalid $id in UPDATE validation snapshot: ${String(n)}.`);if(t.has(i))throw new Error(`InternalError: duplicate $id in UPDATE validation snapshot: ${i}.`);t.set(i,r)}return t}async function gm(e){let t=new Map;for(let r of e.candidates){if(r.targetId===void 0||!r.validationSnapshot)throw new Error(`InternalError: update-mode snapshot is missing for record ${String(r.targetId)}.`);if(t.has(r.targetId))throw new Error(`InternalError: duplicate UPDATE validation candidate target: ${r.targetId}.`);t.set(r.targetId,r.validationSnapshot)}return t}async function ym(e,t,r){let n=[...new Set(e.candidates.map(a=>{let s=a.targetId;if(!Number.isSafeInteger(s)||s===void 0||s<=0)throw new Error(`InternalError: invalid targetId in UPSERT validation candidate: ${String(s)}.`);return s}))];if(n.length>r)throw new ye(`\u53D6\u5F97\u4EF6\u6570\u304C\u4E0A\u9650\uFF08${r} \u4EF6\uFF09\u3092\u8D85\u3048\u307E\u3057\u305F\u3002WHERE \u53E5\u3067\u7D5E\u308A\u8FBC\u3080\u304B\u3001maxRecords \u3092\u5F15\u304D\u4E0A\u3052\u3066\u304F\u3060\u3055\u3044\u3002`);let i=new Set(n),o=new Map;for(let a of yr(n,100)){let s=await t.getRecords({app:e.appId,query:`$id in (${a.join(",")}) limit 500`,fields:[...new Set(e.fields)]});for(let l of s.records){let d=l.$id?.value,p=Number(d);if(!Number.isSafeInteger(p)||p<=0)throw new Error(`InternalError: invalid $id in UPSERT validation snapshot: ${String(d)}.`);if(!i.has(p))throw new Error(`InternalError: unexpected $id in UPSERT validation snapshot: ${p}.`);if(o.has(p))throw new Error(`InternalError: duplicate $id in UPSERT validation snapshot: ${p}.`);o.set(p,l)}}for(let a of n)if(!o.has(a))throw new Error(`InternalError: update-mode snapshot is missing for record ${a}.`);return o}function Fc(e,t){if(e.from)return[];let r=new Set;for(let n of Ja(e)){if(n.tableAlias!==null&&n.tableAlias.toLowerCase()!==`app${e.appId}`.toLowerCase())throw se(`CHECK \u306E\u4FEE\u98FE\u5B50 ${n.tableAlias} \u306F\u66F4\u65B0\u5148 APP${e.appId} \u3067\u306F\u3042\u308A\u307E\u305B\u3093`);if(n.field!=="$id"&&!t.has(n.field))throw se(`CHECK \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u30D5\u30A3\u30FC\u30EB\u30C9 ${n.field} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093`);r.add(n.field)}return[...r]}function Am(e,t){if(!e)return{};let r=et(e,null);return Object.fromEntries([...Object.entries(r),...Object.entries(r).map(([n,i])=>[`APP${t}.${n}`,i])])}function Ua(e,t){return new Map([...e,...[...e].map(([r,n])=>[`APP${t}.${r}`,n]),["$id","RECORD_NUMBER"],[`APP${t}.$id`,"RECORD_NUMBER"]])}async function Sm(e,t,r,n,i,o,a){let s=await ep(e,t,r,i,o);Ft(e,s.evaluationTypes);let l=await Kc(e,t,r,n,i,o,a),d=await de(e.appId,r,i),p=Uo(e,l,d).flatMap(f=>f.records),c=new Map(l.map(f=>[Number(f.target.$id?.value),f])),u=a?vi(l.map(f=>f.target)):new Map;return p.sort((f,E)=>f.id-E.id).map((f,E)=>({rowNumber:E+1,operation:"UPDATE",mode:"update",payload:new Map([["$id",String(f.id)],...e.assignments.map(R=>[R.field,f.record[R.field]?.value??""])]),preErrors:[],record:f.record,targetId:f.id,validationSnapshot:u.get(f.id),evaluationRow:Sh(c.get(f.id),e.appId,t.alias),evaluationFieldTypes:s.evaluationTypes}))}var Tm=_c,wm=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);async function Kc(e,t,r,n,i,o,a){let s=await Im(e,t,r,i),l=await ep(e,t,r,i,o),d=[...new Set(e.assignments.filter(P=>P.value.type==="SOURCE_FIELD").map(P=>P.value.type==="SOURCE_FIELD"?P.value.field:"").concat(l.sourceFields))],p=[...new Set([t.joinKeyField,...d])],c=await bm(t,p,d,r,n,i,o),u=new Map,f=new Map;for(let P of c){if(!Object.prototype.hasOwnProperty.call(P,t.joinKeyField))throw new Error(`ArgumentError: UPDATE ... FROM source column ${t.joinKeyField} does not exist.`);let w=dc(P[t.joinKeyField],s,"source");if(u.has(w))throw new Error(`ArgumentError: UPDATE ... FROM source has multiple rows for normalized key ${w}.`);u.set(w,P),f.set(w,String(P[t.joinKeyField]).trim())}if(u.size===0)return[];let E=n.maxRecords??1e4,R=[...new Set([...Wm(e),...l.targetFields,...a??[]])],h=t.targetFilter===null?"":Mr({...e,from:null,where:t.targetFilter,checkGroups:void 0}).query,m=[],g=new Set,T=0;for(let P of yr([...f.values()],Tm)){let w=`${t.targetJoinField} in (${P.map(Ki).join(",")})`,_=h?`(${w}) and (${h})`:w,I=await Oe(r.getRecords,e.appId,_,R,{maxRecords:E,parallel:n.fetchParallel??1,onLimit:"error"});if(T+=I.records.length,T>E)throw new ye(`\u53D6\u5F97\u4EF6\u6570\u304C\u4E0A\u9650\uFF08${E} \u4EF6\uFF09\u3092\u8D85\u3048\u307E\u3057\u305F\u3002WHERE \u53E5\u3067\u7D5E\u308A\u8FBC\u3080\u304B\u3001maxRecords \u3092\u5F15\u304D\u4E0A\u3052\u3066\u304F\u3060\u3055\u3044\u3002`);for(let k of I.records){let C=k.$id?.value;if(typeof C!="string"||C==="")throw new Error("ArgumentError: UPDATE ... FROM target record does not contain a valid $id.");g.has(C)||(g.add(C),m.push(k))}}let S=[];for(let P of m){let w=P[t.targetJoinField]?.value,_=dc(w,s,"target");if(_===null)continue;let I=u.get(_);I!==void 0&&S.push({target:P,source:I})}return S}async function Im(e,t,r,n){if(t.targetJoinField==="$id")return"id";let i=(await Q(e.appId,r,n)).find(o=>o.code===t.targetJoinField);if(!i)throw new Error(`ArgumentError: UPDATE ... FROM target column ${t.targetJoinField} does not exist.`);if(i.inSubtable||i.writable===!1||i.fieldType!=="SINGLE_LINE_TEXT"&&i.fieldType!=="NUMBER")throw new Error(`ArgumentError: UPDATE ... FROM does not support target join field type ${i.fieldType} (${t.targetJoinField}).`);return i.fieldType==="NUMBER"?"number":"string"}async function bm(e,t,r,n,i,o,a){if(e.cteName!==null){let p=a?.get(e.cteName);if(!p)throw new Error(`ArgumentError: temp table ${e.cteName} is not available.`);for(let c of t)if(!p.columns.includes(c))throw new Error(`ArgumentError: UPDATE ... FROM source column ${c} does not exist.`);return p.rows}let s=await de(e.appId,n,o),l=e.joinKeyField==="$id"?"RECORD_NUMBER":s.get(e.joinKeyField);if(l===void 0)throw new Error(`ArgumentError: UPDATE ... FROM source column ${e.joinKeyField} does not exist.`);if(e.joinKeyField!=="$id"&&l!=="SINGLE_LINE_TEXT"&&l!=="NUMBER")throw new Error(`ArgumentError: UPDATE ... FROM does not support source join field type ${l} (${e.joinKeyField}).`);for(let p of r){if(p!=="$id"&&!s.has(p))throw new Error(`ArgumentError: UPDATE ... FROM source column ${p} does not exist.`);let c=p==="$id"?"RECORD_NUMBER":s.get(p);if(wm.has(c??""))throw new Error(`ArgumentError: UPDATE ... FROM does not support source field type ${c} (${p}).`)}return(await Oe(n.getRecords,e.appId,"",t,{maxRecords:i.maxRecords??1e4,parallel:i.fetchParallel??1,onLimit:"error"})).records.map(p=>et(p,null))}function dc(e,t,r){if(typeof e!="string")throw new Error(`ArgumentError: UPDATE ... FROM ${r} key must be a scalar string: ${String(e)}`);if(t==="string"){if(e===""){if(r==="target")return null;throw new Error("ArgumentError: UPDATE ... FROM source key must not be empty.")}return e}if(t==="number"&&r==="target"&&e==="")return null;if(t==="id"){let i=e.trim(),o=Number(i);if(i===""||!Number.isSafeInteger(o)||o<=0)throw new Error(`ArgumentError: UPDATE ... FROM ${r} key must be a positive safe integer: ${e}`);return String(o)}let n=Ae(e);if(n===null)throw new Error(`ArgumentError: UPDATE ... FROM ${r} key must be a finite decimal: ${e}`);return JSON.stringify(n)}async function Sn(e,t,r,n,i){let o=await Xa(e,t,r,n,i,1,!1,!1);if(o.result.errors.length>0){let c=o.result.errors[0];throw new Error(`DmlValidationError: ${c.$err_code} ${c.$err_message} (row=${c.$err_row}, field=${c.$err_field})`)}let a=o.candidates,s=e.type.startsWith("INSERT")?"INSERT":"UPDATE";if(r.confirm&&a.length>0&&!await r.confirm(a.length,s))throw new Z(s,a.length);if(e.type==="INSERT"||e.type==="INSERT_SELECT"){let c=[];for(let u=0;u<a.length;u+=100){let f=await t.postRecords({app:e.appId,records:a.slice(u,u+100).map(E=>E.record)});c.push(f.ids)}return{type:"INSERT",createdIds:c,insertedCount:c.flat().length}}if(e.type==="UPDATE"){let c=a.map(u=>({id:u.targetId,record:u.record}));for(let u=0;u<c.length;u+=100)await t.putRecords({app:e.appId,records:c.slice(u,u+100)});return{type:"UPDATE",updatedCount:c.length}}let l=a.filter(c=>c.mode==="create"),d=a.filter(c=>c.mode==="update").map(c=>({id:c.targetId,record:c.record})),p=0;for(let c=0;c<l.length;c+=100){let u=await t.postRecords({app:e.appId,records:l.slice(c,c+100).map(f=>f.record)});p+=u.ids.length}for(let c=0;c<d.length;c+=100)await t.putRecords({app:e.appId,records:d.slice(c,c+100)});return{type:"UPSERT",insertedCount:p,updatedCount:d.length}}async function Pm(e,t,r,n){if(e.applyBlocks?.length)return pm(e,t,r,n);if(e.checkGroups?.length)return Sn(e,t,r,n);if(e.subtableCode)return jm(e,t,r,n);let i=await ke(e.appId,e.fields,t,n),o=await it(e.appId,e.fields,i,t,n),a=await de(e.appId,t,n),s=Zn(e,a);xt(s.flatMap(d=>d.records),e.fields,i,o);let l=[];for(let d of s){let p=await t.postRecords(d);l.push(p.ids)}return{type:"INSERT",createdIds:l,insertedCount:l.flat().length}}function Nm(){return{type:"SELECT",distinct:!1,columns:[],from:{appId:0,alias:null,cteName:at},joins:[],where:null,groupBy:[],having:null,orderMode:"CANONICAL",orderBy:[],limit:null,offset:null}}async function Cm(e,t,r,n,i){if(!r.enableImport)throw new Error("UnsupportedError: IMPORT capability is disabled.");let o=Mu(e.source.sourceName,r.importSource);if(e.targets?.some(c=>c.kind==="SUBTABLE")){if(!e.validateOnly&&!r.supportsImportConfirmDetail)throw new Error("UnsupportedError: IMPORT subtable mutation requires a surface that displays parent/table replacement and deletion detail; use VALIDATE ONLY/EXPLAIN.");if(e.source.kind==="CSV"){if(e.writeMode!=="UPDATE_RECORD_NUMBER"||!e.recordNumberSourceHeader)throw new Error("ArgumentError: CSV subtable replacement requires IMPORT UPDATE and MATCH RECORD NUMBER SOURCE.");if(!e.replaceSubtables?.length)throw new Error("ArgumentError: CSV subtable replacement requires REPLACE SUBTABLES (...).");let D=new Set(e.targets.filter(V=>V.kind==="SUBTABLE").map(V=>V.subtableCode));if(e.replaceSubtables.some(V=>!D.has(V)))throw new Error("ArgumentError: REPLACE SUBTABLES contains a table not declared in INTO.");for(let V of e.targets.filter(re=>re.kind==="SUBTABLE"))if(!V.rowIdSourceHeader||!e.replaceSubtables.includes(V.subtableCode))throw new Error(`ArgumentError: CSV subtable ${V.subtableCode} requires ROW ID SOURCE and REPLACE SUBTABLES declaration.`)}if(e.validationErrorTable&&!i)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");let c=e.targets,u=await Q(e.appId,t,n),f=c.flatMap(D=>D.kind==="FIELD"?[D.field]:D.children),E=u.some(D=>f.includes(D.code)&&D.fieldType==="NUMBER")?await He(e.appId,t,n):void 0,R=await Pi(o,new Map),h=e.source.kind==="JSON"?$u(e.source,R,c,r.maxRecords??1e4):Gu(e.source,R,c,e.replaceSubtables??[],r.maxRecords??1e4,e.recordNumberSourceHeader),m=e.source.kind==="CSV"?"UPDATE":e.keyFields?"UPSERT":"INSERT",g=Yu(h,c,u,E,m);if(e.source.kind==="CSV")return Om(e,h,g,u,t,r,i);wa(g,e.rejectLimit);let T=[...new Set(c.flatMap(D=>D.kind==="FIELD"?[D.field]:D.children))],S=ba(g.errors,T),P=[...T,...Ia],w=g.invalidParentRows.size,_={preflight:"ACTUAL_DATA",parents:{total:g.parents.length,valid:g.parents.length-w,invalid:w,mutationCandidates:g.parents.filter(D=>D.valid).length},tables:Object.fromEntries(g.tableCounts),writesKintone:!1},I={type:"VALIDATION",operation:m,validatedRows:g.parents.length,validRows:g.parents.length-w,invalidRows:w,errorCount:S.length,columns:P,errors:S,importDetail:_,...e.validationErrorTable?{errTable:e.validationErrorTable}:{}};if(e.validationErrorTable&&i&&gt(i,e.validationErrorTable,P,S,r.tempTableMaxRows??ht,new Map),e.validateOnly)return I;if(qu(h),g.errors.length>0&&!e.onErrorSkip){let D=g.errors[0];throw new Error(`DmlValidationError: ${D.code} ${D.message} (row=${D.parentRow}, field=${D.field})`)}if(e.onErrorSkip){if(!i||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch and INTO error table.");gt(i,e.errorTable,P,S,r.tempTableMaxRows??ht,new Map)}let k=g.parents.filter(D=>D.valid),C=new Map(u.map(D=>[D.code,D.fieldType])),y=k.map(()=>{});if(e.keyFields){for(let he of e.keyFields)if(!e.fields.includes(he))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${he}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let D=e.keyFields.map(he=>C.get(he)==="NUMBER"),V=new Set,re=k.map(he=>e.keyFields.map(Gt=>String(he.top[Gt]?.value??"")));for(let he of re){let Gt=Mt(he,D);if(V.has(Gt))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");V.add(Gt)}let Ye=await An(e.appId,e.keyFields,re,t,r,C);re.forEach((he,Gt)=>{y[Gt]=yn(Ye,he)})}let O=c.filter(D=>D.kind==="SUBTABLE").map(D=>D.subtableCode),L=new Map,N=y.filter(D=>D!==void 0);for(let D of yr([...new Set(N)],100)){let V=await t.getRecords({app:e.appId,query:`$id in (${D.join(",")}) limit 500`,fields:["$id","$revision",...O]});for(let re of V.records){let Ye=Number(re.$id?.value),he=Number(re.$revision?.value);Number.isFinite(Ye)&&L.set(Ye,{id:Ye,...Number.isFinite(he)?{revision:he}:{},record:re})}}let v=zu(k,y,L),b={kind:"IMPORT_JSON_SUBTABLE",rowIdPolicy:"DROP_AND_RENUMBER_ALL",parentsToWrite:v.length,insertedParents:v.filter(D=>D.mode==="INSERT").length,updatedParents:v.filter(D=>D.mode==="UPDATE").length,hasDeletes:v.some(D=>D.tables.some(V=>V.deleteRows>0)),parents:v.map(D=>({parentRow:D.parentRow,mode:D.mode,...D.targetId===void 0?{}:{targetId:D.targetId},tables:D.tables}))};if(v.length>0){if(!r.confirm)throw new Error("UnsupportedError: JSON IMPORT subtable mutation requires explicit confirmation detail approval.");if(!await r.confirm(v.length,e.keyFields?"UPDATE":"INSERT",{statementIndex:0,statementCount:1,statementType:"IMPORT",targetAppId:e.appId,importDetail:b}))throw new Z(e.keyFields?"UPDATE":"INSERT",v.length)}let U=D=>new Map(Object.entries(D).map(([V,re])=>[V,re.value])),B=D=>ju(U(D.top),new Map([...D.subtables].map(([V,re])=>[V,re.map(Ye=>({values:U(Ye)}))]))),H=v.filter(D=>D.mode==="INSERT"),fe=v.filter(D=>D.mode==="UPDATE"),F=[];for(let D=0;D<H.length;D+=100){let V=await t.postRecords({app:e.appId,records:H.slice(D,D+100).map(B)});F.push(V.ids)}for(let D=0;D<fe.length;D+=100)await t.putRecords({app:e.appId,records:fe.slice(D,D+100).map(V=>({id:V.targetId,...V.revision===void 0?{}:{revision:V.revision},record:B(V)}))});return e.keyFields?{type:"UPSERT",insertedCount:F.flat().length,updatedCount:fe.length,affectedRows:v.length,skippedRows:g.invalidParentRows.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:b}:{type:"INSERT",createdIds:F,insertedCount:F.flat().length,affectedRows:v.length,skippedRows:g.invalidParentRows.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:b}}if(e.writeMode==="UPDATE_RECORD_NUMBER")return Lm(e,o,t,r,n,i);let a={appId:e.appId,fields:e.fields,select:Nm(),validateOnly:e.validateOnly,validationErrorTable:e.validationErrorTable,onErrorSkip:e.onErrorSkip,errorTable:e.errorTable,rejectLimit:e.rejectLimit,checkGroups:e.checkGroups},s=e.keyFields?{type:"UPSERT_SELECT",...a,keyFields:e.keyFields}:{type:"INSERT_SELECT",...a},l={source:e.source,handle:o,cache:new Map};Vi.set(s,l);let d=c=>(l.audit&&Object.assign(c,{importAudit:l.audit}),c);if(s.validateOnly){if(s.validationErrorTable&&!i)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");let c=await xc(s,t,{...r,onLimitReached:"error"},n,i,1);return s.validationErrorTable&&i&&gt(i,s.validationErrorTable,c.columns,c.errors,r.tempTableMaxRows??ht,gr.get(c)??new Map),d(c)}if(s.onErrorSkip){if(!i)throw new Error("ArgumentError: ON ERROR SKIP requires a batch.");let c=await(s.type==="UPSERT_SELECT",cc(s,t,r,n,i,1));return d(c)}let p=await(s.type==="UPSERT_SELECT"?Hc(s,t,r,n,i):$c(s,t,r,n,i));return d(p)}async function Om(e,t,r,n,i,o,a){if(!e.recordNumberSourceHeader||!e.replaceSubtables?.length)throw new Error("InternalError: incomplete CSV subtable replacement AST.");Xu(t.records);let s=t.records.map(L=>L.recordNumberSourceValue??""),l=Ca(s,e.recordNumberSourceHeader),d=[...e.replaceSubtables],p=[...new Set(n.filter(L=>!L.inSubtable&&L.fieldType==="SUBTABLE").map(L=>L.code))],c=await Ee(i.getRecords,e.appId,"",["$id","$revision",...p],{maxRecords:o.maxRecords??1e4,parallel:o.fetchParallel??1,onLimit:"error"}),u=new Map,f=new Map;for(let L of c){let N=Number(L.$id?.value),v=Number(L.$revision?.value);if(Number.isFinite(N)){u.set(N,{id:N,...Number.isFinite(v)?{revision:v}:{},record:L});for(let b of p){let U=L[b]?.value;if(Array.isArray(U)){for(let B of U)if(B.id){let H=f.get(B.id)??[];H.push({parentId:N,table:b}),f.set(B.id,H)}}}}}let E=l.normalized.map(L=>L===null?void 0:Number(L)),R=r.parents.map((L,N)=>{let v=[...L.errors];for(let U of l.errors[N])v.push({operation:"UPDATE",parentRow:L.parentRow,field:U.field,code:U.code,message:U.message,sourceValues:t.records[N].top});let b=E[N];return b!==void 0&&!u.has(b)&&v.push({operation:"UPDATE",parentRow:L.parentRow,field:e.recordNumberSourceHeader,code:"ERR_RECORD_NUMBER_NOT_FOUND",message:`record number ${b} does not exist in APP${e.appId}`,sourceValues:t.records[N].top}),{...L,valid:v.length===0,errors:v}}),h=Ju(t.records,R,E,u,f),m=h.flatMap(L=>[...L.errors]),g=new Set(h.filter(L=>!L.valid).map(L=>L.parentRow)),T={...r,parents:R,errors:m,invalidParentRows:g};wa(T,e.rejectLimit);let S=h.filter(L=>L.valid),P=h.flatMap(L=>L.tables),w=(L,N)=>P.filter(v=>v.table===L).reduce((v,b)=>v+Number(b[N]),0),_=Object.fromEntries(d.map(L=>[L,{existingRows:w(L,"existingRows"),inputRows:w(L,"inputRows"),updateRows:w(L,"updateRows"),addRows:w(L,"addRows"),deleteRows:w(L,"deleteRows"),rowIdNotFound:w(L,"rowIdNotFound")}])),I={kind:"IMPORT_CSV_SUBTABLE_REPLACE",rowIdPolicy:"PRESERVE_EXISTING",parentsToWrite:S.length,insertedParents:0,updatedParents:S.length,hasDeletes:S.some(L=>L.tables.some(N=>N.deleteRows>0)),totalDeleteRows:S.flatMap(L=>L.tables).reduce((L,N)=>L+N.deleteRows,0),rowIdNotFound:S.flatMap(L=>L.tables).reduce((L,N)=>L+N.rowIdNotFound,0),invalidParents:g.size,parents:S.map(L=>({parentRow:L.parentRow,mode:"UPDATE",targetId:L.targetId,tables:L.tables}))},k=[...new Set(e.targets.flatMap(L=>L.kind==="FIELD"?[L.field]:L.children))],C=ba(m,k),y=[...k,...Ia];if(e.validateOnly){if(e.validationErrorTable&&!a)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return e.validationErrorTable&&a&&gt(a,e.validationErrorTable,y,C,o.tempTableMaxRows??ht,new Map),{type:"VALIDATION",operation:"UPDATE",validatedRows:R.length,validRows:R.length-g.size,invalidRows:g.size,errorCount:C.length,columns:y,errors:C,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},importDetail:{preflight:"ACTUAL_DATA",parents:{total:R.length,valid:S.length,invalid:g.size,mutationCandidates:S.length},tables:_,rowIdPolicy:"PRESERVE_EXISTING",rowIdNotFound:I.rowIdNotFound,writesKintone:!1}}}if(m.length&&!e.onErrorSkip){let L=m[0];throw new Error(`DmlValidationError: ${L.code} ${L.message} (row=${L.parentRow}, field=${L.field})`)}if(e.onErrorSkip){if(!a||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch and INTO error table.");gt(a,e.errorTable,y,C,o.tempTableMaxRows??ht,new Map)}if(S.length){if(!o.supportsImportConfirmDetail||!o.confirm)throw new Error("UnsupportedError: CSV subtable replacement requires explicit rendered detail approval.");if(!await o.confirm(S.length,"UPDATE",{statementIndex:0,statementCount:1,statementType:"IMPORT",targetAppId:e.appId,importDetail:I}))throw new Z("UPDATE",S.length)}let O=L=>new Map(Object.entries(L).map(([N,v])=>[N,v.value]));for(let L of S){let N=Pa(O(L.top),new Map([...L.subtables].map(([v,b])=>[v,b.map(U=>({...U.rowId?{rowId:U.rowId}:{},values:O(U.record)}))])),"PRESERVE");await i.putRecords({app:e.appId,records:[{id:L.targetId,...L.revision===void 0?{}:{revision:L.revision},record:N}]})}return{type:"UPDATE",updatedCount:S.length,affectedRows:S.length,skippedRows:g.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:I}}async function Lm(e,t,r,n,i,o){if(e.source.kind!=="CSV"||e.source.mappingMode!=="BY_NAME"||!e.recordNumberSourceHeader)throw new Error("InternalError: invalid IMPORT UPDATE AST.");if(new Set(e.fields).size!==e.fields.length)throw new Error("ArgumentError: DML target fields contain duplicates.");let a=await ke(e.appId,e.fields,r,i),s=await it(e.appId,e.fields,a,r,i),l=await Pi(t,new Map),d=Aa(e.source,l,n.maxRecords??1e4,e.fields,a,e.recordNumberSourceHeader),p=d.recordNumberSourceValues;if(!p)throw new Error("InternalError: record-number source values were not materialized.");let c=Ca(p,e.recordNumberSourceHeader),u=new Set,f=[...new Set(c.normalized.filter(I=>I!==null))];for(let I=0;I<f.length;I+=100){let k=f.slice(I,I+100),C=await r.getRecords({app:e.appId,query:`$id in (${k.join(",")}) limit 500`,fields:["$id"]});for(let y of C.records){let O=y.$id?.value;typeof O=="string"&&O!==""&&u.add(O.replace(/^0+(?=\d)/,""))}}let E=new Map(a.map(I=>[I.code,I])),R=new Map(e.fields.map(I=>[I,E.get(I)?.fieldType??"SINGLE_LINE_TEXT"])),h=d.rows.map((I,k)=>{let C=c.normalized[k],y=[...d.importRowErrors?.[k]??[],...c.errors[k]];return C!==null&&!u.has(C)&&y.push({field:e.recordNumberSourceHeader,code:"ERR_RECORD_NUMBER_NOT_FOUND",message:`record number ${C} does not exist in APP${e.appId}`}),{rowNumber:k+1,operation:"UPDATE",mode:"update",...C!==null&&u.has(C)?{targetId:Number(C)}:{},payload:new Map([[e.recordNumberSourceHeader,p[k]],...e.fields.map(O=>[O,I[O]??""])]),preErrors:y,record:{},evaluationRow:I,evaluationFieldTypes:R}}),m=[e.recordNumberSourceHeader,...e.fields],g=qo(h,"UPDATE",m,e.fields,a,1,s,e.checkGroups??[],!1),T=[...m,...cr],S={type:"VALIDATION",operation:"UPDATE",validatedRows:h.length,validRows:h.length-g.invalidRows,invalidRows:g.invalidRows,errorCount:g.errors.length,columns:T,errors:g.errors,...e.validationErrorTable??e.errorTable?{errTable:e.validationErrorTable??e.errorTable}:{}};if(Object.assign(S,{importAudit:d.importAudit}),e.validateOnly){if(e.validationErrorTable&&!o)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return e.validationErrorTable&&o&&gt(o,e.validationErrorTable,T,g.errors,n.tempTableMaxRows??ht,new Map),S}if(!e.onErrorSkip&&g.invalidRows>0){let I=g.errors[0];throw new Error(`DmlValidationError: ${I.$err_code} ${I.$err_message} (row=${I.$err_row}, field=${I.$err_field})`)}if(e.onErrorSkip){if(!o||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch.");if(gt(o,e.errorTable,T,g.errors,n.tempTableMaxRows??ht,new Map),e.rejectLimit!=null&&g.invalidRows>e.rejectLimit)throw new Bi(`rejected rows (${g.invalidRows}) exceed REJECT LIMIT (${e.rejectLimit}).`,S)}let P=h.filter(I=>!g.invalidRowNumbers.has(I.rowNumber));if(n.confirm&&!await n.confirm(P.length,"UPDATE"))throw new Z("UPDATE",P.length);let w=P.map(I=>({id:I.targetId,record:I.record}));for(let I=0;I<w.length;I+=100)await r.putRecords({app:e.appId,records:w.slice(I,I+100)});let _={type:"UPDATE",updatedCount:w.length,...e.onErrorSkip?{affectedRows:w.length,skippedRows:g.invalidRows,rejectLimit:e.rejectLimit??null,errTable:e.errorTable}:{}};return Object.assign(_,{insertedCount:0,importAudit:d.importAudit}),_}async function _m(e,t,r,n,i,o){let a=Vi.get(e);if(!a){let R=i&&i.size>0?await Ut(e.select,t,r,i,n,!0):await yt(e.select,t,r,n,void 0,!0);return{rows:R.rows,columns:R.columns,columnMeta:We.get(R)}}let s=await Pi(a.handle,a.cache),l=r.maxRecords??1e4,d=new Map((o??[]).map(R=>[R.code,R])),p=e.fields.map(R=>({code:R,fieldType:d.get(R)?.fieldType??"SINGLE_LINE_TEXT"})),c=a.source.kind==="JSON"?ya(a.source,s,p,l):Aa(a.source,s,l,e.fields,o);if(a.audit=c.importAudit,a.source.kind==="JSON"||!a.source.projection)return c;let u=Qu(a.source.projection),f=new Map(i??[]);f.set(Na,c);let E=await Ut(u,t,{...r,onLimitReached:"error"},f,n,!0);return{rows:E.rows,columns:E.columns,columnMeta:We.get(E)}}var Qa={materialize:_m};function Bc(e){for(let t=0;t<(e.importRowErrors?.length??0);t++){let r=e.importRowErrors?.[t]?.[0];if(r)throw new Error(`DmlValidationError: ${r.code} ${r.message} (row=${t+1}, field=${r.field})`)}}async function $c(e,t,r,n,i){if(e.checkGroups?.length)return Sn(e,t,r,n,i);let o=await ke(e.appId,e.fields,t,n),a=await it(e.appId,e.fields,o,t,n),s=await Qa.materialize(e,t,r,n,i,o),{rows:l,columns:d}=s;if(Bc(s),d.length!==e.fields.length){let f=d.length===0&&l.length===0?"\u3002\u7D50\u679C\u304C 0 \u884C\u306E\u305F\u3081\u5217\u3092\u7279\u5B9A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08SELECT * \u3092\u7A7A\u30BD\u30FC\u30B9\u306B\u4F7F\u3046\u3068\u5217\u3092\u6C7A\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002\u660E\u793A\u5217\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF09":"";throw new Error(`SELECT \u306E\u5217\u6570\uFF08${d.length}\uFF09\u3068 INSERT \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u6570\uFF08${e.fields.length}\uFF09\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093${f}`)}if(r.confirm&&!await r.confirm(l.length,"INSERT"))throw new Z("INSERT",l.length);let p=await de(e.appId,t,n),c=l.map((f,E)=>{let R={};return e.fields.forEach((h,m)=>{if(s.importPresence&&!s.importPresence[E]?.has(h))return;let g=f[d[m]]??"";R[h]={value:Uc(g,p.get(h))}}),R});c.forEach(f=>xt([f],e.fields.filter(E=>E in f),o,a));let u=[];for(let f=0;f<c.length;f+=100){let E=c.slice(f,f+100),R=await t.postRecords({app:e.appId,records:E});u.push(R.ids)}return{type:"INSERT",createdIds:u,insertedCount:u.flat().length}}async function fc(e,t,r,n,i){if(e.applyBlocks?.length)return Gc(e,t,r,n);if(e.checkGroups?.length&&nt(e.where)){let E=await ke(e.appId,e.assignments.map(h=>h.field),t,n);await it(e.appId,e.assignments.map(h=>h.field),E,t,n);let R=await de(e.appId,t,n);return Fc(e,R),Ft(e,Ua(R,e.appId)),await Er(e,t,n),{type:"UPDATE",updatedCount:0}}if(e.checkGroups?.length)return Sn(e,t,r,n,i);if(e.subtableCode)return await Er(e,t,n),qm(e,t,r,n);let o=await ke(e.appId,e.assignments.map(E=>E.field),t,n),a=e.assignments.map(E=>E.field),s=await it(e.appId,a,o,t,n);if(await Er(e,t,n),nt(e.where))return{type:"UPDATE",updatedCount:0};if(e.from!=null)return Vm(e,e.from,t,r,n,i);let l=r.maxRecords??1e4;await zc(e.assignments,t,r,n);let d=await de(e.appId,t,n);if(ei(e)){let E=_o(e),h=(await Oe(t.getRecords,E.app,E.query,[...E.fields],{maxRecords:l,parallel:r.fetchParallel??1})).records,m=vo(e,h,d);if(xt(m.flatMap(g=>g.records.map(T=>T.record)),a,o,s),r.confirm&&!await r.confirm(h.length,"UPDATE"))throw new Z("UPDATE",h.length);for(let g of m)await t.putRecords(g);return{type:"UPDATE",updatedCount:h.length}}let p=Mr(e),u=(await Ri(t.getRecords,p.app,p.query,{maxRecords:l,parallel:r.fetchParallel??1})).ids,f=xr(e,u,d);if(xt(f.flatMap(E=>E.records.map(R=>R.record)),a,o,s),r.confirm&&!await r.confirm(u.length,"UPDATE"))throw new Z("UPDATE",u.length);for(let E of f)await t.putRecords(E);return{type:"UPDATE",updatedCount:u.length}}async function Gc(e,t,r,n,i=1){if(!e.validateOnly&&r.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");if(!ze(e.where))return Dm(e,t,r,n,i);let o=await Q(e.appId,t,n),a=Qe(e,o),s=ri(e,o),l=$o(e),d=await t.getRecords({app:e.appId,query:`$id = ${l} limit 2`,fields:[...s]});if(d.records.length===0)throw new Error(`ArgumentError: APPLY parent $id ${l} does not exist.`);if(d.records.length!==1)throw new Error(`ArgumentError: APPLY parent $id ${l} returned multiple records.`);let p=Number(d.records[0].$id?.value);if(p!==l)throw new Error(`ArgumentError: APPLY snapshot $id ${p} does not match requested $id ${l}.`);ai(d.records[0]);let c=Kl({statement:e,snapshot:d.records[0],fieldInfos:o,metadata:a}),u=Me(o,e.assignments.map(P=>P.field)),f=Ct(c.postImage,u)?await He(e.appId,t,n):void 0,E=Ot(c.postImage,u,f,i);if(!e.validateOnly&&E.errorCount>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:E.columns,errors:E.errors})}`);let R=Pe(r.dmlMaxRows,"dmlMaxRows",ot),h=Pe(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",be),m=c.parentRows>R||c.changedSubtableRows>h;if(e.validateOnly){let P=jr({plans:[c],records:$r(c).records,validations:[],guards:{revisionRequired:!0,parentRows:c.parentRows,dmlMaxRows:R,subtableRows:c.changedSubtableRows,dmlMaxSubtableRows:h,wouldExceed:m}}),w={type:"VALIDATION",operation:"UPDATE",validatedRows:1,validRows:E.invalidRows===0?1:0,invalidRows:E.invalidRows===0?0:1,errorCount:E.errorCount,columns:[...E.columns],errors:E.errors,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},apply:Rn(P.branches[0]),guards:mn(P.branches[0]),deletedRows:{total:c.tables.reduce((_,I)=>_+I.deletedRows,0),parentRows:c.tables.some(_=>_.deletedRows>0)?1:0},diagnostic:P};return gr.set(w,qi(E.columns,o,e.appId)),w}if(c.parentRows>R)throw new Error(`ArgumentError: APPLY parent rows (${c.parentRows}) exceed dmlMaxRows (${R}).`);if(c.changedSubtableRows>h)throw new Error(`ArgumentError: APPLY changed subtable rows (${c.changedSubtableRows}) exceed dmlMaxSubtableRows (${h}).`);let g=ii(c,E.normalizedRecord),T=$r(g),S=jr({plans:[g],records:T.records,validations:[],guards:{revisionRequired:!0,parentRows:c.parentRows,dmlMaxRows:R,subtableRows:c.changedSubtableRows,dmlMaxSubtableRows:h,wouldExceed:m}});if(r.confirm){let P=ji(S,!1);if(!await r.confirm(c.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPDATE",targetAppId:e.appId,applyDetail:P,applyDiagnostic:S}))throw new Z("UPDATE",c.parentRows)}return await t.putRecords(T),{type:"UPDATE",updatedCount:c.parentRows,diagnostic:Ie(S,{successfulChunks:1,successfulParents:c.parentRows})}}async function Dm(e,t,r,n,i){let o=Pe(r.dmlMaxRows,"dmlMaxRows",ot),a=Pe(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",be),s=await Q(e.appId,t,n),l=Qe(e,s),d;if($i(e))d=await Mm(e,t,r,s,n);else{let f=ri(e,s),E=Mr(e).query,R=o+1;d=await Ee(t.getRecords,e.appId,E,[...f],{pageSize:Math.min(500,R),parallel:r.fetchParallel??1,maxRecords:R,stopAfter:R,onLimit:"error"})}if(!e.validateOnly&&d.length>o)throw new Error(`ArgumentError: APPLY parent rows (${d.length}) exceed dmlMaxRows (${o}).`);let p=await ci({statement:e,snapshots:d,fieldInfos:s,metadata:l,dmlMaxRows:o,dmlMaxSubtableRows:a,statementNumber:i,loadNumberPrecision:()=>He(e.appId,t,n)});if(e.validateOnly)return $m(e,p,s);Us("phase15b",e);let c=jr(p);if(r.confirm){let f=ji(c);if(!await r.confirm(p.guards.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPDATE",targetAppId:e.appId,applyDetail:f,applyDiagnostic:c}))throw new Z("UPDATE",p.guards.parentRows)}let u=await ou(p,t,c);return{...u,diagnostic:Ie(c,u)}}function $i(e){return(e.applyBlocks?.length??0)>0&&!ze(e.where)&&(st(e.where)||oe(e.where))}function vm(e){let t=e.type==="EXPLAIN"?e.query:e;return t.type==="UPDATE"&&$i(t)&&oe(t.where)}var km=`APPLY \u8907\u6570\u89AA UPDATE \u306E\u89AA WHERE \u306B\u3001\u5B89\u5168\u306B\u62BC\u3057\u4E0B\u3052\u3089\u308C\u306A\u3044 KLIKE / NOT KLIKE \u304C\u3042\u308A\u307E\u3059\u3002
10
10
  OR / NOT \u914D\u4E0B\u306A\u3069 native query \u3078\u5B8C\u5168\u306B\u9069\u7528\u3067\u304D\u306A\u3044 KLIKE \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002
11
- WHERE \u3092 AND \u306E\u5B89\u5168\u306A KLIKE \u6761\u4EF6\u3078\u66F8\u304D\u63DB\u3048\u308B\u304B\u3001SELECT \u3067\u78BA\u8A8D\u3057\u305F $id IN (...) \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002`;function zR(e){if(e.unappliedKlikes.length>0)throw new Error(`UnsupportedError: ${qR}`)}async function XR(e,t,r,n,i){let o=n.filter(E=>!E.inSubtable),s=new Map(o.map(E=>[E.code,E])),a=new Map(o.map(E=>[E.code,E.fieldType])),l=new Map(o.flatMap(E=>E.optionOrder?[[E.code,new Set(Object.keys(E.optionOrder))]]:[])),p=jo(e.where,{fieldTypes:a,fieldOptions:l});zR(p);let d=p.prefilter===null?"":W(p.prefilter),c=new Set(qn(e,n));for(let E of JR(e.where))c.add(E);let u=await QR(e.appId,e.where,s,t,i);return(await Ee(t.getRecords,e.appId,d,[...c],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1,onLimit:"error"})).map(E=>({snapshot:E,row:Xe(E,null)})).filter(({row:E})=>q(e.where,E,u.fieldTypeResolver,p.appliedKlikes,u.fieldSemanticsResolver)).map(({snapshot:E})=>E)}function JR(e){return Os(e)}async function QR(e,t,r,n,i){let a=[...ZR(t)].some(d=>r.get(d)?.fieldType==="STATUS")?await xs(e,n,i):void 0;return{fieldTypeResolver:d=>d.field==="$id"?"NUMBER":r.get(d.field)?.fieldType,fieldSemanticsResolver:d=>{if(d.field==="$id")return nr(z({fieldType:"__ID__"}),e,"$id");let c=r.get(d.field);if(!c)return;let u=c.semantics??z(c),f=c.fieldType==="STATUS"&&a?{...u,optionOrder:a}:u;return nr(f,e,c.code)}}}function ZR(e){let t=new Set,r=n=>{if(Array.isArray(n)){n.forEach(r);return}if(n===null||typeof n!="object")return;let i=n;if(i.type!=="SELECT"){if(i.type==="BINARY"&&[">","<",">=","<="].includes(String(i.op))){let o=i.left;o?.type==="FIELD"&&typeof o.field=="string"&&t.add(o.field)}Object.values(i).forEach(r)}};return r(e),t}function em(e,t,r){let n=t.validations.flatMap(d=>d.errors),i=t.validations.reduce((d,c)=>d+(c.invalidRows>0?1:0),0),o=t.validations[0]?.columns?[...t.validations[0].columns]:[...De(r,e.fields).payloadFields,...Br],s=t.guards.parentRows,a=Wo(t),l=a.branches[0],p={type:"VALIDATION",operation:"INSERT",validatedRows:s,validRows:s-i,invalidRows:i,errorCount:n.length,columns:o,errors:n,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},apply:an(l),guards:ln(l),deletedRows:{total:0,parentRows:0},diagnostic:a};return Rr.set(p,Ki(o,r,e.appId)),p}function tm(e,t,r){let n=t.validations,i=n.flatMap(p=>p.errors),o=n.reduce((p,d)=>p+(d.invalidRows>0?1:0),0),s=n[0]?.columns?[...n[0].columns]:[...De(r,e.assignments.map(p=>p.field)).payloadFields,...Br],a=Vr(t),l={type:"VALIDATION",operation:"UPDATE",validatedRows:t.guards.parentRows,validRows:t.guards.parentRows-o,invalidRows:o,errorCount:i.length,columns:s,errors:i,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},apply:an(a.branches[0]),guards:ln(a.branches[0]),deletedRows:{total:t.plans.reduce((p,d)=>p+d.tables.reduce((c,u)=>c+u.deletedRows,0),0),parentRows:t.plans.filter(p=>p.tables.some(d=>d.deletedRows>0)).length},diagnostic:a};return Rr.set(l,Ki(s,r,e.appId)),l}function rm(e,t,r){let n=t.create.validations.flatMap(E=>E.errors),i=t.update.validations.flatMap(E=>E.errors),o=[...n,...i].map(E=>({...E,$err_operation:"UPSERT"})),s=new Set(o.map(E=>E.$err_row)).size,a=t.create.validations[0]?.columns??t.update.validations[0]?.columns??[...De(r,e.fields).payloadFields,...Br],l=Ho(t),p=l.branches.find(E=>E.branch==="insert"),d=l.branches.find(E=>E.branch==="update"),c=an(p),u=an(d),f={type:"VALIDATION",operation:"UPSERT",validatedRows:t.guards.parentRows,validRows:t.guards.parentRows-s,invalidRows:s,errorCount:o.length,columns:[...a],errors:o,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},apply:[...c,...u],guards:{revisionRequired:t.guards.revisionRequired,parentRows:t.guards.parentRows,dmlMaxRows:t.guards.dmlMaxRows,subtableRows:t.guards.subtableRows,dmlMaxSubtableRows:t.guards.dmlMaxSubtableRows,wouldExceed:t.guards.wouldExceed},applyBranches:{create:{apply:c,guards:ln(p)},update:{apply:u,guards:ln(d)}},deletedRows:{total:t.update.plans.reduce((E,R)=>E+R.tables.reduce((m,g)=>m+g.deletedRows,0),0),parentRows:t.update.plans.filter(E=>E.tables.some(R=>R.deletedRows>0)).length},diagnostic:l};return Rr.set(f,Ki([...a],r,e.appId)),f}function an(e){return e.targets.map(t=>{let r=t.operations.map(n=>({kind:n.kind,...n.matchedRows!==void 0?{matchedRows:n.matchedRows??void 0}:{},...n.changedRows!==void 0?{changedRows:n.changedRows??void 0}:{},...n.addedRows!==void 0?{addedRows:n.addedRows??void 0}:{},...n.removedRows!==void 0?{removedRows:n.removedRows??void 0}:{},...n.value!==void 0?{value:n.value}:{},...n.changed!==void 0?{changed:n.changed}:{}}));return t.targetKind==="SUBTABLE"?{field:t.field,operations:r,changedSubtableRows:t.changedCount??0,deletedRows:Ct(t,"REMOVE")}:{field:t.field,operations:r,changedSubtableRows:0,deletedRows:0,multiValue:{fieldType:t.fieldType??"UNKNOWN",addedValues:Ct(t,"ADD"),removedValues:Ct(t,"REMOVE_VALUE"),changedValues:t.changedCount??0,postImages:t.postImages??[]}}})}function ln(e){if(e.guards.parentRows===null||e.guards.subtableRows===null||e.guards.wouldExceed===null)throw new Error("InternalError: runtime APPLY diagnostic guard contains unknown counts.");return{revisionRequired:e.guards.revisionRequired,parentRows:e.guards.parentRows,dmlMaxRows:e.guards.dmlMaxRows,subtableRows:e.guards.subtableRows,dmlMaxSubtableRows:e.guards.dmlMaxSubtableRows,wouldExceed:e.guards.wouldExceed}}var rt=100,be=500;function Pe(e,t,r){let n=e??r;if(!Number.isSafeInteger(n)||n<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`);return n}function Ki(e,t,r){let n=new Map(t.filter(s=>!s.inSubtable).map(s=>[s.code,s])),i=new Set(["$id","$err_statement","$err_row"]),o=new Map;for(let s of e){if(s==="$id"){o.set(s,{sortKind:"number",fieldType:"RECORD_NUMBER",semantics:z({fieldType:"RECORD_NUMBER"})});continue}let a=n.get(s);if(a){o.set(s,Fe(a,r));continue}o.set(s,Y(i.has(s)?"number":"string"))}return o}async function nm(e,t,r,n,i,o){let s=await hc(e,t,r,n,i,o),a=await de(e.appId,r,i),l=bo(e,s,a),p=e.assignments.map(u=>u.field),d=await J(e.appId,r,i),c=await tt(e.appId,p,d,r,i);if(_t(l.flatMap(u=>u.records.map(f=>f.record)),p,d,c),n.confirm&&!await n.confirm(s.length,"UPDATE"))throw new Q("UPDATE",s.length);for(let u of l)await r.putRecords(u);return{type:"UPDATE",updatedCount:s.length}}function im(e){let t=new Set(["$id"]);e.from&&t.add(e.from.targetJoinField);let r=n=>{if(Array.isArray(n)){n.forEach(r);return}if(n===null||typeof n!="object")return;let i=n;i.type==="FIELD_REF"&&typeof i.field=="string"&&t.add(i.field);for(let o of Object.values(i))r(o)};for(let n of e.assignments)n.value.type!=="SOURCE_FIELD"&&r(n.value);return[...t]}async function om(e,t,r,n){if(await pr(e,t,n),et(e.where))return{type:"DELETE",deletedCount:0};if(e.subtableCode)return um(e,t,r,n);let i=yl(e),s=(await ai(t.getRecords,i.app,i.query,{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1})).ids;if(r.confirm&&!await r.confirm(s.length,"DELETE"))throw new Q("DELETE",s.length);let a=Al(e.appId,s);for(let l of a)await t.deleteRecords(l);return{type:"DELETE",deletedCount:s.length}}async function sm(e,t,r,n){if(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length)return PR(e,t,r,n);if(e.checkGroups?.length)return fn(e,t,r,n);let i=await _e(e.appId,e.fields,t,n),o=await tt(e.appId,e.fields,i,t,n),s=[],a=[],l=await de(e.appId,t,n),p=Tc(e),d=await dn(e.appId,e.keyFields,p,t,r,l);if(e.values.forEach((u,f)=>{let E={};e.fields.forEach((m,g)=>{let y=u[g];y.type==="CASE_VALUE"?E[m]={value:ut(y.expr,{},l.get(m))}:E[m]={value:je(y,l.get(m))}});let R=pn(d,p[f]);R!==void 0?a.push({id:R,record:E}):s.push(E)}),_t([...s,...a.map(u=>u.record)],e.fields,i,o),r.confirm&&s.length+a.length>0){let u=s.length+a.length;if(!await r.confirm(u,"UPDATE"))throw new Q("UPDATE",u)}let c=[];for(let u=0;u<s.length;u+=100){let f=await t.postRecords({app:e.appId,records:s.slice(u,u+100)});c.push(f.ids)}for(let u=0;u<a.length;u+=100)await t.putRecords({app:e.appId,records:a.slice(u,u+100)});return{type:"UPSERT",insertedCount:c.flat().length,updatedCount:a.length}}function Tc(e){return e.values.map(t=>e.keyFields.map(r=>{let n=e.fields.indexOf(r);if(n===-1)throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${r}\u300D\u304C INSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let i=t[n];return i.type==="STRING"?i.value:i.type==="NUMBER"?G(i):i.type==="CASE_VALUE"?we(i.expr,{}):i.elements.map(o=>o.value).join(",")}))}async function $s(e,t,r,n){if(t.length===0)return;let i=await de(e,r,n);return o=>{if(o.tableAlias!==null&&o.tableAlias!=="_p")return;if(o.tableAlias==="_p")return i.get(o.field);let s=o.field.startsWith("_p.")?o.field.slice(3):o.field;return i.get(s)}}async function am(e,t,r,n){let i=e.subtableCode,o=e.fields.indexOf("_pid");if(o<0)throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB INSERT \u306B\u306F _pid \u304C\u5FC5\u9808\u3067\u3059");let s=await Ee(t.getRecords,e.appId,"",[],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1}),a=Bi(s),l=new Map;for(let d of e.values){let c=zu(d[o]);if(!a.get(c))throw new Error(`_pid=${c} \u306E\u89AA\u30EC\u30B3\u30FC\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093`);let f={value:{}};e.fields.forEach((R,m)=>{if(R!=="_pid"){if(R.startsWith("_"))throw new Error(`\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB INSERT \u3067\u30B7\u30B9\u30C6\u30E0\u5217\u300C${R}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`);f.value[R]={value:zu(d[m])}}});let E=l.get(c);E?E.push(f):l.set(c,[f])}let p=[];for(let[d,c]of l.entries()){let u=a.get(d),E=[...En(u,i),...c];p.push(wc(e.appId,d,Rn(u),i,E))}for(let d of p)await t.putRecords(d);return{type:"INSERT",createdIds:[],insertedCount:e.values.length}}async function lm(e,t,r,n){let i=e.subtableCode;if(!en(e.where))throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u306F _rid \u6761\u4EF6\u304C\u5FC5\u9808\u3067\u3059");let o=[];Ze(e.where,o);for(let u of e.assignments)u.value.type==="CASE_VALUE"&&Ni(u.value.expr,o);let s=await $s(e.appId,o,t,n),a=await Ee(t.getRecords,e.appId,"",[],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1}),p=Gs(a,i).filter(u=>q(e.where,u.flat,s));if(r.confirm&&!await r.confirm(p.length,"UPDATE"))throw new Q("UPDATE",p.length);let d=new Map;for(let u of p){if(!u.rowId)throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u5BFE\u8C61\u306B id \u672A\u63A1\u756A\u306E\u884C\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059");let f=d.get(u.parentId);f||(f=new Map,d.set(u.parentId,f));let E={};for(let R of e.assignments){if(R.field.startsWith("_"))throw new Error(`\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u3067\u30B7\u30B9\u30C6\u30E0\u5217\u300C${R.field}\u300D\u306F\u66F4\u65B0\u3067\u304D\u307E\u305B\u3093`);E[R.field]={value:jn(R.value,u.flat,s)}}f.set(u.rowId,E)}let c=Bi(a);for(let[u,f]of d.entries()){let E=c.get(u);if(!E)continue;let m=En(E,i).map(g=>{let y=g.id??"";if(!y)return g;let T=f.get(y);return T?{id:y,value:T}:{id:y}});await t.putRecords(cm(e.appId,u,Rn(E),i,m))}return{type:"UPDATE",updatedCount:p.length}}async function um(e,t,r,n){let i=e.subtableCode;if(!en(e.where))throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB DELETE \u306B\u306F _rid \u6761\u4EF6\u304C\u5FC5\u9808\u3067\u3059");let o=[];Ze(e.where,o);let s=await $s(e.appId,o,t,n),a=await Ee(t.getRecords,e.appId,"",[],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1}),p=Gs(a,i).filter(u=>q(e.where,u.flat,s));if(r.confirm&&!await r.confirm(p.length,"DELETE"))throw new Q("DELETE",p.length);let d=new Map;for(let u of p){let f=d.get(u.parentId);f?f.push(u.rowIndex):d.set(u.parentId,[u.rowIndex])}let c=Bi(a);for(let[u,f]of d.entries()){let E=c.get(u);if(!E)continue;let R=En(E,i),m=new Set(f),g=R.filter((y,T)=>!m.has(T));await t.putRecords(wc(e.appId,u,Rn(E),i,g))}return{type:"DELETE",deletedCount:p.length}}function Bi(e){let t=new Map;for(let r of e){let n=String(r.$id?.value??"");n&&t.set(n,r)}return t}function Gs(e,t){let r=[];for(let n of e){let i=String(n.$id?.value??""),o=Rn(n),s=En(n,t);for(let a=0;a<s.length;a++){let l=s[a],p={...zn(l,a),_pid:i};for(let[d,c]of Object.entries(n))d!==t&&(p[`_p.${d}`]=bs(c?.value));r.push({parent:n,parentId:i,parentRevision:o,rowIndex:a,rowId:l.id??"",row:l,flat:p})}}return r}function En(e,t){let r=e[t]?.value;return Array.isArray(r)?r:[]}function Rn(e){let t=Number(e.$revision?.value??0);return Number.isFinite(t)?t:0}function wc(e,t,r,n,i){return{app:e,records:[{id:Number(t),revision:r,record:{[n]:{value:i}}}]}}function cm(e,t,r,n,i){return{app:e,records:[{id:Number(t),revision:r,record:{[n]:{value:i}}}]}}function pm(e,t,r,n,i){if(i.some(o=>!o))throw new Error("REORDER \u5BFE\u8C61\u306B id \u672A\u63A1\u756A\u306E\u884C\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059");return{app:e,records:[{id:Number(t),revision:r,record:{[n]:{value:i.map(o=>({id:o}))}}}]}}function zu(e){return e.type==="STRING"?e.value:e.type==="NUMBER"?G(e):e.type==="CASE_VALUE"?we(e.expr,{}):e.elements.map(t=>t.value).join(",")}function bs(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return String(e);try{return JSON.stringify(e)}catch{return String(e)}}function en(e){switch(e.type){case"BINARY":return e.left.type==="FIELD"&&e.left.tableAlias===null&&e.left.field==="_rid";case"LOGICAL":return en(e.left)||en(e.right);case"NOT":case"GROUP":return en(e.expr);default:return!1}}async function dm(e,t,r,n){let i=[];Ze(e.where,i);let o=await $s(e.appId,i,t,n),s=await J(e.appId,t,n);if(et(e.where))return{type:"REORDER",reorderedParentCount:0};let a=new Map(s.map(f=>[f.code,f.semantics??z(f)])),l=f=>{if(f.field==="_idx"||f.field==="_pid"||f.field==="_rid")return x("number");let E=f.field.startsWith("_p.")?f.field.slice(3):f.field;return a.get(E)??x("string")},p=await Ee(t.getRecords,e.appId,"",[],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1}),d=Gs(p,e.subtableCode),c=e.all?new Set(p.map(f=>String(f.$id?.value??"")).filter(f=>f!=="")):new Set(d.filter(f=>e.where&&q(e.where,f.flat,o,void 0,l)).map(f=>f.parentId));if(r.confirm&&!await r.confirm(c.size,"UPDATE"))throw new Q("UPDATE",c.size);let u=Bi(p);for(let f of c){let E=u.get(f);if(!E)continue;let m=En(E,e.subtableCode).map((y,T)=>({row:y,i:T,flat:fm(E,e.subtableCode,y,T)}));m.sort((y,T)=>Em(y.flat,T.flat,e.by,l));let g=m.map(y=>y.row.id??"");await t.putRecords(pm(e.appId,f,Rn(E),e.subtableCode,g))}return{type:"REORDER",reorderedParentCount:c.size}}function fm(e,t,r,n){let i={_pid:String(e.$id?.value??""),_rid:r.id??"",_idx:String(n)};for(let[o,s]of Object.entries(e))o!==t&&(i[`_p.${o}`]=bs(s?.value));for(let[o,s]of Object.entries(r.value??{}))i[o]=bs(s?.value);return i}function Em(e,t,r,n){for(let i of r){let o=Xu(i.key,e),s=Xu(i.key,t),a=i.key.type==="FIELD_NAME"?n(Oe(i.key.name)):i.key.type==="ARITH_KEY"?x("number"):i.key.type==="FUNC_KEY"?Nt(i.key.expr).semantics??x("string"):x("number"),l=yt(o,s,a??x("string"));if(l!==0)return i.direction==="ASC"?l:-l}return 0}function Xu(e,t){switch(e.type){case"FIELD_NAME":return t[e.name]??"";case"ARITH_KEY":return String(ee(e.expr,t));case"FUNC_KEY":return te(e.expr,t);case"GROUPING_KEY":throw new Error("ArgumentError: GROUPING() is not supported in REORDER BY.")}}async function Ic(e,t,r,n,i){if(e.checkGroups?.length)return fn(e,t,r,n,i);let o=await _e(e.appId,e.fields,t,n),s=await tt(e.appId,e.fields,o,t,n),a=await Bs.materialize(e,t,r,n,i,o),{rows:l,columns:p}=a;if(yc(a),p.length!==e.fields.length){let g=p.length===0&&l.length===0?"\u3002\u7D50\u679C\u304C 0 \u884C\u306E\u305F\u3081\u5217\u3092\u7279\u5B9A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08SELECT * \u3092\u7A7A\u30BD\u30FC\u30B9\u306B\u4F7F\u3046\u3068\u5217\u3092\u6C7A\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002\u660E\u793A\u5217\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF09":"";throw new Error(`SELECT \u306E\u5217\u6570\uFF08${p.length}\uFF09\u3068 UPSERT \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u6570\uFF08${e.fields.length}\uFF09\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093${g}`)}for(let g of e.keyFields)if(!e.fields.includes(g))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${g}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let d=[],c=[],u=await de(e.appId,t,n),f=l.map((g,y)=>{let T={};return e.fields.forEach((A,N)=>{if(a.importPresence&&!a.importPresence[y]?.has(A))return;let w=g[p[N]]??"";T[A]={value:Ec(w,u.get(A))}}),T});f.forEach(g=>_t([g],e.fields.filter(y=>y in g),o,s));let E=f.map(g=>e.keyFields.map(y=>String(g[y]?.value??"")));if(ki.has(e)){let g=e.keyFields.map(T=>u.get(T)==="NUMBER"),y=new Set;for(let T of E){let A=Lt(T,g);if(y.has(A))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");y.add(A)}}let R=await dn(e.appId,e.keyFields,E,t,r,u);if(f.forEach((g,y)=>{let T=pn(R,E[y]);T!==void 0?c.push({id:T,record:g}):d.push(g)}),r.confirm&&d.length+c.length>0){let g=d.length+c.length;if(!await r.confirm(g,"UPDATE"))throw new Q("UPDATE",g)}let m=[];for(let g=0;g<d.length;g+=100){let y=await t.postRecords({app:e.appId,records:d.slice(g,g+100)});m.push(y.ids)}for(let g=0;g<c.length;g+=100)await t.putRecords({app:e.appId,records:c.slice(g,g+100)});return{type:"UPSERT",insertedCount:m.flat().length,updatedCount:c.length}}async function bc(e){let t=await e.getApps(),r=["\u30A2\u30D7\u30EAID","\u30A2\u30D7\u30EA\u540D","\u8AAC\u660E"],n=t.map(i=>({\u30A2\u30D7\u30EAID:String(i.appId),\u30A2\u30D7\u30EA\u540D:i.name,\u8AAC\u660E:i.description}));return{type:"SELECT",rows:n,columns:r,rowCount:n.length}}async function Pc(e,t,r){let n=await J(e.appId,t,r),i=["\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9","\u30E9\u30D9\u30EB","\u30BF\u30A4\u30D7"],o=n.map(s=>({\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9:s.code,\u30E9\u30D9\u30EB:s.label,\u30BF\u30A4\u30D7:s.fieldType}));return{type:"SELECT",rows:o,columns:i,rowCount:o.length}}function Rm(e,t=!1){try{let r=new Ft(e).tokenize(),n=new Bt(r,{import:t}).parse();return Cn("phase15b",n),tr(n),n}catch(r){throw r instanceof le||r instanceof S,r}}async function un(e,t,r,n,i){let o=[];Ii(e,t,r,n,o,i),await Promise.all(o)}async function Cc(e,t,r,n,i){let o=[];for(let s of e.columns)if(s.type==="CASE_COL")for(let a of s.expr.branches)o.push(un(a.condition,t,r,n,i));await Promise.all(o)}function tn(e,t,r,n,i){return i!==void 0&&i.size>0?Ot(e,t,r,i,n):Et(e,t,r,n)}function Ii(e,t,r,n,i,o){if(e!==null)switch(e.type){case"BINARY":{let s=e.right;s.type==="SUBQUERY_IN_LIST"&&i.push(tn(s.query,t,r,n,o).then(a=>{let l=s.column??a.columns[0]??"";s.resolved=new Set(a.rows.map(p=>p[l]??""))})),s.type==="SCALAR_SUBQUERY"&&i.push(tn(s.query,t,r,n,o).then(a=>{if(a.rowCount===0)throw new Error("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u5024\u3092\u8FD4\u3057\u307E\u305B\u3093\u3067\u3057\u305F");if(a.rowCount>1)throw new Error("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u8907\u6570\u884C\u3092\u8FD4\u3057\u307E\u3057\u305F\uFF081\u884C\u306E\u307F\u8A31\u53EF\uFF09");let l=a.columns[0]??"";s.resolved=a.rows[0]?.[l]??""}));break}case"LOGICAL":Ii(e.left,t,r,n,i,o),Ii(e.right,t,r,n,i,o);break;case"NOT":case"GROUP":Ii(e.expr,t,r,n,i,o);break;case"EXISTS":{let s=e;i.push(tn(s.query,t,r,n,o).then(a=>{s.resolved=a.rowCount>0}));break}case"BOOLEAN":break}}async function Nc(e,t,r,n){for(let i of e){if(i.value.type!=="SCALAR_SUBQUERY")continue;let o=await Et(i.value.query,t,r,n);if(o.rowCount===0)throw new Error(`SET \u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u5024\u3092\u8FD4\u3057\u307E\u305B\u3093\u3067\u3057\u305F\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9: ${i.field}\uFF09`);if(o.rowCount>1)throw new Error(`SET \u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u8907\u6570\u884C\u3092\u8FD4\u3057\u307E\u3057\u305F\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9: ${i.field}\uFF09`);let s=o.columns[0]??"",a=o.rows[0]?.[s]??"";i.value={type:"STRING",value:a}}}async function Oc(e,t,r,n,i){let o=new Map,s=[];for(let p=0;p<e.length;p++){let d=e[p];if(d.type!=="SCALAR_SUBQUERY_COL")continue;let c=JSON.stringify(d.query),u=o.get(c);u||(u=tn(d.query,t,r,n,i).then(f=>{if(f.rowCount===0)throw new Error("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u5024\u3092\u8FD4\u3057\u307E\u305B\u3093\u3067\u3057\u305F");if(f.rowCount>1)throw new Error("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u8907\u6570\u884C\u3092\u8FD4\u3057\u307E\u3057\u305F\uFF081\u884C\u306E\u307F\u8A31\u53EF\uFF09");let E=f.columns[0]??"";return f.rows[0]?.[E]??""}),o.set(c,u)),s.push([p,u])}let a=await Promise.all(s.map(([,p])=>p)),l=new Map;return s.forEach(([p],d)=>l.set(p,a[d])),l}var Lc=new WeakMap,_c=new WeakMap;async function mm(e,t,r,n=1e4){let i=new Set,o=new Set,s=new Set,a={...t,getFields:async u=>(i.add(u),t.getFields(u)),getProcessStatuses:async u=>(o.add(u),t.getProcessStatuses(u)),getNumberPrecision:async u=>(s.add(u),t.getNumberPrecision(u))},l=new Map,p=new Map,d=new Set,c=async u=>{if(u===null||typeof u!="object"||d.has(u))return;if(d.add(u),Array.isArray(u)){await Promise.all(u.map(c));return}let f=u;if(f.type==="SELECT"){let E=u;await Mi(E,a,r);let R=[E.from,...E.joins.map(y=>y.table)].filter(y=>y.cteName===null).map(y=>y.appId);(Ue(E.where)||E.orderBy.length>0||E.columns.some(y=>y.type==="WINDOW_COL"&&y.orderBy.length>0))&&R.forEach(y=>i.add(y));let g=await bi(E,a,r);if(g.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Pt(g)}).`);if(l.set(E,g),E.orderBy.length>0||E.columns.some(y=>y.type==="WINDOW_COL"&&y.orderBy.length>0)){let y=await sn(E,a,r);if(E.orderMode!=="KINTONE_NATIVE")for(let A of y.semantics.values())A.fieldType==="STATUS"&&A.source&&o.add(A.source.appId);let T=[E.from,...E.joins.map(A=>A.table)].some(A=>A.cteName!==null);if(Pi(E)&&!T){let A=g.capability==="EXACT_PUSHDOWN"?He(E):"FULL_SCAN";p.set(E,(E.orderMode==="KINTONE_NATIVE"?Hr:Wr)({stmt:E,staticMode:A,whereCapability:g.capability,orderSemantics:y.semantics,maxRecords:n,hasKlike:oe(E.where)}))}}}else if(f.type==="VALIDATE"){let E=u;i.add(E.appId);let R=await J(E.appId,a,r),m=new Map(R.filter(h=>!h.inSubtable).map(h=>[h.code,h])),g=new Set(R.filter(h=>h.inSubtable).map(h=>h.code)),y=Bo(E,R),T=ir(E.checkGroups??[]),A=Os(E.where);for(let h of T){if(h.field!=="$id"&&!m.has(h.field)&&!g.has(h.field))throw ae(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${h.field} \u306F APP${E.appId} \u306B\u5B58\u5728\u3057\u307E\u305B\u3093`);if(h.field!=="$id"&&!m.has(h.field)&&g.has(h.field))throw new Error(`ArgumentError: VALIDATE \u306E CHECK \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${h.field} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}for(let h of A){if(h!=="$id"&&!m.has(h)&&!g.has(h))throw new Error(`ArgumentError: WHERE field ${h} does not exist in APP${E.appId}.`);if(h!=="$id"&&!m.has(h)&&g.has(h))throw new Error(`ArgumentError: VALIDATE \u306E WHERE \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${h} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let N=new Map([...m].map(([h,C])=>[h,C.fieldType]));N.set("$id","RECORD_NUMBER"),vt(E,N);let w=ur(E.where,h=>h.field==="$id"?z({fieldType:"__ID__"}):m.get(h.field)?.semantics??(m.has(h.field)?z(m.get(h.field)):void 0));if(w.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Pt(w)}).`);let L=new Map([...m].map(([h,C])=>[h,C.fieldType])),b=new Map([...m.values()].flatMap(h=>h.optionOrder?[[h.code,new Set(Object.keys(h.optionOrder))]]:[])),D=E.where===null?null:w.capability==="EXACT_PUSHDOWN"?E.where:Xt(E.where,{allowUnqualifiedFields:!0,fieldTypes:L,fieldOptions:b,allowKlike:!1}),P=y.some(h=>h.field.fieldType==="NUMBER");P&&(s.add(E.appId),await $e(E.appId,a,r)),Lc.set(E,{targetFields:y.map(h=>h.subtableCode?`${h.subtableCode}(${h.field.code})`:h.field.code),fetchFields:[...new Set(["$id",...y.map(h=>h.subtableCode??h.field.code),...A,...T.map(h=>h.field)])],subtables:new Map([...new Set(y.flatMap(h=>h.subtableCode?[h.subtableCode]:[]))].map(h=>[h,y.filter(C=>C.subtableCode===h).length])),capability:w,prefilter:D,numberPrecision:P})}else if(f.type==="UPDATE"||f.type==="DELETE"){if(i.add(u.appId),f.type==="UPDATE"&&u.applyBlocks?.length){let R=u,m=await J(R.appId,a,r);if(qe(R,m),vi(R)){let g=m.filter(T=>!T.inSubtable),y=jo(R.where,{fieldTypes:new Map(g.map(T=>[T.code,T.fieldType])),fieldOptions:new Map(g.flatMap(T=>T.optionOrder?[[T.code,new Set(Object.keys(T.optionOrder))]]:[]))});_c.set(R,y)}}let E=u;(E.type!=="UPDATE"||!vi(E))&&await pr(E,a,r)}await Promise.all(Object.values(f).map(c))};if(await c(e),typeof e=="object"&&e!==null&&e.type==="WITH"&&qt(e)){let u=zt(e),f=await bi(u,a,r);if(f.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Pt(f)}).`);if(l.set(u,f),Pi(u)){let E=await sn(u,a,r);p.set(u,(u.orderMode==="KINTONE_NATIVE"?Hr:Wr)({stmt:u,staticMode:f.capability==="EXACT_PUSHDOWN"?He(u):"FULL_SCAN",whereCapability:f.capability,orderSemantics:E.semantics,maxRecords:n,hasKlike:oe(u.where)}))}}return{capabilities:l,orderPlans:p,fieldApps:i,processStatusApps:o,numberPrecisionApps:s}}function gm(e){return[...[...e.fieldApps].sort((t,r)=>t-r).map(t=>` metadata API: form definition APP${t}`),...[...e.processStatusApps].sort((t,r)=>t-r).map(t=>` metadata API: process status APP${t}`),...[...e.numberPrecisionApps].sort((t,r)=>t-r).map(t=>` metadata API: number precision APP${t}`)]}async function hm(e,t,r,n,i,o=100,s=be){let a=await mm(e.query,t,r,n),l=[...gm(a),...ym(vc(e.query,void 0,a.capabilities,a.orderPlans,o,s,n),i)];return{type:"SELECT",columns:["plan"],rows:l.map(p=>({plan:p})),rowCount:l.length}}function ym(e,t){let r=[];for(let n of e)if(r.push(n),n.trim()==="cursor page size: 500"){let i=n.match(/^\s*/)?.[0]??"";r.push(`${i}cursor concurrency: ${t} per domain (process-local)`)}return r}function vc(e,t,r,n,i=100,o=be,s=1e4){if(e.type==="UNION")return Sm(e,r,n);if(e.type==="WITH")return Tm(e,r,n);if(e.type==="INSERT")return bm(e,t,i,o);if(e.type==="INSERT_SELECT")return Pm(e,t,r,n);if(e.type==="UPSERT")return Lm(e,t,i,o);if(e.type==="UPSERT_SELECT")return _m(e,t,r,n);if(e.type==="UPDATE")return Cm(e,t,r,n,i,o,s);if(e.type==="DELETE")return Om(e,t);if(e.type==="REORDER")return vm(e,t);if(e.type==="VALIDATE")return Am(e,t);if(e.type==="IMPORT"){if(e.writeMode==="UPDATE_RECORD_NUMBER"){let p=e.targets?.filter(d=>d.kind==="SUBTABLE")??[];return[...t?[t]:[],`IMPORT UPDATE INTO APP${e.appId}`," writeMode: UPDATE_RECORD_NUMBER",` source: CSV ${e.source.sourceName}`,` keyHeader: ${e.recordNumberSourceHeader}`," mapping: BY_NAME"," parentRows: requires source load"," duplicate: preflight before lookup/write"," matched: requires lookup"," unmatched: requires lookup"," invalid: requires source load"," requiresLookup:true"," inserted: 0"," keyInPayload: false",...p.length?[` replaceSubtables: ${e.replaceSubtables?.join(", ")??"ERROR: required"}`," subtableRowIdPolicy: PRESERVE existing; empty/unknown add without id"," rowIdOwnership: owned elsewhere invalidates the parent"," replacementDiff: existing/input/update/add/delete/rowIdNotFound requires actual-data preflight",' confirmPolicy: highest warning "\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5168\u7F6E\u63DB\u30FBN\u884C\u524A\u9664" plus per-table detail (including delete=0)']:[],` disposition: ${e.validateOnly?"VALIDATE ONLY":e.onErrorSkip?`ON ERROR SKIP INTO ${e.errorTable}`:"fail-fast"}`," gate: enabled for this parse",` writesKintone: ${e.validateOnly?"false":"true"}`]}let a=e.keyFields?"UPSERT":"INSERT",l=e.targets?.some(p=>p.kind==="SUBTABLE")===!0;return[...t?[t]:[],`IMPORT ${a} INTO APP${e.appId}`,` source: ${e.source.kind} ${e.source.sourceName}`,` sourceFormat: ${e.source.kind}`,` encoding: ${e.source.kind==="JSON"?"UTF8 only":e.source.encoding??"UTF8 (or loader metadata)"}`,` mapping: ${e.source.kind==="JSON"?"BY NAME (INTO order)":e.source.projection?"SELECT expressions":e.source.mappingMode}`,...e.source.kind==="JSON"?[" duplicateKeyPolicy: reject"," numberLexemePolicy: preserve; JSON number accepts safe integer only"," precisionTargetsRequireString: true"," unknownKeyPolicy: reject"," presenceAware: true",...l?[" subtableRowIdPolicy: reject _rid/id; DROP IDs and renumber every input row"," subtableUpdatePolicy: present table replaces all rows; missing table is preserved; [] deletes all rows"," confirmPolicy: parent/table existing/input/add/delete detail required; delete is highest warning"]:[]]:[` header: ${e.source.hasHeader?"HEADER":"NO HEADER"}`,...e.source.mappingMode==="BY_NAME"?[` writtenColumns: ${e.fields.join(", ")}`," knownExportColumns: audit and ignore with reason/non-empty count",` unknownColumnPolicy: ${e.source.ignoreUnknownColumns?"ignore with audit/non-empty count":"ERR_IMPORT_UNKNOWN_COLUMN"}`," multipleValueDelimiter: LF (CRLF or LF)"," sourceValueMode: string-preserving"," roundTripNumericGuarantee: exact CSV lexeme passes strict decimal validation"," FILE: audit-ignore unless named in INTO (analyze error)"]:[]],` sourceLimit: 10485760 bytes / ${e.fields.length} target columns`,` key: ${e.keyFields?.join(", ")??"none"}`,` checks: ${e.checkGroups?.length??0}`,` disposition: ${e.validateOnly?"VALIDATE ONLY":e.onErrorSkip?`ON ERROR SKIP INTO ${e.errorTable}`:"fail-fast"}`," gate: enabled for this parse",` preflight: ${e.validateOnly&&l?"requires actual source load at execution; this EXPLAIN is static":"requires load"}`,...l?[e.source.kind==="JSON"?" Phase5C: JSON mutation requires detail-capable confirmation surface":" Phase5D: CSV mutation requires detail-capable confirmation surface"]:[],` writesKintone: ${e.validateOnly?"false":"true"}`," duplicateKey: preflight before lookup/write (requires load)"]}return Ne(e,t,r,n)}function Am(e,t){let r=Lc.get(e),n=[];return t&&n.push(t),n.push(`VALIDATE APP${e.appId}`),n.push(" operation: read-only existing-record constraint audit (writesKintone=false)"),n.push(" fetch API: GET records via offset + $id keyset paging (Cursor API unused)"),n.push(" complete input: required (onLimit=truncate disabled)"),r?(n.push(` WHERE capability: ${r.capability.capability}`),n.push(` kintone query: ${r.prefilter===null?"(\u5168\u4EF6\u53D6\u5F97)":W(r.prefilter)}`),n.push(` audit fields: ${r.targetFields.length===0?"(\u306A\u3057)":r.targetFields.join(", ")}`),n.push(` fetch fields: ${r.fetchFields.join(", ")}`),n.push(` mode: ${e.summary?"SUMMARY":"DETAIL"}`),r.subtables.size>0&&n.push(` subtable audit: ${[...r.subtables].map(([i,o])=>`${i}(${o} fields)`).join(", ")}`),n.push(` output schema: ${(e.summary?Ns:Cs).join(", ")}`),n.push(e.summary?" aggregation: record/subtable/field/code; row locator=none":" row locator: grouped by message; $err_subrow / $err_subrow_id list all matching rows (first-occurrence order)"),n.push(` number precision: ${r.numberPrecision?"required":"not required"}`),n.push(" local checks: original WHERE re-evaluation + built-in constraints + CHECK groups"),n.push(" records/mutation API during EXPLAIN: none; violation count unavailable"),n):(n.push(" metadata: form definition required; number precision required for NUMBER targets"),n)}function Ne(e,t,r,n){let i=r?.get(e)??(r?[...r].find(([f])=>JSON.stringify(f)===JSON.stringify(e))?.[1]:void 0),o=n?.get(e)??(n?[...n].find(([f])=>JSON.stringify(f)===JSON.stringify(e))?.[1]:void 0),s=o?.kind==="CANONICAL_LOCAL"||i&&i.capability!=="EXACT_PUSHDOWN"?"FULL_SCAN":He(e),a=wm(e);i&&i.capability!=="EXACT_PUSHDOWN"&&a.push(...i.reasons.map(f=>f.code));let l=[],p=Xl(e,on.get(e)?.allItems.length);t&&l.push(t),l.push(` mode: ${s}`),p&&(l.push(` grouping source: ${p.source}`),l.push(` grouping sets: ${p.expandedSetCount} (limit: ${p.setLimit})`),l.push(` grouping items: ${p.groupingItemCount} (limit: ${p.itemLimit})`),l.push(` grouping output rows: runtime checked (limit: ${p.outputRowLimit}, before HAVING/DISTINCT/LIMIT)`)),o?(l.push(` order plan: ${o.kind}`),o.reasonCodes.length>0&&l.push(` order reason: ${o.reasonCodes.join(", ")}`),o.kind==="KORDER_NATIVE"?(l.push(" order semantics: kintone native (not kSQL canonical)"),l.push(" REST execution: single GET")):o.kind==="KORDER_CURSOR"&&(l.push(" order semantics: kintone native (not kSQL canonical)"),l.push(" fetch API: POST/GET/DELETE records/cursor.json"),l.push(" cursor page size: 500"),l.push(` scan rows: ${o.scanRows}`))):p&&l.push(" order plan: CANONICAL_LOCAL");let d=o&&!o.requiresCompleteInput?{...e,orderBy:[]}:e,c=gt(d);o?.requiresCompleteInput&&c.add("LOCAL_ORDER");let u=et(e.where);if(c.size>0&&(!u||p!==null)&&(l.push(" complete input: required (onLimit=truncate disabled)"),l.push(` complete input reason: ${[...c].join(", ")}`),l.push(" onLimit=truncate: disabled")),u)return l.push(" predicate: constant false"),l.push(" records API access: none"),l.push(` app: APP${e.from.appId} (${e.from.appId})`),l;if(s==="FULL_SCAN"&&a.length>0&&l.push(` reason: ${a.join(", ")}`),s==="SIMPLE"){let f=Nn(o?.kind==="CANONICAL_REST_TOP_N"?sc(e):e);l.push(` app: APP${e.from.appId} (${e.from.appId})`);let E=o?.kind==="KORDER_CURSOR"?qo(e):f.query;l.push(` kintone query: ${E||"(\u306A\u3057)"}`),l.push(` fields: ${f.fields.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":f.fields.join(", ")}`)}else{let f=Qt(e),E=ht(e,e.from),R=e.from.alias?` AS ${e.from.alias}`:"",m=f.mainCondition,g=tc(e),y=e.joins.length===0&&i?.capability==="EXACT_PUSHDOWN"&&e.where!==null&&!ot(e.where)?W(e.where):"",T=m!==null?W(m):y||"(\u5168\u4EF6\u53D6\u5F97)";l.push(` app: APP${e.from.appId}${R} (${e.from.appId})`),l.push(` kintone query: ${T}`),g!==null&&l.push(` pushdown candidate: ${W(g)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`),l.push(` fields: ${E.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":E.join(", ")}`);for(let A of e.joins){let N=ht(e,A.table),w=A.table.alias?` AS ${A.table.alias}`:"",L=A.type==="INNER"?"JOIN":`${A.type} JOIN`,b=A.table.alias?f.joinConditions.get(A.table.alias)??null:null,D=A.table.alias&&!A.table.subtableCode&&A.table.cteName===null&&e.where?Cr(e.where,{tableAlias:A.table.alias}):null,P=b!==null?W(b):"(\u5168\u4EF6\u53D6\u5F97)";l.push(` ${L}: APP${A.table.appId}${w} (${A.table.appId})`),l.push(` kintone query: ${P}`),D!==null&&l.push(` pushdown candidate: ${W(D)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`),l.push(` fields: ${N.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":N.join(", ")}`)}}return l.push(...Im(e,r,n)),l}function Sm(e,t,r){let n=[],i=s=>{if(s.type==="SELECT"){n.push(s);return}i(s.left),n.push(s.right)};i(e);let o=[];return n.forEach((s,a)=>{a>0&&o.push(""),o.push(...Ne(s,`[union:${a+1}]`,t,r))}),o}function Tm(e,t,r){let n=[];for(let i of e.ctes)i.query.type==="SELECT"&&(n.push(...Ne(i.query,`[cte: ${i.name}]`,t,r)),n.push(""));if((e.query.type==="SELECT"||e.query.type==="UNION")&&n.push(...vc(e.query,"[main]",t,r)),qt(e)){n.push("");let i=zt(e);n.push(...Ne(i,"[effective: inlined CTE]",t,r))}return n}function wm(e){let t=[];(e.from.subtableCode||e.joins.some(n=>n.table.subtableCode))&&t.push("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB"),e.joins.length>0&&t.push("JOIN \u3042\u308A");let r=ne(e);return r.type==="PLAIN"?t.push("GROUP BY \u3042\u308A"):r.type==="GROUPING_SETS"&&t.push(r.source==="ROLLUP"?"ROLLUP \u3042\u308A":r.source==="CUBE"?"CUBE \u3042\u308A":"GROUPING SETS \u3042\u308A"),e.distinct&&t.push("DISTINCT \u3042\u308A"),e.columns.some(n=>n.type==="AGGREGATE"||n.type==="ARITH_AGG_COL")&&t.push("\u96C6\u8A08\u95A2\u6570\uFF08COUNT / SUM \u7B49\uFF09\u3042\u308A"),e.columns.some(n=>n.type==="WINDOW_COL")&&t.push("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u3042\u308A"),e.columns.some(n=>n.type==="SCALAR_SUBQUERY_COL")&&t.push("SELECT \u5217\u306B\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA"),ot(e.where)&&t.push("WHERE \u53E5\u306B JS \u8A55\u4FA1\u304C\u5FC5\u8981\u306A\u5F0F"),it(e.where)&&t.push("LIKE \u306F\u5E38\u306B JS \u8A55\u4FA1\u306E\u305F\u3081\u5168\u4EF6\u53D6\u5F97"),e.orderBy.some(n=>n.key.type!=="FIELD_NAME")&&t.push("ORDER BY \u306B\u5F0F"),t}function Im(e,t,r){let n=[],i=1,o=s=>{if(s)switch(s.type){case"BINARY":s.right.type==="SCALAR_SUBQUERY"&&(n.push(""),n.push(...Ne(s.right.query,`[subquery:${i++}]`,t,r))),s.right.type==="SUBQUERY_IN_LIST"&&(n.push(""),n.push(...Ne(s.right.query,`[subquery:${i++}]`,t,r)));break;case"EXISTS":n.push(""),n.push(...Ne(s.query,`[subquery:${i++}]`,t,r));break;case"LOGICAL":o(s.left),o(s.right);break;case"NOT":case"GROUP":o(s.expr);break;case"NULL_CHECK":break;case"BOOLEAN":break}};o(e.where);for(let s of e.columns)s.type==="SCALAR_SUBQUERY_COL"&&(n.push(""),n.push(...Ne(s.query,`[subquery:${i++}]`,t,r)));return e.having&&o(e.having),n}function bm(e,t,r=rt,n=be){let i=e.values.length,o=Math.ceil(i/100),s=[];return t&&s.push(t),s.push(" [INSERT]"),s.push(` target: APP${e.appId} (${e.appId})`),s.push(` records: ${i} \u4EF6\uFF08\u30D0\u30C3\u30C1 ${o} \u56DE \xD7 \u6700\u5927 100 \u4EF6\uFF09`),s.push(` api: POST /k/v1/records.json \xD7 ${o}`),s.push(` fields: ${e.fields.join(", ")}`),e.applyBlocks?.length?[...s,...Vs(oi(e,r,n))]:s}function Pm(e,t,r,n){let i=[];return t&&i.push(t),i.push(" [INSERT SELECT]"),i.push(` target: APP${e.appId} (${e.appId})`),i.push(` fields: ${e.fields.join(", ")}`),i.push(" api: POST /k/v1/records.json\uFF08\u4EF6\u6570\u306F SELECT \u7D50\u679C\u306B\u4F9D\u5B58\u3001100 \u4EF6\u3054\u3068\u306B\u30D0\u30C3\u30C1\uFF09"),i.push(""),i.push(...Ne(e.select,"[source SELECT]",r,n)),i}function Cm(e,t,r,n,i=100,o=be,s=1e4){if(e.applyBlocks?.length)return Nm(e,t,i,o,s);let a=Rl(e),l=e.assignments.some(f=>f.value.type==="STRING_FUNC"),p=Yn(e),d=e.assignments.some(f=>f.value.type==="SCALAR_SUBQUERY"),c=[];if(t&&c.push(t),c.push(e.from?" [UPDATE FROM]":" [UPDATE]"),c.push(` target: APP${e.appId} (${e.appId})`),e.from){let f=e.from.cteName??`APP${e.from.appId}`;c.push(` source: ${f} AS ${e.from.alias}`),c.push(` join: APP${e.appId}.${e.from.targetJoinField} = ${e.from.alias}.${e.from.joinKeyField}`),c.push(` target filter: ${e.from.targetFilter?cn(e.from.targetFilter):"(none)"}`)}else c.push(` kintone query: ${cn(e.where)}`);e.subtableCode||(c.push(" selection: exact native pushdown; JS residual none"),c.push(" search abort: DML fail-closed (SearchAbortedError; mutation 0)")),c.push(et(e.where)?" api: metadata validation only (records API access: none)":" api: GET /k/v1/records.json \u2192 PUT /k/v1/records.json");let u=[];if(a&&u.push("\u7B97\u8853 SET\uFF08\u73FE\u5728\u5024\u3092\u53D6\u5F97\u3057\u3066\u8A08\u7B97\uFF09"),l&&u.push("\u6587\u5B57\u5217\u95A2\u6570 SET\uFF08\u73FE\u5728\u5024\u3092\u53D6\u5F97\u3057\u3066\u8A55\u4FA1\uFF09"),d&&u.push("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA SET"),!p&&!d&&u.push("\u5358\u7D14 SET"),c.push(` set type: ${u.join(", ")}`),p){let f=km(e);f.length>0&&c.push(` ref fields: ${f.join(", ")}\uFF08GET \u306B\u542B\u3081\u308B\uFF09`)}c.push(" set fields:");for(let f of e.assignments)c.push(` ${Mm(f)}`);for(let f of e.assignments)f.value.type==="SCALAR_SUBQUERY"&&(c.push(""),c.push(...Ne(f.value.query,`[subquery: ${f.field}]`,r,n)));return c}function Nm(e,t,r,n,i){let o=oi(e,r,n),s=o.branches[0],p=e.applyBlocks.flatMap(E=>[...E.operations]).map(E=>{if(E.kind==="APPEND")return"APPEND";if(E.kind==="ADD"||E.kind==="REMOVE_VALUE")return"VALUE_LITERAL";if(E.selector.kind==="ALL_ROWS")return"ALL_ROWS";let R=E.selector.where;return R.type==="BINARY"&&R.op==="="&&R.left.type==="FIELD"&&R.left.tableAlias===null&&R.left.field==="_rid"?"_rid":"SAFE_PREDICATE"}),d=[...new Set(s.targets.flatMap(E=>E.operations.map(R=>R.kind)))],c=d.includes("REMOVE"),u=_c.get(e),f=u?["parent selection: safe prefilter + JS residual evaluation",`kintone prefilter: ${u.prefilter===null?"(none; empty query)":W(u.prefilter)}`,"JS residual: original parent WHERE",`applied KLIKE: ${u.appliedKlikes.size}`,`unapplied KLIKE: ${u.unappliedKlikes.length}${u.unappliedKlikes.length>0?" (unsupported: cannot be fully applied to native query)":""}`,`candidate limit: maxRecords=${i}, onLimit=error, stopAfter=none`,`target guard: dmlMaxRows=${r} after JS residual evaluation`,"search abort: DML fail-closed (B7-P3; all surfaces, no surface gate)"]:[];return[...t?[t]:[],"statement: UPDATE APPLY",`target app: APP${e.appId}`,`parent selector: ${cn(e.where)}`,`parent cardinality: ${We(e.where)?"single":"multiple"}`,...f,`apply target: ${s.targets.map(E=>`${E.field} (${E.targetKind})`).join(" | ")}`,`operations: ${d.join(" | ")}`,`selector: ${p.join(" | ")}`,"snapshot evaluation: yes","inserted rows visible: no","revision guard: required","revision: unknown (records API not called)",`payload preservation: row ids=yes, row order=yes, unpatched cells=yes, remove tables=${c?"FULL_SURVIVORS":"none"}`,"post-image validation: required (B43 equivalent)","parent rows: unknown (records API not called)","matched subtable rows: unknown (records API not called)","validation errors: unknown (records API not called)",`deleted rows: ${c?"unknown (records API not called)":"0 (static without REMOVE)"}`,`dmlMaxRows: ${r}`,`dmlMaxSubtableRows: ${n}`,"MCP mutation: disabled in v1",...Vs(o)]}function Om(e,t){let r=[];return t&&r.push(t),r.push(" [DELETE]"),r.push(` target: APP${e.appId} (${e.appId})`),r.push(` kintone query: ${cn(e.where)}`),e.subtableCode||(r.push(" selection: exact native pushdown; JS residual none"),r.push(" search abort: DML fail-closed (SearchAbortedError; mutation 0)")),r.push(et(e.where)?" api: metadata validation only (records API access: none)":" api: GET /k/v1/records.json \u2192 DELETE /k/v1/records.json"),r}function Lm(e,t,r=rt,n=be){let i=e.values.length,o=Math.ceil(i/100),s=[...t?[t]:[]," [UPSERT]",` target: APP${e.appId} (${e.appId})`,` records: ${i} \u4EF6\uFF08\u30D0\u30C3\u30C1 ${o} \u56DE \xD7 \u6700\u5927 100 \u4EF6\uFF09`,` key fields: ${e.keyFields.join(", ")}`,` fields: ${e.fields.join(", ")}`,` api: GET /k/v1/records.json\uFF08\u91CD\u8907\u5224\u5B9A\uFF09\u2192 POST \u307E\u305F\u306F PUT /k/v1/records.json \xD7 ${o}`];return e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length?[...s,...Vs(oi(e,r,n))]:s}function Vs(e){let t=[`apply diagnostic: ${e.statementKind}`,`non-transactional: ${e.nonTransactional}`,`partial success: ${e.partialSuccess.possible?"possible":"none"}`];for(let r of e.branches){t.push(`apply branch: ${r.branch}`,` parent rows: ${r.parentRows===null?"unknown (records API not called)":r.parentRows}`,` chunks: ${r.chunk.plannedChunks===null?"unknown":r.chunk.plannedChunks} \xD7 max ${r.chunk.size}`,` revision guard: ${r.guards.revisionRequired?"required":"not required"}`);for(let n of r.targets)t.push(` target: ${n.field} (${n.targetKind})`,` operations: ${n.operations.map(i=>`${i.kind}=${i.count===null?"unknown":i.count}`).join(" | ")}`,` changed count: ${n.changedCount===null?"unknown":n.changedCount}`)}return t.push("records API: 0","mutation API: 0"),t}function _m(e,t,r,n){let i=[...t?[t]:[]," [UPSERT SELECT]",` target: APP${e.appId} (${e.appId})`,` key fields: ${e.keyFields.join(", ")}`,` fields: ${e.fields.join(", ")}`," api: GET /k/v1/records.json\uFF08\u91CD\u8907\u5224\u5B9A\uFF09\u2192 POST \u307E\u305F\u306F PUT /k/v1/records.json\uFF08100 \u4EF6\u3054\u3068\u306B\u30D0\u30C3\u30C1\uFF09",""];return i.push(...Ne(e.select,"[source SELECT]",r,n)),i}function vm(e,t){let r=`APP${e.appId}$${e.subtableCode}`,n=e.all?"\u5168\u89AA\u30EC\u30B3\u30FC\u30C9\u5BFE\u8C61":"WHERE \u6761\u4EF6\u306B\u4E00\u81F4\u3059\u308B\u89AA\u30EC\u30B3\u30FC\u30C9\u5BFE\u8C61",i=e.by.map(Dm).join(", "),o=[...t?[t]:[]," [REORDER]",` target: APP${e.appId} (${e.appId})`,` table: ${r}`,` scope: ${n}`,` by: ${i}`,et(e.where)?" api: metadata validation only (records API access: none)":" api: GET /k/v1/records.json\uFF08\u884C ID \u53D6\u5F97\uFF09\u2192 PUT /k/v1/records.json\uFF08id \u914D\u5217\u306E\u307F\u9001\u4FE1\uFF09"];return!e.all&&e.where&&o.splice(5,0,` where: ${cn(e.where)}`),o}function Dm(e){return`${e.key.type==="FIELD_NAME"?e.key.name:"(\u5F0F)"} ${e.direction}`}function cn(e){if(e.type==="BOOLEAN")return e.value?"TRUE":"FALSE (constant)";try{return W(e)}catch{return"(JS \u8A55\u4FA1\u304C\u5FC5\u8981\u306A\u305F\u3081 kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u4E0D\u53EF)"}}function km(e){let t=new Set;for(let{value:r}of e.assignments)r.type==="ARITH"&&Di(r,t),r.type==="STRING_FUNC"&&Di(r,t),(r.type==="SCALAR_ARITH"||r.type==="CONCAT_OP")&&rn(r,t);return[...t]}function Di(e,t){if(e.type==="FIELD_REF"){t.add(e.field);return}if(e.type==="ARITH"&&(Di(e.left,t),Di(e.right,t)),e.type==="STRING_FUNC")for(let r of e.args)r.type!=="AGG_REF"&&r.type!=="AGG_ARITH"&&rn(r,t)}async function Dc(e,t,r,n,i){let o=Ks(e),s=await de(e.appId,r,n),a=t.cteName,l=a!==null?new Map((i?.get(a)?.columns??[]).map(u=>[u,i?.get(a)?.columnMeta?.get(u)?.fieldType??(i?.get(a)?.columnMeta?.get(u)?.semantics?.compareMode==="number"?"NUMBER":"SINGLE_LINE_TEXT")])):await de(t.appId,r,n),p=new Set,d=new Set;for(let u of o){if(u.tableAlias!==null){if(u.tableAlias.toLowerCase()===`app${e.appId}`.toLowerCase()){if(u.field!=="$id"&&!s.has(u.field))throw ae(`CHECK \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u30D5\u30A3\u30FC\u30EB\u30C9 ${u.field} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093`);p.add(u.field)}else if(u.tableAlias.toLowerCase()===t.alias.toLowerCase()){if(u.field!=="$id"&&!l.has(u.field))throw ae(`CHECK \u306E\u30BD\u30FC\u30B9\u30D5\u30A3\u30FC\u30EB\u30C9 ${u.field} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093`);d.add(u.field)}else throw ae(`CHECK \u306E\u4FEE\u98FE\u5B50 ${u.tableAlias} \u306F\u66F4\u65B0\u5148\u307E\u305F\u306F FROM alias \u3067\u306F\u3042\u308A\u307E\u305B\u3093`);continue}let f=u.field==="$id"||s.has(u.field),E=u.field==="$id"||l.has(u.field);if(!f)throw ae(`UPDATE FROM \u306E CHECK \u3067\u306F\u30BD\u30FC\u30B9\u5217 ${u.field} \u3092\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044`);if(E)throw ae(`UPDATE FROM \u306E CHECK \u306E\u975E\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9 ${u.field} \u306F\u66D6\u6627\u3067\u3059`);p.add(u.field)}let c=new Map;for(let[u,f]of s)c.set(u,f),c.set(`APP${e.appId}.${u}`,f);c.set("$id","RECORD_NUMBER"),c.set(`APP${e.appId}.$id`,"RECORD_NUMBER");for(let[u,f]of l)c.set(`${t.alias}.${u}`,f);return{targetFields:[...p],sourceFields:[...d],evaluationTypes:c}}function Um(e,t,r){if(!e)return{};let n=Xe(e.target,null);return Object.fromEntries([...Object.entries(n),...Object.entries(n).map(([i,o])=>[`APP${t}.${i}`,o]),...Object.entries(e.source).map(([i,o])=>[`${r}.${i}`,o])])}function rn(e,t){if(e.type==="FIELD"){t.add(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field);return}if(e.type==="STRING_FUNC"){for(let r of e.args)r.type!=="AGG_REF"&&r.type!=="AGG_ARITH"&&rn(r,t);return}(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP")&&(rn(e.left,t),rn(e.right,t))}function Mm(e){let t=e.value;return t.type==="STRING"?`${e.field} = '${t.value}'`:t.type==="NUMBER"?`${e.field} = ${t.value}`:t.type==="ARITH"?`${e.field} = ${kc(t)}`:t.type==="CASE_VALUE"?`${e.field} = CASE WHEN ...`:t.type==="STRING_FUNC"?`${e.field} = ${t.func}(...)`:t.type==="SCALAR_SUBQUERY"?`${e.field} = (SELECT ...)`:t.type==="SOURCE_FIELD"?`${e.field} = ${t.alias}.${t.field}`:`${e.field} = (${t.type})`}function kc(e){return`${Ju(e.left)} ${e.op} ${Ju(e.right)}`}function Ju(e){return e.type==="FIELD_REF"?e.field:e.type==="NUMBER"?G(e):e.type==="ARITH"?`(${kc(e)})`:"..."}var Q=class extends Error{constructor(r,n){super(`${r} \u3092\u30AD\u30E3\u30F3\u30BB\u30EB\u3057\u307E\u3057\u305F\uFF08\u5BFE\u8C61: ${n} \u4EF6\uFF09`);this.operation=r;this.affectedCount=n;this.name="OperationCancelledError"}};var me=class extends Error{constructor(t,r,n){super(r),this.name="KsqlEngineError",this.code=t,n!==void 0&&(this.cause=n),Object.setPrototypeOf(this,new.target.prototype)}};function Dt(e){return new me("READ_ONLY_VIOLATION",e)}function Ws(e,t){return new me("PARSE_ERROR",e,t)}function Uc(){let e=new fr;return new me("SEARCH_ABORTED",e.message,e)}function mn(e){return e instanceof Error&&e.message.trim()!==""||e!==null&&typeof e=="object"&&typeof e.message=="string"?e.message:String(e)}function xm(e){if(e===null||typeof e!="object")return!1;let t=e;return typeof t.status=="number"||typeof t.response?.status=="number"||typeof t.code=="string"&&t.code.trim()!==""}function gn(e){return e instanceof me?e:e instanceof le||e instanceof S?new me("PARSE_ERROR",mn(e),e):e instanceof fr||e?.name==="SearchAbortedError"?new me("SEARCH_ABORTED",mn(e),e):e instanceof ye||e?.name==="FetchAllLimitError"?new me("FETCH_LIMIT_EXCEEDED",mn(e),e):e instanceof Error&&e.name==="ClientOperationError"&&"cause"in e?new me("CLIENT_ERROR",e.message,e.cause):xm(e)?new me("CLIENT_ERROR",mn(e),e):new me("EXECUTION_ERROR",mn(e),e)}var Fm=2,$i=5,Km=3e4,Bm=10*6e4+3e4,Gi=class{constructor(t,r={}){this.host=t;this.active=0;this.peak=0;this.quarantined=0;this.waiters=[];this.createTail=Promise.resolve();let n=r.maxActive??Fm;if(!Number.isSafeInteger(n)||n<1||n>$i)throw new Error(`ArgumentError: cursorMaxActive must be an integer from 1 to ${$i}.`);this.maxActive=n,this.waitTimeoutMs=r.waitTimeoutMs??Km,this.quarantineMs=r.quarantineMs??Bm}acquire(){return this.active<this.maxActive?(this.active+=1,this.peak=Math.max(this.peak,this.active),Promise.resolve(this.makeLease())):new Promise((t,r)=>{let n={};n.resolve=t,n.reject=r,n.timer=setTimeout(()=>{let i=this.waiters.indexOf(n);i>=0&&this.waiters.splice(i,1),r(new li(this.host,this.maxActive,this.waitTimeoutMs))},this.waitTimeoutMs),n.timer.unref?.(),this.waiters.push(n)})}setMaxActive(t){this.validateMaxActive(t),this.maxActive!==t&&(this.maxActive=t,this.dispatchWaiters())}async runCreate(t){let r=this.createTail,n;this.createTail=new Promise(i=>{n=i}),await r;try{return await t()}finally{n()}}snapshot(){return{active:this.active,peak:this.peak,quarantined:this.quarantined,waiting:this.waiters.length,limit:this.maxActive}}makeLease(){let t=!1;return{release:()=>{t||(t=!0,this.returnPermit())},quarantine:(r=this.quarantineMs)=>{if(t)return;t=!0,this.quarantined+=1,setTimeout(()=>{this.quarantined-=1,this.returnPermit()},r).unref?.()}}}returnPermit(){this.active-=1,this.dispatchWaiters()}dispatchWaiters(){for(;this.active<this.maxActive;){let t=this.waiters.shift();if(!t)return;clearTimeout(t.timer),this.active+=1,this.peak=Math.max(this.peak,this.active),t.resolve(this.makeLease())}}validateMaxActive(t){if(!Number.isSafeInteger(t)||t<1||t>$i)throw new Error(`ArgumentError: cursorMaxActive must be an integer from 1 to ${$i}.`)}};function $m(e){let t=e;return t?.status===404&&t.code==="GAIA_CN01"}async function Gm(e,t=n=>new Promise(i=>setTimeout(i,n)),r=$m){try{await e();return}catch(n){if(r(n))return}await t(250);try{await e()}catch(n){if(r(n))return;throw n}}async function Vm(e,t){let r,n=new Promise((i,o)=>{r=setTimeout(()=>o(new Error(`CursorCleanupTimeoutError: cleanup exceeded ${t}ms.`)),t),r.unref?.()});try{return await Promise.race([e,n])}finally{r&&clearTimeout(r)}}function Mc(e,t){let r=!1,n=!1,i=Promise.resolve(),o=null;return{totalCount:e,nextPage:()=>{if(n||r)return Promise.resolve({records:[],next:!1});let l=i.then(async()=>{if(n||r)return{records:[],next:!1};let p=await t.get();return p.next||(r=!0,t.onReleased?.()),p});return i=l.then(()=>{},()=>{}),l},close:()=>r?Promise.resolve():o||(n=!0,o=i.then(async()=>{if(!r)try{await Vm(Gm(t.delete,t.sleep,t.isAlreadyReleasedError),t.cleanupTimeoutMs??5e3),r=!0,t.onReleased?.()}catch(l){throw t.onReleaseUnknown?.(),l}}),o)}}function xc(e){return Fc(e,Hm(e))}function Fc(e,t,r=!1,n){let i=[];for(let o of Object.values(e)){let s=Ym(o.options),a=jm(o.type,o.format),l={code:o.code,label:o.label,fieldType:o.type,optionOrder:s,sortKind:a,required:o.required,minValue:Vi(o.minValue),maxValue:Vi(o.maxValue),minLength:Vi(o.minLength),maxLength:Vi(o.maxLength),defaultValue:o.defaultValue,inSubtable:r,...n?{subtableCode:n}:{},writable:!t.has(o.code)&&!Wm.has(o.type)};l.semantics=z(l),i.push(l),o.fields&&i.push(...Fc(o.fields,t,!0,o.type==="SUBTABLE"?o.code:n))}return i}var Wm=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE","SUBTABLE"]);function Hm(e){let t=new Set,r=n=>{for(let i of Object.values(n)){for(let o of i.lookup?.fieldMappings??[])o.field&&t.add(o.field);i.fields&&r(i.fields)}};return r(e),t}function Vi(e){return e==null||e===""?void 0:e}function Ym(e){if(!e||typeof e!="object")return;let t={},r=!1;for(let[n,i]of Object.entries(e)){let o=Number(i?.index);Number.isFinite(o)&&(t[n]=o,r=!0)}return r?t:void 0}function jm(e,t){if(e==="NUMBER"||e==="RECORD_NUMBER")return"number";if(e==="CALC")return t==="NUMBER"||t==="NUMBER_DIGIT"?"number":"string"}function Kc(e){return e===null?null:Object.values(e).map(t=>{let r=Number(t.index);if(!Number.isSafeInteger(r)||r<0)throw new Error(`ArgumentError: invalid process status index: ${String(t.index)}`);return{name:t.name,index:r}})}var qm="Filter aborted because of too many search results";function Bc(e){return e?.includes(qm)===!0}var $c="/k/v1/records.json",Wi="/k/v1/records/cursor.json",zm=4096,Xm=2,Hs=e=>kintone.api.url(e,!0);function Jm(e){let t={app:e.app,query:e.query,...e.fields.length>0?{fields:e.fields}:{}},n=kintone.api.urlForGet($c,t,!0),i={"X-Requested-With":"XMLHttpRequest"};return new TextEncoder().encode(n).byteLength<=zm?{url:n,init:{method:"GET",credentials:"include",headers:i}}:{url:Hs($c),init:{method:"POST",credentials:"include",headers:{...i,"X-HTTP-Method-Override":"GET","Content-Type":"application/json","X-Cybozu-Request-Token":kintone.getRequestToken()},body:JSON.stringify(t)}}}function hn(e){let t=e;if(e instanceof Error&&e.message.trim()!=="")return e;if(t===null||typeof t!="object"||typeof t.message!="string"||t.message.trim()===""){let o=new Error("\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u30A8\u30E9\u30FC: kintone \u304B\u3089\u306E\u5FDC\u7B54\u304C\u3042\u308A\u307E\u305B\u3093\uFF08\u30AA\u30D5\u30E9\u30A4\u30F3\u30FB\u901A\u4FE1\u906E\u65AD\u306E\u53EF\u80FD\u6027\uFF09");return Object.assign(o,{cause:e}),o}let r=t,n=[typeof r.code=="string"&&r.code!==""?`${r.message}\uFF08${r.code}\uFF09`:r.message];if(r.errors!==null&&typeof r.errors=="object")for(let[o,s]of Object.entries(r.errors)){let a=Array.isArray(s?.messages)?s.messages.filter(l=>typeof l=="string"):[];a.length>0&&n.push(`${o}: ${a.join(" / ")}`)}let i=new Error(n.join(`
12
- `));return typeof r.code=="string"&&r.code!==""&&(i.name=r.code),typeof r.code=="string"&&Object.assign(i,{code:r.code}),typeof r.status=="number"&&Object.assign(i,{status:r.status}),Object.assign(i,{cause:e}),i}async function Qm(e){try{let t=await e.json();if(t!==null&&typeof t=="object"){let n=t;return hn({code:n.code,message:n.message,errors:n.errors,status:e.status})}let r=new Error(`kintone API error: HTTP ${e.status}`);return Object.assign(r,{status:e.status,cause:t}),hn(r)}catch(t){let r=new Error(`kintone API error: HTTP ${e.status} \u306E\u5FDC\u7B54\u3092 JSON \u3068\u3057\u3066\u89E3\u6790\u3067\u304D\u307E\u305B\u3093`);return Object.assign(r,{status:e.status,cause:t}),hn(r)}}function Zm(e){let t=e;return t?.code==="GAIA_CN01"&&(t.status===404||t.status===void 0)}async function kt(e,t,r){try{return await kintone.api(Hs(e),t,r)}catch(n){throw hn(n)}}function eg(e){if(!Number.isSafeInteger(e)||e<1||e>5)throw new Error("ArgumentError: cursorMaxActive must be an integer from 1 to 5.")}function Gc(e={}){let t=e.cursorMaxActive??Xm;eg(t);let r=null,n=null,i=new Set;return{async getRecords(s){try{let a=Jm(s),l=await fetch(a.url,a.init);if(!l.ok)throw await Qm(l);let p=await l.json();return Bc(l.headers.get("X-Cybozu-Warning"))?{records:p.records,searchAborted:!0}:{records:p.records}}catch(a){throw hn(a)}},async openCursor(s){let a=Hs(Wi),l=new URL(a,globalThis.location?.href).host.toLowerCase();if(n!==null&&n!==l)throw new Error(`CursorRouteError: factory route changed from ${n} to ${l}.`);if(n=l,r??=new Gi(l,{maxActive:t}),r.snapshot().active>=t){let R=new Error(`CursorCapacityError: host=${l} \u306E active cursor \u4E0A\u9650 ${t} \u306B\u9054\u3057\u3066\u3044\u307E\u3059\u3002`);throw R.name="CursorCapacityError",R}let p=await r.acquire(),d;try{d=await r.runCreate(()=>kt(Wi,"POST",{app:s.app,query:s.query,size:s.size,fields:s.fields&&s.fields.length>0?s.fields:void 0}))}catch(R){throw typeof R?.code=="string"?(p.release(),R):(p.quarantine(),new ui(R))}let c=d.id,u=Mc(Number(d.totalCount),{get:()=>kt(Wi,"GET",{id:c}),delete:()=>kt(Wi,"DELETE",{id:c}),isAlreadyReleasedError:Zm,onReleased:()=>p.release(),onReleaseUnknown:()=>p.quarantine()}),f=null,E={totalCount:u.totalCount,async nextPage(){let R=await u.nextPage();return R.next||i.delete(E),R},close(){return f||(f=u.close().finally(()=>{i.delete(E)}),f)}};return i.add(E),E},async getApps(){let a=[],l=0;for(;;){let p=await kt("/k/v1/apps.json","GET",{limit:100,offset:l});for(let d of p.apps)a.push({appId:Number(d.appId),name:d.name,description:d.description});if(p.apps.length<100)break;l+=100}return a},async getFields(s){let a=await kt("/k/v1/app/form/fields.json","GET",{app:s});return xc(a.properties)},async getNumberPrecision(s){let a=await kt("/k/v1/app/settings.json","GET",{app:s});return kl(a)},async getProcessStatuses(s){let a=await kt("/k/v1/app/status.json","GET",{app:s,lang:"user"});return{enable:a.enable,states:Kc(a.states)}}}}var Vc=new Set(["postRecords","putRecords","deleteRecords"]),yn=class extends Error{constructor(t){let r=t instanceof Error?t.message:String(t);super(r),this.name="ClientOperationError",this.cause=t,Object.setPrototypeOf(this,new.target.prototype)}};async function Rt(e){try{return await e()}catch(t){throw new yn(t)}}function tg(e){return()=>{throw Dt(`${String(e)} is blocked by the readonly client`)}}function Ys(e){let t=e.getRecords.bind(e),r=e.openCursor.bind(e),n=e.getApps.bind(e),i=e.getFields.bind(e),o=e.getNumberPrecision.bind(e),s=e.getProcessStatuses.bind(e),a=Object.assign(Object.create(null),{getRecords:async l=>{let p=await Rt(()=>t(l));if(p.searchAborted===!0)throw Uc();return p},openCursor:async l=>{let p=await Rt(()=>r(l)),d=p.nextPage.bind(p),c=p.close.bind(p);return{totalCount:p.totalCount,nextPage:()=>Rt(()=>d()),close:()=>Rt(()=>c())}},getApps:()=>Rt(()=>n()),getFields:l=>Rt(()=>i(l)),getNumberPrecision:l=>Rt(()=>o(l)),getProcessStatuses:l=>Rt(()=>s(l))});return new Proxy(a,{get(l,p,d){return Vc.has(p)?tg(p):Reflect.get(l,p,d)},has(l,p){return Vc.has(p)?!1:Reflect.has(l,p)}})}function rg(e){let t=new Set,r=null;return{client:{getRecords:e.getRecords.bind(e),async openCursor(i){let o=await e.openCursor.call(e,i),s=null,a={totalCount:o.totalCount,nextPage:o.nextPage.bind(o),close(){return s||(s=Promise.resolve().then(()=>o.close()).finally(()=>{t.delete(a)}),s)}};return t.add(a),a},getApps:e.getApps.bind(e),getFields:e.getFields.bind(e),getNumberPrecision:e.getNumberPrecision.bind(e),getProcessStatuses:e.getProcessStatuses.bind(e)},close(){return r||(r=(async()=>{let o=(await Promise.allSettled([...t].map(s=>s.close()))).find(s=>s.status==="rejected");if(o)throw new yn(o.reason)})(),r)}}}async function js(e,t){let r=rg(e),n=!1;try{return await t(r.client)}catch(i){throw n=!0,i}finally{try{await r.close()}catch(i){if(!n)throw i}}}var Wc=new Set(["client","maxRecords","fetchParallel","cursorMaxActive"]),ng=new Set([...Wc,"onLimitReached"]);function ig(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new TypeError("options must be an object")}function qs(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new RangeError(`${t} must be a positive safe integer`)}function og(e){if(e===null||typeof e!="object")throw new TypeError("client is required");let t=e;for(let r of["getRecords","openCursor","getApps","getFields","getNumberPrecision","getProcessStatuses"])if(typeof t[r]!="function")throw new TypeError(`client.${r} must be a function`)}function zs(e,t){ig(e);let r=t==="run"?ng:Wc;for(let i of Reflect.ownKeys(e))if(typeof i!="string"||!r.has(i))throw new TypeError(`Unknown ${t==="run"?"runQuery":"explainQuery"} option: ${String(i)}`);if(og(e.client),e.maxRecords!==void 0&&qs(e.maxRecords,"maxRecords"),e.fetchParallel!==void 0&&qs(e.fetchParallel,"fetchParallel"),e.cursorMaxActive!==void 0&&(qs(e.cursorMaxActive,"cursorMaxActive"),e.cursorMaxActive>5))throw new RangeError("cursorMaxActive must be between 1 and 5");let n=e;if(t==="run"&&n.onLimitReached!==void 0&&n.onLimitReached!=="error"&&n.onLimitReached!=="truncate")throw new TypeError('onLimitReached must be "error" or "truncate"');return{client:e.client,executeOptions:{...e.maxRecords!==void 0?{maxRecords:e.maxRecords}:{},...e.fetchParallel!==void 0?{fetchParallel:e.fetchParallel}:{},...e.cursorMaxActive!==void 0?{cursorMaxActive:e.cursorMaxActive}:{},...t==="run"&&n.onLimitReached!==void 0?{onLimitReached:n.onLimitReached}:{}}}}function Hc(e,t={}){let r=new Ft(e).tokenize(),n=new Bt(r,t).parse();return tr(n),n}function Yc(e){if(e.trim()==="")throw Ws("SQL statement is empty");try{return Hc(e,{import:!0})}catch(t){let r=gn(t);throw r.code==="PARSE_ERROR"?r:Ws("SQL statement could not be parsed",t)}}function sg(e){if(e===null||typeof e!="object"||typeof e.type!="string")throw Dt("Unclassifiable statement branch is not allowed");return e.type}function Ut(e,t){let r=sg(e);switch(r){case"SELECT":return;case"SHOW_APPS":case"DESCRIBE":if(t==="run")return;break;case"WITH":{let n=e;if(!Array.isArray(n.ctes))throw Dt("WITH contains an unclassifiable CTE list");for(let i of n.ctes){if(i===null||typeof i!="object"||!("query"in i))throw Dt("WITH contains an unclassifiable CTE body");Ut(i.query,t)}Ut(n.query,t);return}case"UNION":{let n=e;Ut(n.left,t),Ut(n.right,t);return}default:break}throw Dt(`${r} statements are not allowed in ${t} queries`)}function ag(e){Ut(e,"run")}function jc(e){ag(Yc(e))}function qc(e){let t=e.trim(),r=Yc(t);return r.type==="EXPLAIN"?(Ut(r.query,"explain"),t):(Ut(r,"explain"),`EXPLAIN ${t}`)}function zc(e){return{recordGetCalls:e?.getCalls??0,fetchedRows:e?.fetchedRows??0,elapsedMs:e?.elapsedMs??0,cursorRecordsScanned:e?.cursorRecordsScanned??0}}function Xc(e){if(e===null||typeof e!="object"||e.type!=="SELECT")throw new Error("Engine returned a non-SELECT result")}function lg(e){return Object.fromEntries(Object.entries(e).map(([t,r])=>[t,String(r)]))}async function Jc(e,t){try{let r=zs(t,"run");jc(e);let n=await js(r.client,i=>Ps(e,Ys(i),r.executeOptions));return Xc(n),{type:"query",rows:n.rows.map(lg),columns:n.columns.map(i=>({name:i,valueType:"string"})),rowCount:n.rowCount,warnings:[...n.warnings??[]],metrics:zc(n.metrics)}}catch(r){throw gn(r)}}async function Qc(e,t){try{let r=zs(t,"explain"),n=await js(r.client,o=>Ps(qc(e),Ys(o),r.executeOptions));Xc(n);let i=n.rows.map(o=>String(o.plan??""));return{type:"explain",lines:i,text:i.join(`
13
- `),metrics:zc(n.metrics)}}catch(r){throw gn(r)}}var ug="3.19.0";0&&(module.exports={KsqlEngineError,createReadonlyKintoneClient,explainQuery,runQuery,version});
11
+ WHERE \u3092 AND \u306E\u5B89\u5168\u306A KLIKE \u6761\u4EF6\u3078\u66F8\u304D\u63DB\u3048\u308B\u304B\u3001SELECT \u3067\u78BA\u8A8D\u3057\u305F $id IN (...) \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002`;function Um(e){if(e.unappliedKlikes.length>0)throw new Error(`UnsupportedError: ${km}`)}async function Mm(e,t,r,n,i){let o=n.filter(E=>!E.inSubtable),a=new Map(o.map(E=>[E.code,E])),s=new Map(o.map(E=>[E.code,E.fieldType])),l=new Map(o.flatMap(E=>E.optionOrder?[[E.code,new Set(Object.keys(E.optionOrder))]]:[])),d=na(e.where,{fieldTypes:s,fieldOptions:l});Um(d);let p=d.prefilter===null?"":W(d.prefilter),c=new Set(ri(e,n));for(let E of xm(e.where))c.add(E);let u=await Fm(e.appId,e.where,a,t,i);return(await Ee(t.getRecords,e.appId,p,[...c],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1,onLimit:"error"})).map(E=>({snapshot:E,row:et(E,null)})).filter(({row:E})=>q(e.where,E,u.fieldTypeResolver,d.appliedKlikes,u.fieldSemanticsResolver)).map(({snapshot:E})=>E)}function xm(e){return $a(e)}async function Fm(e,t,r,n,i){let s=[...Km(t)].some(p=>r.get(p)?.fieldType==="STATUS")?await za(e,n,i):void 0;return{fieldTypeResolver:p=>p.field==="$id"?"NUMBER":r.get(p.field)?.fieldType,fieldSemanticsResolver:p=>{if(p.field==="$id")return sr(z({fieldType:"__ID__"}),e,"$id");let c=r.get(p.field);if(!c)return;let u=c.semantics??z(c),f=c.fieldType==="STATUS"&&s?{...u,optionOrder:s}:u;return sr(f,e,c.code)}}}function Km(e){let t=new Set,r=n=>{if(Array.isArray(n)){n.forEach(r);return}if(n===null||typeof n!="object")return;let i=n;if(i.type!=="SELECT"){if(i.type==="BINARY"&&[">","<",">=","<="].includes(String(i.op))){let o=i.left;o?.type==="FIELD"&&typeof o.field=="string"&&t.add(o.field)}Object.values(i).forEach(r)}};return r(e),t}function Bm(e,t,r){let n=t.validations.flatMap(p=>p.errors),i=t.validations.reduce((p,c)=>p+(c.invalidRows>0?1:0),0),o=t.validations[0]?.columns?[...t.validations[0].columns]:[...Me(r,e.fields).payloadFields,...Wr],a=t.guards.parentRows,s=ea(t),l=s.branches[0],d={type:"VALIDATION",operation:"INSERT",validatedRows:a,validRows:a-i,invalidRows:i,errorCount:n.length,columns:o,errors:n,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},apply:Rn(l),guards:mn(l),deletedRows:{total:0,parentRows:0},diagnostic:s};return gr.set(d,qi(o,r,e.appId)),d}function $m(e,t,r){let n=t.validations,i=n.flatMap(d=>d.errors),o=n.reduce((d,p)=>d+(p.invalidRows>0?1:0),0),a=n[0]?.columns?[...n[0].columns]:[...Me(r,e.assignments.map(d=>d.field)).payloadFields,...Wr],s=jr(t),l={type:"VALIDATION",operation:"UPDATE",validatedRows:t.guards.parentRows,validRows:t.guards.parentRows-o,invalidRows:o,errorCount:i.length,columns:a,errors:i,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},apply:Rn(s.branches[0]),guards:mn(s.branches[0]),deletedRows:{total:t.plans.reduce((d,p)=>d+p.tables.reduce((c,u)=>c+u.deletedRows,0),0),parentRows:t.plans.filter(d=>d.tables.some(p=>p.deletedRows>0)).length},diagnostic:s};return gr.set(l,qi(a,r,e.appId)),l}function Gm(e,t,r){let n=t.create.validations.flatMap(E=>E.errors),i=t.update.validations.flatMap(E=>E.errors),o=[...n,...i].map(E=>({...E,$err_operation:"UPSERT"})),a=new Set(o.map(E=>E.$err_row)).size,s=t.create.validations[0]?.columns??t.update.validations[0]?.columns??[...Me(r,e.fields).payloadFields,...Wr],l=ta(t),d=l.branches.find(E=>E.branch==="insert"),p=l.branches.find(E=>E.branch==="update"),c=Rn(d),u=Rn(p),f={type:"VALIDATION",operation:"UPSERT",validatedRows:t.guards.parentRows,validRows:t.guards.parentRows-a,invalidRows:a,errorCount:o.length,columns:[...s],errors:o,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},apply:[...c,...u],guards:{revisionRequired:t.guards.revisionRequired,parentRows:t.guards.parentRows,dmlMaxRows:t.guards.dmlMaxRows,subtableRows:t.guards.subtableRows,dmlMaxSubtableRows:t.guards.dmlMaxSubtableRows,wouldExceed:t.guards.wouldExceed},applyBranches:{create:{apply:c,guards:mn(d)},update:{apply:u,guards:mn(p)}},deletedRows:{total:t.update.plans.reduce((E,R)=>E+R.tables.reduce((h,m)=>h+m.deletedRows,0),0),parentRows:t.update.plans.filter(E=>E.tables.some(R=>R.deletedRows>0)).length},diagnostic:l};return gr.set(f,qi([...s],r,e.appId)),f}function Rn(e){return e.targets.map(t=>{let r=t.operations.map(n=>({kind:n.kind,...n.matchedRows!==void 0?{matchedRows:n.matchedRows??void 0}:{},...n.changedRows!==void 0?{changedRows:n.changedRows??void 0}:{},...n.addedRows!==void 0?{addedRows:n.addedRows??void 0}:{},...n.removedRows!==void 0?{removedRows:n.removedRows??void 0}:{},...n.value!==void 0?{value:n.value}:{},...n.changed!==void 0?{changed:n.changed}:{}}));return t.targetKind==="SUBTABLE"?{field:t.field,operations:r,changedSubtableRows:t.changedCount??0,deletedRows:vt(t,"REMOVE")}:{field:t.field,operations:r,changedSubtableRows:0,deletedRows:0,multiValue:{fieldType:t.fieldType??"UNKNOWN",addedValues:vt(t,"ADD"),removedValues:vt(t,"REMOVE_VALUE"),changedValues:t.changedCount??0,postImages:t.postImages??[]}}})}function mn(e){if(e.guards.parentRows===null||e.guards.subtableRows===null||e.guards.wouldExceed===null)throw new Error("InternalError: runtime APPLY diagnostic guard contains unknown counts.");return{revisionRequired:e.guards.revisionRequired,parentRows:e.guards.parentRows,dmlMaxRows:e.guards.dmlMaxRows,subtableRows:e.guards.subtableRows,dmlMaxSubtableRows:e.guards.dmlMaxSubtableRows,wouldExceed:e.guards.wouldExceed}}var ot=100,be=500;function Pe(e,t,r){let n=e??r;if(!Number.isSafeInteger(n)||n<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`);return n}function qi(e,t,r){let n=new Map(t.filter(a=>!a.inSubtable).map(a=>[a.code,a])),i=new Set(["$id","$err_statement","$err_row"]),o=new Map;for(let a of e){if(a==="$id"){o.set(a,{sortKind:"number",fieldType:"RECORD_NUMBER",semantics:z({fieldType:"RECORD_NUMBER"})});continue}let s=n.get(a);if(s){o.set(a,Ge(s,r));continue}o.set(a,Y(i.has(a)?"number":"string"))}return o}async function Vm(e,t,r,n,i,o){let a=await Kc(e,t,r,n,i,o),s=await de(e.appId,r,i),l=Uo(e,a,s),d=e.assignments.map(u=>u.field),p=await Q(e.appId,r,i),c=await it(e.appId,d,p,r,i);if(xt(l.flatMap(u=>u.records.map(f=>f.record)),d,p,c),n.confirm&&!await n.confirm(a.length,"UPDATE"))throw new Z("UPDATE",a.length);for(let u of l)await r.putRecords(u);return{type:"UPDATE",updatedCount:a.length}}function Wm(e){let t=new Set(["$id"]);e.from&&t.add(e.from.targetJoinField);let r=n=>{if(Array.isArray(n)){n.forEach(r);return}if(n===null||typeof n!="object")return;let i=n;i.type==="FIELD_REF"&&typeof i.field=="string"&&t.add(i.field);for(let o of Object.values(i))r(o)};for(let n of e.assignments)n.value.type!=="SOURCE_FIELD"&&r(n.value);return[...t]}async function Hm(e,t,r,n){if(await Er(e,t,n),nt(e.where))return{type:"DELETE",deletedCount:0};if(e.subtableCode)return zm(e,t,r,n);let i=_l(e),a=(await Ri(t.getRecords,i.app,i.query,{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1})).ids;if(r.confirm&&!await r.confirm(a.length,"DELETE"))throw new Z("DELETE",a.length);let s=Dl(e.appId,a);for(let l of s)await t.deleteRecords(l);return{type:"DELETE",deletedCount:a.length}}async function Ym(e,t,r,n){if(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length)return dm(e,t,r,n);if(e.checkGroups?.length)return Sn(e,t,r,n);let i=await ke(e.appId,e.fields,t,n),o=await it(e.appId,e.fields,i,t,n),a=[],s=[],l=await de(e.appId,t,n),d=Vc(e),p=await An(e.appId,e.keyFields,d,t,r,l);if(e.values.forEach((u,f)=>{let E={};e.fields.forEach((h,m)=>{let g=u[m];g.type==="CASE_VALUE"?E[h]={value:Et(g.expr,{},l.get(h))}:E[h]={value:Je(g,l.get(h))}});let R=yn(p,d[f]);R!==void 0?s.push({id:R,record:E}):a.push(E)}),xt([...a,...s.map(u=>u.record)],e.fields,i,o),r.confirm&&a.length+s.length>0){let u=a.length+s.length;if(!await r.confirm(u,"UPDATE"))throw new Z("UPDATE",u)}let c=[];for(let u=0;u<a.length;u+=100){let f=await t.postRecords({app:e.appId,records:a.slice(u,u+100)});c.push(f.ids)}for(let u=0;u<s.length;u+=100)await t.putRecords({app:e.appId,records:s.slice(u,u+100)});return{type:"UPSERT",insertedCount:c.flat().length,updatedCount:s.length}}function Vc(e){return e.values.map(t=>e.keyFields.map(r=>{let n=e.fields.indexOf(r);if(n===-1)throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${r}\u300D\u304C INSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let i=t[n];return i.type==="STRING"?i.value:i.type==="NUMBER"?G(i):i.type==="CASE_VALUE"?we(i.expr,{}):i.elements.map(o=>o.value).join(",")}))}async function Za(e,t,r,n){if(t.length===0)return;let i=await de(e,r,n);return o=>{if(o.tableAlias!==null&&o.tableAlias!=="_p")return;if(o.tableAlias==="_p")return i.get(o.field);let a=o.field.startsWith("_p.")?o.field.slice(3):o.field;return i.get(a)}}async function jm(e,t,r,n){let i=e.subtableCode,o=e.fields.indexOf("_pid");if(o<0)throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB INSERT \u306B\u306F _pid \u304C\u5FC5\u9808\u3067\u3059");let a=await Ee(t.getRecords,e.appId,"",[],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1}),s=zi(a),l=new Map;for(let p of e.values){let c=Ec(p[o]);if(!s.get(c))throw new Error(`_pid=${c} \u306E\u89AA\u30EC\u30B3\u30FC\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093`);let f={value:{}};e.fields.forEach((R,h)=>{if(R!=="_pid"){if(R.startsWith("_"))throw new Error(`\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB INSERT \u3067\u30B7\u30B9\u30C6\u30E0\u5217\u300C${R}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`);f.value[R]={value:Ec(p[h])}}});let E=l.get(c);E?E.push(f):l.set(c,[f])}let d=[];for(let[p,c]of l.entries()){let u=s.get(p),E=[...Tn(u,i),...c];d.push(Wc(e.appId,p,wn(u),i,E))}for(let p of d)await t.putRecords(p);return{type:"INSERT",createdIds:[],insertedCount:e.values.length}}async function qm(e,t,r,n){let i=e.subtableCode;if(!ln(e.where))throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u306F _rid \u6761\u4EF6\u304C\u5FC5\u9808\u3067\u3059");let o=[];rt(e.where,o);for(let u of e.assignments)u.value.type==="CASE_VALUE"&&xi(u.value.expr,o);let a=await Za(e.appId,o,t,n),s=await Ee(t.getRecords,e.appId,"",[],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1}),d=es(s,i).filter(u=>q(e.where,u.flat,a));if(r.confirm&&!await r.confirm(d.length,"UPDATE"))throw new Z("UPDATE",d.length);let p=new Map;for(let u of d){if(!u.rowId)throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u5BFE\u8C61\u306B id \u672A\u63A1\u756A\u306E\u884C\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059");let f=p.get(u.parentId);f||(f=new Map,p.set(u.parentId,f));let E={};for(let R of e.assignments){if(R.field.startsWith("_"))throw new Error(`\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u3067\u30B7\u30B9\u30C6\u30E0\u5217\u300C${R.field}\u300D\u306F\u66F4\u65B0\u3067\u304D\u307E\u305B\u3093`);E[R.field]={value:ti(R.value,u.flat,a)}}f.set(u.rowId,E)}let c=zi(s);for(let[u,f]of p.entries()){let E=c.get(u);if(!E)continue;let h=Tn(E,i).map(m=>{let g=m.id??"";if(!g)return m;let T=f.get(g);return T?{id:g,value:T}:{id:g}});await t.putRecords(Xm(e.appId,u,wn(E),i,h))}return{type:"UPDATE",updatedCount:d.length}}async function zm(e,t,r,n){let i=e.subtableCode;if(!ln(e.where))throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB DELETE \u306B\u306F _rid \u6761\u4EF6\u304C\u5FC5\u9808\u3067\u3059");let o=[];rt(e.where,o);let a=await Za(e.appId,o,t,n),s=await Ee(t.getRecords,e.appId,"",[],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1}),d=es(s,i).filter(u=>q(e.where,u.flat,a));if(r.confirm&&!await r.confirm(d.length,"DELETE"))throw new Z("DELETE",d.length);let p=new Map;for(let u of d){let f=p.get(u.parentId);f?f.push(u.rowIndex):p.set(u.parentId,[u.rowIndex])}let c=zi(s);for(let[u,f]of p.entries()){let E=c.get(u);if(!E)continue;let R=Tn(E,i),h=new Set(f),m=R.filter((g,T)=>!h.has(T));await t.putRecords(Wc(e.appId,u,wn(E),i,m))}return{type:"DELETE",deletedCount:d.length}}function zi(e){let t=new Map;for(let r of e){let n=String(r.$id?.value??"");n&&t.set(n,r)}return t}function es(e,t){let r=[];for(let n of e){let i=String(n.$id?.value??""),o=wn(n),a=Tn(n,t);for(let s=0;s<a.length;s++){let l=a[s],d={...ni(l,s),_pid:i};for(let[p,c]of Object.entries(n))p!==t&&(d[`_p.${p}`]=Ma(c?.value));r.push({parent:n,parentId:i,parentRevision:o,rowIndex:s,rowId:l.id??"",row:l,flat:d})}}return r}function Tn(e,t){let r=e[t]?.value;return Array.isArray(r)?r:[]}function wn(e){let t=Number(e.$revision?.value??0);return Number.isFinite(t)?t:0}function Wc(e,t,r,n,i){return{app:e,records:[{id:Number(t),revision:r,record:{[n]:{value:i}}}]}}function Xm(e,t,r,n,i){return{app:e,records:[{id:Number(t),revision:r,record:{[n]:{value:i}}}]}}function Jm(e,t,r,n,i){if(i.some(o=>!o))throw new Error("REORDER \u5BFE\u8C61\u306B id \u672A\u63A1\u756A\u306E\u884C\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059");return{app:e,records:[{id:Number(t),revision:r,record:{[n]:{value:i.map(o=>({id:o}))}}}]}}function Ec(e){return e.type==="STRING"?e.value:e.type==="NUMBER"?G(e):e.type==="CASE_VALUE"?we(e.expr,{}):e.elements.map(t=>t.value).join(",")}function Ma(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return String(e);try{return JSON.stringify(e)}catch{return String(e)}}function ln(e){switch(e.type){case"BINARY":return e.left.type==="FIELD"&&e.left.tableAlias===null&&e.left.field==="_rid";case"LOGICAL":return ln(e.left)||ln(e.right);case"NOT":case"GROUP":return ln(e.expr);default:return!1}}async function Qm(e,t,r,n){let i=[];rt(e.where,i);let o=await Za(e.appId,i,t,n),a=await Q(e.appId,t,n);if(nt(e.where))return{type:"REORDER",reorderedParentCount:0};let s=new Map(a.map(f=>[f.code,f.semantics??z(f)])),l=f=>{if(f.field==="_idx"||f.field==="_pid"||f.field==="_rid")return x("number");let E=f.field.startsWith("_p.")?f.field.slice(3):f.field;return s.get(E)??x("string")},d=await Ee(t.getRecords,e.appId,"",[],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1}),p=es(d,e.subtableCode),c=e.all?new Set(d.map(f=>String(f.$id?.value??"")).filter(f=>f!=="")):new Set(p.filter(f=>e.where&&q(e.where,f.flat,o,void 0,l)).map(f=>f.parentId));if(r.confirm&&!await r.confirm(c.size,"UPDATE"))throw new Z("UPDATE",c.size);let u=zi(d);for(let f of c){let E=u.get(f);if(!E)continue;let h=Tn(E,e.subtableCode).map((g,T)=>({row:g,i:T,flat:Zm(E,e.subtableCode,g,T)}));h.sort((g,T)=>eh(g.flat,T.flat,e.by,l));let m=h.map(g=>g.row.id??"");await t.putRecords(Jm(e.appId,f,wn(E),e.subtableCode,m))}return{type:"REORDER",reorderedParentCount:c.size}}function Zm(e,t,r,n){let i={_pid:String(e.$id?.value??""),_rid:r.id??"",_idx:String(n)};for(let[o,a]of Object.entries(e))o!==t&&(i[`_p.${o}`]=Ma(a?.value));for(let[o,a]of Object.entries(r.value??{}))i[o]=Ma(a?.value);return i}function eh(e,t,r,n){for(let i of r){let o=Rc(i.key,e),a=Rc(i.key,t),s=i.key.type==="FIELD_NAME"?n(De(i.key.name)):i.key.type==="ARITH_KEY"?x("number"):i.key.type==="FUNC_KEY"?kt(i.key.expr).semantics??x("string"):x("number"),l=It(o,a,s??x("string"));if(l!==0)return i.direction==="ASC"?l:-l}return 0}function Rc(e,t){switch(e.type){case"FIELD_NAME":return t[e.name]??"";case"ARITH_KEY":return String(ee(e.expr,t));case"FUNC_KEY":return te(e.expr,t);case"GROUPING_KEY":throw new Error("ArgumentError: GROUPING() is not supported in REORDER BY.")}}async function Hc(e,t,r,n,i){if(e.checkGroups?.length)return Sn(e,t,r,n,i);let o=await ke(e.appId,e.fields,t,n),a=await it(e.appId,e.fields,o,t,n),s=await Qa.materialize(e,t,r,n,i,o),{rows:l,columns:d}=s;if(Bc(s),d.length!==e.fields.length){let m=d.length===0&&l.length===0?"\u3002\u7D50\u679C\u304C 0 \u884C\u306E\u305F\u3081\u5217\u3092\u7279\u5B9A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08SELECT * \u3092\u7A7A\u30BD\u30FC\u30B9\u306B\u4F7F\u3046\u3068\u5217\u3092\u6C7A\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002\u660E\u793A\u5217\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF09":"";throw new Error(`SELECT \u306E\u5217\u6570\uFF08${d.length}\uFF09\u3068 UPSERT \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u6570\uFF08${e.fields.length}\uFF09\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093${m}`)}for(let m of e.keyFields)if(!e.fields.includes(m))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${m}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let p=[],c=[],u=await de(e.appId,t,n),f=l.map((m,g)=>{let T={};return e.fields.forEach((S,P)=>{if(s.importPresence&&!s.importPresence[g]?.has(S))return;let w=m[d[P]]??"";T[S]={value:Uc(w,u.get(S))}}),T});f.forEach(m=>xt([m],e.fields.filter(g=>g in m),o,a));let E=f.map(m=>e.keyFields.map(g=>String(m[g]?.value??"")));if(Vi.has(e)){let m=e.keyFields.map(T=>u.get(T)==="NUMBER"),g=new Set;for(let T of E){let S=Mt(T,m);if(g.has(S))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");g.add(S)}}let R=await An(e.appId,e.keyFields,E,t,r,u);if(f.forEach((m,g)=>{let T=yn(R,E[g]);T!==void 0?c.push({id:T,record:m}):p.push(m)}),r.confirm&&p.length+c.length>0){let m=p.length+c.length;if(!await r.confirm(m,"UPDATE"))throw new Z("UPDATE",m)}let h=[];for(let m=0;m<p.length;m+=100){let g=await t.postRecords({app:e.appId,records:p.slice(m,m+100)});h.push(g.ids)}for(let m=0;m<c.length;m+=100)await t.putRecords({app:e.appId,records:c.slice(m,m+100)});return{type:"UPSERT",insertedCount:h.flat().length,updatedCount:c.length}}async function Yc(e){let t=await e.getApps(),r=["\u30A2\u30D7\u30EAID","\u30A2\u30D7\u30EA\u540D","\u8AAC\u660E"],n=t.map(i=>({\u30A2\u30D7\u30EAID:String(i.appId),\u30A2\u30D7\u30EA\u540D:i.name,\u8AAC\u660E:i.description}));return{type:"SELECT",rows:n,columns:r,rowCount:n.length}}async function jc(e,t,r){let n=await Q(e.appId,t,r),i=["\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9","\u30E9\u30D9\u30EB","\u30BF\u30A4\u30D7"],o=n.map(a=>({\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9:a.code,\u30E9\u30D9\u30EB:a.label,\u30BF\u30A4\u30D7:a.fieldType}));return{type:"SELECT",rows:o,columns:i,rowCount:o.length}}function th(e,t=!1){try{let r=new Wt(e).tokenize(),n=new Yt(r,{import:t}).parse();return Un("phase15b",n),or(n),n}catch(r){throw r instanceof le||r instanceof A,r}}async function hn(e,t,r,n,i){let o=[];ki(e,t,r,n,o,i),await Promise.all(o)}async function qc(e,t,r,n,i){let o=[];for(let a of e.columns)if(a.type==="CASE_COL")for(let s of a.expr.branches)o.push(hn(s.condition,t,r,n,i));await Promise.all(o)}function un(e,t,r,n,i){return i!==void 0&&i.size>0?Ut(e,t,r,i,n):yt(e,t,r,n)}function ki(e,t,r,n,i,o){if(e!==null)switch(e.type){case"BINARY":{let a=e.right;a.type==="SUBQUERY_IN_LIST"&&i.push(un(a.query,t,r,n,o).then(s=>{let l=a.column??s.columns[0]??"";a.resolved=new Set(s.rows.map(d=>d[l]??""))})),a.type==="SCALAR_SUBQUERY"&&i.push(un(a.query,t,r,n,o).then(s=>{if(s.rowCount===0)throw new Error("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u5024\u3092\u8FD4\u3057\u307E\u305B\u3093\u3067\u3057\u305F");if(s.rowCount>1)throw new Error("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u8907\u6570\u884C\u3092\u8FD4\u3057\u307E\u3057\u305F\uFF081\u884C\u306E\u307F\u8A31\u53EF\uFF09");let l=s.columns[0]??"";a.resolved=s.rows[0]?.[l]??""}));break}case"LOGICAL":ki(e.left,t,r,n,i,o),ki(e.right,t,r,n,i,o);break;case"NOT":case"GROUP":ki(e.expr,t,r,n,i,o);break;case"EXISTS":{let a=e;i.push(un(a.query,t,r,n,o).then(s=>{a.resolved=s.rowCount>0}));break}case"BOOLEAN":break}}async function zc(e,t,r,n){for(let i of e){if(i.value.type!=="SCALAR_SUBQUERY")continue;let o=await yt(i.value.query,t,r,n);if(o.rowCount===0)throw new Error(`SET \u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u5024\u3092\u8FD4\u3057\u307E\u305B\u3093\u3067\u3057\u305F\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9: ${i.field}\uFF09`);if(o.rowCount>1)throw new Error(`SET \u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u8907\u6570\u884C\u3092\u8FD4\u3057\u307E\u3057\u305F\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9: ${i.field}\uFF09`);let a=o.columns[0]??"",s=o.rows[0]?.[a]??"";i.value={type:"STRING",value:s}}}async function Xc(e,t,r,n,i){let o=new Map,a=[];for(let d=0;d<e.length;d++){let p=e[d];if(p.type!=="SCALAR_SUBQUERY_COL")continue;let c=JSON.stringify(p.query),u=o.get(c);u||(u=un(p.query,t,r,n,i).then(f=>{if(f.rowCount===0)throw new Error("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u5024\u3092\u8FD4\u3057\u307E\u305B\u3093\u3067\u3057\u305F");if(f.rowCount>1)throw new Error("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u8907\u6570\u884C\u3092\u8FD4\u3057\u307E\u3057\u305F\uFF081\u884C\u306E\u307F\u8A31\u53EF\uFF09");let E=f.columns[0]??"";return f.rows[0]?.[E]??""}),o.set(c,u)),a.push([d,u])}let s=await Promise.all(a.map(([,d])=>d)),l=new Map;return a.forEach(([d],p)=>l.set(d,s[p])),l}var Jc=new WeakMap,Qc=new WeakMap;async function rh(e,t,r,n=1e4,i){let o=new Set,a=new Set,s=new Set,l={...t,getFields:async R=>(o.add(R),t.getFields(R)),getProcessStatuses:async R=>(a.add(R),t.getProcessStatuses(R)),getNumberPrecision:async R=>(s.add(R),t.getNumberPrecision(R))},d=new Map,p=new Map,c=new Set,u=i??await Fa(e,l,r),f=R=>u.nodes.find(h=>h.source===R||JSON.stringify(h.source)===JSON.stringify(R)),E=async R=>{if(R===null||typeof R!="object"||c.has(R))return;if(c.add(R),Array.isArray(R)){await Promise.all(R.map(E));return}let h=R;if(h.type==="SELECT"){let m=R;await Hi(m,l,r);let g=[m.from,...m.joins.map(w=>w.table)].filter(w=>w.cteName===null).map(w=>w.appId);(Fe(m.where)||m.orderBy.length>0||m.columns.some(w=>w.type==="WINDOW_COL"&&w.orderBy.length>0))&&g.forEach(w=>o.add(w));let S=await dn(m,l,r),P=f(m);if(S.capability==="UNSUPPORTED"&&!P)throw new Error(`ArgumentError: WHERE predicate is unsupported (${Dt(S)}).`);if(d.set(m,S),m.orderBy.length>0||m.columns.some(w=>w.type==="WINDOW_COL"&&w.orderBy.length>0)){let w=await En(m,l,r);if(m.orderMode!=="KINTONE_NATIVE")for(let I of w.semantics.values())I.fieldType==="STATUS"&&I.source&&a.add(I.source.appId);let _=[m.from,...m.joins.map(I=>I.table)].some(I=>I.cteName!==null);if(Ui(m)&&!_&&P?.allowed!==!1){let I=S.capability==="EXACT_PUSHDOWN"?Ce(m):"FULL_SCAN";p.set(m,(m.orderMode==="KINTONE_NATIVE"?zr:qr)({stmt:m,staticMode:I,whereCapability:S.capability,whereReasons:S.reasons,orderSemantics:w.semantics,maxRecords:n,hasKlike:oe(m.where)}))}}}else if(h.type==="VALIDATE"){let m=R;o.add(m.appId);let g=await Q(m.appId,l,r),T=new Map(g.filter(N=>!N.inSubtable).map(N=>[N.code,N])),S=new Set(g.filter(N=>N.inSubtable).map(N=>N.code)),P=Xo(m,g),w=lr(m.checkGroups??[]),_=$a(m.where);for(let N of w){if(N.field!=="$id"&&!T.has(N.field)&&!S.has(N.field))throw se(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${N.field} \u306F APP${m.appId} \u306B\u5B58\u5728\u3057\u307E\u305B\u3093`);if(N.field!=="$id"&&!T.has(N.field)&&S.has(N.field))throw new Error(`ArgumentError: VALIDATE \u306E CHECK \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${N.field} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}for(let N of _){if(N!=="$id"&&!T.has(N)&&!S.has(N))throw new Error(`ArgumentError: WHERE field ${N} does not exist in APP${m.appId}.`);if(N!=="$id"&&!T.has(N)&&S.has(N))throw new Error(`ArgumentError: VALIDATE \u306E WHERE \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${N} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let I=new Map([...T].map(([N,v])=>[N,v.fieldType]));I.set("$id","RECORD_NUMBER"),Ft(m,I);let k=Lt(m.where,N=>N.field==="$id"?z({fieldType:"__ID__"}):T.get(N.field)?.semantics??(T.has(N.field)?z(T.get(N.field)):void 0));if(k.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Dt(k)}).`);let C=new Map([...T].map(([N,v])=>[N,v.fieldType])),y=new Map([...T.values()].flatMap(N=>N.optionOrder?[[N.code,new Set(Object.keys(N.optionOrder))]]:[])),O=m.where===null?null:k.capability==="EXACT_PUSHDOWN"?m.where:er(m.where,{allowUnqualifiedFields:!0,fieldTypes:C,fieldOptions:y,allowKlike:!1}),L=P.some(N=>N.field.fieldType==="NUMBER");L&&(s.add(m.appId),await He(m.appId,l,r)),Jc.set(m,{targetFields:P.map(N=>N.subtableCode?`${N.subtableCode}(${N.field.code})`:N.field.code),fetchFields:[...new Set(["$id",...P.map(N=>N.subtableCode??N.field.code),..._,...w.map(N=>N.field)])],subtables:new Map([...new Set(P.flatMap(N=>N.subtableCode?[N.subtableCode]:[]))].map(N=>[N,P.filter(v=>v.subtableCode===N).length])),capability:k,prefilter:O,numberPrecision:L})}else if(h.type==="UPDATE"||h.type==="DELETE"){if(o.add(R.appId),h.type==="UPDATE"&&R.applyBlocks?.length){let g=R,T=await Q(g.appId,l,r);if(Qe(g,T),$i(g)){let S=T.filter(w=>!w.inSubtable),P=na(g.where,{fieldTypes:new Map(S.map(w=>[w.code,w.fieldType])),fieldOptions:new Map(S.flatMap(w=>w.optionOrder?[[w.code,new Set(Object.keys(w.optionOrder))]]:[]))});Qc.set(g,P)}}let m=R;(m.type!=="UPDATE"||!$i(m))&&f(m)?.allowed!==!1&&await Er(m,l,r)}await Promise.all(Object.values(h).map(E))};if(await E(e),typeof e=="object"&&e!==null&&e.type==="WITH"&&ut(e)){let R=ct(e),h=await dn(R,l,r),m=f(R);if(h.capability==="UNSUPPORTED"&&!m)throw new Error(`ArgumentError: WHERE predicate is unsupported (${Dt(h)}).`);if(d.set(R,h),Ui(R)&&m?.allowed!==!1){let g=await En(R,l,r);p.set(R,(R.orderMode==="KINTONE_NATIVE"?zr:qr)({stmt:R,staticMode:h.capability==="EXACT_PUSHDOWN"?Ce(R):"FULL_SCAN",whereCapability:h.capability,whereReasons:h.reasons,orderSemantics:g.semantics,maxRecords:n,hasKlike:oe(R.where)}))}}return{capabilities:d,orderPlans:p,fieldApps:o,processStatusApps:a,numberPrecisionApps:s,relativeDatePlan:u}}function mc(e){return[...[...e.fieldApps].sort((t,r)=>t-r).map(t=>` metadata API: form definition APP${t}`),...[...e.processStatusApps].sort((t,r)=>t-r).map(t=>` metadata API: process status APP${t}`),...[...e.numberPrecisionApps].sort((t,r)=>t-r).map(t=>` metadata API: number precision APP${t}`)]}function nh(e){if(!e.hasRelativeDate)return[];if(!e.allowed&&e.rejection)return[` relative date function: ${e.rejection.functionName}`," plan status: rejected",` reason: ${e.rejection.reasonCodes.join(", ")}`," client evaluation: forbidden"," records/cursor/mutation API during EXPLAIN: none"];let t=[];for(let r of e.nodes)for(let n of r.functionNames){let i=r.capability?.reasons.find(o=>o.functionName===n);t.push(` relative date function: ${n}`," evaluation: kintone server",` field: ${i?.field??"(unknown)"} (${i?.fieldType??"unknown"})`,` operator: ${i?.operator??"(unknown)"}`,` where capability: ${r.capability?.capability??"(unknown)"}`," client evaluation: forbidden",` kintone query: ${r.restQuery||"(\u306A\u3057)"}`)}return t}async function ih(e,t,r,n,i,o=100,a=be,s){let l=s??await Fa(e.query,t,r),d=await rh(e.query,t,r,n,l),p=nh(l),c=l.hasRelativeDate&&!l.allowed?[...mc(d),...p]:[...mc(d),...p,...oh(Zc(e.query,void 0,d.capabilities,d.orderPlans,o,a,n),i)];return{type:"SELECT",columns:["plan"],rows:c.map(u=>({plan:u})),rowCount:c.length}}function oh(e,t){let r=[];for(let n of e)if(r.push(n),n.trim()==="cursor page size: 500"){let i=n.match(/^\s*/)?.[0]??"";r.push(`${i}cursor concurrency: ${t} per domain (process-local)`)}return r}function Zc(e,t,r,n,i=100,o=be,a=1e4){if(e.type==="UNION")return sh(e,r,n);if(e.type==="WITH")return lh(e,r,n);if(e.type==="INSERT")return ph(e,t,i,o);if(e.type==="INSERT_SELECT")return dh(e,t,r,n);if(e.type==="UPSERT")return mh(e,t,i,o);if(e.type==="UPSERT_SELECT")return hh(e,t,r,n);if(e.type==="UPDATE")return fh(e,t,r,n,i,o,a);if(e.type==="DELETE")return Rh(e,t);if(e.type==="REORDER")return gh(e,t);if(e.type==="VALIDATE")return ah(e,t);if(e.type==="IMPORT"){if(e.writeMode==="UPDATE_RECORD_NUMBER"){let d=e.targets?.filter(p=>p.kind==="SUBTABLE")??[];return[...t?[t]:[],`IMPORT UPDATE INTO APP${e.appId}`," writeMode: UPDATE_RECORD_NUMBER",` source: CSV ${e.source.sourceName}`,` keyHeader: ${e.recordNumberSourceHeader}`," mapping: BY_NAME"," parentRows: requires source load"," duplicate: preflight before lookup/write"," matched: requires lookup"," unmatched: requires lookup"," invalid: requires source load"," requiresLookup:true"," inserted: 0"," keyInPayload: false",...d.length?[` replaceSubtables: ${e.replaceSubtables?.join(", ")??"ERROR: required"}`," subtableRowIdPolicy: PRESERVE existing; empty/unknown add without id"," rowIdOwnership: owned elsewhere invalidates the parent"," replacementDiff: existing/input/update/add/delete/rowIdNotFound requires actual-data preflight",' confirmPolicy: highest warning "\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5168\u7F6E\u63DB\u30FBN\u884C\u524A\u9664" plus per-table detail (including delete=0)']:[],` disposition: ${e.validateOnly?"VALIDATE ONLY":e.onErrorSkip?`ON ERROR SKIP INTO ${e.errorTable}`:"fail-fast"}`," gate: enabled for this parse",` writesKintone: ${e.validateOnly?"false":"true"}`]}let s=e.keyFields?"UPSERT":"INSERT",l=e.targets?.some(d=>d.kind==="SUBTABLE")===!0;return[...t?[t]:[],`IMPORT ${s} INTO APP${e.appId}`,` source: ${e.source.kind} ${e.source.sourceName}`,` sourceFormat: ${e.source.kind}`,` encoding: ${e.source.kind==="JSON"?"UTF8 only":e.source.encoding??"UTF8 (or loader metadata)"}`,` mapping: ${e.source.kind==="JSON"?"BY NAME (INTO order)":e.source.projection?"SELECT expressions":e.source.mappingMode}`,...e.source.kind==="JSON"?[" duplicateKeyPolicy: reject"," numberLexemePolicy: preserve; JSON number accepts safe integer only"," precisionTargetsRequireString: true"," unknownKeyPolicy: reject"," presenceAware: true",...l?[" subtableRowIdPolicy: reject _rid/id; DROP IDs and renumber every input row"," subtableUpdatePolicy: present table replaces all rows; missing table is preserved; [] deletes all rows"," confirmPolicy: parent/table existing/input/add/delete detail required; delete is highest warning"]:[]]:[` header: ${e.source.hasHeader?"HEADER":"NO HEADER"}`,...e.source.mappingMode==="BY_NAME"?[` writtenColumns: ${e.fields.join(", ")}`," knownExportColumns: audit and ignore with reason/non-empty count",` unknownColumnPolicy: ${e.source.ignoreUnknownColumns?"ignore with audit/non-empty count":"ERR_IMPORT_UNKNOWN_COLUMN"}`," multipleValueDelimiter: LF (CRLF or LF)"," sourceValueMode: string-preserving"," roundTripNumericGuarantee: exact CSV lexeme passes strict decimal validation"," FILE: audit-ignore unless named in INTO (analyze error)"]:[]],` sourceLimit: 10485760 bytes / ${e.fields.length} target columns`,` key: ${e.keyFields?.join(", ")??"none"}`,` checks: ${e.checkGroups?.length??0}`,` disposition: ${e.validateOnly?"VALIDATE ONLY":e.onErrorSkip?`ON ERROR SKIP INTO ${e.errorTable}`:"fail-fast"}`," gate: enabled for this parse",` preflight: ${e.validateOnly&&l?"requires actual source load at execution; this EXPLAIN is static":"requires load"}`,...l?[e.source.kind==="JSON"?" Phase5C: JSON mutation requires detail-capable confirmation surface":" Phase5D: CSV mutation requires detail-capable confirmation surface"]:[],` writesKintone: ${e.validateOnly?"false":"true"}`," duplicateKey: preflight before lookup/write (requires load)"]}return _e(e,t,r,n)}function ah(e,t){let r=Jc.get(e),n=[];return t&&n.push(t),n.push(`VALIDATE APP${e.appId}`),n.push(" operation: read-only existing-record constraint audit (writesKintone=false)"),n.push(" fetch API: GET records via offset + $id keyset paging (Cursor API unused)"),n.push(" complete input: required (onLimit=truncate disabled)"),r?(n.push(` WHERE capability: ${r.capability.capability}`),n.push(` kintone query: ${r.prefilter===null?"(\u5168\u4EF6\u53D6\u5F97)":W(r.prefilter)}`),n.push(` audit fields: ${r.targetFields.length===0?"(\u306A\u3057)":r.targetFields.join(", ")}`),n.push(` fetch fields: ${r.fetchFields.join(", ")}`),n.push(` mode: ${e.summary?"SUMMARY":"DETAIL"}`),r.subtables.size>0&&n.push(` subtable audit: ${[...r.subtables].map(([i,o])=>`${i}(${o} fields)`).join(", ")}`),n.push(` output schema: ${(e.summary?Ba:Ka).join(", ")}`),n.push(e.summary?" aggregation: record/subtable/field/code; row locator=none":" row locator: grouped by message; $err_subrow / $err_subrow_id list all matching rows (first-occurrence order)"),n.push(` number precision: ${r.numberPrecision?"required":"not required"}`),n.push(" local checks: original WHERE re-evaluation + built-in constraints + CHECK groups"),n.push(" records/mutation API during EXPLAIN: none; violation count unavailable"),n):(n.push(" metadata: form definition required; number precision required for NUMBER targets"),n)}function _e(e,t,r,n){let i=r?.get(e)??(r?[...r].find(([f])=>JSON.stringify(f)===JSON.stringify(e))?.[1]:void 0),o=n?.get(e)??(n?[...n].find(([f])=>JSON.stringify(f)===JSON.stringify(e))?.[1]:void 0),a=o?.kind==="CANONICAL_LOCAL"||i&&i.capability!=="EXACT_PUSHDOWN"?"FULL_SCAN":Ce(e),s=uh(e);i&&i.capability!=="EXACT_PUSHDOWN"&&s.push(...i.reasons.map(f=>f.code));let l=[],d=lu(e,fn.get(e)?.allItems.length);t&&l.push(t),l.push(` mode: ${a}`),d&&(l.push(` grouping source: ${d.source}`),l.push(` grouping sets: ${d.expandedSetCount} (limit: ${d.setLimit})`),l.push(` grouping items: ${d.groupingItemCount} (limit: ${d.itemLimit})`),l.push(` grouping output rows: runtime checked (limit: ${d.outputRowLimit}, before HAVING/DISTINCT/LIMIT)`)),o?(l.push(` order plan: ${o.kind}`),o.reasonCodes.length>0&&l.push(` order reason: ${o.reasonCodes.join(", ")}`),o.kind==="KORDER_NATIVE"?(l.push(" order semantics: kintone native (not kSQL canonical)"),l.push(" REST execution: single GET")):o.kind==="KORDER_CURSOR"&&(l.push(" order semantics: kintone native (not kSQL canonical)"),l.push(" fetch API: POST/GET/DELETE records/cursor.json"),l.push(" cursor page size: 500"),l.push(` scan rows: ${o.scanRows}`))):d&&l.push(" order plan: CANONICAL_LOCAL");let p=o&&!o.requiresCompleteInput?{...e,orderBy:[]}:e,c=Tt(p);o?.requiresCompleteInput&&c.add("LOCAL_ORDER");let u=nt(e.where);if(c.size>0&&(!u||d!==null)&&(l.push(" complete input: required (onLimit=truncate disabled)"),l.push(` complete input reason: ${[...c].join(", ")}`),l.push(" onLimit=truncate: disabled")),u)return l.push(" predicate: constant false"),l.push(" records API access: none"),l.push(` app: APP${e.from.appId} (${e.from.appId})`),l;if(a==="FULL_SCAN"&&s.length>0&&l.push(` reason: ${s.join(", ")}`),a==="SIMPLE"){let f=Mn(o?.kind==="CANONICAL_REST_TOP_N"?Nc(e):e);l.push(` app: APP${e.from.appId} (${e.from.appId})`);let E=o?.kind==="KORDER_CURSOR"?ia(e):f.query;l.push(` kintone query: ${E||"(\u306A\u3057)"}`),l.push(` fields: ${f.fields.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":f.fields.join(", ")}`)}else{let f=rr(e),E=wt(e,e.from),R=e.from.alias?` AS ${e.from.alias}`:"",h=f.mainCondition,m=Tc(e),g=e.joins.length===0&&i?.capability==="EXACT_PUSHDOWN"&&e.where!==null&&!lt(e.where)?W(e.where):"",T=h!==null?W(h):g||"(\u5168\u4EF6\u53D6\u5F97)";l.push(` app: APP${e.from.appId}${R} (${e.from.appId})`),l.push(` kintone query: ${T}`),m!==null&&l.push(` pushdown candidate: ${W(m)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`),l.push(` fields: ${E.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":E.join(", ")}`);for(let S of e.joins){let P=wt(e,S.table),w=S.table.alias?` AS ${S.table.alias}`:"",_=S.type==="INNER"?"JOIN":`${S.type} JOIN`,I=S.table.alias?f.joinConditions.get(S.table.alias)??null:null,k=S.table.alias&&!S.table.subtableCode&&S.table.cteName===null&&e.where?_r(e.where,{tableAlias:S.table.alias}):null,C=I!==null?W(I):"(\u5168\u4EF6\u53D6\u5F97)";l.push(` ${_}: APP${S.table.appId}${w} (${S.table.appId})`),l.push(` kintone query: ${C}`),k!==null&&l.push(` pushdown candidate: ${W(k)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`),l.push(` fields: ${P.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":P.join(", ")}`)}}return l.push(...ch(e,r,n)),l}function sh(e,t,r){let n=[],i=a=>{if(a.type==="SELECT"){n.push(a);return}i(a.left),n.push(a.right)};i(e);let o=[];return n.forEach((a,s)=>{s>0&&o.push(""),o.push(..._e(a,`[union:${s+1}]`,t,r))}),o}function lh(e,t,r){let n=[];for(let i of e.ctes)i.query.type==="SELECT"&&(n.push(..._e(i.query,`[cte: ${i.name}]`,t,r)),n.push(""));if((e.query.type==="SELECT"||e.query.type==="UNION")&&n.push(...Zc(e.query,"[main]",t,r)),ut(e)){n.push("");let i=ct(e);n.push(..._e(i,"[effective: inlined CTE]",t,r))}return n}function uh(e){let t=[];(e.from.subtableCode||e.joins.some(n=>n.table.subtableCode))&&t.push("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB"),e.joins.length>0&&t.push("JOIN \u3042\u308A");let r=ne(e);return r.type==="PLAIN"?t.push("GROUP BY \u3042\u308A"):r.type==="GROUPING_SETS"&&t.push(r.source==="ROLLUP"?"ROLLUP \u3042\u308A":r.source==="CUBE"?"CUBE \u3042\u308A":"GROUPING SETS \u3042\u308A"),e.distinct&&t.push("DISTINCT \u3042\u308A"),e.columns.some(n=>n.type==="AGGREGATE"||n.type==="ARITH_AGG_COL")&&t.push("\u96C6\u8A08\u95A2\u6570\uFF08COUNT / SUM \u7B49\uFF09\u3042\u308A"),e.columns.some(n=>n.type==="WINDOW_COL")&&t.push("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u3042\u308A"),e.columns.some(n=>n.type==="SCALAR_SUBQUERY_COL")&&t.push("SELECT \u5217\u306B\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA"),lt(e.where)&&t.push("WHERE \u53E5\u306B JS \u8A55\u4FA1\u304C\u5FC5\u8981\u306A\u5F0F"),st(e.where)&&t.push("LIKE \u306F\u5E38\u306B JS \u8A55\u4FA1\u306E\u305F\u3081\u5168\u4EF6\u53D6\u5F97"),e.orderBy.some(n=>n.key.type!=="FIELD_NAME")&&t.push("ORDER BY \u306B\u5F0F"),t}function ch(e,t,r){let n=[],i=1,o=a=>{if(a)switch(a.type){case"BINARY":a.right.type==="SCALAR_SUBQUERY"&&(n.push(""),n.push(..._e(a.right.query,`[subquery:${i++}]`,t,r))),a.right.type==="SUBQUERY_IN_LIST"&&(n.push(""),n.push(..._e(a.right.query,`[subquery:${i++}]`,t,r)));break;case"EXISTS":n.push(""),n.push(..._e(a.query,`[subquery:${i++}]`,t,r));break;case"LOGICAL":o(a.left),o(a.right);break;case"NOT":case"GROUP":o(a.expr);break;case"NULL_CHECK":break;case"BOOLEAN":break}};o(e.where);for(let a of e.columns)a.type==="SCALAR_SUBQUERY_COL"&&(n.push(""),n.push(..._e(a.query,`[subquery:${i++}]`,t,r)));return e.having&&o(e.having),n}function ph(e,t,r=ot,n=be){let i=e.values.length,o=Math.ceil(i/100),a=[];return t&&a.push(t),a.push(" [INSERT]"),a.push(` target: APP${e.appId} (${e.appId})`),a.push(` records: ${i} \u4EF6\uFF08\u30D0\u30C3\u30C1 ${o} \u56DE \xD7 \u6700\u5927 100 \u4EF6\uFF09`),a.push(` api: POST /k/v1/records.json \xD7 ${o}`),a.push(` fields: ${e.fields.join(", ")}`),e.applyBlocks?.length?[...a,...ts(fi(e,r,n))]:a}function dh(e,t,r,n){let i=[];return t&&i.push(t),i.push(" [INSERT SELECT]"),i.push(` target: APP${e.appId} (${e.appId})`),i.push(` fields: ${e.fields.join(", ")}`),i.push(" api: POST /k/v1/records.json\uFF08\u4EF6\u6570\u306F SELECT \u7D50\u679C\u306B\u4F9D\u5B58\u3001100 \u4EF6\u3054\u3068\u306B\u30D0\u30C3\u30C1\uFF09"),i.push(""),i.push(..._e(e.select,"[source SELECT]",r,n)),i}function fh(e,t,r,n,i=100,o=be,a=1e4){if(e.applyBlocks?.length)return Eh(e,t,i,o,a);let s=Nl(e),l=e.assignments.some(f=>f.value.type==="STRING_FUNC"),d=ei(e),p=e.assignments.some(f=>f.value.type==="SCALAR_SUBQUERY"),c=[];if(t&&c.push(t),c.push(e.from?" [UPDATE FROM]":" [UPDATE]"),c.push(` target: APP${e.appId} (${e.appId})`),e.from){let f=e.from.cteName??`APP${e.from.appId}`;c.push(` source: ${f} AS ${e.from.alias}`),c.push(` join: APP${e.appId}.${e.from.targetJoinField} = ${e.from.alias}.${e.from.joinKeyField}`),c.push(` target filter: ${e.from.targetFilter?gn(e.from.targetFilter):"(none)"}`)}else c.push(` kintone query: ${gn(e.where)}`);e.subtableCode||(c.push(" selection: exact native pushdown; JS residual none"),c.push(" search abort: DML fail-closed (SearchAbortedError; mutation 0)")),c.push(nt(e.where)?" api: metadata validation only (records API access: none)":" api: GET /k/v1/records.json \u2192 PUT /k/v1/records.json");let u=[];if(s&&u.push("\u7B97\u8853 SET\uFF08\u73FE\u5728\u5024\u3092\u53D6\u5F97\u3057\u3066\u8A08\u7B97\uFF09"),l&&u.push("\u6587\u5B57\u5217\u95A2\u6570 SET\uFF08\u73FE\u5728\u5024\u3092\u53D6\u5F97\u3057\u3066\u8A55\u4FA1\uFF09"),p&&u.push("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA SET"),!d&&!p&&u.push("\u5358\u7D14 SET"),c.push(` set type: ${u.join(", ")}`),d){let f=Ah(e);f.length>0&&c.push(` ref fields: ${f.join(", ")}\uFF08GET \u306B\u542B\u3081\u308B\uFF09`)}c.push(" set fields:");for(let f of e.assignments)c.push(` ${Th(f)}`);for(let f of e.assignments)f.value.type==="SCALAR_SUBQUERY"&&(c.push(""),c.push(..._e(f.value.query,`[subquery: ${f.field}]`,r,n)));return c}function Eh(e,t,r,n,i){let o=fi(e,r,n),a=o.branches[0],d=e.applyBlocks.flatMap(E=>[...E.operations]).map(E=>{if(E.kind==="APPEND")return"APPEND";if(E.kind==="ADD"||E.kind==="REMOVE_VALUE")return"VALUE_LITERAL";if(E.selector.kind==="ALL_ROWS")return"ALL_ROWS";let R=E.selector.where;return R.type==="BINARY"&&R.op==="="&&R.left.type==="FIELD"&&R.left.tableAlias===null&&R.left.field==="_rid"?"_rid":"SAFE_PREDICATE"}),p=[...new Set(a.targets.flatMap(E=>E.operations.map(R=>R.kind)))],c=p.includes("REMOVE"),u=Qc.get(e),f=u?["parent selection: safe prefilter + JS residual evaluation",`kintone prefilter: ${u.prefilter===null?"(none; empty query)":W(u.prefilter)}`,"JS residual: original parent WHERE",`applied KLIKE: ${u.appliedKlikes.size}`,`unapplied KLIKE: ${u.unappliedKlikes.length}${u.unappliedKlikes.length>0?" (unsupported: cannot be fully applied to native query)":""}`,`candidate limit: maxRecords=${i}, onLimit=error, stopAfter=none`,`target guard: dmlMaxRows=${r} after JS residual evaluation`,"search abort: DML fail-closed (B7-P3; all surfaces, no surface gate)"]:[];return[...t?[t]:[],"statement: UPDATE APPLY",`target app: APP${e.appId}`,`parent selector: ${gn(e.where)}`,`parent cardinality: ${ze(e.where)?"single":"multiple"}`,...f,`apply target: ${a.targets.map(E=>`${E.field} (${E.targetKind})`).join(" | ")}`,`operations: ${p.join(" | ")}`,`selector: ${d.join(" | ")}`,"snapshot evaluation: yes","inserted rows visible: no","revision guard: required","revision: unknown (records API not called)",`payload preservation: row ids=yes, row order=yes, unpatched cells=yes, remove tables=${c?"FULL_SURVIVORS":"none"}`,"post-image validation: required (B43 equivalent)","parent rows: unknown (records API not called)","matched subtable rows: unknown (records API not called)","validation errors: unknown (records API not called)",`deleted rows: ${c?"unknown (records API not called)":"0 (static without REMOVE)"}`,`dmlMaxRows: ${r}`,`dmlMaxSubtableRows: ${n}`,"MCP mutation: disabled in v1",...ts(o)]}function Rh(e,t){let r=[];return t&&r.push(t),r.push(" [DELETE]"),r.push(` target: APP${e.appId} (${e.appId})`),r.push(` kintone query: ${gn(e.where)}`),e.subtableCode||(r.push(" selection: exact native pushdown; JS residual none"),r.push(" search abort: DML fail-closed (SearchAbortedError; mutation 0)")),r.push(nt(e.where)?" api: metadata validation only (records API access: none)":" api: GET /k/v1/records.json \u2192 DELETE /k/v1/records.json"),r}function mh(e,t,r=ot,n=be){let i=e.values.length,o=Math.ceil(i/100),a=[...t?[t]:[]," [UPSERT]",` target: APP${e.appId} (${e.appId})`,` records: ${i} \u4EF6\uFF08\u30D0\u30C3\u30C1 ${o} \u56DE \xD7 \u6700\u5927 100 \u4EF6\uFF09`,` key fields: ${e.keyFields.join(", ")}`,` fields: ${e.fields.join(", ")}`,` api: GET /k/v1/records.json\uFF08\u91CD\u8907\u5224\u5B9A\uFF09\u2192 POST \u307E\u305F\u306F PUT /k/v1/records.json \xD7 ${o}`];return e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length?[...a,...ts(fi(e,r,n))]:a}function ts(e){let t=[`apply diagnostic: ${e.statementKind}`,`non-transactional: ${e.nonTransactional}`,`partial success: ${e.partialSuccess.possible?"possible":"none"}`];for(let r of e.branches){t.push(`apply branch: ${r.branch}`,` parent rows: ${r.parentRows===null?"unknown (records API not called)":r.parentRows}`,` chunks: ${r.chunk.plannedChunks===null?"unknown":r.chunk.plannedChunks} \xD7 max ${r.chunk.size}`,` revision guard: ${r.guards.revisionRequired?"required":"not required"}`);for(let n of r.targets)t.push(` target: ${n.field} (${n.targetKind})`,` operations: ${n.operations.map(i=>`${i.kind}=${i.count===null?"unknown":i.count}`).join(" | ")}`,` changed count: ${n.changedCount===null?"unknown":n.changedCount}`)}return t.push("records API: 0","mutation API: 0"),t}function hh(e,t,r,n){let i=[...t?[t]:[]," [UPSERT SELECT]",` target: APP${e.appId} (${e.appId})`,` key fields: ${e.keyFields.join(", ")}`,` fields: ${e.fields.join(", ")}`," api: GET /k/v1/records.json\uFF08\u91CD\u8907\u5224\u5B9A\uFF09\u2192 POST \u307E\u305F\u306F PUT /k/v1/records.json\uFF08100 \u4EF6\u3054\u3068\u306B\u30D0\u30C3\u30C1\uFF09",""];return i.push(..._e(e.select,"[source SELECT]",r,n)),i}function gh(e,t){let r=`APP${e.appId}$${e.subtableCode}`,n=e.all?"\u5168\u89AA\u30EC\u30B3\u30FC\u30C9\u5BFE\u8C61":"WHERE \u6761\u4EF6\u306B\u4E00\u81F4\u3059\u308B\u89AA\u30EC\u30B3\u30FC\u30C9\u5BFE\u8C61",i=e.by.map(yh).join(", "),o=[...t?[t]:[]," [REORDER]",` target: APP${e.appId} (${e.appId})`,` table: ${r}`,` scope: ${n}`,` by: ${i}`,nt(e.where)?" api: metadata validation only (records API access: none)":" api: GET /k/v1/records.json\uFF08\u884C ID \u53D6\u5F97\uFF09\u2192 PUT /k/v1/records.json\uFF08id \u914D\u5217\u306E\u307F\u9001\u4FE1\uFF09"];return!e.all&&e.where&&o.splice(5,0,` where: ${gn(e.where)}`),o}function yh(e){return`${e.key.type==="FIELD_NAME"?e.key.name:"(\u5F0F)"} ${e.direction}`}function gn(e){if(e.type==="BOOLEAN")return e.value?"TRUE":"FALSE (constant)";try{return W(e)}catch{return"(JS \u8A55\u4FA1\u304C\u5FC5\u8981\u306A\u305F\u3081 kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u4E0D\u53EF)"}}function Ah(e){let t=new Set;for(let{value:r}of e.assignments)r.type==="ARITH"&&Gi(r,t),r.type==="STRING_FUNC"&&Gi(r,t),(r.type==="SCALAR_ARITH"||r.type==="CONCAT_OP")&&cn(r,t);return[...t]}function Gi(e,t){if(e.type==="FIELD_REF"){t.add(e.field);return}if(e.type==="ARITH"&&(Gi(e.left,t),Gi(e.right,t)),e.type==="STRING_FUNC")for(let r of e.args)r.type!=="AGG_REF"&&r.type!=="AGG_ARITH"&&cn(r,t)}async function ep(e,t,r,n,i){let o=Ja(e),a=await de(e.appId,r,n),s=t.cteName,l=s!==null?new Map((i?.get(s)?.columns??[]).map(u=>[u,i?.get(s)?.columnMeta?.get(u)?.fieldType??(i?.get(s)?.columnMeta?.get(u)?.semantics?.compareMode==="number"?"NUMBER":"SINGLE_LINE_TEXT")])):await de(t.appId,r,n),d=new Set,p=new Set;for(let u of o){if(u.tableAlias!==null){if(u.tableAlias.toLowerCase()===`app${e.appId}`.toLowerCase()){if(u.field!=="$id"&&!a.has(u.field))throw se(`CHECK \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u30D5\u30A3\u30FC\u30EB\u30C9 ${u.field} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093`);d.add(u.field)}else if(u.tableAlias.toLowerCase()===t.alias.toLowerCase()){if(u.field!=="$id"&&!l.has(u.field))throw se(`CHECK \u306E\u30BD\u30FC\u30B9\u30D5\u30A3\u30FC\u30EB\u30C9 ${u.field} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093`);p.add(u.field)}else throw se(`CHECK \u306E\u4FEE\u98FE\u5B50 ${u.tableAlias} \u306F\u66F4\u65B0\u5148\u307E\u305F\u306F FROM alias \u3067\u306F\u3042\u308A\u307E\u305B\u3093`);continue}let f=u.field==="$id"||a.has(u.field),E=u.field==="$id"||l.has(u.field);if(!f)throw se(`UPDATE FROM \u306E CHECK \u3067\u306F\u30BD\u30FC\u30B9\u5217 ${u.field} \u3092\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044`);if(E)throw se(`UPDATE FROM \u306E CHECK \u306E\u975E\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9 ${u.field} \u306F\u66D6\u6627\u3067\u3059`);d.add(u.field)}let c=new Map;for(let[u,f]of a)c.set(u,f),c.set(`APP${e.appId}.${u}`,f);c.set("$id","RECORD_NUMBER"),c.set(`APP${e.appId}.$id`,"RECORD_NUMBER");for(let[u,f]of l)c.set(`${t.alias}.${u}`,f);return{targetFields:[...d],sourceFields:[...p],evaluationTypes:c}}function Sh(e,t,r){if(!e)return{};let n=et(e.target,null);return Object.fromEntries([...Object.entries(n),...Object.entries(n).map(([i,o])=>[`APP${t}.${i}`,o]),...Object.entries(e.source).map(([i,o])=>[`${r}.${i}`,o])])}function cn(e,t){if(e.type==="FIELD"){t.add(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field);return}if(e.type==="STRING_FUNC"){for(let r of e.args)r.type!=="AGG_REF"&&r.type!=="AGG_ARITH"&&cn(r,t);return}(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP")&&(cn(e.left,t),cn(e.right,t))}function Th(e){let t=e.value;return t.type==="STRING"?`${e.field} = '${t.value}'`:t.type==="NUMBER"?`${e.field} = ${t.value}`:t.type==="ARITH"?`${e.field} = ${tp(t)}`:t.type==="CASE_VALUE"?`${e.field} = CASE WHEN ...`:t.type==="STRING_FUNC"?`${e.field} = ${t.func}(...)`:t.type==="SCALAR_SUBQUERY"?`${e.field} = (SELECT ...)`:t.type==="SOURCE_FIELD"?`${e.field} = ${t.alias}.${t.field}`:`${e.field} = (${t.type})`}function tp(e){return`${hc(e.left)} ${e.op} ${hc(e.right)}`}function hc(e){return e.type==="FIELD_REF"?e.field:e.type==="NUMBER"?G(e):e.type==="ARITH"?`(${tp(e)})`:"..."}var Z=class extends Error{constructor(r,n){super(`${r} \u3092\u30AD\u30E3\u30F3\u30BB\u30EB\u3057\u307E\u3057\u305F\uFF08\u5BFE\u8C61: ${n} \u4EF6\uFF09`);this.operation=r;this.affectedCount=n;this.name="OperationCancelledError"}};var me=class extends Error{constructor(t,r,n){super(r),this.name="KsqlEngineError",this.code=t,n!==void 0&&(this.cause=n),Object.setPrototypeOf(this,new.target.prototype)}};function Kt(e){return new me("READ_ONLY_VIOLATION",e)}function rs(e,t){return new me("PARSE_ERROR",e,t)}function rp(){let e=new mr;return new me("SEARCH_ABORTED",e.message,e)}function In(e){return e instanceof Error&&e.message.trim()!==""||e!==null&&typeof e=="object"&&typeof e.message=="string"?e.message:String(e)}function wh(e){if(e===null||typeof e!="object")return!1;let t=e;return typeof t.status=="number"||typeof t.response?.status=="number"||typeof t.code=="string"&&t.code.trim()!==""}function bn(e){return e instanceof me?e:e instanceof le||e instanceof A?new me("PARSE_ERROR",In(e),e):e instanceof mr||e?.name==="SearchAbortedError"?new me("SEARCH_ABORTED",In(e),e):e instanceof ye||e?.name==="FetchAllLimitError"?new me("FETCH_LIMIT_EXCEEDED",In(e),e):e instanceof Error&&e.name==="ClientOperationError"&&"cause"in e?new me("CLIENT_ERROR",e.message,e.cause):wh(e)?new me("CLIENT_ERROR",In(e),e):new me("EXECUTION_ERROR",In(e),e)}var Ih=2,Xi=5,bh=3e4,Ph=10*6e4+3e4,Ji=class{constructor(t,r={}){this.host=t;this.active=0;this.peak=0;this.quarantined=0;this.waiters=[];this.createTail=Promise.resolve();let n=r.maxActive??Ih;if(!Number.isSafeInteger(n)||n<1||n>Xi)throw new Error(`ArgumentError: cursorMaxActive must be an integer from 1 to ${Xi}.`);this.maxActive=n,this.waitTimeoutMs=r.waitTimeoutMs??bh,this.quarantineMs=r.quarantineMs??Ph}acquire(){return this.active<this.maxActive?(this.active+=1,this.peak=Math.max(this.peak,this.active),Promise.resolve(this.makeLease())):new Promise((t,r)=>{let n={};n.resolve=t,n.reject=r,n.timer=setTimeout(()=>{let i=this.waiters.indexOf(n);i>=0&&this.waiters.splice(i,1),r(new mi(this.host,this.maxActive,this.waitTimeoutMs))},this.waitTimeoutMs),n.timer.unref?.(),this.waiters.push(n)})}setMaxActive(t){this.validateMaxActive(t),this.maxActive!==t&&(this.maxActive=t,this.dispatchWaiters())}async runCreate(t){let r=this.createTail,n;this.createTail=new Promise(i=>{n=i}),await r;try{return await t()}finally{n()}}snapshot(){return{active:this.active,peak:this.peak,quarantined:this.quarantined,waiting:this.waiters.length,limit:this.maxActive}}makeLease(){let t=!1;return{release:()=>{t||(t=!0,this.returnPermit())},quarantine:(r=this.quarantineMs)=>{if(t)return;t=!0,this.quarantined+=1,setTimeout(()=>{this.quarantined-=1,this.returnPermit()},r).unref?.()}}}returnPermit(){this.active-=1,this.dispatchWaiters()}dispatchWaiters(){for(;this.active<this.maxActive;){let t=this.waiters.shift();if(!t)return;clearTimeout(t.timer),this.active+=1,this.peak=Math.max(this.peak,this.active),t.resolve(this.makeLease())}}validateMaxActive(t){if(!Number.isSafeInteger(t)||t<1||t>Xi)throw new Error(`ArgumentError: cursorMaxActive must be an integer from 1 to ${Xi}.`)}};function Nh(e){let t=e;return t?.status===404&&t.code==="GAIA_CN01"}async function Ch(e,t=n=>new Promise(i=>setTimeout(i,n)),r=Nh){try{await e();return}catch(n){if(r(n))return}await t(250);try{await e()}catch(n){if(r(n))return;throw n}}async function Oh(e,t){let r,n=new Promise((i,o)=>{r=setTimeout(()=>o(new Error(`CursorCleanupTimeoutError: cleanup exceeded ${t}ms.`)),t),r.unref?.()});try{return await Promise.race([e,n])}finally{r&&clearTimeout(r)}}function np(e,t){let r=!1,n=!1,i=Promise.resolve(),o=null;return{totalCount:e,nextPage:()=>{if(n||r)return Promise.resolve({records:[],next:!1});let l=i.then(async()=>{if(n||r)return{records:[],next:!1};let d=await t.get();return d.next||(r=!0,t.onReleased?.()),d});return i=l.then(()=>{},()=>{}),l},close:()=>r?Promise.resolve():o||(n=!0,o=i.then(async()=>{if(!r)try{await Oh(Ch(t.delete,t.sleep,t.isAlreadyReleasedError),t.cleanupTimeoutMs??5e3),r=!0,t.onReleased?.()}catch(l){throw t.onReleaseUnknown?.(),l}}),o)}}function ip(e){return op(e,_h(e))}function op(e,t,r=!1,n){let i=[];for(let o of Object.values(e)){let a=Dh(o.options),s=vh(o.type,o.format),l={code:o.code,label:o.label,fieldType:o.type,optionOrder:a,sortKind:s,required:o.required,minValue:Qi(o.minValue),maxValue:Qi(o.maxValue),minLength:Qi(o.minLength),maxLength:Qi(o.maxLength),defaultValue:o.defaultValue,inSubtable:r,...n?{subtableCode:n}:{},writable:!t.has(o.code)&&!Lh.has(o.type)};l.semantics=z(l),i.push(l),o.fields&&i.push(...op(o.fields,t,!0,o.type==="SUBTABLE"?o.code:n))}return i}var Lh=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE","SUBTABLE"]);function _h(e){let t=new Set,r=n=>{for(let i of Object.values(n)){for(let o of i.lookup?.fieldMappings??[])o.field&&t.add(o.field);i.fields&&r(i.fields)}};return r(e),t}function Qi(e){return e==null||e===""?void 0:e}function Dh(e){if(!e||typeof e!="object")return;let t={},r=!1;for(let[n,i]of Object.entries(e)){let o=Number(i?.index);Number.isFinite(o)&&(t[n]=o,r=!0)}return r?t:void 0}function vh(e,t){if(e==="NUMBER"||e==="RECORD_NUMBER")return"number";if(e==="CALC")return t==="NUMBER"||t==="NUMBER_DIGIT"?"number":"string"}function ap(e){return e===null?null:Object.values(e).map(t=>{let r=Number(t.index);if(!Number.isSafeInteger(r)||r<0)throw new Error(`ArgumentError: invalid process status index: ${String(t.index)}`);return{name:t.name,index:r}})}var kh="Filter aborted because of too many search results";function sp(e){return e?.includes(kh)===!0}var lp="/k/v1/records.json",Zi="/k/v1/records/cursor.json",Uh=4096,Mh=2,ns=e=>kintone.api.url(e,!0);function xh(e){let t={app:e.app,query:e.query,...e.fields.length>0?{fields:e.fields}:{}},n=kintone.api.urlForGet(lp,t,!0),i={"X-Requested-With":"XMLHttpRequest"};return new TextEncoder().encode(n).byteLength<=Uh?{url:n,init:{method:"GET",credentials:"include",headers:i}}:{url:ns(lp),init:{method:"POST",credentials:"include",headers:{...i,"X-HTTP-Method-Override":"GET","Content-Type":"application/json","X-Cybozu-Request-Token":kintone.getRequestToken()},body:JSON.stringify(t)}}}function Pn(e){let t=e;if(e instanceof Error&&e.message.trim()!=="")return e;if(t===null||typeof t!="object"||typeof t.message!="string"||t.message.trim()===""){let o=new Error("\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u30A8\u30E9\u30FC: kintone \u304B\u3089\u306E\u5FDC\u7B54\u304C\u3042\u308A\u307E\u305B\u3093\uFF08\u30AA\u30D5\u30E9\u30A4\u30F3\u30FB\u901A\u4FE1\u906E\u65AD\u306E\u53EF\u80FD\u6027\uFF09");return Object.assign(o,{cause:e}),o}let r=t,n=[typeof r.code=="string"&&r.code!==""?`${r.message}\uFF08${r.code}\uFF09`:r.message];if(r.errors!==null&&typeof r.errors=="object")for(let[o,a]of Object.entries(r.errors)){let s=Array.isArray(a?.messages)?a.messages.filter(l=>typeof l=="string"):[];s.length>0&&n.push(`${o}: ${s.join(" / ")}`)}let i=new Error(n.join(`
12
+ `));return typeof r.code=="string"&&r.code!==""&&(i.name=r.code),typeof r.code=="string"&&Object.assign(i,{code:r.code}),typeof r.status=="number"&&Object.assign(i,{status:r.status}),Object.assign(i,{cause:e}),i}async function Fh(e){try{let t=await e.json();if(t!==null&&typeof t=="object"){let n=t;return Pn({code:n.code,message:n.message,errors:n.errors,status:e.status})}let r=new Error(`kintone API error: HTTP ${e.status}`);return Object.assign(r,{status:e.status,cause:t}),Pn(r)}catch(t){let r=new Error(`kintone API error: HTTP ${e.status} \u306E\u5FDC\u7B54\u3092 JSON \u3068\u3057\u3066\u89E3\u6790\u3067\u304D\u307E\u305B\u3093`);return Object.assign(r,{status:e.status,cause:t}),Pn(r)}}function Kh(e){let t=e;return t?.code==="GAIA_CN01"&&(t.status===404||t.status===void 0)}async function Bt(e,t,r){try{return await kintone.api(ns(e),t,r)}catch(n){throw Pn(n)}}function Bh(e){if(!Number.isSafeInteger(e)||e<1||e>5)throw new Error("ArgumentError: cursorMaxActive must be an integer from 1 to 5.")}function up(e={}){let t=e.cursorMaxActive??Mh;Bh(t);let r=null,n=null,i=new Set;return{async getRecords(a){try{let s=xh(a),l=await fetch(s.url,s.init);if(!l.ok)throw await Fh(l);let d=await l.json();return sp(l.headers.get("X-Cybozu-Warning"))?{records:d.records,searchAborted:!0}:{records:d.records}}catch(s){throw Pn(s)}},async openCursor(a){let s=ns(Zi),l=new URL(s,globalThis.location?.href).host.toLowerCase();if(n!==null&&n!==l)throw new Error(`CursorRouteError: factory route changed from ${n} to ${l}.`);if(n=l,r??=new Ji(l,{maxActive:t}),r.snapshot().active>=t){let R=new Error(`CursorCapacityError: host=${l} \u306E active cursor \u4E0A\u9650 ${t} \u306B\u9054\u3057\u3066\u3044\u307E\u3059\u3002`);throw R.name="CursorCapacityError",R}let d=await r.acquire(),p;try{p=await r.runCreate(()=>Bt(Zi,"POST",{app:a.app,query:a.query,size:a.size,fields:a.fields&&a.fields.length>0?a.fields:void 0}))}catch(R){throw typeof R?.code=="string"?(d.release(),R):(d.quarantine(),new hi(R))}let c=p.id,u=np(Number(p.totalCount),{get:()=>Bt(Zi,"GET",{id:c}),delete:()=>Bt(Zi,"DELETE",{id:c}),isAlreadyReleasedError:Kh,onReleased:()=>d.release(),onReleaseUnknown:()=>d.quarantine()}),f=null,E={totalCount:u.totalCount,async nextPage(){let R=await u.nextPage();return R.next||i.delete(E),R},close(){return f||(f=u.close().finally(()=>{i.delete(E)}),f)}};return i.add(E),E},async getApps(){let s=[],l=0;for(;;){let d=await Bt("/k/v1/apps.json","GET",{limit:100,offset:l});for(let p of d.apps)s.push({appId:Number(p.appId),name:p.name,description:p.description});if(d.apps.length<100)break;l+=100}return s},async getFields(a){let s=await Bt("/k/v1/app/form/fields.json","GET",{app:a});return ip(s.properties)},async getNumberPrecision(a){let s=await Bt("/k/v1/app/settings.json","GET",{app:a});return Yl(s)},async getProcessStatuses(a){let s=await Bt("/k/v1/app/status.json","GET",{app:a,lang:"user"});return{enable:s.enable,states:ap(s.states)}}}}var cp=new Set(["postRecords","putRecords","deleteRecords"]),Nn=class extends Error{constructor(t){let r=t instanceof Error?t.message:String(t);super(r),this.name="ClientOperationError",this.cause=t,Object.setPrototypeOf(this,new.target.prototype)}};async function At(e){try{return await e()}catch(t){throw new Nn(t)}}function $h(e){return()=>{throw Kt(`${String(e)} is blocked by the readonly client`)}}function is(e){let t=e.getRecords.bind(e),r=e.openCursor.bind(e),n=e.getApps.bind(e),i=e.getFields.bind(e),o=e.getNumberPrecision.bind(e),a=e.getProcessStatuses.bind(e),s=Object.assign(Object.create(null),{getRecords:async l=>{let d=await At(()=>t(l));if(d.searchAborted===!0)throw rp();return d},openCursor:async l=>{let d=await At(()=>r(l)),p=d.nextPage.bind(d),c=d.close.bind(d);return{totalCount:d.totalCount,nextPage:()=>At(()=>p()),close:()=>At(()=>c())}},getApps:()=>At(()=>n()),getFields:l=>At(()=>i(l)),getNumberPrecision:l=>At(()=>o(l)),getProcessStatuses:l=>At(()=>a(l))});return new Proxy(s,{get(l,d,p){return cp.has(d)?$h(d):Reflect.get(l,d,p)},has(l,d){return cp.has(d)?!1:Reflect.has(l,d)}})}function Gh(e){let t=new Set,r=null;return{client:{getRecords:e.getRecords.bind(e),async openCursor(i){let o=await e.openCursor.call(e,i),a=null,s={totalCount:o.totalCount,nextPage:o.nextPage.bind(o),close(){return a||(a=Promise.resolve().then(()=>o.close()).finally(()=>{t.delete(s)}),a)}};return t.add(s),s},getApps:e.getApps.bind(e),getFields:e.getFields.bind(e),getNumberPrecision:e.getNumberPrecision.bind(e),getProcessStatuses:e.getProcessStatuses.bind(e)},close(){return r||(r=(async()=>{let o=(await Promise.allSettled([...t].map(a=>a.close()))).find(a=>a.status==="rejected");if(o)throw new Nn(o.reason)})(),r)}}}async function os(e,t){let r=Gh(e),n=!1;try{return await t(r.client)}catch(i){throw n=!0,i}finally{try{await r.close()}catch(i){if(!n)throw i}}}var pp=new Set(["client","maxRecords","fetchParallel","cursorMaxActive"]),Vh=new Set([...pp,"onLimitReached"]);function Wh(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new TypeError("options must be an object")}function as(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new RangeError(`${t} must be a positive safe integer`)}function Hh(e){if(e===null||typeof e!="object")throw new TypeError("client is required");let t=e;for(let r of["getRecords","openCursor","getApps","getFields","getNumberPrecision","getProcessStatuses"])if(typeof t[r]!="function")throw new TypeError(`client.${r} must be a function`)}function ss(e,t){Wh(e);let r=t==="run"?Vh:pp;for(let i of Reflect.ownKeys(e))if(typeof i!="string"||!r.has(i))throw new TypeError(`Unknown ${t==="run"?"runQuery":"explainQuery"} option: ${String(i)}`);if(Hh(e.client),e.maxRecords!==void 0&&as(e.maxRecords,"maxRecords"),e.fetchParallel!==void 0&&as(e.fetchParallel,"fetchParallel"),e.cursorMaxActive!==void 0&&(as(e.cursorMaxActive,"cursorMaxActive"),e.cursorMaxActive>5))throw new RangeError("cursorMaxActive must be between 1 and 5");let n=e;if(t==="run"&&n.onLimitReached!==void 0&&n.onLimitReached!=="error"&&n.onLimitReached!=="truncate")throw new TypeError('onLimitReached must be "error" or "truncate"');return{client:e.client,executeOptions:{...e.maxRecords!==void 0?{maxRecords:e.maxRecords}:{},...e.fetchParallel!==void 0?{fetchParallel:e.fetchParallel}:{},...e.cursorMaxActive!==void 0?{cursorMaxActive:e.cursorMaxActive}:{},...t==="run"&&n.onLimitReached!==void 0?{onLimitReached:n.onLimitReached}:{}}}}function dp(e,t={}){let r=new Wt(e).tokenize(),n=new Yt(r,t).parse();return or(n),n}function fp(e){if(e.trim()==="")throw rs("SQL statement is empty");try{return dp(e,{import:!0})}catch(t){let r=bn(t);throw r.code==="PARSE_ERROR"?r:rs("SQL statement could not be parsed",t)}}function Yh(e){if(e===null||typeof e!="object"||typeof e.type!="string")throw Kt("Unclassifiable statement branch is not allowed");return e.type}function $t(e,t){let r=Yh(e);switch(r){case"SELECT":return;case"SHOW_APPS":case"DESCRIBE":if(t==="run")return;break;case"WITH":{let n=e;if(!Array.isArray(n.ctes))throw Kt("WITH contains an unclassifiable CTE list");for(let i of n.ctes){if(i===null||typeof i!="object"||!("query"in i))throw Kt("WITH contains an unclassifiable CTE body");$t(i.query,t)}$t(n.query,t);return}case"UNION":{let n=e;$t(n.left,t),$t(n.right,t);return}default:break}throw Kt(`${r} statements are not allowed in ${t} queries`)}function jh(e){$t(e,"run")}function Ep(e){jh(fp(e))}function Rp(e){let t=e.trim(),r=fp(t);return r.type==="EXPLAIN"?($t(r.query,"explain"),t):($t(r,"explain"),`EXPLAIN ${t}`)}function mp(e){return{recordGetCalls:e?.getCalls??0,fetchedRows:e?.fetchedRows??0,elapsedMs:e?.elapsedMs??0,cursorRecordsScanned:e?.cursorRecordsScanned??0}}function hp(e){if(e===null||typeof e!="object"||e.type!=="SELECT")throw new Error("Engine returned a non-SELECT result")}function qh(e){return Object.fromEntries(Object.entries(e).map(([t,r])=>[t,String(r)]))}async function gp(e,t){try{let r=ss(t,"run");Ep(e);let n=await os(r.client,i=>xa(e,is(i),r.executeOptions));return hp(n),{type:"query",rows:n.rows.map(qh),columns:n.columns.map(i=>({name:i,valueType:"string"})),rowCount:n.rowCount,warnings:[...n.warnings??[]],metrics:mp(n.metrics)}}catch(r){throw bn(r)}}async function yp(e,t){try{let r=ss(t,"explain"),n=await os(r.client,o=>xa(Rp(e),is(o),r.executeOptions));hp(n);let i=n.rows.map(o=>String(o.plan??""));return{type:"explain",lines:i,text:i.join(`
13
+ `),metrics:mp(n.metrics)}}catch(r){throw bn(r)}}var zh="3.20.0";0&&(module.exports={KsqlEngineError,createReadonlyKintoneClient,explainQuery,runQuery,version});