@rex0220/kintone-sql-tools 3.24.0 → 3.26.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.
- package/dist-cli/ksql.js +2550 -1850
- package/dist-engine/index.cjs +8 -8
- package/dist-engine/index.mjs +8 -8
- package/dist-engine/ksql-engine.umd.js +8 -8
- package/dist-engine/meta/bundle-baseline.json +10 -10
- package/dist-engine/meta/cjs.json +78 -34
- package/dist-engine/meta/esm.json +78 -34
- package/dist-engine/meta/umd.json +78 -34
- package/dist-mcp/ksql-mcp.js +1125 -422
- package/dist-mcpb/ksql-mcp.mcpb +0 -0
- package/package.json +4 -3
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
"use strict";(()=>{async function ye(e,t,r,n,i={}){let o=i.pageSize??
|
|
1
|
+
"use strict";(()=>{async function ye(e,t,r,n,i={}){let o=i.pageSize??bd,a=Math.max(1,i.parallel??Pd),s=i.maxRecords??Nd,l=i.onLimit??"error",p=i.stopAfter;if(p!==void 0&&(!Number.isSafeInteger(p)||p<=0||p>s))throw new RangeError("stopAfter must be a positive safe integer <= maxRecords");let u=p??s,d=n.length>0&&!n.includes("$id")?[...n,"$id"]:n,c=[],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,m=0,y=Hs(r,R),h=await Ws(e,t,y,d,o,m);if(Vs(h,i),c.push(...h.records),p!==void 0&&c.length>=p)return c.slice(0,p);if(c.length>s){if(l==="truncate")return!f&&i.onTruncate&&(i.onTruncate(s),f=!0),c.slice(0,s);throw new Ie(E)}if(h.records.length<o)return c;for(m+=o,m>=No&&(R=Ys(h.records),m=0);;){if(p!==void 0&&c.length>=p)return c.slice(0,p);if(c.length>=s){if(l==="truncate")return!f&&i.onTruncate&&(i.onTruncate(s),f=!0),c.slice(0,s);throw new Ie(E)}let g=u-c.length,S=Math.ceil(g/o),O=Math.max(1,Math.min(a,S)),P=[];for(let I=0;I<O;I++){let v=m+I*o;if(v>=No)break;P.push(v)}let _=Hs(r,R),N=await Promise.all(P.map(I=>Ws(e,t,_,d,o,I)));for(let I of N)Vs(I,i);let L=!1;for(let I of N){if(c.push(...I.records),p!==void 0&&c.length>=p)return c.slice(0,p);if(c.length>s){if(l==="truncate")return!f&&i.onTruncate&&(i.onTruncate(s),f=!0),c.slice(0,s);throw new Ie(E)}if(I.records.length<o){L=!0;break}}if(L)break;if(m+=o*P.length,m>=No){let I=N[N.length-1];R=Ys(I.records),m=0}}return c}function Vs(e,t){e.searchAborted&&t.onSearchAborted?.()}function js(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 bd=500,Pd=1,Nd=1e4,No=1e4;async function Ws(e,t,r,n,i,o){let a=Cd(r,i,o);return e({app:t,query:a,fields:n})}function Hs(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 Cd(e,t,r){let n=e.trimEnd(),i=`limit ${t} offset ${r}`;return n?`${n} ${i}`:i}function Ys(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 Ie=class extends Error{constructor(t){super(t),this.name="FetchAllLimitError"}};var Hn=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 ce=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"}},Jt=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(Co(r))return this.readIdentOrKeyword(t);if(r==="#")return this.readHashIdent(t);if(r==="@")return this.readVariable(t);throw new ce(`\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 ce("\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 ce("\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 ce("\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&&qs(this.input[this.pos]);)this.pos++;let r=this.input.slice(t,this.pos),n=r.toUpperCase(),i=Hn.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(!Co(r))throw new ce("\u300C#\u300D \u306E\u76F4\u5F8C\u306B\u306F\u8B58\u5225\u5B50\u304C\u5FC5\u8981\u3067\u3059",t,this.input);for(;this.pos<this.input.length&&qs(this.input[this.pos]);)this.pos++;let n=this.input.slice(t,this.pos);if(this.input[this.pos]==="@")throw new ce(`@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 ce("\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 ce("\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 ce("\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 yo(e){let t=e.codePointAt(0);return t>=65&&t<=90||t>=97&&t<=122||t===95||t===36||Jp(t)}function vs(e){let t=e.codePointAt(0);return yo(e)||t>=48&&t<=57}function Yt(e){let t=e.codePointAt(0);return t>=48&&t<=57}function Jp(e){return e>=12352&&e<=12543||e>=13312&&e<=40959||e>=63744&&e<=64255||e>=65281&&e<=65376}var Qp=/^([+-]?)(?:(\d+)(?:\.(\d*))?|\.(\d+))(?:[eE]([+-]?)(\d+))?$/;function Zp(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 Ie(e){let t=Qp.exec(e.trim());if(t===null)return null;let r=Zp(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 ed(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 ks(e){let t=Ie(e);return t===null?null:ed(t)}function td(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 Fn(e,t){if(e.sign!==t.sign)return e.sign<t.sign?-1:1;if(e.sign===0)return 0;let r=td(e,t);return e.sign===-1?r===0?0:r===-1?1:-1:r}function Kn(e,t){let r=Ie(e),n=Ie(t);if(r===null||n===null)throw new Error("ArgumentError: compareDecimal requires finite decimal inputs.");return Fn(r,n)}var lt="__NO_FROM__";function pe(e){return{type:"NUMBER",value:Number(e),raw:e}}function W(e){let t=e.raw??String(e.value);return ks(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 rd(e){return`${e.tableAlias??""}\0${e.field}`}function Q(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=rd(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 xs(e){return Q(e).type!=="NONE"}function Fs(e,t){let r=Q(e);if(r.type!=="GROUPING_SETS")return null;let n=new Map,i=s=>{let l=t(s),p=n.get(l.canonicalId);if(p)return p;let u={...l,field:s};return n.set(u.canonicalId,u),u},o=r.allItems.map(i).filter((s,l,p)=>p.findIndex(u=>u.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 Bn(e){return`'${e.replace(/'/g,"''")}'`}function qt(e,t=!1){if(e.type==="FIELD_REF")return e.field;if(e.type==="NUMBER")return W(e);if(e.type==="STRING_FUNC")return ho(e);let r=`${qt(e.left)}${e.op}${qt(e.right)}`;return t?r:`(${r})`}function Ks(e){if(e.type==="FIELD")return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;if(e.type==="FUNC_FIELD")return ho(e.expr);if(e.type==="ARITH_FIELD")return qt(e.expr);if(e.type==="GROUPING_FIELD"){let t=e.ref.field;return`GROUPING(${t.tableAlias?`${t.tableAlias}.`:""}${t.field})`}return go(e.expr)}function $s(e){switch(e.type){case"STRING":return Bn(e.value);case"NUMBER":return W(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=>Bn(t.value)).join(",")}]`;case"IN_LIST":return`(${e.values.map($s).join(",")})`;case"ARITH_VALUE":return qt(e.expr);case"CASE_VALUE":return go(e.expr);case"SUBQUERY_IN_LIST":return"(SUBQUERY)";case"SCALAR_SUBQUERY":return"(SUBQUERY)"}}function br(e){switch(e.type){case"BINARY":return`${Ks(e.left)} ${e.op.replace("_"," ")} ${$s(e.right)}`;case"NULL_CHECK":return`${Ks(e.field)} IS ${e.not?"NOT ":""}NULL`;case"LOGICAL":return`(${br(e.left)} ${e.op} ${br(e.right)})`;case"NOT":return`NOT (${br(e.expr)})`;case"GROUP":return`(${br(e.expr)})`;case"BOOLEAN":return e.value?"TRUE":"FALSE";case"EXISTS":return`${e.not?"NOT ":""}EXISTS (SUBQUERY)`}}function Bs(e){return e.type==="ARRAY"?`[${e.elements.map(t=>Bn(t.value)).join(",")}]`:e.type==="FIELD_REF"||e.type==="ARITH"?qt(e):wt(e)}function go(e){let t=e.branches.map(n=>`WHEN ${br(n.condition)} THEN ${Bs(n.result)}`).join(" "),r=e.elseResult===null?"":` ELSE ${Bs(e.elseResult)}`;return`CASE ${t}${r} END`}function nd(e){return e.type==="AGG_REF"?ge(e.func,e.distinct,e.arg):e.type==="AGG_ARITH"?Pr(e):wt(e)}function ho(e){return`${e.func}(${e.args.map(nd).join(",")})`}function wt(e){switch(e.type){case"STRING":return Bn(e.value);case"NUMBER":return W(e);case"VARIABLE":return`@${e.name}`;case"FIELD":return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;case"STRING_FUNC":return ho(e);case"CASE_WHEN":return go(e);case"SCALAR_ARITH":return`(${wt(e.left)}${e.op}${wt(e.right)})`;case"CONCAT_OP":return`(${wt(e.left)}||${wt(e.right)})`}}function id(e){return e.type==="WILDCARD"?"*":e.type==="FIELD_REF"||e.type==="ARITH"?qt(e,!0):wt(e)}function ge(e,t,r){let n=id(r);return t?`${e}(DISTINCT ${n})`:`${e}(${n})`}function Pr(e){return e.type==="NUMBER"?W(e):e.type==="AGG_REF"?ge(e.func,e.distinct,e.arg):`${Pr(e.left)}${e.op}${Pr(e.right)}`}var Nr=new Set(["YESTERDAY","TOMORROW","FROM_TODAY","THIS_WEEK","LAST_WEEK","NEXT_WEEK","THIS_MONTH","LAST_MONTH","NEXT_MONTH","THIS_YEAR","LAST_YEAR","NEXT_YEAR"]),qe="WHERE_RELATIVE_DATE_REQUIRES_EXACT_PUSHDOWN";function ae(e){return Nr.has(e)}var Gs=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"}),Ws=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"}),Zg=Object.freeze(Object.values(So).filter(e=>e!==void 0)),od=Object.freeze(["COUNT","SUM","AVG","MAX","MIN"]),ad=new Set(od);function sd(e){return ad.has(e)}var Hs=Object.freeze({ROW_NUMBER:"ROW_NUMBER",RANK:"RANK",DENSE_RANK:"DENSE_RANK"}),$n=Object.freeze({TODAY:"TODAY",NOW:"NOW",LOGINUSER:"LOGINUSER"});function Vs(e){return $n[e]!==void 0}var ld=Object.freeze([...Nr]),ud=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),cd=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function pd(e){return ud.has(e)}function dd(e){return cd.has(e)}function fd(e){return Number.isInteger(e)&&e>=1&&e<=31}var eh=Object.freeze(Array.from(new Set([...Object.keys(Ao),...Ws,...Object.keys(So),...Object.keys(Hs),...Object.keys($n),...ld,"IF"]))),Ed=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 Rd(e,t){return e.kind==="("||e.kind==="."||t.kind===")"||t.kind===","||t.kind==="."?!1:t.kind==="("?!Ed.has(e.kind):!0}var T=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"}},zt=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 T("SQL \u6587\u304C\u3042\u308A\u307E\u305B\u3093",this.peek());if(t.length>1)throw new T("\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 T(`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>Gs)throw new T(`batch exceeds ${Gs} statements.`,r);let n=this.peek();if(n.kind!==";"&&n.kind!=="EOF")throw new T("\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 T("IMPORT is not supported (capability is disabled).",t);return this.parseImport()}break}default:break}throw new T("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 T("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 T(`${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 T(`${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 T("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 T("\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 T("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=$n[n.kind];if(i==="LOGINUSER")throw new T(`${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 T(`${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 T(`${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 T(`${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 T("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 T(r,n)}parseTempTableName(){let t=this.peek();if(t.kind==="IDENT"&&t.value.startsWith("#"))return this.advance(),t.value;throw new T("\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 T("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}=ze(t,this.prev());if(n)throw new T("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 T("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 T("IMPORT is not supported (capability is disabled).",t);r=this.parseImport()}else throw new T("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}=ze(r,this.prev());if(i)throw new T("IMPORT does not support subtables in Phase 1.",this.prev());this.expect("(");let o=[],a=[],s=new Set;for(;;){let b=this.parseIdentifier();if(s.has(b))throw new T(`IMPORT target ${b} is declared more than once.`,this.prev());if(s.add(b),this.peek().kind==="("){this.advance();let L=this.parseIdentList();if(this.expect(")"),new Set(L).size!==L.length)throw new T(`IMPORT subtable ${b} contains duplicate child declarations.`,this.prev());let I;if(this.isSoftKeyword("ROW")){this.advance();for(let _ of["ID","SOURCE"]){if(!this.isSoftKeyword(_))throw new T("ROW must be followed by ID SOURCE <header>.",this.peek());this.advance()}I=this.parseIdentifier()}o.push({kind:"SUBTABLE",subtableCode:b,children:L,...I?{rowIdSourceHeader:I}:{}})}else a.push(b),o.push({kind:"FIELD",field:b});if(this.peek().kind!==",")break;this.advance()}if(this.expect(")"),this.expect("FROM"),!this.isSoftKeyword("CSV")&&!this.isSoftKeyword("JSON"))throw new T("IMPORT FROM requires CSV or JSON.",this.peek());let l=this.peek().value.toUpperCase();this.advance();let p=this.parseIdentifier(),u,d=!0,c;if(this.isSoftKeyword("ENCODING")){if(l==="JSON")throw new T("JSON source is UTF-8 only; ENCODING is not allowed.",this.peek());this.advance();let b=this.parseIdentifier().toUpperCase();if(b!=="UTF8"&&b!=="SJIS")throw new T("ENCODING must be UTF8 or SJIS.",this.prev());u=b==="UTF8"?"utf8":"sjis"}if(this.peek().kind==="NOT"&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="HEADER"){if(l==="JSON")throw new T("NO HEADER is CSV-only.",this.peek());this.advance(),this.advance(),d=!1}else if(this.isSoftKeyword("NO")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="HEADER"){if(l==="JSON")throw new T("NO HEADER is CSV-only.",this.peek());this.advance(),this.advance(),d=!1}if(this.isSoftKeyword("COLUMNS")){if(l==="JSON")throw new T("COLUMNS is CSV-only.",this.peek());if(d)throw new T("COLUMNS requires NO HEADER.",this.peek());this.advance(),this.expect("("),c=this.parseIdentList(),this.expect(")")}let f;if(this.peek().kind==="SELECT"){if(l==="JSON")throw new T("SELECT projection is CSV-only.",this.peek());if(f=this.parseSelect(),f.from.cteName!==lt||f.joins.length>0)throw new T("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 T("IMPORT projection supports SELECT expressions only.",this.prev());if(this.validateImportProjectionScope(f,this.prev()),o.some(b=>b.kind==="SUBTABLE"))throw new T("IMPORT subtable sources cannot use SELECT projection.",this.prev());if(f.columns.length!==a.length)throw new T(`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 T("BY NAME is CSV-only.",this.peek());if(this.advance(),!this.isSoftKeyword("NAME"))throw new T("BY must be followed by NAME in IMPORT.",this.peek());if(this.advance(),!d)throw new T("BY NAME requires HEADER.",this.prev());if(f)throw new T("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 T("IGNORE must be followed by UNKNOWN COLUMNS.",this.peek());if(this.advance(),!this.isSoftKeyword("COLUMNS"))throw new T("IGNORE UNKNOWN must be followed by COLUMNS.",this.peek());this.advance(),R=!0}}let m,y;if(this.isSoftKeyword("MATCH")){this.advance();for(let b of["RECORD","NUMBER","SOURCE"]){if(!this.isSoftKeyword(b))throw new T("MATCH must be followed by RECORD NUMBER SOURCE <header>.",this.peek());this.advance()}y=this.parseIdentifier()}this.peek().kind==="ON"&&this.peekAt(1).kind==="DUPLICATE"&&(m=this.parseOnDuplicate());let g;if(this.peek().kind==="REPLACE"||this.isSoftKeyword("REPLACE")){if(this.advance(),!this.isSoftKeyword("SUBTABLES"))throw new T("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 T("REPLACE SUBTABLES contains duplicates.",this.prev())}let h=o.filter(b=>b.kind==="SUBTABLE");if(h.length){if(f)throw new T("IMPORT subtables cannot use SELECT projection.",this.prev());if(l==="JSON"){if(h.some(b=>b.rowIdSourceHeader))throw new T("JSON subtable IMPORT does not accept ROW ID SOURCE.",this.prev());if(g)throw new T("REPLACE SUBTABLES is CSV-only; JSON uses nested-array replacement semantics.",this.prev())}else{if(t!=="UPDATE_RECORD_NUMBER"||!y)throw new T("CSV subtable IMPORT requires IMPORT UPDATE and MATCH RECORD NUMBER SOURCE.",this.prev());if(E!=="BY_NAME")throw new T("CSV subtable IMPORT requires BY NAME.",this.prev());if(!g)throw new T("CSV subtable IMPORT requires REPLACE SUBTABLES (...).",this.prev());let b=new Set(g);for(let L of h){if(!L.rowIdSourceHeader)throw new T(`CSV subtable ${L.subtableCode} requires ROW ID SOURCE <header>.`,this.prev());if(!b.has(L.subtableCode))throw new T(`IMPORT declares child columns for non-replaced subtable ${L.subtableCode}.`,this.prev())}for(let L of b)if(!h.some(I=>I.subtableCode===L))throw new T(`REPLACE SUBTABLES target ${L} is not declared in INTO.`,this.prev())}}else if(g)throw new T("REPLACE SUBTABLES requires subtable targets in INTO.",this.prev());if(t){if(l!=="CSV")throw new T("IMPORT UPDATE supports CSV only.",this.prev());if(E!=="BY_NAME")throw new T("IMPORT UPDATE requires BY NAME.",this.prev());if(!y)throw new T("IMPORT UPDATE requires MATCH RECORD NUMBER SOURCE <header>.",this.peek());if(m)throw new T("IMPORT UPDATE and ON DUPLICATE are mutually exclusive.",this.prev())}else if(y)throw new T("MATCH RECORD NUMBER SOURCE requires IMPORT UPDATE.",this.prev());let S=this.parseCheckGroups(),O=this.parseDmlControlSuffix();return{type:"IMPORT",appId:n,fields:a,targets:o,source:l==="JSON"?{kind:"JSON",sourceName:p}:{kind:"CSV",sourceName:p,encoding:u,hasHeader:d,mappingMode:E,ignoreUnknownColumns:R,...c?{columns:c}:{},...f?{projection:f}:{}},...t?{writeMode:t,recordNumberSourceHeader:y}:{},...g?{replaceSubtables:g}:{},...m?{keyFields:m}:{},...S,...O}}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 T("IMPORT projection cannot use subqueries.",r);if(typeof n.tableAlias=="string")throw new T("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}=ze(r,this.prev());if(i)throw new T(`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 d=this.parseIdentifier();if(this.consume("(")){let c=this.peek().kind===")"?[]:this.parseIdentList();this.expect(")"),o.push({kind:"SUBTABLE",subtableCode:d,children:c})}else o.push({kind:"FIELD",field:d})}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(),p;if(this.consume("INTO")){let d=this.peek();if(d.kind!=="IDENT"||!d.value.startsWith("#"))throw new T("VALIDATE INTO \u306B\u306F # \u3067\u59CB\u307E\u308B\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",d);p=this.parseTableName()}let u={type:"VALIDATE",appId:n,targets:o,...a?{summary:a}:{},where:s,...l,...p?{errorTable:p}:{}};return this.assertValidateExpressions(u,t),u}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 T("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 T("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 T("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 T("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 T("\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 T("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 T("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 T("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 T(`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 T("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 T("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&&Rd(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:lt},a=i?this.parseJoins():[],s=this.consume("WHERE")?this.parseWhereExpr(void 0,!0):null,l=[],p,u=null;if(this.consume("GROUP")){if(this.expect("BY"),this.peek().kind==="DISTINCT"||this.isSoftKeyword("DISTINCT"))throw new T("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 T("B65: ordinary GROUP BY items cannot be mixed with grouping elements.",this.peek());this.consume("HAVING")&&(u=this.parseWhereExpr("HAVING"))}let d="CANONICAL",c=[];if(this.consume("ORDER"))this.expect("BY"),c=this.parseOrderBy();else if(this.consume("KORDER")){if(!t)throw new T("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());d="KINTONE_NATIVE",this.expect("BY"),c=this.parseOrderBy()}let f=this.consume("LIMIT")?this.parseUnsignedInt():null,E=this.consume("OFFSET")?this.parseUnsignedInt():null,R=n.some(y=>y.type==="WINDOW_COL"),m=n.some(y=>this.selectColumnHasAggregate(y));if(R&&(l.length>0||p!==void 0||m))throw new T("\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&&d==="KINTONE_NATIVE")throw new T("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,...p?{grouping:p}:{},having:u,orderMode:d,orderBy:c,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 T("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 T("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 T("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 T("_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 Hs[this.peek().kind]??null}parseWindowColumn(t){if(this.advance(),this.expect("("),this.peek().kind!==")")throw new T(`${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 T("\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"?pe(`-${W(r)}`):{type:"AGG_ARITH",left:pe("0"),op:"-",right:r}}if(this.peek().kind==="NUMBER"){let r=this.advance();return pe(r.value)}let t=this.tryAggregateFunc();if(t!==null)return this.parseAggregateRef(t);throw new T("\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 T("\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 T("\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 T("\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 pe(`${r.kind==="-"?"-":"+"}${W(n)}`);if(r.kind==="+")throw new T("\u5358\u9805 + \u306E\u76F4\u5F8C\u306B\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059",r);return{type:"SCALAR_ARITH",left:pe("0"),op:"-",right:n}}if(r.kind==="STRING")return this.advance(),{type:"STRING",value:r.value};if(r.kind==="NUMBER")return this.advance(),pe(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 T("\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 T(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 T("\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 pe(`+${r.value}`)}if(this.peek().kind==="-"){if(this.advance(),this.peek().kind==="-"||this.peek().kind==="+")throw new T("\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"?pe(`-${W(r)}`):{type:"ARITH",left:pe("0"),op:"-",right:r}}if(this.tryStringFuncName()!==null)return this.parseStringFuncExpr();let t=this.peek();if(t.kind==="NUMBER")return this.advance(),pe(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 T("\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 T("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 T("\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(Ws.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 T("\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=md(r);if(n===null)throw new T(`\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 T("MODE \u3067\u306F DISTINCT \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);let i;if(this.consume("*")){if(!sd(t))throw new T(`${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 T("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 T){if(n.message.includes("\u6BD4\u8F03\u30FB\u8FF0\u8A9E"))throw new T("\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 T("\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 T("\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 T("\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}=ze(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 T("\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 T("\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 T("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 T("\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 T("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 T("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){if(this.groupingFieldContext==="FORBIDDEN"||this.insideAggregateArg>0)throw new T("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 T("\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:ge(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==="("&&ae(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 T("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 T("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 T("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(!pd(l))throw new T("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 p=String(a===0?0:a);return{type:"KINTONE_FUNC",name:r,args:{kind:"FROM_TODAY",offset:a,offsetText:p,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(!dd(o))throw new T(`${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(!fd(o))throw new T(`${r} \u306E\u65E5\u306F 1 \u304B\u3089 31 \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,i);n=o}else throw new T(`${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 T(`\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(Vs(t.kind))return this.advance(),this.expect("("),this.expect(")"),{type:"KINTONE_FUNC",name:$n[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 T("\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 T("\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(pe(n.value));else if(n.kind==="-"||n.kind==="+"){let i=this.peek();if(i.kind!=="NUMBER")throw new T(r,n);this.advance();let o=n.kind==="-"?"-":"+";t.push(pe(`${o}${i.value}`))}else if(n.kind==="VARIABLE")t.push({type:"VARIABLE",name:n.value.slice(1).toLowerCase()});else throw new T(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 T("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 T("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 T("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 T("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 T("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 T("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 T("B65: GROUPING() requires exactly one physical field argument.",this.peek());let r=this.parseQualifiedIdent();if(this.peek().kind!==")")throw new T("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 T("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){if(!t)throw new T("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}=ze(t,this.prev());this.expect("(");let i=this.parseIdentList();if(this.expect(")"),this.peek().kind==="SELECT"){let u=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 T("INSERT INTO ... SELECT \u306F APPLY \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(n)throw new T("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 d=this.parseCheckGroups(),c=this.parseDmlControlSuffix();return{type:"INSERT_SELECT",appId:r,fields:i,select:u,...d,...c}}this.expect("VALUES");let o=[];do{this.expect("(");let u=this.parseInsertRow(i.length);this.expect(")"),o.push(u)}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 T("APPLY SUBTABLE noun is not supported; use APPLY <field> (...)",this.peek());if(a.length>0&&this.isSoftKeyword("CHECK"))throw new T("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 T("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 T("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 T("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 T("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=a.length>0?{applyBlocks:a}:{};return n?{type:"INSERT",appId:r,subtableCode:n,fields:i,values:o,...p,...s,...l}:{type:"INSERT",appId:r,fields:i,values:o,...p,...s,...l}}parseUpsert(){this.expect("UPSERT"),this.expect("INTO"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:r,subtableCode:n}=ze(t,this.prev());if(n)throw new T("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 d=this.parseSelect(),c=this.parseOnDuplicate();if(this.isUpsertApplyBranchStart()||this.isApplyBlockStart())throw new T("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 T("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:d,keyFields:c,...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 T("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 T("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(),u=this.parseDmlControlSuffix();if(this.isUpsertApplyBranchStart()||this.isApplyBlockStart())throw new T("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,...p,...u}}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 T("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 T("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 T(`ON ${i?"INSERT":"UPDATE"} APPLY \u306F 1 \u56DE\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059`,n);if(!this.isApplyBlockStart())throw new T(`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 T("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(pe(`${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(pe(n.value));else throw new T("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 T(`\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}=ze(t,this.prev());this.expect("SET");let i=this.parseAssignments();if(n&&i.some(c=>c.value.type==="STRING_FUNC"))throw new T("\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 c=this.parseTableRef();if(c.subtableCode)throw new T("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u306B\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.prev());if(c.cteName!==null&&!c.cteName.startsWith("#"))throw new T("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(!c.alias)throw new T("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u306B\u306F\u30A8\u30A4\u30EA\u30A2\u30B9\u304C\u5FC5\u8981\u3067\u3059",this.prev());if(c.alias.toLowerCase()===`app${r}`.toLowerCase())throw new T(`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:c.appId,cteName:c.cteName,alias:c.alias,targetJoinField:"",joinKeyField:"",targetFilter:null}}let a=this.peek();if(!this.consume("WHERE"))throw new T("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 T("APPLY SUBTABLE noun is not supported; use APPLY <field> (...)",this.peek());if(l.length>0&&this.peek().kind==="WHERE")throw new T("\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 T("\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 c=this.decomposeUpdateFromWhere(s,r,o.alias,a);o.targetJoinField=c.targetJoinField,o.joinKeyField=c.joinKeyField,o.targetFilter=c.targetFilter}else{if(i.some(c=>c.value.type==="SOURCE_FIELD"))throw new T("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(c=>c.value.type==="STRING_FUNC"&&this.nodeContainsAnyQualifier(c.value)))throw new T("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 T("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 T("ON ERROR SKIP / REJECT LIMIT \u306F APPLY \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let p=this.parseCheckGroups(),u=this.parseDmlControlSuffix();if(this.isSoftKeyword("APPLY"))throw new T("APPLY \u306F VALIDATE ONLY \u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(n&&p.checkGroups)throw new T("CHECK \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(n&&(u.validateOnly||u.onErrorSkip))throw new T("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 d=l.length>0?{applyBlocks:l}:{};return o!==null?{type:"UPDATE",appId:r,assignments:i,where:s,from:o,...d,...p,...u}:n?{type:"UPDATE",appId:r,subtableCode:n,assignments:i,where:s,...d,...p,...u}:{type:"UPDATE",appId:r,assignments:i,where:s,...d,...p,...u}}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 T("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 T("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 T("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 T("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 T("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 T("ALL \u306E\u5F8C\u306B\u306F ROWS \u304C\u5FC5\u8981\u3067\u3059",this.peek());return this.advance(),{kind:"ALL_ROWS"}}throw new T("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 T("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 T("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 T("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 T("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 T("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 T("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 T("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 T("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 T("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 T("ON \u306E\u5F8C\u306B\u306F ERROR \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(this.advance(),!this.isSoftKeyword("SKIP"))throw new T("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 T("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 T("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 T("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 T("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 T("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 T(`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 T("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 T("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 T("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((u,d)=>{let c=this.matchUpdateFromJoin(u,r,n);c!==null&&a.push({index:d,...c})}),a.length!==1)throw new T("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 u=0;u<o.length;u++){if(u!==s.index&&this.nodeContainsQualifiedField(o[u],n))throw new T("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(u!==s.index&&this.nodeContainsForeignQualifier(o[u],r))throw new T(`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((u,d)=>d!==s.index).reduce((u,d)=>u===null?d:{type:"LOGICAL",op:"AND",left:u,right:d},null);return{targetJoinField:s.targetField,joinKeyField:s.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 T("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(Vs(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 T("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 T("\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}=ze(t,this.prev()),i=this.peek();if(!this.consume("WHERE"))throw new T("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}=ze(r,this.prev());if(!i)throw new T("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 T("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 T("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 T("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 T(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 T("\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 T("\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 T("\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 T("\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 T(`DML on temp table ${t.value} is not supported.`,t)}parseAliasName(){let t=this.peek();if(t.value.startsWith("#"))throw new T("\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"||xn.has(t.value.toUpperCase()))return this.advance(),t.value.toLowerCase();throw new T("\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 md(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 ze(e,t){let r=e.match(/^[Aa][Pp][Pp](\d+)(?:\$(.+))?$/);if(!r)throw new T(`\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 Ys(e){return e==="INSERT"||e==="INSERT_SELECT"||e==="UPDATE"||e==="DELETE"||e==="UPSERT"||e==="UPSERT_SELECT"||e==="REORDER"||e==="IMPORT"}var yd=new Set(["STDDEV_POP","STDDEV_SAMP","VAR_POP","VAR_SAMP","MEDIAN","MODE"]);function de(e,t){for(let r of t)e.add(r)}function Gn(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"&&yd.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=>Gn(i,t)):Gn(n,t))}function It(e){let t=new Set;if(Ys(e.type))return t.add("DML"),t;switch(e.type){case"VALIDATE":t.add("VALIDATE");break;case"SELECT":de(t,Jt(e));break;case"UNION":de(t,js(e));break;case"WITH":for(let r of e.ctes)de(t,It(r.query));de(t,It(e.query));break;case"CREATE_TEMP_TABLE":de(t,It(e.query));break;default:break}return Gn(e)&&t.add("STATISTICAL_AGGREGATE"),t}function js(e){let t=e.left.type==="SELECT"?Jt(e.left):js(e.left);return de(t,Jt(e.right)),t}function Jt(e){let t=new Set;Q(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"&&de(t,Jt(r.query)),r.type==="CASE_COL")for(let n of r.expr.branches)de(t,Xt(n.condition));return de(t,Xt(e.where)),de(t,Xt(e.having)),Gn(e)&&t.add("STATISTICAL_AGGREGATE"),t}function Xt(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")&&de(t,Jt(e.right.query));break;case"LOGICAL":de(t,Xt(e.left)),de(t,Xt(e.right));break;case"NOT":case"GROUP":de(t,Xt(e.expr));break;case"EXISTS":de(t,Jt(e.query));break;case"NULL_CHECK":case"BOOLEAN":break}return t}var gd=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})}),Io=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})}),Cr="v1";function $(e){throw new Error(`UnsupportedError: APPLY ${Cr} scope does not support ${e}`)}function hd(e,t){let r=Cr;Cr=e;try{return t()}finally{Cr=r}}function Ad(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 Wn(e,t){return hd(e,()=>Sd(t,gd[e]))}function Sd(e,t){let r=Ad(e);if(r===null)return;if(r.type==="UPSERT"){wd(r,t);return}let n=r.applyBlocks;if(To(n),!t.multipleBlocks&&n.length!==1&&$("multiple APPLY blocks in this phase"),r.type==="INSERT"){Id(r,n,t);return}let i=r;i.subtableCode&&$("a subtable UPDATE as the parent statement in this phase"),!t.updateFrom&&i.from!=null&&$("UPDATE ... FROM in this phase"),!t.check&&i.checkGroups?.length&&$("CHECK in this phase"),!t.onErrorSkip&&i.onErrorSkip&&$("ON ERROR SKIP in this phase"),!t.rejectLimit&&i.rejectLimit!=null&&$("REJECT LIMIT in this phase"),bd(i.where,t.multipleParents),zs(n,t)}function zs(e,t){for(let r of e){for(let n of r.operations)t.operations.has(n.kind)||$(`${n.kind} in this phase`);Xs(r);for(let n of r.operations){if(n.kind==="APPEND"){for(let i of n.fields)Vn(i,"APPEND targets");Zt(n.values,"APPEND values");continue}if(n.kind==="REMOVE"){!t.expectRows&&n.expectRows&&$("EXPECT ROWS in this phase"),n.selector.kind==="WHERE"&&qs(n.selector.where,t.idxSelectors);continue}if(n.kind==="PATCH"){!t.expectRows&&n.expectRows&&$("EXPECT ROWS in this phase"),n.assignments.length===0&&$("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(".")&&$("parent or qualified PATCH targets in this phase")}Zt(n.assignments,"PATCH assignments"),n.selector.kind==="WHERE"&&qs(n.selector.where,t.idxSelectors)}}}}function Xs(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 Js(e,t){if(Xs(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 To(e){let t=new Set;for(let r of e){if(t.has(r.field))throw new Error(`ArgumentError: APPLY ${Cr} scope allows only one block for table ${r.field}`);t.add(r.field)}}function wd(e,t){t.upsert||$("UPSERT in this phase"),!t.check&&e.checkGroups?.length&&$("CHECK in this phase"),!t.onErrorSkip&&e.onErrorSkip&&$("ON ERROR SKIP in this phase"),!t.rejectLimit&&e.rejectLimit!=null&&$("REJECT LIMIT in this phase");let r=e.onInsertApplyBlocks??[],n=e.onUpdateApplyBlocks??[];To(r),To(n),!t.multipleBlocks&&(r.length>1||n.length>1)&&$("multiple APPLY blocks in this phase"),Qs(r,"UPSERT ON INSERT"),zs(n,{...t,idxSelectors:!1,expectRows:!1})}function Qs(e,t){for(let r of e)for(let n of r.operations){n.kind!=="APPEND"&&$(`${n.kind} for ${t} in this phase`);for(let i of n.fields)Vn(i,"APPEND targets");Zt(n.values,"APPEND values")}}function Id(e,t,r){r.insert||$("INSERT in this phase"),e.subtableCode&&$("a subtable INSERT as the parent statement in this phase"),!r.check&&e.checkGroups?.length&&$("CHECK in this phase"),!r.onErrorSkip&&e.onErrorSkip&&$("ON ERROR SKIP in this phase"),!r.rejectLimit&&e.rejectLimit!=null&&$("REJECT LIMIT in this phase"),Qs(t,"INSERT")}function Xe(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 Zs(e,t){let r=Io[e],n="validateOnly"in t&&t.validateOnly===!0;if(t.type!=="EXPLAIN"&&!n&&el(t)&&e!=="phase15b")throw new Error(`UnsupportedError: APPLY ${Qt(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 ${Qt(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 ${Qt(e)} INSERT execution is not connected`);return}if(!(t.type!=="UPDATE"||!t.applyBlocks?.length)&&!r.multipleParentPreflight&&!Xe(t.where))throw new Error(`UnsupportedError: APPLY ${Qt(e)} execution does not support multiple-parent APPLY`)}function el(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 tl(e,t){if(!(t.type!=="UPDATE"||!t.applyBlocks?.length||Xe(t.where))&&!Io[e].publicMultipleParentWrite)throw new Error(`UnsupportedError: APPLY ${Qt(e)} public multiple-parent write is not connected`)}function er(e){if(!Io[e].internalPreparedWrite)throw new Error(`UnsupportedError: APPLY ${Qt(e)} internal prepared write is not available`)}function Qt(e){return`Phase ${e.slice(5)}`}function bd(e,t){Xe(e)||(e.type==="BINARY"&&e.op==="="&&e.left.type==="FIELD"&&e.left.tableAlias===null&&e.left.field==="$id"&&$("a parent $id that is not a positive safe integer in this phase"),t||$("a parent WHERE other than the single condition $id = <positive safe integer> in this phase"),wo(e,t))}function wo(e,t){if(Array.isArray(e)){for(let o of e)wo(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")&&$("KLIKE in parent WHERE"),(n==="SELECT"||n==="SCALAR_SUBQUERY"||n==="SUBQUERY_IN_LIST"||n==="EXISTS")&&$("subqueries in parent WHERE"),(n==="WINDOW_COL"||n==="AGGREGATE"||n==="AGG_REF"||n==="AGG_ARITH"||n==="ARITH_AGG_COL")&&$("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)&&$("aggregate or window expressions in parent WHERE"),n==="KINTONE_FUNC"&&!(typeof r.name=="string"&&ae(r.name))&&$("non-deterministic kintone functions in parent WHERE");for(let o of Object.values(r))wo(o,t)}function qs(e,t){Zt(e,"child row selectors",t)}function Zt(e,t,r=!1){if(Array.isArray(e)){for(let s of e)Zt(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")&&$(`KLIKE in ${t}`),(i==="SELECT"||i==="SCALAR_SUBQUERY"||i==="SUBQUERY_IN_LIST"||i==="EXISTS")&&$(`subqueries in ${t}`),(i==="WINDOW_COL"||i==="AGGREGATE"||i==="AGG_REF"||i==="AGG_ARITH"||i==="ARITH_AGG_COL")&&$(`aggregate or window expressions in ${t}`),i==="KINTONE_FUNC"&&!(typeof n.name=="string"&&ae(n.name))&&$(`non-deterministic kintone functions in ${t}`),i==="FIELD"){let s=n.tableAlias,l=n.field;s!=null&&$(`qualified or parent field references in ${t}`),Vn(l,t,r)}if(i==="FIELD_REF"&&Vn(n.field,t,r),!(o==="PATCH"||o==="APPEND"||o==="REMOVE"))for(let s of Object.values(n))Zt(s,t,r)}function Vn(e,t,r=!1){if(typeof e!="string")return;let n=e.toLowerCase();n==="_idx"&&!r&&$(`_idx in ${t}`),(n.startsWith("_p.")||n.includes("."))&&$(`parent or qualified field references in ${t}`),/^(count|sum|avg|min|max|group_concat)\s*\(/i.test(e)&&$(`aggregate expressions in ${t}`)}function Or(e){switch(e.type){case"BOOLEAN":return{type:"BOOLEAN",value:!e.value};case"BINARY":{let t=Pd(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:Or(e.left),right:Or(e.right)};case"NOT":return e.expr;case"GROUP":return{type:"GROUP",expr:Or(e.expr)};case"EXISTS":return{...e,not:!e.not}}}function Pd(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 rl(e){return e.includes("%")||e.includes("_")}function Lr(e){return e.type==="BINARY"&&(e.op==="LIKE"||e.op==="NOT_LIKE")}function tr(e){return e.type==="BINARY"&&(e.op==="KLIKE"||e.op==="NOT_KLIKE")}function ut(e){if(e===null)return!1;if(Lr(e))return!0;switch(e.type){case"LOGICAL":return ut(e.left)||ut(e.right);case"NOT":case"GROUP":return ut(e.expr);case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return!1}}function se(e){if(e===null)return!1;if(tr(e))return!0;switch(e.type){case"LOGICAL":return se(e.left)||se(e.right);case"NOT":case"GROUP":return se(e.expr);case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return!1}}function G(e){switch(e.type){case"BINARY":return Nd(e);case"NULL_CHECK":return Od(e);case"LOGICAL":return Ld(e);case"NOT":return _d(e);case"GROUP":return Dd(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 Nd(e){if(Lr(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=il(e.left),r=Cd(e.op),n=vd(e.right,e.op);return`${t} ${r} ${n}`}function Cd(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 Od(e){let t=il(e.field);return e.not?`${t} != ""`:`${t} = ""`}function Ld(e){let t=G(e.left),r=G(e.right),n=e.op==="AND"?"and":"or",i=nl(e.left)?`(${t})`:t,o=nl(e.right)?`(${r})`:r;return`${i} ${n} ${o}`}function _d(e){return G(Or(e.expr))}function Dd(e){return`(${G(e.expr)})`}function il(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 Gd(e.field)}function vd(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 ol(e);case"NUMBER":return W(e);case"KINTONE_FUNC":return Ud(e);case"IN_LIST":return Bd(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 ol(e){return`"${e.value.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Ud(e){switch(e.name){case"TODAY":case"NOW":case"LOGINUSER":return`${e.name}()`}return kd(e)}function kd(e){switch(e.name){case"YESTERDAY":case"TOMORROW":case"THIS_YEAR":case"LAST_YEAR":case"NEXT_YEAR":return e.args?.kind!=="NONE"?_r():`${e.name}()`;case"FROM_TODAY":return e.args?.kind!=="FROM_TODAY"||!Fd(e.args.offset,e.args.offsetText)||!Md.has(e.args.unit)?_r():`${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&&!xd.has(e.args.weekday)?_r():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"||!Kd(e.args.day)?_r():e.args.day===null?`${e.name}()`:`${e.name}(${e.args.day})`}return _r()}var Md=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),xd=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function Fd(e,t){return!Number.isSafeInteger(e)||!/^(?:0|[1-9]\d*|-[1-9]\d*)$/.test(t)?!1:Number(t)===e}function Kd(e){return e===null||e==="LAST"||typeof e=="number"&&Number.isInteger(e)&&e>=1&&e<=31}function _r(){throw new Z("internal error: invalid relative date function AST reached kintone query conversion")}function Bd(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 $d(e.values),`(${e.values.map(n=>n.type==="STRING"?ol(n):W(n)).join(",")})`}function $d(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 Gd(e){return/^[\w$\u3000-\u9FFF]+$/u.test(e)?e:`"${e.replace(/"/g,'\\"')}"`}function nl(e){return e.type==="LOGICAL"}var Z=class extends Error{constructor(t){super(t),this.name="KintoneQueryError"}};function Vd(e){return e.some(t=>t.type==="WINDOW_COL")}function be(e){return e.from.subtableCode||e.joins.some(t=>t.table.subtableCode)||e.joins.length>0||Q(e).type!=="NONE"||e.distinct||Vd(e.columns)||e.columns.some(t=>t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"||t.type==="SCALAR_SUBQUERY_COL"||t.type==="STRFUNC_COL"&&cl(t.expr)||t.type==="SCALAR_VALUE_COL"&&vr(t.expr))||ct(e.where)||e.orderBy.some(t=>t.key.type!=="FIELD_NAME")?"FULL_SCAN":"SIMPLE"}function ct(e){if(e===null)return!1;switch(e.type){case"BOOLEAN":return!0;case"BINARY":return al(e.left)||e.right.type==="ARITH_VALUE"||e.right.type==="CASE_VALUE"||e.right.type==="SUBQUERY_IN_LIST"||e.right.type==="SCALAR_SUBQUERY"||Lr(e);case"NULL_CHECK":return al(e.field);case"LOGICAL":return ct(e.left)||ct(e.right);case"NOT":case"GROUP":return ct(e.expr);case"EXISTS":return!0}}function al(e){return e.type==="FUNC_FIELD"||e.type==="ARITH_FIELD"||e.type==="CASE_FIELD"}function Hn(e){let t=[],n=(e.limit!==null||e.offset!==null)&&e.orderBy.length===0;if(e.where!==null&&t.push(G(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:Hd(e.columns),totalCount:!1}}function ul(e,t){let r=[];return e.where!==null&&e.joins.length===0&&!ct(e.where)&&r.push(G(e.where)),{app:t,query:r.join(" "),fields:[]}}function bt(e,t,r){let i=zd(e,r).get(t);if(!i)return[];if(i.allFields)return[];let o=new Set(i.fields);return i.table.subtableCode&&o.add(i.table.subtableCode),o.size===0&&o.add("$id"),[...o]}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 Hd(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(Po(n.field)):n.type==="ARITH_COL"?Dr(n.expr,r):n.type==="STRFUNC_COL"?No(n.expr,r):n.type==="SCALAR_VALUE_COL"&&rr(n.expr,r);return[...new Set(r)]}function Yd(e,t){Dr(e.left,t),Dr(e.right,t)}function Dr(e,t){e.type==="FIELD_REF"?t.push(Po(e.field)):e.type==="ARITH"?Yd(e,t):e.type==="STRING_FUNC"&&No(e,t)}function Po(e){let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function No(e,t){for(let r of e.args)jd(r,t)}function jd(e,t){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"){bo(e,t);return}rr(e,t)}function rr(e,t){if(e.type==="FIELD"){t.push(Po(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"){rr(e.left,t),rr(e.right,t);return}if(e.type==="CASE_WHEN"){for(let r of e.branches)sl(r.result,t);e.elseResult&&sl(e.elseResult,t)}}function sl(e,t){if(e.type!=="ARRAY"){if(e.type==="FIELD_REF"||e.type==="ARITH"){Dr(e,t);return}rr(e,t)}}function bo(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&qd(e.arg,t);return}e.type==="AGG_ARITH"&&(bo(e.left,t),bo(e.right,t))}function qd(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?Dr(e,t):rr(e,t)}function cl(e){return e.args.some(t=>t.type==="AGG_REF"||t.type==="AGG_ARITH"?!0:vr(t))}function vr(e){return e.type==="STRING_FUNC"?cl(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?vr(e.left)||vr(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>ll(t.result))||e.elseResult!==null&&ll(e.elseResult):!1}function ll(e){return e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?!1:vr(e)}function zd(e,t){let r=[e.from,...e.joins.map(A=>A.table)],n=[e.from,...e.joins.map(A=>A.table)].filter(A=>A.cteName===null),i=new Map;for(let A of n)i.set(A,{table:A,allFields:!1,fields:new Set});if(i.size===0)return i;let o=n[0]??null,a=n.find(A=>!!A.subtableCode)??null,s=new Map;for(let A of n)A.alias&&s.set(A.alias,A),A.subtableCode||(s.set(`APP${A.appId}`,A),s.set(`app${A.appId}`,A));let l=Xd(e.columns),p=A=>{let P=i.get(A);P&&(P.allFields=!0,P.fields.clear())},u=()=>{for(let A of n)p(A)},d=()=>{for(let A of n)A.subtableCode&&p(A)},c=(A,P)=>{let N=i.get(A);if(!(!N||N.allFields)){if(A.subtableCode){if(P.startsWith("_p.")){let w=P.slice(3);w&&w!=="*"&&N.fields.add(w);return}return void 0}P&&N.fields.add(P)}},f=(A,P="select",N)=>{if(!A||A==="*")return;if(A==="_p.*"){d();return}if(A.endsWith(".*")){let U=A.slice(0,-2);if(!U){u();return}if(U==="_p"){d();return}let B=s.get(U);if(B){p(B);return}return}if(P==="groupBy"&&N!==void 0){if(N.kind==="PHYSICAL"){let U=r[N.sourceIndex];U?.cteName===null&&c(U,N.fieldCode)}return}if((P==="orderBy"||P==="having"||P==="groupBy")&&l.has(A)||(P==="orderBy"||P==="having"||P==="groupBy")&&Jd(A))return;let w=A.indexOf(".");if(w>0){let U=A.slice(0,w),B=A.slice(w+1);if(U==="_p"){a&&c(a,`_p.${B}`);return}let K=s.get(U);if(K){c(K,B);return}}o&&c(o,A)},E=(A,P,N="select")=>{if(P){if(P==="_p"){a&&c(a,`_p.${A}`);return}let w=s.get(P);if(w){c(w,A);return}}f(A,N)},R=(A,P="select")=>{if(A.type==="FIELD_REF"){f(A.field,P);return}if(A.type==="ARITH"){R(A.left,P),R(A.right,P);return}if(A.type==="STRING_FUNC"){g(A,P);return}},m=(A,P="select")=>{if(A.type==="AGG_REF"){A.arg.type!=="WILDCARD"&&S(A.arg,P);return}A.type==="AGG_ARITH"&&(m(A.left,P),m(A.right,P))},y=(A,P="select")=>{if(A.type==="AGG_REF"||A.type==="AGG_ARITH"){m(A,P);return}h(A,P)},g=(A,P="select")=>{for(let N of A.args)y(N,P)},h=(A,P="select")=>{if(A.type==="FIELD"){E(A.field,A.tableAlias,P);return}if(A.type==="STRING_FUNC"){g(A,P);return}if(A.type==="SCALAR_ARITH"||A.type==="CONCAT_OP"){h(A.left,P),h(A.right,P);return}A.type==="CASE_WHEN"&&b(A,P)},S=(A,P="select")=>{if(A.type==="FIELD_REF"||A.type==="ARITH"){R(A,P);return}h(A,P)},O=(A,P="select")=>{if(A.type!=="ARRAY"){if(A.type==="FIELD_REF"||A.type==="ARITH"){R(A,P);return}h(A,P)}},b=(A,P="select")=>{for(let N of A.branches)_(N.condition,P),O(N.result,P);A.elseResult&&O(A.elseResult,P)},L=(A,P="select")=>{if(A.type==="FIELD"){E(A.field,A.tableAlias,P);return}if(A.type==="FUNC_FIELD"){g(A.expr,P);return}if(A.type==="ARITH_FIELD"){R(A.expr,P);return}A.type!=="GROUPING_FIELD"&&b(A.expr,P)},I=(A,P="select")=>{if(A.type==="ARITH_VALUE"){R(A.expr,P);return}if(A.type==="CASE_VALUE"){b(A.expr,P);return}},_=(A,P="where")=>{if(A)switch(A.type){case"BINARY":L(A.left,P),I(A.right,P);return;case"NULL_CHECK":L(A.field,P);return;case"LOGICAL":_(A.left,P),_(A.right,P);return;case"NOT":case"GROUP":_(A.expr,P);return;case"EXISTS":case"BOOLEAN":return}},C=(A,P)=>{if(A.type==="FIELD_NAME"){f(A.name,"groupBy",P);return}if(A.type==="ARITH_KEY"){R(A.expr,"groupBy");return}g(A.expr,"groupBy")},v=(A,P="orderBy")=>{if(A.type==="FIELD_NAME"){f(A.name,P);return}if(A.type==="ARITH_KEY"){R(A.expr,P);return}A.type!=="GROUPING_KEY"&&g(A.expr,P)};for(let A of e.columns)switch(A.type){case"WILDCARD":u();break;case"PARENT_WILDCARD":d();break;case"FIELD":f(A.field,"select");break;case"LITERAL_COL":break;case"VARIABLE_COL":throw new Error(`internal error: unresolved SELECT variable @${A.name}`);case"AGGREGATE":A.arg.type!=="WILDCARD"&&S(A.arg,"select");break;case"ARITH_AGG_COL":m(A.expr,"select");break;case"ARITH_COL":R(A.expr,"select");break;case"CASE_COL":b(A.expr,"select");break;case"STRFUNC_COL":g(A.expr,"select");break;case"SCALAR_VALUE_COL":h(A.expr,"select");break;case"GROUPING_COL":break;case"SCALAR_SUBQUERY_COL":break;case"WINDOW_COL":for(let P of A.partitionBy)E(P.field,P.tableAlias,"select");for(let P of A.orderBy)v(P.key,"select");break}for(let A of e.joins)E(A.on.left.field,A.on.left.tableAlias,"where"),E(A.on.right.field,A.on.right.tableAlias,"where");_(e.where,"where");let k=Q(e);if(k.type==="PLAIN")k.allItems.forEach((A,P)=>C(A,t?.items[P]));else if(k.type==="GROUPING_SETS")for(let A of k.allItems)E(A.field,A.tableAlias,"select");_(e.having,"having");for(let A of e.orderBy)v(A.key);return i}function Xd(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(ge(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 Jd(e){return/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/i.test(e)}function pt(e){if(e.ctes.length!==1)return!1;let t=e.ctes[0];if(t.query.type!=="SELECT"||be(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||xs(r)||r.distinct?!1:!r.columns.some(n=>n.type==="AGGREGATE"||n.type==="ARITH_AGG_COL")}function dt(e){let t=e.ctes[0].query,r=e.query,n=Yn(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 Yn(e,t){if(e===null||t===null)return e;switch(e.type){case"BINARY":return{...e,left:pl(e.left,t)};case"NULL_CHECK":return{...e,field:pl(e.field,t)};case"LOGICAL":return{...e,left:Yn(e.left,t),right:Yn(e.right,t)};case"NOT":case"GROUP":return{...e,expr:Yn(e.expr,t)};case"EXISTS":case"BOOLEAN":return e}}function pl(e,t){return e.type==="FIELD"&&e.tableAlias===t?{...e,tableAlias:null}:e}function nr(e,t={}){return Ur(e,r=>Qd(r,t))}function kr(e,t={}){return Ur(e,r=>dl(r,t)||fl(r,t))}function Ur(e,t){switch(e.type){case"BINARY":return t(e)?e:null;case"LOGICAL":if(e.op!=="AND")return null;{let r=Ur(e.left,t),n=Ur(e.right,t);return r&&n?{...e,left:r,right:n}:r??n??null}case"GROUP":return Ur(e.expr,t);case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return null}}function Qd(e,t){return Zd(e,t)||rf(e,t)?!0:dl(e,t)?t.fieldTypes?.get(e.left.field)==="NUMBER":tf(e,t)}function Zd(e,t){return t.allowKlike===!1||e.op!=="KLIKE"&&e.op!=="NOT_KLIKE"||e.left.type!=="FIELD"||!Co(e.left,t)?!1:e.right.type==="STRING"||t.allowUnresolvedKlikeVariables===!0&&e.right.type==="VARIABLE"}var ef=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]);function tf(e,t){if(!fl(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||!ef.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 rf(e,t){return!nf(e.left,t)||e.right.type!=="NUMBER"?!1:e.op==="="||e.op===">"||e.op==="<"||e.op===">="||e.op==="<="}function nf(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 dl(e,t){return e.left.type!=="FIELD"||e.left.field==="$id"||!Co(e.left,t)||e.right.type!=="NUMBER"?!1:e.op==="="?!0:(e.op==="<"||e.op===">")&&/^[+-]?\d+$/.test(W(e.right))&&Number.isSafeInteger(e.right.value)}function fl(e,t){return e.left.type!=="FIELD"||e.left.field==="$id"||!Co(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 Co(e,t){let r=t.tableAlias??null;return e.tableAlias===r?!0:t.allowUnqualifiedFields===!0&&e.tableAlias===null}function Mr(e,t={}){let r=e!==null&&t.extractCondition!==!1?nr(e,t):null,n=new Set;ir(r,n);let i=new Set;return ir(e,i),{condition:r,appliedKlikes:n,allKlikes:[...i]}}function or(e,t={}){let n={allowKlike:e.joins.every(u=>u.type==="INNER"),allowUnresolvedKlikeVariables:t.allowUnresolvedVariables},i=!e.from.subtableCode&&e.from.cteName===null,o=e.joins.length===0||e.from.alias!==null,a=Mr(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 u of e.joins){if(!u.table.alias||u.table.subtableCode||u.table.cteName!==null)continue;let d=nr(e.where,{...n,tableAlias:u.table.alias,fieldTypes:t.fieldTypesByApp?.get(u.table.appId),fieldOptions:t.fieldOptionsByApp?.get(u.table.appId)});d!==null&&l.set(u.table.alias,d)}let p=new Set(a.appliedKlikes);for(let u of l.values())ir(u,p);return{mainCondition:s,joinConditions:l,appliedKlikes:p,allKlikes:a.allKlikes}}function Oo(e){return e.allKlikes.filter(t=>!e.appliedKlikes.has(t))}function ir(e,t){if(e!==null){if(tr(e)){t.add(e);return}switch(e.type){case"LOGICAL":ir(e.left,t),ir(e.right,t);return;case"NOT":case"GROUP":ir(e.expr,t);return;case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}}var oe=class extends Error{constructor(t){super(`ArgumentError: ${t}`),this.name="ArgumentError"}};function lr(e){El(e)}function _o(e){if(Oo(e).length>0)throw new oe("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 El(e){switch(e.type){case"SELECT":sr(e);return;case"UNION":vo(e);return;case"WITH":Rl(e);return;case"EXPLAIN":El(e.query);return;case"CREATE_TEMP_TABLE":Do(e.query);return;case"SET_VARIABLE":case"DECLARE_VARIABLE":case"ASSERT":ar(e);return;case"UPDATE":if(e.applyBlocks?.length&&!Xe(e.where)&&se(e.where)){Lo(e.where),ar(e);return}if(ft(e)&&e.subtableCode)throw new oe("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&&se(e.where)&&!af(e,e.where)){Lo(e.where),ar(e);return}if(ft(e))throw new oe("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(ft(e)&&e.subtableCode)throw new oe("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&&se(e.where)){Lo(e.where),ar(e);return}if(ft(e))throw new oe("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(ft(e))throw new oe("KLIKE / NOT KLIKE \u306F INSERT / INSERT SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"UPSERT":case"UPSERT_SELECT":if(ft(e))throw new oe("KLIKE / NOT KLIKE \u306F UPSERT / UPSERT SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"REORDER":if(ft(e))throw new oe("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(ft(e))throw new oe("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 Lo(e){qn(e,t=>{if(!tr(t))return;let r=t.right;if(r.type!=="STRING"&&r.type!=="VARIABLE")throw new oe("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 oe("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 Do(e){e.type==="SELECT"?sr(e):e.type==="UNION"?vo(e):Rl(e)}function vo(e){Do(e.left),sr(e.right)}function Rl(e){if(pt(e)){sr(dt(e));return}for(let t of e.ctes)t.query.type==="SELECT"?sr(t.query):t.query.type==="UNION"&&vo(t.query);Do(e.query)}function sr(e){if(of(e),se(e.where)&&!(be(e)==="SIMPLE"&&e.from.cteName===null&&e.joins.every(r=>r.table.cteName===null))){let r=or(e,{allowUnresolvedVariables:!0});if(Oo(r).length===0){ar(e);return}throw new oe("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")}ar(e)}function of(e){qn(e,t=>{if(!tr(t))return;if(!jn(e.where,t))throw new oe("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 oe("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 oe("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 ar(e){zn(e,t=>{t.type==="SELECT"&&sr(t)},!0)}function ft(e){let t=!1;return zn(e,r=>{r.type==="BINARY"&&(r.op==="KLIKE"||r.op==="NOT_KLIKE")&&(t=!0)}),t}function af(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 jn(e,t){if(e===null)return!1;if(e===t)return!0;switch(e.type){case"LOGICAL":return jn(e.left,t)||jn(e.right,t);case"NOT":case"GROUP":return jn(e.expr,t);case"BINARY":case"NULL_CHECK":case"EXISTS":return!1;case"BOOLEAN":return!1}}function qn(e,t){if(Array.isArray(e)){for(let n of e)qn(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&&sf(n)||qn(n,t)}function zn(e,t,r=!1){if(Array.isArray(e)){for(let i of e)zn(i,t);return}if(e===null||typeof e!="object")return;let n=e;r||t(n);for(let i of Object.values(n))zn(i,t)}function sf(e){return e!==null&&typeof e=="object"&&e.type==="SELECT"}var ml=Symbol("ksql.groupingRowMeta"),yl=new WeakMap;function gl(e,t){return Object.defineProperty(e,ml,{value:{includedCanonicalIds:t},enumerable:!1,configurable:!1,writable:!1}),e}function lf(e){return e[ml]}function uf(e){return lf(e)?.includedCanonicalIds}function hl(e,t){yl.set(e,t)}function ur(e,t){let r=uf(t);if(!r)throw new Error("internal error: GROUPING() evaluation requires B65 grouping row membership.");let n=yl.get(e);if(!n)throw new Error("internal error: GROUPING() reference was not resolved during B65 planning.");return r.has(n)?"0":"1"}var Sl=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 Qn(e){return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field}function ko(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 Pe(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(n=>Pe(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=>Pe(n,t))}}function Zn(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(n=>Zn(n,t));return}let r=e;if(!(r.type==="SELECT"||r.type==="SCALAR_SUBQUERY")){if(r.type==="AGGREGATE"||r.type==="AGG_REF"){Pe(r.arg,t);return}Object.values(r).forEach(n=>Zn(n,t))}}function xr(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(i=>xr(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(ko(r.field));return}Object.values(r).forEach(i=>xr(i,t))}}function Fr(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(Fr);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(Fr)}function cf(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"?Fr(e):!1}function pf(e){return new Set(e.flatMap(t=>"alias"in t&&typeof t.alias=="string"?[t.alias]:[]))}function Al(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 df(e,t,r){let n=t(e.field);if(!n.physical)throw new Error(`ArgumentError: B65 grouping reference ${Qn(e.field)} must resolve to a physical APP field.`);if(!r.has(n.canonicalId))throw new Error(`ArgumentError: B65 GROUPING argument ${Qn(e.field)} is not present in grouping allItems (reason=B65_GROUPING_ARG_NOT_ITEM).`);hl(e,n.canonicalId)}function Uo(e,t,r,n){let i=t(e);if(!i.physical||!r.has(i.canonicalId))throw new Error(`ArgumentError: B65 non-aggregate field ${Qn(e)} in ${n} is not a grouping item (reason=B65_NON_GROUPED_DEPENDENCY).`)}function ff(e){if(e.type==="GROUPING_KEY")return[];if(e.type==="FIELD_NAME")return[ko(e.name)];let t=[];return xr(e,t),t}function Tl(e){let t=Q(e),r=[];for(let i of e.columns)i.type!=="WINDOW_COL"&&Pe(i,r);Pe(e.having,r),Pe(e.orderBy,r);let n=[];Pe(e.where,n),Pe(e.joins,n),Zn(e.columns,n),Zn(e.having,n);for(let i of e.columns)i.type==="WINDOW_COL"&&Pe(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 wl(e,t,r=()=>{}){Tl(e);let n=Q(e),i=[];for(let u of e.columns)u.type!=="WINDOW_COL"&&Pe(u,i);if(Pe(e.having,i),Pe(e.orderBy,i),n.type!=="GROUPING_SETS")return null;let o=Fs(e,t),a=new Set,s=[];for(let u of o.allItems){let d=u;if(!d.physical)throw new Error(`ArgumentError: B65 grouping item ${Qn(u.field)} must resolve to a physical APP field.`);a.has(d.canonicalId)||(a.add(d.canonicalId),s.push(d))}r({expandedSetCount:n.sets.length,canonicalItemCount:a.size});for(let u of i)df(u,t,a);let l=pf(e.columns);for(let u of e.columns){if(u.type==="GROUPING_COL"||u.type==="AGGREGATE"||u.type==="ARITH_AGG_COL"||u.type==="LITERAL_COL"||u.type==="VARIABLE_COL"||u.type==="SCALAR_SUBQUERY_COL")continue;let d=[];u.type==="FIELD"?d.push(ko(u.field)):xr(u,d);for(let c of d)Uo(c,t,a,"SELECT")}if(e.having){let u=[];xr(e.having,u);for(let d of u)d.tableAlias===null&&l.has(d.field)||Al(d)||Uo(d,t,a,"HAVING")}for(let u of e.orderBy)for(let d of ff(u.key))d.tableAlias===null&&l.has(d.field)||Al(d)||Uo(d,t,a,"ORDER BY");let p=new Set;for(let u of s)p.add(u.directKey),u.unqualifiedBridgeKey!==null&&p.add(u.unqualifiedBridgeKey);for(let u of e.columns){if(!cf(u))continue;let d="alias"in u?u.alias:null;if(d!==null&&p.has(d))throw new Error(`ArgumentError: B65 aggregate alias ${d} collides with a grouping runtime key (reason=B65_AGGREGATE_ALIAS_COLLISION).`)}return o}var Ef=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME","CREATOR","MODIFIER"]),Rf=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":Rf.has(e.fieldType)?t="option":Ef.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 cr(e,t,r){return{...e,source:{appId:t,fieldCode:r}}}function ei(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 Et(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 mf(e,t){return e<t?-1:e>t?1:0}function Il(e){if(e==="")return{band:0};let t=Ie(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 yf(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?Fn(r.value,n.value):r.band===5&&n.band===5?Et(r.value,n.value):0}function bl(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 gf(e,t,r){let n=bl(e,r),i=bl(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=Et(n.normalizedId,i.normalizedId);return o!==0?o:Et(n.display,i.display)}function hf(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 Pl(e,t){let r=t.optionOrder??new Map,i=[...new Set(hf(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(Nl),i}function Nl(e,t){return e.knownBand!==t.knownBand?e.knownBand<t.knownBand?-1:1:e.rank!==t.rank?e.rank<t.rank?-1:1:Et(e.label,t.label)}function Af(e,t,r){let n=Pl(e,r),i=Pl(t,r),o=Math.min(n.length,i.length);for(let a=0;a<o;a++){let s=Nl(n[a],i[a]);if(s!==0)return s}return n.length<i.length?-1:n.length>i.length?1:0}function Pt(e,t,r){switch(r.compareMode){case"string":return Et(e,t);case"number":return yf(e,t);case"recordNumber":return gf(e,t,r.fieldType==="RECORD_NUMBER");case"option":return Af(e,t,r);case"unsupported":throw new Error(`ArgumentError: values of type ${r.fieldType} cannot be compared.`)}}function Nt(e,t,r,n=x("string")){let i=Pt(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 Cl(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=Ie(o),l=Ie(a),p=s!==null&&l!==null?Fn(s,l):mf(Number(o),Number(a));if(p!==0)return p}return Et(o,a)};return r.reduce((o,a)=>{let s=i(a,o);return t==="greatest"?s>0?a:o:s<0?a:o})}function re(e,t){if(e.type==="NUMBER")return e.value;if(e.type==="FIELD_REF")return Number(Je(t,e.field));if(e.type==="STRING_FUNC")return Number(ne(e,t));let r=re(e.left,t),n=re(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 le(e,t,r,n){switch(e.type){case"STRING":return e.value;case"NUMBER":return e.value;case"FIELD":return Je(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 ne(e,t,r,n);case"CASE_WHEN":return Ne(e,t,r,n);case"CONCAT_OP":return ne({type:"STRING_FUNC",func:"CONCAT",args:[e.left,e.right]},t,r,n);case"SCALAR_ARITH":{let i=Number(le(e.left,t,r,n)),o=Number(le(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 Rt(e,t,r,n){switch(e.type){case"CASE_WHEN":return Dl(e,t,r,n);case"SCALAR_ARITH":{let i=Rt(e.left,t,r,n),o=Rt(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=Rt(e.left,t,r,n),o=Rt(e.right,t,r,n);return`${i??""}${o??""}`}default:return le(e,t,r,n)}}function ti(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 Sf(e){return e>=55296&&e<=56319}function Tf(e){return e>=56320&&e<=57343}function ni(e,t){return t>0&&t<e.length&&Sf(e.charCodeAt(t-1))&&Tf(e.charCodeAt(t))}function Ol(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 xo(e,t){let r=Math.min(Math.max(0,t),e.length);return ni(e,r)&&(r-=1),e.slice(0,r)}function wf(e,t){let r=Math.max(0,e.length-t);return ni(e,r)&&(r+=1),e.slice(r)}function If(e,t,r){let n=Ol(t,e.length),i=Ol(r,e.length);return i<=n?"":(ni(e,n)&&(n+=1),ni(e,i)&&(i-=1),e.slice(n,Math.max(n,i)))}function bf(e,t){let r=e.repeat(Math.ceil(t/e.length));return xo(r,t)}var Pf=200,Kr=new Map;function Nf(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 Mo(e,t,r=!1){let n=Nf(t)+(r?"g":""),i=`${e}\0${n}`,o=Kr.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(Kr.size>=Pf){let s=Kr.keys().next().value;s!==void 0&&Kr.delete(s)}return Kr.set(i,a),a}function Cf(e){if(e.includes("$`")||e.includes("$'"))throw new Error("ArgumentError: REGEXP_REPLACE replacement must not contain $` or $'.")}function Of(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 Lf(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 u=Number(s+l);if(u>=1&&u<=r.length){i+=r[u-1]??"",o+=2;continue}}let p=Number(s);if(p>=1&&p<=r.length){i+=r[p-1]??"",o+=1;continue}}i+="$"}return i}function _f(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,p=a.length-(l?3:2),u=a.slice(0,p);return Lf(r,o,u,l?s:void 0)})}function ne(e,t,r,n){let i=e.args.map(o=>Kf(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 fe("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 If(o,a,s!==void 0?a+s:o.length)}case"LEFT":{fe("LEFT",i,2,2);let o=i[0],a=Math.trunc(Number(i[1]));return Number.isNaN(a)||a<=0?"":xo(o,a)}case"RIGHT":{fe("RIGHT",i,2,2);let o=i[0],a=Math.trunc(Number(i[1]));return Number.isNaN(a)||a<=0?"":wf(o,a)}case"INSTR":return fe("INSTR",i,2,2),String(i[0].indexOf(i[1])+1);case"LPAD":case"RPAD":{fe(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 xo(o,a);let s=i[2]??" ";if(s==="")return o;let l=bf(s,a-o.length);return e.func==="LPAD"?l+o:o+l}case"GREATEST":case"LEAST":return fe(e.func,i,2),Cl(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 fe("REGEXP_LIKE",i,2,3),Mo(i[1],i[2]??"").test(i[0])?"1":"0";case"REGEXP_REPLACE":{fe("REGEXP_REPLACE",i,3,5),Cf(i[2]);let o=Of(i[4]),a=Mo(i[1],i[3]??"",!0);return o===0?i[0].replace(a,i[2]):_f(i[0],a,i[2],o)}case"REGEXP_SUBSTR":return fe("REGEXP_SUBSTR",i,2,3),Mo(i[1],i[2]??"").exec(i[0])?.[0]??"";case"TRANSLATE":{fe("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,p)=>{s.has(l)||s.set(l,a[p])}),[...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 ti("round",Number(i[0]??"0"),Number(i[1]??"0"));case"FLOOR":return ti("floor",Number(i[0]??"0"),Number(i[1]??"0"));case"CEIL":return ti("ceil",Number(i[0]??"0"),Number(i[1]??"0"));case"TRUNCATE":return fe("TRUNCATE",i,1,2),ti("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 xf(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 fe(e.func,i,1,1),ri(i[0])?String(Fo(i[0])+1):"";case"QUARTER":return fe(e.func,i,1,1),ri(i[0])?String(Math.ceil(Number(i[0].slice(5,7))/3)):"";case"WEEK":return fe(e.func,i,1,1),ri(i[0])?String(_l(i[0])):"";case"DATE_FORMAT":return vf(i[0]??"",i[1]??"");case"DATEDIFF":return Uf(i[0]??"",i[1]??"");case"DATE_ADD":return kf(i[0]??"",Number(i[1]??"0"),(i[2]??"DAY").toUpperCase());case"LAST_DAY":return fe("LAST_DAY",i,1,1),Mf(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 fe(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 Br(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 ii(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 ri(e){let t=e.slice(0,10);if(!/^\d{4}-\d{2}-\d{2}$/.test(t))return!1;let r=ii(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 Fo(e){return ii(e).getUTCDay()}function Ll(e){let t=ii(e),r=t.getUTCDay()||7;return t.setUTCDate(t.getUTCDate()+4-r),t}function Df(e){return Ll(e).getUTCFullYear()}function _l(e){let t=Ll(e),r=t.getUTCFullYear(),n=ii(`${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 vf(e,t){if(!e||e.length<10)return"";let{y:r,mo:n,d:i,h:o,mi:a,sec:s}=Br(e),l=ri(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 a;case"%s":return s;case"%w":return l?String(Fo(e)):"";case"%a":return l?["\u65E5","\u6708","\u706B","\u6C34","\u6728","\u91D1","\u571F"][Fo(e)]:"";case"%v":return l?String(_l(e)).padStart(2,"0"):"";case"%G":return l?String(Df(e)).padStart(4,"0"):"";default:return p}})}function Uf(e,t){if(e.length<10||t.length<10)return"0";let r=Br(e),n=Br(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 kf(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}=Br(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"),p=String(a.getUTCDate()).padStart(2,"0");return`${s}-${l}-${p}`}function Mf(e){if(!e||e.length<10)return e;let{y:t,mo:r}=Br(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 xf(e,t){if(/^-?\d+$/.test(t.trim()))return Ff(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,p=s+l,u=i.toFixed(p),[d,c=""]=u.split(".");l>0&&(c=c.replace(/0+$/,""));let f=n?d.replace(/\B(?=(\d{3})+(?!\d))/g,","):d,E=c?`${f}.${c}`:f;return r?E+"%":E}function Ff(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 Kf(e,t,r,n){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?"":e.type==="NUMBER"?W(e):String(le(e,t,r,n))}function Je(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 Bf(e,t,r,n,i);case"NULL_CHECK":return Yf(e,t);case"LOGICAL":return jf(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 Bf(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=Bl(e.left,t,r,i),a=e.left.type==="FIELD"?r?.(e.left):void 0,s=Gf(e.left,a,i);return $f(e.op,o,e.right,t,a,r,s,i)}function $f(e,t,r,n,i,o,a=x("string"),s){if(e==="IN"||e==="NOT_IN"){let p=null;if(r.type==="IN_LIST"&&(Hf(r.values),p=new Set(r.values.map(d=>d.type==="NUMBER"?i==="NUMBER"?W(d):String(d.value):d.value))),r.type==="SUBQUERY_IN_LIST"&&(p=r.resolved),p===null)return e==="NOT_IN";let u=Wf(t,p,i);return e==="IN"?u:!u}if(e==="LIKE"){let p=Ko(r,n,o);return Kl(t,p)}if(e==="NOT_LIKE"){let p=Ko(r,n,o);return!Kl(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=Ko(r,n,o,s);return Nt(e,t,l,a)}var vl=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function Gf(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(vl.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(vl.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 Ul=new Set(["CHECK_BOX","MULTI_SELECT"]),kl=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE"]),Vf=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=>Nt("=",e,a,o))}let i;if(Ul.has(r)||kl.has(r)||Vf.has(r))try{i=JSON.parse(e)}catch{return n()}else return n();return Ul.has(r)?!Array.isArray(i)||!i.every(o=>typeof o=="string")?n():i.length===0&&t.has("")?!0:i.some(o=>t.has(o)):kl.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 Hf(e){let t=e.find(r=>r.type==="VARIABLE");if(t?.type==="VARIABLE")throw new Error(`ParseError: unresolved batch variable @${t.name}.`)}function Yf(e,t){let r=Bl(e.field,t);return e.not?r!=="":r===""}function jf(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 Bl(e,t,r,n){if(e.type==="FUNC_FIELD")return ne(e.expr,t);if(e.type==="ARITH_FIELD")return String(re(e.expr,t));if(e.type==="CASE_FIELD")return Ne(e.expr,t,r,n);if(e.type==="GROUPING_FIELD")return ur(e.ref,t);let i=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return Je(t,i)}function Ko(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 W(e);case"KINTONE_FUNC":return qf(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"?Je(t,e.expr.field):e.expr.type==="STRING_FUNC"?ne(e.expr,t):String(re(e.expr,t));case"CASE_VALUE":return Ne(e.expr,t,r,n);case"ARRAY":return e.elements.map(i=>i.value).join(",")}}function Ne(e,t,r,n){for(let i of e.branches)if(q(i.condition,t,r,void 0,n))return Fl(i.result,t,r,n);return e.elseResult!==null?Fl(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 xl(i.result,t,r,n);return e.elseResult===null?null:xl(e.elseResult,t,r,n)}function xl(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"?re(e,t):Rt(e,t,r,n)}function Fl(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(re(e,t)):String(le(e,t,r,n))}function $l(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 qf(e){if(ae(e))throw new Error(`${e}: ${qe}`);switch(e){case"TODAY":case"NOW":case"LOGINUSER":return $l(e);default:throw new Error(`InternalError: unexpected KINTONE_FUNC name: ${e}`)}}var oi=new Map,zf=200;function Kl(e,t){if(!rl(t))return e.includes(t);let r=oi.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"),oi.size>=zf&&oi.clear(),oi.set(t,r)}return r.test(e)}function pr(e){return Vl(e)}function Gl(e){return Vl(e.flatMap(t=>t.rules.map(r=>r.condition)))}function Vl(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 ue("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 ue("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 ue(e){return new T(e,{kind:"EOF",value:"CHECK",pos:0})}function ai(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=le(a.message,t);n.push({groupIndex:o,message:s==null?"":String(s)});break}}),n}function $o(e){if(ut(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 Xf=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),Jf=new Set(["CHECK_BOX","MULTI_SELECT"]);function li(e,t=new Map){let r=e.values.map(n=>Qf(e.fields,n,t));return Wr(r,100).map(n=>({app:e.appId,records:n}))}function Qf(e,t,r){let n={};return e.forEach((i,o)=>{let a=t[o];a.type==="CASE_VALUE"?n[i]={value:mt(a.expr,{},r.get(i))}:n[i]={value:Qe(a,r.get(i))}}),n}function Gr(e){$o(e.where);let t=ru(e);return{app:e.appId,query:G(e.where),fields:["$id",...t],totalCount:!1}}function Vr(e,t,r=new Map){let n=Zf(e.assignments,r);return Wr(t,100).map(i=>({app:e.appId,records:i.map(o=>({id:o,record:n}))}))}function Zf(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:Qe(i,t.get(n))});return r}function jl(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 ui(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 Go(e){$o(e.where);let t=new Set;for(let{value:r}of e.assignments)r.type==="ARITH"?ql(r,t):r.type==="SCALAR_ARITH"||r.type==="CONCAT_OP"?dr(r,t):r.type==="STRING_FUNC"?Vo(r,t):r.type==="CASE_VALUE"&&zl(r.expr,t);return ru(e).forEach(r=>t.add(r)),{app:e.appId,query:G(e.where),fields:["$id",...t],totalCount:!1}}function ql(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"?ql(e,t):e.type==="STRING_FUNC"&&Vo(e,t)}function Vo(e,t){for(let r of e.args)eE(r,t)}function eE(e,t){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"){Bo(e,t);return}dr(e,t)}function dr(e,t){if(e.type==="FIELD"){t.add(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field);return}if(e.type==="STRING_FUNC"){Vo(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){dr(e.left,t),dr(e.right,t);return}e.type==="CASE_WHEN"&&zl(e,t)}function Bo(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&tE(e.arg,t);return}e.type==="AGG_ARITH"&&(Bo(e.left,t),Bo(e.right,t))}function tE(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?$r(e,t):dr(e,t)}function Wl(e,t){if(e.type!=="ARRAY"){if(e.type==="FIELD_REF"||e.type==="ARITH"){$r(e,t);return}dr(e,t)}}function zl(e,t){for(let r of e.branches)si(r.condition,t),Wl(r.result,t);e.elseResult!==null&&Wl(e.elseResult,t)}function si(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":si(e.left,t),si(e.right,t);break;case"NOT":case"GROUP":si(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),a=Xl(i),s={};for(let{field:l,value:p}of e.assignments)s[l]={value:Ho(p,a,r.get(l),i)};return{id:o,record:s}});return Wr(n,100).map(i=>({app:e.appId,records:i}))}function Ho(e,t,r,n){if(e.type==="ARITH")return String(n?jo(e,n):re(e,t));if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP")return String(le(e,t));if(e.type==="STRING_FUNC")return ne(e,t);if(e.type==="CASE_VALUE")return mt(e.expr,t,r);if(e.type==="SOURCE_FIELD")throw new j("SOURCE_FIELD \u306F UPDATE ... FROM \u5C02\u7528\u3067\u3059");return Qe(e,r)}function ci(e,t,r){if(e.type==="STRING")return e.value;if(e.type==="NUMBER")return W(e);if(e.type==="ARITH")return String(re(e,t));if(e.type==="CASE_VALUE")return Ne(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 rE=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);function Yo(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=Xl(i),l={};for(let{field:p,value:u}of e.assignments){let d=r.get(p);if(u.type==="SOURCE_FIELD"){if(rE.has(d??""))throw new j(`UPDATE ... FROM \u306E SOURCE_FIELD \u306F ${d} \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,u.field))throw new j(`UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u5217 ${u.field} \u304C\u5B58\u5728\u3057\u307E\u305B\u3093`);let c=o[u.field];if(typeof c!="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: ${u.field}\uFF09`);if((d==="NUMBER"||d==="CALC")&&c!==""&&!Number.isFinite(Number(c)))throw new j(`\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9 ${p} \u306B\u5909\u63DB\u3067\u304D\u306A\u3044\u5024\u3067\u3059: ${c}`);l[p]={value:Qe({type:"STRING",value:c},d)}}else{if(u.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");u.type==="ARITH"?l[p]={value:String(jo(u,i))}:u.type==="SCALAR_ARITH"||u.type==="CONCAT_OP"?l[p]={value:String(le(u,s))}:u.type==="CASE_VALUE"?l[p]={value:mt(u.expr,s,d)}:l[p]={value:Qe(u,d)}}}return{id:a,record:l}});return Wr(n,100).map(i=>({app:e.appId,records:i}))}function Xl(e){return Object.fromEntries(Object.entries(e).map(([t,r])=>[t,typeof r.value=="string"?r.value:JSON.stringify(r.value??"")]))}function jo(e,t){let r=Hl(e.left,t),n=Hl(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 Hl(e,t){if(e.type==="NUMBER")return e.value;if(e.type==="ARITH")return jo(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 Jl(e){return $o(e.where),{app:e.appId,query:G(e.where),fields:["$id"],totalCount:!1}}function Ql(e,t){return Wr(t,100).map(r=>({app:e,ids:r}))}function Zl(e){return Xf.has(e??"")}function nE(e){return Jf.has(e??"")}function iE(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 oE(e){return!e||/^\d{4}-\d{2}-\d{2}$/.test(e)?e:e.replace(/\//g,"-")}function eu(e,t){return Zl(t)?e===""?[]:e.split(",").map(r=>({code:r.trim()})):nE(t)?e===""?[]:e.split(",").map(r=>r.trim()):t==="DATETIME"?iE(e):t==="DATE"?oE(e):e}function tu(e,t){return Zl(t)?e.map(r=>({code:r})):e}function Yl(e,t,r){return e.type==="ARRAY"?tu(e.elements.map(n=>n.value),r):e.type==="STRING"?eu(e.value,r):e.type==="STRING_FUNC"?ne(e,t):e.type==="FIELD_REF"||e.type==="ARITH"?String(re(e,t)):String(le(e,t))}function ru(e){if(!e.checkGroups)return[];let t=`app${e.appId}`.toLowerCase();return[...new Set(pr(e.checkGroups).filter(r=>r.tableAlias===null||r.tableAlias.toLowerCase()===t).map(r=>r.field).filter(r=>r!=="$id"))]}function mt(e,t,r){for(let n of e.branches)if(q(n.condition,t))return Yl(n.result,t,r);return e.elseResult!==null?Yl(e.elseResult,t,r):""}function Qe(e,t){let r=qo(e,t);if(!r.ok)throw new j(r.message);return r.value}function qo(e,t){try{return{ok:!0,value:aE(e,t)}}catch(r){return{ok:!1,message:r instanceof Error?r.message:String(r)}}}function aE(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 eu(e.value,t);case"NUMBER":return W(e);case"ARRAY":return tu(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 Wr(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 zo=new Set(["CHECK_BOX","MULTI_SELECT"]),sE=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function Hr(e){throw new Error(`ArgumentError: ${e}`)}function nu(e,t,r){let n=lE(r.fieldType,e.field),i=uE(t,n,e.field),o=new Set(i),a=[],s=new Set,l=new Set;for(let y of e.operations){let g=y.value;g!==""&&(y.kind==="ADD"?(s.has(g)||a.push(g),s.add(g)):l.add(g))}for(let y of s)l.has(y)&&Hr(`APPLY multi-value field ${e.field} has conflicting ADD and REMOVE for ${JSON.stringify(y)}.`);let p=i.filter(y=>!l.has(y)),u=a.filter(y=>!o.has(y)),d=[...p,...u],c=new Set(i.filter(y=>l.has(y))).size,f=new Set,E=new Set,R=e.operations.map(y=>{let g=y.kind==="ADD"?f:E,h=!g.has(y.value);return g.add(y.value),{kind:y.kind,value:y.value,changed:y.value!==""&&h&&(y.kind==="ADD"?!o.has(y.value):o.has(y.value))}}),m=zo.has(n)?d:d.map(y=>({code:y}));return{field:e.field,fieldType:n,operations:R,postImageValue:m,addedValues:u.length,removedValues:c,changedValues:u.length+c}}function lE(e,t){return zo.has(e)||sE.has(e)?e:Hr(`APPLY multi-value target ${t} has unsupported type ${e}.`)}function uE(e,t,r){if(!Array.isArray(e))return Hr(`APPLY snapshot for ${r} must be an array.`);let n=e.map((i,o)=>zo.has(t)?typeof i!="string"?Hr(`APPLY snapshot for ${r} must contain string values (item ${o+1}).`):i:typeof i!="object"||i===null||typeof i.code!="string"?Hr(`APPLY snapshot for ${r} must contain {code: string} values (item ${o+1}).`):i.code);return[...new Set(n.filter(i=>i!==""))]}function V(e){throw new Error(`ArgumentError: ${e}`)}function Qo(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?V("APPLY parent selector must be a single positive $id."):t.right.value}function Ze(e,t){let r=e.applyBlocks;if(!r?.length)return V("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)Xo(s.field,null,n),cE(s.value,n);for(let s of r){(i.has(s.field)||o.has(s.field))&&V(`APPLY has more than one block for field ${s.field}.`),e.assignments.some(d=>d.field===s.field)&&V(`APPLY target ${s.field} is also assigned by parent SET.`);let l=t.find(d=>d.code===s.field&&!d.inSubtable);if(!l)return s.targetKind==="SUBTABLE"?V(`APPLY target ${s.field} is not a SUBTABLE.`):V(`APPLY target ${s.field} does not exist as a top-level field.`);if(Js(s,l.fieldType),s.targetKind==="MULTI_VALUE"){l.writable===!1&&V(`APPLY target ${s.field} is not writable (${l.fieldType}).`),o.set(s.field,l);continue}let p=l,u=new Map(t.filter(d=>d.inSubtable&&d.subtableCode===s.field).map(d=>[d.code,d]));i.set(s.field,p),a.set(s.field,u);for(let d of s.operations)if(d.kind==="PATCH"){for(let c of d.assignments)Xo(c.field,s.field,n,u),Jo(c.value,s.field,n,u);d.selector.kind==="WHERE"&&Jo(d.selector.where,s.field,n,u)}else if(d.kind==="APPEND"){let c=new Set;for(let f of d.fields)c.has(f)&&V(`APPLY APPEND specifies child ${f} more than once.`),c.add(f),Xo(f,s.field,n,u)}else d.kind==="REMOVE"&&d.selector.kind==="WHERE"&&Jo(d.selector.where,s.field,n,u)}return{targetTables:i,targetMultiValueFields:o,childrenByTable:a,fieldsByCode:n}}function cE(e,t){Yr(e,r=>{if(r==="$id"||r==="$revision")return;let n=t.get(r);(!n||n.inSubtable)&&V(`APPLY parent reference ${r} is not a top-level field.`),n.fieldType==="FILE"&&V(`APPLY parent FILE reference ${r} is not supported.`)})}function Xo(e,t,r,n){(e.startsWith("_")||e.startsWith("$"))&&V(`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&&V(`APPLY child ${e} does not belong to subtable ${t}.`),V(`APPLY ${t===null?"parent field":"child"} ${e} does not exist.`)}(i.fieldType==="SUBTABLE"||i.fieldType==="FILE"||i.writable===!1)&&V(`APPLY assignment target ${e} is not writable (${i.fieldType}).`)}function Jo(e,t,r,n){Yr(e,i=>{if(i==="_rid"||i==="_idx"||n.has(i))return;r.get(i)?.inSubtable&&V(`APPLY child reference ${i} does not belong to subtable ${t}.`),V(`APPLY child reference ${i} does not exist in subtable ${t}.`)})}function pi(e,t){let r=Ze(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)Yr(i.value,o=>{let a=r.fieldsByCode.get(o);!a?.inSubtable&&a?.fieldType!=="FILE"&&n.add(o)});return[...n]}function di(e,t){let r={_rid:e.id??"",_idx:String(t)};for(let[n,i]of Object.entries(e.value??{}))r[n]=uu(i?.value);return r}function ou(e){let{statement:t,snapshot:r,fieldInfos:n}=e,i=e.metadata??Ze(t,n),o=ta(r.$id?.value,"APPLY snapshot $id"),a=Qo(t);return o!==a&&V(`APPLY snapshot $id ${o} does not match requested $id ${a}.`),su(t,r,i,o)}function au(e,t,r,n=Ze(e,r)){let i=new Set;return t.map(o=>{let a=ta(o.$id?.value,"APPLY snapshot $id");return i.has(a)&&V(`APPLY snapshots contain duplicate parentId ${a}.`),i.add(a),su(e,o,n,a)})}function su(e,t,r,n){let i=ta(t.$revision?.value,"APPLY snapshot $revision"),o=[],a=[];for(let u of e.applyBlocks){if(u.targetKind==="MULTI_VALUE"){let C=r.targetMultiValueFields.get(u.field);C||V(`APPLY multi-value metadata for ${u.field} is missing.`),a.push(nu(u,t[u.field]?.value,C));continue}let d=r.childrenByTable.get(u.field),c=mE(t,u.field),f=new Set;for(let C of c)C.id||V(`APPLY snapshot for ${u.field} contains a row without _rid.`),f.has(C.id)&&V(`APPLY snapshot for ${u.field} contains duplicate _rid ${C.id}.`),f.add(C.id);let E=C=>C.field==="_rid"?"SINGLE_LINE_TEXT":C.field==="_idx"?"NUMBER":d.get(C.field)?.fieldType,R=[],m=[],y=[],g=new Set,h=new Set,S=new Set,O=u.operations.some(C=>C.kind==="REMOVE");for(let[C,v]of u.operations.entries()){if(v.kind==="APPEND"){let A=Zo(v,d,u.field);y.push({kind:"APPEND",addedRows:A.length}),m.push(...A);continue}if(v.kind==="REMOVE"){let A=fE(v,c,E,u.field);v.expectRows&&iu(v.expectRows,A.length,n,u.field,C,v.kind),y.push({kind:"REMOVE",removedRows:A.length});for(let P of A){let N=c[P].id;h.has(P)&&V(`APPLY row ${N} is selected by both PATCH and REMOVE.`),S.has(P)&&V(`APPLY removes row ${N} more than once.`),S.add(P)}continue}if(v.kind!=="PATCH")continue;let k=dE(v,c,E,u.field);v.expectRows&&iu(v.expectRows,k.length,n,u.field,C,v.kind),y.push({kind:"PATCH",matchedRows:k.length,changedRows:k.length});for(let A of k){let P=c[A];S.has(A)&&V(`APPLY row ${P.id} is selected by both PATCH and REMOVE.`),h.add(A);let N=di(P,A);for(let w of v.assignments){let U=`${P.id}\0${w.field}`;g.has(U)&&V(`APPLY patches cell ${P.id}.${w.field} more than once.`),g.add(U),R.push({rowIndex:A,field:w.field,value:ci(w.value,N,E)})}}}let b=new Map;for(let C of R){let v=b.get(C.rowIndex)??{};v[C.field]={value:C.value},b.set(C.rowIndex,v)}let I=[...c.flatMap((C,v)=>S.has(v)?[]:[{id:C.id,value:{...C.value,...b.get(v)??{}}}]),...m],_={table:u.field,operations:y,changedSubtableRows:b.size+S.size+m.length,deletedRows:S.size,snapshotRowIds:c.map(C=>C.id),postImageRows:I};O?o.push({..._,payloadShape:"FULL_SURVIVORS",removedRowIds:c.flatMap((C,v)=>S.has(v)?[C.id]:[]),payloadRows:I.map(C=>({...C.id===void 0?{}:{id:C.id},value:C.value}))}):o.push({..._,payloadShape:"PATCH_ONLY",payloadRows:[...c.map((C,v)=>{let k=b.get(v);return k?{id:C.id,value:k}:{id:C.id}}),...m.map(C=>({value:C.value}))]})}let s=yE(t),l={};for(let u of e.assignments){let d=r.fieldsByCode.get(u.field)?.fieldType;l[u.field]={value:Ho(u.value,s,d,t)}}let p={...t};Object.assign(p,l);for(let u of o)p[u.table]={value:u.postImageRows};for(let u of a)p[u.field]={value:u.postImageValue};return{app:e.appId,parentId:n,revision:i,parentRows:1,changedSubtableRows:o.reduce((u,d)=>u+d.changedSubtableRows,0),parentValues:l,postImage:p,tables:o,multiValues:a}}function iu(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}`;V(`APPLY EXPECT ROWS mismatch for parent $id ${r}, table ${n}, operation ${i+1} (${o}): expected ${s}, actual ${t}.`)}function fi(e,t){let r=e.tables.map(o=>{let a=t[o.table]?.value;if(!Array.isArray(a)||a.length!==o.postImageRows.length)return V(`APPLY normalized post-image for ${o.table} has an unexpected row count.`);let s=o.payloadRows.map((l,p)=>{let u=a[p];return u?.value?l.id===void 0?{value:u.value}:l.value===void 0?{id:l.id}:{id:l.id,value:Object.fromEntries(Object.keys(l.value).map(d=>[d,u.value[d]]))}:V(`APPLY normalized post-image for ${o.table} row ${p+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}:V(`APPLY normalized post-image for ${o.field} is not an array.`)});return{...e,parentValues:n,tables:r,multiValues:i,postImage:t}}function Zo(e,t,r){return e.values.map(n=>({value:pE(e,n,t,r)}))}function pE(e,t,r,n){if(t.length!==e.fields.length)return V(`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?ea(a):s.type==="CASE_VALUE"?mt(s.expr,{},a.fieldType):Qe(s,a.fieldType)}}return o}function ea(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 dE(e,t,r,n){return lu(e.selector,t,r,n)}function fE(e,t,r,n){return lu(e.selector,t,r,n)}function lu(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,di(l,p),r)?[p]:[]),a=EE(i);a!==null&&o.length===0&&V(`APPLY _rid ${a} does not exist in snapshot table ${n}.`);let s=RE(i);return s!==null&&o.length===0&&V(`APPLY _idx ${s} does not exist in snapshot table ${n}.`),o}function EE(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 RE(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 mE(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:{}}}):V(`APPLY snapshot field ${t} is not a subtable value.`)}function ta(e,t){let r=Number(e);return(!Number.isSafeInteger(r)||r<=0)&&V(`${t} must be a positive integer.`),r}function yE(e){let t={};for(let[r,n]of Object.entries(e))t[r]=uu(n?.value);return t}function uu(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 Yr(e,t){if(Array.isArray(e)){e.forEach(n=>Yr(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))Yr(n,t)}function X(e){throw new Error(`ArgumentError: ${e}`)}function Ri(e){let t=Number(e.$revision?.value);return!Number.isSafeInteger(t)||t<=0?X("APPLY snapshot $revision must be a positive integer."):t}function jr(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),gE(i),t[i.table]={value:i.payloadRows};return{app:e.app,records:[{id:e.parentId,revision:e.revision,record:t}]}}function cu(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 gE(e){let t=ra(e.snapshotRowIds,`${e.table} snapshot`),r=e.payloadRows.flatMap(u=>u.id===void 0?[]:[u.id]);for(let u of e.payloadRows)u.id===void 0&&u.value===void 0&&X(`APPLY ${e.payloadShape} table ${e.table} contains an APPEND row without value.`);if(ra(r,`${e.table} payload`),e.payloadShape==="PATCH_ONLY"){e.operations.some(c=>c.kind==="REMOVE")&&X(`APPLY PATCH_ONLY table ${e.table} cannot contain REMOVE.`);let u=e.payloadRows.slice(0,t.length).map(c=>c.id??"");Ei(t,u,`APPLY PATCH_ONLY table ${e.table} must retain every snapshot row id in order.`),e.payloadRows.slice(t.length).some(c=>c.id!==void 0)&&X(`APPLY PATCH_ONLY table ${e.table} must place every APPEND row after snapshot rows.`);let d=e.postImageRows.slice(0,t.length).map(c=>c.id??"");Ei(t,d,`APPLY PATCH_ONLY table ${e.table} post-image must retain every snapshot row id in order.`),e.postImageRows.slice(t.length).some(c=>c.id!==void 0)&&X(`APPLY PATCH_ONLY table ${e.table} post-image must place every APPEND row after snapshot rows.`);return}e.operations.some(u=>u.kind==="REMOVE")||X(`APPLY FULL_SURVIVORS table ${e.table} requires a REMOVE operation.`);let n=ra(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(u=>u.id===void 0?[]:[u.id]),o=new Set(n),a=new Set(i);for(let u of n)a.has(u)&&X(`APPLY FULL_SURVIVORS table ${e.table} has intersecting survivor/removed id ${u}.`);let s=t.filter(u=>!o.has(u));Ei(s,i,`APPLY FULL_SURVIVORS table ${e.table} must retain every survivor in snapshot order.`);let l=e.payloadRows.slice(0,i.length).map(u=>u.id??"");Ei(i,l,`APPLY FULL_SURVIVORS table ${e.table} payload must enumerate every survivor in order.`),(e.payloadRows.slice(i.length).some(u=>u.id!==void 0)||e.postImageRows.slice(i.length).some(u=>u.id!==void 0))&&X(`APPLY FULL_SURVIVORS table ${e.table} must place every APPEND row after survivors.`),e.payloadRows.some(u=>u.value===void 0)&&X(`APPLY FULL_SURVIVORS table ${e.table} requires values for every survivor.`),e.payloadRows.some((u,d)=>!na(u.value,e.postImageRows[d]?.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(u=>!p.has(u)))&&X(`APPLY FULL_SURVIVORS table ${e.table} does not partition every snapshot row.`)}function ra(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 Ei(e,t,r){(e.length!==t.length||e.some((n,i)=>n!==t[i]))&&X(r)}function na(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)=>na(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)&&na(r[a],n[a]))}function pu(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 du(e){let t=e.numberPrecision;if(t==null||typeof t!="object")throw new Error("SettingsError: numberPrecision is missing from app settings.");let r=pu(t.digits,"digits",1,30),n=pu(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 fu(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 hE=new Set(["CHECK_BOX","MULTI_SELECT"]),AE=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT"]);function Se(e,t,r){if(t.fieldType==="DATE"||t.fieldType==="TIME"||t.fieldType==="DATETIME"){let i=SE(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=qr(e,t.fieldType)}catch(i){let o=i instanceof Error?i.message:String(i);return{ok:!1,code:wE(t.fieldType),message:o}}if(t.required&&mi(n))return{ok:!1,code:"ERR_REQUIRED",message:`${t.code} \u306F\u5FC5\u9808\u3067\u3059`};if(!mi(n)&&t.fieldType==="NUMBER"){let i=String(n),o=Ie(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&&Kn(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&&Kn(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}=fu(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(!mi(n)&&(t.fieldType==="DATE"||t.fieldType==="TIME"||t.fieldType==="DATETIME")&&!Ct(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!mi(n)&&AE.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 SE(e){return e==null?"":yi(e)&&e.type==="NUMBER"?W(e):yi(e)&&e.type==="STRING"?e.value:typeof e=="string"||typeof e=="number"?String(e):""}function TE(e,t){if(t==="DATE")return Ct(e.replace(/\//g,"-"),"DATE");if(t==="TIME")return Ct(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)?Ct(r.slice(0,10),"DATE")&&Ct(r.slice(11),"TIME"):Ct(r,"DATETIME")}function qr(e,t){if(yi(e)){let n=qo(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(hE.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 yi(e){return typeof e=="object"&&e!==null&&typeof e.type=="string"}function Ot(e){if(e==null||e==="")return!0;if(Array.isArray(e))return e.length===0;if(yi(e)){if(e.type==="STRING")return e.value==="";if(e.type==="ARRAY")return e.elements.length===0}return!1}function mi(e){return e===""||Array.isArray(e)&&e.length===0}function wE(e){return e==="NUMBER"?"ERR_TYPE_NUMBER":"ERR_TYPE_DATE"}function Ct(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]),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)&&Ct(l,"TIME")}var fr=["$err_statement","$err_operation","$err_row","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id"];function ia(e,t,r){let n=new Map(r.map(i=>[i.code,i]));for(let i of e)if(i.mode==="update"){i.record??(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(u=>typeof u=="object"&&u!==null&&"code"in u),p=a;try{p=qr(a,s)}catch{}i.record[o]={value:l?a:p}}}}function oa(e,t,r,n,i,o,a,s=[],l=!0,p=!0,u={}){let d=new Map(i.map(m=>[m.code,m])),c=[],f=new Set,E=[];u.validateUpdateBuiltIns===!1&&ia(e,n,i);let R;for(let m of e){m.record??(m.record={});let y=p?[...m.preErrors]:[],g=[],h=[],S=m.mode==="create"||u.validateUpdateBuiltIns!==!1;for(let I of n){if(!m.payload.has(I))continue;let _=m.payload.get(I),C=d.get(I).fieldType,v=["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(C)&&Array.isArray(_)&&_.every(A=>typeof A=="object"&&A!==null&&"code"in A);if(!S)continue;let k=Se(_,d.get(I),a);k.ok?m.record[I]={value:v?_:k.value}:g.push({field:I,code:k.code,message:k.message})}if(l&&m.mode==="create")for(let I of i){if(I.inSubtable||m.payload.has(I.code))continue;if(Ot(I.defaultValue)){let C=Se("",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=Se(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=m.evaluationRow??Object.fromEntries([...m.payload].map(([v,k])=>[v,xe(k)])),_=m.evaluationFieldTypes,C=v=>{let k=v.tableAlias?`${v.tableAlias}.${v.field}`:v.field;return _?.get(k)??_?.get(v.field)};try{for(let v of ai(s,I,C))h.push({field:"",code:"ERR_CHECK",message:v.message})}catch(v){R??(R=v)}}let O=I=>I.map(_=>{let C={};for(let v of r)C[v]=xe(m.payload.get(v));return C.$err_statement=String(o),C.$err_operation=t,C.$err_row=String(m.rowNumber),C.$err_field=_.field,C.$err_code=_.code,C.$err_message=_.message,C.$err_value="",C.$err_subtable="",C.$err_subrow="",C.$err_subrow_id="",C}),b={rowNumber:m.rowNumber,preErrors:O(y),builtInErrors:O(g),checkErrors:O(h)};E.push(b);let L=[...b.preErrors,...b.builtInErrors,...b.checkErrors];L.length>0&&f.add(m.rowNumber),c.push(...L)}if(R!==void 0)throw R;return{errors:c,invalidRows:f.size,invalidRowNumbers:f,candidateResults:E}}function xe(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 aa(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 IE(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 bE(e){return e.fieldType==="NUMBER"||IE(e)}function gi(e,t,r){return{subtable:e,subrow:t+1,subrowId:String(r.id??"")}}function sa(e,t){let{topByCode:r,childrenByTable:n}=aa(t),i=bE;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,p)=>{let u=p?`${p}\0${l.code}`:l.code;if(a.has(u))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(u),!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 d=n.get(l.subtableCode);if(!d)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 c of l.children){let f=d.find(E=>E.code===c);if(!f){let E=[...n.entries()].some(([R,m])=>R!==l.subtableCode&&m.some(y=>y.code===c));throw new Error(E?`ArgumentError: VALIDATE \u306E\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${c} \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 ${c} \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB ${l.subtableCode} \u306B\u5B58\u5728\u3057\u307E\u305B\u3093\u3002`)}s(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 u=r.get(p);if(u?.fieldType==="SUBTABLE"){let d=(n.get(p)??[]).filter(i);if(d.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`);d.forEach(c=>s(c,p));continue}if(u){s(u);continue}throw[...n.values()].some(d=>d.some(c=>c.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 zr(e,t){return Ot(e)?"":xe(qr(e,t))}var PE=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]),Xr=fr;function Fe(e,t=["$id"]){let r=aa(e),n=r.topLevel.filter(o=>o.fieldType!=="SUBTABLE"&&o.fieldType!=="FILE"&&!PE.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 Lt(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 _t(e,t,r,n,i=1,o="UPDATE"){let a=NE(e),s=[],l=new Set,p=[...t.payloadFields,...Xr],u=xe(e.$id?.value),d=(c,f,E,R)=>{l.add(i);let m={};for(let y of t.payloadFields)m[y]=y==="$id"?u:xe(e[y]?.value);m.$err_statement=String(n),m.$err_operation=o,m.$err_row=String(i),m.$err_field=c.code,m.$err_code=E.code,m.$err_message=E.message,m.$err_value=zr(f,c.fieldType),m.$err_subtable=R?.subtable??"",m.$err_subrow=R?String(R.subrow):"",m.$err_subrow_id=R?.subrowId??"",s.push(m)};for(let c of t.topLevel){let f=e[c.code]?.value,E=Se(f,c,r);E.ok?a[c.code]={value:Eu(f,c.fieldType,E.value)}:d(c,f,E)}for(let[c,f]of t.subtables){let E=e[c]?.value;if(!Array.isArray(E))continue;let R=a[c]?.value;for(let m=0;m<E.length;m++){let y=E[m],g=R[m];for(let h of f){let S=y.value?.[h.code]?.value,O=Se(S,h,r);O.ok?(g.value??(g.value={}),g.value[h.code]={value:Eu(S,h.fieldType,O.value)}):d(h,S,O,gi(c,m,y))}}}return{normalizedRecord:a,errors:s,columns:p,invalidRows:l.size,invalidRowNumbers:l,errorCount:s.length}}function Eu(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 NE(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 hi(e){let{statement:t,snapshots:r,fieldInfos:n,metadata:i,dmlMaxRows:o,dmlMaxSubtableRows:a,statementNumber:s=1}=e;Ru(o,"dmlMaxRows"),Ru(a,"dmlMaxSubtableRows");for(let h of r)Ri(h);let l=au(t,r,n,i),p=Fe(n,t.assignments.map(h=>h.field)),u=l.some(h=>Lt(h.postImage,p));if(u&&!e.loadNumberPrecision)throw new Error("InternalError: APPLY number precision loader is required for NUMBER post-images.");let d=u?await e.loadNumberPrecision():void 0,c=l.map((h,S)=>_t(h.postImage,p,d,s,e.parentRowNumbers?.[S]??S+1));if(!t.validateOnly){let h=c.flatMap(S=>S.errors);if(h.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:c[0]?.columns??[],errors:h})}`)}let f=l.length,E=l.reduce((h,S)=>h+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 m=l.map((h,S)=>fi(h,c[S].normalizedRecord)),y=m.flatMap(h=>jr(h).records),g=c.map(h=>({errors:h.errors,columns:h.columns,invalidRows:h.invalidRows,errorCount:h.errorCount}));return mu({plans:m,records:y,validations:g,guards:{revisionRequired:!0,parentRows:f,dmlMaxRows:o,subtableRows:E,dmlMaxSubtableRows:a,wouldExceed:R}})}function Ru(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function mu(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))mu(r,t);return Object.freeze(e)}var la=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function Ai(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)yu(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 a=t.find(l=>l.code===o.field&&!l.inSubtable);if(!a||a.fieldType!=="SUBTABLE")return Ke(`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 Ke(`APPLY INSERT supports APPEND only (${l.kind}).`);let p=new Set;for(let u of l.fields){if(p.has(u))return Ke(`APPLY APPEND specifies child ${u} more than once.`);p.add(u),yu(u,o.field,r,s)}for(let u of l.values)if(u.length!==l.fields.length)return Ke(`APPLY APPEND for ${o.field} has ${u.length} values for ${l.fields.length} fields.`)}}return{targetTables:n,targetMultiValueFields:new Map,childrenByTable:i,fieldsByCode:r}}function CE(e,t,r=Ai(e,t),n){let i=new Map(t.map(s=>[s.code,s.fieldType])),o=li(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),p=s.operations.flatMap(u=>Zo(u,l,s.field));return{table:s.field,rows:p,addedRows:p.length}});return o.map((s,l)=>{let p={};for(let d of t)d.inSubtable||d.fieldType==="SUBTABLE"||d.fieldType==="FILE"||d.writable===!1||la.has(d.fieldType)||(p[d.code]=s[d.code]??{value:ea(d)});let u={...s};for(let d of a){let c=d.rows.map(f=>({value:f.value}));p[d.table]={value:c},u[d.table]={value:c}}return{parentRowNumber:n?.[l]??l+1,tables:a,postImage:p,record:u}})}async function Jr(e){let{statement:t,fieldInfos:r,dmlMaxRows:n,dmlMaxSubtableRows:i,statementNumber:o=1}=e;gu(n,"dmlMaxRows"),gu(i,"dmlMaxSubtableRows");let a=e.metadata??Ai(t,r),s=CE(t,r,a,e.parentRowNumbers),l=r.filter(S=>S.fieldType==="SUBTABLE"||S.fieldType!=="FILE"&&S.writable!==!1&&!la.has(S.fieldType)),p=Fe(l,t.fields),u=s.some(S=>Lt(S.postImage,p));if(u&&!e.loadNumberPrecision)throw new Error("InternalError: APPLY number precision loader is required for NUMBER post-images.");let d=u?await e.loadNumberPrecision():void 0,c=s.map(S=>_t(S.postImage,p,d,o,S.parentRowNumber,"INSERT"));if(!t.validateOnly){let S=c.flatMap(O=>O.errors);if(S.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:c[0]?.columns??[],errors:S})}`)}let f=s.length,E=s.reduce((S,O)=>S+O.tables.reduce((b,L)=>b+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=s.map((S,O)=>{let b=c[O].normalizedRecord,L={};for(let I of t.fields)L[I]=b[I];for(let I of S.tables){let _=b[I.table]?.value;L[I.table]={value:I.rows.map((C,v)=>({value:Object.fromEntries(Object.keys(C.value).map(k=>[k,_[v]?.value?.[k]??C.value[k]]))}))}}return{...S,postImage:b,record:L}}),y=m.map(S=>S.record),g=[];for(let S=0;S<y.length;S+=100)g.push({app:t.appId,records:y.slice(S,S+100)});let h=c.map(S=>({errors:S.errors,columns:S.columns,invalidRows:S.invalidRows,errorCount:S.errorCount}));return hu({applyBlocks:t.applyBlocks??[],candidates:m,records:y,batches:g,validations:h,guards:{revisionRequired:!1,parentRows:f,dmlMaxRows:n,subtableRows:E,dmlMaxSubtableRows:i,wouldExceed:R}})}function yu(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||la.has(i.fieldType))return Ke(`APPLY assignment target ${e} is not writable (${i.fieldType}).`)}function gu(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 hu(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))hu(r,t);return Object.freeze(e)}async function Su(e){let{statement:t,matches:r,fieldInfos:n,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a=1}=e;Au(i,"dmlMaxRows"),Au(o,"dmlMaxSubtableRows"),vE(t,r);let s=r.filter(y=>y.targetId===void 0),l=r.filter(y=>y.targetId!==void 0),p=OE(t,s.map(y=>y.sourceRowIndex)),u=await Jr({statement:p,fieldInfos:n,metadata:Ai(p,n),dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a,parentRowNumbers:s.map(y=>y.sourceRowIndex+1),loadNumberPrecision:e.loadNumberPrecision}),d=[],c=new Set;for(let y of l){let g=y.targetId;c.has(g)&&ua(`UPSERT APPLY resolves more than one source row to parent $id ${g}.`),c.add(g),y.snapshot||ua(`UPSERT APPLY snapshot for parent $id ${g} is missing.`);let h=Number(y.snapshot.$id?.value);h!==g&&ua(`UPSERT APPLY snapshot $id ${h} does not match target $id ${g}.`);let S=LE(t,y.sourceRowIndex,g),O=S.applyBlocks?.length?Ze(S,n):_E(n);d.push(await hi({statement:S,snapshots:[y.snapshot],fieldInfos:n,metadata:O,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a,parentRowNumbers:[y.sourceRowIndex+1],loadNumberPrecision:e.loadNumberPrecision}))}let f=DE(d,i,o),E=u.guards.parentRows+f.guards.parentRows,R=u.guards.subtableRows+f.guards.subtableRows,m=E>i||R>o;if(!t.validateOnly){let y=[...u.validations.flatMap(g=>g.errors),...f.validations.flatMap(g=>g.errors)];if(y.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:u.validations[0]?.columns??f.validations[0]?.columns??[],errors:y})}`)}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 ca({create:u,update:f,createBatches:u.batches,updateBatches:UE(f.records,t.appId),guards:{revisionRequired:f.guards.parentRows>0,parentRows:E,dmlMaxRows:i,subtableRows:R,dmlMaxSubtableRows:o,wouldExceed:m,create:u.guards,update:f.guards}})}function OE(e,t){return{type:"INSERT",appId:e.appId,fields:[...e.fields],values:t.map(r=>e.values[r]),applyBlocks:e.onInsertApplyBlocks??[],validateOnly:!0}}function LE(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 _E(e){return{targetTables:new Map,targetMultiValueFields:new Map,childrenByTable:new Map,fieldsByCode:new Map(e.map(t=>[t.code,t]))}}function DE(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 ca({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 vE(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 UE(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 Au(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function ua(e){throw new Error(`ArgumentError: ${e}`)}function ca(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))ca(r,t);return Object.freeze(e)}function Zr(e){return Er("UPDATE",[Iu(e)])}function pa(e){return Er("INSERT",[wu(e)])}function da(e){return Er("UPSERT",[wu(e.create),Iu(e.update)])}function Ce(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 Ti(e,t,r){return e.type==="UPDATE"?Er("UPDATE",[Si("update",e.applyBlocks??[],null,!0,t,r)]):e.type==="INSERT"?Er("INSERT",[Si("insert",e.applyBlocks??[],e.values.length,!1,t,r)]):Er("UPSERT",[Si("insert",e.onInsertApplyBlocks??[],null,!1,t,r),Si("update",e.onUpdateApplyBlocks??[],null,!0,t,r)])}function Er(e,t){return{statementKind:e,branches:t,nonTransactional:!0,partialSuccess:{possible:!0}}}function wu(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:Tu(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||(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:Tu(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 Tu(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:Qr(i.count,r.count),...r.matchedRows!==void 0?{matchedRows:Qr(i.matchedRows,r.matchedRows)}:{},...r.changedRows!==void 0?{changedRows:Qr(i.changedRows,r.changedRows)}:{},...r.addedRows!==void 0?{addedRows:Qr(i.addedRows,r.addedRows)}:{},...r.removedRows!==void 0?{removedRows:Qr(i.removedRows,r.removedRows)}:{}}}):t.map(r=>({...r}))}function Qr(e,t){return e==null||t===null?null:e+t}function Si(e,t,r,n,i,o){let a=t.map(u=>{let d=u.operations.map(f=>kE(f,r)),c=d.every(f=>f.count!==null)?d.reduce((f,E)=>f+E.count,0):null;return{targetKind:u.targetKind,field:u.field,operations:d,changedCount:c}}),s=a.filter(u=>u.targetKind==="SUBTABLE"),l=s.every(u=>u.changedCount!==null)?s.reduce((u,d)=>u+d.changedCount,0):null,p=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:p},chunk:{size:100,plannedChunks:r===null?null:Math.ceil(r/100)},deletedParentRows:e==="insert"?0:null}}function kE(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 et=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 bu(e,t,r){er("phase10c");let n=cu(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 et({successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"PUT_CHUNK",nonTransactional:!0,retryAttempted:!1,...r?{diagnostic:Ce(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 Pu(e,t,r){er("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 et({successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"POST_CHUNK",nonTransactional:!0,retryAttempted:!1,...r?{diagnostic:Ce(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 Nu(e,t,r){er("phase14c");let n=[],i=0,o=0,a=0,s=0;for(let l=0;l<e.createBatches.length;l+=1){let p=e.createBatches[l];try{let u=await t.postRecords({app:p.app,records:[...p.records]});n.push(u.ids)}catch(u){throw new et({successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,failedChunkIndex:l,failedBranch:"INSERT",failedStage:"POST_CHUNK",nonTransactional:!0,retryAttempted:!1,...r?{diagnostic:Ce(r,{successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,successfulInsertChunks:i,successfulUpdateChunks:o,failedChunkIndex:l,failedStage:"POST_CHUNK",failedBranch:"INSERT",retryAttempted:!1})}:{}},u)}i+=1,a+=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(u){throw new et({successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,failedChunkIndex:l,failedBranch:"UPDATE",failedStage:"PUT_CHUNK",nonTransactional:!0,retryAttempted:!1,...r?{diagnostic:Ce(r,{successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,successfulInsertChunks:i,successfulUpdateChunks:o,failedChunkIndex:l,failedStage:"PUT_CHUNK",failedBranch:"UPDATE",retryAttempted:!1})}:{}},u)}o+=1,s+=p.records.length}return{type:"UPSERT",createdIds:n,insertedCount:a,updatedCount:s,successfulChunks:i+o,successfulParents:a+s,successfulInsertChunks:i,successfulUpdateChunks:o,nonTransactional:!0}}function Cu(e,t){let r=Q(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 Be(e){if(e===null)return!1;switch(e.type){case"BINARY":return wi(e.left);case"NULL_CHECK":return wi(e.field);case"LOGICAL":return Be(e.left)||Be(e.right);case"NOT":case"GROUP":return Be(e.expr);case"EXISTS":case"BOOLEAN":return!1}}function wi(e){if(Array.isArray(e))return e.some(wi);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(wi)}async function _e(e,t,r,n,i){let o=await ye(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 Ii(e,t,r,n){let{records:i,metrics:o}=await _e(e,t,r,["$id"],n);return{ids:Ds(i),metrics:o}}function Ea(e,t){let r=Mr(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 ME(e,t){return e.key.type==="FIELD_NAME"?t.get(e.key.name):void 0}function xE(e,t){return e.columns.some(r=>"alias"in r&&r.alias===t)}function en(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=ME(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"&&!xE(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 FE=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 KE(e,t){return e.columns.some(r=>"alias"in r&&r.alias===t)}function tn(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,p=e.orderSemantics.get(l);if(!p){r.push(`KORDER_KEY_UNRESOLVED(field=${l})`);continue}if(KE(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}FE.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 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 bi=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"}},Pi=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}},Ni=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 Ou(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 Ni(a).message}}return{records:r,cleanupWarning:o}}function Ra(e){let t=[];e.where&&t.push(G(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(" ")}var Lu=["$id","$revision","\u30EC\u30B3\u30FC\u30C9\u756A\u53F7","\u4F5C\u6210\u8005","\u4F5C\u6210\u65E5\u6642","\u66F4\u65B0\u8005","\u66F4\u65B0\u65E5\u6642","\u30B9\u30C6\u30FC\u30BF\u30B9","\u4F5C\u696D\u8005"];function _u(e){return e.startsWith("_")||e.startsWith("$")}var BE=/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/;function ya(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(ya);let t=e;return t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"?!0:t.type==="SELECT"||t.type==="SCALAR_SUBQUERY"?!1:t.type==="FIELD"&&typeof t.field=="string"?BE.test(t.field):Object.values(t).some(ya)}function $E(e){switch(e.type){case"AGGREGATE":case"ARITH_AGG_COL":return"AGGREGATE_DEPENDENT";case"GROUPING_COL":case"WINDOW_COL":return"POST_GROUP_ONLY";case"VARIABLE_COL":throw new Error("InternalError: unresolved VARIABLE_COL reached GROUP BY alias planning.");case"WILDCARD":case"PARENT_WILDCARD":case"FIELD":case"LITERAL_COL":case"ARITH_COL":case"CASE_COL":case"STRFUNC_COL":case"SCALAR_VALUE_COL":case"SCALAR_SUBQUERY_COL":return Fr(e)||ya(e)?"AGGREGATE_DEPENDENT":"SAFE"}}var GE=["_pid","_rid","_idx"];function ma(e){return[...new Set(e)]}function VE(e){switch(e.kind){case"APP":return ma([...e.fieldCodes,...Lu]);case"SUBTABLE":return ma([...e.childFieldCodes,...GE,...e.parentFieldCodes.map(t=>`_p.${t}`)]);case"MATERIALIZED":return ma(e.columns)}}function Du(e,t){return[e.from,...e.joins.map(n=>n.table)].map((n,i)=>({sourceIndex:i,qualifier:n.alias??n.cteName,columns:VE(t(n,i))}))}function WE(e){if(e.startsWith("_p."))return{qualifier:null,fieldCode:e};let t=e.indexOf(".");return t<=0||t===e.length-1?{qualifier:null,fieldCode:e}:{qualifier:e.slice(0,t),fieldCode:e.slice(t+1)}}function HE(e,t){return e.qualifier===null?t:`${e.qualifier}.${t}`}function YE(e){return"alias"in e&&typeof e.alias=="string"?e.alias:null}function jE(e,t,r){let n=WE(e),o=(n.qualifier===null?r:r.filter(l=>l.qualifier===n.qualifier)).filter(l=>l.columns.includes(n.fieldCode));if(o.length>1)throw new Error(`ArgumentError: GROUP BY field ${e} is ambiguous across multiple sources (reason=GROUP_BY_FIELD_AMBIGUOUS).`);if(o.length===1){let l=o[0];return{kind:"PHYSICAL",sourceIndex:l.sourceIndex,fieldCode:n.fieldCode,runtimeKey:HE(l,n.fieldCode)}}if(n.qualifier!==null)return{kind:"UNKNOWN",name:e};let a=t.flatMap((l,p)=>YE(l)===e?[{column:l,columnIndex:p}]:[]);if(a.length>1)return{kind:"ALIAS_REJECT",reason:"DUPLICATE"};if(a.length===1){let l=a[0],p=$E(l.column);return p==="SAFE"?{kind:"ALIAS_SAFE",columnIndex:l.columnIndex}:{kind:"ALIAS_REJECT",reason:p==="AGGREGATE_DEPENDENT"?"AGGREGATE":"POST_GROUP_ONLY"}}return t.some(l=>l.type==="AGGREGATE"&&l.alias===null&&ge(l.func,l.distinct,l.arg)===e)?{kind:"ALIAS_REJECT",reason:"AGGREGATE"}:{kind:"UNKNOWN",name:e}}function vu(e,t,r){return{items:e.map(n=>n.type==="FIELD_NAME"?jE(n.name,t,r):{kind:"EXPRESSION"})}}function tt(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 qE(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(Uu(e,a,n.leftColumns),Uu(t,s,n.rightColumns),o==="RIGHT"){let d=new Map;for(let E of e){let R=E[a]??"",m=d.get(R);m?m.push(E):d.set(R,[E])}let c={};for(let E of n.leftColumns??Object.keys(e[0]??{}))c[E]="";let f=[];for(let E of t){let R=E[s]??"",m=d.get(R)??[];if(m.length>0)for(let y of m)f.push({...y,...E});else f.push({...c,...E})}return f}let l=new Map;for(let d of t){let c=d[s]??"",f=l.get(c);f?f.push(d):l.set(c,[d])}let p=[],u={};for(let d of n.rightColumns??Object.keys(t[0]??{}))u[d]="";for(let d of e){let c=d[a]??"",f=l.get(c)??[];if(f.length>0)for(let E of f)p.push({...d,...E});else o==="LEFT"&&p.push({...d,...u})}return p}function Uu(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 zE(e,t,r,n,i){return t===null?e:e.filter(o=>q(t,o,r,n,i))}function $u(e){return e.some(t=>t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"||t.type==="STRFUNC_COL"&&rn(t.expr)||t.type==="SCALAR_VALUE_COL"&&yt(t.expr))}function XE(e,t,r,n,i,o={}){if(i&&i.items.length!==t.length)throw new Error("InternalError: plain GROUP BY resolution plan length does not match group keys.");let a=new Map;for(let l of e){let p=t.map((d,c)=>QE(d,l,i?.items[c],r,o)).join("\0"),u=a.get(p);u?u.push(l):a.set(p,[l])}a.size===0&&t.length===0&&$u(r)&&a.set("",[]);let s=[];for(let l of a.values()){let p={...l[0]};for(let u of t)u.type==="ARITH_KEY"?p[wa(u.expr)]=String(re(u.expr,l[0])):u.type==="FUNC_KEY"&&(p[gt(u.expr)]=ne(u.expr,l[0]));Gu(p,l,r,n),s.push(p)}return s}function JE(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 p={children:new Map},u=[];for(let c of e){let f=p;for(let E of l.items){let R=ku(E,c),m=f.children.get(R);m||(m={children:new Map},f.children.set(R,m)),f=m}f.rows||(s(),f.rows=[],u.push(f.rows)),f.rows.push(c)}e.length===0&&l.items.length===0&&(s(),p.rows=[],u.push(p.rows));let d=new Set(l.items.map(c=>c.canonicalId));for(let c of u){let f={...c[0]},E=new Map;for(let R of l.items)E.has(R.canonicalId)||E.set(R.canonicalId,ku(R,c[0]));for(let R of t.allItems){let m=E.get(R.canonicalId)??"";f[R.directKey]=m,R.unqualifiedBridgeKey!==null&&(f[R.unqualifiedBridgeKey]=m)}Gu(f,c,r,n),gl(f,d),o.push(f)}}return o}function ku(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=ge(i.func,i.distinct,i.arg),a=String(ha(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??Rr(i.expr);e[o]=String(Ci(i.expr,t,n))}else if(i.type==="STRFUNC_COL"&&rn(i.expr)){let o=i.alias??gt(i.expr),a=Ia(i.expr,t,n);e[o]=ne(a,e)}else if(i.type==="SCALAR_VALUE_COL"&&yt(i.expr)){let o=i.alias??$e(i.expr),a=Li(i.expr,t,n);e[o]=String(le(a,e))}}function QE(e,t,r,n,i){if(e.type==="FIELD_NAME"){if(!r)return t[e.name]??"";if(r.kind==="PHYSICAL")return t[r.runtimeKey]??"";if(r.kind==="ALIAS_SAFE"){let o=n[r.columnIndex];if(!o)throw new Error(`InternalError: GROUP BY alias column index ${r.columnIndex} is out of range.`);let a=Oi(o,t,r.columnIndex,i);if(typeof a!="string")throw new Error("InternalError: GROUP BY alias resolved to an expanded SELECT column.");return a}throw new Error(`InternalError: unresolved plain GROUP BY item ${r.kind} reached evaluation.`)}return e.type==="FUNC_KEY"?ne(e.expr,t):String(re(e.expr,t))}function ha(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=re(r,f);if(isNaN(R))continue;E=String(R)}else{let R=Rt(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,p=t?s?[...new Set(l)]:[...new Set(a)]:s?l:a;if(e==="COUNT")return p.length;if(e==="GROUP_CONCAT")return p.join(n??",");let u=e==="MIN"||e==="MAX"||e==="MODE"?Vu(r,o):void 0,d=typeof u=="string"?x(u):u??(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 m of a)f.set(m,(f.get(m)??0)+1);let E="",R=0;for(let[m,y]of f){if(y>R){E=m,R=y;continue}if(y!==R)continue;let g=Pt(m,E,d);(g<0||g===0&&Et(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=Pt(R,E,d);(e==="MAX"&&m>0||e==="MIN"&&m<0)&&(E=R)}return E}let c=s?p:p.map(Number);switch(e){case"SUM":return c.reduce((f,E)=>f+E,0);case"AVG":return c.length===0?0:c.reduce((f,E)=>f+E,0)/c.length;case"MEDIAN":{if(c.length===0)return"";let f=[...c].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(c.length===0||f&&c.length<2)return"";let E=c[0],R=0,m=0,y=0;for(let h of c){let S=h-E;R++;let O=S-m;m+=O/R,y+=O*(S-m)}let g=Math.max(0,y/(f?R-1:R));return e==="STDDEV_POP"||e==="STDDEV_SAMP"?Math.sqrt(g):g}}}function ZE(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 Ci(e,t,r){if(e.type==="NUMBER")return e.value;if(e.type==="AGG_REF")return Number(ha(e.func,e.distinct,e.arg,e.separator,t,r));let n=Ci(e.left,t,r),i=Ci(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 Rr(e){return Pr(e)}function Vu(e,t){if(e.type==="FIELD_REF")return t?.(ZE(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=>Vu(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 eR(e,t,r,n){return t===null?e:e.filter(i=>q(t,i,r,void 0,n))}function tR(e,t,r,n,i){if(e.length===0)return e;let o=rR(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 rR(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(sR(t,a,o))}function Aa(e,t,r,n,i,o){return t.length===0?e:Wu(e,t,r,n,i,o).rows.map(a=>a.row)}function Wu(e,t,r,n,i,o){let a=t.map(({key:p})=>{if(p.type==="ARITH_KEY")return{semantics:x("number")};if(p.type==="FUNC_KEY")return{semantics:x(Hu.has(p.expr.func)?"number":"string")};if(p.type==="GROUPING_KEY")return{semantics:x("number")};let u=i?.get(p.name);if(u)return{semantics:u};let d=r?.get(p.name);return d?{semantics:{fieldType:"MULTI_SELECT",compareMode:"option",inSubtable:!1,requiresCollectionOperators:!1,optionOrder:d}}:{semantics:x(n?.get(p.name)??"string")}}),s=e.map(p=>({row:p,keys:t.map(({key:u},d)=>({s:oR(u,p,o)}))})),l=(p,u)=>nR(p,u,t,a);return s.sort(l),{rows:s,compare:l}}function nR(e,t,r,n){for(let i=0;i<r.length;i++){let o=iR(e.keys[i],t.keys[i],n[i]);if(o!==0)return r[i].direction==="ASC"?o:-o}return 0}function iR(e,t,r){return Pt(e.s,t.s,r.semantics)}var Hu=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function oR(e,t,r){switch(e.type){case"FIELD_NAME":return r?.(e.name,t)??t[e.name]??"";case"ARITH_KEY":return String(re(e.expr,t));case"FUNC_KEY":return ne(e.expr,t);case"GROUPING_KEY":return ur(e.ref,t)}}function Sa(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=>Je(l,a.field));break;case"LITERAL_COL":i.set(s,()=>a.value);break;case"AGGREGATE":{let l=ge(a.func,a.distinct,a.arg);i.set(s,p=>p[s]??p[l]??"0");break}case"ARITH_AGG_COL":{let l=Rr(a.expr);i.set(s,p=>p[s]??p[l]??"0");break}case"WINDOW_COL":i.set(s,l=>l[s]??"");break;case"ARITH_COL":i.set(s,l=>String(re(a.expr,l)));break;case"STRFUNC_COL":{let l=gt(a.expr);i.set(s,p=>rn(a.expr)?p[s]??p[l]??ne(a.expr,p,r,n):ne(a.expr,p,r,n));break}case"CASE_COL":i.set(s,l=>Ne(a.expr,l,r,n));break;case"SCALAR_VALUE_COL":{let l=$e(a.expr);i.set(s,p=>yt(a.expr)?p[s]??p[l]??"":String(le(a.expr,p,r,n)));break}case"SCALAR_SUBQUERY_COL":i.set(s,()=>t?.get(o)??"");break;case"GROUPING_COL":i.set(s,l=>ur(a.ref,l));break;case"VARIABLE_COL":break}}return(o,a)=>i.get(o)?.(a)}function Ta(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 p=JSON.stringify(a.partitionBy.map(d=>aR(l,d))),u=s.get(p);u?u.push(l):s.set(p,[l])}for(let l of s.values()){let p=Wu(l,a.orderBy,r,n,i),u=p.rows,d=1,c=1;for(let f=0;f<u.length;f++){f>0&&p.compare(u[f-1],u[f])!==0&&(d=f+1,c++);let E=a.func==="ROW_NUMBER"?f+1:a.func==="RANK"?d:c;u[f].row[a.alias]=String(E)}}}return e}function aR(e,t){let r=t.tableAlias?`${t.tableAlias}.${t.field}`:t.field;return Je(e,r)}function _i(e,t,r){let n=r??0;return t===null?e.slice(n):e.slice(n,n+t)}function Oi(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 Je(t,e.field);case"LITERAL_COL":return e.value;case"AGGREGATE":{let i=ge(e.func,e.distinct,e.arg);return t[e.alias??i]??t[i]??"0"}case"ARITH_AGG_COL":{let i=e.alias??Rr(e.expr);return t[i]??"0"}case"ARITH_COL":return String(re(e.expr,t));case"CASE_COL":return Ne(e.expr,t,n.resolveFieldType,n.resolveFieldSemantics);case"GROUPING_COL":return ur(e.ref,t);case"STRFUNC_COL":{let i=gt(e.expr);return rn(e.expr)?t[e.alias??i]??t[i]??ne(e.expr,t,n.resolveFieldType,n.resolveFieldSemantics):ne(e.expr,t,n.resolveFieldType,n.resolveFieldSemantics)}case"SCALAR_VALUE_COL":{let i=$e(e.expr);return yt(e.expr)?t[e.alias??i]??t[i]??"":String(le(e.expr,t,n.resolveFieldType,n.resolveFieldSemantics))}case"SCALAR_SUBQUERY_COL":return n.scalarCache?.get(r)??"";case"WINDOW_COL":return t[e.alias]??""}}function sR(e,t,r={}){return e.map((n,i)=>{let o=Oi(n,t,i,r);return typeof o=="string"?o:o.entries.map(([,a])=>a)})}function Di(e,t,r,n,i,o,a){if(t.length===1&&t[0].type==="WILDCARD"){let c=e.map(E=>{let R=Ku(xu(E),a),m=Oi(t[0],E,0,{wildcardKeys:Object.keys(R)}),y={};if(typeof m!="string")for(let[g,h]of m.entries)h!==null&&(y[g]=h);return y}),f=c.length>0?Object.keys(c[0]):[...i??[]];return{rows:c,columns:f}}let s=cR(t),l=t.some(c=>c.type==="WILDCARD"||c.type==="PARENT_WILDCARD"),p=l?null:lR(t,s),u=p??[];return l&&e.length===0?{rows:[],columns:uR(t,s)}:{rows:e.map((c,f)=>{let E={},R={scalarCache:r,resolveFieldType:n,resolveFieldSemantics:o,wildcardKeys:Object.keys(Ku(xu(c),a)),parentWildcardKeys:Object.keys(c).filter(m=>m.startsWith("_p.")).sort()};for(let[m,y]of t.entries()){let g=Oi(y,c,m,R);switch(y.type){case"VARIABLE_COL":break;case"WILDCARD":if(typeof g!="string")for(let[h,S]of g.entries)S!==null&&(E[h]=S);break;case"PARENT_WILDCARD":{if(typeof g!="string")for(let[h,S]of g.entries)S!==null&&(E[h]=S),f===0&&u.push(h);break}case"FIELD":{let h=p?.[m]??y.alias??s.get(m)??y.field;E[h]=g,p===null&&f===0&&u.push(h);break}case"LITERAL_COL":{let h=p?.[m]??y.alias??`'${y.value}'`;E[h]=g,p===null&&f===0&&u.push(h);break}case"AGGREGATE":{let h=ge(y.func,y.distinct,y.arg),S=p?.[m]??y.alias??h;E[S]=g,p===null&&f===0&&u.push(S);break}case"ARITH_AGG_COL":{let h=p?.[m]??y.alias??Rr(y.expr);E[h]=g,p===null&&f===0&&u.push(h);break}case"ARITH_COL":{let h=p?.[m]??y.alias??wa(y.expr);E[h]=g,p===null&&f===0&&u.push(h);break}case"CASE_COL":{let h=p?.[m]??y.alias??"case";E[h]=g,p===null&&f===0&&u.push(h);break}case"GROUPING_COL":{let h=p?.[m]??y.alias??`GROUPING(${y.ref.field.tableAlias?`${y.ref.field.tableAlias}.`:""}${y.ref.field.field})`;E[h]=g,p===null&&f===0&&u.push(h);break}case"STRFUNC_COL":{let h=p?.[m]??y.alias??gt(y.expr);E[h]=g,p===null&&f===0&&u.push(h);break}case"SCALAR_VALUE_COL":{let h=p?.[m]??y.alias??$e(y.expr);E[h]=g,p===null&&f===0&&u.push(h);break}case"SCALAR_SUBQUERY_COL":{let h=p?.[m]??y.alias??"(subquery)";E[h]=g,p===null&&f===0&&u.push(h);break}case"WINDOW_COL":{let h=p?.[m]??y.alias;E[h]=g,p===null&&f===0&&u.push(h);break}}}return E}),columns:u}}function lR(e,t){return e.map((r,n)=>Yu(r,n,t))}function uR(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=Yu(o,i,t);n.has(a)||(n.add(a),r.push(a))}return r}function Yu(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??ge(e.func,e.distinct,e.arg);case"ARITH_AGG_COL":return e.alias??Rr(e.expr);case"ARITH_COL":return e.alias??wa(e.expr);case"CASE_COL":return e.alias??"case";case"STRFUNC_COL":return e.alias??gt(e.expr);case"SCALAR_VALUE_COL":return e.alias??$e(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 cR(e){let t=new Map;for(let n of e){if(n.type!=="FIELD"||n.alias)continue;let i=Mu(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=Mu(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 Mu(e){if(e.startsWith("_p."))return e;let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function xu(e){let t={};for(let[r,n]of Object.entries(e))r.startsWith("_p.")||(t[r]=n);return t}function wa(e){let t=r=>r.type==="FIELD_REF"?r.field:r.type==="NUMBER"?W(r):r.type==="STRING_FUNC"?gt(r):`(${t(r.left)}${r.op}${t(r.right)})`;return e.type==="ARITH"?`${t(e.left)}${e.op}${t(e.right)}`:t(e)}function gt(e){let t=e.args.map(r=>r.type==="AGG_REF"||r.type==="AGG_ARITH"?Rr(r):$e(r));return`${e.func}(${t.join(",")})`}function $e(e){switch(e.type){case"STRING":return`'${e.value}'`;case"NUMBER":return W(e);case"VARIABLE":return`@${e.name}`;case"FIELD":return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;case"STRING_FUNC":return gt(e);case"CASE_WHEN":return"case";case"SCALAR_ARITH":return`${$e(e.left)}${e.op}${$e(e.right)}`;case"CONCAT_OP":return`${$e(e.left)}||${$e(e.right)}`}}function pR(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:yt(e)}function yt(e){return e.type==="STRING_FUNC"?rn(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?yt(e.left)||yt(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>Fu(t.result))||e.elseResult!==null&&Fu(e.elseResult):!1}function Fu(e){return e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?!1:yt(e)}function rn(e){return e.args.some(t=>pR(t))}function dR(e,t,r){if(e.type==="AGG_REF"){let n=ha(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=Ci(e,t,r);return{type:"NUMBER",value:n,raw:String(n)}}return e.type==="STRING_FUNC"?Ia(e,t,r):Li(e,t,r)}function Li(e,t,r){return e.type==="STRING_FUNC"?Ia(e,t,r):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?{...e,left:Li(e.left,t,r),right:Li(e.right,t,r)}:e}function Ia(e,t,r){return{type:"STRING_FUNC",func:e.func,args:e.args.map(n=>dR(n,t,r))}}function Ku(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 Bu(e,t){if(e!==void 0)return t?e.flatMap(r=>[`${t}.${r}`,r]):[...e]}function ga(e,t,r){if(!(e===void 0&&t===void 0&&r.length===0))return[...new Set([...e??[],...t??[],...Object.keys(r[0]??{})])]}function fR(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(Hu.has(r.expr.func)?"number":"string")));return t}function ba(e){let{stmt:t,tables:r,scalarCache:n,optionOrders:i,sortKinds:o,orderSemantics:a,fieldTypeResolver:s,fieldSemanticsResolver:l,havingFieldTypeResolver:p,havingFieldSemanticsResolver:u,aggregateSortKindResolver:d,appliedKlikes:c,sourceColumns:f,tableColumns:E,hiddenQualifiedAliases:R,resolvedGroupingSpec:m,plainGroupByPlan:y}=e,g=fR(t.columns);for(let[_,C]of a??[])g.set(_,C);let h=[],S=t.from.alias;h=(r.get(S)??r.get(null)??[]).map(_=>tt(_,S));let b=ga(Bu(E?.get(S),S),void 0,h);for(let _ of t.joins){let C=_.table.alias,k=(r.get(C)??[]).map(P=>tt(P,C)),A=ga(Bu(E?.get(C),C),void 0,k);h=qE(h,k,_,{leftColumns:b,rightColumns:A}),b=ga(b,A,h)}let L=e.residualWhere!==void 0?e.residualWhere:t.where;h=zE(h,L,s,c,l);let I=Q(t);if(I.type==="GROUPING_SETS"){if(!m)throw new Error("internal error: B65 grouping sets require a metadata-resolved grouping spec.");h=JE(h,m,t.columns,d,{maxGeneratedRows:5e4})}else(I.type==="PLAIN"||$u(t.columns))&&(h=XE(h,I.type==="PLAIN"?I.allItems:[],t.columns,d,I.type==="PLAIN"?y:void 0,{scalarCache:n,resolveFieldType:s,resolveFieldSemantics:l}));return h=eR(h,t.having,p,u),h=Ta(h,t.columns,i,o,g),t.distinct&&(h=tR(h,t.columns,n,s,l)),h=Aa(h,t.orderBy,i,o,g,Sa(t.columns,n,s,l)),h=_i(h,t.limit,t.offset),Di(h,t.columns,n,s,f,l,R)}function ju(e,t){let r=[];for(let n of e){let i=Pa(n.$id?.value),o=ER(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[p,u]of Object.entries(n)){if(p===t)continue;let d=Pa(u?.value);l[`_p.${p}`]={value:d}}for(let[p,u]of Object.entries(s.value??{}))l[p]={value:Pa(u?.value)};r.push(l)}}return r}function ER(e){return Array.isArray(e)?e.filter(t=>!!t&&typeof t=="object"):[]}function Pa(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 qu(e){return["$id",...new Set([...e.topLevel.map(t=>t.code).filter(t=>t!=="$id"&&t!=="$revision"),...e.subtables.keys()])]}function zu(e,t){let r=nn(e);for(let[n,i]of Object.entries(t))r[n]=nn(i);return r}function Xu(e){let t=[...e.preErrors.map(i=>Na(i)),...e.postImageErrors.map(i=>Na(i,i.$err_subtable!=="")),...e.checkErrors.map(i=>Na(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]=nn(e.normalizedPostImage[i])}return{errors:t,invalidRows:r.size,invalidRowNumbers:r,writeRecord:n}}function Na(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 nn(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(nn(a,t));return o}let i={};t.set(r,i);for(let[o,a]of Object.entries(e))i[o]=nn(a,t);return i}var Ge=["=","!=",">","<",">=","<="],RR=new Set(["DATE","DATETIME","CREATED_TIME","UPDATED_TIME"]),mR=new Set(Ge),yR=["=","!=","in","not in"],gR=new Map([["RECORD_NUMBER",new Set([...Ge,"in","not in"])],["__ID__",new Set([...Ge,"in","not in"])],["CREATOR",new Set(["in","not in"])],["MODIFIER",new Set(["in","not in"])],["CREATED_TIME",new Set(Ge)],["UPDATED_TIME",new Set(Ge)],["DATE",new Set(Ge)],["TIME",new Set(Ge)],["DATETIME",new Set(Ge)],["SINGLE_LINE_TEXT",new Set(["=","!=","in","not in","like","not like"])],["LINK",new Set(["=","!=","in","not in","like","not like"])],["NUMBER",new Set([...Ge,"in","not in"])],["CALC",new Set([...Ge,"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(yR)]]),Ju=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"]),Qu=new Set(["CHECK_BOX","MULTI_SELECT","FILE","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE","CATEGORY"]);function hR(e){return gR.get(e)??new Set}function rt(e,t){return e===null?{capability:"EXACT_PUSHDOWN",reasons:[{code:"WHERE_EXACT"}]}:an(e,t)}function an(e,t){switch(e.type){case"BOOLEAN":return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]};case"BINARY":return AR(e.op,e.left,e.right,t);case"NULL_CHECK":return e.field.type!=="FIELD"?Ca():wR(e.field,e.not?"IS NOT NULL":"IS NULL",t);case"EXISTS":return Ca();case"GROUP":return an(e.expr,t);case"NOT":{let r=an(e.expr,t);return r.capability!=="SUPERSET_PREFILTER"?r:Zu(r.reasons)?sn({capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"},...r.reasons]}):{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]}}case"LOGICAL":{let r=an(e.left,t),n=an(e.right,t);return bR(e.op,r,n)}}}function AR(e,t,r,n){if(r.type==="KINTONE_FUNC"&&ae(r.name))return Oa(e,t,r,n);if(t.type!=="FIELD")return Ca();let i=n(t);if(!i)return Ui("WHERE_FIELD_UNRESOLVED",t.field,void 0,vi(e));if(!IR(i.fieldType,e))return Ui("WHERE_OPERATOR_UNSUPPORTED",t.field,i.fieldType,vi(e));let o=vi(e),a=hR(i.fieldType),s=r.type==="STRING"||r.type==="NUMBER"||r.type==="IN_LIST"||SR(r),l=!i.requiresCollectionOperators||o!=="="&&o!=="!=",p=e==="LIKE"||e==="NOT_LIKE";return s&&l&&a.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 SR(e){return e.type==="KINTONE_FUNC"&&(e.name==="TODAY"||e.name==="NOW"||e.name==="LOGINUSER")}function Oa(e,t,r,n){let i=vi(e),o=r.name;if(t.type!=="FIELD")return on("WHERE_RELATIVE_DATE_CONTEXT_UNSUPPORTED",o,void 0,void 0,i);let a=n(t);return a?TR(r)?mR.has(i)?!RR.has(a.fieldType)||a.inSubtable||a.requiresCollectionOperators?on("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}]}:on("WHERE_RELATIVE_DATE_OPERATOR_UNSUPPORTED",o,t.field,a.fieldType,i):on("WHERE_RELATIVE_DATE_ARGUMENT_INVALID",o,t.field,a.fieldType,i):on("WHERE_RELATIVE_DATE_FIELD_TYPE_UNSUPPORTED",o,t.field,void 0,i)}function TR(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 wR(e,t,r){let n=r(e);return n?!Ju.has(n.fieldType)&&!Qu.has(n.fieldType)?Ui("WHERE_OPERATOR_UNSUPPORTED",e.field,n.fieldType,t):{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_RESIDUAL",field:e.field,fieldType:n.fieldType,operator:t}]}:Ui("WHERE_FIELD_UNRESOLVED",e.field,void 0,t)}function IR(e,t){return Ju.has(e)?!0:Qu.has(e)?t==="="||t==="!="||t==="<>"||t==="IN"||t==="NOT_IN"||t==="LIKE"||t==="NOT_LIKE"||t==="KLIKE"||t==="NOT_KLIKE":!1}function vi(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 bR(e,t,r){let n=[...t.reasons,...r.reasons];return t.capability==="UNSUPPORTED"||r.capability==="UNSUPPORTED"?sn({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")?sn({capability:"SUPERSET_PREFILTER",reasons:[{code:"WHERE_SUPERSET_PREFILTER"},...n]}):sn({capability:"LOCAL_ONLY",reasons:n})}function Ca(){return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]}}function Ui(e,t,r,n){return{capability:"UNSUPPORTED",reasons:[{code:e,field:t,fieldType:r,operator:n}]}}function on(e,t,r,n,i){return sn({capability:"UNSUPPORTED",reasons:[{code:e,functionName:t,field:r,fieldType:n,operator:i}]})}function Zu(e){return e.some(t=>t.functionName!==void 0)}function sn(e){if(e.capability==="EXACT_PUSHDOWN"||!Zu(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 ki(e){let{select:t,selectMode:r,capability:n,context:i,serializedWholeWhere:o,relativeFunctionNames:a}=e;if(t.where===null||t.from.appId<=0||t.from.cteName!==null||t.from.subtableCode||t.joins.length>0||!i.allowFullScanExact||t.orderMode==="KINTONE_NATIVE")return null;let s=t.orderMode==="CANONICAL"&&t.orderBy.length>0;if(r!=="FULL_SCAN"&&!s||n.capability!=="EXACT_PUSHDOWN")return null;let l=Dt(t.where);if(l.length===0||!CR(l,a)||o===null||!ec(o,l))return null;let p={prefilterWhere:t.where,residualWhere:null,exactRelativeLeaves:NR(t.where),relativeFunctionNames:new Set(l),appliedKlikes:new Set,capability:n.capability,reasons:n.reasons},u={allowForm:"FULL_SCAN_EXACT",clientWhereEvaluation:!1,serializedWholeWhere:o,prefilterPlan:p};return PR(u,e,l),u}function PR(e,t,r){if(e.allowForm!=="FULL_SCAN_EXACT")throw new Error("FULL_SCAN_EXACT invariant: allowForm");if(e.clientWhereEvaluation!==!1)throw new Error("FULL_SCAN_EXACT invariant: clientWhereEvaluation");if(t.capability.capability!=="EXACT_PUSHDOWN")throw new Error("FULL_SCAN_EXACT invariant: capability");if(t.select.where===null||e.prefilterPlan.prefilterWhere!==t.select.where)throw new Error("FULL_SCAN_EXACT invariant: whole WHERE identity");if(e.prefilterPlan.residualWhere!==null)throw new Error("FULL_SCAN_EXACT invariant: residualWhere");if(e.prefilterPlan.capability!=="EXACT_PUSHDOWN")throw new Error("FULL_SCAN_EXACT invariant: transport capability");if(!ec(e.serializedWholeWhere,r))throw new Error("FULL_SCAN_EXACT invariant: relative occurrence serialization")}function Dt(e){let t=[],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==="KINTONE_FUNC"&&typeof i.name=="string"&&ae(i.name)){t.push(i.name);return}Object.values(i).forEach(r)}};return r(e),t}function NR(e){let t=[],r=n=>{switch(n.type){case"BINARY":n.right.type==="KINTONE_FUNC"&&ae(n.right.name)&&t.push(n);return;case"LOGICAL":r(n.left),r(n.right);return;case"NOT":case"GROUP":r(n.expr);return;case"EXISTS":case"NULL_CHECK":case"BOOLEAN":return}};return r(e),t}function CR(e,t){return e.length===t.length&&e.every((r,n)=>r===t[n])}function ec(e,t){let r=new Map;for(let n of t){if(!ae(n))return!1;r.set(n,(r.get(n)??0)+1)}for(let[n,i]of r)if((e.match(new RegExp(`\\b${n}\\s*\\(`,"g"))?.length??0)<i)return!1;return!0}function rc(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"&&ae(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 _a(e){return rc(e,!0)}function Mi(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 De(e,t,r,n,i=!0,o=!0){let a=_a(e.where);a.length>0&&r.push({kind:n?"FORBIDDEN":"SELECT",source:e,where:e.where,functionNames:a,path:t,allowPhase2Prefilter:i,allowFullScanExact:o,relativeFunctionOccurrences:Dt(e.where)}),Mi(e,e).forEach((s,l)=>De(s,`${t}.select-source[${l}]`,r,n,i,o))}function ln(e,t,r,n,i=!0){e.left.type==="UNION"?ln(e.left,`${t}.left`,r,n,i):De(e.left,`${t}.left`,r,n,!0,i),De(e.right,`${t}.right`,r,n,!0,i)}function tc(e,t,r,n){if(!n&&pt(e)){De(dt(e),`${t}.inlined`,r,!1,!0,!1);return}e.ctes.forEach((i,o)=>{i.query.type==="SELECT"?De(i.query,`${t}.cte[${o}]`,r,!0,!0,!1):i.query.type==="UNION"&&ln(i.query,`${t}.cte[${o}]`,r,!0,!1)}),e.query.type==="SELECT"?De(e.query,`${t}.main`,r,!0,!0,!1):ln(e.query,`${t}.main`,r,!0,!1)}function nc(e,t,r,n=!1){switch(e.type){case"SELECT":De(e,t,r,n);return;case"UNION":ln(e,t,r,n);return;case"WITH":tc(e,t,r,n);return;case"CREATE_TEMP_TABLE":e.query.type==="WITH"?tc(e.query,`${t}.query`,r,!0):e.query.type==="UNION"?ln(e.query,`${t}.query`,r,!0,!1):De(e.query,`${t}.query`,r,!0,!0,!1);return;case"EXPLAIN":nc(e.query,`${t}.query`,r,n);return;case"VALIDATE":case"REORDER":{let i=_a(e.where);i.length>0&&r.push({kind:"FORBIDDEN",source:e,where:e.where,functionNames:i,path:t,allowFullScanExact:!1,relativeFunctionOccurrences:Dt(e.where)}),Mi(e,e).forEach((o,a)=>De(o,`${t}.select-source[${a}]`,r,!0,!0,!1));return}case"UPDATE":case"DELETE":{let i=_a(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,allowFullScanExact:!1,relativeFunctionOccurrences:Dt(e.where)})}if(e.type==="UPDATE"&&e.applyBlocks?.length){let o=rc(e.applyBlocks,!0);o.length>0&&r.push({kind:"FORBIDDEN",source:e,where:null,functionNames:o,path:`${t}.apply`,allowFullScanExact:!1,relativeFunctionOccurrences:[]})}Mi(e,e).forEach((o,a)=>De(o,`${t}.select-source[${a}]`,r,n,!1,!1));return}default:Mi(e,e).forEach((i,o)=>De(i,`${t}.select-source[${o}]`,r,n,!1,!1))}}function xi(e,t){return t.every(r=>new RegExp(`\\b${r}\\s*\\(`).test(e))}function Da(e,t){return t.eligible===!0&&be(e)==="FULL_SCAN"&&e.orderMode!=="KINTONE_NATIVE"&&e.from.cteName===null&&!e.from.subtableCode&&e.joins.length===0}function OR(e){return{kind:e.kind,source:e.source,functionNames:e.functionNames,path:e.path,clientWhereEvaluation:!0,allowed:!1}}function LR(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(qe)||t.push(qe),[...new Set(t)]}function La(e,t){let r=LR(t);return{functionName:e.functionNames[0],path:e.path,code:r.find(n=>n!==qe)??qe,reasonCodes:r}}async function ic(e,t){let r=[];nc(e,"statement",r);let n=[];for(let i of r){if(i.kind==="FORBIDDEN"){let u=OR(i);return n.push(u),{hasRelativeDate:!0,nodes:n,allowed:!1,rejection:La(i)}}if(i.kind==="SELECT"){let u=i.source,d=u.from.cteName===null&&!u.from.subtableCode&&u.joins.length===0,c=be(u),f=await t.select(u),E="";try{E=i.where===null?"":G(i.where)}catch{E=""}let R=d&&c==="SIMPLE"&&(u.orderBy.length===0||u.orderMode==="KINTONE_NATIVE")&&f.capability==="EXACT_PUSHDOWN"&&xi(E,i.functionNames),m,y;if(!R&&i.allowPhase2Prefilter!==!1&&f.capability==="SUPERSET_PREFILTER"&&t.prefilterDecomposition){let S=await t.prefilterDecomposition(u);S?.eligible===!0&&Da(u,S)&&(m=S.plan,y=!0,R=!0)}let g;!R&&f.capability==="EXACT_PUSHDOWN"&&(g=ki({select:u,selectMode:c,capability:f,context:{allowFullScanExact:i.allowFullScanExact},serializedWholeWhere:E||null,relativeFunctionNames:i.relativeFunctionOccurrences})??void 0,g&&(m=g.prefilterPlan,R=!0));let h={kind:i.kind,source:i.source,functionNames:i.functionNames,path:i.path,selectMode:c,capability:f,restQuery:E,...m?{prefilterPlan:m,phase2PrefilterEligible:y}:{},...g?{fullScanExactPlan:g,allowForm:g.allowForm}:{},clientWhereEvaluation:!R,allowed:R};if(n.push(h),!R)return{hasRelativeDate:!0,nodes:n,allowed:!1,rejection:La(i,f)};continue}let o=i.source,a=await t.dml(o),s="";try{s=i.where===null?"":G(i.where)}catch{s=""}let l=a.capability==="EXACT_PUSHDOWN"&&xi(s,i.functionNames),p={kind:i.kind,source:i.source,functionNames:i.functionNames,path:i.path,capability:a,restQuery:s,clientWhereEvaluation:!l,allowed:l};if(n.push(p),!l)return{hasRelativeDate:!0,nodes:n,allowed:!1,rejection:La(i,a)}}return{hasRelativeDate:r.length>0,nodes:n,allowed:!0}}function oc(e){if(!e.allowed&&e.rejection){let t=e.rejection.reasonCodes.filter(r=>r!==qe);throw new Error(`${e.rejection.functionName}: ${qe}${t.length>0?` (reason=${t.join(", ")})`:""} (path=${e.rejection.path})`)}}function va(e,t,r={}){let n=rt(e.where,t),i=(h,S="INELIGIBLE")=>({eligible:!1,disposition:S,reasonCodes:h,capability:n.capability,reasons:n.reasons});if(e.where===null)return i(["NO_WHERE"]);if(e.from.subtableCode)return i(["SUBTABLE_UNSUPPORTED"]);if(e.joins.length>0)return i(["JOIN_UNSUPPORTED"]);if(e.from.cteName!==null||e.from.appId<=0)return i(["NOT_DIRECT_PHYSICAL_APP"]);let o=cn(e.where);if(o.length===0)return i(["NO_RELATIVE_DATE"]);let a=_R(e.where,t);if(!a.ok)return i(a.reasonCodes);if(!DR(o,a.leaves))return i(["RELATIVE_DATE_LEAF_COUNT_MISMATCH"]);if(n.capability==="EXACT_PUSHDOWN")return i(["DEFER_TO_PHASE1"],"DEFER_PHASE1");if(n.capability!=="SUPERSET_PREFILTER")return i(["CAPABILITY_NOT_SUPERSET_PREFILTER"]);let s=UR(e.where,t),l=Mr(e.where,{tableAlias:e.from.alias??void 0,allowUnqualifiedFields:!0,allowKlike:!0,fieldTypes:s.fieldTypes,fieldOptions:s.fieldOptions}),p=r.serialize??G,u=r.containsFunctions??xi,d=[];for(let h of a.leaves){let S=$i(h);if(S===null)return i(["RELATIVE_DATE_LEAF_COUNT_MISMATCH"]);let O;try{O=p(h)}catch{return i(["PREFILTER_SERIALIZATION_FAILED"])}if(!u(O,[S]))return i(["PREFILTER_FUNCTION_MISSING"]);d.push(h)}let c=vR(l.condition),f=new Set(d),E=Ki(e.where,f,c);if(E===null)return i(["RELATIVE_DATE_LEAF_COUNT_MISMATCH"]);let R;try{R=p(E)}catch{return i(["PREFILTER_SERIALIZATION_FAILED"])}let m=d.map(h=>$i(h));if(!u(R,[...new Set(m)])||!kR(R,m))return i(["PREFILTER_FUNCTION_MISSING"]);let y=r.rewriteResidual?r.rewriteResidual(e.where,f):Bi(e.where,f);if(y!==null&&cn(y).length>0)return i(["RESIDUAL_RELATIVE_DATE_REMAINED"]);if(y===null)return i(["DEFER_TO_PHASE1"],"DEFER_PHASE1");let g=new Set;for(let h of m)g.add(h);return{eligible:!0,plan:{prefilterWhere:E,residualWhere:y,exactRelativeLeaves:d,relativeFunctionNames:g,appliedKlikes:l.appliedKlikes,capability:n.capability,reasons:n.reasons}}}function _R(e,t){let r=[],n=null,i=o=>{if(n===null)switch(o.type){case"GROUP":i(o.expr);return;case"LOGICAL":if(o.op==="AND"){i(o.left),i(o.right);return}cn(o).length>0&&(n="RELATIVE_DATE_CONTEXT_UNSUPPORTED");return;case"NOT":cn(o).length>0&&(n="RELATIVE_DATE_CONTEXT_UNSUPPORTED");return;case"BINARY":{if($i(o)===null)return;if(Oa(o.op,o.left,o.right,t).capability!=="EXACT_PUSHDOWN"){n="RELATIVE_DATE_LEAF_NOT_EXACT";return}r.push(o);return}case"EXISTS":cn(o).length>0&&(n="RELATIVE_DATE_CONTEXT_UNSUPPORTED");return;case"NULL_CHECK":case"BOOLEAN":return}};return i(e),n===null?{ok:!0,leaves:r}:{ok:!1,reasonCodes:[n]}}function $i(e){return e.right.type==="KINTONE_FUNC"&&ae(e.right.name)?e.right.name:null}function cn(e){let t=[],r=n=>{if(n.type==="BINARY"&&$i(n)!==null){t.push(n);return}switch(n.type){case"LOGICAL":r(n.left),r(n.right);return;case"NOT":case"GROUP":r(n.expr);return;case"EXISTS":n.query.where!==null&&r(n.query.where);return;case"BINARY":case"NULL_CHECK":case"BOOLEAN":return}};return r(e),t}function DR(e,t){if(e.length!==t.length)return!1;let r=new Set(t);for(let n of e)if(!r.delete(n))return!1;return r.size===0}function vR(e){let t=new Set,r=n=>{switch(n.type){case"BINARY":t.add(n);return;case"LOGICAL":r(n.left),r(n.right);return;case"NOT":case"GROUP":r(n.expr);return;case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}};return e!==null&&r(e),t}function Ki(e,t,r){switch(e.type){case"BINARY":return t.has(e)||r.has(e)?e:null;case"LOGICAL":if(e.op!=="AND")return null;{let n=Ki(e.left,t,r),i=Ki(e.right,t,r);return n!==null&&i!==null?{...e,left:n,right:i}:n??i}case"GROUP":{let n=Ki(e.expr,t,r);return n===null?null:{...e,expr:n}}case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return null}}var un={type:"BOOLEAN",value:!0};function Bi(e,t){if(e.type==="BINARY"&&t.has(e))return un;switch(e.type){case"LOGICAL":{if(e.op!=="AND")return e;let r=Bi(e.left,t)??un,n=Bi(e.right,t)??un;return Fi(r)?Fi(n)?null:n:Fi(n)?r:r===e.left&&n===e.right?e:{...e,left:r,right:n}}case"GROUP":{let r=Bi(e.expr,t)??un;return Fi(r)?un:r===e.expr?e:{...e,expr:r}}case"BINARY":case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return e}}function Fi(e){return e.type==="BOOLEAN"&&e.value}function UR(e,t){let r=new Map,n=a=>{if(a===null||typeof a!="object")return;if(Array.isArray(a)){a.forEach(n);return}let s=a;if(s.type!=="SELECT"){if(s.type==="FIELD"&&typeof s.field=="string"&&typeof s.tableAlias<"u"){r.set(s.field,a);return}Object.values(s).forEach(n)}};n(e);let i=new Map,o=new Map;for(let[a,s]of r){let l=t(s);l&&(i.set(a,l.fieldType),l.optionOrder&&o.set(a,new Set(l.optionOrder.keys())))}return{fieldTypes:i,fieldOptions:o}}function kR(e,t){let r=new Map;for(let n of t){if(!Nr.has(n))return!1;r.set(n,(r.get(n)??0)+1)}for(let[n,i]of r)if((e.match(new RegExp(`\\b${n}\\s*\\(`,"g"))?.length??0)<i)return!1;return!0}var M=class extends Error{constructor(t){super(`ImportSourceError: ${t}`),this.name="ImportSourceError"}};function ac(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 Gi(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 MR(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 xR(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 p=e[a];if(i){if(p==='"'){if(e[a+1]==='"'){n+='"',a+=2;continue}i=!1,o=!0,a++;continue}n+=p,a++;continue}if(o&&p!==","&&p!=="\r"&&p!==`
|
|
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 ce("\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 Co(e){let t=e.codePointAt(0);return t>=65&&t<=90||t>=97&&t<=122||t===95||t===36||Od(t)}function qs(e){let t=e.codePointAt(0);return Co(e)||t>=48&&t<=57}function Xt(e){let t=e.codePointAt(0);return t>=48&&t<=57}function Od(e){return e>=12352&&e<=12543||e>=13312&&e<=40959||e>=63744&&e<=64255||e>=65281&&e<=65376}var Ld=/^([+-]?)(?:(\d+)(?:\.(\d*))?|\.(\d+))(?:[eE]([+-]?)(\d+))?$/;function _d(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 we(e){let t=Ld.exec(e.trim());if(t===null)return null;let r=_d(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 Dd(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 Xs(e){let t=we(e);return t===null?null:Dd(t)}function vd(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 Yn(e,t){if(e.sign!==t.sign)return e.sign<t.sign?-1:1;if(e.sign===0)return 0;let r=vd(e,t);return e.sign===-1?r===0?0:r===-1?1:-1:r}function jn(e,t){let r=we(e),n=we(t);if(r===null||n===null)throw new Error("ArgumentError: compareDecimal requires finite decimal inputs.");return Yn(r,n)}var ut="__NO_FROM__";function pe(e){return{type:"NUMBER",value:Number(e),raw:e}}function G(e){let t=e.raw??String(e.value);return Xs(t)??t}function Js(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 Ud(e){return`${e.tableAlias??""}\0${e.field}`}function Z(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=Ud(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 Qs(e){return Z(e).type!=="NONE"}function Zs(e,t){let r=Z(e);if(r.type!=="GROUPING_SETS")return null;let n=new Map,i=s=>{let l=t(s),p=n.get(l.canonicalId);if(p)return p;let u={...l,field:s};return n.set(u.canonicalId,u),u},o=r.allItems.map(i).filter((s,l,p)=>p.findIndex(u=>u.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 qn(e){return`'${e.replace(/'/g,"''")}'`}function Qt(e,t=!1){if(e.type==="FIELD_REF")return e.field;if(e.type==="NUMBER")return G(e);if(e.type==="STRING_FUNC")return Lo(e);let r=`${Qt(e.left)}${e.op}${Qt(e.right)}`;return t?r:`(${r})`}function el(e){if(e.type==="FIELD")return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;if(e.type==="FUNC_FIELD")return Lo(e.expr);if(e.type==="ARITH_FIELD")return Qt(e.expr);if(e.type==="GROUPING_FIELD"){let t=e.ref.field;return`GROUPING(${t.tableAlias?`${t.tableAlias}.`:""}${t.field})`}return Oo(e.expr)}function rl(e){switch(e.type){case"STRING":return qn(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=>qn(t.value)).join(",")}]`;case"IN_LIST":return`(${e.values.map(rl).join(",")})`;case"ARITH_VALUE":return Qt(e.expr);case"CASE_VALUE":return Oo(e.expr);case"SUBQUERY_IN_LIST":return"(SUBQUERY)";case"SCALAR_SUBQUERY":return"(SUBQUERY)"}}function Dr(e){switch(e.type){case"BINARY":return`${el(e.left)} ${e.op.replace("_"," ")} ${rl(e.right)}`;case"NULL_CHECK":return`${el(e.field)} IS ${e.not?"NOT ":""}NULL`;case"LOGICAL":return`(${Dr(e.left)} ${e.op} ${Dr(e.right)})`;case"NOT":return`NOT (${Dr(e.expr)})`;case"GROUP":return`(${Dr(e.expr)})`;case"BOOLEAN":return e.value?"TRUE":"FALSE";case"EXISTS":return`${e.not?"NOT ":""}EXISTS (SUBQUERY)`}}function tl(e){return e.type==="ARRAY"?`[${e.elements.map(t=>qn(t.value)).join(",")}]`:e.type==="FIELD_REF"||e.type==="ARITH"?Qt(e):bt(e)}function Oo(e){let t=e.branches.map(n=>`WHEN ${Dr(n.condition)} THEN ${tl(n.result)}`).join(" "),r=e.elseResult===null?"":` ELSE ${tl(e.elseResult)}`;return`CASE ${t}${r} END`}function kd(e){return e.type==="AGG_REF"?he(e.func,e.distinct,e.arg):e.type==="AGG_ARITH"?vr(e):bt(e)}function Lo(e){return`${e.func}(${e.args.map(kd).join(",")})`}function bt(e){switch(e.type){case"STRING":return qn(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 Lo(e);case"CASE_WHEN":return Oo(e);case"SCALAR_ARITH":return`(${bt(e.left)}${e.op}${bt(e.right)})`;case"CONCAT_OP":return`(${bt(e.left)}||${bt(e.right)})`}}function Md(e){return e.type==="WILDCARD"?"*":e.type==="FIELD_REF"||e.type==="ARITH"?Qt(e,!0):bt(e)}function he(e,t,r){let n=Md(r);return t?`${e}(DISTINCT ${n})`:`${e}(${n})`}function vr(e){return e.type==="NUMBER"?G(e):e.type==="AGG_REF"?he(e.func,e.distinct,e.arg):`${vr(e.left)}${e.op}${vr(e.right)}`}var zn=new Set(["YESTERDAY","TOMORROW","FROM_TODAY","THIS_WEEK","LAST_WEEK","NEXT_WEEK","THIS_MONTH","LAST_MONTH","NEXT_MONTH","THIS_YEAR","LAST_YEAR","NEXT_YEAR"]),Pt=new Set(["TODAY","NOW","LOGINUSER"]),_o=new Set([...Pt,...zn]),Nt="WHERE_RELATIVE_DATE_REQUIRES_EXACT_PUSHDOWN",Xe="WHERE_KINTONE_FUNCTION_REQUIRES_EXACT_PUSHDOWN";function z(e){return zn.has(e)}function Zt(e){return Pt.has(e)}function Ue(e){return _o.has(e)}var nl=20,Do=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"}),ol=Object.freeze(["CURRENT_DATE","CURRENT_TIMESTAMP"]),vo=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"}),Vg=Object.freeze(Object.values(vo).filter(e=>e!==void 0)),xd=Object.freeze(["COUNT","SUM","AVG","MAX","MIN"]),Fd=new Set(xd);function Kd(e){return Fd.has(e)}var al=Object.freeze({ROW_NUMBER:"ROW_NUMBER",RANK:"RANK",DENSE_RANK:"DENSE_RANK"}),Xn=Object.freeze({TODAY:"TODAY",NOW:"NOW",LOGINUSER:"LOGINUSER"});function il(e){return Xn[e]!==void 0}var Bd=Object.freeze([...zn]),$d=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),Gd=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function Vd(e){return $d.has(e)}function Wd(e){return Gd.has(e)}function Hd(e){return Number.isInteger(e)&&e>=1&&e<=31}var Wg=Object.freeze(Array.from(new Set([...Object.keys(Do),...ol,...Object.keys(vo),...Object.keys(al),...Object.keys(Xn),...Bd,"IF"]))),Yd=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 jd(e,t){return e.kind==="("||e.kind==="."||t.kind===")"||t.kind===","||t.kind==="."?!1:t.kind==="("?!Yd.has(e.kind):!0}var T=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"}},er=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 T("SQL \u6587\u304C\u3042\u308A\u307E\u305B\u3093",this.peek());if(t.length>1)throw new T("\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 T(`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>nl)throw new T(`batch exceeds ${nl} statements.`,r);let n=this.peek();if(n.kind!==";"&&n.kind!=="EOF")throw new T("\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 T("IMPORT is not supported (capability is disabled).",t);return this.parseImport()}break}default:break}throw new T("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 T("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 T(`${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 T(`${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 T("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 T("\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 T("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=Xn[n.kind];if(i==="LOGINUSER")throw new T(`${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 T(`${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 T(`${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 T(`${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 T("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 T(r,n)}parseTempTableName(){let t=this.peek();if(t.kind==="IDENT"&&t.value.startsWith("#"))return this.advance(),t.value;throw new T("\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 T("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}=Je(t,this.prev());if(n)throw new T("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 T("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 T("IMPORT is not supported (capability is disabled).",t);r=this.parseImport()}else throw new T("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}=Je(r,this.prev());if(i)throw new T("IMPORT does not support subtables in Phase 1.",this.prev());this.expect("(");let o=[],a=[],s=new Set;for(;;){let P=this.parseIdentifier();if(s.has(P))throw new T(`IMPORT target ${P} is declared more than once.`,this.prev());if(s.add(P),this.peek().kind==="("){this.advance();let _=this.parseIdentList();if(this.expect(")"),new Set(_).size!==_.length)throw new T(`IMPORT subtable ${P} contains duplicate child declarations.`,this.prev());let N;if(this.isSoftKeyword("ROW")){this.advance();for(let L of["ID","SOURCE"]){if(!this.isSoftKeyword(L))throw new T("ROW must be followed by ID SOURCE <header>.",this.peek());this.advance()}N=this.parseIdentifier()}o.push({kind:"SUBTABLE",subtableCode:P,children:_,...N?{rowIdSourceHeader:N}:{}})}else a.push(P),o.push({kind:"FIELD",field:P});if(this.peek().kind!==",")break;this.advance()}if(this.expect(")"),this.expect("FROM"),!this.isSoftKeyword("CSV")&&!this.isSoftKeyword("JSON"))throw new T("IMPORT FROM requires CSV or JSON.",this.peek());let l=this.peek().value.toUpperCase();this.advance();let p=this.parseIdentifier(),u,d=!0,c;if(this.isSoftKeyword("ENCODING")){if(l==="JSON")throw new T("JSON source is UTF-8 only; ENCODING is not allowed.",this.peek());this.advance();let P=this.parseIdentifier().toUpperCase();if(P!=="UTF8"&&P!=="SJIS")throw new T("ENCODING must be UTF8 or SJIS.",this.prev());u=P==="UTF8"?"utf8":"sjis"}if(this.peek().kind==="NOT"&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="HEADER"){if(l==="JSON")throw new T("NO HEADER is CSV-only.",this.peek());this.advance(),this.advance(),d=!1}else if(this.isSoftKeyword("NO")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="HEADER"){if(l==="JSON")throw new T("NO HEADER is CSV-only.",this.peek());this.advance(),this.advance(),d=!1}if(this.isSoftKeyword("COLUMNS")){if(l==="JSON")throw new T("COLUMNS is CSV-only.",this.peek());if(d)throw new T("COLUMNS requires NO HEADER.",this.peek());this.advance(),this.expect("("),c=this.parseIdentList(),this.expect(")")}let f;if(this.peek().kind==="SELECT"){if(l==="JSON")throw new T("SELECT projection is CSV-only.",this.peek());if(f=this.parseSelect(),f.from.cteName!==ut||f.joins.length>0)throw new T("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 T("IMPORT projection supports SELECT expressions only.",this.prev());if(this.validateImportProjectionScope(f,this.prev()),o.some(P=>P.kind==="SUBTABLE"))throw new T("IMPORT subtable sources cannot use SELECT projection.",this.prev());if(f.columns.length!==a.length)throw new T(`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 T("BY NAME is CSV-only.",this.peek());if(this.advance(),!this.isSoftKeyword("NAME"))throw new T("BY must be followed by NAME in IMPORT.",this.peek());if(this.advance(),!d)throw new T("BY NAME requires HEADER.",this.prev());if(f)throw new T("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 T("IGNORE must be followed by UNKNOWN COLUMNS.",this.peek());if(this.advance(),!this.isSoftKeyword("COLUMNS"))throw new T("IGNORE UNKNOWN must be followed by COLUMNS.",this.peek());this.advance(),R=!0}}let m,y;if(this.isSoftKeyword("MATCH")){this.advance();for(let P of["RECORD","NUMBER","SOURCE"]){if(!this.isSoftKeyword(P))throw new T("MATCH must be followed by RECORD NUMBER SOURCE <header>.",this.peek());this.advance()}y=this.parseIdentifier()}this.peek().kind==="ON"&&this.peekAt(1).kind==="DUPLICATE"&&(m=this.parseOnDuplicate());let h;if(this.peek().kind==="REPLACE"||this.isSoftKeyword("REPLACE")){if(this.advance(),!this.isSoftKeyword("SUBTABLES"))throw new T("REPLACE must be followed by SUBTABLES (...).",this.peek());if(this.advance(),this.expect("("),h=this.parseIdentList(),this.expect(")"),new Set(h).size!==h.length)throw new T("REPLACE SUBTABLES contains duplicates.",this.prev())}let g=o.filter(P=>P.kind==="SUBTABLE");if(g.length){if(f)throw new T("IMPORT subtables cannot use SELECT projection.",this.prev());if(l==="JSON"){if(g.some(P=>P.rowIdSourceHeader))throw new T("JSON subtable IMPORT does not accept ROW ID SOURCE.",this.prev());if(h)throw new T("REPLACE SUBTABLES is CSV-only; JSON uses nested-array replacement semantics.",this.prev())}else{if(t!=="UPDATE_RECORD_NUMBER"||!y)throw new T("CSV subtable IMPORT requires IMPORT UPDATE and MATCH RECORD NUMBER SOURCE.",this.prev());if(E!=="BY_NAME")throw new T("CSV subtable IMPORT requires BY NAME.",this.prev());if(!h)throw new T("CSV subtable IMPORT requires REPLACE SUBTABLES (...).",this.prev());let P=new Set(h);for(let _ of g){if(!_.rowIdSourceHeader)throw new T(`CSV subtable ${_.subtableCode} requires ROW ID SOURCE <header>.`,this.prev());if(!P.has(_.subtableCode))throw new T(`IMPORT declares child columns for non-replaced subtable ${_.subtableCode}.`,this.prev())}for(let _ of P)if(!g.some(N=>N.subtableCode===_))throw new T(`REPLACE SUBTABLES target ${_} is not declared in INTO.`,this.prev())}}else if(h)throw new T("REPLACE SUBTABLES requires subtable targets in INTO.",this.prev());if(t){if(l!=="CSV")throw new T("IMPORT UPDATE supports CSV only.",this.prev());if(E!=="BY_NAME")throw new T("IMPORT UPDATE requires BY NAME.",this.prev());if(!y)throw new T("IMPORT UPDATE requires MATCH RECORD NUMBER SOURCE <header>.",this.peek());if(m)throw new T("IMPORT UPDATE and ON DUPLICATE are mutually exclusive.",this.prev())}else if(y)throw new T("MATCH RECORD NUMBER SOURCE requires IMPORT UPDATE.",this.prev());let S=this.parseCheckGroups(),O=this.parseDmlControlSuffix();return{type:"IMPORT",appId:n,fields:a,targets:o,source:l==="JSON"?{kind:"JSON",sourceName:p}:{kind:"CSV",sourceName:p,encoding:u,hasHeader:d,mappingMode:E,ignoreUnknownColumns:R,...c?{columns:c}:{},...f?{projection:f}:{}},...t?{writeMode:t,recordNumberSourceHeader:y}:{},...h?{replaceSubtables:h}:{},...m?{keyFields:m}:{},...S,...O}}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 T("IMPORT projection cannot use subqueries.",r);if(typeof n.tableAlias=="string")throw new T("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}=Je(r,this.prev());if(i)throw new T(`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 d=this.parseIdentifier();if(this.consume("(")){let c=this.peek().kind===")"?[]:this.parseIdentList();this.expect(")"),o.push({kind:"SUBTABLE",subtableCode:d,children:c})}else o.push({kind:"FIELD",field:d})}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(),p;if(this.consume("INTO")){let d=this.peek();if(d.kind!=="IDENT"||!d.value.startsWith("#"))throw new T("VALIDATE INTO \u306B\u306F # \u3067\u59CB\u307E\u308B\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",d);p=this.parseTableName()}let u={type:"VALIDATE",appId:n,targets:o,...a?{summary:a}:{},where:s,...l,...p?{errorTable:p}:{}};return this.assertValidateExpressions(u,t),u}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 T("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 T("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 T("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 T("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 T("\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 T("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 T("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 T("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 T(`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 T("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 T("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&&jd(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:ut},a=i?this.parseJoins():[],s=this.consume("WHERE")?this.parseWhereExpr(void 0,!0):null,l=[],p,u=null;if(this.consume("GROUP")){if(this.expect("BY"),this.peek().kind==="DISTINCT"||this.isSoftKeyword("DISTINCT"))throw new T("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 T("B65: ordinary GROUP BY items cannot be mixed with grouping elements.",this.peek());this.consume("HAVING")&&(u=this.parseWhereExpr("HAVING"))}let d="CANONICAL",c=[];if(this.consume("ORDER"))this.expect("BY"),c=this.parseOrderBy();else if(this.consume("KORDER")){if(!t)throw new T("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());d="KINTONE_NATIVE",this.expect("BY"),c=this.parseOrderBy()}let f=this.consume("LIMIT")?this.parseUnsignedInt():null,E=this.consume("OFFSET")?this.parseUnsignedInt():null,R=n.some(y=>y.type==="WINDOW_COL"),m=n.some(y=>this.selectColumnHasAggregate(y));if(R&&(l.length>0||p!==void 0||m))throw new T("\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&&d==="KINTONE_NATIVE")throw new T("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,...p?{grouping:p}:{},having:u,orderMode:d,orderBy:c,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 T("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 T("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 T("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 T("_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 al[this.peek().kind]??null}parseWindowColumn(t){if(this.advance(),this.expect("("),this.peek().kind!==")")throw new T(`${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 T("\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"?pe(`-${G(r)}`):{type:"AGG_ARITH",left:pe("0"),op:"-",right:r}}if(this.peek().kind==="NUMBER"){let r=this.advance();return pe(r.value)}let t=this.tryAggregateFunc();if(t!==null)return this.parseAggregateRef(t);throw new T("\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 T("\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 T("\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 T("\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 pe(`${r.kind==="-"?"-":"+"}${G(n)}`);if(r.kind==="+")throw new T("\u5358\u9805 + \u306E\u76F4\u5F8C\u306B\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059",r);return{type:"SCALAR_ARITH",left:pe("0"),op:"-",right:n}}if(r.kind==="STRING")return this.advance(),{type:"STRING",value:r.value};if(r.kind==="NUMBER")return this.advance(),pe(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 T("\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 T(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 T("\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 pe(`+${r.value}`)}if(this.peek().kind==="-"){if(this.advance(),this.peek().kind==="-"||this.peek().kind==="+")throw new T("\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"?pe(`-${G(r)}`):{type:"ARITH",left:pe("0"),op:"-",right:r}}if(this.tryStringFuncName()!==null)return this.parseStringFuncExpr();let t=this.peek();if(t.kind==="NUMBER")return this.advance(),pe(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 T("\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 T("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 T("\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=Do[this.peek().kind];if(r==="LEFT"||r==="RIGHT")return r}let t=Do[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(ol.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 T("\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=qd(r);if(n===null)throw new T(`\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 vo[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 T("MODE \u3067\u306F DISTINCT \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);let i;if(this.consume("*")){if(!Kd(t))throw new T(`${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 T("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 T){if(n.message.includes("\u6BD4\u8F03\u30FB\u8FF0\u8A9E"))throw new T("\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 T("\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 T("\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 T("\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}=Je(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 T("\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 T("\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 T("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 T("\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 T("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 T("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){if(this.groupingFieldContext==="FORBIDDEN"||this.insideAggregateArg>0)throw new T("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 T("\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:he(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==="("&&z(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 T("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 T("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 T("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(!Vd(l))throw new T("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 p=String(a===0?0:a);return{type:"KINTONE_FUNC",name:r,args:{kind:"FROM_TODAY",offset:a,offsetText:p,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(!Wd(o))throw new T(`${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(!Hd(o))throw new T(`${r} \u306E\u65E5\u306F 1 \u304B\u3089 31 \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,i);n=o}else throw new T(`${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 T(`\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(il(t.kind))return this.advance(),this.expect("("),this.expect(")"),{type:"KINTONE_FUNC",name:Xn[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 T("\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 T("\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\u30D0\u30C3\u30C1\u5909\u6570\u3001\u307E\u305F\u306F\u5358\u72EC\u306E LOGINUSER() \u304C\u5FC5\u8981\u3067\u3059",n="LOGINUSER() \u306F IN / NOT IN \u30EA\u30B9\u30C8\u306E\u5358\u72EC\u8981\u7D20\u3068\u3057\u3066\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059";do{let i=this.advance();if(i.kind==="STRING")t.push({type:"STRING",value:i.value});else if(i.kind==="NUMBER")t.push(pe(i.value));else if(i.kind==="-"||i.kind==="+"){let o=this.peek();if(o.kind!=="NUMBER")throw new T(r,i);this.advance();let a=i.kind==="-"?"-":"+";t.push(pe(`${a}${o.value}`))}else if(i.kind==="VARIABLE")t.push({type:"VARIABLE",name:i.value.slice(1).toLowerCase()});else if(i.kind==="LOGINUSER"){if(t.length>0)throw new T(n,i);if(this.expect("(","LOGINUSER \u306E\u76F4\u5F8C\u306B\u306F\u7A7A\u5F15\u6570\u306E () \u304C\u5FC5\u8981\u3067\u3059"),this.expect(")","LOGINUSER \u306E\u76F4\u5F8C\u306B\u306F\u7A7A\u5F15\u6570\u306E () \u304C\u5FC5\u8981\u3067\u3059"),t.push({type:"KINTONE_FUNC",name:"LOGINUSER"}),this.peek().kind===",")throw new T(n,this.peek())}else throw new T(r,i)}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 T("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 T("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 T("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 T("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 T("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 T("B65: CUBE requires at least one field.",this.peek());let t=[];do t.push(this.parseGroupingFieldItem());while(this.consume(","));this.expect(")");let r=Js(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 T("B65: GROUPING() requires exactly one physical field argument.",this.peek());let r=this.parseQualifiedIdent();if(this.peek().kind!==")")throw new T("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 T("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){if(!t)throw new T("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}=Je(t,this.prev());this.expect("(");let i=this.parseIdentList();if(this.expect(")"),this.peek().kind==="SELECT"){let u=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 T("INSERT INTO ... SELECT \u306F APPLY \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(n)throw new T("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 d=this.parseCheckGroups(),c=this.parseDmlControlSuffix();return{type:"INSERT_SELECT",appId:r,fields:i,select:u,...d,...c}}this.expect("VALUES");let o=[];do{this.expect("(");let u=this.parseInsertRow(i.length);this.expect(")"),o.push(u)}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 T("APPLY SUBTABLE noun is not supported; use APPLY <field> (...)",this.peek());if(a.length>0&&this.isSoftKeyword("CHECK"))throw new T("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 T("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 T("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 T("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 T("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=a.length>0?{applyBlocks:a}:{};return n?{type:"INSERT",appId:r,subtableCode:n,fields:i,values:o,...p,...s,...l}:{type:"INSERT",appId:r,fields:i,values:o,...p,...s,...l}}parseUpsert(){this.expect("UPSERT"),this.expect("INTO"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:r,subtableCode:n}=Je(t,this.prev());if(n)throw new T("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 d=this.parseSelect(),c=this.parseOnDuplicate();if(this.isUpsertApplyBranchStart()||this.isApplyBlockStart())throw new T("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 T("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:d,keyFields:c,...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 T("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 T("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(),u=this.parseDmlControlSuffix();if(this.isUpsertApplyBranchStart()||this.isApplyBlockStart())throw new T("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,...p,...u}}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 T("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 T("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 T(`ON ${i?"INSERT":"UPDATE"} APPLY \u306F 1 \u56DE\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059`,n);if(!this.isApplyBlockStart())throw new T(`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 T("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(pe(`${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(pe(n.value));else throw new T("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 T(`\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}=Je(t,this.prev());this.expect("SET");let i=this.parseAssignments();if(n&&i.some(c=>c.value.type==="STRING_FUNC"))throw new T("\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 c=this.parseTableRef();if(c.subtableCode)throw new T("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u306B\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.prev());if(c.cteName!==null&&!c.cteName.startsWith("#"))throw new T("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(!c.alias)throw new T("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u306B\u306F\u30A8\u30A4\u30EA\u30A2\u30B9\u304C\u5FC5\u8981\u3067\u3059",this.prev());if(c.alias.toLowerCase()===`app${r}`.toLowerCase())throw new T(`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:c.appId,cteName:c.cteName,alias:c.alias,targetJoinField:"",joinKeyField:"",targetFilter:null}}let a=this.peek();if(!this.consume("WHERE"))throw new T("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 T("APPLY SUBTABLE noun is not supported; use APPLY <field> (...)",this.peek());if(l.length>0&&this.peek().kind==="WHERE")throw new T("\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 T("\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 c=this.decomposeUpdateFromWhere(s,r,o.alias,a);o.targetJoinField=c.targetJoinField,o.joinKeyField=c.joinKeyField,o.targetFilter=c.targetFilter}else{if(i.some(c=>c.value.type==="SOURCE_FIELD"))throw new T("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(c=>c.value.type==="STRING_FUNC"&&this.nodeContainsAnyQualifier(c.value)))throw new T("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 T("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 T("ON ERROR SKIP / REJECT LIMIT \u306F APPLY \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let p=this.parseCheckGroups(),u=this.parseDmlControlSuffix();if(this.isSoftKeyword("APPLY"))throw new T("APPLY \u306F VALIDATE ONLY \u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(n&&p.checkGroups)throw new T("CHECK \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(n&&(u.validateOnly||u.onErrorSkip))throw new T("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 d=l.length>0?{applyBlocks:l}:{};return o!==null?{type:"UPDATE",appId:r,assignments:i,where:s,from:o,...d,...p,...u}:n?{type:"UPDATE",appId:r,subtableCode:n,assignments:i,where:s,...d,...p,...u}:{type:"UPDATE",appId:r,assignments:i,where:s,...d,...p,...u}}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 T("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 T("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 T("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 T("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 T("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 T("ALL \u306E\u5F8C\u306B\u306F ROWS \u304C\u5FC5\u8981\u3067\u3059",this.peek());return this.advance(),{kind:"ALL_ROWS"}}throw new T("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 T("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 T("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 T("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 T("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 T("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 T("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 T("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 T("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 T("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 T("ON \u306E\u5F8C\u306B\u306F ERROR \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(this.advance(),!this.isSoftKeyword("SKIP"))throw new T("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 T("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 T("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 T("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 T("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 T("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 T(`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 T("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 T("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 T("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((u,d)=>{let c=this.matchUpdateFromJoin(u,r,n);c!==null&&a.push({index:d,...c})}),a.length!==1)throw new T("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 u=0;u<o.length;u++){if(u!==s.index&&this.nodeContainsQualifiedField(o[u],n))throw new T("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(u!==s.index&&this.nodeContainsForeignQualifier(o[u],r))throw new T(`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((u,d)=>d!==s.index).reduce((u,d)=>u===null?d:{type:"LOGICAL",op:"AND",left:u,right:d},null);return{targetJoinField:s.targetField,joinKeyField:s.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 T("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(il(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 T("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 T("\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}=Je(t,this.prev()),i=this.peek();if(!this.consume("WHERE"))throw new T("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}=Je(r,this.prev());if(!i)throw new T("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 T("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 T("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 T("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 T(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 T("\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 T("\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 T("\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 T("\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 T(`DML on temp table ${t.value} is not supported.`,t)}parseAliasName(){let t=this.peek();if(t.value.startsWith("#"))throw new T("\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"||Hn.has(t.value.toUpperCase()))return this.advance(),t.value.toLowerCase();throw new T("\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 qd(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 Je(e,t){let r=e.match(/^[Aa][Pp][Pp](\d+)(?:\$(.+))?$/);if(!r)throw new T(`\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 sl(e){return e==="INSERT"||e==="INSERT_SELECT"||e==="UPDATE"||e==="DELETE"||e==="UPSERT"||e==="UPSERT_SELECT"||e==="REORDER"||e==="IMPORT"}var zd=new Set(["STDDEV_POP","STDDEV_SAMP","VAR_POP","VAR_SAMP","MEDIAN","MODE"]);function de(e,t){for(let r of t)e.add(r)}function Jn(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"&&zd.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=>Jn(i,t)):Jn(n,t))}function Ct(e){let t=new Set;if(sl(e.type))return t.add("DML"),t;switch(e.type){case"VALIDATE":t.add("VALIDATE");break;case"SELECT":de(t,rr(e));break;case"UNION":de(t,ll(e));break;case"WITH":for(let r of e.ctes)de(t,Ct(r.query));de(t,Ct(e.query));break;case"CREATE_TEMP_TABLE":de(t,Ct(e.query));break;default:break}return Jn(e)&&t.add("STATISTICAL_AGGREGATE"),t}function ll(e){let t=e.left.type==="SELECT"?rr(e.left):ll(e.left);return de(t,rr(e.right)),t}function rr(e){let t=new Set;Z(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"&&de(t,rr(r.query)),r.type==="CASE_COL")for(let n of r.expr.branches)de(t,tr(n.condition));return de(t,tr(e.where)),de(t,tr(e.having)),Jn(e)&&t.add("STATISTICAL_AGGREGATE"),t}function tr(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")&&de(t,rr(e.right.query));break;case"LOGICAL":de(t,tr(e.left)),de(t,tr(e.right));break;case"NOT":case"GROUP":de(t,tr(e.expr));break;case"EXISTS":de(t,rr(e.query));break;case"NULL_CHECK":case"BOOLEAN":break}return t}var Xd=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})}),Mo=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})}),Ur="v1";function B(e){throw new Error(`UnsupportedError: APPLY ${Ur} scope does not support ${e}`)}function Jd(e,t){let r=Ur;Ur=e;try{return t()}finally{Ur=r}}function Qd(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 Zn(e,t){return Jd(e,()=>Zd(t,Xd[e]))}function Zd(e,t){let r=Qd(e);if(r===null)return;if(r.type==="UPSERT"){tf(r,t);return}let n=r.applyBlocks;if(Uo(n),!t.multipleBlocks&&n.length!==1&&B("multiple APPLY blocks in this phase"),r.type==="INSERT"){rf(r,n,t);return}let i=r;i.subtableCode&&B("a subtable UPDATE as the parent statement in this phase"),!t.updateFrom&&i.from!=null&&B("UPDATE ... FROM in this phase"),!t.check&&i.checkGroups?.length&&B("CHECK in this phase"),!t.onErrorSkip&&i.onErrorSkip&&B("ON ERROR SKIP in this phase"),!t.rejectLimit&&i.rejectLimit!=null&&B("REJECT LIMIT in this phase"),nf(i.where,t.multipleParents),cl(n,t)}function cl(e,t){for(let r of e){for(let n of r.operations)t.operations.has(n.kind)||B(`${n.kind} in this phase`);pl(r);for(let n of r.operations){if(n.kind==="APPEND"){for(let i of n.fields)Qn(i,"APPEND targets");ir(n.values,"APPEND values");continue}if(n.kind==="REMOVE"){!t.expectRows&&n.expectRows&&B("EXPECT ROWS in this phase"),n.selector.kind==="WHERE"&&ul(n.selector.where,t.idxSelectors);continue}if(n.kind==="PATCH"){!t.expectRows&&n.expectRows&&B("EXPECT ROWS in this phase"),n.assignments.length===0&&B("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(".")&&B("parent or qualified PATCH targets in this phase")}ir(n.assignments,"PATCH assignments"),n.selector.kind==="WHERE"&&ul(n.selector.where,t.idxSelectors)}}}}function pl(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 ef=new Set(["MULTI_SELECT","CHECK_BOX","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function dl(e,t){if(pl(e),e.targetKind==="MULTI_VALUE"){if(!ef.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 Uo(e){let t=new Set;for(let r of e){if(t.has(r.field))throw new Error(`ArgumentError: APPLY ${Ur} scope allows only one block for table ${r.field}`);t.add(r.field)}}function tf(e,t){t.upsert||B("UPSERT in this phase"),!t.check&&e.checkGroups?.length&&B("CHECK in this phase"),!t.onErrorSkip&&e.onErrorSkip&&B("ON ERROR SKIP in this phase"),!t.rejectLimit&&e.rejectLimit!=null&&B("REJECT LIMIT in this phase");let r=e.onInsertApplyBlocks??[],n=e.onUpdateApplyBlocks??[];Uo(r),Uo(n),!t.multipleBlocks&&(r.length>1||n.length>1)&&B("multiple APPLY blocks in this phase"),fl(r,"UPSERT ON INSERT"),cl(n,{...t,idxSelectors:!1,expectRows:!1})}function fl(e,t){for(let r of e)for(let n of r.operations){n.kind!=="APPEND"&&B(`${n.kind} for ${t} in this phase`);for(let i of n.fields)Qn(i,"APPEND targets");ir(n.values,"APPEND values")}}function rf(e,t,r){r.insert||B("INSERT in this phase"),e.subtableCode&&B("a subtable INSERT as the parent statement in this phase"),!r.check&&e.checkGroups?.length&&B("CHECK in this phase"),!r.onErrorSkip&&e.onErrorSkip&&B("ON ERROR SKIP in this phase"),!r.rejectLimit&&e.rejectLimit!=null&&B("REJECT LIMIT in this phase"),fl(t,"INSERT")}function Qe(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 El(e,t){let r=Mo[e],n="validateOnly"in t&&t.validateOnly===!0;if(t.type!=="EXPLAIN"&&!n&&Rl(t)&&e!=="phase15b")throw new Error(`UnsupportedError: APPLY ${nr(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 ${nr(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 ${nr(e)} INSERT execution is not connected`);return}if(!(t.type!=="UPDATE"||!t.applyBlocks?.length)&&!r.multipleParentPreflight&&!Qe(t.where))throw new Error(`UnsupportedError: APPLY ${nr(e)} execution does not support multiple-parent APPLY`)}function Rl(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 ml(e,t){if(!(t.type!=="UPDATE"||!t.applyBlocks?.length||Qe(t.where))&&!Mo[e].publicMultipleParentWrite)throw new Error(`UnsupportedError: APPLY ${nr(e)} public multiple-parent write is not connected`)}function or(e){if(!Mo[e].internalPreparedWrite)throw new Error(`UnsupportedError: APPLY ${nr(e)} internal prepared write is not available`)}function nr(e){return`Phase ${e.slice(5)}`}function nf(e,t){Qe(e)||(e.type==="BINARY"&&e.op==="="&&e.left.type==="FIELD"&&e.left.tableAlias===null&&e.left.field==="$id"&&B("a parent $id that is not a positive safe integer in this phase"),t||B("a parent WHERE other than the single condition $id = <positive safe integer> in this phase"),ko(e,t))}function ko(e,t){if(Array.isArray(e)){for(let o of e)ko(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")&&B("KLIKE in parent WHERE"),(n==="SELECT"||n==="SCALAR_SUBQUERY"||n==="SUBQUERY_IN_LIST"||n==="EXISTS")&&B("subqueries in parent WHERE"),(n==="WINDOW_COL"||n==="AGGREGATE"||n==="AGG_REF"||n==="AGG_ARITH"||n==="ARITH_AGG_COL")&&B("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)&&B("aggregate or window expressions in parent WHERE"),n==="KINTONE_FUNC"&&!(typeof r.name=="string"&&z(r.name))&&B("non-deterministic kintone functions in parent WHERE");for(let o of Object.values(r))ko(o,t)}function ul(e,t){ir(e,"child row selectors",t)}function ir(e,t,r=!1){if(Array.isArray(e)){for(let s of e)ir(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")&&B(`KLIKE in ${t}`),(i==="SELECT"||i==="SCALAR_SUBQUERY"||i==="SUBQUERY_IN_LIST"||i==="EXISTS")&&B(`subqueries in ${t}`),(i==="WINDOW_COL"||i==="AGGREGATE"||i==="AGG_REF"||i==="AGG_ARITH"||i==="ARITH_AGG_COL")&&B(`aggregate or window expressions in ${t}`),i==="KINTONE_FUNC"&&!(typeof n.name=="string"&&z(n.name))&&B(`non-deterministic kintone functions in ${t}`),i==="FIELD"){let s=n.tableAlias,l=n.field;s!=null&&B(`qualified or parent field references in ${t}`),Qn(l,t,r)}if(i==="FIELD_REF"&&Qn(n.field,t,r),!(o==="PATCH"||o==="APPEND"||o==="REMOVE"))for(let s of Object.values(n))ir(s,t,r)}function Qn(e,t,r=!1){if(typeof e!="string")return;let n=e.toLowerCase();n==="_idx"&&!r&&B(`_idx in ${t}`),(n.startsWith("_p.")||n.includes("."))&&B(`parent or qualified field references in ${t}`),/^(count|sum|avg|min|max|group_concat)\s*\(/i.test(e)&&B(`aggregate expressions in ${t}`)}function kr(e){switch(e.type){case"BOOLEAN":return{type:"BOOLEAN",value:!e.value};case"BINARY":{let t=of(e.op);if(t===null)throw new ee(`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:kr(e.left),right:kr(e.right)};case"NOT":return e.expr;case"GROUP":return{type:"GROUP",expr:kr(e.expr)};case"EXISTS":return{...e,not:!e.not}}}function of(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 yl(e){return e.includes("%")||e.includes("_")}function Mr(e){return e.type==="BINARY"&&(e.op==="LIKE"||e.op==="NOT_LIKE")}function pt(e){return e.type==="BINARY"&&(e.op==="KLIKE"||e.op==="NOT_KLIKE")}function ct(e){if(e===null)return!1;if(Mr(e))return!0;switch(e.type){case"LOGICAL":return ct(e.left)||ct(e.right);case"NOT":case"GROUP":return ct(e.expr);case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return!1}}function ae(e){if(e===null)return!1;if(pt(e))return!0;switch(e.type){case"LOGICAL":return ae(e.left)||ae(e.right);case"NOT":case"GROUP":return ae(e.expr);case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return!1}}function $(e){switch(e.type){case"BINARY":return af(e);case"NULL_CHECK":return lf(e);case"LOGICAL":return uf(e);case"NOT":return cf(e);case"GROUP":return pf(e);case"EXISTS":throw new ee("EXISTS \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"BOOLEAN":throw new ee("internal error: BOOLEAN predicate reached kintone query conversion")}}function af(e){if(Mr(e))throw new ee("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=gl(e.left),r=sf(e.op),n=df(e.right,e.op);return`${t} ${r} ${n}`}function sf(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 lf(e){let t=gl(e.field);return e.not?`${t} != ""`:`${t} = ""`}function uf(e){let t=$(e.left),r=$(e.right),n=e.op==="AND"?"and":"or",i=hl(e.left)?`(${t})`:t,o=hl(e.right)?`(${r})`:r;return`${i} ${n} ${o}`}function cf(e){return $(kr(e.expr))}function pf(e){return`(${$(e.expr)})`}function gl(e){if(e.type==="FUNC_FIELD")throw new ee(`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 ee("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 ee("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 ee("GROUPING() \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");return Af(e.field)}function df(e,t){switch(e.type){case"VARIABLE":throw new ee(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"VARIABLE_IN_LIST":throw new ee(`\u672A\u89E3\u6C7A\u306E\u914D\u5217\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"STRING":return Al(e);case"NUMBER":return G(e);case"KINTONE_FUNC":return Sl(e);case"IN_LIST":return hf(e,t);case"ARITH_VALUE":throw new ee("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 ee("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 ee("IN (SELECT ...) \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"SCALAR_SUBQUERY":throw new ee("\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 ee("\u914D\u5217\u30EA\u30C6\u30E9\u30EB\u306F WHERE \u53E5\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093")}}function Al(e){return`"${e.value.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Sl(e){switch(e.name){case"TODAY":case"NOW":case"LOGINUSER":return`${e.name}()`}return ff(e)}function ff(e){switch(e.name){case"YESTERDAY":case"TOMORROW":case"THIS_YEAR":case"LAST_YEAR":case"NEXT_YEAR":return e.args?.kind!=="NONE"?xr():`${e.name}()`;case"FROM_TODAY":return e.args?.kind!=="FROM_TODAY"||!mf(e.args.offset,e.args.offsetText)||!Ef.has(e.args.unit)?xr():`${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&&!Rf.has(e.args.weekday)?xr():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"||!yf(e.args.day)?xr():e.args.day===null?`${e.name}()`:`${e.name}(${e.args.day})`}return xr()}var Ef=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),Rf=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function mf(e,t){return!Number.isSafeInteger(e)||!/^(?:0|[1-9]\d*|-[1-9]\d*)$/.test(t)?!1:Number(t)===e}function yf(e){return e===null||e==="LAST"||typeof e=="number"&&Number.isInteger(e)&&e>=1&&e<=31}function xr(){throw new ee("internal error: invalid relative date function AST reached kintone query conversion")}function hf(e,t){if(t!=="IN"&&t!=="NOT_IN")throw new ee("IN_LIST \u306F IN / NOT IN \u6F14\u7B97\u5B50\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059");return gf(e.values),`(${e.values.map(n=>n.type==="STRING"?Al(n):n.type==="NUMBER"?G(n):Sl(n)).join(",")})`}function gf(e){let t=e.find(r=>r.type==="VARIABLE");if(t?.type==="VARIABLE")throw new ee(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${t.name} \u304C\u3042\u308A\u307E\u3059`)}function Af(e){return/^[\w$\u3000-\u9FFF]+$/u.test(e)?e:`"${e.replace(/"/g,'\\"')}"`}function hl(e){return e.type==="LOGICAL"}var ee=class extends Error{constructor(t){super(t),this.name="KintoneQueryError"}};function Sf(e){return e.some(t=>t.type==="WINDOW_COL")}function be(e){return e.from.subtableCode||e.joins.some(t=>t.table.subtableCode)||e.joins.length>0||Z(e).type!=="NONE"||e.distinct||Sf(e.columns)||e.columns.some(t=>t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"||t.type==="SCALAR_SUBQUERY_COL"||t.type==="STRFUNC_COL"&&Pl(t.expr)||t.type==="SCALAR_VALUE_COL"&&Kr(t.expr))||dt(e.where)||e.orderBy.some(t=>t.key.type!=="FIELD_NAME")?"FULL_SCAN":"SIMPLE"}function dt(e){if(e===null)return!1;switch(e.type){case"BOOLEAN":return!0;case"BINARY":return Tl(e.left)||e.right.type==="ARITH_VALUE"||e.right.type==="CASE_VALUE"||e.right.type==="SUBQUERY_IN_LIST"||e.right.type==="SCALAR_SUBQUERY"||Mr(e);case"NULL_CHECK":return Tl(e.field);case"LOGICAL":return dt(e.left)||dt(e.right);case"NOT":case"GROUP":return dt(e.expr);case"EXISTS":return!0}}function Tl(e){return e.type==="FUNC_FIELD"||e.type==="ARITH_FIELD"||e.type==="CASE_FIELD"}function ei(e){let t=[],n=(e.limit!==null||e.offset!==null)&&e.orderBy.length===0;if(e.where!==null&&t.push($(e.where)),e.orderBy.length>0){let i=e.orderBy.map(Tf).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:If(e.columns),totalCount:!1}}function bl(e,t){let r=[];return e.where!==null&&e.joins.length===0&&!dt(e.where)&&r.push($(e.where)),{app:t,query:r.join(" "),fields:[]}}function Ot(e,t,r){let i=Nf(e,r).get(t);if(!i)return[];if(i.allFields)return[];let o=new Set(i.fields);return i.table.subtableCode&&o.add(i.table.subtableCode),o.size===0&&o.add("$id"),[...o]}function Tf(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 If(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"?Fr(n.expr,r):n.type==="STRFUNC_COL"?Ko(n.expr,r):n.type==="SCALAR_VALUE_COL"&&ar(n.expr,r);return[...new Set(r)]}function wf(e,t){Fr(e.left,t),Fr(e.right,t)}function Fr(e,t){e.type==="FIELD_REF"?t.push(Fo(e.field)):e.type==="ARITH"?wf(e,t):e.type==="STRING_FUNC"&&Ko(e,t)}function Fo(e){let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function Ko(e,t){for(let r of e.args)bf(r,t)}function bf(e,t){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"){xo(e,t);return}ar(e,t)}function ar(e,t){if(e.type==="FIELD"){t.push(Fo(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field));return}if(e.type==="STRING_FUNC"){Ko(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){ar(e.left,t),ar(e.right,t);return}if(e.type==="CASE_WHEN"){for(let r of e.branches)Il(r.result,t);e.elseResult&&Il(e.elseResult,t)}}function Il(e,t){if(e.type!=="ARRAY"){if(e.type==="FIELD_REF"||e.type==="ARITH"){Fr(e,t);return}ar(e,t)}}function xo(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&Pf(e.arg,t);return}e.type==="AGG_ARITH"&&(xo(e.left,t),xo(e.right,t))}function Pf(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?Fr(e,t):ar(e,t)}function Pl(e){return e.args.some(t=>t.type==="AGG_REF"||t.type==="AGG_ARITH"?!0:Kr(t))}function Kr(e){return e.type==="STRING_FUNC"?Pl(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?Kr(e.left)||Kr(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>wl(t.result))||e.elseResult!==null&&wl(e.elseResult):!1}function wl(e){return e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?!1:Kr(e)}function Nf(e,t){let r=[e.from,...e.joins.map(A=>A.table)],n=[e.from,...e.joins.map(A=>A.table)].filter(A=>A.cteName===null),i=new Map;for(let A of n)i.set(A,{table:A,allFields:!1,fields:new Set});if(i.size===0)return i;let o=n[0]??null,a=n.find(A=>!!A.subtableCode)??null,s=new Map;for(let A of n)A.alias&&s.set(A.alias,A),A.subtableCode||(s.set(`APP${A.appId}`,A),s.set(`app${A.appId}`,A));let l=Cf(e.columns),p=A=>{let b=i.get(A);b&&(b.allFields=!0,b.fields.clear())},u=()=>{for(let A of n)p(A)},d=()=>{for(let A of n)A.subtableCode&&p(A)},c=(A,b)=>{let C=i.get(A);if(!(!C||C.allFields)){if(A.subtableCode){if(b.startsWith("_p.")){let w=b.slice(3);w&&w!=="*"&&C.fields.add(w);return}return void 0}b&&C.fields.add(b)}},f=(A,b="select",C)=>{if(!A||A==="*")return;if(A==="_p.*"){d();return}if(A.endsWith(".*")){let U=A.slice(0,-2);if(!U){u();return}if(U==="_p"){d();return}let K=s.get(U);if(K){p(K);return}return}if(b==="groupBy"&&C!==void 0){if(C.kind==="PHYSICAL"){let U=r[C.sourceIndex];U?.cteName===null&&c(U,C.fieldCode)}return}if((b==="orderBy"||b==="having"||b==="groupBy")&&l.has(A)||(b==="orderBy"||b==="having"||b==="groupBy")&&Of(A))return;let w=A.indexOf(".");if(w>0){let U=A.slice(0,w),K=A.slice(w+1);if(U==="_p"){a&&c(a,`_p.${K}`);return}let W=s.get(U);if(W){c(W,K);return}}o&&c(o,A)},E=(A,b,C="select")=>{if(b){if(b==="_p"){a&&c(a,`_p.${A}`);return}let w=s.get(b);if(w){c(w,A);return}}f(A,C)},R=(A,b="select")=>{if(A.type==="FIELD_REF"){f(A.field,b);return}if(A.type==="ARITH"){R(A.left,b),R(A.right,b);return}if(A.type==="STRING_FUNC"){h(A,b);return}},m=(A,b="select")=>{if(A.type==="AGG_REF"){A.arg.type!=="WILDCARD"&&S(A.arg,b);return}A.type==="AGG_ARITH"&&(m(A.left,b),m(A.right,b))},y=(A,b="select")=>{if(A.type==="AGG_REF"||A.type==="AGG_ARITH"){m(A,b);return}g(A,b)},h=(A,b="select")=>{for(let C of A.args)y(C,b)},g=(A,b="select")=>{if(A.type==="FIELD"){E(A.field,A.tableAlias,b);return}if(A.type==="STRING_FUNC"){h(A,b);return}if(A.type==="SCALAR_ARITH"||A.type==="CONCAT_OP"){g(A.left,b),g(A.right,b);return}A.type==="CASE_WHEN"&&P(A,b)},S=(A,b="select")=>{if(A.type==="FIELD_REF"||A.type==="ARITH"){R(A,b);return}g(A,b)},O=(A,b="select")=>{if(A.type!=="ARRAY"){if(A.type==="FIELD_REF"||A.type==="ARITH"){R(A,b);return}g(A,b)}},P=(A,b="select")=>{for(let C of A.branches)L(C.condition,b),O(C.result,b);A.elseResult&&O(A.elseResult,b)},_=(A,b="select")=>{if(A.type==="FIELD"){E(A.field,A.tableAlias,b);return}if(A.type==="FUNC_FIELD"){h(A.expr,b);return}if(A.type==="ARITH_FIELD"){R(A.expr,b);return}A.type!=="GROUPING_FIELD"&&P(A.expr,b)},N=(A,b="select")=>{if(A.type==="ARITH_VALUE"){R(A.expr,b);return}if(A.type==="CASE_VALUE"){P(A.expr,b);return}},L=(A,b="where")=>{if(A)switch(A.type){case"BINARY":_(A.left,b),N(A.right,b);return;case"NULL_CHECK":_(A.field,b);return;case"LOGICAL":L(A.left,b),L(A.right,b);return;case"NOT":case"GROUP":L(A.expr,b);return;case"EXISTS":case"BOOLEAN":return}},I=(A,b)=>{if(A.type==="FIELD_NAME"){f(A.name,"groupBy",b);return}if(A.type==="ARITH_KEY"){R(A.expr,"groupBy");return}h(A.expr,"groupBy")},v=(A,b="orderBy")=>{if(A.type==="FIELD_NAME"){f(A.name,b);return}if(A.type==="ARITH_KEY"){R(A.expr,b);return}A.type!=="GROUPING_KEY"&&h(A.expr,b)};for(let A of e.columns)switch(A.type){case"WILDCARD":u();break;case"PARENT_WILDCARD":d();break;case"FIELD":f(A.field,"select");break;case"LITERAL_COL":break;case"VARIABLE_COL":throw new Error(`internal error: unresolved SELECT variable @${A.name}`);case"AGGREGATE":A.arg.type!=="WILDCARD"&&S(A.arg,"select");break;case"ARITH_AGG_COL":m(A.expr,"select");break;case"ARITH_COL":R(A.expr,"select");break;case"CASE_COL":P(A.expr,"select");break;case"STRFUNC_COL":h(A.expr,"select");break;case"SCALAR_VALUE_COL":g(A.expr,"select");break;case"GROUPING_COL":break;case"SCALAR_SUBQUERY_COL":break;case"WINDOW_COL":for(let b of A.partitionBy)E(b.field,b.tableAlias,"select");for(let b of A.orderBy)v(b.key,"select");break}for(let A of e.joins)E(A.on.left.field,A.on.left.tableAlias,"where"),E(A.on.right.field,A.on.right.tableAlias,"where");L(e.where,"where");let k=Z(e);if(k.type==="PLAIN")k.allItems.forEach((A,b)=>I(A,t?.items[b]));else if(k.type==="GROUPING_SETS")for(let A of k.allItems)E(A.field,A.tableAlias,"select");L(e.having,"having");for(let A of e.orderBy)v(A.key);return i}function Cf(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(he(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 Of(e){return/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/i.test(e)}function ft(e){if(e.ctes.length!==1)return!1;let t=e.ctes[0];if(t.query.type!=="SELECT"||be(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||Qs(r)||r.distinct?!1:!r.columns.some(n=>n.type==="AGGREGATE"||n.type==="ARITH_AGG_COL")}function Et(e){let t=e.ctes[0].query,r=e.query,n=ti(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 ti(e,t){if(e===null||t===null)return e;switch(e.type){case"BINARY":return{...e,left:Nl(e.left,t)};case"NULL_CHECK":return{...e,field:Nl(e.field,t)};case"LOGICAL":return{...e,left:ti(e.left,t),right:ti(e.right,t)};case"NOT":case"GROUP":return{...e,expr:ti(e.expr,t)};case"EXISTS":case"BOOLEAN":return e}}function Nl(e,t){return e.type==="FIELD"&&e.tableAlias===t?{...e,tableAlias:null}:e}function sr(e,t={}){return Br(e,r=>Lf(r,t))}function $r(e,t={}){return Br(e,r=>Cl(r,t)||Ol(r,t))}function Br(e,t){switch(e.type){case"BINARY":return t(e)?e:null;case"LOGICAL":if(e.op!=="AND")return null;{let r=Br(e.left,t),n=Br(e.right,t);return r&&n?{...e,left:r,right:n}:r??n??null}case"GROUP":return Br(e.expr,t);case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return null}}function Lf(e,t){return _f(e,t)||Uf(e,t)?!0:Cl(e,t)?t.fieldTypes?.get(e.left.field)==="NUMBER":vf(e,t)}function _f(e,t){return t.allowKlike===!1||e.op!=="KLIKE"&&e.op!=="NOT_KLIKE"||e.left.type!=="FIELD"||!Bo(e.left,t)?!1:e.right.type==="STRING"||t.allowUnresolvedKlikeVariables===!0&&e.right.type==="VARIABLE"}var Df=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]);function vf(e,t){if(!Ol(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||!Df.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 Uf(e,t){return!kf(e.left,t)||e.right.type!=="NUMBER"?!1:e.op==="="||e.op===">"||e.op==="<"||e.op===">="||e.op==="<="}function kf(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 Cl(e,t){return e.left.type!=="FIELD"||e.left.field==="$id"||!Bo(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 Ol(e,t){return e.left.type!=="FIELD"||e.left.field==="$id"||!Bo(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 Bo(e,t){let r=t.tableAlias??null;return e.tableAlias===r?!0:t.allowUnqualifiedFields===!0&&e.tableAlias===null}function Gr(e,t={}){let r=e!==null&&t.extractCondition!==!1?sr(e,t):null,n=new Set;lr(r,n);let i=new Set;return lr(e,i),{condition:r,appliedKlikes:n,allKlikes:[...i]}}function ur(e,t={}){let n={allowKlike:e.joins.every(u=>u.type==="INNER"),allowUnresolvedKlikeVariables:t.allowUnresolvedVariables},i=!e.from.subtableCode&&e.from.cteName===null,o=e.joins.length===0||e.from.alias!==null,a=Gr(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 u of e.joins){if(!u.table.alias||u.table.subtableCode||u.table.cteName!==null)continue;let d=sr(e.where,{...n,tableAlias:u.table.alias,fieldTypes:t.fieldTypesByApp?.get(u.table.appId),fieldOptions:t.fieldOptionsByApp?.get(u.table.appId)});d!==null&&l.set(u.table.alias,d)}let p=new Set(a.appliedKlikes);for(let u of l.values())lr(u,p);return{mainCondition:s,joinConditions:l,appliedKlikes:p,allKlikes:a.allKlikes}}function $o(e){return e.allKlikes.filter(t=>!e.appliedKlikes.has(t))}function lr(e,t){if(e!==null){if(pt(e)){t.add(e);return}switch(e.type){case"LOGICAL":lr(e.left,t),lr(e.right,t);return;case"NOT":case"GROUP":lr(e.expr,t);return;case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}}var oe=class extends Error{constructor(t){super(`ArgumentError: ${t}`),this.name="ArgumentError"}};function dr(e){Ll(e)}function Vo(e){if($o(e).length>0)throw new oe("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 Ll(e){switch(e.type){case"SELECT":pr(e);return;case"UNION":Ho(e);return;case"WITH":_l(e);return;case"EXPLAIN":Ll(e.query);return;case"CREATE_TEMP_TABLE":Wo(e.query);return;case"SET_VARIABLE":case"DECLARE_VARIABLE":case"ASSERT":cr(e);return;case"UPDATE":if(e.applyBlocks?.length&&!Qe(e.where)&&ae(e.where)){Go(e.where),cr(e);return}if(Rt(e)&&e.subtableCode)throw new oe("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&&ae(e.where)&&!xf(e,e.where)){Go(e.where),cr(e);return}if(Rt(e))throw new oe("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(Rt(e)&&e.subtableCode)throw new oe("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&&ae(e.where)){Go(e.where),cr(e);return}if(Rt(e))throw new oe("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(Rt(e))throw new oe("KLIKE / NOT KLIKE \u306F INSERT / INSERT SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"UPSERT":case"UPSERT_SELECT":if(Rt(e))throw new oe("KLIKE / NOT KLIKE \u306F UPSERT / UPSERT SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"REORDER":if(Rt(e))throw new oe("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(Rt(e))throw new oe("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){ni(e,t=>{if(!pt(t))return;let r=t.right;if(r.type!=="STRING"&&r.type!=="VARIABLE")throw new oe("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 oe("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 Wo(e){e.type==="SELECT"?pr(e):e.type==="UNION"?Ho(e):_l(e)}function Ho(e){Wo(e.left),pr(e.right)}function _l(e){if(ft(e)){pr(Et(e));return}for(let t of e.ctes)t.query.type==="SELECT"?pr(t.query):t.query.type==="UNION"&&Ho(t.query);Wo(e.query)}function pr(e){if(Mf(e),ae(e.where)&&!(be(e)==="SIMPLE"&&e.from.cteName===null&&e.joins.every(r=>r.table.cteName===null))){let r=ur(e,{allowUnresolvedVariables:!0});if($o(r).length===0){cr(e);return}throw new oe("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")}cr(e)}function Mf(e){ni(e,t=>{if(!pt(t))return;if(!ri(e.where,t))throw new oe("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 oe("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 oe("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 cr(e){ii(e,t=>{t.type==="SELECT"&&pr(t)},!0)}function Rt(e){let t=!1;return ii(e,r=>{r.type==="BINARY"&&(r.op==="KLIKE"||r.op==="NOT_KLIKE")&&(t=!0)}),t}function xf(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 ri(e,t){if(e===null)return!1;if(e===t)return!0;switch(e.type){case"LOGICAL":return ri(e.left,t)||ri(e.right,t);case"NOT":case"GROUP":return ri(e.expr,t);case"BINARY":case"NULL_CHECK":case"EXISTS":return!1;case"BOOLEAN":return!1}}function ni(e,t){if(Array.isArray(e)){for(let n of e)ni(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&&Ff(n)||ni(n,t)}function ii(e,t,r=!1){if(Array.isArray(e)){for(let i of e)ii(i,t);return}if(e===null||typeof e!="object")return;let n=e;r||t(n);for(let i of Object.values(n))ii(i,t)}function Ff(e){return e!==null&&typeof e=="object"&&e.type==="SELECT"}var Dl=Symbol("ksql.groupingRowMeta"),vl=new WeakMap;function Ul(e,t){return Object.defineProperty(e,Dl,{value:{includedCanonicalIds:t},enumerable:!1,configurable:!1,writable:!1}),e}function Kf(e){return e[Dl]}function Bf(e){return Kf(e)?.includedCanonicalIds}function kl(e,t){vl.set(e,t)}function fr(e,t){let r=Bf(t);if(!r)throw new Error("internal error: GROUPING() evaluation requires B65 grouping row membership.");let n=vl.get(e);if(!n)throw new Error("internal error: GROUPING() reference was not resolved during B65 planning.");return r.has(n)?"0":"1"}var xl=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 si(e){return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field}function jo(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 Pe(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(n=>Pe(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=>Pe(n,t))}}function li(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(n=>li(n,t));return}let r=e;if(!(r.type==="SELECT"||r.type==="SCALAR_SUBQUERY")){if(r.type==="AGGREGATE"||r.type==="AGG_REF"){Pe(r.arg,t);return}Object.values(r).forEach(n=>li(n,t))}}function Vr(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(i=>Vr(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(jo(r.field));return}Object.values(r).forEach(i=>Vr(i,t))}}function Wr(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(Wr);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(Wr)}function $f(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"?Wr(e):!1}function Gf(e){return new Set(e.flatMap(t=>"alias"in t&&typeof t.alias=="string"?[t.alias]:[]))}function Ml(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 Vf(e,t,r){let n=t(e.field);if(!n.physical)throw new Error(`ArgumentError: B65 grouping reference ${si(e.field)} must resolve to a physical APP field.`);if(!r.has(n.canonicalId))throw new Error(`ArgumentError: B65 GROUPING argument ${si(e.field)} is not present in grouping allItems (reason=B65_GROUPING_ARG_NOT_ITEM).`);kl(e,n.canonicalId)}function Yo(e,t,r,n){let i=t(e);if(!i.physical||!r.has(i.canonicalId))throw new Error(`ArgumentError: B65 non-aggregate field ${si(e)} in ${n} is not a grouping item (reason=B65_NON_GROUPED_DEPENDENCY).`)}function Wf(e){if(e.type==="GROUPING_KEY")return[];if(e.type==="FIELD_NAME")return[jo(e.name)];let t=[];return Vr(e,t),t}function Fl(e){let t=Z(e),r=[];for(let i of e.columns)i.type!=="WINDOW_COL"&&Pe(i,r);Pe(e.having,r),Pe(e.orderBy,r);let n=[];Pe(e.where,n),Pe(e.joins,n),li(e.columns,n),li(e.having,n);for(let i of e.columns)i.type==="WINDOW_COL"&&Pe(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 Kl(e,t,r=()=>{}){Fl(e);let n=Z(e),i=[];for(let u of e.columns)u.type!=="WINDOW_COL"&&Pe(u,i);if(Pe(e.having,i),Pe(e.orderBy,i),n.type!=="GROUPING_SETS")return null;let o=Zs(e,t),a=new Set,s=[];for(let u of o.allItems){let d=u;if(!d.physical)throw new Error(`ArgumentError: B65 grouping item ${si(u.field)} must resolve to a physical APP field.`);a.has(d.canonicalId)||(a.add(d.canonicalId),s.push(d))}r({expandedSetCount:n.sets.length,canonicalItemCount:a.size});for(let u of i)Vf(u,t,a);let l=Gf(e.columns);for(let u of e.columns){if(u.type==="GROUPING_COL"||u.type==="AGGREGATE"||u.type==="ARITH_AGG_COL"||u.type==="LITERAL_COL"||u.type==="VARIABLE_COL"||u.type==="SCALAR_SUBQUERY_COL")continue;let d=[];u.type==="FIELD"?d.push(jo(u.field)):Vr(u,d);for(let c of d)Yo(c,t,a,"SELECT")}if(e.having){let u=[];Vr(e.having,u);for(let d of u)d.tableAlias===null&&l.has(d.field)||Ml(d)||Yo(d,t,a,"HAVING")}for(let u of e.orderBy)for(let d of Wf(u.key))d.tableAlias===null&&l.has(d.field)||Ml(d)||Yo(d,t,a,"ORDER BY");let p=new Set;for(let u of s)p.add(u.directKey),u.unqualifiedBridgeKey!==null&&p.add(u.unqualifiedBridgeKey);for(let u of e.columns){if(!$f(u))continue;let d="alias"in u?u.alias:null;if(d!==null&&p.has(d))throw new Error(`ArgumentError: B65 aggregate alias ${d} collides with a grouping runtime key (reason=B65_AGGREGATE_ALIAS_COLLISION).`)}return o}var Hf=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME","CREATOR","MODIFIER"]),Yf=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]);function q(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":Yf.has(e.fieldType)?t="option":Hf.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 F(e,t=e==="number"?"KSQL_NUMBER":"KSQL_STRING"){return{fieldType:t,compareMode:e,inSubtable:!1,requiresCollectionOperators:!1}}function Er(e,t,r){return{...e,source:{appId:t,fieldCode:r}}}function ui(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 mt(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 jf(e,t){return e<t?-1:e>t?1:0}function Bl(e){if(e==="")return{band:0};let t=we(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 qf(e,t){let r=Bl(e),n=Bl(t);return r.band!==n.band?r.band<n.band?-1:1:r.band===2&&n.band===2?Yn(r.value,n.value):r.band===5&&n.band===5?mt(r.value,n.value):0}function $l(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 zf(e,t,r){let n=$l(e,r),i=$l(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=mt(n.normalizedId,i.normalizedId);return o!==0?o:mt(n.display,i.display)}function Xf(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 Gl(e,t){let r=t.optionOrder??new Map,i=[...new Set(Xf(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(Vl),i}function Vl(e,t){return e.knownBand!==t.knownBand?e.knownBand<t.knownBand?-1:1:e.rank!==t.rank?e.rank<t.rank?-1:1:mt(e.label,t.label)}function Jf(e,t,r){let n=Gl(e,r),i=Gl(t,r),o=Math.min(n.length,i.length);for(let a=0;a<o;a++){let s=Vl(n[a],i[a]);if(s!==0)return s}return n.length<i.length?-1:n.length>i.length?1:0}function Lt(e,t,r){switch(r.compareMode){case"string":return mt(e,t);case"number":return qf(e,t);case"recordNumber":return zf(e,t,r.fieldType==="RECORD_NUMBER");case"option":return Jf(e,t,r);case"unsupported":throw new Error(`ArgumentError: values of type ${r.fieldType} cannot be compared.`)}}function _t(e,t,r,n=F("string")){let i=Lt(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 Wl(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=we(o),l=we(a),p=s!==null&&l!==null?Yn(s,l):jf(Number(o),Number(a));if(p!==0)return p}return mt(o,a)};return r.reduce((o,a)=>{let s=i(a,o);return t==="greatest"?s>0?a:o:s<0?a:o})}function re(e,t){if(e.type==="NUMBER")return e.value;if(e.type==="FIELD_REF")return Number(Ze(t,e.field));if(e.type==="STRING_FUNC")return Number(ne(e,t));let r=re(e.left,t),n=re(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 Ze(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 ne(e,t,r,n);case"CASE_WHEN":return Ne(e,t,r,n);case"CONCAT_OP":return ne({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 yt(e,t,r,n){switch(e.type){case"CASE_WHEN":return ql(e,t,r,n);case"SCALAR_ARITH":{let i=yt(e.left,t,r,n),o=yt(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=yt(e.left,t,r,n),o=yt(e.right,t,r,n);return`${i??""}${o??""}`}default:return se(e,t,r,n)}}function ci(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 Qf(e){return e>=55296&&e<=56319}function Zf(e){return e>=56320&&e<=57343}function di(e,t){return t>0&&t<e.length&&Qf(e.charCodeAt(t-1))&&Zf(e.charCodeAt(t))}function Hl(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 zo(e,t){let r=Math.min(Math.max(0,t),e.length);return di(e,r)&&(r-=1),e.slice(0,r)}function eE(e,t){let r=Math.max(0,e.length-t);return di(e,r)&&(r+=1),e.slice(r)}function tE(e,t,r){let n=Hl(t,e.length),i=Hl(r,e.length);return i<=n?"":(di(e,n)&&(n+=1),di(e,i)&&(i-=1),e.slice(n,Math.max(n,i)))}function rE(e,t){let r=e.repeat(Math.ceil(t/e.length));return zo(r,t)}var nE=200,Hr=new Map;function iE(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 qo(e,t,r=!1){let n=iE(t)+(r?"g":""),i=`${e}\0${n}`,o=Hr.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(Hr.size>=nE){let s=Hr.keys().next().value;s!==void 0&&Hr.delete(s)}return Hr.set(i,a),a}function oE(e){if(e.includes("$`")||e.includes("$'"))throw new Error("ArgumentError: REGEXP_REPLACE replacement must not contain $` or $'.")}function aE(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 sE(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 u=Number(s+l);if(u>=1&&u<=r.length){i+=r[u-1]??"",o+=2;continue}}let p=Number(s);if(p>=1&&p<=r.length){i+=r[p-1]??"",o+=1;continue}}i+="$"}return i}function lE(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,p=a.length-(l?3:2),u=a.slice(0,p);return sE(r,o,u,l?s:void 0)})}function ne(e,t,r,n){let i=e.args.map(o=>mE(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 fe("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 tE(o,a,s!==void 0?a+s:o.length)}case"LEFT":{fe("LEFT",i,2,2);let o=i[0],a=Math.trunc(Number(i[1]));return Number.isNaN(a)||a<=0?"":zo(o,a)}case"RIGHT":{fe("RIGHT",i,2,2);let o=i[0],a=Math.trunc(Number(i[1]));return Number.isNaN(a)||a<=0?"":eE(o,a)}case"INSTR":return fe("INSTR",i,2,2),String(i[0].indexOf(i[1])+1);case"LPAD":case"RPAD":{fe(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 zo(o,a);let s=i[2]??" ";if(s==="")return o;let l=rE(s,a-o.length);return e.func==="LPAD"?l+o:o+l}case"GREATEST":case"LEAST":return fe(e.func,i,2),Wl(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 fe("REGEXP_LIKE",i,2,3),qo(i[1],i[2]??"").test(i[0])?"1":"0";case"REGEXP_REPLACE":{fe("REGEXP_REPLACE",i,3,5),oE(i[2]);let o=aE(i[4]),a=qo(i[1],i[3]??"",!0);return o===0?i[0].replace(a,i[2]):lE(i[0],a,i[2],o)}case"REGEXP_SUBSTR":return fe("REGEXP_SUBSTR",i,2,3),qo(i[1],i[2]??"").exec(i[0])?.[0]??"";case"TRANSLATE":{fe("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,p)=>{s.has(l)||s.set(l,a[p])}),[...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 ci("round",Number(i[0]??"0"),Number(i[1]??"0"));case"FLOOR":return ci("floor",Number(i[0]??"0"),Number(i[1]??"0"));case"CEIL":return ci("ceil",Number(i[0]??"0"),Number(i[1]??"0"));case"TRUNCATE":return fe("TRUNCATE",i,1,2),ci("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 EE(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 fe(e.func,i,1,1),pi(i[0])?String(Xo(i[0])+1):"";case"QUARTER":return fe(e.func,i,1,1),pi(i[0])?String(Math.ceil(Number(i[0].slice(5,7))/3)):"";case"WEEK":return fe(e.func,i,1,1),pi(i[0])?String(jl(i[0])):"";case"DATE_FORMAT":return cE(i[0]??"",i[1]??"");case"DATEDIFF":return pE(i[0]??"",i[1]??"");case"DATE_ADD":return dE(i[0]??"",Number(i[1]??"0"),(i[2]??"DAY").toUpperCase());case"LAST_DAY":return fe("LAST_DAY",i,1,1),fE(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 fe(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 Yr(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 fi(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 pi(e){let t=e.slice(0,10);if(!/^\d{4}-\d{2}-\d{2}$/.test(t))return!1;let r=fi(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 Xo(e){return fi(e).getUTCDay()}function Yl(e){let t=fi(e),r=t.getUTCDay()||7;return t.setUTCDate(t.getUTCDate()+4-r),t}function uE(e){return Yl(e).getUTCFullYear()}function jl(e){let t=Yl(e),r=t.getUTCFullYear(),n=fi(`${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 cE(e,t){if(!e||e.length<10)return"";let{y:r,mo:n,d:i,h:o,mi:a,sec:s}=Yr(e),l=pi(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 a;case"%s":return s;case"%w":return l?String(Xo(e)):"";case"%a":return l?["\u65E5","\u6708","\u706B","\u6C34","\u6728","\u91D1","\u571F"][Xo(e)]:"";case"%v":return l?String(jl(e)).padStart(2,"0"):"";case"%G":return l?String(uE(e)).padStart(4,"0"):"";default:return p}})}function pE(e,t){if(e.length<10||t.length<10)return"0";let r=Yr(e),n=Yr(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 dE(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}=Yr(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"),p=String(a.getUTCDate()).padStart(2,"0");return`${s}-${l}-${p}`}function fE(e){if(!e||e.length<10)return e;let{y:t,mo:r}=Yr(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 EE(e,t){if(/^-?\d+$/.test(t.trim()))return RE(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,p=s+l,u=i.toFixed(p),[d,c=""]=u.split(".");l>0&&(c=c.replace(/0+$/,""));let f=n?d.replace(/\B(?=(\d{3})+(?!\d))/g,","):d,E=c?`${f}.${c}`:f;return r?E+"%":E}function RE(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 mE(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 Ze(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 X(e,t,r,n,i){switch(e.type){case"BOOLEAN":return e.value;case"BINARY":return yE(e,t,r,n,i);case"NULL_CHECK":return IE(e,t);case"LOGICAL":return wE(e,t,r,n,i);case"NOT":return!X(e.expr,t,r,n,i);case"GROUP":return X(e.expr,t,r,n,i);case"EXISTS":{let o=e.resolved;return e.not?!o:o}}}function yE(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=ru(e.left,t,r,i),a=e.left.type==="FIELD"?r?.(e.left):void 0,s=gE(e.left,a,i);return hE(e.op,o,e.right,t,a,r,s,i)}function hE(e,t,r,n,i,o,a=F("string"),s){if(e==="IN"||e==="NOT_IN"){let p=null;if(r.type==="IN_LIST"&&(TE(r.values),p=new Set(r.values.map(d=>d.type==="NUMBER"?i==="NUMBER"?G(d):String(d.value):d.value))),r.type==="SUBQUERY_IN_LIST"&&(p=r.resolved),p===null)return e==="NOT_IN";let u=SE(t,p,i);return e==="IN"?u:!u}if(e==="LIKE"){let p=Jo(r,n,o);return tu(t,p)}if(e==="NOT_LIKE"){let p=Jo(r,n,o);return!tu(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=Jo(r,n,o,s);return _t(e,t,l,a)}var zl=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function gE(e,t,r){if(e.type==="FIELD")return r?.(e)??(t?q({fieldType:t}):F("string"));if(e.type==="ARITH_FIELD")return F("number");if(e.type==="FUNC_FIELD")return F(zl.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 F("number");if(o.type==="STRING_FUNC")return F(zl.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)??F("string")}return F("string")});if(i.length>0&&i.every(o=>o.compareMode===i[0].compareMode))return i[0]}return e.type==="GROUPING_FIELD"?F("number"):F("string")}var Xl=new Set(["CHECK_BOX","MULTI_SELECT"]),Jl=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE"]),AE=new Set(["CREATOR","MODIFIER"]);function SE(e,t,r){let n=()=>t.has(e);if(r===void 0)return n();if(r==="NUMBER"){let o=F("number");return[...t].some(a=>_t("=",e,a,o))}let i;if(Xl.has(r)||Jl.has(r)||AE.has(r))try{i=JSON.parse(e)}catch{return n()}else return n();return Xl.has(r)?!Array.isArray(i)||!i.every(o=>typeof o=="string")?n():i.length===0&&t.has("")?!0:i.some(o=>t.has(o)):Jl.has(r)?!Array.isArray(i)||!i.every(Ql)?n():i.length===0&&t.has("")?!0:i.some(o=>t.has(o.code)):Ql(i)?t.has(i.code):n()}function Ql(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&typeof e.code=="string"}function TE(e){let t=e.find(n=>n.type==="VARIABLE");if(t?.type==="VARIABLE")throw new Error(`ParseError: unresolved batch variable @${t.name}.`);let r=e.find(n=>n.type==="KINTONE_FUNC");if(r?.type==="KINTONE_FUNC")throw new Error(`${r.name}: ${Xe}`)}function IE(e,t){let r=ru(e.field,t);return e.not?r!=="":r===""}function wE(e,t,r,n,i){return e.op==="AND"?X(e.left,t,r,n,i)&&X(e.right,t,r,n,i):X(e.left,t,r,n,i)||X(e.right,t,r,n,i)}function ru(e,t,r,n){if(e.type==="FUNC_FIELD")return ne(e.expr,t);if(e.type==="ARITH_FIELD")return String(re(e.expr,t));if(e.type==="CASE_FIELD")return Ne(e.expr,t,r,n);if(e.type==="GROUPING_FIELD")return fr(e.ref,t);let i=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return Ze(t,i)}function Jo(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 bE(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"?Ze(t,e.expr.field):e.expr.type==="STRING_FUNC"?ne(e.expr,t):String(re(e.expr,t));case"CASE_VALUE":return Ne(e.expr,t,r,n);case"ARRAY":return e.elements.map(i=>i.value).join(",")}}function Ne(e,t,r,n){for(let i of e.branches)if(X(i.condition,t,r,void 0,n))return eu(i.result,t,r,n);return e.elseResult!==null?eu(e.elseResult,t,r,n):""}function ql(e,t,r,n){for(let i of e.branches)if(X(i.condition,t,r,void 0,n))return Zl(i.result,t,r,n);return e.elseResult===null?null:Zl(e.elseResult,t,r,n)}function Zl(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"?re(e,t):yt(e,t,r,n)}function eu(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(re(e,t)):String(se(e,t,r,n))}function bE(e){throw z(e)?new Error(`${e}: ${Nt}`):Zt(e)?new Error(`${e}: ${Xe}`):new Error(`InternalError: unexpected KINTONE_FUNC name: ${e}`)}var Ei=new Map,PE=200;function tu(e,t){if(!yl(t))return e.includes(t);let r=Ei.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"),Ei.size>=PE&&Ei.clear(),Ei.set(t,r)}return r.test(e)}function Rr(e){return iu(e)}function nu(e){return iu(e.flatMap(t=>t.rules.map(r=>r.condition)))}function iu(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 le("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 le("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 le(e){return new T(e,{kind:"EOF",value:"CHECK",pos:0})}function Ri(e,t,r){let n=[];return e.forEach((i,o)=>{for(let a of i.rules){if(!X(a.condition,t,r))continue;let s=se(a.message,t);n.push({groupIndex:o,message:s==null?"":String(s)});break}}),n}function Zo(e){if(ct(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 NE=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),CE=new Set(["CHECK_BOX","MULTI_SELECT"]);function yi(e,t=new Map){let r=e.values.map(n=>OE(e.fields,n,t));return Xr(r,100).map(n=>({app:e.appId,records:n}))}function OE(e,t,r){let n={};return e.forEach((i,o)=>{let a=t[o];a.type==="CASE_VALUE"?n[i]={value:ht(a.expr,{},r.get(i))}:n[i]={value:et(a,r.get(i))}}),n}function qr(e){Zo(e.where);let t=yu(e);return{app:e.appId,query:$(e.where),fields:["$id",...t],totalCount:!1}}function zr(e,t,r=new Map){let n=LE(e.assignments,r);return Xr(t,100).map(i=>({app:e.appId,records:i.map(o=>({id:o,record:n}))}))}function LE(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:et(i,t.get(n))});return r}function lu(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 hi(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 ea(e){Zo(e.where);let t=new Set;for(let{value:r}of e.assignments)r.type==="ARITH"?uu(r,t):r.type==="SCALAR_ARITH"||r.type==="CONCAT_OP"?mr(r,t):r.type==="STRING_FUNC"?ta(r,t):r.type==="CASE_VALUE"&&cu(r.expr,t);return yu(e).forEach(r=>t.add(r)),{app:e.appId,query:$(e.where),fields:["$id",...t],totalCount:!1}}function uu(e,t){jr(e.left,t),jr(e.right,t)}function jr(e,t){e.type==="FIELD_REF"?t.add(e.field):e.type==="ARITH"?uu(e,t):e.type==="STRING_FUNC"&&ta(e,t)}function ta(e,t){for(let r of e.args)_E(r,t)}function _E(e,t){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"){Qo(e,t);return}mr(e,t)}function mr(e,t){if(e.type==="FIELD"){t.add(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field);return}if(e.type==="STRING_FUNC"){ta(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){mr(e.left,t),mr(e.right,t);return}e.type==="CASE_WHEN"&&cu(e,t)}function Qo(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&DE(e.arg,t);return}e.type==="AGG_ARITH"&&(Qo(e.left,t),Qo(e.right,t))}function DE(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?jr(e,t):mr(e,t)}function ou(e,t){if(e.type!=="ARRAY"){if(e.type==="FIELD_REF"||e.type==="ARITH"){jr(e,t);return}mr(e,t)}}function cu(e,t){for(let r of e.branches)mi(r.condition,t),ou(r.result,t);e.elseResult!==null&&ou(e.elseResult,t)}function mi(e,t){switch(e.type){case"BINARY":e.left.type==="FIELD"?t.add(e.left.field):e.left.type==="ARITH_FIELD"&&jr(e.left.expr,t);break;case"NULL_CHECK":e.field.type==="FIELD"&&t.add(e.field.field);break;case"LOGICAL":mi(e.left,t),mi(e.right,t);break;case"NOT":case"GROUP":mi(e.expr,t);break;case"EXISTS":case"BOOLEAN":break}}function ra(e,t,r=new Map){let n=t.map(i=>{let o=Number(i.$id.value),a=pu(i),s={};for(let{field:l,value:p}of e.assignments)s[l]={value:na(p,a,r.get(l),i)};return{id:o,record:s}});return Xr(n,100).map(i=>({app:e.appId,records:i}))}function na(e,t,r,n){if(e.type==="ARITH")return String(n?oa(e,n):re(e,t));if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP")return String(se(e,t));if(e.type==="STRING_FUNC")return ne(e,t);if(e.type==="CASE_VALUE")return ht(e.expr,t,r);if(e.type==="SOURCE_FIELD")throw new j("SOURCE_FIELD \u306F UPDATE ... FROM \u5C02\u7528\u3067\u3059");return et(e,r)}function gi(e,t,r){if(e.type==="STRING")return e.value;if(e.type==="NUMBER")return G(e);if(e.type==="ARITH")return String(re(e,t));if(e.type==="CASE_VALUE")return Ne(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 vE=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);function ia(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=pu(i),l={};for(let{field:p,value:u}of e.assignments){let d=r.get(p);if(u.type==="SOURCE_FIELD"){if(vE.has(d??""))throw new j(`UPDATE ... FROM \u306E SOURCE_FIELD \u306F ${d} \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,u.field))throw new j(`UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u5217 ${u.field} \u304C\u5B58\u5728\u3057\u307E\u305B\u3093`);let c=o[u.field];if(typeof c!="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: ${u.field}\uFF09`);if((d==="NUMBER"||d==="CALC")&&c!==""&&!Number.isFinite(Number(c)))throw new j(`\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9 ${p} \u306B\u5909\u63DB\u3067\u304D\u306A\u3044\u5024\u3067\u3059: ${c}`);l[p]={value:et({type:"STRING",value:c},d)}}else{if(u.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");u.type==="ARITH"?l[p]={value:String(oa(u,i))}:u.type==="SCALAR_ARITH"||u.type==="CONCAT_OP"?l[p]={value:String(se(u,s))}:u.type==="CASE_VALUE"?l[p]={value:ht(u.expr,s,d)}:l[p]={value:et(u,d)}}}return{id:a,record:l}});return Xr(n,100).map(i=>({app:e.appId,records:i}))}function pu(e){return Object.fromEntries(Object.entries(e).map(([t,r])=>[t,typeof r.value=="string"?r.value:JSON.stringify(r.value??"")]))}function oa(e,t){let r=au(e.left,t),n=au(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 au(e,t){if(e.type==="NUMBER")return e.value;if(e.type==="ARITH")return oa(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 du(e){return Zo(e.where),{app:e.appId,query:$(e.where),fields:["$id"],totalCount:!1}}function fu(e,t){return Xr(t,100).map(r=>({app:e,ids:r}))}function Eu(e){return NE.has(e??"")}function UE(e){return CE.has(e??"")}function kE(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 ME(e){return!e||/^\d{4}-\d{2}-\d{2}$/.test(e)?e:e.replace(/\//g,"-")}function Ru(e,t){return Eu(t)?e===""?[]:e.split(",").map(r=>({code:r.trim()})):UE(t)?e===""?[]:e.split(",").map(r=>r.trim()):t==="DATETIME"?kE(e):t==="DATE"?ME(e):e}function mu(e,t){return Eu(t)?e.map(r=>({code:r})):e}function su(e,t,r){return e.type==="ARRAY"?mu(e.elements.map(n=>n.value),r):e.type==="STRING"?Ru(e.value,r):e.type==="STRING_FUNC"?ne(e,t):e.type==="FIELD_REF"||e.type==="ARITH"?String(re(e,t)):String(se(e,t))}function yu(e){if(!e.checkGroups)return[];let t=`app${e.appId}`.toLowerCase();return[...new Set(Rr(e.checkGroups).filter(r=>r.tableAlias===null||r.tableAlias.toLowerCase()===t).map(r=>r.field).filter(r=>r!=="$id"))]}function ht(e,t,r){for(let n of e.branches)if(X(n.condition,t))return su(n.result,t,r);return e.elseResult!==null?su(e.elseResult,t,r):""}function et(e,t){let r=aa(e,t);if(!r.ok)throw new j(r.message);return r.value}function aa(e,t){try{return{ok:!0,value:xE(e,t)}}catch(r){return{ok:!1,message:r instanceof Error?r.message:String(r)}}}function xE(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 Ru(e.value,t);case"NUMBER":return G(e);case"ARRAY":return mu(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 Xr(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 sa=new Set(["CHECK_BOX","MULTI_SELECT"]),FE=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function Jr(e){throw new Error(`ArgumentError: ${e}`)}function hu(e,t,r){let n=KE(r.fieldType,e.field),i=BE(t,n,e.field),o=new Set(i),a=[],s=new Set,l=new Set;for(let y of e.operations){let h=y.value;h!==""&&(y.kind==="ADD"?(s.has(h)||a.push(h),s.add(h)):l.add(h))}for(let y of s)l.has(y)&&Jr(`APPLY multi-value field ${e.field} has conflicting ADD and REMOVE for ${JSON.stringify(y)}.`);let p=i.filter(y=>!l.has(y)),u=a.filter(y=>!o.has(y)),d=[...p,...u],c=new Set(i.filter(y=>l.has(y))).size,f=new Set,E=new Set,R=e.operations.map(y=>{let h=y.kind==="ADD"?f:E,g=!h.has(y.value);return h.add(y.value),{kind:y.kind,value:y.value,changed:y.value!==""&&g&&(y.kind==="ADD"?!o.has(y.value):o.has(y.value))}}),m=sa.has(n)?d:d.map(y=>({code:y}));return{field:e.field,fieldType:n,operations:R,postImageValue:m,addedValues:u.length,removedValues:c,changedValues:u.length+c}}function KE(e,t){return sa.has(e)||FE.has(e)?e:Jr(`APPLY multi-value target ${t} has unsupported type ${e}.`)}function BE(e,t,r){if(!Array.isArray(e))return Jr(`APPLY snapshot for ${r} must be an array.`);let n=e.map((i,o)=>sa.has(t)?typeof i!="string"?Jr(`APPLY snapshot for ${r} must contain string values (item ${o+1}).`):i:typeof i!="object"||i===null||typeof i.code!="string"?Jr(`APPLY snapshot for ${r} must contain {code: string} values (item ${o+1}).`):i.code);return[...new Set(n.filter(i=>i!==""))]}function V(e){throw new Error(`ArgumentError: ${e}`)}function ca(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?V("APPLY parent selector must be a single positive $id."):t.right.value}function tt(e,t){let r=e.applyBlocks;if(!r?.length)return V("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)la(s.field,null,n),$E(s.value,n);for(let s of r){(i.has(s.field)||o.has(s.field))&&V(`APPLY has more than one block for field ${s.field}.`),e.assignments.some(d=>d.field===s.field)&&V(`APPLY target ${s.field} is also assigned by parent SET.`);let l=t.find(d=>d.code===s.field&&!d.inSubtable);if(!l)return s.targetKind==="SUBTABLE"?V(`APPLY target ${s.field} is not a SUBTABLE.`):V(`APPLY target ${s.field} does not exist as a top-level field.`);if(dl(s,l.fieldType),s.targetKind==="MULTI_VALUE"){l.writable===!1&&V(`APPLY target ${s.field} is not writable (${l.fieldType}).`),o.set(s.field,l);continue}let p=l,u=new Map(t.filter(d=>d.inSubtable&&d.subtableCode===s.field).map(d=>[d.code,d]));i.set(s.field,p),a.set(s.field,u);for(let d of s.operations)if(d.kind==="PATCH"){for(let c of d.assignments)la(c.field,s.field,n,u),ua(c.value,s.field,n,u);d.selector.kind==="WHERE"&&ua(d.selector.where,s.field,n,u)}else if(d.kind==="APPEND"){let c=new Set;for(let f of d.fields)c.has(f)&&V(`APPLY APPEND specifies child ${f} more than once.`),c.add(f),la(f,s.field,n,u)}else d.kind==="REMOVE"&&d.selector.kind==="WHERE"&&ua(d.selector.where,s.field,n,u)}return{targetTables:i,targetMultiValueFields:o,childrenByTable:a,fieldsByCode:n}}function $E(e,t){Qr(e,r=>{if(r==="$id"||r==="$revision")return;let n=t.get(r);(!n||n.inSubtable)&&V(`APPLY parent reference ${r} is not a top-level field.`),n.fieldType==="FILE"&&V(`APPLY parent FILE reference ${r} is not supported.`)})}function la(e,t,r,n){(e.startsWith("_")||e.startsWith("$"))&&V(`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&&V(`APPLY child ${e} does not belong to subtable ${t}.`),V(`APPLY ${t===null?"parent field":"child"} ${e} does not exist.`)}(i.fieldType==="SUBTABLE"||i.fieldType==="FILE"||i.writable===!1)&&V(`APPLY assignment target ${e} is not writable (${i.fieldType}).`)}function ua(e,t,r,n){Qr(e,i=>{if(i==="_rid"||i==="_idx"||n.has(i))return;r.get(i)?.inSubtable&&V(`APPLY child reference ${i} does not belong to subtable ${t}.`),V(`APPLY child reference ${i} does not exist in subtable ${t}.`)})}function Ai(e,t){let r=tt(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)Qr(i.value,o=>{let a=r.fieldsByCode.get(o);!a?.inSubtable&&a?.fieldType!=="FILE"&&n.add(o)});return[...n]}function Si(e,t){let r={_rid:e.id??"",_idx:String(t)};for(let[n,i]of Object.entries(e.value??{}))r[n]=wu(i?.value);return r}function Au(e){let{statement:t,snapshot:r,fieldInfos:n}=e,i=e.metadata??tt(t,n),o=fa(r.$id?.value,"APPLY snapshot $id"),a=ca(t);return o!==a&&V(`APPLY snapshot $id ${o} does not match requested $id ${a}.`),Tu(t,r,i,o)}function Su(e,t,r,n=tt(e,r)){let i=new Set;return t.map(o=>{let a=fa(o.$id?.value,"APPLY snapshot $id");return i.has(a)&&V(`APPLY snapshots contain duplicate parentId ${a}.`),i.add(a),Tu(e,o,n,a)})}function Tu(e,t,r,n){let i=fa(t.$revision?.value,"APPLY snapshot $revision"),o=[],a=[];for(let u of e.applyBlocks){if(u.targetKind==="MULTI_VALUE"){let I=r.targetMultiValueFields.get(u.field);I||V(`APPLY multi-value metadata for ${u.field} is missing.`),a.push(hu(u,t[u.field]?.value,I));continue}let d=r.childrenByTable.get(u.field),c=jE(t,u.field),f=new Set;for(let I of c)I.id||V(`APPLY snapshot for ${u.field} contains a row without _rid.`),f.has(I.id)&&V(`APPLY snapshot for ${u.field} contains duplicate _rid ${I.id}.`),f.add(I.id);let E=I=>I.field==="_rid"?"SINGLE_LINE_TEXT":I.field==="_idx"?"NUMBER":d.get(I.field)?.fieldType,R=[],m=[],y=[],h=new Set,g=new Set,S=new Set,O=u.operations.some(I=>I.kind==="REMOVE");for(let[I,v]of u.operations.entries()){if(v.kind==="APPEND"){let A=pa(v,d,u.field);y.push({kind:"APPEND",addedRows:A.length}),m.push(...A);continue}if(v.kind==="REMOVE"){let A=WE(v,c,E,u.field);v.expectRows&&gu(v.expectRows,A.length,n,u.field,I,v.kind),y.push({kind:"REMOVE",removedRows:A.length});for(let b of A){let C=c[b].id;g.has(b)&&V(`APPLY row ${C} is selected by both PATCH and REMOVE.`),S.has(b)&&V(`APPLY removes row ${C} more than once.`),S.add(b)}continue}if(v.kind!=="PATCH")continue;let k=VE(v,c,E,u.field);v.expectRows&&gu(v.expectRows,k.length,n,u.field,I,v.kind),y.push({kind:"PATCH",matchedRows:k.length,changedRows:k.length});for(let A of k){let b=c[A];S.has(A)&&V(`APPLY row ${b.id} is selected by both PATCH and REMOVE.`),g.add(A);let C=Si(b,A);for(let w of v.assignments){let U=`${b.id}\0${w.field}`;h.has(U)&&V(`APPLY patches cell ${b.id}.${w.field} more than once.`),h.add(U),R.push({rowIndex:A,field:w.field,value:gi(w.value,C,E)})}}}let P=new Map;for(let I of R){let v=P.get(I.rowIndex)??{};v[I.field]={value:I.value},P.set(I.rowIndex,v)}let N=[...c.flatMap((I,v)=>S.has(v)?[]:[{id:I.id,value:{...I.value,...P.get(v)??{}}}]),...m],L={table:u.field,operations:y,changedSubtableRows:P.size+S.size+m.length,deletedRows:S.size,snapshotRowIds:c.map(I=>I.id),postImageRows:N};O?o.push({...L,payloadShape:"FULL_SURVIVORS",removedRowIds:c.flatMap((I,v)=>S.has(v)?[I.id]:[]),payloadRows:N.map(I=>({...I.id===void 0?{}:{id:I.id},value:I.value}))}):o.push({...L,payloadShape:"PATCH_ONLY",payloadRows:[...c.map((I,v)=>{let k=P.get(v);return k?{id:I.id,value:k}:{id:I.id}}),...m.map(I=>({value:I.value}))]})}let s=qE(t),l={};for(let u of e.assignments){let d=r.fieldsByCode.get(u.field)?.fieldType;l[u.field]={value:na(u.value,s,d,t)}}let p={...t};Object.assign(p,l);for(let u of o)p[u.table]={value:u.postImageRows};for(let u of a)p[u.field]={value:u.postImageValue};return{app:e.appId,parentId:n,revision:i,parentRows:1,changedSubtableRows:o.reduce((u,d)=>u+d.changedSubtableRows,0),parentValues:l,postImage:p,tables:o,multiValues:a}}function gu(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}`;V(`APPLY EXPECT ROWS mismatch for parent $id ${r}, table ${n}, operation ${i+1} (${o}): expected ${s}, actual ${t}.`)}function Ti(e,t){let r=e.tables.map(o=>{let a=t[o.table]?.value;if(!Array.isArray(a)||a.length!==o.postImageRows.length)return V(`APPLY normalized post-image for ${o.table} has an unexpected row count.`);let s=o.payloadRows.map((l,p)=>{let u=a[p];return u?.value?l.id===void 0?{value:u.value}:l.value===void 0?{id:l.id}:{id:l.id,value:Object.fromEntries(Object.keys(l.value).map(d=>[d,u.value[d]]))}:V(`APPLY normalized post-image for ${o.table} row ${p+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}:V(`APPLY normalized post-image for ${o.field} is not an array.`)});return{...e,parentValues:n,tables:r,multiValues:i,postImage:t}}function pa(e,t,r){return e.values.map(n=>({value:GE(e,n,t,r)}))}function GE(e,t,r,n){if(t.length!==e.fields.length)return V(`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?da(a):s.type==="CASE_VALUE"?ht(s.expr,{},a.fieldType):et(s,a.fieldType)}}return o}function da(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 VE(e,t,r,n){return Iu(e.selector,t,r,n)}function WE(e,t,r,n){return Iu(e.selector,t,r,n)}function Iu(e,t,r,n){if(e.kind==="ALL_ROWS")return t.map((l,p)=>p);let i=e.where,o=t.flatMap((l,p)=>X(i,Si(l,p),r)?[p]:[]),a=HE(i);a!==null&&o.length===0&&V(`APPLY _rid ${a} does not exist in snapshot table ${n}.`);let s=YE(i);return s!==null&&o.length===0&&V(`APPLY _idx ${s} does not exist in snapshot table ${n}.`),o}function HE(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 YE(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 jE(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:{}}}):V(`APPLY snapshot field ${t} is not a subtable value.`)}function fa(e,t){let r=Number(e);return(!Number.isSafeInteger(r)||r<=0)&&V(`${t} must be a positive integer.`),r}function qE(e){let t={};for(let[r,n]of Object.entries(e))t[r]=wu(n?.value);return t}function wu(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 Qr(e,t){if(Array.isArray(e)){e.forEach(n=>Qr(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))Qr(n,t)}function J(e){throw new Error(`ArgumentError: ${e}`)}function wi(e){let t=Number(e.$revision?.value);return!Number.isSafeInteger(t)||t<=0?J("APPLY snapshot $revision must be a positive integer."):t}function Zr(e){if(!Number.isSafeInteger(e.parentId)||e.parentId<=0)return J("APPLY plan parentId must be a positive integer.");if(!Number.isSafeInteger(e.revision)||e.revision<=0)return J("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)&&J(`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)&&J(`APPLY plan contains duplicate top-level field ${i.table}.`),n.has(i.table)&&J(`APPLY plan contains duplicate table ${i.table}.`),n.add(i.table),r.add(i.table),zE(i),t[i.table]={value:i.payloadRows};return{app:e.app,records:[{id:e.parentId,revision:e.revision,record:t}]}}function bu(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 J("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 zE(e){let t=Ea(e.snapshotRowIds,`${e.table} snapshot`),r=e.payloadRows.flatMap(u=>u.id===void 0?[]:[u.id]);for(let u of e.payloadRows)u.id===void 0&&u.value===void 0&&J(`APPLY ${e.payloadShape} table ${e.table} contains an APPEND row without value.`);if(Ea(r,`${e.table} payload`),e.payloadShape==="PATCH_ONLY"){e.operations.some(c=>c.kind==="REMOVE")&&J(`APPLY PATCH_ONLY table ${e.table} cannot contain REMOVE.`);let u=e.payloadRows.slice(0,t.length).map(c=>c.id??"");Ii(t,u,`APPLY PATCH_ONLY table ${e.table} must retain every snapshot row id in order.`),e.payloadRows.slice(t.length).some(c=>c.id!==void 0)&&J(`APPLY PATCH_ONLY table ${e.table} must place every APPEND row after snapshot rows.`);let d=e.postImageRows.slice(0,t.length).map(c=>c.id??"");Ii(t,d,`APPLY PATCH_ONLY table ${e.table} post-image must retain every snapshot row id in order.`),e.postImageRows.slice(t.length).some(c=>c.id!==void 0)&&J(`APPLY PATCH_ONLY table ${e.table} post-image must place every APPEND row after snapshot rows.`);return}e.operations.some(u=>u.kind==="REMOVE")||J(`APPLY FULL_SURVIVORS table ${e.table} requires a REMOVE operation.`);let n=Ea(e.removedRowIds,`${e.table} removed`);e.deletedRows!==n.length&&J(`APPLY FULL_SURVIVORS table ${e.table} deleted row count does not match removed ids.`),e.payloadRows.length!==e.postImageRows.length&&J(`APPLY FULL_SURVIVORS table ${e.table} payload/post-image row counts must match.`);let i=e.postImageRows.flatMap(u=>u.id===void 0?[]:[u.id]),o=new Set(n),a=new Set(i);for(let u of n)a.has(u)&&J(`APPLY FULL_SURVIVORS table ${e.table} has intersecting survivor/removed id ${u}.`);let s=t.filter(u=>!o.has(u));Ii(s,i,`APPLY FULL_SURVIVORS table ${e.table} must retain every survivor in snapshot order.`);let l=e.payloadRows.slice(0,i.length).map(u=>u.id??"");Ii(i,l,`APPLY FULL_SURVIVORS table ${e.table} payload must enumerate every survivor in order.`),(e.payloadRows.slice(i.length).some(u=>u.id!==void 0)||e.postImageRows.slice(i.length).some(u=>u.id!==void 0))&&J(`APPLY FULL_SURVIVORS table ${e.table} must place every APPEND row after survivors.`),e.payloadRows.some(u=>u.value===void 0)&&J(`APPLY FULL_SURVIVORS table ${e.table} requires values for every survivor.`),e.payloadRows.some((u,d)=>!Ra(u.value,e.postImageRows[d]?.value))&&J(`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(u=>!p.has(u)))&&J(`APPLY FULL_SURVIVORS table ${e.table} does not partition every snapshot row.`)}function Ea(e,t){let r=[...e],n=new Set;for(let i of r)i||J(`APPLY ${t} contains an empty row id.`),n.has(i)&&J(`APPLY ${t} contains duplicate row id ${i}.`),n.add(i);return r}function Ii(e,t,r){(e.length!==t.length||e.some((n,i)=>n!==t[i]))&&J(r)}function Ra(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)=>Ra(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)&&Ra(r[a],n[a]))}function Pu(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 Nu(e){let t=e.numberPrecision;if(t==null||typeof t!="object")throw new Error("SettingsError: numberPrecision is missing from app settings.");let r=Pu(t.digits,"digits",1,30),n=Pu(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 Cu(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 XE=new Set(["CHECK_BOX","MULTI_SELECT"]),JE=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT"]);function Se(e,t,r){if(t.fieldType==="DATE"||t.fieldType==="TIME"||t.fieldType==="DATETIME"){let i=QE(e);if(i!==""&&!ZE(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=en(e,t.fieldType)}catch(i){let o=i instanceof Error?i.message:String(i);return{ok:!1,code:eR(t.fieldType),message:o}}if(t.required&&bi(n))return{ok:!1,code:"ERR_REQUIRED",message:`${t.code} \u306F\u5FC5\u9808\u3067\u3059`};if(!bi(n)&&t.fieldType==="NUMBER"){let i=String(n),o=we(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&&jn(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&&jn(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}=Cu(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(!bi(n)&&(t.fieldType==="DATE"||t.fieldType==="TIME"||t.fieldType==="DATETIME")&&!Dt(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!bi(n)&&JE.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 QE(e){return e==null?"":Pi(e)&&e.type==="NUMBER"?G(e):Pi(e)&&e.type==="STRING"?e.value:typeof e=="string"||typeof e=="number"?String(e):""}function ZE(e,t){if(t==="DATE")return Dt(e.replace(/\//g,"-"),"DATE");if(t==="TIME")return Dt(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)?Dt(r.slice(0,10),"DATE")&&Dt(r.slice(11),"TIME"):Dt(r,"DATETIME")}function en(e,t){if(Pi(e)){let n=aa(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(XE.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 Pi(e){return typeof e=="object"&&e!==null&&typeof e.type=="string"}function vt(e){if(e==null||e==="")return!0;if(Array.isArray(e))return e.length===0;if(Pi(e)){if(e.type==="STRING")return e.value==="";if(e.type==="ARRAY")return e.elements.length===0}return!1}function bi(e){return e===""||Array.isArray(e)&&e.length===0}function eR(e){return e==="NUMBER"?"ERR_TYPE_NUMBER":"ERR_TYPE_DATE"}function Dt(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]),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)&&Dt(l,"TIME")}var yr=["$err_statement","$err_operation","$err_row","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id"];function ma(e,t,r){let n=new Map(r.map(i=>[i.code,i]));for(let i of e)if(i.mode==="update"){i.record??(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(u=>typeof u=="object"&&u!==null&&"code"in u),p=a;try{p=en(a,s)}catch{}i.record[o]={value:l?a:p}}}}function ya(e,t,r,n,i,o,a,s=[],l=!0,p=!0,u={}){let d=new Map(i.map(m=>[m.code,m])),c=[],f=new Set,E=[];u.validateUpdateBuiltIns===!1&&ma(e,n,i);let R;for(let m of e){m.record??(m.record={});let y=p?[...m.preErrors]:[],h=[],g=[],S=m.mode==="create"||u.validateUpdateBuiltIns!==!1;for(let N of n){if(!m.payload.has(N))continue;let L=m.payload.get(N),I=d.get(N).fieldType,v=["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(I)&&Array.isArray(L)&&L.every(A=>typeof A=="object"&&A!==null&&"code"in A);if(!S)continue;let k=Se(L,d.get(N),a);k.ok?m.record[N]={value:v?L:k.value}:h.push({field:N,code:k.code,message:k.message})}if(l&&m.mode==="create")for(let N of i){if(N.inSubtable||m.payload.has(N.code))continue;if(vt(N.defaultValue)){let I=Se("",N,a);I.ok?N.required&&h.push({field:N.code,code:"ERR_REQUIRED",message:`${N.code} \u306F\u5FC5\u9808\u3067\u3059`}):h.push({field:N.code,code:I.code,message:I.message})}else{let I=Se(N.defaultValue,N,a);I.ok||h.push({field:N.code,code:I.code,message:`\u65E2\u5B9A\u5024: ${I.message}`})}}if(s.length>0){let N=m.evaluationRow??Object.fromEntries([...m.payload].map(([v,k])=>[v,$e(k)])),L=m.evaluationFieldTypes,I=v=>{let k=v.tableAlias?`${v.tableAlias}.${v.field}`:v.field;return L?.get(k)??L?.get(v.field)};try{for(let v of Ri(s,N,I))g.push({field:"",code:"ERR_CHECK",message:v.message})}catch(v){R??(R=v)}}let O=N=>N.map(L=>{let I={};for(let v of r)I[v]=$e(m.payload.get(v));return I.$err_statement=String(o),I.$err_operation=t,I.$err_row=String(m.rowNumber),I.$err_field=L.field,I.$err_code=L.code,I.$err_message=L.message,I.$err_value="",I.$err_subtable="",I.$err_subrow="",I.$err_subrow_id="",I}),P={rowNumber:m.rowNumber,preErrors:O(y),builtInErrors:O(h),checkErrors:O(g)};E.push(P);let _=[...P.preErrors,...P.builtInErrors,...P.checkErrors];_.length>0&&f.add(m.rowNumber),c.push(..._)}if(R!==void 0)throw R;return{errors:c,invalidRows:f.size,invalidRowNumbers:f,candidateResults:E}}function $e(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 ha(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 tR(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 rR(e){return e.fieldType==="NUMBER"||tR(e)}function Ni(e,t,r){return{subtable:e,subrow:t+1,subrowId:String(r.id??"")}}function ga(e,t){let{topByCode:r,childrenByTable:n}=ha(t),i=rR;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,p)=>{let u=p?`${p}\0${l.code}`:l.code;if(a.has(u))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(u),!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 d=n.get(l.subtableCode);if(!d)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 c of l.children){let f=d.find(E=>E.code===c);if(!f){let E=[...n.entries()].some(([R,m])=>R!==l.subtableCode&&m.some(y=>y.code===c));throw new Error(E?`ArgumentError: VALIDATE \u306E\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${c} \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 ${c} \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB ${l.subtableCode} \u306B\u5B58\u5728\u3057\u307E\u305B\u3093\u3002`)}s(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 u=r.get(p);if(u?.fieldType==="SUBTABLE"){let d=(n.get(p)??[]).filter(i);if(d.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`);d.forEach(c=>s(c,p));continue}if(u){s(u);continue}throw[...n.values()].some(d=>d.some(c=>c.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 tn(e,t){return vt(e)?"":$e(en(e,t))}var nR=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]),rn=yr;function Ge(e,t=["$id"]){let r=ha(e),n=r.topLevel.filter(o=>o.fieldType!=="SUBTABLE"&&o.fieldType!=="FILE"&&!nR.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 Ut(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 kt(e,t,r,n,i=1,o="UPDATE"){let a=iR(e),s=[],l=new Set,p=[...t.payloadFields,...rn],u=$e(e.$id?.value),d=(c,f,E,R)=>{l.add(i);let m={};for(let y of t.payloadFields)m[y]=y==="$id"?u:$e(e[y]?.value);m.$err_statement=String(n),m.$err_operation=o,m.$err_row=String(i),m.$err_field=c.code,m.$err_code=E.code,m.$err_message=E.message,m.$err_value=tn(f,c.fieldType),m.$err_subtable=R?.subtable??"",m.$err_subrow=R?String(R.subrow):"",m.$err_subrow_id=R?.subrowId??"",s.push(m)};for(let c of t.topLevel){let f=e[c.code]?.value,E=Se(f,c,r);E.ok?a[c.code]={value:Ou(f,c.fieldType,E.value)}:d(c,f,E)}for(let[c,f]of t.subtables){let E=e[c]?.value;if(!Array.isArray(E))continue;let R=a[c]?.value;for(let m=0;m<E.length;m++){let y=E[m],h=R[m];for(let g of f){let S=y.value?.[g.code]?.value,O=Se(S,g,r);O.ok?(h.value??(h.value={}),h.value[g.code]={value:Ou(S,g.fieldType,O.value)}):d(g,S,O,Ni(c,m,y))}}}return{normalizedRecord:a,errors:s,columns:p,invalidRows:l.size,invalidRowNumbers:l,errorCount:s.length}}function Ou(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 iR(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;Lu(o,"dmlMaxRows"),Lu(a,"dmlMaxSubtableRows");for(let g of r)wi(g);let l=Su(t,r,n,i),p=Ge(n,t.assignments.map(g=>g.field)),u=l.some(g=>Ut(g.postImage,p));if(u&&!e.loadNumberPrecision)throw new Error("InternalError: APPLY number precision loader is required for NUMBER post-images.");let d=u?await e.loadNumberPrecision():void 0,c=l.map((g,S)=>kt(g.postImage,p,d,s,e.parentRowNumbers?.[S]??S+1));if(!t.validateOnly){let g=c.flatMap(S=>S.errors);if(g.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:c[0]?.columns??[],errors:g})}`)}let f=l.length,E=l.reduce((g,S)=>g+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 m=l.map((g,S)=>Ti(g,c[S].normalizedRecord)),y=m.flatMap(g=>Zr(g).records),h=c.map(g=>({errors:g.errors,columns:g.columns,invalidRows:g.invalidRows,errorCount:g.errorCount}));return _u({plans:m,records:y,validations:h,guards:{revisionRequired:!0,parentRows:f,dmlMaxRows:o,subtableRows:E,dmlMaxSubtableRows:a,wouldExceed:R}})}function Lu(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function _u(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))_u(r,t);return Object.freeze(e)}var Aa=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function Oi(e,t){if(new Set(e.fields).size!==e.fields.length)return Ve("DML target fields contain duplicates.");let r=new Map(t.map(o=>[o.code,o]));for(let o of e.fields)Du(o,null,r);let n=new Map,i=new Map;for(let o of e.applyBlocks??[]){if(n.has(o.field))return Ve(`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 Ve(`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 Ve(`APPLY INSERT supports APPEND only (${l.kind}).`);let p=new Set;for(let u of l.fields){if(p.has(u))return Ve(`APPLY APPEND specifies child ${u} more than once.`);p.add(u),Du(u,o.field,r,s)}for(let u of l.values)if(u.length!==l.fields.length)return Ve(`APPLY APPEND for ${o.field} has ${u.length} values for ${l.fields.length} fields.`)}}return{targetTables:n,targetMultiValueFields:new Map,childrenByTable:i,fieldsByCode:r}}function oR(e,t,r=Oi(e,t),n){let i=new Map(t.map(s=>[s.code,s.fieldType])),o=yi(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),p=s.operations.flatMap(u=>pa(u,l,s.field));return{table:s.field,rows:p,addedRows:p.length}});return o.map((s,l)=>{let p={};for(let d of t)d.inSubtable||d.fieldType==="SUBTABLE"||d.fieldType==="FILE"||d.writable===!1||Aa.has(d.fieldType)||(p[d.code]=s[d.code]??{value:da(d)});let u={...s};for(let d of a){let c=d.rows.map(f=>({value:f.value}));p[d.table]={value:c},u[d.table]={value:c}}return{parentRowNumber:n?.[l]??l+1,tables:a,postImage:p,record:u}})}async function nn(e){let{statement:t,fieldInfos:r,dmlMaxRows:n,dmlMaxSubtableRows:i,statementNumber:o=1}=e;vu(n,"dmlMaxRows"),vu(i,"dmlMaxSubtableRows");let a=e.metadata??Oi(t,r),s=oR(t,r,a,e.parentRowNumbers),l=r.filter(S=>S.fieldType==="SUBTABLE"||S.fieldType!=="FILE"&&S.writable!==!1&&!Aa.has(S.fieldType)),p=Ge(l,t.fields),u=s.some(S=>Ut(S.postImage,p));if(u&&!e.loadNumberPrecision)throw new Error("InternalError: APPLY number precision loader is required for NUMBER post-images.");let d=u?await e.loadNumberPrecision():void 0,c=s.map(S=>kt(S.postImage,p,d,o,S.parentRowNumber,"INSERT"));if(!t.validateOnly){let S=c.flatMap(O=>O.errors);if(S.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:c[0]?.columns??[],errors:S})}`)}let f=s.length,E=s.reduce((S,O)=>S+O.tables.reduce((P,_)=>P+_.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=s.map((S,O)=>{let P=c[O].normalizedRecord,_={};for(let N of t.fields)_[N]=P[N];for(let N of S.tables){let L=P[N.table]?.value;_[N.table]={value:N.rows.map((I,v)=>({value:Object.fromEntries(Object.keys(I.value).map(k=>[k,L[v]?.value?.[k]??I.value[k]]))}))}}return{...S,postImage:P,record:_}}),y=m.map(S=>S.record),h=[];for(let S=0;S<y.length;S+=100)h.push({app:t.appId,records:y.slice(S,S+100)});let g=c.map(S=>({errors:S.errors,columns:S.columns,invalidRows:S.invalidRows,errorCount:S.errorCount}));return Uu({applyBlocks:t.applyBlocks??[],candidates:m,records:y,batches:h,validations:g,guards:{revisionRequired:!1,parentRows:f,dmlMaxRows:n,subtableRows:E,dmlMaxSubtableRows:i,wouldExceed:R}})}function Du(e,t,r,n){if(e.startsWith("_")||e.startsWith("$"))return Ve(`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?Ve(`APPLY child ${e} does not belong to subtable ${t}.`):Ve(`APPLY ${t===null?"parent field":"child"} ${e} does not exist.`)}if(i.fieldType==="SUBTABLE"||i.fieldType==="FILE"||i.writable===!1||Aa.has(i.fieldType))return Ve(`APPLY assignment target ${e} is not writable (${i.fieldType}).`)}function vu(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function Ve(e){throw new Error(`ArgumentError: ${e}`)}function Uu(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))Uu(r,t);return Object.freeze(e)}async function Mu(e){let{statement:t,matches:r,fieldInfos:n,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a=1}=e;ku(i,"dmlMaxRows"),ku(o,"dmlMaxSubtableRows"),cR(t,r);let s=r.filter(y=>y.targetId===void 0),l=r.filter(y=>y.targetId!==void 0),p=aR(t,s.map(y=>y.sourceRowIndex)),u=await nn({statement:p,fieldInfos:n,metadata:Oi(p,n),dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a,parentRowNumbers:s.map(y=>y.sourceRowIndex+1),loadNumberPrecision:e.loadNumberPrecision}),d=[],c=new Set;for(let y of l){let h=y.targetId;c.has(h)&&Sa(`UPSERT APPLY resolves more than one source row to parent $id ${h}.`),c.add(h),y.snapshot||Sa(`UPSERT APPLY snapshot for parent $id ${h} is missing.`);let g=Number(y.snapshot.$id?.value);g!==h&&Sa(`UPSERT APPLY snapshot $id ${g} does not match target $id ${h}.`);let S=sR(t,y.sourceRowIndex,h),O=S.applyBlocks?.length?tt(S,n):lR(n);d.push(await Ci({statement:S,snapshots:[y.snapshot],fieldInfos:n,metadata:O,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a,parentRowNumbers:[y.sourceRowIndex+1],loadNumberPrecision:e.loadNumberPrecision}))}let f=uR(d,i,o),E=u.guards.parentRows+f.guards.parentRows,R=u.guards.subtableRows+f.guards.subtableRows,m=E>i||R>o;if(!t.validateOnly){let y=[...u.validations.flatMap(h=>h.errors),...f.validations.flatMap(h=>h.errors)];if(y.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:u.validations[0]?.columns??f.validations[0]?.columns??[],errors:y})}`)}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 Ta({create:u,update:f,createBatches:u.batches,updateBatches:pR(f.records,t.appId),guards:{revisionRequired:f.guards.parentRows>0,parentRows:E,dmlMaxRows:i,subtableRows:R,dmlMaxSubtableRows:o,wouldExceed:m,create:u.guards,update:f.guards}})}function aR(e,t){return{type:"INSERT",appId:e.appId,fields:[...e.fields],values:t.map(r=>e.values[r]),applyBlocks:e.onInsertApplyBlocks??[],validateOnly:!0}}function sR(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 lR(e){return{targetTables:new Map,targetMultiValueFields:new Map,childrenByTable:new Map,fieldsByCode:new Map(e.map(t=>[t.code,t]))}}function uR(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 Ta({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 cR(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 pR(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 ku(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function Sa(e){throw new Error(`ArgumentError: ${e}`)}function Ta(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))Ta(r,t);return Object.freeze(e)}function an(e){return hr("UPDATE",[Ku(e)])}function Ia(e){return hr("INSERT",[Fu(e)])}function wa(e){return hr("UPSERT",[Fu(e.create),Ku(e.update)])}function Ce(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 _i(e,t,r){return e.type==="UPDATE"?hr("UPDATE",[Li("update",e.applyBlocks??[],null,!0,t,r)]):e.type==="INSERT"?hr("INSERT",[Li("insert",e.applyBlocks??[],e.values.length,!1,t,r)]):hr("UPSERT",[Li("insert",e.onInsertApplyBlocks??[],null,!1,t,r),Li("update",e.onUpdateApplyBlocks??[],null,!0,t,r)])}function hr(e,t){return{statementKind:e,branches:t,nonTransactional:!0,partialSuccess:{possible:!0}}}function Fu(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 Ku(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:xu(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||(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:xu(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 xu(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:on(i.count,r.count),...r.matchedRows!==void 0?{matchedRows:on(i.matchedRows,r.matchedRows)}:{},...r.changedRows!==void 0?{changedRows:on(i.changedRows,r.changedRows)}:{},...r.addedRows!==void 0?{addedRows:on(i.addedRows,r.addedRows)}:{},...r.removedRows!==void 0?{removedRows:on(i.removedRows,r.removedRows)}:{}}}):t.map(r=>({...r}))}function on(e,t){return e==null||t===null?null:e+t}function Li(e,t,r,n,i,o){let a=t.map(u=>{let d=u.operations.map(f=>dR(f,r)),c=d.every(f=>f.count!==null)?d.reduce((f,E)=>f+E.count,0):null;return{targetKind:u.targetKind,field:u.field,operations:d,changedCount:c}}),s=a.filter(u=>u.targetKind==="SUBTABLE"),l=s.every(u=>u.changedCount!==null)?s.reduce((u,d)=>u+d.changedCount,0):null,p=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:p},chunk:{size:100,plannedChunks:r===null?null:Math.ceil(r/100)},deletedParentRows:e==="insert"?0:null}}function dR(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 rt=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 Bu(e,t,r){or("phase10c");let n=bu(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 rt({successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"PUT_CHUNK",nonTransactional:!0,retryAttempted:!1,...r?{diagnostic:Ce(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 $u(e,t,r){or("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 rt({successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"POST_CHUNK",nonTransactional:!0,retryAttempted:!1,...r?{diagnostic:Ce(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 Gu(e,t,r){or("phase14c");let n=[],i=0,o=0,a=0,s=0;for(let l=0;l<e.createBatches.length;l+=1){let p=e.createBatches[l];try{let u=await t.postRecords({app:p.app,records:[...p.records]});n.push(u.ids)}catch(u){throw new rt({successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,failedChunkIndex:l,failedBranch:"INSERT",failedStage:"POST_CHUNK",nonTransactional:!0,retryAttempted:!1,...r?{diagnostic:Ce(r,{successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,successfulInsertChunks:i,successfulUpdateChunks:o,failedChunkIndex:l,failedStage:"POST_CHUNK",failedBranch:"INSERT",retryAttempted:!1})}:{}},u)}i+=1,a+=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(u){throw new rt({successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,failedChunkIndex:l,failedBranch:"UPDATE",failedStage:"PUT_CHUNK",nonTransactional:!0,retryAttempted:!1,...r?{diagnostic:Ce(r,{successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,successfulInsertChunks:i,successfulUpdateChunks:o,failedChunkIndex:l,failedStage:"PUT_CHUNK",failedBranch:"UPDATE",retryAttempted:!1})}:{}},u)}o+=1,s+=p.records.length}return{type:"UPSERT",createdIds:n,insertedCount:a,updatedCount:s,successfulChunks:i+o,successfulParents:a+s,successfulInsertChunks:i,successfulUpdateChunks:o,nonTransactional:!0}}function Vu(e,t){let r=Z(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 We(e){if(e===null)return!1;switch(e.type){case"BINARY":return Di(e.left);case"NULL_CHECK":return Di(e.field);case"LOGICAL":return We(e.left)||We(e.right);case"NOT":case"GROUP":return We(e.expr);case"EXISTS":case"BOOLEAN":return!1}}function Di(e){if(Array.isArray(e))return e.some(Di);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(Di)}async function ke(e,t,r,n,i){let o=await ye(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 vi(e,t,r,n){let{records:i,metrics:o}=await ke(e,t,r,["$id"],n);return{ids:js(i),metrics:o}}var Oe=["=","!=",">","<",">=","<="],fR=new Set(["DATE","DATETIME","CREATED_TIME","UPDATED_TIME"]),ER=new Set(Oe),RR=new Map([["TODAY",new Set(["DATE","DATETIME","CREATED_TIME","UPDATED_TIME"])],["NOW",new Set(["DATETIME","CREATED_TIME","UPDATED_TIME"])],["LOGINUSER",new Set(["CREATOR","MODIFIER","USER_SELECT"])]]),mR=new Map([["TODAY",new Set(Oe)],["NOW",new Set(Oe)],["LOGINUSER",new Set(["in","not in"])]]),yR=["=","!=","in","not in"],hR=new Map([["RECORD_NUMBER",new Set([...Oe,"in","not in"])],["__ID__",new Set([...Oe,"in","not in"])],["CREATOR",new Set(["in","not in"])],["MODIFIER",new Set(["in","not in"])],["CREATED_TIME",new Set(Oe)],["UPDATED_TIME",new Set(Oe)],["DATE",new Set(Oe)],["TIME",new Set(Oe)],["DATETIME",new Set(Oe)],["SINGLE_LINE_TEXT",new Set(["=","!=","in","not in","like","not like"])],["LINK",new Set(["=","!=","in","not in","like","not like"])],["NUMBER",new Set([...Oe,"in","not in"])],["CALC",new Set([...Oe,"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(yR)]]),gR=new Map([["CREATOR",new Set(["in","not in"])],["MODIFIER",new Set(["in","not in"])],["CHECK_BOX",new Set(["in","not in"])],["MULTI_SELECT",new Set(["in","not in"])]]),Yu=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"]),ju=new Set(["CHECK_BOX","MULTI_SELECT","FILE","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE","CATEGORY"]);function AR(e){return hR.get(e)??new Set}function Le(e,t){return e===null?{capability:"EXACT_PUSHDOWN",reasons:[{code:"WHERE_EXACT"}]}:ln(e,t)}function ln(e,t){switch(e.type){case"BOOLEAN":return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]};case"BINARY":return SR(e.op,e.left,e.right,t);case"NULL_CHECK":return e.field.type!=="FIELD"?Pa():wR(e.field,e.not?"IS NOT NULL":"IS NULL",t);case"EXISTS":return Pa();case"GROUP":return ln(e.expr,t);case"NOT":{let r=ln(e.expr,t);return r.capability!=="SUPERSET_PREFILTER"?r:zu(r.reasons)?cn({capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"},...r.reasons]}):{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]}}case"LOGICAL":{let r=ln(e.left,t),n=ln(e.right,t);return PR(e.op,r,n)}}}function SR(e,t,r,n){if(r.type==="KINTONE_FUNC"&&z(r.name))return TR(e,t,r,n);if(r.type==="KINTONE_FUNC"&&Wu(r))return Hu(e,t,r,n);if(r.type==="IN_LIST"){let u=r.values.filter(d=>d.type==="KINTONE_FUNC");if(u.length>0)return r.values.length===1&&u.length===1?Hu(e,t,u[0],n):Ui("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED",u[0].name,t.type==="FIELD"?t.field:void 0,t.type==="FIELD"?n(t)?.fieldType:void 0,un(e))}if(t.type!=="FIELD")return Pa();let i=n(t);if(!i)return gr("WHERE_FIELD_UNRESOLVED",t.field,void 0,un(e));let o=un(e);if(!qu(i.fieldType,o))return gr("WHERE_OPERATOR_INVALID_FOR_FIELD_TYPE",t.field,i.fieldType,o);if(!bR(i.fieldType,e))return gr("WHERE_OPERATOR_UNSUPPORTED",t.field,i.fieldType,o);let a=AR(i.fieldType),s=r.type==="STRING"||r.type==="NUMBER"||r.type==="IN_LIST"||Wu(r),l=!i.requiresCollectionOperators||o!=="="&&o!=="!=",p=e==="LIKE"||e==="NOT_LIKE";return s&&l&&a.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 Wu(e){return e.type==="KINTONE_FUNC"&&Pt.has(e.name)}function Hu(e,t,r,n){let i=un(e),o=r.name;if(!Pt.has(o)||t.type!=="FIELD")return Ui("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED",o,void 0,void 0,i);let a=n(t),s=RR.get(o);return!a||!s.has(a.fieldType)||a.inSubtable||a.requiresCollectionOperators?Ui("WHERE_KINTONE_FUNCTION_FIELD_TYPE_UNSUPPORTED",o,t.field,a?.fieldType,i):mR.get(o).has(i)?{capability:"EXACT_PUSHDOWN",reasons:[{code:"WHERE_EXACT",functionName:o,field:t.field,fieldType:a.fieldType,operator:i}]}:Ui("WHERE_KINTONE_FUNCTION_OPERATOR_UNSUPPORTED",o,t.field,a.fieldType,i)}function TR(e,t,r,n){let i=un(e),o=r.name;if(t.type!=="FIELD")return sn("WHERE_RELATIVE_DATE_CONTEXT_UNSUPPORTED",o,void 0,void 0,i);let a=n(t);return a?IR(r)?ER.has(i)?!fR.has(a.fieldType)||a.inSubtable||a.requiresCollectionOperators?sn("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}]}:sn("WHERE_RELATIVE_DATE_OPERATOR_UNSUPPORTED",o,t.field,a.fieldType,i):sn("WHERE_RELATIVE_DATE_ARGUMENT_INVALID",o,t.field,a.fieldType,i):sn("WHERE_RELATIVE_DATE_FIELD_TYPE_UNSUPPORTED",o,t.field,void 0,i)}function IR(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 wR(e,t,r){let n=r(e);return n?qu(n.fieldType,t)?!Yu.has(n.fieldType)&&!ju.has(n.fieldType)?gr("WHERE_OPERATOR_UNSUPPORTED",e.field,n.fieldType,t):{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_RESIDUAL",field:e.field,fieldType:n.fieldType,operator:t}]}:gr("WHERE_OPERATOR_INVALID_FOR_FIELD_TYPE",e.field,n.fieldType,t):gr("WHERE_FIELD_UNRESOLVED",e.field,void 0,t)}function qu(e,t){let r=gR.get(e);return r===void 0||r.has(t)}function bR(e,t){return Yu.has(e)?!0:ju.has(e)?t==="="||t==="!="||t==="<>"||t==="IN"||t==="NOT_IN"||t==="LIKE"||t==="NOT_LIKE"||t==="KLIKE"||t==="NOT_KLIKE":!1}function un(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 PR(e,t,r){let n=[...t.reasons,...r.reasons];return t.capability==="UNSUPPORTED"||r.capability==="UNSUPPORTED"?cn({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")?cn({capability:"SUPERSET_PREFILTER",reasons:[{code:"WHERE_SUPERSET_PREFILTER"},...n]}):cn({capability:"LOCAL_ONLY",reasons:n})}function Pa(){return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]}}function gr(e,t,r,n){return{capability:"UNSUPPORTED",reasons:[{code:e,field:t,fieldType:r,operator:n}]}}function Ui(e,t,r,n,i){return cn({capability:"UNSUPPORTED",reasons:[{code:e,functionName:t,field:r,fieldType:n,operator:i}]})}function sn(e,t,r,n,i){return Xu({capability:"UNSUPPORTED",reasons:[{code:e,functionName:t,field:r,fieldType:n,operator:i}]})}function zu(e){return e.some(t=>t.code.startsWith("WHERE_RELATIVE_DATE_")||t.functionName!==void 0&&z(t.functionName))}function NR(e){return e.some(t=>t.code.startsWith("WHERE_KINTONE_FUNCTION_")||t.functionName!==void 0&&Pt.has(t.functionName))}function Xu(e){if(e.capability==="EXACT_PUSHDOWN"||!zu(e.reasons)||e.reasons.some(r=>r.code==="WHERE_RELATIVE_DATE_REQUIRES_EXACT_PUSHDOWN"))return e;let t=e.reasons.find(r=>r.code.startsWith("WHERE_RELATIVE_DATE_")||r.functionName!==void 0&&z(r.functionName));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 CR(e){if(e.capability==="EXACT_PUSHDOWN"||!NR(e.reasons)||e.reasons.some(r=>r.code==="WHERE_KINTONE_FUNCTION_REQUIRES_EXACT_PUSHDOWN"))return e;let t=e.reasons.find(r=>r.code.startsWith("WHERE_KINTONE_FUNCTION_")||r.functionName!==void 0&&Pt.has(r.functionName));return{capability:e.capability,reasons:[...e.reasons,{code:"WHERE_KINTONE_FUNCTION_REQUIRES_EXACT_PUSHDOWN",functionName:t.functionName,field:t.field,fieldType:t.fieldType,operator:t.operator}]}}function cn(e){return CR(Xu(e))}var OR=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]),LR=new Set(["SINGLE_LINE_TEXT","LINK","MULTI_LINE_TEXT","RICH_TEXT","FILE"]),_R=new Set(["DATETIME","CREATED_TIME","UPDATED_TIME"]);function Mi(e,t){if(e.tableAlias!==null){let n=t.filter(o=>o.alias===e.tableAlias);if(n.length>1)return Object.freeze({status:"AMBIGUOUS"});if(n.length===0)return Object.freeze({status:"UNKNOWN"});let i=n[0];return i.fieldTypes.has(e.field)?Ju(i,e.field):Object.freeze({status:"UNKNOWN"})}let r=t.filter(n=>n.fieldTypes.has(e.field));return r.length>1?Object.freeze({status:"AMBIGUOUS"}):r.length===0?Object.freeze({status:"UNKNOWN"}):Ju(r[0],e.field)}function Qu(e,t){if(e.left.type!=="FIELD")return pn();let r=Mi(e.left,t);if(r.status!=="OWNED"||r.source.sourceKind!=="APP")return pn();let n=r.source.fieldTypes.get(r.fieldCode);if(n===void 0||n.startsWith("KSQL_")||Le(e,a=>{let s=Mi(a,t);if(s.status!=="OWNED"||s.source!==r.source)return;let l=s.source.fieldTypes.get(s.fieldCode);return l===void 0?void 0:q({fieldType:l})}).capability!=="EXACT_PUSHDOWN")return pn();let o=vR(e,r,n);return o==="unsafe"?pn():Object.freeze({relation:o,owner:r})}function Zu(e,t){let r=new Set;Sr(e,r);let i=(e===null?[]:tc(Ar(e,t))).map(a=>Object.freeze({targetAlias:a.owner.alias,appId:a.owner.appId,predicate:a.predicate,relation:a.relation})),o=new Set;for(let a of i)Sr(a.predicate,o);return Object.freeze({items:Object.freeze(i),appliedKlikes:o,allKlikes:Object.freeze([...r]),rejections:Object.freeze(DR(e,t))})}function DR(e,t){if(e===null)return[];let r=new Set,n=i=>{if(i.type==="BINARY"){if(i.left.type!=="FIELD"){r.add("UNSAFE_RELATION");return}let o=Mi(i.left,t);if(o.status==="AMBIGUOUS"){r.add("AMBIGUOUS_FIELD");return}if(o.status==="UNKNOWN"){r.add("UNKNOWN_FIELD_OR_METADATA");return}if(xi(i.right)){r.add("CROSS_TABLE_BINARY");return}Qu(i,t).relation==="unsafe"&&r.add("UNSAFE_RELATION");return}if(i.type==="LOGICAL"){if(i.op==="OR"){if(oc(i)){r.add("KLIKE_OR");return}let o=Ar(i.left,t),a=Ar(i.right,t);if(o.length!==1||a.length!==1||!Ca(o[0].owner,a[0].owner)){r.add("CROSS_ALIAS_OR");return}}n(i.left),n(i.right);return}if(i.type==="GROUP"){n(i.expr);return}if(i.type==="NOT"){r.add("NOT");return}r.add("UNSAFE_RELATION")};return n(e),[...r].map(i=>Object.freeze({reason:i}))}function ec(e,t){return ki(e.predicate,e,t),$(e.predicate)}function ki(e,t,r){switch(e.type){case"LOGICAL":ki(e.left,t,r),ki(e.right,t,r);return;case"GROUP":ki(e.expr,t,r);return;case"BINARY":{if(e.left.type!=="FIELD"||xi(e.right))throw Na(t,"predicate contains a non-target or RHS field reference");let n=Mi(e.left,r);if(n.status!=="OWNED"||n.alias!==t.targetAlias||n.appId!==t.appId||n.source.sourceKind!=="APP")throw Na(t,`field ${e.left.field} is not uniquely owned by the target`);return}case"NOT":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":throw Na(t,"predicate shape is outside the Phase A serializer contract")}}function Na(e,t){return new Error(`InternalError: JOIN pushdown ownership guard failed for ${e.targetAlias}/APP${e.appId}: ${t}.`)}function Ar(e,t){switch(e.type){case"BINARY":{let r=Qu(e,t);return r.relation==="unsafe"||r.owner===void 0?[]:[{owner:r.owner,predicate:e,relation:r.relation}]}case"LOGICAL":{let r=Ar(e.left,t),n=Ar(e.right,t);if(e.op==="AND")return tc([...r,...n]);if(oc(e))return[];if(r.length!==1||n.length!==1)return[];let i=r[0],o=n[0];return Ca(i.owner,o.owner)?[{owner:i.owner,predicate:{type:"LOGICAL",op:"OR",left:i.predicate,right:o.predicate},relation:rc(i.relation,o.relation)}]:[]}case"GROUP":return Ar(e.expr,t).map(r=>({...r,predicate:{type:"GROUP",expr:r.predicate}}));case"NOT":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return[]}}function tc(e){let t=[];for(let r of e){let n=t.findIndex(o=>Ca(o.owner,r.owner));if(n<0){t.push(r);continue}let i=t[n];t[n]={owner:i.owner,predicate:{type:"LOGICAL",op:"AND",left:i.predicate,right:r.predicate},relation:rc(i.relation,r.relation)}}return t}function vR(e,t,r){if(e.op==="LIKE"||e.op==="NOT_LIKE")return"unsafe";if(e.op==="KLIKE"||e.op==="NOT_KLIKE")return LR.has(r)&&e.right.type==="STRING"&&e.right.value!==""?"exact":"unsafe";if(r==="__ID__"||t.fieldCode==="$id")return UR(e.right)&&(e.op==="="||e.op==="<"||e.op===">"||e.op==="<="||e.op===">=")?"exact":"unsafe";if(r==="RECORD_NUMBER")return"unsafe";if(r==="NUMBER")return e.right.type!=="NUMBER"?"unsafe":e.op==="="||(e.op==="<"||e.op===">")&&nc(e.right)?"superset":"unsafe";if(r==="SINGLE_LINE_TEXT")return e.op==="="&&e.right.type==="STRING"&&e.right.value!==""?"superset":"unsafe";if(r==="DATE"||r==="TIME"||_R.has(r))return e.op!=="="||e.right.type!=="STRING"?"unsafe":r==="DATE"?ic(e.right.value)?"superset":"unsafe":r==="TIME"?kR(e.right.value)?"superset":"unsafe":MR(e.right.value)?"superset":"unsafe";if(OR.has(r)){if(e.op!=="IN"&&e.op!=="NOT_IN"||e.right.type!=="IN_LIST"||e.right.values.length===0)return"unsafe";let n=t.source.fieldOptions?.get(t.fieldCode);return n===void 0?"unsafe":e.right.values.every(i=>i.type==="STRING"&&i.value!==""&&n.has(i.value))?"exact":"unsafe"}return"unsafe"}function Ju(e,t){return Object.freeze({status:"OWNED",alias:e.alias,appId:e.appId,fieldCode:t,source:e})}function pn(){return Object.freeze({relation:"unsafe"})}function Ca(e,t){return e.alias===t.alias&&e.appId===t.appId&&e.source===t.source}function rc(e,t){return e==="exact"&&t==="exact"?"exact":"superset"}function UR(e){return e.type==="NUMBER"&&nc(e)&&e.value>0}function nc(e){return/^-?\d+$/.test(G(e))&&Number.isSafeInteger(e.value)}function ic(e){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e);if(!t)return!1;let r=Number(t[1]),n=Number(t[2]),i=Number(t[3]),o=new Date(Date.UTC(r,n-1,i));return o.getUTCFullYear()===r&&o.getUTCMonth()===n-1&&o.getUTCDate()===i}function kR(e){let t=/^(\d{2}):(\d{2})$/.exec(e);return t!==null&&Number(t[1])<=23&&Number(t[2])<=59}function MR(e){let t=/^(\d{4}-\d{2}-\d{2})T(\d{2}):(\d{2}):(\d{2})Z$/.exec(e);return!t||!ic(t[1])?!1:Number(t[2])<=23&&Number(t[3])<=59&&Number(t[4])<=59}function Sr(e,t){if(e!==null){if(pt(e)){t.add(e);return}switch(e.type){case"LOGICAL":Sr(e.left,t),Sr(e.right,t);return;case"NOT":case"GROUP":Sr(e.expr,t);return;case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}}function oc(e){let t=new Set;return Sr(e,t),t.size>0}function xi(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(xi);let t=e;return t.type==="FIELD"||t.type==="FIELD_REF"?!0:Object.values(t).some(xi)}function Oa(e,t){let r=Gr(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 xR(e,t){return e.key.type==="FIELD_NAME"?t.get(e.key.name):void 0}function FR(e,t){return e.columns.some(r=>"alias"in r&&r.alias===t)}function dn(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=xR(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"&&!FR(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 KR=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 BR(e,t){return e.columns.some(r=>"alias"in r&&r.alias===t)}function fn(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,p=e.orderSemantics.get(l);if(!p){r.push(`KORDER_KEY_UNRESOLVED(field=${l})`);continue}if(BR(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}KR.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 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 Fi=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"}},Ki=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}},Bi=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 ac(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 Bi(a).message}}return{records:r,cleanupWarning:o}}function La(e){let t=[];e.where&&t.push($(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(" ")}var sc=["$id","$revision","\u30EC\u30B3\u30FC\u30C9\u756A\u53F7","\u4F5C\u6210\u8005","\u4F5C\u6210\u65E5\u6642","\u66F4\u65B0\u8005","\u66F4\u65B0\u65E5\u6642","\u30B9\u30C6\u30FC\u30BF\u30B9","\u4F5C\u696D\u8005"];function lc(e){return e.startsWith("_")||e.startsWith("$")}var $R=/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/;function Da(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(Da);let t=e;return t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"?!0:t.type==="SELECT"||t.type==="SCALAR_SUBQUERY"?!1:t.type==="FIELD"&&typeof t.field=="string"?$R.test(t.field):Object.values(t).some(Da)}function GR(e){switch(e.type){case"AGGREGATE":case"ARITH_AGG_COL":return"AGGREGATE_DEPENDENT";case"GROUPING_COL":case"WINDOW_COL":return"POST_GROUP_ONLY";case"VARIABLE_COL":throw new Error("InternalError: unresolved VARIABLE_COL reached GROUP BY alias planning.");case"WILDCARD":case"PARENT_WILDCARD":case"FIELD":case"LITERAL_COL":case"ARITH_COL":case"CASE_COL":case"STRFUNC_COL":case"SCALAR_VALUE_COL":case"SCALAR_SUBQUERY_COL":return Wr(e)||Da(e)?"AGGREGATE_DEPENDENT":"SAFE"}}var VR=["_pid","_rid","_idx"];function _a(e){return[...new Set(e)]}function WR(e){switch(e.kind){case"APP":return _a([...e.fieldCodes,...sc]);case"SUBTABLE":return _a([...e.childFieldCodes,...VR,...e.parentFieldCodes.map(t=>`_p.${t}`)]);case"MATERIALIZED":return _a(e.columns)}}function uc(e,t){return[e.from,...e.joins.map(n=>n.table)].map((n,i)=>({sourceIndex:i,qualifier:n.alias??n.cteName,columns:WR(t(n,i))}))}function HR(e){if(e.startsWith("_p."))return{qualifier:null,fieldCode:e};let t=e.indexOf(".");return t<=0||t===e.length-1?{qualifier:null,fieldCode:e}:{qualifier:e.slice(0,t),fieldCode:e.slice(t+1)}}function YR(e,t){return e.qualifier===null?t:`${e.qualifier}.${t}`}function jR(e){return"alias"in e&&typeof e.alias=="string"?e.alias:null}function qR(e,t,r){let n=HR(e),o=(n.qualifier===null?r:r.filter(l=>l.qualifier===n.qualifier)).filter(l=>l.columns.includes(n.fieldCode));if(o.length>1)throw new Error(`ArgumentError: GROUP BY field ${e} is ambiguous across multiple sources (reason=GROUP_BY_FIELD_AMBIGUOUS).`);if(o.length===1){let l=o[0];return{kind:"PHYSICAL",sourceIndex:l.sourceIndex,fieldCode:n.fieldCode,runtimeKey:YR(l,n.fieldCode)}}if(n.qualifier!==null)return{kind:"UNKNOWN",name:e};let a=t.flatMap((l,p)=>jR(l)===e?[{column:l,columnIndex:p}]:[]);if(a.length>1)return{kind:"ALIAS_REJECT",reason:"DUPLICATE"};if(a.length===1){let l=a[0],p=GR(l.column);return p==="SAFE"?{kind:"ALIAS_SAFE",columnIndex:l.columnIndex}:{kind:"ALIAS_REJECT",reason:p==="AGGREGATE_DEPENDENT"?"AGGREGATE":"POST_GROUP_ONLY"}}return t.some(l=>l.type==="AGGREGATE"&&l.alias===null&&he(l.func,l.distinct,l.arg)===e)?{kind:"ALIAS_REJECT",reason:"AGGREGATE"}:{kind:"UNKNOWN",name:e}}function cc(e,t,r){return{items:e.map(n=>n.type==="FIELD_NAME"?qR(n.name,t,r):{kind:"EXPRESSION"})}}function nt(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 zR(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(pc(e,a,n.leftColumns),pc(t,s,n.rightColumns),o==="RIGHT"){let d=new Map;for(let E of e){let R=E[a]??"",m=d.get(R);m?m.push(E):d.set(R,[E])}let c={};for(let E of n.leftColumns??Object.keys(e[0]??{}))c[E]="";let f=[];for(let E of t){let R=E[s]??"",m=d.get(R)??[];if(m.length>0)for(let y of m)f.push({...y,...E});else f.push({...c,...E})}return f}let l=new Map;for(let d of t){let c=d[s]??"",f=l.get(c);f?f.push(d):l.set(c,[d])}let p=[],u={};for(let d of n.rightColumns??Object.keys(t[0]??{}))u[d]="";for(let d of e){let c=d[a]??"",f=l.get(c)??[];if(f.length>0)for(let E of f)p.push({...d,...E});else o==="LEFT"&&p.push({...d,...u})}return p}function pc(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 XR(e,t,r,n,i){return t===null?e:e.filter(o=>X(t,o,r,n,i))}function hc(e){return e.some(t=>t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"||t.type==="STRFUNC_COL"&&En(t.expr)||t.type==="SCALAR_VALUE_COL"&>(t.expr))}function JR(e,t,r,n,i,o={}){if(i&&i.items.length!==t.length)throw new Error("InternalError: plain GROUP BY resolution plan length does not match group keys.");let a=new Map;for(let l of e){let p=t.map((d,c)=>ZR(d,l,i?.items[c],r,o)).join("\0"),u=a.get(p);u?u.push(l):a.set(p,[l])}a.size===0&&t.length===0&&hc(r)&&a.set("",[]);let s=[];for(let l of a.values()){let p={...l[0]};for(let u of t)u.type==="ARITH_KEY"?p[Fa(u.expr)]=String(re(u.expr,l[0])):u.type==="FUNC_KEY"&&(p[At(u.expr)]=ne(u.expr,l[0]));gc(p,l,r,n),s.push(p)}return s}function QR(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 p={children:new Map},u=[];for(let c of e){let f=p;for(let E of l.items){let R=dc(E,c),m=f.children.get(R);m||(m={children:new Map},f.children.set(R,m)),f=m}f.rows||(s(),f.rows=[],u.push(f.rows)),f.rows.push(c)}e.length===0&&l.items.length===0&&(s(),p.rows=[],u.push(p.rows));let d=new Set(l.items.map(c=>c.canonicalId));for(let c of u){let f={...c[0]},E=new Map;for(let R of l.items)E.has(R.canonicalId)||E.set(R.canonicalId,dc(R,c[0]));for(let R of t.allItems){let m=E.get(R.canonicalId)??"";f[R.directKey]=m,R.unqualifiedBridgeKey!==null&&(f[R.unqualifiedBridgeKey]=m)}gc(f,c,r,n),Ul(f,d),o.push(f)}}return o}function dc(e,t){return t?t[e.directKey]??(e.unqualifiedBridgeKey===null?void 0:t[e.unqualifiedBridgeKey])??"":""}function gc(e,t,r,n){for(let i of r)if(i.type==="AGGREGATE"){let o=he(i.func,i.distinct,i.arg),a=String(Ua(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??Tr(i.expr);e[o]=String($i(i.expr,t,n))}else if(i.type==="STRFUNC_COL"&&En(i.expr)){let o=i.alias??At(i.expr),a=Ka(i.expr,t,n);e[o]=ne(a,e)}else if(i.type==="SCALAR_VALUE_COL"&>(i.expr)){let o=i.alias??He(i.expr),a=Vi(i.expr,t,n);e[o]=String(se(a,e))}}function ZR(e,t,r,n,i){if(e.type==="FIELD_NAME"){if(!r)return t[e.name]??"";if(r.kind==="PHYSICAL")return t[r.runtimeKey]??"";if(r.kind==="ALIAS_SAFE"){let o=n[r.columnIndex];if(!o)throw new Error(`InternalError: GROUP BY alias column index ${r.columnIndex} is out of range.`);let a=Gi(o,t,r.columnIndex,i);if(typeof a!="string")throw new Error("InternalError: GROUP BY alias resolved to an expanded SELECT column.");return a}throw new Error(`InternalError: unresolved plain GROUP BY item ${r.kind} reached evaluation.`)}return e.type==="FUNC_KEY"?ne(e.expr,t):String(re(e.expr,t))}function Ua(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=re(r,f);if(isNaN(R))continue;E=String(R)}else{let R=yt(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,p=t?s?[...new Set(l)]:[...new Set(a)]:s?l:a;if(e==="COUNT")return p.length;if(e==="GROUP_CONCAT")return p.join(n??",");let u=e==="MIN"||e==="MAX"||e==="MODE"?Ac(r,o):void 0,d=typeof u=="string"?F(u):u??(r.type==="FIELD_REF"||r.type==="FIELD"||r.type==="STRING"||r.type==="CONCAT_OP"||r.type==="CASE_WHEN"?F("string"):F("number"));if(e==="MODE"){if(a.length===0)return"";let f=new Map;for(let m of a)f.set(m,(f.get(m)??0)+1);let E="",R=0;for(let[m,y]of f){if(y>R){E=m,R=y;continue}if(y!==R)continue;let h=Lt(m,E,d);(h<0||h===0&&mt(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=Lt(R,E,d);(e==="MAX"&&m>0||e==="MIN"&&m<0)&&(E=R)}return E}let c=s?p:p.map(Number);switch(e){case"SUM":return c.reduce((f,E)=>f+E,0);case"AVG":return c.length===0?0:c.reduce((f,E)=>f+E,0)/c.length;case"MEDIAN":{if(c.length===0)return"";let f=[...c].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(c.length===0||f&&c.length<2)return"";let E=c[0],R=0,m=0,y=0;for(let g of c){let S=g-E;R++;let O=S-m;m+=O/R,y+=O*(S-m)}let h=Math.max(0,y/(f?R-1:R));return e==="STDDEV_POP"||e==="STDDEV_SAMP"?Math.sqrt(h):h}}}function em(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 $i(e,t,r){if(e.type==="NUMBER")return e.value;if(e.type==="AGG_REF")return Number(Ua(e.func,e.distinct,e.arg,e.separator,t,r));let n=$i(e.left,t,r),i=$i(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 Tr(e){return vr(e)}function Ac(e,t){if(e.type==="FIELD_REF")return t?.(em(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=>Ac(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 tm(e,t,r,n){return t===null?e:e.filter(i=>X(t,i,r,void 0,n))}function rm(e,t,r,n,i){if(e.length===0)return e;let o=nm(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 nm(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(lm(t,a,o))}function ka(e,t,r,n,i,o){return t.length===0?e:Sc(e,t,r,n,i,o).rows.map(a=>a.row)}function Sc(e,t,r,n,i,o){let a=t.map(({key:p})=>{if(p.type==="ARITH_KEY")return{semantics:F("number")};if(p.type==="FUNC_KEY")return{semantics:F(Tc.has(p.expr.func)?"number":"string")};if(p.type==="GROUPING_KEY")return{semantics:F("number")};let u=i?.get(p.name);if(u)return{semantics:u};let d=r?.get(p.name);return d?{semantics:{fieldType:"MULTI_SELECT",compareMode:"option",inSubtable:!1,requiresCollectionOperators:!1,optionOrder:d}}:{semantics:F(n?.get(p.name)??"string")}}),s=e.map(p=>({row:p,keys:t.map(({key:u},d)=>({s:am(u,p,o)}))})),l=(p,u)=>im(p,u,t,a);return s.sort(l),{rows:s,compare:l}}function im(e,t,r,n){for(let i=0;i<r.length;i++){let o=om(e.keys[i],t.keys[i],n[i]);if(o!==0)return r[i].direction==="ASC"?o:-o}return 0}function om(e,t,r){return Lt(e.s,t.s,r.semantics)}var Tc=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function am(e,t,r){switch(e.type){case"FIELD_NAME":return r?.(e.name,t)??t[e.name]??"";case"ARITH_KEY":return String(re(e.expr,t));case"FUNC_KEY":return ne(e.expr,t);case"GROUPING_KEY":return fr(e.ref,t)}}function Ma(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=>Ze(l,a.field));break;case"LITERAL_COL":i.set(s,()=>a.value);break;case"AGGREGATE":{let l=he(a.func,a.distinct,a.arg);i.set(s,p=>p[s]??p[l]??"0");break}case"ARITH_AGG_COL":{let l=Tr(a.expr);i.set(s,p=>p[s]??p[l]??"0");break}case"WINDOW_COL":i.set(s,l=>l[s]??"");break;case"ARITH_COL":i.set(s,l=>String(re(a.expr,l)));break;case"STRFUNC_COL":{let l=At(a.expr);i.set(s,p=>En(a.expr)?p[s]??p[l]??ne(a.expr,p,r,n):ne(a.expr,p,r,n));break}case"CASE_COL":i.set(s,l=>Ne(a.expr,l,r,n));break;case"SCALAR_VALUE_COL":{let l=He(a.expr);i.set(s,p=>gt(a.expr)?p[s]??p[l]??"":String(se(a.expr,p,r,n)));break}case"SCALAR_SUBQUERY_COL":i.set(s,()=>t?.get(o)??"");break;case"GROUPING_COL":i.set(s,l=>fr(a.ref,l));break;case"VARIABLE_COL":break}}return(o,a)=>i.get(o)?.(a)}function xa(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 p=JSON.stringify(a.partitionBy.map(d=>sm(l,d))),u=s.get(p);u?u.push(l):s.set(p,[l])}for(let l of s.values()){let p=Sc(l,a.orderBy,r,n,i),u=p.rows,d=1,c=1;for(let f=0;f<u.length;f++){f>0&&p.compare(u[f-1],u[f])!==0&&(d=f+1,c++);let E=a.func==="ROW_NUMBER"?f+1:a.func==="RANK"?d:c;u[f].row[a.alias]=String(E)}}}return e}function sm(e,t){let r=t.tableAlias?`${t.tableAlias}.${t.field}`:t.field;return Ze(e,r)}function Wi(e,t,r){let n=r??0;return t===null?e.slice(n):e.slice(n,n+t)}function Gi(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 Ze(t,e.field);case"LITERAL_COL":return e.value;case"AGGREGATE":{let i=he(e.func,e.distinct,e.arg);return t[e.alias??i]??t[i]??"0"}case"ARITH_AGG_COL":{let i=e.alias??Tr(e.expr);return t[i]??"0"}case"ARITH_COL":return String(re(e.expr,t));case"CASE_COL":return Ne(e.expr,t,n.resolveFieldType,n.resolveFieldSemantics);case"GROUPING_COL":return fr(e.ref,t);case"STRFUNC_COL":{let i=At(e.expr);return En(e.expr)?t[e.alias??i]??t[i]??ne(e.expr,t,n.resolveFieldType,n.resolveFieldSemantics):ne(e.expr,t,n.resolveFieldType,n.resolveFieldSemantics)}case"SCALAR_VALUE_COL":{let i=He(e.expr);return gt(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 lm(e,t,r={}){return e.map((n,i)=>{let o=Gi(n,t,i,r);return typeof o=="string"?o:o.entries.map(([,a])=>a)})}function Hi(e,t,r,n,i,o,a){if(t.length===1&&t[0].type==="WILDCARD"){let c=e.map(E=>{let R=mc(Ec(E),a),m=Gi(t[0],E,0,{wildcardKeys:Object.keys(R)}),y={};if(typeof m!="string")for(let[h,g]of m.entries)g!==null&&(y[h]=g);return y}),f=c.length>0?Object.keys(c[0]):[...i??[]];return{rows:c,columns:f}}let s=pm(t),l=t.some(c=>c.type==="WILDCARD"||c.type==="PARENT_WILDCARD"),p=l?null:um(t,s),u=p??[];return l&&e.length===0?{rows:[],columns:cm(t,s)}:{rows:e.map((c,f)=>{let E={},R={scalarCache:r,resolveFieldType:n,resolveFieldSemantics:o,wildcardKeys:Object.keys(mc(Ec(c),a)),parentWildcardKeys:Object.keys(c).filter(m=>m.startsWith("_p.")).sort()};for(let[m,y]of t.entries()){let h=Gi(y,c,m,R);switch(y.type){case"VARIABLE_COL":break;case"WILDCARD":if(typeof h!="string")for(let[g,S]of h.entries)S!==null&&(E[g]=S);break;case"PARENT_WILDCARD":{if(typeof h!="string")for(let[g,S]of h.entries)S!==null&&(E[g]=S),f===0&&u.push(g);break}case"FIELD":{let g=p?.[m]??y.alias??s.get(m)??y.field;E[g]=h,p===null&&f===0&&u.push(g);break}case"LITERAL_COL":{let g=p?.[m]??y.alias??`'${y.value}'`;E[g]=h,p===null&&f===0&&u.push(g);break}case"AGGREGATE":{let g=he(y.func,y.distinct,y.arg),S=p?.[m]??y.alias??g;E[S]=h,p===null&&f===0&&u.push(S);break}case"ARITH_AGG_COL":{let g=p?.[m]??y.alias??Tr(y.expr);E[g]=h,p===null&&f===0&&u.push(g);break}case"ARITH_COL":{let g=p?.[m]??y.alias??Fa(y.expr);E[g]=h,p===null&&f===0&&u.push(g);break}case"CASE_COL":{let g=p?.[m]??y.alias??"case";E[g]=h,p===null&&f===0&&u.push(g);break}case"GROUPING_COL":{let g=p?.[m]??y.alias??`GROUPING(${y.ref.field.tableAlias?`${y.ref.field.tableAlias}.`:""}${y.ref.field.field})`;E[g]=h,p===null&&f===0&&u.push(g);break}case"STRFUNC_COL":{let g=p?.[m]??y.alias??At(y.expr);E[g]=h,p===null&&f===0&&u.push(g);break}case"SCALAR_VALUE_COL":{let g=p?.[m]??y.alias??He(y.expr);E[g]=h,p===null&&f===0&&u.push(g);break}case"SCALAR_SUBQUERY_COL":{let g=p?.[m]??y.alias??"(subquery)";E[g]=h,p===null&&f===0&&u.push(g);break}case"WINDOW_COL":{let g=p?.[m]??y.alias;E[g]=h,p===null&&f===0&&u.push(g);break}}}return E}),columns:u}}function um(e,t){return e.map((r,n)=>Ic(r,n,t))}function cm(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=Ic(o,i,t);n.has(a)||(n.add(a),r.push(a))}return r}function Ic(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??he(e.func,e.distinct,e.arg);case"ARITH_AGG_COL":return e.alias??Tr(e.expr);case"ARITH_COL":return e.alias??Fa(e.expr);case"CASE_COL":return e.alias??"case";case"STRFUNC_COL":return e.alias??At(e.expr);case"SCALAR_VALUE_COL":return e.alias??He(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 pm(e){let t=new Map;for(let n of e){if(n.type!=="FIELD"||n.alias)continue;let i=fc(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=fc(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 fc(e){if(e.startsWith("_p."))return e;let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function Ec(e){let t={};for(let[r,n]of Object.entries(e))r.startsWith("_p.")||(t[r]=n);return t}function Fa(e){let t=r=>r.type==="FIELD_REF"?r.field:r.type==="NUMBER"?G(r):r.type==="STRING_FUNC"?At(r):`(${t(r.left)}${r.op}${t(r.right)})`;return e.type==="ARITH"?`${t(e.left)}${e.op}${t(e.right)}`:t(e)}function At(e){let t=e.args.map(r=>r.type==="AGG_REF"||r.type==="AGG_ARITH"?Tr(r):He(r));return`${e.func}(${t.join(",")})`}function He(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 At(e);case"CASE_WHEN":return"case";case"SCALAR_ARITH":return`${He(e.left)}${e.op}${He(e.right)}`;case"CONCAT_OP":return`${He(e.left)}||${He(e.right)}`}}function dm(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:gt(e)}function gt(e){return e.type==="STRING_FUNC"?En(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?gt(e.left)||gt(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>Rc(t.result))||e.elseResult!==null&&Rc(e.elseResult):!1}function Rc(e){return e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?!1:gt(e)}function En(e){return e.args.some(t=>dm(t))}function fm(e,t,r){if(e.type==="AGG_REF"){let n=Ua(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=$i(e,t,r);return{type:"NUMBER",value:n,raw:String(n)}}return e.type==="STRING_FUNC"?Ka(e,t,r):Vi(e,t,r)}function Vi(e,t,r){return e.type==="STRING_FUNC"?Ka(e,t,r):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?{...e,left:Vi(e.left,t,r),right:Vi(e.right,t,r)}:e}function Ka(e,t,r){return{type:"STRING_FUNC",func:e.func,args:e.args.map(n=>fm(n,t,r))}}function mc(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 yc(e,t){if(e!==void 0)return t?e.flatMap(r=>[`${t}.${r}`,r]):[...e]}function va(e,t,r){if(!(e===void 0&&t===void 0&&r.length===0))return[...new Set([...e??[],...t??[],...Object.keys(r[0]??{})])]}function Em(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,F("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,F("number")):r.func==="GROUP_CONCAT"&&t.set(r.alias,F("string")):r.type==="LITERAL_COL"||r.type==="CASE_COL"||r.type==="SCALAR_SUBQUERY_COL"||r.type==="SCALAR_VALUE_COL"?t.set(r.alias,F("string")):r.type==="STRFUNC_COL"&&t.set(r.alias,F(Tc.has(r.expr.func)?"number":"string")));return t}function Ba(e){let{stmt:t,tables:r,scalarCache:n,optionOrders:i,sortKinds:o,orderSemantics:a,fieldTypeResolver:s,fieldSemanticsResolver:l,havingFieldTypeResolver:p,havingFieldSemanticsResolver:u,aggregateSortKindResolver:d,appliedKlikes:c,sourceColumns:f,tableColumns:E,hiddenQualifiedAliases:R,resolvedGroupingSpec:m,plainGroupByPlan:y}=e,h=Em(t.columns);for(let[L,I]of a??[])h.set(L,I);let g=[],S=t.from.alias;g=(r.get(S)??r.get(null)??[]).map(L=>nt(L,S));let P=va(yc(E?.get(S),S),void 0,g);for(let L of t.joins){let I=L.table.alias,k=(r.get(I)??[]).map(b=>nt(b,I)),A=va(yc(E?.get(I),I),void 0,k);g=zR(g,k,L,{leftColumns:P,rightColumns:A}),P=va(P,A,g)}let _=e.residualWhere!==void 0?e.residualWhere:t.where;g=XR(g,_,s,c,l);let N=Z(t);if(N.type==="GROUPING_SETS"){if(!m)throw new Error("internal error: B65 grouping sets require a metadata-resolved grouping spec.");g=QR(g,m,t.columns,d,{maxGeneratedRows:5e4})}else(N.type==="PLAIN"||hc(t.columns))&&(g=JR(g,N.type==="PLAIN"?N.allItems:[],t.columns,d,N.type==="PLAIN"?y:void 0,{scalarCache:n,resolveFieldType:s,resolveFieldSemantics:l}));return g=tm(g,t.having,p,u),g=xa(g,t.columns,i,o,h),t.distinct&&(g=rm(g,t.columns,n,s,l)),g=ka(g,t.orderBy,i,o,h,Ma(t.columns,n,s,l)),g=Wi(g,t.limit,t.offset),Hi(g,t.columns,n,s,f,l,R)}function wc(e,t){let r=[];for(let n of e){let i=$a(n.$id?.value),o=Rm(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[p,u]of Object.entries(n)){if(p===t)continue;let d=$a(u?.value);l[`_p.${p}`]={value:d}}for(let[p,u]of Object.entries(s.value??{}))l[p]={value:$a(u?.value)};r.push(l)}}return r}function Rm(e){return Array.isArray(e)?e.filter(t=>!!t&&typeof t=="object"):[]}function $a(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 bc(e){return["$id",...new Set([...e.topLevel.map(t=>t.code).filter(t=>t!=="$id"&&t!=="$revision"),...e.subtables.keys()])]}function Pc(e,t){let r=Rn(e);for(let[n,i]of Object.entries(t))r[n]=Rn(i);return r}function Nc(e){let t=[...e.preErrors.map(i=>Ga(i)),...e.postImageErrors.map(i=>Ga(i,i.$err_subtable!=="")),...e.checkErrors.map(i=>Ga(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]=Rn(e.normalizedPostImage[i])}return{errors:t,invalidRows:r.size,invalidRowNumbers:r,writeRecord:n}}function Ga(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 Rn(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(Rn(a,t));return o}let i={};t.set(r,i);for(let[o,a]of Object.entries(e))i[o]=Rn(a,t);return i}function Yi(e){let{select:t,selectMode:r,capability:n,context:i,serializedWholeWhere:o,relativeFunctionNames:a}=e;if(t.where===null||t.from.appId<=0||t.from.cteName!==null||t.from.subtableCode||t.joins.length>0||!i.allowFullScanExact||t.orderMode==="KINTONE_NATIVE")return null;let s=t.orderMode==="CANONICAL"&&t.orderBy.length>0;if(r!=="FULL_SCAN"&&!s||n.capability!=="EXACT_PUSHDOWN")return null;let l=Mt(t.where);if(l.length===0||!hm(l,a)||o===null||!Cc(o,l))return null;let p={prefilterWhere:t.where,residualWhere:null,exactRelativeLeaves:ym(t.where),relativeFunctionNames:new Set(l),appliedKlikes:new Set,capability:n.capability,reasons:n.reasons},u={allowForm:"FULL_SCAN_EXACT",clientWhereEvaluation:!1,serializedWholeWhere:o,prefilterPlan:p};return mm(u,e,l),u}function mm(e,t,r){if(e.allowForm!=="FULL_SCAN_EXACT")throw new Error("FULL_SCAN_EXACT invariant: allowForm");if(e.clientWhereEvaluation!==!1)throw new Error("FULL_SCAN_EXACT invariant: clientWhereEvaluation");if(t.capability.capability!=="EXACT_PUSHDOWN")throw new Error("FULL_SCAN_EXACT invariant: capability");if(t.select.where===null||e.prefilterPlan.prefilterWhere!==t.select.where)throw new Error("FULL_SCAN_EXACT invariant: whole WHERE identity");if(e.prefilterPlan.residualWhere!==null)throw new Error("FULL_SCAN_EXACT invariant: residualWhere");if(e.prefilterPlan.capability!=="EXACT_PUSHDOWN")throw new Error("FULL_SCAN_EXACT invariant: transport capability");if(!Cc(e.serializedWholeWhere,r))throw new Error("FULL_SCAN_EXACT invariant: relative occurrence serialization")}function Mt(e){let t=[],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==="KINTONE_FUNC"&&typeof i.name=="string"&&Ue(i.name)){t.push(i.name);return}Object.values(i).forEach(r)}};return r(e),t}function ym(e){let t=[],r=n=>{switch(n.type){case"BINARY":(n.right.type==="KINTONE_FUNC"&&Ue(n.right.name)||n.right.type==="IN_LIST"&&n.right.values.length===1&&n.right.values[0].type==="KINTONE_FUNC"&&Ue(n.right.values[0].name))&&t.push(n);return;case"LOGICAL":r(n.left),r(n.right);return;case"NOT":case"GROUP":r(n.expr);return;case"EXISTS":case"NULL_CHECK":case"BOOLEAN":return}};return r(e),t}function hm(e,t){return e.length===t.length&&e.every((r,n)=>r===t[n])}function Cc(e,t){let r=new Map;for(let n of t){if(!Ue(n))return!1;r.set(n,(r.get(n)??0)+1)}for(let[n,i]of r)if((e.match(new RegExp(`\\b${n}\\s*\\(`,"g"))?.length??0)<i)return!1;return!0}function Lc(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"&&Ue(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 Wa(e){return Lc(e,!0)}function ji(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 Me(e,t,r,n,i=!0,o=!0,a=n){let s=Wa(e.where);s.length>0&&r.push({kind:n?"FORBIDDEN":"SELECT",source:e,where:e.where,functionNames:s,path:t,allowPhase2Prefilter:i,allowFullScanExact:o,relativeFunctionOccurrences:Mt(e.where)}),ji(e,e).forEach((l,p)=>Me(l,`${t}.select-source[${p}]`,r,a,a?!1:i,a?!1:o,a))}function mn(e,t,r,n,i=!0){e.left.type==="UNION"?mn(e.left,`${t}.left`,r,n,i):Me(e.left,`${t}.left`,r,n,!0,i),Me(e.right,`${t}.right`,r,n,!0,i)}function Oc(e,t,r,n){if(!n&&ft(e)){Me(Et(e),`${t}.inlined`,r,!1,!0,!0);return}e.ctes.forEach((i,o)=>{i.query.type==="SELECT"?Me(i.query,`${t}.cte[${o}]`,r,n,!1,!n,!0):i.query.type==="UNION"&&mn(i.query,`${t}.cte[${o}]`,r,!0,!1)}),e.query.type==="SELECT"?Me(e.query,`${t}.main`,r,n,!1,!n,!0):mn(e.query,`${t}.main`,r,!0,!1)}function _c(e,t,r,n=!1){switch(e.type){case"SELECT":Me(e,t,r,n);return;case"UNION":mn(e,t,r,n);return;case"WITH":Oc(e,t,r,n);return;case"CREATE_TEMP_TABLE":e.query.type==="WITH"?Oc(e.query,`${t}.query`,r,!1):e.query.type==="UNION"?mn(e.query,`${t}.query`,r,!0,!1):Me(e.query,`${t}.query`,r,!1,!1,!0,!0);return;case"EXPLAIN":_c(e.query,`${t}.query`,r,n);return;case"VALIDATE":case"REORDER":{let i=Wa(e.where);i.length>0&&r.push({kind:"FORBIDDEN",source:e,where:e.where,functionNames:i,path:t,allowFullScanExact:!1,relativeFunctionOccurrences:Mt(e.where)}),ji(e,e).forEach((o,a)=>Me(o,`${t}.select-source[${a}]`,r,!0,!0,!1));return}case"UPDATE":case"DELETE":{let i=Wa(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,allowFullScanExact:!1,relativeFunctionOccurrences:Mt(e.where)})}if(e.type==="UPDATE"&&e.applyBlocks?.length){let o=Lc(e.applyBlocks,!0);o.length>0&&r.push({kind:"FORBIDDEN",source:e,where:null,functionNames:o,path:`${t}.apply`,allowFullScanExact:!1,relativeFunctionOccurrences:[]})}ji(e,e).forEach((o,a)=>Me(o,`${t}.select-source[${a}]`,r,n,!1,!1));return}default:ji(e,e).forEach((i,o)=>Me(i,`${t}.select-source[${o}]`,r,n,!1,!1))}}function qi(e,t){let r=new Map;for(let n of t){if(!Ue(n))return!1;r.set(n,(r.get(n)??0)+1)}for(let[n,i]of r)if((e.match(new RegExp(`\\b${n}\\s*\\(`,"g"))?.length??0)<i)return!1;return!0}function Ha(e,t){return t.eligible===!0&&be(e)==="FULL_SCAN"&&e.orderMode!=="KINTONE_NATIVE"&&e.from.cteName===null&&!e.from.subtableCode&&e.joins.length===0}function gm(e){return{kind:e.kind,source:e.source,functionNames:e.functionNames,path:e.path,clientWhereEvaluation:!0,allowed:!1}}function Am(e,t){let r=(t?.reasons??[]).filter(n=>n.functionName===e).map(n=>n.code).filter(n=>n.startsWith("WHERE_RELATIVE_DATE_")||n.startsWith("WHERE_KINTONE_FUNCTION_"));return Zt(e)?(r.some(n=>n!==Xe)||r.unshift("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED"),r.includes(Xe)||r.push(Xe)):r.includes(Nt)||r.push(Nt),[...new Set(r)]}function Va(e,t){let r=e.functionNames[0],n=Zt(r)?Xe:Nt,i=Am(r,t);return{functionName:r,path:e.path,code:i.find(o=>o!==n)??n,reasonCodes:i}}async function Dc(e,t){let r=[];_c(e,"statement",r);let n=[];for(let i of r){if(i.kind==="FORBIDDEN"){let u=gm(i);return n.push(u),{hasRelativeDate:i.functionNames.some(z),hasServerOnlyWhereFunction:!0,nodes:n,allowed:!1,rejection:Va(i)}}if(i.kind==="SELECT"){let u=i.source,d=u.from.cteName===null&&!u.from.subtableCode&&u.joins.length===0,c=be(u),f=await t.select(u),E="";try{E=i.where===null?"":$(i.where)}catch{E=""}let R=d&&c==="SIMPLE"&&(u.orderBy.length===0||u.orderMode==="KINTONE_NATIVE")&&f.capability==="EXACT_PUSHDOWN"&&qi(E,i.relativeFunctionOccurrences),m,y;if(!R&&i.allowPhase2Prefilter!==!1&&f.capability==="SUPERSET_PREFILTER"&&t.prefilterDecomposition){let S=await t.prefilterDecomposition(u);S?.eligible===!0&&Ha(u,S)&&(m=S.plan,y=!0,R=!0)}let h;!R&&f.capability==="EXACT_PUSHDOWN"&&(h=Yi({select:u,selectMode:c,capability:f,context:{allowFullScanExact:i.allowFullScanExact},serializedWholeWhere:E||null,relativeFunctionNames:i.relativeFunctionOccurrences})??void 0,h&&(m=h.prefilterPlan,R=!0));let g={kind:i.kind,source:i.source,functionNames:i.functionNames,path:i.path,selectMode:c,capability:f,restQuery:E,...m?{prefilterPlan:m,phase2PrefilterEligible:y}:{},...h?{fullScanExactPlan:h,allowForm:h.allowForm}:{},clientWhereEvaluation:!R,allowed:R};if(n.push(g),!R)return{hasRelativeDate:r.some(S=>S.functionNames.some(z)),hasServerOnlyWhereFunction:!0,nodes:n,allowed:!1,rejection:Va(i,f)};continue}let o=i.source,a=await t.dml(o),s="";try{s=i.where===null?"":$(i.where)}catch{s=""}let l=a.capability==="EXACT_PUSHDOWN"&&qi(s,i.relativeFunctionOccurrences),p={kind:i.kind,source:i.source,functionNames:i.functionNames,path:i.path,capability:a,restQuery:s,clientWhereEvaluation:!l,allowed:l};if(n.push(p),!l)return{hasRelativeDate:r.some(u=>u.functionNames.some(z)),hasServerOnlyWhereFunction:!0,nodes:n,allowed:!1,rejection:Va(i,a)}}return{hasRelativeDate:r.some(i=>i.functionNames.some(z)),hasServerOnlyWhereFunction:r.length>0,nodes:n,allowed:!0}}function vc(e){if(!e.allowed&&e.rejection){let t=Zt(e.rejection.functionName)?Xe:Nt,r=e.rejection.reasonCodes.filter(n=>n!==t);throw new Error(`${e.rejection.functionName}: ${t}${r.length>0?` (reason=${r.join(", ")})`:""} (path=${e.rejection.path})`)}}function Ya(e,t,r={}){let n=Le(e.where,t),i=(g,S="INELIGIBLE")=>({eligible:!1,disposition:S,reasonCodes:g,capability:n.capability,reasons:n.reasons});if(e.where===null)return i(["NO_WHERE"]);if(e.from.subtableCode)return i(["SUBTABLE_UNSUPPORTED"]);if(e.joins.length>0)return i(["JOIN_UNSUPPORTED"]);if(e.from.cteName!==null||e.from.appId<=0)return i(["NOT_DIRECT_PHYSICAL_APP"]);let o=hn(e.where);if(o.length===0)return i(["NO_RELATIVE_DATE"]);let a=Sm(e.where,t);if(!a.ok)return i(a.reasonCodes);if(!Tm(o,a.leaves))return i(["RELATIVE_DATE_LEAF_COUNT_MISMATCH"]);if(n.capability==="EXACT_PUSHDOWN")return i(["DEFER_TO_PHASE1"],"DEFER_PHASE1");if(n.capability!=="SUPERSET_PREFILTER")return i(["CAPABILITY_NOT_SUPERSET_PREFILTER"]);let s=wm(e.where,t),l=Gr(e.where,{tableAlias:e.from.alias??void 0,allowUnqualifiedFields:!0,allowKlike:!0,fieldTypes:s.fieldTypes,fieldOptions:s.fieldOptions}),p=r.serialize??$,u=r.containsFunctions??qi,d=[];for(let g of a.leaves){let S=Qi(g);if(S===null)return i(["RELATIVE_DATE_LEAF_COUNT_MISMATCH"]);let O;try{O=p(g)}catch{return i(["PREFILTER_SERIALIZATION_FAILED"])}if(!u(O,[S]))return i(["PREFILTER_FUNCTION_MISSING"]);d.push(g)}let c=Im(l.condition),f=new Set(d),E=Xi(e.where,f,c);if(E===null)return i(["RELATIVE_DATE_LEAF_COUNT_MISMATCH"]);let R;try{R=p(E)}catch{return i(["PREFILTER_SERIALIZATION_FAILED"])}let m=d.map(g=>Qi(g));if(!u(R,[...new Set(m)])||!bm(R,m))return i(["PREFILTER_FUNCTION_MISSING"]);let y=r.rewriteResidual?r.rewriteResidual(e.where,f):Ji(e.where,f);if(y!==null&&hn(y).length>0)return i(["RESIDUAL_RELATIVE_DATE_REMAINED"]);if(y===null)return i(["DEFER_TO_PHASE1"],"DEFER_PHASE1");let h=new Set;for(let g of m)h.add(g);return{eligible:!0,plan:{prefilterWhere:E,residualWhere:y,exactRelativeLeaves:d,relativeFunctionNames:h,appliedKlikes:l.appliedKlikes,capability:n.capability,reasons:n.reasons}}}function Sm(e,t){let r=[],n=null,i=o=>{if(n===null)switch(o.type){case"GROUP":i(o.expr);return;case"LOGICAL":if(o.op==="AND"){i(o.left),i(o.right);return}hn(o).length>0&&(n="RELATIVE_DATE_CONTEXT_UNSUPPORTED");return;case"NOT":hn(o).length>0&&(n="RELATIVE_DATE_CONTEXT_UNSUPPORTED");return;case"BINARY":{if(Qi(o)===null)return;if(Le(o,t).capability!=="EXACT_PUSHDOWN"){n="RELATIVE_DATE_LEAF_NOT_EXACT";return}r.push(o);return}case"EXISTS":hn(o).length>0&&(n="RELATIVE_DATE_CONTEXT_UNSUPPORTED");return;case"NULL_CHECK":case"BOOLEAN":return}};return i(e),n===null?{ok:!0,leaves:r}:{ok:!1,reasonCodes:[n]}}function Qi(e){return e.right.type==="KINTONE_FUNC"&&Ue(e.right.name)?e.right.name:e.right.type==="IN_LIST"&&e.right.values.length===1&&e.right.values[0].type==="KINTONE_FUNC"&&Ue(e.right.values[0].name)?e.right.values[0].name:null}function hn(e){let t=[],r=n=>{if(n.type==="BINARY"&&Qi(n)!==null){t.push(n);return}switch(n.type){case"LOGICAL":r(n.left),r(n.right);return;case"NOT":case"GROUP":r(n.expr);return;case"EXISTS":n.query.where!==null&&r(n.query.where);return;case"BINARY":case"NULL_CHECK":case"BOOLEAN":return}};return r(e),t}function Tm(e,t){if(e.length!==t.length)return!1;let r=new Set(t);for(let n of e)if(!r.delete(n))return!1;return r.size===0}function Im(e){let t=new Set,r=n=>{switch(n.type){case"BINARY":t.add(n);return;case"LOGICAL":r(n.left),r(n.right);return;case"NOT":case"GROUP":r(n.expr);return;case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}};return e!==null&&r(e),t}function Xi(e,t,r){switch(e.type){case"BINARY":return t.has(e)||r.has(e)?e:null;case"LOGICAL":if(e.op!=="AND")return null;{let n=Xi(e.left,t,r),i=Xi(e.right,t,r);return n!==null&&i!==null?{...e,left:n,right:i}:n??i}case"GROUP":{let n=Xi(e.expr,t,r);return n===null?null:{...e,expr:n}}case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return null}}var yn={type:"BOOLEAN",value:!0};function Ji(e,t){if(e.type==="BINARY"&&t.has(e))return yn;switch(e.type){case"LOGICAL":{if(e.op!=="AND")return e;let r=Ji(e.left,t)??yn,n=Ji(e.right,t)??yn;return zi(r)?zi(n)?null:n:zi(n)?r:r===e.left&&n===e.right?e:{...e,left:r,right:n}}case"GROUP":{let r=Ji(e.expr,t)??yn;return zi(r)?yn:r===e.expr?e:{...e,expr:r}}case"BINARY":case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return e}}function zi(e){return e.type==="BOOLEAN"&&e.value}function wm(e,t){let r=new Map,n=a=>{if(a===null||typeof a!="object")return;if(Array.isArray(a)){a.forEach(n);return}let s=a;if(s.type!=="SELECT"){if(s.type==="FIELD"&&typeof s.field=="string"&&typeof s.tableAlias<"u"){r.set(s.field,a);return}Object.values(s).forEach(n)}};n(e);let i=new Map,o=new Map;for(let[a,s]of r){let l=t(s);l&&(i.set(a,l.fieldType),l.optionOrder&&o.set(a,new Set(l.optionOrder.keys())))}return{fieldTypes:i,fieldOptions:o}}function bm(e,t){let r=new Map;for(let n of t){if(!_o.has(n))return!1;r.set(n,(r.get(n)??0)+1)}for(let[n,i]of r)if((e.match(new RegExp(`\\b${n}\\s*\\(`,"g"))?.length??0)<i)return!1;return!0}var M=class extends Error{constructor(t){super(`ImportSourceError: ${t}`),this.name="ImportSourceError"}};function Uc(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 Zi(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 Pm(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 Nm(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 p=e[a];if(i){if(p==='"'){if(e[a+1]==='"'){n+='"',a+=2;continue}i=!1,o=!0,a++;continue}n+=p,a++;continue}if(o&&p!==","&&p!=="\r"&&p!==`
|
|
4
4
|
`)throw new M(`unexpected character after closing quote at offset ${a}.`);if(p==='"'){if(n.length!==0)throw new M(`quote in unquoted cell at offset ${a}.`);i=!0,a++;continue}if(p===","){s(),a++;continue}if(p==="\r"||p===`
|
|
5
5
|
`){p==="\r"&&e[a+1]===`
|
|
6
|
-
`&&a++,l(),a++;continue}n+=p,a++}if(i)throw new M("unterminated quoted cell.");return(n.length>0||r.length>0||o)&&l(),t}function
|
|
6
|
+
`&&a++,l(),a++;continue}n+=p,a++}if(i)throw new M("unterminated quoted cell.");return(n.length>0||r.length>0||o)&&l(),t}function Cm(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 eo(e,t){let r=Nm(Pm(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}`)),Cm(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 Om=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),Lm=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),gn=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 kc(e,t,r){if(!Om.has(t??""))return e;if(e==="")return[];let n=e.split(/\r\n|\n/);if(n.some(i=>i===""))throw new gn;return Lm.has(t??"")?n.map(i=>({code:i})):n}function it(e,t,r,n){throw new M(`JSON ${e} (offset=${t}, line=${r}, column=${n}).`)}function Mc(e){try{return new TextDecoder("utf-8",{fatal:!0}).decode(e)}catch{throw new M("JSON source is not valid UTF-8.")}}function xc(e){let t=[],r=0,n=1,i=1,o=()=>{let s=e[r++];return s===`
|
|
7
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 c="",f=!1;for(;r<e.length;){let E=o();if(E==='"'){f=!0;break}if(E.charCodeAt(0)<32&&
|
|
9
|
-
`,r:"\r",t:" "};if(R in m){c+=m[R];continue}R!=="u"&&nt(`has invalid escape \\${R}`,r-2,n,Math.max(1,i-2));let y=e.slice(r,r+4);/^[0-9a-fA-F]{4}$/.test(y)||nt("has invalid unicode escape",r,n,i);for(let h=0;h<4;h++)o();let g=Number.parseInt(y,16);if(g>=55296&&g<=56319){(e.slice(r,r+2)!=="\\u"||!/^[0-9a-fA-F]{4}$/.test(e.slice(r+2,r+6)))&&nt("has an unpaired high surrogate",r,n,i),o(),o();let h=e.slice(r,r+4);for(let O=0;O<4;O++)o();let S=Number.parseInt(h,16);(S<56320||S>57343)&&nt("has an invalid surrogate pair",r-4,n,Math.max(1,i-4)),c+=String.fromCodePoint(65536+(g-55296<<10)+S-56320)}else g>=56320&&g<=57343?nt("has an unpaired low surrogate",r-4,n,Math.max(1,i-4)):c+=String.fromCharCode(g)}f||nt("string is unterminated",l.offset,l.line,l.column),t.push({kind:"string",value:c,...l});continue}let p=e.slice(r),u=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/.exec(p)?.[0];if(u){for(let c=0;c<u.length;c++)o();t.push({kind:"number",lexeme:u,...l});continue}let d=/^(true|false|null)/.exec(p)?.[0];if(d){for(let c=0;c<d.length;c++)o();t.push({kind:"literal",value:d==="true"?!0:d==="false"?!1:null,...l});continue}nt(`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 Wi(e){return e.kind==="eof"?"end of input":e.kind==="punct"?e.value:e.kind}function Hi(e){if(e.byteLength===0)throw new M("JSON source is empty.");let t=uc(lc(e)),r=0,n=(p,u=t[r])=>{throw new M(`JSON ${p} (offset=${u.offset}, line=${u.line}, column=${u.column}).`)},i=(p,u)=>p.kind==="punct"&&p.value===u,o=p=>{let u=t[r];(u.kind!=="punct"||u.value!==p)&&n(`expected ${p}; found ${Wi(u)}`,u),r++},a=()=>{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 u=new Map;if(i(t[r],"}"))return r++,u;for(;;){let d=t[r++];if(d.kind!=="string")return n(`object key must be a string; found ${Wi(d)}`,d);let c=d.value;u.has(c)&&n(`duplicate key ${JSON.stringify(c)}`,d),o(":"),u.set(c,a());let f=t[r];if(i(f,"}")){r++;break}o(",")}return u}if(p.kind==="punct"&&p.value==="["){let u=[];if(i(t[r],"]"))return r++,u;for(;;){u.push(a());let d=t[r];if(i(d,"]")){r++;break}o(",")}return u}return n(`expected a value; found ${Wi(p)}`,p)},s=a();t[r].kind!=="eof"&&n(`has trailing data; found ${Wi(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((p,u)=>{if(!(p instanceof Map))throw new M(`JSON record ${u+1} must be an object.`)}),l}var $R=new Set(["CHECK_BOX","MULTI_SELECT"]),cc=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function Ve(e,t,r){throw new M(`JSON field validation failed (row=${e}, field=${t}): ${r}`)}function GR(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof Map)&&e.kind==="number"}function VR(e,t,r){if(e===null)return"";if(typeof e=="string")return e;if(typeof e=="boolean"&&Ve(r,t.code,"boolean is not accepted."),GR(e)){t.fieldType==="NUMBER"&&Ve(r,t.code,"precision target requires a JSON string."),(!/^-?(?:0|[1-9]\d*)$/.test(e.lexeme)||e.lexeme==="-0")&&Ve(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)||Ve(r,t.code,`JSON number ${e.lexeme} is outside the safe integer range.`),String(i)}e instanceof Map&&Ve(r,t.code,"object is not accepted for a flat field."),Array.isArray(e)||Ve(r,t.code,"unsupported value type."),!$R.has(t.fieldType)&&!cc.has(t.fieldType)&&Ve(r,t.code,"array is accepted only for multi-value fields.");let n=e.map(i=>(typeof i!="string"&&Ve(r,t.code,"array elements must be strings."),i));return new Set(n).size!==n.length&&Ve(r,t.code,"array elements must not contain duplicates."),cc.has(t.fieldType)?JSON.stringify(n.map(i=>({code:i}))):JSON.stringify(n)}function Ua(e,t,r,n){if(t.encoding&&t.encoding!=="utf8")throw new M("JSON source is UTF-8 only.");let i=Hi(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,p)=>{for(let c of l.keys())o.has(c)||Ve(p+1,c,"unknown key (not declared in INTO).");let u={},d=new Set;for(let c of r)l.has(c.code)&&(d.add(c.code),u[c.code]=VR(l.get(c.code),c,p+1));a.push(u),s.push(d)}),{rows:a,columns:r.map(l=>l.code),columnMeta:new Map(r.map(l=>[l.code,{fieldType:l.fieldType}])),importPresence:s}}function ka(e,t,r,n,i,o){let a=Vi(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((y,g)=>[y,g]));for(let y of n)if(!l.has(y))throw new M(`ERR_IMPORT_MISSING_COLUMN: required header "${y}" is missing.`);let p=new Map(i.map(y=>[y.code,y])),u=new Set(n);if(o&&u.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 d=[],c=[],f=y=>a.rows.filter(g=>g[y]!=="").length,E=y=>y.fieldType==="FILE"?"FILE attachment is outside flat IMPORT scope":y.inSubtable||y.fieldType==="SUBTABLE"?"subtable field is not writable in Phase 3":y.writable===!1?`non-writable ${y.fieldType} field`:`known export-only ${y.fieldType} field`;for(let[y,g]of a.columns.entries()){if(u.has(g)||g===o)continue;let h=p.get(g);if(h)d.push({column:g,reason:E(h),nonEmptyCells:f(y)});else if(e.ignoreUnknownColumns)c.push({column:g,reason:"unknown column ignored by explicit policy",nonEmptyCells:f(y)});else throw new M(`ERR_IMPORT_UNKNOWN_COLUMN: unknown CSV header "${g}".`)}for(let y of n){let g=p.get(y);if(!g)throw new Error(`ArgumentError: DML target field ${y} does not exist.`);if(g.inSubtable||g.writable===!1||g.fieldType==="FILE"||g.fieldType==="SUBTABLE")throw new Error(`ArgumentError: DML target field ${y} is not writable (${g.fieldType}).`)}let R=[];return{rows:a.rows.map(y=>{let g=[],h={};for(let S of n){let O=y[l.get(S)];try{h[S]=sc(O,p.get(S)?.fieldType,{cliKintone:!0})}catch(b){if(!(b instanceof pn))throw b;h[S]=O,g.push({field:S,code:b.code,message:b.message})}}return R.push(g),h}),columns:[...n],columnMeta:new Map(n.map(y=>[y,{fieldType:p.get(y)?.fieldType??"SINGLE_LINE_TEXT"}])),importRowErrors:R,...o?{recordNumberSourceValues:a.rows.map(y=>y[l.get(o)])}:{},importAudit:{mapping:"BY_NAME",writtenColumns:[...n],ignoredKnownColumns:d,ignoredUnknownColumns:c}}}return{rows:a.rows.map(l=>Object.fromEntries(a.columns.map((p,u)=>[p,l[u]]))),columns:a.columns,columnMeta:new Map(a.columns.map(l=>[l,{fieldType:"SINGLE_LINE_TEXT"}]))}}var dn=(e,t,r)=>{throw new M(`JSON subtable validation failed (parentRow=${e}, field=${t}): ${r}`)};function pc(e,t,r,n,i=n){if(t.encoding&&t.encoding!=="utf8")throw new M("JSON source is UTF-8 only.");let o=Hi(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,p)=>{let u=p+1;for(let E of l.keys())a.has(E)||dn(u,E,"unknown key (not declared in INTO).");let d=new Map,c=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&&dn(u,R,"object is not accepted for a top-level field."),d.set(R,m);continue}Array.isArray(m)||dn(u,R,"subtable value must be an array."),f.add(R);let y=new Set(E.children),g=m.map((h,S)=>{h instanceof Map||dn(u,R,`childRow=${S+1} must be an object.`);let O=h;for(let b of O.keys())y.has(b)||dn(u,b,`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:O}});c.set(R,g)}return{rowNumber:u,top:d,subtables:c,replacementTables:f}})}}function dc(e,t,r,n,i,o){let a=Vi(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((c,f)=>[c,f]));if(o&&!s.has(o))throw new M(`ERR_IMPORT_MISSING_COLUMN: required header "${o}" is missing.`);let l=r.filter(c=>c.kind==="FIELD"),p=r.filter(c=>c.kind==="SUBTABLE");for(let c of l)if(!s.has(c.field))throw new M(`ERR_IMPORT_MISSING_COLUMN: required header "${c.field}" is missing.`);for(let c of p){if(!c.rowIdSourceHeader||!s.has(c.rowIdSourceHeader))throw new M(`ERR_IMPORT_MISSING_COLUMN: row-ID header for ${c.subtableCode} is missing.`);for(let f of c.children)if(!s.has(f))throw new M(`ERR_IMPORT_MISSING_COLUMN: required child header "${f}" is missing.`)}let u=[],d;if(a.rows.forEach((c,f)=>{let E=f+2,R=c[0];if(R!==""&&R!=="*")throw new M(`ERR_IMPORT_MARKER: invalid marker ${JSON.stringify(R)} at source row ${E}.`);if(R==="*"){if(u.length>=i)throw new M(`source parent rows exceed maxRecords (${i}).`);d={rowNumber:u.length+1,markerRowNumber:E,top:new Map(l.map(m=>[m.field,c[s.get(m.field)]])),subtables:new Map(p.map(m=>[m.subtableCode,[]])),replacementTables:new Set(n),...o?{recordNumberSourceValue:c[s.get(o)]}:{}},u.push(d)}else if(d){for(let m of l){let y=c[s.get(m.field)];if(y!==""&&y!==d.top.get(m.field))throw new M(`ERR_IMPORT_PARENT_VALUE_ON_CONTINUATION: ${m.field} at source row ${E}.`)}if(o){let m=c[s.get(o)];if(m!==""&&m!==d.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 y=c[s.get(m.rowIdSourceHeader)],g=new Map(m.children.map(S=>[S,c[s.get(S)]]));if(y===""&&[...g.values()].every(S=>S===""))continue;let h=d.subtables.get(m.subtableCode);h.push({childRowNumber:h.length+1,sourceRowNumber:E,...y?{rowId:y}:{},values:g})}}),u.length===0)throw new M("CSV has no parent rows.");return{records:u}}var WR=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),HR=new Set(["SUBTABLE","FILE","CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function Fa(e,t){if(t!=null&&e.invalidParentRows.size>t)throw new Error(`RejectLimitExceededError: rejected parents (${e.invalidParentRows.size}) exceed REJECT LIMIT (${t}).`)}function mc(e,t,r,n,i){let o=new Map(r.filter(c=>!c.inSubtable).map(c=>[c.code,c])),a=new Map;for(let c of r)if(c.inSubtable&&c.subtableCode){let f=a.get(c.subtableCode);f||a.set(c.subtableCode,f=new Map),f.set(c.code,c)}let s=t.filter(c=>c.kind==="FIELD"),l=t.filter(c=>c.kind==="SUBTABLE");for(let c of s)fc(c.field,o.get(c.field),void 0);for(let c of l){let f=o.get(c.subtableCode);if(!f||f.fieldType!=="SUBTABLE")throw new Error(`ArgumentError: IMPORT subtable ${c.subtableCode} does not exist.`);let E=a.get(c.subtableCode)??new Map;for(let R of c.children)fc(R,E.get(R),c.subtableCode)}let p=new Map(l.map(c=>[c.subtableCode,{parentsPresent:0,childRows:0,validChildRows:0,invalidChildRows:0}])),u=e.records.map(c=>YR(c,s,l,o,a,n,i,p)),d=u.flatMap(c=>[...c.errors]);return{parents:u,errors:d,invalidParentRows:new Set(u.filter(c=>!c.valid).map(c=>c.parentRow)),tableCounts:p}}function YR(e,t,r,n,i,o,a,s){let l=[],p={};for(let c of t)e.top.has(c.field)&&xa(e.top.get(c.field),n.get(c.field),o,p,c.field,l,Ma(e,a,c.field));let u={};if(a==="INSERT")for(let c of n.values())c.fieldType==="SUBTABLE"||c.writable===!1||e.top.has(c.code)||Ec(c,o,u,l,Ma(e,a,c.code));let d=new Map;for(let c of r){if(!e.subtables.has(c.subtableCode))continue;let f=s.get(c.subtableCode);f.parentsPresent++;let E=[];for(let R of e.subtables.get(c.subtableCode)){f.childRows++;let m=l.length,y={},g=i.get(c.subtableCode);for(let h of c.children){let S=g.get(h),O=Ma(e,a,h,c.subtableCode,R.childRowNumber,R.sourceRowNumber??e.markerRowNumber);R.values.has(h)?xa(R.values.get(h),S,o,y,h,l,O):Ec(S,o,y,l,O)}l.length===m?(f.validChildRows++,E.push(y)):f.invalidChildRows++}d.set(c.subtableCode,E)}return{parentRow:e.rowNumber,valid:l.length===0,top:p,subtables:d,replacementTables:e.replacementTables,errors:l}}function fc(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&&HR.has(t.fieldType))throw new Error(`ArgumentError: IMPORT ${r?`child ${r}.${e}`:`field ${e}`} is not writable (${t.fieldType}).`)}function Ec(e,t,r,n,i){let o=Ot(e.defaultValue)?"":e.defaultValue;xa(o,e,t,r,e.code,n,i,!Ot(e.defaultValue))}function xa(e,t,r,n,i,o,a,s=!1){let l=jR(e),p=Se(l,t,r);p.ok?n[i]={value:qR(l,t)?l:p.value}:o.push({...a,code:p.code,message:s?`\u65E2\u5B9A\u5024: ${p.message}`:p.message})}function jR(e){return Rc(e)?e.lexeme:Array.isArray(e)?e.map(t=>t instanceof Map?t:Rc(t)?t.lexeme:t):e}function Rc(e){return typeof e=="object"&&e!==null&&e.kind==="number"}function qR(e,t){return WR.has(t.fieldType)&&Array.isArray(e)&&e.every(r=>typeof r=="object"&&r!==null&&"code"in r)}function Ma(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 Ka=["$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?"":zR(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 zR(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 $a(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 yc(e,t){return $a(e,t,"DROP")}function gc(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 hc(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,p])=>{let u=a?.record[l]?.value,d=Array.isArray(u)?u.length:0;return{table:l,existingRows:d,inputRows:p.length,addRows:p.length,deleteRows:d}});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 XR(e,t){let r=e[t]?.value;return Array.isArray(r)?r:[]}function Ac(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 Sc(e,t,r,n,i){return t.map((o,a)=>{let s=e[a],l=r[a],p=l===void 0?void 0:n.get(l),u=[...o.errors];if(!p||l===void 0)return{parentRow:o.parentRow,targetId:l??0,valid:!1,top:o.top,subtables:new Map,tables:[],errors:u};let d=new Map,c=[];for(let f of o.replacementTables){let E=XR(p.record,f),R=new Set(E.map(b=>b.id).filter(b=>!!b)),m=s.subtables.get(f)??[],y=o.subtables.get(f)??[],g=0,h=0,S=0,O=m.map((b,L)=>{let I=y[L]??{};return b.rowId&&R.has(b.rowId)?(g++,{rowId:b.rowId,record:I}):(b.rowId&&((i.get(b.rowId)??[]).some(C=>C.parentId!==l||C.table!==f)&&u.push({operation:"UPDATE",parentRow:o.parentRow,field:b.rowId,subtable:f,subrow:b.childRowNumber,sourceRow:b.sourceRowNumber,code:"ERR_IMPORT_FIELD_OWNERSHIP",message:`rowIdOwnedElsewhere: ${b.rowId}`,sourceValues:b.values}),S++),h++,{record:I})});d.set(f,O),c.push({table:f,existingRows:E.length,inputRows:m.length,updateRows:g,addRows:h,deleteRows:E.length-g,rowIdNotFound:S})}return{parentRow:o.parentRow,targetId:l,...p.revision===void 0?{}:{revision:p.revision},valid:u.length===0,top:o.top,subtables:d,tables:c,errors:u}})}var Ga="#__import_source";function Tc(e){return{...e,from:{appId:0,alias:null,cteName:Ga}}}function JR(e){return/^[0-9]+$/.test(e)?e.replace(/^0+(?=\d)/,""):null}function Va(e,t){let r=e.map(JR),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 QR="\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",gr=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"}},he=new WeakMap;function Vc(e){return he.get(e)}var Ar=new WeakMap,oo=new WeakMap,wc=new WeakMap,ZR=1;function em(e,t){if(t)return t;let r=wc.get(e);return r||(r=`client:${ZR++}`,wc.set(e,r)),r}async function Qa(e,t,r={}){let n=Date.now(),i=em(t,r.cacheContext),o=ky(e,r.enableImport===!0),a=tm(),s=rm(t,a),l={aborted:!1},p=Wc(s,l,!nm(o)),u=await om(o,p,r,i);a.elapsedMs=Date.now()-n;let d={...im(u,l),metrics:a};if(u.type==="SELECT"){let c=he.get(u);c&&he.set(d,c)}return d}function tm(){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 rm(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 Wc(e,t,r){return{...e,getRecords:async n=>{let i=await e.getRecords(n);if(i.searchAborted&&(t.aborted=!0,r))throw new gr;return i}}}function nm(e){return e.type==="SELECT"||e.type==="UNION"||e.type==="WITH"}function im(e,t){if(!t.aborted||e.type!=="SELECT")return e;let r=new Set(e.warnings??[]);return r.add(QR),{...e,warnings:[...r]}}async function Za(e,t,r){return ic(e,{select:n=>Sn(n,t,r),dml:n=>Yc(n,t,r),prefilterDecomposition:async n=>{if(n.where===null)return null;let i=await Sr(n,t,r);return va(n,i)}})}async function om(e,t,r,n){let i=await Za(e,t,n);e.type!=="EXPLAIN"&&oc(i);let o=Wa(e);if(o!==null&&!fy(e))throw new Error(`ParseError: variable @${o} is not defined in a batch.`);if(Wn("phase15b",e),Zs("phase15b",e),lr(e),e.type!=="EXPLAIN"&&await Em(e,t,n),e.type==="IMPORT")return ly(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 xc(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 pp(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 sm(e,t,r,n);case"SELECT":return St(e,t,r,n,void 0,r.captureColumnMeta===!0,r.captureColumnMeta===!0);case"UNION":return np(e,t,r,n,r.captureColumnMeta===!0,r.captureColumnMeta===!0);case"WITH":return _m(e,t,r,n,void 0,r.captureColumnMeta===!0);case"INSERT":return ay(e,t,r,n);case"INSERT_SELECT":return Rp(e,t,r,n);case"UPSERT":return Py(e,t,r,n);case"UPSERT_SELECT":return hp(e,t,r,n);case"UPDATE":return xc(e,t,r,n);case"DELETE":return by(e,t,r,n);case"REORDER":return Dy(e,t,r,n);case"SHOW_APPS":return Ap(t);case"DESCRIBE":return Sp(e,t,n);case"EXPLAIN":return Ky(e,t,n,r.maxRecords??1e4,r.cursorMaxActive??2,e.query.type==="UPDATE"&&e.query.applyBlocks?.length?Le(r.dmlMaxRows,"dmlMaxRows",st):st,e.query.type==="UPDATE"&&e.query.applyBlocks?.length?Le(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",Te):Te,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 cm(e,t,r,n)}}var es=["$id","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id","$err_count"],ts=["$id","$err_subtable","$err_field","$err_code","$err_count"];function rs(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 am(e=!1){let t=e?ts:es;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 sm(e,t,r,n){if(e.errorTable)throw new Error("ArgumentError: VALIDATE INTO requires a batch.");return lm(e,t,r,n)}async function lm(e,t,r,n){let i=await J(e.appId,t,n),o=new Map(i.filter(w=>!w.inSubtable).map(w=>[w.code,w])),a=new Set(i.filter(w=>w.inSubtable).map(w=>w.code)),s=sa(e,i),l=e.checkGroups??[],p=pr(l);for(let w of p){if(w.field!=="$id"&&!o.has(w.field)&&!a.has(w.field))throw ue(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${w.field} \u306F APP${e.appId} \u306B\u5B58\u5728\u3057\u307E\u305B\u3093`);if(w.field!=="$id"&&!o.has(w.field)&&a.has(w.field))throw new Error(`ArgumentError: VALIDATE \u306E CHECK \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${w.field} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let u=new Map([...o].map(([w,U])=>[w,U.fieldType]));u.set("$id","RECORD_NUMBER"),$t(e,u);let d=rs(e.where),c=[...new Set(["$id",...s.map(w=>w.subtableCode??w.field.code),...d,...p.map(w=>w.field)])];for(let w of d){if(w!=="$id"&&!o.has(w)&&!a.has(w))throw new Error(`ArgumentError: WHERE field ${w} does not exist in APP${e.appId}.`);if(w!=="$id"&&!o.has(w)&&a.has(w))throw new Error(`ArgumentError: VALIDATE \u306E WHERE \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${w} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let f=s.some(w=>w.field.fieldType==="NUMBER")?await Ye(e.appId,t,n):void 0,E=w=>w.field==="$id"?z({fieldType:"__ID__"}):o.get(w.field)?.semantics??(o.has(w.field)?z(o.get(w.field)):void 0),R=rt(e.where,E);if(R.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${kt(R)}).`);let m=new Map([...o].map(([w,U])=>[w,U.fieldType])),y=new Map([...o.values()].flatMap(w=>w.optionOrder?[[w.code,new Set(Object.keys(w.optionOrder))]]:[])),g=e.where===null?null:R.capability==="EXACT_PUSHDOWN"?e.where:nr(e.where,{allowUnqualifiedFields:!0,fieldTypes:m,fieldOptions:y,allowKlike:!1}),h=g===null?"":G(g),O=(await ye(t.getRecords,e.appId,h,c,{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1,onLimit:"error"})).map(w=>({id:String(w.$id?.value??""),record:w,flat:tt(w,null)})).filter(w=>e.where===null||q(e.where,w.flat,U=>u.get(U.field))),b=[],L=new Map,I=new Map,_=new Set,C=0,v=w=>{if(_.add(w.id),C+=1,e.summary){let K=JSON.stringify([w.id,w.subtable??"",w.field,w.code]),te=I.get(K);te?te.$err_count=String(Number(te.$err_count)+1):I.set(K,{$id:w.id,$err_subtable:w.subtable??"",$err_field:w.field,$err_code:w.code,$err_count:"1"});return}let U=JSON.stringify([w.id,w.subtable??"",w.field,w.code,w.message]),B=L.get(U);B?(B.$err_count=String(Number(B.$err_count)+1),w.subrow!==void 0&&(B.$err_subrow=`${B.$err_subrow},${w.subrow}`,B.$err_subrow_id=`${B.$err_subrow_id},${w.subrowId??""}`)):L.set(U,{$id:w.id,$err_field:w.field,$err_code:w.code,$err_message:w.message,$err_value:w.value,$err_subtable:w.subtable??"",$err_subrow:w.subrow===void 0?"":String(w.subrow),$err_subrow_id:w.subrowId??"",$err_count:"1"})},k=s.filter(w=>!w.subtableCode),A=new Map;for(let w of s){if(!w.subtableCode)continue;let U=A.get(w.subtableCode)??[];U.push(w),A.set(w.subtableCode,U)}for(let w of O){for(let U of k){let B=w.record[U.field.code]?.value,K=Se(B,U.field,f);K.ok||v({id:w.id,field:U.field.code,code:K.code,message:K.message,value:zr(B,U.field.fieldType)})}for(let[U,B]of A){let K=w.record[U]?.value;if(Array.isArray(K))for(let te=0;te<K.length;te++){let F=K[te];for(let D of B){let H=F.value?.[D.field.code]?.value,ie=Se(H,D.field,f);if(!ie.ok){let je=gi(U,te,F);v({id:w.id,field:D.field.code,code:ie.code,message:ie.message,value:zr(H,D.field.fieldType),...je})}}}}for(let U of ai(l,w.flat,B=>u.get(B.field)))v({id:w.id,field:"",code:"ERR_CHECK",message:U.message,value:""})}if(e.summary)b.push(...I.values());else for(let w of L.values()){let U=Number(w.$err_count);w.$err_subtable!==""&&U>=2&&(w.$err_message=`${w.$err_message}\uFF08${U}\u884C: ${w.$err_subrow}\uFF09`),b.push(w)}let N={type:"SELECT",columns:[...e.summary?ts:es],rows:b,rowCount:b.length,validateStats:{errorRecords:_.size,errorCount:C}};return he.set(N,am(e.summary===!0)),N}var ht=1e4;function At(e,t,r,n,i,o){let a=e.get(t);if(a&&(a.columns.length!==r.length||a.columns.some((l,p)=>l!==r[p])||!um(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 um(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||!ei(i.semantics,n.semantics))return!1}return!0}function Wa(e){if(Array.isArray(e)){for(let t of e){let r=Wa(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=Wa(r);if(n!==null)return n}}return null}var An=class extends Error{constructor(t){super(`AssertError: ${t}`),this.name="AssertError"}},mr=class extends Error{constructor(t){super(t),this.name="ScalarSubqueryError"}};async function cm(e,t,r,n,i){let o=await Yi(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 Yi(e.low,t,r,n,i),p=await Yi(e.high,t,r,n,i);if(!Nt(">=",o,l,a)||!Nt("<=",o,p,a))throw new An(`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 Yi(e.right,t,r,n,i);if(!Nt(e.op,o,s,a))throw new An(`assertion failed: ${e.text} (actual: ${o}).`);return{type:"ASSERT",condition:e.text}}async function Yi(e,t,r,n,i){switch(e.type){case"VARIABLE":throw new Error(`ParseError: unresolved batch variable @${e.name}.`);case"NUMBER":return W(e);case"STRING":return e.value;case"ARITH":return String(Ha(e));case"SCALAR_SUBQUERY":try{return await pm(e.query,t,r,n,i)}catch(o){throw o instanceof mr?new An(o.message):o}}}async function pm(e,t,r,n,i){let{query:o,probed:a}=dm(e),s=await gn(o,t,r,n,i);if(s.columns.length!==1)throw new mr(`scalar subquery returned ${s.columns.length} columns (expected 1 column).`);if(s.rowCount===0)throw new mr("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 mr(`scalar subquery returned ${l} (expected 1 row).`)}return s.rows[0]?.[s.columns[0]]??""}function dm(e){return Q(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 Ha(e){if(e.type==="NUMBER")return e.value;if(e.type==="ARITH"){let t=Ha(e.left),r=Ha(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 Sr(e,t,r,n,i=!1){let o=[e.from,...e.joins.map(c=>c.table)],a=i||Be(e.where)?[...new Set(o.filter(c=>c.cteName===null).map(c=>c.appId))]:[],s=new Map(await Promise.all(a.map(async c=>{let f=await J(c,t,r);return[c,new Map(f.map(E=>[E.code,E]))]}))),l=new Set,p=c=>{if(Array.isArray(c)){c.forEach(p);return}if(c===null||typeof c!="object")return;let f=c;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 c of e.columns)c.type==="CASE_COL"&&p(c.expr);let u=new Map;await Promise.all([...s].map(async([c,f])=>{if(![...l].some(m=>f.get(m)?.fieldType==="STATUS"))return;let R=await ps(c,t,r);R&&u.set(c,R)}));let d=(c,f,E)=>{if(f==="$id")return cr(z({fieldType:"__ID__"}),c.appId,"$id");if(E&&c.subtableCode){if(f==="_rid")return x("string");if(f==="_idx"||f==="_pid")return x("number")}let R=s.get(c.appId)?.get(Ee(c,f));if(!R)return;let m=R.semantics??z(R),y=R.fieldType==="STATUS"&&u.has(c.appId)?{...m,optionOrder:u.get(c.appId)}:m;return cr(y,c.appId,R.code)};return c=>{if(c.tableAlias!==null){if(c.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null)return d(e.from,c.field,!1);let E=o.find(R=>Oe(R)===c.tableAlias);return E?E.cteName!==null?n?.get(E.cteName)?.columnMeta?.get(c.field)?.semantics??x("string"):d(E,c.field,!0):void 0}if(e.joins.length===0)return e.from.cteName!==null?n?.get(e.from.cteName)?.columnMeta?.get(c.field)?.semantics??x("string"):d(e.from,c.field,!0);let f=o.flatMap(E=>{let R=E.cteName!==null?n?.get(E.cteName)?.columnMeta?.get(c.field)?.semantics:d(E,c.field,!0);return R?[R]:[]});if(f.length===1)return f[0];if(!o.some(E=>qi(E,c.field)!==void 0))return f.length>1?x("string"):void 0}}function ns(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=>Be(i.condition))?!0:Object.values(n).some(t)};return e.columns.some(t)}function Hc(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(ke(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=ls(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=xt(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 Sn(e,t,r,n){if(e.where===null)return rt(null,()=>{});let i=await Sr(e,t,r,n);return rt(e.where,i)}function kt(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 Ji(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=Be(e.where)?await J(e.appId,t,r):[],i=new Map(n.map(o=>[o.code,o]));return e.where.type==="BOOLEAN"&&e.where.value===!1?rt(null,()=>{}):rt(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 yr(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 (${kt(n)})`)}async function St(e,t,r,n,i,o=!1,a=!1){let s;if(await ao(e,t,n,i),ym(e))return s=Am(e),o&&he.set(s,await ja(e,s.columns,t,n,i,a)),s;let l=await is(e,t,n,i);await Tp(e,t,r,n,i);let p=await Sn(e,t,n,i);if(p.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${kt(p)}).`);let u=be(e),d,c;if(p.capability==="SUPERSET_PREFILTER"){let h=await Sr(e,t,n,i),S=va(e,h);S.eligible&&Da(e,S)&&(d=S.plan)}if(d===void 0&&p.capability==="EXACT_PUSHDOWN"&&e.where!==null){let h=null;try{h=G(e.where)}catch{h=null}c=ki({select:e,selectMode:u,capability:p,context:{allowFullScanExact:!0},serializedWholeWhere:h,relativeFunctionNames:Dt(e.where)})??void 0,c&&(d=c.prefilterPlan)}let f=p.capability==="EXACT_PUSHDOWN"?u:"FULL_SCAN",E=await wn(e,t,n,i),R=Ji(e)?(e.orderMode==="KINTONE_NATIVE"?tn:en)({stmt:e,staticMode:f,whereCapability:p.capability,whereReasons:p.reasons,orderSemantics:E.semantics,maxRecords:r.maxRecords??1e4,hasKlike:se(e.where)}):null;await Tm(e,R?.kind==="CANONICAL_LOCAL"?"FULL_SCAN":f,t,n);let m=jc(e,r,R),g=c!==void 0&&(u==="FULL_SCAN"||R?.kind==="CANONICAL_LOCAL")?Wc(t,{aborted:!1},!0):t;try{f==="SIMPLE"?s=await Sm(e,g,m.effectiveOptions,n,R,E):s=await Lm(e,g,m.effectiveOptions,n,i,p.capability==="EXACT_PUSHDOWN"&&d===void 0,E,d,l)}catch(h){qc(m,h)}return o&&he.set(s,await ja(e,s.columns,t,n,i,a)),s}async function is(e,t,r,n){if(e.groupBy.length===0)return;let i=[e.from,...e.joins.map(p=>p.table)],o=await Promise.all(i.map(async p=>{if(p.cteName!==null){let f=n?.get(p.cteName);if(!f)throw new Error(`InternalError: materialized schema ${p.cteName} is not available for GROUP BY planning.`);return{kind:"MATERIALIZED",columns:f.columns}}let u=await J(p.appId,t,r);if(!p.subtableCode)return{kind:"APP",fieldCodes:u.filter(f=>!f.inSubtable).map(f=>f.code)};let d=u.filter(f=>f.inSubtable&&f.subtableCode===p.subtableCode);return{kind:"SUBTABLE",childFieldCodes:(d.length>0?d:u.filter(f=>f.inSubtable&&f.subtableCode===void 0)).map(f=>f.code),parentFieldCodes:u.filter(f=>!f.inSubtable).map(f=>f.code)}})),a=Du(e,(p,u)=>o[u]),s=e.groupBy,l=vu(s,e.columns,a);return fm(e,s,l),l}function fm(e,t,r){let n=[e.from,...e.joins.map(a=>a.table)].flatMap(a=>a.cteName===null?[a.appId]:[]),i=[...new Set(n)],o=i.length===1?i[0]:e.from.cteName===null?e.from.appId:null;r.items.forEach((a,s)=>{if(a.kind==="EXPRESSION"||a.kind==="PHYSICAL"||a.kind==="ALIAS_SAFE")return;let l=t[s],p=l?.type==="FIELD_NAME"?l.name:"(expression)";if(a.kind==="UNKNOWN"){let u=o===null?"":` (APP${o})`;throw new Error(`ArgumentError: unknown field code(s): ${a.name}${u}`)}throw a.kind==="ALIAS_REJECT"?a.reason==="DUPLICATE"?new Error(`ArgumentError: GROUP BY alias ${p} is ambiguous across multiple SELECT columns (reason=GROUP_BY_ALIAS_AMBIGUOUS).`):a.reason==="POST_GROUP_ONLY"?new Error(`ArgumentError: GROUP BY alias ${p} requires post-group evaluation (reason=GROUP_BY_ALIAS_POST_GROUP_ONLY).`):new Error(`ArgumentError: GROUP BY alias ${p} depends on aggregate evaluation (reason=GROUP_BY_ALIAS_AGGREGATE).`):new Error(`InternalError: deferred GROUP BY field ${a.name} reached runtime planning.`)})}var Tn=new WeakMap;async function Em(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 ao(o,t,r);for(let s of Object.values(a))await i(s)};await i(e)}async function Rm(e,t,r,n){let i=[e.from,...e.joins.map(u=>u.table)],o=i.filter(u=>u.cteName===null),a=new Map(await Promise.all([...new Set(o.map(u=>u.appId))].map(async u=>{let d=await J(u,t,r);return[u,new Map(d.map(c=>[c.code,c]))]}))),s=(u,d)=>{if(d==="$id")return"$id";let c=Ee(u,d);return a.get(u.appId)?.has(c)?c:null},l=(u,d)=>{if(u.cteName===null)return!1;let c=n?.get(u.cteName);return c?c.columns.includes(d):!0},p=(u,d,c,f)=>{let E=i.filter(y=>y.cteName===null&&s(y,c.field)!==null).length,R=i.some(y=>l(y,c.field)),m=Oe(u);return{canonicalId:`source:${d}:APP${u.appId}:${f}`,directKey:c.tableAlias&&m?`${c.tableAlias}.${c.field}`:c.field,unqualifiedBridgeKey:E===1&&!R?c.field:null,physical:!0}};return u=>{if(u.tableAlias!==null){let f=i.findIndex(m=>Oe(m)===u.tableAlias);if(f<0)throw new Error(`ArgumentError: B65 field ${u.tableAlias}.${u.field} has an unknown table alias.`);let E=i[f];if(E.cteName!==null)throw new Error(`ArgumentError: B65 field ${u.tableAlias}.${u.field} resolves to materialized source ${E.cteName}; physical APP fields are required.`);let R=s(E,u.field);if(R===null)throw new Error(`ArgumentError: B65 field ${u.tableAlias}.${u.field} does not exist in APP${E.appId}.`);return p(E,f,u,R)}let d=i.flatMap((f,E)=>{if(f.cteName!==null)return[];let R=s(f,u.field);return R===null?[]:[{table:f,tableIndex:E,code:R}]}),c=i.filter(f=>l(f,u.field));if(d.length+c.length>1)throw new Error(`ArgumentError: B65 field ${u.field} is ambiguous across multiple sources.`);if(d.length===1&&c.length===0){let f=d[0];return p(f.table,f.tableIndex,u,f.code)}throw c.length===1?new Error(`ArgumentError: B65 field ${u.field} resolves to a materialized CTE/temp column; physical APP fields are required.`):new Error(`ArgumentError: B65 field ${u.field} does not exist in a physical APP source.`)}}async function ao(e,t,r,n){Tn.delete(e);let i=Q(e),o=JSON.stringify(e.columns).includes('"GROUPING_')||JSON.stringify(e.orderBy).includes('"GROUPING_');if(i.type==="NONE"&&!o)return;let a=await Rm(e,t,r,n),s=wl(e,a,Sl);s&&Tn.set(e,s)}function mm(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 jc(e,t,r){let n=r?.kind==="CANONICAL_REST_TOP_N"||r?.kind==="KORDER_NATIVE"||r?.kind==="KORDER_CURSOR"?It({...e,orderBy:[]}):It(e),i=n.size>0&&t.onLimitReached==="truncate";return{reasons:n,effectiveOptions:i?{...t,onLimitReached:"error"}:t,truncateWasDisabled:i}}function qc(e,t){throw e.reasons.size>0&&t instanceof we?new we(mm(e.reasons)+(e.truncateWasDisabled?"onLimit=truncate\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002":"")+t.message):t}async function Ic(e,t){try{return await t()}catch(r){qc(e,r)}}function ot(e){return e?.type==="BOOLEAN"&&e.value===!1}function ym(e){return e.from.appId===0&&e.from.cteName===lt}function Qi(e){return e.type==="FIELD_REF"?!0:e.type==="ARITH"?Qi(e.left)||Qi(e.right):e.type==="STRING_FUNC"?os(e):!1}function gm(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:En(e)}function En(e){return e.type==="FIELD"?!0:e.type==="STRING_FUNC"?os(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?En(e.left)||En(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"?Qi(r):En(r))):!1}function os(e){return e.args.some(t=>gm(t))}function hm(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(Qi(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"STRFUNC_COL":if(os(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"SCALAR_VALUE_COL":if(En(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 Am(e){if(e.joins.length>0||e.where||Q(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.");hm(e);let t=Ta([{}],e.columns),{rows:r,columns:n}=Di(t,e.columns),i=_i(r,e.limit,e.offset);return{type:"SELECT",rows:i,columns:n,rowCount:i.length,warnings:[]}}async function Sm(e,t,r,n,i,o){let a=i?.kind==="CANONICAL_REST_TOP_N"?ep(e):e,s=Hn(a),l=i?.kind==="CANONICAL_LOCAL"?bt(e,e.from):s.fields,p=await ss(e,t,n),u=us(e,p),d=e.columns.some(L=>L.type==="CASE_COL")?await Sr(e,t,n,void 0,ns(e)):void 0,c=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,y=e.limit===null?null:(e.offset??0)+e.limit,g=e.orderBy.length===0&&y!==null&&y<=c&&!se(e.where)?y:void 0,h;if((i?.kind==="KORDER_NATIVE"||i?.kind==="KORDER_CURSOR")&&e.limit===0)h=[];else if(i?.kind==="KORDER_CURSOR"){let L=await Ou({client:t,app:s.app,fields:s.fields,query:Ra(e),offset:e.offset??0,limit:e.limit});h=L.records,L.cleanupWarning&&f.add(L.cleanupWarning)}else if(m)h=(await t.getRecords({app:s.app,query:s.query,fields:s.fields})).records;else{let L=e.where?G(e.where):"";h=await ye(t.getRecords,s.app,L,l,{parallel:R,maxRecords:c,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=h.map(L=>tt(L,null));m||(S=Aa(S,e.orderBy,o.optionOrders,o.sortKinds,o.semantics,Sa(e.columns,void 0,u.row,d)),S=_i(S,e.limit,e.offset));let{rows:O,columns:b}=Di(S,e.columns,void 0,u.row,void 0,d);return{type:"SELECT",rows:O,columns:b,rowCount:O.length,warnings:[...f]}}async function Tm(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 p of s)l.add(p)};if(t==="SIMPLE"){let a=Hn(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,bt(e,s))}for(let[a,s]of i.entries()){let l=[...s].filter(c=>!_u(c));if(l.length===0)continue;let p=await J(a,r,n);if(p.length===0)continue;let u=new Set(p.map(c=>c.code)),d=l.filter(c=>!u.has(c));if(d.length>0)throw new Error(`ArgumentError: unknown field code(s): ${d.join(", ")} (APP${a})`)}}function zc(e){return e.where===null||e.from.subtableCode||e.from.cteName!==null?null:e.joins.length===0?kr(e.where,{tableAlias:e.from.alias??void 0,allowUnqualifiedFields:!0}):e.from.alias?kr(e.where,{tableAlias:e.from.alias}):null}async function Xc(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,zc(e)),e.where!==null)for(let a of e.joins){if(!a.table.alias||a.table.subtableCode||a.table.cteName!==null)continue;let s=kr(e.where,{tableAlias:a.table.alias});i(a.table.appId,s)}let o=await Promise.all([...n.entries()].map(async([a,s])=>{let[l,p]=await Promise.all([Re(a,t,r),Mm(a,t,r)]),u=wm(s).filter(d=>l.get(d)==="STATUS");if(u.length>0){let d=await cs(a,t,r);if(d.enable&&d.states&&d.states.length>0){let c=new Set(d.states.map(f=>f.name));for(let f of u)p.set(f,c)}}return[a,l,p]}));return{fieldTypesByApp:new Map(o.map(([a,s])=>[a,s])),fieldOptionsByApp:new Map(o.map(([a,,s])=>[a,s]))}}function wm(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 it(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"&&Zi(e.left.expr,t),e.right.type==="CASE_VALUE"&&Zi(e.right.expr,t);return;case"LOGICAL":it(e.left,t),it(e.right,t);return;case"NOT":case"GROUP":it(e.expr,t);return;case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}function Zi(e,t){for(let r of e.branches)it(r.condition,t)}function Im(e){let t=[];it(e.where,t),it(e.having,t);for(let r of e.columns)r.type==="CASE_COL"&&Zi(r.expr,t);return t}function Oe(e){return e.alias??e.cteName}function Jc(e,t){return[e.from,...e.joins.map(r=>r.table)].find(r=>Oe(r)===t)}function as(e){return[e.from,...e.joins.map(t=>t.table)].filter(t=>t.cteName===null)}async function ss(e,t,r){let n=Im(e);if(n.length===0)return new Map;let i=new Set,o=as(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=Jc(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 Re(s,t,r)]));return new Map(a)}function ke(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 Qc(e,t,r){e!=="MIN"&&e!=="MAX"&&e!=="MODE"||t.type==="WILDCARD"||vt(t,r)}function vt(e,t){if(e.type==="FIELD_REF"){t.push(ke(e.field));return}if(e.type==="FIELD"){t.push(e);return}if(e.type==="ARITH"){vt(e.left,t),vt(e.right,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){vt(e.left,t),vt(e.right,t);return}if(e.type==="STRING_FUNC"){for(let r of e.args)r.type!=="AGG_REF"&&r.type!=="AGG_ARITH"&&vt(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"&&vt(r,t)}function eo(e,t){if(e.type==="AGG_REF"){Qc(e.func,e.arg,t);return}e.type==="AGG_ARITH"&&(eo(e.left,t),eo(e.right,t))}function Ya(e,t){for(let r of e.args)r.type==="AGG_REF"||r.type==="AGG_ARITH"?eo(r,t):Rn(r,t)}function Rn(e,t){if(e.type==="STRING_FUNC"){Ya(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){Rn(e.left,t),Rn(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"?Ya(n,t):n.type!=="ARRAY"&&n.type!=="FIELD_REF"&&n.type!=="ARITH"&&Rn(n,t)}}function bm(e){let t=[];for(let r of e)r.type==="AGGREGATE"?Qc(r.func,r.arg,t):r.type==="ARITH_AGG_COL"?eo(r.expr,t):r.type==="STRFUNC_COL"?Ya(r.expr,t):r.type==="SCALAR_VALUE_COL"&&Rn(r.expr,t);return t}var Pm=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DROP_DOWN","RADIO_BUTTON","STATUS","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME"]);function Nm(e){return e.sortKind!==void 0?e.sortKind:e.fieldType==="NUMBER"||e.fieldType==="RECORD_NUMBER"?"number":Pm.has(e.fieldType)?"string":void 0}async function Zc(e,t,r,n){let i=bm(e.columns);if(i.length===0)return;let o=new Set,a=as(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=Jc(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 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([...s].map(async([f,E])=>{if(![...p].some(m=>E.get(m)?.fieldType==="STATUS"))return;let R=await ps(f,t,r);R&&l.set(f,R)}));let u=[e.from,...e.joins.map(f=>f.table)],d=(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 m=u.find(y=>Oe(y)===f.tableAlias);if(!m)return;if(m.cteName!==null)return n?.get(m.cteName)?.columnMeta?.get(f.field)?.semantics??x("string");E=s.get(m.appId)?.get(Ee(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=s.get(e.from.appId)?.get(Ee(e.from,f.field))}else{let m=u.flatMap(y=>{if(y.cteName!==null){let h=n?.get(y.cteName);return h?.columns.includes(f.field)?[h.columnMeta?.get(f.field)?.semantics??x("string")]:[]}let g=s.get(y.appId)?.get(Ee(y,f.field));return g?[d(g,y.appId)]:[]});return m.length!==1?void 0:m[0]}if(!E)return;let R=f.tableAlias!==null?u.find(m=>Oe(m)===f.tableAlias):e.joins.length===0?e.from:void 0;return d(E,R?.appId??e.from.appId)}}function Ee(e,t){return e.subtableCode&&t.startsWith("_p.")?t.slice(3):t}function qi(e,t){if(e.subtableCode){if(t==="_rid")return"SINGLE_LINE_TEXT";if(t==="_idx"||t==="_pid")return"NUMBER"}}function We(e,t){let r=e.semantics??z(e);return{sortKind:Nm(e),fieldType:e.fieldType,semantics:t===void 0?r:cr(r,t,e.code)}}function ep(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 He(){return{semantics:x("string","KSQL_UNKNOWN")}}function tp(e="KSQL_ARRAY"){return{semantics:{fieldType:e,compareMode:"unsupported",inSubtable:!1,requiresCollectionOperators:!1}}}function Ut(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 Cm=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function xt(e){if(e.func==="CAST"){let t=e.args[1];return t?.type==="STRING"&&t.value==="NUMBER"?Y("number"):Y("string")}return Cm.has(e.func)?Y("number"):Y("string")}function hr(e,t){return e.type==="STRING"?Y("string"):e.type==="ARRAY"?tp():e.type==="NUMBER"||e.type==="ARITH"||e.type==="SCALAR_ARITH"?Y("number"):e.type==="STRING_FUNC"?xt(e):e.type==="FIELD_REF"?t(ke(e.field))??He():e.type==="FIELD"?t(e)??He():He()}function so(e){if(e.length===0)return He();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&&ei(r(n.semantics),r(t.semantics)))?e.every(i=>ei(i.semantics,t.semantics))?t:{...t,semantics:r(t.semantics)}:e.some(n=>n.semantics?.compareMode==="unsupported")?tp("KSQL_MIXED_UNSUPPORTED"):He()}function ls(e,t){if(e.type==="FIELD_REF")return t(ke(e.field))??He();if(e.type==="FIELD")return t(e)??He();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 xt(e);let r=e.branches.map(n=>hr(n.result,t));return e.elseResult&&r.push(hr(e.elseResult,t)),so(r)}function Om(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 ja(e,t,r,n,i,o=!1){let a=new Map;Om(e)&&await Promise.all(as(e).map(async R=>{if(a.has(R.appId))return;let m=await J(R.appId,r,n);a.set(R.appId,new Map(m.map(y=>[y.code,y])))}));let s=[e.from,...e.joins.map(R=>R.table)],l=o&&i===void 0&&s.every(R=>R.cteName===null),p=R=>{if(R.tableAlias!==null){if(R.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){let h=a.get(e.from.appId)?.get(R.field);return h?We(h,e.from.appId):void 0}let y=s.find(h=>Oe(h)===R.tableAlias);if(!y)return;if(y.cteName!==null)return i?.get(y.cteName)?.columnMeta?.get(R.field);let g=a.get(y.appId)?.get(Ee(y,R.field));return g?We(g,y.appId):Ut(R.field)}if(e.joins.length===0){if(e.from.cteName!==null)return i?.get(e.from.cteName)?.columnMeta?.get(R.field);let y=a.get(e.from.appId)?.get(Ee(e.from,R.field));return y?We(y,e.from.appId):Ut(R.field)}let m=s.flatMap(y=>{if(y.cteName!==null){let S=i?.get(y.cteName);return S?.columns.includes(R.field)?[S.columnMeta?.get(R.field)]:[]}let g=a.get(y.appId)?.get(Ee(y,R.field)),h=g?We(g,y.appId):Ut(R.field);return h?[h]:[]});return m.length===1?m[0]:void 0},u=R=>{if(!l)return;let m=s.filter(y=>{if(R.tableAlias!==null&&Oe(y)!==R.tableAlias)return!1;let g=Ee(y,R.field);return a.get(y.appId)?.has(g)===!0||Ut(R.field)!==void 0});return m.length===1?m[0].appId:void 0},d=(R,m)=>{let y=u(m);return R&&y!==void 0?{...R,publicSourceApp:y}:R},c=new Map,f=e.columns.some(R=>R.type==="WILDCARD"||R.type==="PARENT_WILDCARD");if(e.columns.length===1&&(e.columns[0].type==="WILDCARD"||e.columns[0].type==="PARENT_WILDCARD")){for(let R of t){let m=ke(R),y=d(p(m),m);y&&c.set(R,y)}return c}if(f)for(let R of t){let m=ke(R),y=d(p(m),m);y&&c.set(R,y)}return e.columns.filter(R=>R.type!=="WILDCARD"&&R.type!=="PARENT_WILDCARD").forEach((R,m)=>{let y=f?"alias"in R&&R.alias?R.alias:void 0:t[m];if(!y)return;let g;if(R.type==="FIELD"){let h=ke(R.field);g=d(p(h),h)}else if(R.type==="AGGREGATE")R.func==="GROUP_CONCAT"?g=Y("string"):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"?g=Y("number"):(R.func==="MIN"||R.func==="MAX"||R.func==="MODE")&&R.arg.type!=="WILDCARD"&&(g=ls(R.arg,p));else if(R.type==="ARITH_AGG_COL"||R.type==="ARITH_COL")g=Y("number");else if(R.type==="GROUPING_COL")g=Y("number");else if(R.type==="LITERAL_COL")g=Y("string");else if(R.type==="SCALAR_VALUE_COL"){let h=R.expr;h.type==="STRING_FUNC"?g=xt(h):h.type==="NUMBER"||h.type==="SCALAR_ARITH"?g=Y("number"):h.type==="FIELD"?g=p(h):g=Y("string")}else if(R.type==="STRFUNC_COL")g=xt(R.expr);else if(R.type==="WINDOW_COL")g=Y("number");else if(R.type==="CASE_COL"){let h=R.expr.branches.map(S=>hr(S.result,p));R.expr.elseResult&&h.push(hr(R.expr.elseResult,p)),g=so(h)}else R.type==="SCALAR_SUBQUERY_COL"&&(g=He());g&&c.set(y,g)}),c}function rp(e,t){let r=he.get(e),n=he.get(t),i=new Map;return e.columns.forEach((o,a)=>{let s=r?.get(o),l=t.columns[a],p=l===void 0?void 0:n?.get(l);if(s&&p){let u=so([s,p]),d=s.publicSourceApp===p.publicSourceApp?s.publicSourceApp:void 0,{publicSourceApp:c,...f}=u;i.set(o,d===void 0?f:{...f,publicSourceApp:d})}else(s||p)&&i.set(o,He())}),i}function us(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 p=r.find(u=>Oe(u)===s.tableAlias);return!p||p.cteName!==null?void 0:qi(p,s.field)??t.get(p.appId)?.get(Ee(p,s.field))}if(e.joins.length===0)return e.from.cteName!==null?void 0:qi(e.from,s.field)??t.get(e.from.appId)?.get(Ee(e.from,s.field));if(r.some(p=>p.cteName!==null))return;let l=n.flatMap(p=>{let u=qi(p,s.field)??t.get(p.appId)?.get(Ee(p,s.field));return u?[u]:[]});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 Lm(e,t,r,n,i,o=!0,a,s,l){let p=r.maxRecords??1e4,u=new Set,d=r.fetchParallel??1;await Promise.all([Pn(e.where,t,r,n,i),Pn(e.having,t,r,n,i)]);let[c,f,E]=await Promise.all([Xc(e,t,n),ss(e,t,n),Zc(e,t,n,i)]),R=us(e,f),m=await Sr(e,t,n,i,Be(e.having)||ns(e)),y=Hc(e,m),g=or(e,c);_o(g);let h=g.mainCondition,S=g.joinConditions;if(s&&o)throw new Error("internal error: relative-date prefilter must disable original WHERE pushdown.");let O=s?s.prefilterWhere:h,b=await Ip(e.columns,t,r,n,i),L=ot(e.where),I=L?Promise.resolve([]):mn(e,e.from,t,p,d,!0,r.onLimitReached??"error",u,O,o,l),_=[],C=[];for(let K of e.joins){if(L){_.push({join:K,promise:Promise.resolve([])});continue}let te=K.table.alias?S.get(K.table.alias)??null:null;te!==null?_.push({join:K,promise:mn(e,K.table,t,p,d,!1,r.onLimitReached??"error",u,te,!0,l)}):C.push(K)}let v=a?Promise.resolve(a):wn(e,t,n,i);v.catch(()=>{});let k=await I,A=new Map;A.set(e.from.alias,k);for(let{join:K,promise:te}of _)A.set(K.table.alias,await te);await Promise.all(C.map(async K=>{let F=await lp(e,K,A,t,p,d,r.onLimitReached??"error",u,null,l)??await mn(e,K.table,t,p,d,!1,r.onLimitReached??"error",u,null,!0,l);A.set(K.table.alias,F)}));let{optionOrders:P,sortKinds:N,semantics:w}=await v,{rows:U,columns:B}=ba({tables:A,stmt:e,scalarCache:b,optionOrders:P,sortKinds:N,orderSemantics:w,fieldTypeResolver:R.row,fieldSemanticsResolver:m,havingFieldTypeResolver:R.having,havingFieldSemanticsResolver:y,aggregateSortKindResolver:E,appliedKlikes:s?.appliedKlikes??g.appliedKlikes,...s?{residualWhere:s.residualWhere}:{},resolvedGroupingSpec:Tn.get(e),plainGroupByPlan:l});return{type:"SELECT",rows:U,columns:B,rowCount:U.length,warnings:[...u]}}async function np(e,t,r,n,i=!1,o=!1){let[a,s]=await Promise.all([e.left.type==="UNION"?np(e.left,t,r,n,i,o):St(e.left,t,r,n,void 0,i,o),St(e.right,t,r,n,void 0,i,o)]),l=a.columns,p=s.columns,u=s.rows.map(E=>{let R={};return l.forEach((m,y)=>{R[m]=E[p[y]??m]??""}),R}),d=[...a.rows,...u],c=e.all?d:ip(d,l),f={type:"SELECT",rows:c,columns:l,rowCount:c.length};return i&&he.set(f,rp(a,s)),f}function ip(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 _m(e,t,r,n,i,o=!1){if((i==null||i.size===0)&&pt(e))return St(dt(e),t,r,n,void 0,o,!1);let a=new Map(i??[]);for(let s of e.ctes){let l;s.query.type==="SHOW_APPS"?l=await Ap(t):s.query.type==="DESCRIBE"?l=await Sp(s.query,t,n):l=await Ft(s.query,t,r,a,n,!0),a.set(s.name,{rows:l.rows,columns:l.columns,columnMeta:he.get(l)})}return Ft(e.query,t,r,a,n,o)}async function Ft(e,t,r,n,i,o=!1){if(e.type==="UNION"){let[l,p]=await Promise.all([Ft(e.left,t,r,n,i,o),Ft(e.right,t,r,n,i,o)]),u=l.columns,d=p.columns,c=p.rows.map(m=>{let y={};return u.forEach((g,h)=>{y[g]=m[d[h]??g]??""}),y}),f=[...l.rows,...c],E=e.all?f:ip(f,u),R={type:"SELECT",rows:E,columns:u,rowCount:E.length};return o&&he.set(R,rp(l,p)),R}if(!(e.from.cteName!=null&&e.from.cteName!==lt||e.joins.some(l=>l.table.cteName!=null)))return St(e,t,r,i,n,o,!1);let s=await Dm(e,t,r,n,i);return o&&he.set(s,await ja(e,s.columns,t,i,n)),s}async function Dm(e,t,r,n,i){await ao(e,t,i,n);let o=Tn.get(e),a=await is(e,t,i,n),s=new Set,l=F=>{if(F.alias!==null||F.cteName===null)return F;let D=Oe(F);return s.add(D),{...F,alias:D}};e={...e,from:l(e.from),joins:e.joins.map(F=>({...F,table:l(F.table)}))};let p=new Set;for(let F of[e.from,...e.joins.map(D=>D.table)]){let D=Oe(F);if(D!==null){if(p.has(D))throw new Error(`ArgumentError: effective alias ${D} is used by multiple tables.`);p.add(D)}}let u=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&&u(F.cteName);let d=r.maxRecords??1e4,c=new Set,f=r.fetchParallel??1;await Promise.all([Pn(e.where,t,r,i,n),Pn(e.having,t,r,i,n),Tp(e,t,r,i,n)]);let E=await Sn(e,t,i,n);if(E.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${kt(E)}).`);let R=await wn(e,t,i,n),m=Ji(e)?(e.orderMode==="KINTONE_NATIVE"?tn:en)({stmt:e,staticMode:"FULL_SCAN",whereCapability:E.capability,whereReasons:E.reasons,orderSemantics:R.semantics,maxRecords:d,hasKlike:se(e.where)}):null,y=jc(e,r,m),g=y.effectiveOptions,[h,S,O]=await Promise.all([Xc(e,t,i),ss(e,t,i),Zc(e,t,i,n)]),b=us(e,S),L=await Sr(e,t,i,n,Be(e.having)||ns(e)),I=Hc(e,L),_=or(e,h);_o(_);let C=await Ip(e.columns,t,g,i,n),v=Promise.resolve(R);v.catch(()=>{});let k=new Map,A=new Map;if(e.from.cteName!=null){let F=u(e.from.cteName);k.set(e.from.alias,F.rows.map(bc)),A.set(e.from.alias,F.columns)}else{let F=await Ic(y,()=>mn(e,e.from,t,d,f,!0,g.onLimitReached??"error",c,_.mainCondition,E.capability==="EXACT_PUSHDOWN",a));k.set(e.from.alias,F)}let P=e.joins.map(F=>Ic(y,async()=>{if(F.table.cteName!=null){let D=u(F.table.cteName);k.set(F.table.alias,D.rows.map(bc)),A.set(F.table.alias,D.columns)}else{let D=F.table.alias?_.joinConditions.get(F.table.alias)??null:null,ie=await lp(e,F,k,t,d,f,g.onLimitReached??"error",c,D,a)??await mn(e,F.table,t,d,f,!1,g.onLimitReached??"error",c,D,!0,a);k.set(F.table.alias,ie)}}));await Promise.all(P);let{optionOrders:N,sortKinds:w,semantics:U}=await v,B=e.joins.length===0&&e.from.cteName!=null?u(e.from.cteName).columns:void 0,{rows:K,columns:te}=ba({tables:k,stmt:e,scalarCache:C,optionOrders:N,sortKinds:w,orderSemantics:U,fieldTypeResolver:b.row,fieldSemanticsResolver:L,havingFieldTypeResolver:b.having,havingFieldSemanticsResolver:I,aggregateSortKindResolver:O,appliedKlikes:_.appliedKlikes,sourceColumns:B,tableColumns:A,hiddenQualifiedAliases:s,resolvedGroupingSpec:o,plainGroupByPlan:a});return{type:"SELECT",rows:K,columns:te,rowCount:K.length,warnings:[...c]}}function bc(e){return Object.fromEntries(Object.entries(e).map(([t,r])=>[t,{value:r??""}]))}async function mn(e,t,r,n,i,o,a,s,l=null,p=!0,u){let d=bt(e,t,u),c=m=>{s.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${m} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${m} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`)};if(!t.subtableCode){let m=o&&p?ul(e,t.appId).query:"",y=l!==null?G(l):"",g=m&&y?`(${m}) and (${y})`:m||y;return(await _e(r.getRecords,t.appId,g,d,{parallel:i,maxRecords:n,onLimit:a,onTruncate:c})).records}let R=(await _e(r.getRecords,t.appId,"",d,{parallel:i,maxRecords:n,onLimit:a,onTruncate:c})).records;return ju(R,t.subtableCode)}var op=50;function vm(e){let t=Ie(e);return t!==null?JSON.stringify(t):e}function qa(e){return JSON.stringify(e)}function Kt(e,t){return JSON.stringify(e.map((r,n)=>t[n]?vm(r):r))}function Cn(e,t){let r=e.raw.get(qa(t));if(r!==void 0)return r;if(e.numericKey.some(Boolean))return e.normalized.get(Kt(t,e.numericKey))}async function On(e,t,r,n,i,o){let a=i.maxRecords??1e4,s=i.fetchParallel??1,l=t.map(m=>o.get(m)==="NUMBER"),p={raw:new Map,normalized:new Map,numericKey:l},u=(m,y,g)=>{let h=m.get(y);(h===void 0||g>h)&&m.set(y,g)},d=(m,y)=>{u(p.raw,qa(m),y),l.some(Boolean)&&u(p.normalized,Kt(m,l),y)},c=new Set,f=[],E=new Set;for(let m of r){let y=qa(m);E.has(y)||(E.add(y),m.some(g=>g==="")?f.push(m):c.add(m[0]))}let R=["$id",...t];for(let m of Tr([...c],op)){let y=`${t[0]} in (${m.map(to).join(",")})`,g=await ye(n.getRecords,e,y,R,{maxRecords:a,parallel:s});for(let h of g){let S=Number(h.$id?.value);Number.isFinite(S)&&d(t.map(O=>ap(h[O]?.value)),S)}}for(let m of f){let y=t.map((h,S)=>`${h} = ${to(m[S])}`).join(" and "),g=await ye(n.getRecords,e,y,["$id"],{maxRecords:a,parallel:s});g.length!==0&&d(m,Um(g))}return p}function Um(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 ap(e){return typeof e=="string"?e:e==null?"":String(e)}function to(e){return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Tr(e,t){let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}var sp=50,km=6,Pc=sp*km;async function lp(e,t,r,n,i,o,a,s,l=null,p){if(t.type!=="INNER"||!t.table.alias||t.table.subtableCode)return null;let u=t.on.left.tableAlias,d=t.on.right.tableAlias;if(!u||!d)return null;let c,f,E;if(u===t.table.alias&&d!==t.table.alias)c=d,f=t.on.right.field,E=t.on.left.field;else if(d===t.table.alias&&u!==t.table.alias)c=u,f=t.on.left.field,E=t.on.right.field;else return null;let R=r.get(c);if(!R)return null;let m=new Set;for(let L of R){let I=L[f]?.value,_=ap(I).trim();_.length>0&&m.add(_)}let y=[...m];if(y.length===0)return[];if(y.length>Pc)return s.add(`JOIN\u30AD\u30FC\u304C ${y.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 ${Pc} \u4EF6\uFF09\u3002`),null;let g=bt(e,t.table,p),h=L=>{s.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${L} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${L} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`)},S=Tr(y,sp),O=[],b=new Set;for(let L of S){let I=`${E} in (${L.map(to).join(",")})`,_=l!==null?`(${I}) and (${G(l)})`:I,C=await _e(n.getRecords,t.table.appId,_,g,{parallel:o,maxRecords:i,onLimit:a,onTruncate:h});for(let v of C.records){let k=`${v.$id?.value??""}:${JSON.stringify(v)}`;b.has(k)||(b.add(k),O.push(v))}}return O}var Nc=new Map,Cc=new Map,Oc=new Map,Lc=new Map,_c=new Map,Dc=new Map;function wr(e,t,r){return e.get(t)?.get(r)}function Ir(e,t,r,n){let i=e.get(t);i||(i=new Map,e.set(t,i)),i.set(r,n)}async function J(e,t,r){let n=wr(Lc,r,e);if(n)return n;let i=t.getFields(e);return Ir(Lc,r,e,i),i}async function Ye(e,t,r){let n=wr(Dc,r,e);if(n)return n;let i=t.getNumberPrecision(e);return Ir(Dc,r,e,i),i}async function cs(e,t,r){let n=wr(_c,r,e);if(n)return n;let i=t.getProcessStatuses(e);return Ir(_c,r,e,i),i}async function ps(e,t,r){let n=await cs(e,t,r);return n.enable&&n.states!==null?new Map(n.states.map(i=>[i.name,i.index])):void 0}async function Re(e,t,r){let n=wr(Nc,r,e);if(n)return n;let i=await J(e,t,r),o=new Map(i.map(a=>[a.code,a.fieldType]));return Ir(Nc,r,e,o),o}async function za(e,t,r){let n=wr(Cc,r,e);if(n)return n;let i=await J(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 Ir(Cc,r,e,o),o}async function Mm(e,t,r){let n=await za(e,t,r);return new Map([...n.entries()].map(([i,o])=>[i,new Set(o.keys())]))}async function vc(e,t,r){let n=wr(Oc,r,e);if(n)return n;let i=await J(e,t,r),o=new Map;for(let a of i)a.sortKind&&o.set(a.code,a.sortKind);return Ir(Oc,r,e,o),o}function xm(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 Fm(e,t,r,n){let i=xm(e);if(i.length===0)return new Map;let o=[e.from,...e.joins.map(d=>d.table)],a=new Set,s=new Map(await Promise.all([...new Set(o.filter(d=>d.cteName===null).map(d=>d.appId))].map(async d=>{let c=await J(d,t,r);return[d,new Map(c.map(f=>[f.code,f]))]}))),l=d=>{if(d.tableAlias!==null){if(d.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){let R=s.get(e.from.appId)?.get(d.field);return R?We(R,e.from.appId):void 0}let f=o.find(R=>Oe(R)===d.tableAlias);if(!f)return;if(f.cteName!==null)return n?.get(f.cteName)?.columnMeta?.get(d.field);let E=s.get(f.appId)?.get(Ee(f,d.field));return E?We(E,f.appId):Ut(d.field)}if(e.joins.length===0){if(e.from.cteName!==null)return n?.get(e.from.cteName)?.columnMeta?.get(d.field);let f=s.get(e.from.appId)?.get(Ee(e.from,d.field));return f?We(f,e.from.appId):Ut(d.field)}let c=o.flatMap(f=>{if(f.cteName!==null){let m=n?.get(f.cteName),y=m?.columns.includes(d.field)?m.columnMeta?.get(d.field):void 0;return y?[y]:[]}let E=s.get(f.appId)?.get(Ee(f,d.field)),R=E?We(E,f.appId):Ut(d.field);return R?[R]:[]});return c.length>1&&a.add(d.field),c.length===1?c[0]:void 0},p=new Map;for(let d of e.columns){if(!("alias"in d)||!d.alias)continue;let c;if(d.type==="FIELD")c=l(ke(d.field));else if(d.type==="ARITH_COL"||d.type==="ARITH_AGG_COL"||d.type==="WINDOW_COL")c=Y("number");else if(d.type==="GROUPING_COL")c=Y("number");else if(d.type==="LITERAL_COL"||d.type==="SCALAR_VALUE_COL")c=Y("string");else if(d.type==="STRFUNC_COL")c=xt(d.expr);else if(d.type==="SCALAR_SUBQUERY_COL")c=He();else if(d.type==="CASE_COL"){let f=d.expr.branches.map(E=>hr(E.result,l));d.expr.elseResult&&f.push(hr(d.expr.elseResult,l)),c=so(f)}else d.type==="AGGREGATE"&&(d.func==="MIN"||d.func==="MAX"||d.func==="MODE"?d.arg.type!=="WILDCARD"&&(c=ls(d.arg,l)):c=d.func==="GROUP_CONCAT"?Y("string"):Y("number"));c?.semantics&&p.set(d.alias,c.semantics)}let u=new Map;for(let d of i){let c=p.get(d)??l(ke(d))?.semantics;if(!c){let E=ke(d);E.tableAlias===null&&a.has(E.field)&&u.set(d,z({fieldType:"KSQL_AMBIGUOUS"}));continue}let f=c;if(c.fieldType==="STATUS"&&c.source&&e.orderMode!=="KINTONE_NATIVE"){let E=await cs(c.source.appId,t,r);E.enable&&E.states!==null&&(f={...c,optionOrder:new Map(E.states.map(R=>[R.name,R.index]))})}u.set(d,f)}return u}async function wn(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([Km(e,t,r),Bm(e,t,r),Fm(e,t,r,n)]);return{optionOrders:o,sortKinds:a,semantics:s}}async function Km(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 za(a.appId,t,r);for(let[l,p]of s.entries())n.has(l)||n.set(l,p)}for(let a of i){if(a.cteName!=null||!a.alias)continue;let s=await za(a.appId,t,r);for(let[l,p]of s.entries())n.set(`${a.alias}.${l}`,p)}return n}async function Bm(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 vc(a.appId,t,r);for(let[l,p]of s.entries())n.has(l)||n.set(l,p)}for(let a of i){if(a.cteName!=null||!a.alias)continue;let s=await vc(a.appId,t,r);for(let[l,p]of s.entries())n.set(`${a.alias}.${l}`,p)}return n}function up(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 $m=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function Gm(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||$m.has(o.fieldType))throw new Error(`ArgumentError: DML target field ${i} is not writable (${o.fieldType}).`)}}async function Me(e,t,r,n){let i=await J(e,r,n);return Gm(e,t,i),i}async function at(e,t,r,n,i){let o=new Map(r.map(a=>[a.code,a]));return t.some(a=>o.get(a)?.fieldType==="NUMBER")?Ye(e,n,i):void 0}function Bt(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),p=o[s]?.value??"",u=Se(p,l,n);if(!u.ok)throw new Error(`DmlValidationError: ${u.code} ${u.message} (row=${a+1}, field=${s})`);let d=["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(l.fieldType)&&Array.isArray(p)&&p.every(c=>typeof c=="object"&&c!==null&&"code"in c);o[s]={value:d?p:u.value}}})}async function Vm(e,t,r,n,i){let o=await Me(e.appId,e.fields,t,n),a=await Jr({statement:e,fieldInfos:o,dmlMaxRows:Le(r.dmlMaxRows,"dmlMaxRows",st),dmlMaxSubtableRows:Le(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",Te),statementNumber:i,loadNumberPrecision:()=>Ye(e.appId,t,n)});return Ay(e,a,o)}async function Wm(e,t,r,n,i){let{fieldInfos:o,prepared:a}=await cp(e,t,r,n,i);return Ty(e,a,o)}async function cp(e,t,r,n,i){let o=await Me(e.appId,e.fields,t,n),a=new Map(o.map(m=>[m.code,m.fieldType])),s=yp(e),l=new Set;for(let m of s){let y=Kt(m,e.keyFields.map(g=>a.get(g)==="NUMBER"));if(l.has(y))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(y)}let p=await On(e.appId,e.keyFields,s,t,r,a),u=s.map(m=>Cn(p,m)),d=new Map,c=[...new Set(u.filter(m=>m!==void 0))],f=["$id","$revision",...o.filter(m=>!m.inSubtable&&m.fieldType!=="FILE").map(m=>m.code)];for(let m of Tr(c,100)){let y=await t.getRecords({app:e.appId,query:`$id in (${m.join(",")}) limit 500`,fields:[...new Set(f)]});for(let g of y.records){let h=Number(g.$id?.value);Number.isSafeInteger(h)&&h>0&&d.set(h,g)}}let E=u.map((m,y)=>({sourceRowIndex:y,...m===void 0?{}:{targetId:m,snapshot:d.get(m)}})),R=await Su({statement:e,matches:E,fieldInfos:o,dmlMaxRows:Le(r.dmlMaxRows,"dmlMaxRows",st),dmlMaxSubtableRows:Le(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",Te),statementNumber:i,loadNumberPrecision:()=>Ye(e.appId,t,n)});return{fieldInfos:o,prepared:R}}async function Hm(e,t,r,n){if(r.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let i=await Me(e.appId,e.fields,t,n),o=await Jr({statement:e,fieldInfos:i,dmlMaxRows:Le(r.dmlMaxRows,"dmlMaxRows",st),dmlMaxSubtableRows:Le(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",Te),loadNumberPrecision:()=>Ye(e.appId,t,n)}),a=pa(o);if(r.confirm&&!await r.confirm(o.guards.parentRows,"INSERT",{statementIndex:0,statementCount:1,statementType:"INSERT",targetAppId:e.appId,applyDetail:lo(a),applyDiagnostic:a}))throw new ee("INSERT",o.guards.parentRows);let s=await Pu(o,t,a);return{...s,diagnostic:Ce(a,s)}}async function Ym(e,t,r,n){if(r.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let{prepared:i}=await cp(e,t,r,n,1),o=da(i);if(r.confirm){let s=lo(o);if(!await r.confirm(i.guards.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPSERT",targetAppId:e.appId,applyDetail:s,applyDiagnostic:o}))throw new ee("UPDATE",i.guards.parentRows)}let a=await Nu(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:Ce(o,a)}}function jm(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 lo(e,t=!0){let r=e.branches.find(c=>c.branch==="insert"),n=e.branches.find(c=>c.branch==="update"),i=e.branches.flatMap(c=>c.targets),o=jm(r?ji(r):[],n?ji(n):[]),a=qm(i),s=e.branches.reduce((c,f)=>c+(f.parentRows??0),0),l=i.filter(c=>c.targetKind==="SUBTABLE").reduce((c,f)=>c+(f.changedCount??0),0),p=o.reduce((c,f)=>c+f.appendRows,0),u=o.reduce((c,f)=>c+f.removeRows,0),d={kind:e.statementKind==="UPDATE"?"APPLY_PATCH":e.statementKind==="INSERT"?"APPLY_INSERT":"APPLY_UPSERT",parentRows:s,changedSubtableRows:l,addedSubtableRows:p,tables:o,...a.length>0?{multiValues:a}:{},deletedRows:u,deletedParentRows:e.branches.reduce((c,f)=>c+(f.deletedParentRows??0),0),revisionRequired:e.branches.some(c=>c.guards.revisionRequired),irreversible:!0,retryOnRevisionConflict:!1,...t?{nonTransactional:!0,partialSuccessPossible:!0}:{}};if(e.statementKind==="INSERT"&&r)return{...d,insertedParentRows:r.parentRows??0,initialSubtableRows:r.targets.filter(c=>c.targetKind==="SUBTABLE").reduce((c,f)=>c+(f.changedCount??0),0)};if(e.statementKind==="UPSERT"&&r&&n){let c=ji(r),f=ji(n);return{...d,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:c.reduce((E,R)=>E+R.appendRows,0),tables:c},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 d}function ji(e){return e.targets.filter(t=>t.targetKind==="SUBTABLE").map(t=>{let r=Mt(t,"APPEND"),n=Mt(t,"REMOVE");return{table:t.field,patchRows:(t.changedCount??0)-r-n,appendRows:r,removeRows:n}})}function Mt(e,t){return e.operations.filter(r=>r.kind===t).reduce((r,n)=>r+(n.count??0),0)}function qm(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:Mt(r,"ADD"),removedValues:Mt(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 pp(e,t,r,n,i,o){if(e.type==="INSERT"&&e.applyBlocks?.length)return Vm(e,t,r,n,o);if(e.type==="UPSERT"&&(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length))return Wm(e,t,r,n,o);if(e.type==="UPDATE"&&e.applyBlocks?.length){let a=await mp(e,t,r,n,o);if(a.type!=="VALIDATION")throw new Error("InternalError: APPLY VALIDATE ONLY returned a mutation result.");return a}return(await ds(e,t,r,n,i,o)).result}var ro=class extends Error{constructor(r,n){super(`RejectLimitExceededError: ${r}`);this.diagnostic=n;this.name="RejectLimitExceededError"}};async function ds(e,t,r,n,i,o,a=!0,s=!0){let l=e.type==="UPDATE"?"UPDATE":e.type.startsWith("UPSERT")?"UPSERT":"INSERT",p=e.type==="UPDATE"?["$id",...e.assignments.map(P=>P.field)]:[...e.fields];if(new Set(p).size!==p.length)throw new Error("ArgumentError: DML target fields contain duplicates.");let u=e.type==="UPDATE"?e.assignments.map(P=>P.field):e.fields,d=await Me(e.appId,u,t,n);e.type==="UPDATE"&&await yr(e,t,n);let c=new Map(d.map(P=>[P.code,P])),f=await at(e.appId,u,d,t,n),E=Fe(d,p),R=qu(E),m=(await zm(e,l,t,r,n,i,c,e.type==="UPDATE"?R:void 0)).sort((P,N)=>P.rowNumber-N.rowNumber),y=m.filter(P=>P.mode==="update"),g=e.type==="UPDATE"?Qm:e.type.startsWith("UPSERT")?P=>Zm(P,t,r.maxRecords??1e4):void 0,h=r.loadUpdateModeSnapshots??g,S=y.length>0&&h!==void 0,O=new Map;if(S){ia(y,u,d);let P=await h({appId:e.appId,candidates:y,fields:R}),N=new Map;for(let w of y){if(w.targetId===void 0)throw new Error(`InternalError: update-mode validation candidate has no targetId (row=${w.rowNumber}).`);let U=P.get(w.targetId);if(!U)throw new Error(`InternalError: update-mode snapshot is missing for record ${w.targetId}.`);let B=zu(U,w.record??{});N.set(w.rowNumber,B)}f===void 0&&[...N.values()].some(w=>Lt(w,E))&&(f=await Ye(e.appId,t,n));for(let w of y){let U=N.get(w.rowNumber);if(!U)throw new Error(`InternalError: validation post-image is missing for row ${w.rowNumber}.`);O.set(w.rowNumber,_t(U,E,f,o,w.rowNumber,l))}}let b=oa(m,l,p,u,d,o,f,e.checkGroups??[],a,s,{validateUpdateBuiltIns:!S}),{errors:L,invalidRows:I,invalidRowNumbers:_}=b;if(S){let P=new Map(b.candidateResults.map(N=>[N.rowNumber,N]));L=[],_=new Set;for(let N of m){let w=P.get(N.rowNumber);if(!w)throw new Error(`InternalError: validation detail is missing for row ${N.rowNumber}.`);if(N.mode==="create"){let K=[...w.preErrors,...w.builtInErrors,...w.checkErrors];L.push(...K),K.length>0&&_.add(N.rowNumber);continue}let U=O.get(N.rowNumber);if(!U)throw new Error(`InternalError: prepared post-image validation is missing for row ${N.rowNumber}.`);let B=Xu({rowNumber:N.rowNumber,setFields:u,normalizedPostImage:U.normalizedRecord,preErrors:w.preErrors,postImageErrors:U.errors,checkErrors:w.checkErrors});N.record=B.writeRecord,L.push(...B.errors);for(let K of B.invalidRowNumbers)_.add(K)}I=_.size}let C=[...p,...fr],v={type:"VALIDATION",operation:l,validatedRows:m.length,validRows:m.length-I,invalidRows:I,errorCount:L.length,columns:C,errors:L,...e.validationErrorTable?{errTable:e.validationErrorTable}:e.onErrorSkip&&e.errorTable?{errTable:e.errorTable}:{}},k=new Map;for(let P of p){if(P==="$id"){k.set(P,{sortKind:"number",fieldType:"RECORD_NUMBER",semantics:z({fieldType:"RECORD_NUMBER"})});continue}let N=c.get(P);N&&k.set(P,We(N,e.appId))}let A=new Set(["$err_statement","$err_row"]);for(let P of fr)k.set(P,Y(A.has(P)?"number":"string"));return Ar.set(v,k),{result:v,candidates:m,invalidRowNumbers:_,columnMeta:k}}async function Uc(e,t,r,n,i,o){let a=await ds(e,t,r,n,i,o),s=e.errorTable;if(!s)throw new Error("ArgumentError: ON ERROR SKIP requires INTO #error_table.");At(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 ro(`rejected rows (${a.result.invalidRows}) exceed REJECT LIMIT (${l}).`,a.result);let p=a.candidates.filter(E=>!a.invalidRowNumbers.has(E.rowNumber));if(r.confirm){let E=e.type.startsWith("INSERT")?"INSERT":"UPDATE";if(!await r.confirm(p.length,E))throw new ee(E,p.length)}let u={affectedRows:p.length,skippedRows:a.result.invalidRows,rejectLimit:l,errTable:s};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(y=>y.record)});E.push(m.ids)}return{type:"INSERT",createdIds:E,insertedCount:E.flat().length,...u}}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,...u}}let d=p.filter(E=>E.mode==="create"),c=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<d.length;E+=100){let R=await t.postRecords({app:e.appId,records:d.slice(E,E+100).map(m=>m.record)});f+=R.ids.length}for(let E=0;E<c.length;E+=100)await t.putRecords({app:e.appId,records:c.slice(E,E+100)});return{type:"UPSERT",insertedCount:f,updatedCount:c.length,...u}}async function zm(e,t,r,n,i,o,a,s){if(e.type==="UPDATE")return Jm(e,r,n,i,o,s);let l,p,u,d,c;if(e.type==="INSERT"||e.type==="UPSERT")kc(e,e.fields),c=new Map(e.fields.map(S=>[S,a.get(S)?.fieldType??""])),$t(e,c),l=e.values.map(S=>S.map((O,b)=>O.type==="CASE_VALUE"?mt(O.expr,{},a.get(e.fields[b])?.fieldType):O));else{let S=await Es.materialize(e,r,n,i,o,[...a.values()]),O=(e.checkGroups?.length??0)>0;if(S.columns.length<e.fields.length||!O&&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(O&&new Set(S.columns).size!==S.columns.length)throw ue("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");kc(e,S.columns),p=S.rows,u=S.importPresence,d=S.importRowErrors;let b=S.columnMeta;c=new Map(S.columns.map(L=>{let I=b?.get(L),_=I?.fieldType??(I?.semantics?.compareMode==="number"||I?.sortKind==="number"?"NUMBER":"SINGLE_LINE_TEXT");return[L,_]})),$t(e,c),l=S.rows.map(L=>S.columns.map(I=>L[I]??""))}let f=l.map((S,O)=>({rowNumber:O+1,operation:t,mode:"create",payload:new Map(e.fields.flatMap((b,L)=>u&&!u[O]?.has(b)?[]:[[b,S[L]]])),preErrors:[...d?.[O]??[]],record:{},evaluationRow:p?.[O]??Object.fromEntries(e.fields.map((b,L)=>[b,xe(S[L])])),evaluationFieldTypes:c}));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,O])=>[S,O.fieldType])),R=f.map(S=>e.keyFields.map(O=>xe(S.payload.get(O)))),m=e.keyFields.map(S=>E.get(S)==="NUMBER"),y=new Map;for(let S of R){let O=Kt(S,m);y.set(O,(y.get(O)??0)+1)}let g=oo.has(e);if(g&&[...y.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 h=await On(e.appId,e.keyFields,R,r,n,E);return f.forEach((S,O)=>{let b=R[O],L=Cn(h,b);S.mode=L===void 0?"create":"update",L!==void 0&&(S.targetId=L),e.keyFields.forEach((I,_)=>{b[_]===""&&S.preErrors.push({field:I,code:"ERR_KEY_EMPTY",message:`UPSERT \u30AD\u30FC ${I} \u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093`})}),!g&&(y.get(Kt(b,m))??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 fs(e){return e.checkGroups?pr(e.checkGroups):[]}function kc(e,t){let r=new Set(t);for(let n of fs(e)){if(n.tableAlias!==null)throw ue(`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 ue(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${n.field} \u306F\u8A55\u4FA1\u884C\u306B\u5B58\u5728\u3057\u307E\u305B\u3093`)}}var Xm=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE","KSQL_ARRAY"]);function $t(e,t){if(e.checkGroups)for(let r of Gl(e.checkGroups)){let n=r.tableAlias?`${r.tableAlias}.${r.field}`:r.field,i=t.get(n)??t.get(r.field);if(Xm.has(i??""))throw ue(`CHECK \u306E\u6BD4\u8F03\u3067\u306F ${i} \u30D5\u30A3\u30FC\u30EB\u30C9 ${n} \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`)}}async function Jm(e,t,r,n,i,o){if(e.from)return ty(e,e.from,t,r,n,i,o);await wp(e.assignments,t,r,n);let a=await Re(e.appId,t,n),s=dp(e,a);$t(e,Xa(a,e.appId));let l,p=new Map,u=new Map;if(ui(e)){let d=Go(e),c=[...new Set([...d.fields,...s,...o??[]])],f=await _e(t.getRecords,d.app,d.query,c,{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1,onLimit:"error"});u=zi(f.records),p=u,l=Wo(e,f.records,a).flatMap(E=>E.records)}else{let d=Gr(e);if(s.length>0){let c=[...new Set(["$id",...s,...o??[]])],f=await _e(t.getRecords,d.app,d.query,c,{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1,onLimit:"error"});u=zi(f.records),p=u,l=Vr(e,[...p.keys()],a).flatMap(E=>E.records)}else if(o){let c=await _e(t.getRecords,d.app,d.query,[...o],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1,onLimit:"error"});u=zi(c.records),l=Vr(e,[...u.keys()],a).flatMap(f=>f.records)}else{let c=await Ii(t.getRecords,d.app,d.query,{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1});l=Vr(e,c.ids,a).flatMap(f=>f.records)}}return l.sort((d,c)=>d.id-c.id).map((d,c)=>({rowNumber:c+1,operation:"UPDATE",mode:"update",payload:new Map([["$id",String(d.id)],...e.assignments.map(f=>[f.field,d.record[f.field]?.value??""])]),preErrors:[],record:d.record,targetId:d.id,validationSnapshot:u.get(d.id),evaluationRow:ey(p.get(d.id),e.appId),evaluationFieldTypes:Xa(a,e.appId)}))}function zi(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 Qm(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 Zm(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 we(`\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 Tr(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 p=l.$id?.value,u=Number(p);if(!Number.isSafeInteger(u)||u<=0)throw new Error(`InternalError: invalid $id in UPSERT validation snapshot: ${String(p)}.`);if(!i.has(u))throw new Error(`InternalError: unexpected $id in UPSERT validation snapshot: ${u}.`);if(o.has(u))throw new Error(`InternalError: duplicate $id in UPSERT validation snapshot: ${u}.`);o.set(u,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 dp(e,t){if(e.from)return[];let r=new Set;for(let n of fs(e)){if(n.tableAlias!==null&&n.tableAlias.toLowerCase()!==`app${e.appId}`.toLowerCase())throw ue(`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 ue(`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 ey(e,t){if(!e)return{};let r=tt(e,null);return Object.fromEntries([...Object.entries(r),...Object.entries(r).map(([n,i])=>[`APP${t}.${n}`,i])])}function Xa(e,t){return new Map([...e,...[...e].map(([r,n])=>[`APP${t}.${r}`,n]),["$id","RECORD_NUMBER"],[`APP${t}.$id`,"RECORD_NUMBER"]])}async function ty(e,t,r,n,i,o,a){let s=await Cp(e,t,r,i,o);$t(e,s.evaluationTypes);let l=await fp(e,t,r,n,i,o,a),p=await Re(e.appId,r,i),u=Yo(e,l,p).flatMap(f=>f.records),d=new Map(l.map(f=>[Number(f.target.$id?.value),f])),c=a?zi(l.map(f=>f.target)):new Map;return u.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:c.get(f.id),evaluationRow:rg(d.get(f.id),e.appId,t.alias),evaluationFieldTypes:s.evaluationTypes}))}var ry=op,ny=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);async function fp(e,t,r,n,i,o,a){let s=await iy(e,t,r,i),l=await Cp(e,t,r,i,o),p=[...new Set(e.assignments.filter(O=>O.value.type==="SOURCE_FIELD").map(O=>O.value.type==="SOURCE_FIELD"?O.value.field:"").concat(l.sourceFields))],u=[...new Set([t.joinKeyField,...p])],d=await oy(t,u,p,r,n,i,o),c=new Map,f=new Map;for(let O of d){if(!Object.prototype.hasOwnProperty.call(O,t.joinKeyField))throw new Error(`ArgumentError: UPDATE ... FROM source column ${t.joinKeyField} does not exist.`);let b=Mc(O[t.joinKeyField],s,"source");if(c.has(b))throw new Error(`ArgumentError: UPDATE ... FROM source has multiple rows for normalized key ${b}.`);c.set(b,O),f.set(b,String(O[t.joinKeyField]).trim())}if(c.size===0)return[];let E=n.maxRecords??1e4,R=[...new Set([...Iy(e),...l.targetFields,...a??[]])],m=t.targetFilter===null?"":Gr({...e,from:null,where:t.targetFilter,checkGroups:void 0}).query,y=[],g=new Set,h=0;for(let O of Tr([...f.values()],ry)){let b=`${t.targetJoinField} in (${O.map(to).join(",")})`,L=m?`(${b}) and (${m})`:b,I=await _e(r.getRecords,e.appId,L,R,{maxRecords:E,parallel:n.fetchParallel??1,onLimit:"error"});if(h+=I.records.length,h>E)throw new we(`\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 _ of I.records){let C=_.$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),y.push(_))}}let S=[];for(let O of y){let b=O[t.targetJoinField]?.value,L=Mc(b,s,"target");if(L===null)continue;let I=c.get(L);I!==void 0&&S.push({target:O,source:I})}return S}async function iy(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 oy(e,t,r,n,i,o,a){if(e.cteName!==null){let u=a?.get(e.cteName);if(!u)throw new Error(`ArgumentError: temp table ${e.cteName} is not available.`);for(let d of t)if(!u.columns.includes(d))throw new Error(`ArgumentError: UPDATE ... FROM source column ${d} does not exist.`);return u.rows}let s=await Re(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 u of r){if(u!=="$id"&&!s.has(u))throw new Error(`ArgumentError: UPDATE ... FROM source column ${u} does not exist.`);let d=u==="$id"?"RECORD_NUMBER":s.get(u);if(ny.has(d??""))throw new Error(`ArgumentError: UPDATE ... FROM does not support source field type ${d} (${u}).`)}return(await _e(n.getRecords,e.appId,"",t,{maxRecords:i.maxRecords??1e4,parallel:i.fetchParallel??1,onLimit:"error"})).records.map(u=>tt(u,null))}function Mc(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=Ie(e);if(n===null)throw new Error(`ArgumentError: UPDATE ... FROM ${r} key must be a finite decimal: ${e}`);return JSON.stringify(n)}async function Ln(e,t,r,n,i){let o=await ds(e,t,r,n,i,1,!1,!1);if(o.result.errors.length>0){let d=o.result.errors[0];throw new Error(`DmlValidationError: ${d.$err_code} ${d.$err_message} (row=${d.$err_row}, field=${d.$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 ee(s,a.length);if(e.type==="INSERT"||e.type==="INSERT_SELECT"){let d=[];for(let c=0;c<a.length;c+=100){let f=await t.postRecords({app:e.appId,records:a.slice(c,c+100).map(E=>E.record)});d.push(f.ids)}return{type:"INSERT",createdIds:d,insertedCount:d.flat().length}}if(e.type==="UPDATE"){let d=a.map(c=>({id:c.targetId,record:c.record}));for(let c=0;c<d.length;c+=100)await t.putRecords({app:e.appId,records:d.slice(c,c+100)});return{type:"UPDATE",updatedCount:d.length}}let l=a.filter(d=>d.mode==="create"),p=a.filter(d=>d.mode==="update").map(d=>({id:d.targetId,record:d.record})),u=0;for(let d=0;d<l.length;d+=100){let c=await t.postRecords({app:e.appId,records:l.slice(d,d+100).map(f=>f.record)});u+=c.ids.length}for(let d=0;d<p.length;d+=100)await t.putRecords({app:e.appId,records:p.slice(d,d+100)});return{type:"UPSERT",insertedCount:u,updatedCount:p.length}}async function ay(e,t,r,n){if(e.applyBlocks?.length)return Hm(e,t,r,n);if(e.checkGroups?.length)return Ln(e,t,r,n);if(e.subtableCode)return Ny(e,t,r,n);let i=await Me(e.appId,e.fields,t,n),o=await at(e.appId,e.fields,i,t,n),a=await Re(e.appId,t,n),s=li(e,a);Bt(s.flatMap(p=>p.records),e.fields,i,o);let l=[];for(let p of s){let u=await t.postRecords(p);l.push(u.ids)}return{type:"INSERT",createdIds:l,insertedCount:l.flat().length}}function sy(){return{type:"SELECT",distinct:!1,columns:[],from:{appId:0,alias:null,cteName:lt},joins:[],where:null,groupBy:[],having:null,orderMode:"CANONICAL",orderBy:[],limit:null,offset:null}}async function ly(e,t,r,n,i){if(!r.enableImport)throw new Error("UnsupportedError: IMPORT capability is disabled.");let o=ac(e.source.sourceName,r.importSource);if(e.targets?.some(d=>d.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(H=>H.kind==="SUBTABLE").map(H=>H.subtableCode));if(e.replaceSubtables.some(H=>!D.has(H)))throw new Error("ArgumentError: REPLACE SUBTABLES contains a table not declared in INTO.");for(let H of e.targets.filter(ie=>ie.kind==="SUBTABLE"))if(!H.rowIdSourceHeader||!e.replaceSubtables.includes(H.subtableCode))throw new Error(`ArgumentError: CSV subtable ${H.subtableCode} requires ROW ID SOURCE and REPLACE SUBTABLES declaration.`)}if(e.validationErrorTable&&!i)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");let d=e.targets,c=await J(e.appId,t,n),f=d.flatMap(D=>D.kind==="FIELD"?[D.field]:D.children),E=c.some(D=>f.includes(D.code)&&D.fieldType==="NUMBER")?await Ye(e.appId,t,n):void 0,R=await Gi(o,new Map),m=e.source.kind==="JSON"?pc(e.source,R,d,r.maxRecords??1e4):dc(e.source,R,d,e.replaceSubtables??[],r.maxRecords??1e4,e.recordNumberSourceHeader),y=e.source.kind==="CSV"?"UPDATE":e.keyFields?"UPSERT":"INSERT",g=mc(m,d,c,E,y);if(e.source.kind==="CSV")return uy(e,m,g,c,t,r,i);Fa(g,e.rejectLimit);let h=[...new Set(d.flatMap(D=>D.kind==="FIELD"?[D.field]:D.children))],S=Ba(g.errors,h),O=[...h,...Ka],b=g.invalidParentRows.size,L={preflight:"ACTUAL_DATA",parents:{total:g.parents.length,valid:g.parents.length-b,invalid:b,mutationCandidates:g.parents.filter(D=>D.valid).length},tables:Object.fromEntries(g.tableCounts),writesKintone:!1},I={type:"VALIDATION",operation:y,validatedRows:g.parents.length,validRows:g.parents.length-b,invalidRows:b,errorCount:S.length,columns:O,errors:S,importDetail:L,...e.validationErrorTable?{errTable:e.validationErrorTable}:{}};if(e.validationErrorTable&&i&&At(i,e.validationErrorTable,O,S,r.tempTableMaxRows??ht,new Map),e.validateOnly)return I;if(gc(m),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.");At(i,e.errorTable,O,S,r.tempTableMaxRows??ht,new Map)}let _=g.parents.filter(D=>D.valid),C=new Map(c.map(D=>[D.code,D.fieldType])),v=_.map(()=>{});if(e.keyFields){for(let Ae of e.keyFields)if(!e.fields.includes(Ae))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${Ae}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let D=e.keyFields.map(Ae=>C.get(Ae)==="NUMBER"),H=new Set,ie=_.map(Ae=>e.keyFields.map(Ht=>String(Ae.top[Ht]?.value??"")));for(let Ae of ie){let Ht=Kt(Ae,D);if(H.has(Ht))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");H.add(Ht)}let je=await On(e.appId,e.keyFields,ie,t,r,C);ie.forEach((Ae,Ht)=>{v[Ht]=Cn(je,Ae)})}let k=d.filter(D=>D.kind==="SUBTABLE").map(D=>D.subtableCode),A=new Map,P=v.filter(D=>D!==void 0);for(let D of Tr([...new Set(P)],100)){let H=await t.getRecords({app:e.appId,query:`$id in (${D.join(",")}) limit 500`,fields:["$id","$revision",...k]});for(let ie of H.records){let je=Number(ie.$id?.value),Ae=Number(ie.$revision?.value);Number.isFinite(je)&&A.set(je,{id:je,...Number.isFinite(Ae)?{revision:Ae}:{},record:ie})}}let N=hc(_,v,A),w={kind:"IMPORT_JSON_SUBTABLE",rowIdPolicy:"DROP_AND_RENUMBER_ALL",parentsToWrite:N.length,insertedParents:N.filter(D=>D.mode==="INSERT").length,updatedParents:N.filter(D=>D.mode==="UPDATE").length,hasDeletes:N.some(D=>D.tables.some(H=>H.deleteRows>0)),parents:N.map(D=>({parentRow:D.parentRow,mode:D.mode,...D.targetId===void 0?{}:{targetId:D.targetId},tables:D.tables}))};if(N.length>0){if(!r.confirm)throw new Error("UnsupportedError: JSON IMPORT subtable mutation requires explicit confirmation detail approval.");if(!await r.confirm(N.length,e.keyFields?"UPDATE":"INSERT",{statementIndex:0,statementCount:1,statementType:"IMPORT",targetAppId:e.appId,importDetail:w}))throw new ee(e.keyFields?"UPDATE":"INSERT",N.length)}let U=D=>new Map(Object.entries(D).map(([H,ie])=>[H,ie.value])),B=D=>yc(U(D.top),new Map([...D.subtables].map(([H,ie])=>[H,ie.map(je=>({values:U(je)}))]))),K=N.filter(D=>D.mode==="INSERT"),te=N.filter(D=>D.mode==="UPDATE"),F=[];for(let D=0;D<K.length;D+=100){let H=await t.postRecords({app:e.appId,records:K.slice(D,D+100).map(B)});F.push(H.ids)}for(let D=0;D<te.length;D+=100)await t.putRecords({app:e.appId,records:te.slice(D,D+100).map(H=>({id:H.targetId,...H.revision===void 0?{}:{revision:H.revision},record:B(H)}))});return e.keyFields?{type:"UPSERT",insertedCount:F.flat().length,updatedCount:te.length,affectedRows:N.length,skippedRows:g.invalidParentRows.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:w}:{type:"INSERT",createdIds:F,insertedCount:F.flat().length,affectedRows:N.length,skippedRows:g.invalidParentRows.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:w}}if(e.writeMode==="UPDATE_RECORD_NUMBER")return cy(e,o,t,r,n,i);let a={appId:e.appId,fields:e.fields,select:sy(),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};oo.set(s,l);let p=d=>(l.audit&&Object.assign(d,{importAudit:l.audit}),d);if(s.validateOnly){if(s.validationErrorTable&&!i)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");let d=await pp(s,t,{...r,onLimitReached:"error"},n,i,1);return s.validationErrorTable&&i&&At(i,s.validationErrorTable,d.columns,d.errors,r.tempTableMaxRows??ht,Ar.get(d)??new Map),p(d)}if(s.onErrorSkip){if(!i)throw new Error("ArgumentError: ON ERROR SKIP requires a batch.");let d=await(s.type==="UPSERT_SELECT",Uc(s,t,r,n,i,1));return p(d)}let u=await(s.type==="UPSERT_SELECT"?hp(s,t,r,n,i):Rp(s,t,r,n,i));return p(u)}async function uy(e,t,r,n,i,o,a){if(!e.recordNumberSourceHeader||!e.replaceSubtables?.length)throw new Error("InternalError: incomplete CSV subtable replacement AST.");Ac(t.records);let s=t.records.map(A=>A.recordNumberSourceValue??""),l=Va(s,e.recordNumberSourceHeader),p=[...e.replaceSubtables],u=[...new Set(n.filter(A=>!A.inSubtable&&A.fieldType==="SUBTABLE").map(A=>A.code))],d=await ye(i.getRecords,e.appId,"",["$id","$revision",...u],{maxRecords:o.maxRecords??1e4,parallel:o.fetchParallel??1,onLimit:"error"}),c=new Map,f=new Map;for(let A of d){let P=Number(A.$id?.value),N=Number(A.$revision?.value);if(Number.isFinite(P)){c.set(P,{id:P,...Number.isFinite(N)?{revision:N}:{},record:A});for(let w of u){let U=A[w]?.value;if(Array.isArray(U)){for(let B of U)if(B.id){let K=f.get(B.id)??[];K.push({parentId:P,table:w}),f.set(B.id,K)}}}}}let E=l.normalized.map(A=>A===null?void 0:Number(A)),R=r.parents.map((A,P)=>{let N=[...A.errors];for(let U of l.errors[P])N.push({operation:"UPDATE",parentRow:A.parentRow,field:U.field,code:U.code,message:U.message,sourceValues:t.records[P].top});let w=E[P];return w!==void 0&&!c.has(w)&&N.push({operation:"UPDATE",parentRow:A.parentRow,field:e.recordNumberSourceHeader,code:"ERR_RECORD_NUMBER_NOT_FOUND",message:`record number ${w} does not exist in APP${e.appId}`,sourceValues:t.records[P].top}),{...A,valid:N.length===0,errors:N}}),m=Sc(t.records,R,E,c,f),y=m.flatMap(A=>[...A.errors]),g=new Set(m.filter(A=>!A.valid).map(A=>A.parentRow)),h={...r,parents:R,errors:y,invalidParentRows:g};Fa(h,e.rejectLimit);let S=m.filter(A=>A.valid),O=m.flatMap(A=>A.tables),b=(A,P)=>O.filter(N=>N.table===A).reduce((N,w)=>N+Number(w[P]),0),L=Object.fromEntries(p.map(A=>[A,{existingRows:b(A,"existingRows"),inputRows:b(A,"inputRows"),updateRows:b(A,"updateRows"),addRows:b(A,"addRows"),deleteRows:b(A,"deleteRows"),rowIdNotFound:b(A,"rowIdNotFound")}])),I={kind:"IMPORT_CSV_SUBTABLE_REPLACE",rowIdPolicy:"PRESERVE_EXISTING",parentsToWrite:S.length,insertedParents:0,updatedParents:S.length,hasDeletes:S.some(A=>A.tables.some(P=>P.deleteRows>0)),totalDeleteRows:S.flatMap(A=>A.tables).reduce((A,P)=>A+P.deleteRows,0),rowIdNotFound:S.flatMap(A=>A.tables).reduce((A,P)=>A+P.rowIdNotFound,0),invalidParents:g.size,parents:S.map(A=>({parentRow:A.parentRow,mode:"UPDATE",targetId:A.targetId,tables:A.tables}))},_=[...new Set(e.targets.flatMap(A=>A.kind==="FIELD"?[A.field]:A.children))],C=Ba(y,_),v=[..._,...Ka];if(e.validateOnly){if(e.validationErrorTable&&!a)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return e.validationErrorTable&&a&&At(a,e.validationErrorTable,v,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:v,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:L,rowIdPolicy:"PRESERVE_EXISTING",rowIdNotFound:I.rowIdNotFound,writesKintone:!1}}}if(y.length&&!e.onErrorSkip){let A=y[0];throw new Error(`DmlValidationError: ${A.code} ${A.message} (row=${A.parentRow}, field=${A.field})`)}if(e.onErrorSkip){if(!a||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch and INTO error table.");At(a,e.errorTable,v,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 ee("UPDATE",S.length)}let k=A=>new Map(Object.entries(A).map(([P,N])=>[P,N.value]));for(let A of S){let P=$a(k(A.top),new Map([...A.subtables].map(([N,w])=>[N,w.map(U=>({...U.rowId?{rowId:U.rowId}:{},values:k(U.record)}))])),"PRESERVE");await i.putRecords({app:e.appId,records:[{id:A.targetId,...A.revision===void 0?{}:{revision:A.revision},record:P}]})}return{type:"UPDATE",updatedCount:S.length,affectedRows:S.length,skippedRows:g.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:I}}async function cy(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 Me(e.appId,e.fields,r,i),s=await at(e.appId,e.fields,a,r,i),l=await Gi(t,new Map),p=ka(e.source,l,n.maxRecords??1e4,e.fields,a,e.recordNumberSourceHeader),u=p.recordNumberSourceValues;if(!u)throw new Error("InternalError: record-number source values were not materialized.");let d=Va(u,e.recordNumberSourceHeader),c=new Set,f=[...new Set(d.normalized.filter(I=>I!==null))];for(let I=0;I<f.length;I+=100){let _=f.slice(I,I+100),C=await r.getRecords({app:e.appId,query:`$id in (${_.join(",")}) limit 500`,fields:["$id"]});for(let v of C.records){let k=v.$id?.value;typeof k=="string"&&k!==""&&c.add(k.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"])),m=p.rows.map((I,_)=>{let C=d.normalized[_],v=[...p.importRowErrors?.[_]??[],...d.errors[_]];return C!==null&&!c.has(C)&&v.push({field:e.recordNumberSourceHeader,code:"ERR_RECORD_NUMBER_NOT_FOUND",message:`record number ${C} does not exist in APP${e.appId}`}),{rowNumber:_+1,operation:"UPDATE",mode:"update",...C!==null&&c.has(C)?{targetId:Number(C)}:{},payload:new Map([[e.recordNumberSourceHeader,u[_]],...e.fields.map(k=>[k,I[k]??""])]),preErrors:v,record:{},evaluationRow:I,evaluationFieldTypes:R}}),y=[e.recordNumberSourceHeader,...e.fields],g=oa(m,"UPDATE",y,e.fields,a,1,s,e.checkGroups??[],!1),h=[...y,...fr],S={type:"VALIDATION",operation:"UPDATE",validatedRows:m.length,validRows:m.length-g.invalidRows,invalidRows:g.invalidRows,errorCount:g.errors.length,columns:h,errors:g.errors,...e.validationErrorTable??e.errorTable?{errTable:e.validationErrorTable??e.errorTable}:{}};if(Object.assign(S,{importAudit:p.importAudit}),e.validateOnly){if(e.validationErrorTable&&!o)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return e.validationErrorTable&&o&&At(o,e.validationErrorTable,h,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(At(o,e.errorTable,h,g.errors,n.tempTableMaxRows??ht,new Map),e.rejectLimit!=null&&g.invalidRows>e.rejectLimit)throw new ro(`rejected rows (${g.invalidRows}) exceed REJECT LIMIT (${e.rejectLimit}).`,S)}let O=m.filter(I=>!g.invalidRowNumbers.has(I.rowNumber));if(n.confirm&&!await n.confirm(O.length,"UPDATE"))throw new ee("UPDATE",O.length);let b=O.map(I=>({id:I.targetId,record:I.record}));for(let I=0;I<b.length;I+=100)await r.putRecords({app:e.appId,records:b.slice(I,I+100)});let L={type:"UPDATE",updatedCount:b.length,...e.onErrorSkip?{affectedRows:b.length,skippedRows:g.invalidRows,rejectLimit:e.rejectLimit??null,errTable:e.errorTable}:{}};return Object.assign(L,{insertedCount:0,importAudit:p.importAudit}),L}async function py(e,t,r,n,i,o){let a=oo.get(e);if(!a){let R=i&&i.size>0?await Ft(e.select,t,r,i,n,!0):await St(e.select,t,r,n,void 0,!0);return{rows:R.rows,columns:R.columns,columnMeta:he.get(R)}}let s=await Gi(a.handle,a.cache),l=r.maxRecords??1e4,p=new Map((o??[]).map(R=>[R.code,R])),u=e.fields.map(R=>({code:R,fieldType:p.get(R)?.fieldType??"SINGLE_LINE_TEXT"})),d=a.source.kind==="JSON"?Ua(a.source,s,u,l):ka(a.source,s,l,e.fields,o);if(a.audit=d.importAudit,a.source.kind==="JSON"||!a.source.projection)return d;let c=Tc(a.source.projection),f=new Map(i??[]);f.set(Ga,d);let E=await Ft(c,t,{...r,onLimitReached:"error"},f,n,!0);return{rows:E.rows,columns:E.columns,columnMeta:he.get(E)}}var Es={materialize:py};function Ep(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 Rp(e,t,r,n,i){if(e.checkGroups?.length)return Ln(e,t,r,n,i);let o=await Me(e.appId,e.fields,t,n),a=await at(e.appId,e.fields,o,t,n),s=await Es.materialize(e,t,r,n,i,o),{rows:l,columns:p}=s;if(Ep(s),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 ee("INSERT",l.length);let u=await Re(e.appId,t,n),d=l.map((f,E)=>{let R={};return e.fields.forEach((m,y)=>{if(s.importPresence&&!s.importPresence[E]?.has(m))return;let g=f[p[y]]??"";R[m]={value:up(g,u.get(m))}}),R});d.forEach(f=>Bt([f],e.fields.filter(E=>E in f),o,a));let c=[];for(let f=0;f<d.length;f+=100){let E=d.slice(f,f+100),R=await t.postRecords({app:e.appId,records:E});c.push(R.ids)}return{type:"INSERT",createdIds:c,insertedCount:c.flat().length}}async function xc(e,t,r,n,i){if(e.applyBlocks?.length)return mp(e,t,r,n);if(e.checkGroups?.length&&ot(e.where)){let E=await Me(e.appId,e.assignments.map(m=>m.field),t,n);await at(e.appId,e.assignments.map(m=>m.field),E,t,n);let R=await Re(e.appId,t,n);return dp(e,R),$t(e,Xa(R,e.appId)),await yr(e,t,n),{type:"UPDATE",updatedCount:0}}if(e.checkGroups?.length)return Ln(e,t,r,n,i);if(e.subtableCode)return await yr(e,t,n),Cy(e,t,r,n);let o=await Me(e.appId,e.assignments.map(E=>E.field),t,n),a=e.assignments.map(E=>E.field),s=await at(e.appId,a,o,t,n);if(await yr(e,t,n),ot(e.where))return{type:"UPDATE",updatedCount:0};if(e.from!=null)return wy(e,e.from,t,r,n,i);let l=r.maxRecords??1e4;await wp(e.assignments,t,r,n);let p=await Re(e.appId,t,n);if(ui(e)){let E=Go(e),m=(await _e(t.getRecords,E.app,E.query,[...E.fields],{maxRecords:l,parallel:r.fetchParallel??1})).records,y=Wo(e,m,p);if(Bt(y.flatMap(g=>g.records.map(h=>h.record)),a,o,s),r.confirm&&!await r.confirm(m.length,"UPDATE"))throw new ee("UPDATE",m.length);for(let g of y)await t.putRecords(g);return{type:"UPDATE",updatedCount:m.length}}let u=Gr(e),c=(await Ii(t.getRecords,u.app,u.query,{maxRecords:l,parallel:r.fetchParallel??1})).ids,f=Vr(e,c,p);if(Bt(f.flatMap(E=>E.records.map(R=>R.record)),a,o,s),r.confirm&&!await r.confirm(c.length,"UPDATE"))throw new ee("UPDATE",c.length);for(let E of f)await t.putRecords(E);return{type:"UPDATE",updatedCount:c.length}}async function mp(e,t,r,n,i=1){if(!e.validateOnly&&r.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");if(!Xe(e.where))return dy(e,t,r,n,i);let o=await J(e.appId,t,n),a=Ze(e,o),s=pi(e,o),l=Qo(e),p=await t.getRecords({app:e.appId,query:`$id = ${l} limit 2`,fields:[...s]});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 u=Number(p.records[0].$id?.value);if(u!==l)throw new Error(`ArgumentError: APPLY snapshot $id ${u} does not match requested $id ${l}.`);Ri(p.records[0]);let d=ou({statement:e,snapshot:p.records[0],fieldInfos:o,metadata:a}),c=Fe(o,e.assignments.map(O=>O.field)),f=Lt(d.postImage,c)?await Ye(e.appId,t,n):void 0,E=_t(d.postImage,c,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=Le(r.dmlMaxRows,"dmlMaxRows",st),m=Le(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",Te),y=d.parentRows>R||d.changedSubtableRows>m;if(e.validateOnly){let O=Zr({plans:[d],records:jr(d).records,validations:[],guards:{revisionRequired:!0,parentRows:d.parentRows,dmlMaxRows:R,subtableRows:d.changedSubtableRows,dmlMaxSubtableRows:m,wouldExceed:y}}),b={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:In(O.branches[0]),guards:bn(O.branches[0]),deletedRows:{total:d.tables.reduce((L,I)=>L+I.deletedRows,0),parentRows:d.tables.some(L=>L.deletedRows>0)?1:0},diagnostic:O};return Ar.set(b,uo(E.columns,o,e.appId)),b}if(d.parentRows>R)throw new Error(`ArgumentError: APPLY parent rows (${d.parentRows}) exceed dmlMaxRows (${R}).`);if(d.changedSubtableRows>m)throw new Error(`ArgumentError: APPLY changed subtable rows (${d.changedSubtableRows}) exceed dmlMaxSubtableRows (${m}).`);let g=fi(d,E.normalizedRecord),h=jr(g),S=Zr({plans:[g],records:h.records,validations:[],guards:{revisionRequired:!0,parentRows:d.parentRows,dmlMaxRows:R,subtableRows:d.changedSubtableRows,dmlMaxSubtableRows:m,wouldExceed:y}});if(r.confirm){let O=lo(S,!1);if(!await r.confirm(d.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPDATE",targetAppId:e.appId,applyDetail:O,applyDiagnostic:S}))throw new ee("UPDATE",d.parentRows)}return await t.putRecords(h),{type:"UPDATE",updatedCount:d.parentRows,diagnostic:Ce(S,{successfulChunks:1,successfulParents:d.parentRows})}}async function dy(e,t,r,n,i){let o=Le(r.dmlMaxRows,"dmlMaxRows",st),a=Le(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",Te),s=await J(e.appId,t,n),l=Ze(e,s),p;if(no(e))p=await my(e,t,r,s,n);else{let f=pi(e,s),E=Gr(e).query,R=o+1;p=await ye(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 u=await hi({statement:e,snapshots:p,fieldInfos:s,metadata:l,dmlMaxRows:o,dmlMaxSubtableRows:a,statementNumber:i,loadNumberPrecision:()=>Ye(e.appId,t,n)});if(e.validateOnly)return Sy(e,u,s);tl("phase15b",e);let d=Zr(u);if(r.confirm){let f=lo(d);if(!await r.confirm(u.guards.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPDATE",targetAppId:e.appId,applyDetail:f,applyDiagnostic:d}))throw new ee("UPDATE",u.guards.parentRows)}let c=await bu(u,t,d);return{...c,diagnostic:Ce(d,c)}}function no(e){return(e.applyBlocks?.length??0)>0&&!Xe(e.where)&&(ut(e.where)||se(e.where))}function fy(e){let t=e.type==="EXPLAIN"?e.query:e;return t.type==="UPDATE"&&no(t)&&se(t.where)}var Ey=`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
|
|
8
|
+
`){o();continue}let l=a();if("{}[]:,".includes(s)){o(),t.push({kind:"punct",value:s,...l});continue}if(s==='"'){o();let c="",f=!1;for(;r<e.length;){let E=o();if(E==='"'){f=!0;break}if(E.charCodeAt(0)<32&&it("string contains an unescaped control character",l.offset,l.line,l.column),E!=="\\"){c+=E;continue}r>=e.length&&it("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){c+=m[R];continue}R!=="u"&&it(`has invalid escape \\${R}`,r-2,n,Math.max(1,i-2));let y=e.slice(r,r+4);/^[0-9a-fA-F]{4}$/.test(y)||it("has invalid unicode escape",r,n,i);for(let g=0;g<4;g++)o();let h=Number.parseInt(y,16);if(h>=55296&&h<=56319){(e.slice(r,r+2)!=="\\u"||!/^[0-9a-fA-F]{4}$/.test(e.slice(r+2,r+6)))&&it("has an unpaired high surrogate",r,n,i),o(),o();let g=e.slice(r,r+4);for(let O=0;O<4;O++)o();let S=Number.parseInt(g,16);(S<56320||S>57343)&&it("has an invalid surrogate pair",r-4,n,Math.max(1,i-4)),c+=String.fromCodePoint(65536+(h-55296<<10)+S-56320)}else h>=56320&&h<=57343?it("has an unpaired low surrogate",r-4,n,Math.max(1,i-4)):c+=String.fromCharCode(h)}f||it("string is unterminated",l.offset,l.line,l.column),t.push({kind:"string",value:c,...l});continue}let p=e.slice(r),u=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/.exec(p)?.[0];if(u){for(let c=0;c<u.length;c++)o();t.push({kind:"number",lexeme:u,...l});continue}let d=/^(true|false|null)/.exec(p)?.[0];if(d){for(let c=0;c<d.length;c++)o();t.push({kind:"literal",value:d==="true"?!0:d==="false"?!1:null,...l});continue}it(`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 to(e){return e.kind==="eof"?"end of input":e.kind==="punct"?e.value:e.kind}function ro(e){if(e.byteLength===0)throw new M("JSON source is empty.");let t=xc(Mc(e)),r=0,n=(p,u=t[r])=>{throw new M(`JSON ${p} (offset=${u.offset}, line=${u.line}, column=${u.column}).`)},i=(p,u)=>p.kind==="punct"&&p.value===u,o=p=>{let u=t[r];(u.kind!=="punct"||u.value!==p)&&n(`expected ${p}; found ${to(u)}`,u),r++},a=()=>{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 u=new Map;if(i(t[r],"}"))return r++,u;for(;;){let d=t[r++];if(d.kind!=="string")return n(`object key must be a string; found ${to(d)}`,d);let c=d.value;u.has(c)&&n(`duplicate key ${JSON.stringify(c)}`,d),o(":"),u.set(c,a());let f=t[r];if(i(f,"}")){r++;break}o(",")}return u}if(p.kind==="punct"&&p.value==="["){let u=[];if(i(t[r],"]"))return r++,u;for(;;){u.push(a());let d=t[r];if(i(d,"]")){r++;break}o(",")}return u}return n(`expected a value; found ${to(p)}`,p)},s=a();t[r].kind!=="eof"&&n(`has trailing data; found ${to(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((p,u)=>{if(!(p instanceof Map))throw new M(`JSON record ${u+1} must be an object.`)}),l}var _m=new Set(["CHECK_BOX","MULTI_SELECT"]),Fc=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function Ye(e,t,r){throw new M(`JSON field validation failed (row=${e}, field=${t}): ${r}`)}function Dm(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof Map)&&e.kind==="number"}function vm(e,t,r){if(e===null)return"";if(typeof e=="string")return e;if(typeof e=="boolean"&&Ye(r,t.code,"boolean is not accepted."),Dm(e)){t.fieldType==="NUMBER"&&Ye(r,t.code,"precision target requires a JSON string."),(!/^-?(?:0|[1-9]\d*)$/.test(e.lexeme)||e.lexeme==="-0")&&Ye(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)||Ye(r,t.code,`JSON number ${e.lexeme} is outside the safe integer range.`),String(i)}e instanceof Map&&Ye(r,t.code,"object is not accepted for a flat field."),Array.isArray(e)||Ye(r,t.code,"unsupported value type."),!_m.has(t.fieldType)&&!Fc.has(t.fieldType)&&Ye(r,t.code,"array is accepted only for multi-value fields.");let n=e.map(i=>(typeof i!="string"&&Ye(r,t.code,"array elements must be strings."),i));return new Set(n).size!==n.length&&Ye(r,t.code,"array elements must not contain duplicates."),Fc.has(t.fieldType)?JSON.stringify(n.map(i=>({code:i}))):JSON.stringify(n)}function ja(e,t,r,n){if(t.encoding&&t.encoding!=="utf8")throw new M("JSON source is UTF-8 only.");let i=ro(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,p)=>{for(let c of l.keys())o.has(c)||Ye(p+1,c,"unknown key (not declared in INTO).");let u={},d=new Set;for(let c of r)l.has(c.code)&&(d.add(c.code),u[c.code]=vm(l.get(c.code),c,p+1));a.push(u),s.push(d)}),{rows:a,columns:r.map(l=>l.code),columnMeta:new Map(r.map(l=>[l.code,{fieldType:l.fieldType}])),importPresence:s}}function qa(e,t,r,n,i,o){let a=eo(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((y,h)=>[y,h]));for(let y of n)if(!l.has(y))throw new M(`ERR_IMPORT_MISSING_COLUMN: required header "${y}" is missing.`);let p=new Map(i.map(y=>[y.code,y])),u=new Set(n);if(o&&u.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 d=[],c=[],f=y=>a.rows.filter(h=>h[y]!=="").length,E=y=>y.fieldType==="FILE"?"FILE attachment is outside flat IMPORT scope":y.inSubtable||y.fieldType==="SUBTABLE"?"subtable field is not writable in Phase 3":y.writable===!1?`non-writable ${y.fieldType} field`:`known export-only ${y.fieldType} field`;for(let[y,h]of a.columns.entries()){if(u.has(h)||h===o)continue;let g=p.get(h);if(g)d.push({column:h,reason:E(g),nonEmptyCells:f(y)});else if(e.ignoreUnknownColumns)c.push({column:h,reason:"unknown column ignored by explicit policy",nonEmptyCells:f(y)});else throw new M(`ERR_IMPORT_UNKNOWN_COLUMN: unknown CSV header "${h}".`)}for(let y of n){let h=p.get(y);if(!h)throw new Error(`ArgumentError: DML target field ${y} does not exist.`);if(h.inSubtable||h.writable===!1||h.fieldType==="FILE"||h.fieldType==="SUBTABLE")throw new Error(`ArgumentError: DML target field ${y} is not writable (${h.fieldType}).`)}let R=[];return{rows:a.rows.map(y=>{let h=[],g={};for(let S of n){let O=y[l.get(S)];try{g[S]=kc(O,p.get(S)?.fieldType,{cliKintone:!0})}catch(P){if(!(P instanceof gn))throw P;g[S]=O,h.push({field:S,code:P.code,message:P.message})}}return R.push(h),g}),columns:[...n],columnMeta:new Map(n.map(y=>[y,{fieldType:p.get(y)?.fieldType??"SINGLE_LINE_TEXT"}])),importRowErrors:R,...o?{recordNumberSourceValues:a.rows.map(y=>y[l.get(o)])}:{},importAudit:{mapping:"BY_NAME",writtenColumns:[...n],ignoredKnownColumns:d,ignoredUnknownColumns:c}}}return{rows:a.rows.map(l=>Object.fromEntries(a.columns.map((p,u)=>[p,l[u]]))),columns:a.columns,columnMeta:new Map(a.columns.map(l=>[l,{fieldType:"SINGLE_LINE_TEXT"}]))}}var An=(e,t,r)=>{throw new M(`JSON subtable validation failed (parentRow=${e}, field=${t}): ${r}`)};function Kc(e,t,r,n,i=n){if(t.encoding&&t.encoding!=="utf8")throw new M("JSON source is UTF-8 only.");let o=ro(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,p)=>{let u=p+1;for(let E of l.keys())a.has(E)||An(u,E,"unknown key (not declared in INTO).");let d=new Map,c=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&&An(u,R,"object is not accepted for a top-level field."),d.set(R,m);continue}Array.isArray(m)||An(u,R,"subtable value must be an array."),f.add(R);let y=new Set(E.children),h=m.map((g,S)=>{g instanceof Map||An(u,R,`childRow=${S+1} must be an object.`);let O=g;for(let P of O.keys())y.has(P)||An(u,P,`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:O}});c.set(R,h)}return{rowNumber:u,top:d,subtables:c,replacementTables:f}})}}function Bc(e,t,r,n,i,o){let a=eo(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((c,f)=>[c,f]));if(o&&!s.has(o))throw new M(`ERR_IMPORT_MISSING_COLUMN: required header "${o}" is missing.`);let l=r.filter(c=>c.kind==="FIELD"),p=r.filter(c=>c.kind==="SUBTABLE");for(let c of l)if(!s.has(c.field))throw new M(`ERR_IMPORT_MISSING_COLUMN: required header "${c.field}" is missing.`);for(let c of p){if(!c.rowIdSourceHeader||!s.has(c.rowIdSourceHeader))throw new M(`ERR_IMPORT_MISSING_COLUMN: row-ID header for ${c.subtableCode} is missing.`);for(let f of c.children)if(!s.has(f))throw new M(`ERR_IMPORT_MISSING_COLUMN: required child header "${f}" is missing.`)}let u=[],d;if(a.rows.forEach((c,f)=>{let E=f+2,R=c[0];if(R!==""&&R!=="*")throw new M(`ERR_IMPORT_MARKER: invalid marker ${JSON.stringify(R)} at source row ${E}.`);if(R==="*"){if(u.length>=i)throw new M(`source parent rows exceed maxRecords (${i}).`);d={rowNumber:u.length+1,markerRowNumber:E,top:new Map(l.map(m=>[m.field,c[s.get(m.field)]])),subtables:new Map(p.map(m=>[m.subtableCode,[]])),replacementTables:new Set(n),...o?{recordNumberSourceValue:c[s.get(o)]}:{}},u.push(d)}else if(d){for(let m of l){let y=c[s.get(m.field)];if(y!==""&&y!==d.top.get(m.field))throw new M(`ERR_IMPORT_PARENT_VALUE_ON_CONTINUATION: ${m.field} at source row ${E}.`)}if(o){let m=c[s.get(o)];if(m!==""&&m!==d.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 y=c[s.get(m.rowIdSourceHeader)],h=new Map(m.children.map(S=>[S,c[s.get(S)]]));if(y===""&&[...h.values()].every(S=>S===""))continue;let g=d.subtables.get(m.subtableCode);g.push({childRowNumber:g.length+1,sourceRowNumber:E,...y?{rowId:y}:{},values:h})}}),u.length===0)throw new M("CSV has no parent rows.");return{records:u}}var Um=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),km=new Set(["SUBTABLE","FILE","CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function Ja(e,t){if(t!=null&&e.invalidParentRows.size>t)throw new Error(`RejectLimitExceededError: rejected parents (${e.invalidParentRows.size}) exceed REJECT LIMIT (${t}).`)}function Wc(e,t,r,n,i){let o=new Map(r.filter(c=>!c.inSubtable).map(c=>[c.code,c])),a=new Map;for(let c of r)if(c.inSubtable&&c.subtableCode){let f=a.get(c.subtableCode);f||a.set(c.subtableCode,f=new Map),f.set(c.code,c)}let s=t.filter(c=>c.kind==="FIELD"),l=t.filter(c=>c.kind==="SUBTABLE");for(let c of s)$c(c.field,o.get(c.field),void 0);for(let c of l){let f=o.get(c.subtableCode);if(!f||f.fieldType!=="SUBTABLE")throw new Error(`ArgumentError: IMPORT subtable ${c.subtableCode} does not exist.`);let E=a.get(c.subtableCode)??new Map;for(let R of c.children)$c(R,E.get(R),c.subtableCode)}let p=new Map(l.map(c=>[c.subtableCode,{parentsPresent:0,childRows:0,validChildRows:0,invalidChildRows:0}])),u=e.records.map(c=>Mm(c,s,l,o,a,n,i,p)),d=u.flatMap(c=>[...c.errors]);return{parents:u,errors:d,invalidParentRows:new Set(u.filter(c=>!c.valid).map(c=>c.parentRow)),tableCounts:p}}function Mm(e,t,r,n,i,o,a,s){let l=[],p={};for(let c of t)e.top.has(c.field)&&Xa(e.top.get(c.field),n.get(c.field),o,p,c.field,l,za(e,a,c.field));let u={};if(a==="INSERT")for(let c of n.values())c.fieldType==="SUBTABLE"||c.writable===!1||e.top.has(c.code)||Gc(c,o,u,l,za(e,a,c.code));let d=new Map;for(let c of r){if(!e.subtables.has(c.subtableCode))continue;let f=s.get(c.subtableCode);f.parentsPresent++;let E=[];for(let R of e.subtables.get(c.subtableCode)){f.childRows++;let m=l.length,y={},h=i.get(c.subtableCode);for(let g of c.children){let S=h.get(g),O=za(e,a,g,c.subtableCode,R.childRowNumber,R.sourceRowNumber??e.markerRowNumber);R.values.has(g)?Xa(R.values.get(g),S,o,y,g,l,O):Gc(S,o,y,l,O)}l.length===m?(f.validChildRows++,E.push(y)):f.invalidChildRows++}d.set(c.subtableCode,E)}return{parentRow:e.rowNumber,valid:l.length===0,top:p,subtables:d,replacementTables:e.replacementTables,errors:l}}function $c(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&&km.has(t.fieldType))throw new Error(`ArgumentError: IMPORT ${r?`child ${r}.${e}`:`field ${e}`} is not writable (${t.fieldType}).`)}function Gc(e,t,r,n,i){let o=vt(e.defaultValue)?"":e.defaultValue;Xa(o,e,t,r,e.code,n,i,!vt(e.defaultValue))}function Xa(e,t,r,n,i,o,a,s=!1){let l=xm(e),p=Se(l,t,r);p.ok?n[i]={value:Fm(l,t)?l:p.value}:o.push({...a,code:p.code,message:s?`\u65E2\u5B9A\u5024: ${p.message}`:p.message})}function xm(e){return Vc(e)?e.lexeme:Array.isArray(e)?e.map(t=>t instanceof Map?t:Vc(t)?t.lexeme:t):e}function Vc(e){return typeof e=="object"&&e!==null&&e.kind==="number"}function Fm(e,t){return Um.has(t.fieldType)&&Array.isArray(e)&&e.every(r=>typeof r=="object"&&r!==null&&"code"in r)}function za(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 Qa=["$err_statement","$err_operation","$err_row","$err_field","$err_subtable","$err_subrow","$err_source_row","$err_code","$err_message"];function Za(e,t,r=1){return e.map(n=>{let i={};for(let o of t)i[o]=n.sourceValues.get(o)==null?"":Km(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 Km(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 es(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 Hc(e,t){return es(e,t,"DROP")}function Yc(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 jc(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,p])=>{let u=a?.record[l]?.value,d=Array.isArray(u)?u.length:0;return{table:l,existingRows:d,inputRows:p.length,addRows:p.length,deleteRows:d}});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 Bm(e,t){let r=e[t]?.value;return Array.isArray(r)?r:[]}function qc(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 zc(e,t,r,n,i){return t.map((o,a)=>{let s=e[a],l=r[a],p=l===void 0?void 0:n.get(l),u=[...o.errors];if(!p||l===void 0)return{parentRow:o.parentRow,targetId:l??0,valid:!1,top:o.top,subtables:new Map,tables:[],errors:u};let d=new Map,c=[];for(let f of o.replacementTables){let E=Bm(p.record,f),R=new Set(E.map(P=>P.id).filter(P=>!!P)),m=s.subtables.get(f)??[],y=o.subtables.get(f)??[],h=0,g=0,S=0,O=m.map((P,_)=>{let N=y[_]??{};return P.rowId&&R.has(P.rowId)?(h++,{rowId:P.rowId,record:N}):(P.rowId&&((i.get(P.rowId)??[]).some(I=>I.parentId!==l||I.table!==f)&&u.push({operation:"UPDATE",parentRow:o.parentRow,field:P.rowId,subtable:f,subrow:P.childRowNumber,sourceRow:P.sourceRowNumber,code:"ERR_IMPORT_FIELD_OWNERSHIP",message:`rowIdOwnedElsewhere: ${P.rowId}`,sourceValues:P.values}),S++),g++,{record:N})});d.set(f,O),c.push({table:f,existingRows:E.length,inputRows:m.length,updateRows:h,addRows:g,deleteRows:E.length-h,rowIdNotFound:S})}return{parentRow:o.parentRow,targetId:l,...p.revision===void 0?{}:{revision:p.revision},valid:u.length===0,top:o.top,subtables:d,tables:c,errors:u}})}var ts="#__import_source";function Xc(e){return{...e,from:{appId:0,alias:null,cteName:ts}}}function $m(e){return/^[0-9]+$/.test(e)?e.replace(/^0+(?=\d)/,""):null}function rs(e,t){let r=e.map($m),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 Gm="\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",br=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"}},ge=new WeakMap;function Sp(e){return ge.get(e)}var Nr=new WeakMap,yo=new WeakMap,Jc=new WeakMap,Vm=1;function Wm(e,t){if(t)return t;let r=Jc.get(e);return r||(r=`client:${Vm++}`,Jc.set(e,r)),r}async function ps(e,t,r={}){let n=Date.now(),i=Wm(t,r.cacheContext),o=bh(e,r.enableImport===!0),a=Hm(),s=Ym(t,a),l={aborted:!1},p=Tp(s,l,!jm(o)),u=await zm(o,p,r,i);a.elapsedMs=Date.now()-n;let d={...qm(u,l),metrics:a};if(u.type==="SELECT"){let c=ge.get(u);c&&ge.set(d,c)}return d}function Hm(){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 Ym(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 Tp(e,t,r){return{...e,getRecords:async n=>{let i=await e.getRecords(n);if(i.searchAborted&&(t.aborted=!0,r))throw new br;return i}}}function jm(e){return e.type==="SELECT"||e.type==="UNION"||e.type==="WITH"}function qm(e,t){if(!t.aborted||e.type!=="SELECT")return e;let r=new Set(e.warnings??[]);return r.add(Gm),{...e,warnings:[...r]}}async function ds(e,t,r){return Dc(e,{select:n=>On(n,t,r),dml:n=>wp(n,t,r),prefilterDecomposition:async n=>{if(n.where===null)return null;let i=await Cr(n,t,r);return Ya(n,i)}})}async function zm(e,t,r,n){let i=await ds(e,t,n);e.type!=="EXPLAIN"&&vc(i);let o=ns(e);if(o!==null&&!nh(e))throw new Error(`ParseError: variable @${o} is not defined in a batch.`);if(Zn("phase15b",e),El("phase15b",e),dr(e),e.type!=="EXPLAIN"&&await iy(e,t,n),e.type==="IMPORT")return Qy(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 pp(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 Gp(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 Jm(e,t,r,n);case"SELECT":return It(e,t,r,n,void 0,r.captureColumnMeta===!0,r.captureColumnMeta===!0);case"UNION":return Up(e,t,r,n,r.captureColumnMeta===!0,r.captureColumnMeta===!0);case"WITH":return Sy(e,t,r,n,void 0,r.captureColumnMeta===!0);case"INSERT":return Xy(e,t,r,n);case"INSERT_SELECT":return Yp(e,t,r,n);case"UPSERT":return mh(e,t,r,n);case"UPSERT_SELECT":return Xp(e,t,r,n);case"UPDATE":return pp(e,t,r,n);case"DELETE":return Rh(e,t,r,n);case"REORDER":return Th(e,t,r,n);case"SHOW_APPS":return Jp(t);case"DESCRIBE":return Qp(e,t,n);case"EXPLAIN":return Oh(e,t,n,r.maxRecords??1e4,r.cursorMaxActive??2,e.query.type==="UPDATE"&&e.query.applyBlocks?.length?De(r.dmlMaxRows,"dmlMaxRows",lt):lt,e.query.type==="UPDATE"&&e.query.applyBlocks?.length?De(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",Te):Te,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 ey(e,t,r,n)}}var fs=["$id","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id","$err_count"],Es=["$id","$err_subtable","$err_field","$err_code","$err_count"];function Rs(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 Xm(e=!1){let t=e?Es:fs;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:F(r==="$id"||r==="$err_count"?"number":"string")}]))}async function Jm(e,t,r,n){if(e.errorTable)throw new Error("ArgumentError: VALIDATE INTO requires a batch.");return Qm(e,t,r,n)}async function Qm(e,t,r,n){let i=await Q(e.appId,t,n),o=new Map(i.filter(w=>!w.inSubtable).map(w=>[w.code,w])),a=new Set(i.filter(w=>w.inSubtable).map(w=>w.code)),s=ga(e,i),l=e.checkGroups??[],p=Rr(l);for(let w of p){if(w.field!=="$id"&&!o.has(w.field)&&!a.has(w.field))throw le(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${w.field} \u306F APP${e.appId} \u306B\u5B58\u5728\u3057\u307E\u305B\u3093`);if(w.field!=="$id"&&!o.has(w.field)&&a.has(w.field))throw new Error(`ArgumentError: VALIDATE \u306E CHECK \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${w.field} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let u=new Map([...o].map(([w,U])=>[w,U.fieldType]));u.set("$id","RECORD_NUMBER"),Ht(e,u);let d=Rs(e.where),c=[...new Set(["$id",...s.map(w=>w.subtableCode??w.field.code),...d,...p.map(w=>w.field)])];for(let w of d){if(w!=="$id"&&!o.has(w)&&!a.has(w))throw new Error(`ArgumentError: WHERE field ${w} does not exist in APP${e.appId}.`);if(w!=="$id"&&!o.has(w)&&a.has(w))throw new Error(`ArgumentError: VALIDATE \u306E WHERE \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${w} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let f=s.some(w=>w.field.fieldType==="NUMBER")?await ze(e.appId,t,n):void 0,E=w=>w.field==="$id"?q({fieldType:"__ID__"}):o.get(w.field)?.semantics??(o.has(w.field)?q(o.get(w.field)):void 0),R=Le(e.where,E);if(R.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Kt(R)}).`);let m=new Map([...o].map(([w,U])=>[w,U.fieldType])),y=new Map([...o.values()].flatMap(w=>w.optionOrder?[[w.code,new Set(Object.keys(w.optionOrder))]]:[])),h=e.where===null?null:R.capability==="EXACT_PUSHDOWN"?e.where:sr(e.where,{allowUnqualifiedFields:!0,fieldTypes:m,fieldOptions:y,allowKlike:!1}),g=h===null?"":$(h),O=(await ye(t.getRecords,e.appId,g,c,{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1,onLimit:"error"})).map(w=>({id:String(w.$id?.value??""),record:w,flat:nt(w,null)})).filter(w=>e.where===null||X(e.where,w.flat,U=>u.get(U.field))),P=[],_=new Map,N=new Map,L=new Set,I=0,v=w=>{if(L.add(w.id),I+=1,e.summary){let W=JSON.stringify([w.id,w.subtable??"",w.field,w.code]),H=N.get(W);H?H.$err_count=String(Number(H.$err_count)+1):N.set(W,{$id:w.id,$err_subtable:w.subtable??"",$err_field:w.field,$err_code:w.code,$err_count:"1"});return}let U=JSON.stringify([w.id,w.subtable??"",w.field,w.code,w.message]),K=_.get(U);K?(K.$err_count=String(Number(K.$err_count)+1),w.subrow!==void 0&&(K.$err_subrow=`${K.$err_subrow},${w.subrow}`,K.$err_subrow_id=`${K.$err_subrow_id},${w.subrowId??""}`)):_.set(U,{$id:w.id,$err_field:w.field,$err_code:w.code,$err_message:w.message,$err_value:w.value,$err_subtable:w.subtable??"",$err_subrow:w.subrow===void 0?"":String(w.subrow),$err_subrow_id:w.subrowId??"",$err_count:"1"})},k=s.filter(w=>!w.subtableCode),A=new Map;for(let w of s){if(!w.subtableCode)continue;let U=A.get(w.subtableCode)??[];U.push(w),A.set(w.subtableCode,U)}for(let w of O){for(let U of k){let K=w.record[U.field.code]?.value,W=Se(K,U.field,f);W.ok||v({id:w.id,field:U.field.code,code:W.code,message:W.message,value:tn(K,U.field.fieldType)})}for(let[U,K]of A){let W=w.record[U]?.value;if(Array.isArray(W))for(let H=0;H<W.length;H++){let ue=W[H];for(let D of K){let x=ue.value?.[D.field.code]?.value,ie=Se(x,D.field,f);if(!ie.ok){let ve=Ni(U,H,ue);v({id:w.id,field:D.field.code,code:ie.code,message:ie.message,value:tn(x,D.field.fieldType),...ve})}}}}for(let U of Ri(l,w.flat,K=>u.get(K.field)))v({id:w.id,field:"",code:"ERR_CHECK",message:U.message,value:""})}if(e.summary)P.push(...N.values());else for(let w of _.values()){let U=Number(w.$err_count);w.$err_subtable!==""&&U>=2&&(w.$err_message=`${w.$err_message}\uFF08${U}\u884C: ${w.$err_subrow}\uFF09`),P.push(w)}let C={type:"SELECT",columns:[...e.summary?Es:fs],rows:P,rowCount:P.length,validateStats:{errorRecords:L.size,errorCount:I}};return ge.set(C,Xm(e.summary===!0)),C}var St=1e4;function Tt(e,t,r,n,i,o){let a=e.get(t);if(a&&(a.columns.length!==r.length||a.columns.some((l,p)=>l!==r[p])||!Zm(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 Zm(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||!ui(i.semantics,n.semantics))return!1}return!0}function ns(e){if(Array.isArray(e)){for(let t of e){let r=ns(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=ns(r);if(n!==null)return n}}return null}var Cn=class extends Error{constructor(t){super(`AssertError: ${t}`),this.name="AssertError"}},Ir=class extends Error{constructor(t){super(t),this.name="ScalarSubqueryError"}};async function ey(e,t,r,n,i){let o=await no(e.left,t,r,n,i),a=e.left.type==="NUMBER"||e.left.type==="ARITH"?F("number"):F("string");if(e.op==="BETWEEN"){if(e.low===null||e.high===null)throw new Error("ArgumentError: malformed ASSERT statement.");let l=await no(e.low,t,r,n,i),p=await no(e.high,t,r,n,i);if(!_t(">=",o,l,a)||!_t("<=",o,p,a))throw new Cn(`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 no(e.right,t,r,n,i);if(!_t(e.op,o,s,a))throw new Cn(`assertion failed: ${e.text} (actual: ${o}).`);return{type:"ASSERT",condition:e.text}}async function no(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(is(e));case"SCALAR_SUBQUERY":try{return await ty(e.query,t,r,n,i)}catch(o){throw o instanceof Ir?new Cn(o.message):o}}}async function ty(e,t,r,n,i){let{query:o,probed:a}=ry(e),s=await Pn(o,t,r,n,i);if(s.columns.length!==1)throw new Ir(`scalar subquery returned ${s.columns.length} columns (expected 1 column).`);if(s.rowCount===0)throw new Ir("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 Ir(`scalar subquery returned ${l} (expected 1 row).`)}return s.rows[0]?.[s.columns[0]]??""}function ry(e){return Z(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 is(e){if(e.type==="NUMBER")return e.value;if(e.type==="ARITH"){let t=is(e.left),r=is(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 Cr(e,t,r,n,i=!1){let o=[e.from,...e.joins.map(c=>c.table)],a=i||We(e.where)?[...new Set(o.filter(c=>c.cteName===null).map(c=>c.appId))]:[],s=new Map(await Promise.all(a.map(async c=>{let f=await Q(c,t,r);return[c,new Map(f.map(E=>[E.code,E]))]}))),l=new Set,p=c=>{if(Array.isArray(c)){c.forEach(p);return}if(c===null||typeof c!="object")return;let f=c;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 c of e.columns)c.type==="CASE_COL"&&p(c.expr);let u=new Map;await Promise.all([...s].map(async([c,f])=>{if(![...l].some(m=>f.get(m)?.fieldType==="STATUS"))return;let R=await Ps(c,t,r);R&&u.set(c,R)}));let d=(c,f,E)=>{if(f==="$id")return Er(q({fieldType:"__ID__"}),c.appId,"$id");if(E&&c.subtableCode){if(f==="_rid")return F("string");if(f==="_idx"||f==="_pid")return F("number")}let R=s.get(c.appId)?.get(Ee(c,f));if(!R)return;let m=R.semantics??q(R),y=R.fieldType==="STATUS"&&u.has(c.appId)?{...m,optionOrder:u.get(c.appId)}:m;return Er(y,c.appId,R.code)};return c=>{if(c.tableAlias!==null){if(c.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null)return d(e.from,c.field,!1);let E=o.find(R=>_e(R)===c.tableAlias);return E?E.cteName!==null?n?.get(E.cteName)?.columnMeta?.get(c.field)?.semantics??F("string"):d(E,c.field,!0):void 0}if(e.joins.length===0)return e.from.cteName!==null?n?.get(e.from.cteName)?.columnMeta?.get(c.field)?.semantics??F("string"):d(e.from,c.field,!0);let f=o.flatMap(E=>{let R=E.cteName!==null?n?.get(E.cteName)?.columnMeta?.get(c.field)?.semantics:d(E,c.field,!0);return R?[R]:[]});if(f.length===1)return f[0];if(!o.some(E=>oo(E,c.field)!==void 0))return f.length>1?F("string"):void 0}}function ms(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=>We(i.condition))?!0:Object.values(n).some(t)};return e.columns.some(t)}function Ip(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(Ke(n.field)):n.type==="ARITH_COL"||n.type==="ARITH_AGG_COL"||n.type==="WINDOW_COL"?i=F("number"):n.type==="AGGREGATE"?n.func==="MIN"||n.func==="MAX"||n.func==="MODE"?n.arg.type!=="WILDCARD"&&(i=Is(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"?F("string"):F("number"):n.type==="STRFUNC_COL"?i=$t(n.expr).semantics:(n.type==="LITERAL_COL"||n.type==="SCALAR_SUBQUERY_COL"||n.type==="CASE_COL"||n.type==="SCALAR_VALUE_COL")&&(i=F("string")),i&&r.set(n.alias,i)}return n=>n.tableAlias===null&&r.has(n.field)?r.get(n.field):t(n)}async function On(e,t,r,n){if(e.where===null)return Le(null,()=>{});let i=await Cr(e,t,r,n);return Le(e.where,i)}function Kt(e){let t=e.reasons.find(n=>n.code==="WHERE_FIELD_UNRESOLVED"||n.code==="WHERE_OPERATOR_UNSUPPORTED"||n.code==="WHERE_OPERATOR_INVALID_FOR_FIELD_TYPE")??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 lo(e){return e.orderBy.length>0||e.columns.some(t=>t.type==="WINDOW_COL"&&t.orderBy.length>0)}async function wp(e,t,r){if(e.subtableCode||e.type==="UPDATE"&&e.from!=null)return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]};let n=We(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?Le(null,()=>{}):Le(e.where,o=>{if(o.field==="$id")return q({fieldType:"__ID__"});let a=i.get(o.field);return a?.semantics??(a?q(a):void 0)})}async function wr(e,t,r){if(e.subtableCode||e.type==="UPDATE"&&e.from!=null)return;let n=await wp(e,t,r);if(n.capability!=="EXACT_PUSHDOWN")throw new j(`WHERE predicate cannot be represented by kintone REST (${Kt(n)})`)}async function It(e,t,r,n,i,o=!1,a=!1){let s;if(await ho(e,t,n,i),sy(e))return s=cy(e),o&&ge.set(s,await as(e,s.columns,t,n,i,a)),s;let l=await ys(e,t,n,i);await Zp(e,t,r,n,i);let p=await On(e,t,n,i);if(p.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Kt(p)}).`);let u=be(e),d,c;if(p.capability==="SUPERSET_PREFILTER"){let g=await Cr(e,t,n,i),S=Ya(e,g);S.eligible&&Ha(e,S)&&(d=S.plan)}if(d===void 0&&p.capability==="EXACT_PUSHDOWN"&&e.where!==null){let g=null;try{g=$(e.where)}catch{g=null}c=Yi({select:e,selectMode:u,capability:p,context:{allowFullScanExact:!0},serializedWholeWhere:g,relativeFunctionNames:Mt(e.where)})??void 0,c&&(d=c.prefilterPlan)}let f=p.capability==="EXACT_PUSHDOWN"?u:"FULL_SCAN",E=await _n(e,t,n,i),R=lo(e)?(e.orderMode==="KINTONE_NATIVE"?fn:dn)({stmt:e,staticMode:f,whereCapability:p.capability,whereReasons:p.reasons,orderSemantics:E.semantics,maxRecords:r.maxRecords??1e4,hasKlike:ae(e.where)}):null;await dy(e,R?.kind==="CANONICAL_LOCAL"?"FULL_SCAN":f,t,n);let m=bp(e,r,R),h=c!==void 0&&(u==="FULL_SCAN"||R?.kind==="CANONICAL_LOCAL")?Tp(t,{aborted:!1},!0):t;try{f==="SIMPLE"?s=await py(e,h,m.effectiveOptions,n,R,E):s=await Ay(e,h,m.effectiveOptions,n,i,p.capability==="EXACT_PUSHDOWN"&&d===void 0,E,d,l)}catch(g){Pp(m,g)}return o&&ge.set(s,await as(e,s.columns,t,n,i,a)),s}async function ys(e,t,r,n){if(e.groupBy.length===0)return;let i=[e.from,...e.joins.map(p=>p.table)],o=await Promise.all(i.map(async p=>{if(p.cteName!==null){let f=n?.get(p.cteName);if(!f)throw new Error(`InternalError: materialized schema ${p.cteName} is not available for GROUP BY planning.`);return{kind:"MATERIALIZED",columns:f.columns}}let u=await Q(p.appId,t,r);if(!p.subtableCode)return{kind:"APP",fieldCodes:u.filter(f=>!f.inSubtable).map(f=>f.code)};let d=u.filter(f=>f.inSubtable&&f.subtableCode===p.subtableCode);return{kind:"SUBTABLE",childFieldCodes:(d.length>0?d:u.filter(f=>f.inSubtable&&f.subtableCode===void 0)).map(f=>f.code),parentFieldCodes:u.filter(f=>!f.inSubtable).map(f=>f.code)}})),a=uc(e,(p,u)=>o[u]),s=e.groupBy,l=cc(s,e.columns,a);return ny(e,s,l),l}function ny(e,t,r){let n=[e.from,...e.joins.map(a=>a.table)].flatMap(a=>a.cteName===null?[a.appId]:[]),i=[...new Set(n)],o=i.length===1?i[0]:e.from.cteName===null?e.from.appId:null;r.items.forEach((a,s)=>{if(a.kind==="EXPRESSION"||a.kind==="PHYSICAL"||a.kind==="ALIAS_SAFE")return;let l=t[s],p=l?.type==="FIELD_NAME"?l.name:"(expression)";if(a.kind==="UNKNOWN"){let u=o===null?"":` (APP${o})`;throw new Error(`ArgumentError: unknown field code(s): ${a.name}${u}`)}throw a.kind==="ALIAS_REJECT"?a.reason==="DUPLICATE"?new Error(`ArgumentError: GROUP BY alias ${p} is ambiguous across multiple SELECT columns (reason=GROUP_BY_ALIAS_AMBIGUOUS).`):a.reason==="POST_GROUP_ONLY"?new Error(`ArgumentError: GROUP BY alias ${p} requires post-group evaluation (reason=GROUP_BY_ALIAS_POST_GROUP_ONLY).`):new Error(`ArgumentError: GROUP BY alias ${p} depends on aggregate evaluation (reason=GROUP_BY_ALIAS_AGGREGATE).`):new Error(`InternalError: deferred GROUP BY field ${a.name} reached runtime planning.`)})}var Ln=new WeakMap;async function iy(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 ho(o,t,r);for(let s of Object.values(a))await i(s)};await i(e)}async function oy(e,t,r,n){let i=[e.from,...e.joins.map(u=>u.table)],o=i.filter(u=>u.cteName===null),a=new Map(await Promise.all([...new Set(o.map(u=>u.appId))].map(async u=>{let d=await Q(u,t,r);return[u,new Map(d.map(c=>[c.code,c]))]}))),s=(u,d)=>{if(d==="$id")return"$id";let c=Ee(u,d);return a.get(u.appId)?.has(c)?c:null},l=(u,d)=>{if(u.cteName===null)return!1;let c=n?.get(u.cteName);return c?c.columns.includes(d):!0},p=(u,d,c,f)=>{let E=i.filter(y=>y.cteName===null&&s(y,c.field)!==null).length,R=i.some(y=>l(y,c.field)),m=_e(u);return{canonicalId:`source:${d}:APP${u.appId}:${f}`,directKey:c.tableAlias&&m?`${c.tableAlias}.${c.field}`:c.field,unqualifiedBridgeKey:E===1&&!R?c.field:null,physical:!0}};return u=>{if(u.tableAlias!==null){let f=i.findIndex(m=>_e(m)===u.tableAlias);if(f<0)throw new Error(`ArgumentError: B65 field ${u.tableAlias}.${u.field} has an unknown table alias.`);let E=i[f];if(E.cteName!==null)throw new Error(`ArgumentError: B65 field ${u.tableAlias}.${u.field} resolves to materialized source ${E.cteName}; physical APP fields are required.`);let R=s(E,u.field);if(R===null)throw new Error(`ArgumentError: B65 field ${u.tableAlias}.${u.field} does not exist in APP${E.appId}.`);return p(E,f,u,R)}let d=i.flatMap((f,E)=>{if(f.cteName!==null)return[];let R=s(f,u.field);return R===null?[]:[{table:f,tableIndex:E,code:R}]}),c=i.filter(f=>l(f,u.field));if(d.length+c.length>1)throw new Error(`ArgumentError: B65 field ${u.field} is ambiguous across multiple sources.`);if(d.length===1&&c.length===0){let f=d[0];return p(f.table,f.tableIndex,u,f.code)}throw c.length===1?new Error(`ArgumentError: B65 field ${u.field} resolves to a materialized CTE/temp column; physical APP fields are required.`):new Error(`ArgumentError: B65 field ${u.field} does not exist in a physical APP source.`)}}async function ho(e,t,r,n){Ln.delete(e);let i=Z(e),o=JSON.stringify(e.columns).includes('"GROUPING_')||JSON.stringify(e.orderBy).includes('"GROUPING_');if(i.type==="NONE"&&!o)return;let a=await oy(e,t,r,n),s=Kl(e,a,xl);s&&Ln.set(e,s)}function ay(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 bp(e,t,r){let n=r?.kind==="CANONICAL_REST_TOP_N"||r?.kind==="KORDER_NATIVE"||r?.kind==="KORDER_CURSOR"?Ct({...e,orderBy:[]}):Ct(e),i=n.size>0&&t.onLimitReached==="truncate";return{reasons:n,effectiveOptions:i?{...t,onLimitReached:"error"}:t,truncateWasDisabled:i}}function Pp(e,t){throw e.reasons.size>0&&t instanceof Ie?new Ie(ay(e.reasons)+(e.truncateWasDisabled?"onLimit=truncate\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002":"")+t.message):t}async function Qc(e,t){try{return await t()}catch(r){Pp(e,r)}}function at(e){return e?.type==="BOOLEAN"&&e.value===!1}function sy(e){return e.from.appId===0&&e.from.cteName===ut}function uo(e){return e.type==="FIELD_REF"?!0:e.type==="ARITH"?uo(e.left)||uo(e.right):e.type==="STRING_FUNC"?hs(e):!1}function ly(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:Tn(e)}function Tn(e){return e.type==="FIELD"?!0:e.type==="STRING_FUNC"?hs(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?Tn(e.left)||Tn(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"?uo(r):Tn(r))):!1}function hs(e){return e.args.some(t=>ly(t))}function uy(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(uo(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"STRFUNC_COL":if(hs(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"SCALAR_VALUE_COL":if(Tn(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 cy(e){if(e.joins.length>0||e.where||Z(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.");uy(e);let t=xa([{}],e.columns),{rows:r,columns:n}=Hi(t,e.columns),i=Wi(r,e.limit,e.offset);return{type:"SELECT",rows:i,columns:n,rowCount:i.length,warnings:[]}}async function py(e,t,r,n,i,o){let a=i?.kind==="CANONICAL_REST_TOP_N"?_p(e):e,s=ei(a),l=i?.kind==="CANONICAL_LOCAL"?Ot(e,e.from):s.fields,p=await Ts(e,t,n),u=ws(e,p),d=e.columns.some(_=>_.type==="CASE_COL")?await Cr(e,t,n,void 0,ms(e)):void 0,c=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,y=e.limit===null?null:(e.offset??0)+e.limit,h=e.orderBy.length===0&&y!==null&&y<=c&&!ae(e.where)?y:void 0,g;if((i?.kind==="KORDER_NATIVE"||i?.kind==="KORDER_CURSOR")&&e.limit===0)g=[];else if(i?.kind==="KORDER_CURSOR"){let _=await ac({client:t,app:s.app,fields:s.fields,query:La(e),offset:e.offset??0,limit:e.limit});g=_.records,_.cleanupWarning&&f.add(_.cleanupWarning)}else if(m)g=(await t.getRecords({app:s.app,query:s.query,fields:s.fields})).records;else{let _=e.where?$(e.where):"";g=await ye(t.getRecords,s.app,_,l,{parallel:R,maxRecords:c,stopAfter:h,onLimit:E,onTruncate:N=>{f.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${N} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${N} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`)}})}let S=g.map(_=>nt(_,null));m||(S=ka(S,e.orderBy,o.optionOrders,o.sortKinds,o.semantics,Ma(e.columns,void 0,u.row,d)),S=Wi(S,e.limit,e.offset));let{rows:O,columns:P}=Hi(S,e.columns,void 0,u.row,void 0,d);return{type:"SELECT",rows:O,columns:P,rowCount:O.length,warnings:[...f]}}async function dy(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 p of s)l.add(p)};if(t==="SIMPLE"){let a=ei(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,Ot(e,s))}for(let[a,s]of i.entries()){let l=[...s].filter(c=>!lc(c));if(l.length===0)continue;let p=await Q(a,r,n);if(p.length===0)continue;let u=new Set(p.map(c=>c.code)),d=l.filter(c=>!u.has(c));if(d.length>0)throw new Error(`ArgumentError: unknown field code(s): ${d.join(", ")} (APP${a})`)}}function Np(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}function gs(e,t){if(e.joins.length===0||e.where===null||e.joins.some(u=>u.type!=="INNER"))return null;let r=[e.from,...e.joins.map(u=>u.table)];if(r.some(u=>u.alias===null||u.cteName!==null||!!u.subtableCode))return null;let n=r.map(u=>({alias:u.alias,appId:u.appId,sourceKind:"APP",fieldTypes:new Map([...t.fieldTypesByApp.get(u.appId)??new Map,["$id","__ID__"]]),fieldOptions:t.fieldOptionsByApp.get(u.appId)})),i=Zu(e.where,n),o=new Map,a=new Map;for(let u of i.items)a.set(u.targetAlias,ec(u,n)),o.set(u.targetAlias,u.predicate);let s=e.from.alias,l=o.get(s)??null,p=new Map(o);return p.delete(s),{joinPlan:i,queriesByAlias:a,mainCondition:l,joinConditions:p,appliedKlikes:i.appliedKlikes,allKlikes:i.allKlikes}}async function As(e,t,r){let n=new Map,i=(s,l)=>{if(l===null)return;let p=n.get(s);p?p.push(l):n.set(s,[l])};if(i(e.from.appId,Np(e)),e.joins.length>0&&e.where!==null&&e.joins.every(s=>s.type==="INNER")&&[e.from,...e.joins.map(s=>s.table)].every(s=>s.alias!==null&&s.cteName===null&&!s.subtableCode)){i(e.from.appId,e.where);for(let s of e.joins)i(s.table.appId,e.where)}if(e.where!==null)for(let s of e.joins){if(!s.table.alias||s.table.subtableCode||s.table.cteName!==null)continue;let l=$r(e.where,{tableAlias:s.table.alias});i(s.table.appId,l)}let a=await Promise.all([...n.entries()].map(async([s,l])=>{let[p,u]=await Promise.all([Re(s,t,r),Py(s,t,r)]),d=fy(l).filter(c=>p.get(c)==="STATUS");if(d.length>0){let c=await bs(s,t,r);if(c.enable&&c.states&&c.states.length>0){let f=new Set(c.states.map(E=>E.name));for(let E of d)u.set(E,f)}}return[s,p,u]}));return{fieldTypesByApp:new Map(a.map(([s,l])=>[s,l])),fieldOptionsByApp:new Map(a.map(([s,,l])=>[s,l]))}}function fy(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 ot(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"&&co(e.left.expr,t),e.right.type==="CASE_VALUE"&&co(e.right.expr,t);return;case"LOGICAL":ot(e.left,t),ot(e.right,t);return;case"NOT":case"GROUP":ot(e.expr,t);return;case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}function co(e,t){for(let r of e.branches)ot(r.condition,t)}function Ey(e){let t=[];ot(e.where,t),ot(e.having,t);for(let r of e.columns)r.type==="CASE_COL"&&co(r.expr,t);return t}function _e(e){return e.alias??e.cteName}function Cp(e,t){return[e.from,...e.joins.map(r=>r.table)].find(r=>_e(r)===t)}function Ss(e){return[e.from,...e.joins.map(t=>t.table)].filter(t=>t.cteName===null)}async function Ts(e,t,r){let n=Ey(e);if(n.length===0)return new Map;let i=new Set,o=Ss(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=Cp(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 Re(s,t,r)]));return new Map(a)}function Ke(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 Op(e,t,r){e!=="MIN"&&e!=="MAX"&&e!=="MODE"||t.type==="WILDCARD"||xt(t,r)}function xt(e,t){if(e.type==="FIELD_REF"){t.push(Ke(e.field));return}if(e.type==="FIELD"){t.push(e);return}if(e.type==="ARITH"){xt(e.left,t),xt(e.right,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){xt(e.left,t),xt(e.right,t);return}if(e.type==="STRING_FUNC"){for(let r of e.args)r.type!=="AGG_REF"&&r.type!=="AGG_ARITH"&&xt(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"&&xt(r,t)}function po(e,t){if(e.type==="AGG_REF"){Op(e.func,e.arg,t);return}e.type==="AGG_ARITH"&&(po(e.left,t),po(e.right,t))}function os(e,t){for(let r of e.args)r.type==="AGG_REF"||r.type==="AGG_ARITH"?po(r,t):In(r,t)}function In(e,t){if(e.type==="STRING_FUNC"){os(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){In(e.left,t),In(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"?os(n,t):n.type!=="ARRAY"&&n.type!=="FIELD_REF"&&n.type!=="ARITH"&&In(n,t)}}function Ry(e){let t=[];for(let r of e)r.type==="AGGREGATE"?Op(r.func,r.arg,t):r.type==="ARITH_AGG_COL"?po(r.expr,t):r.type==="STRFUNC_COL"?os(r.expr,t):r.type==="SCALAR_VALUE_COL"&&In(r.expr,t);return t}var my=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DROP_DOWN","RADIO_BUTTON","STATUS","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME"]);function yy(e){return e.sortKind!==void 0?e.sortKind:e.fieldType==="NUMBER"||e.fieldType==="RECORD_NUMBER"?"number":my.has(e.fieldType)?"string":void 0}async function Lp(e,t,r,n){let i=Ry(e.columns);if(i.length===0)return;let o=new Set,a=Ss(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=Cp(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,p=new Set(i.map(f=>f.field));await Promise.all([...s].map(async([f,E])=>{if(![...p].some(m=>E.get(m)?.fieldType==="STATUS"))return;let R=await Ps(f,t,r);R&&l.set(f,R)}));let u=[e.from,...e.joins.map(f=>f.table)],d=(f,E)=>{let R=f.semantics??q(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 m=u.find(y=>_e(y)===f.tableAlias);if(!m)return;if(m.cteName!==null)return n?.get(m.cteName)?.columnMeta?.get(f.field)?.semantics??F("string");E=s.get(m.appId)?.get(Ee(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??F("string");E=s.get(e.from.appId)?.get(Ee(e.from,f.field))}else{let m=u.flatMap(y=>{if(y.cteName!==null){let g=n?.get(y.cteName);return g?.columns.includes(f.field)?[g.columnMeta?.get(f.field)?.semantics??F("string")]:[]}let h=s.get(y.appId)?.get(Ee(y,f.field));return h?[d(h,y.appId)]:[]});return m.length!==1?void 0:m[0]}if(!E)return;let R=f.tableAlias!==null?u.find(m=>_e(m)===f.tableAlias):e.joins.length===0?e.from:void 0;return d(E,R?.appId??e.from.appId)}}function Ee(e,t){return e.subtableCode&&t.startsWith("_p.")?t.slice(3):t}function oo(e,t){if(e.subtableCode){if(t==="_rid")return"SINGLE_LINE_TEXT";if(t==="_idx"||t==="_pid")return"NUMBER"}}function je(e,t){let r=e.semantics??q(e);return{sortKind:yy(e),fieldType:e.fieldType,semantics:t===void 0?r:Er(r,t,e.code)}}function _p(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:F(e)}}function qe(){return{semantics:F("string","KSQL_UNKNOWN")}}function Dp(e="KSQL_ARRAY"){return{semantics:{fieldType:e,compareMode:"unsupported",inSubtable:!1,requiresCollectionOperators:!1}}}function Ft(e){if(e==="$id")return{sortKind:"number",fieldType:"__ID__",semantics:q({fieldType:"__ID__"})};if(e==="_rid")return Y("string");if(e==="_pid"||e==="_idx"||e==="$revision")return Y("number")}var hy=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function $t(e){if(e.func==="CAST"){let t=e.args[1];return t?.type==="STRING"&&t.value==="NUMBER"?Y("number"):Y("string")}return hy.has(e.func)?Y("number"):Y("string")}function Pr(e,t){return e.type==="STRING"?Y("string"):e.type==="ARRAY"?Dp():e.type==="NUMBER"||e.type==="ARITH"||e.type==="SCALAR_ARITH"?Y("number"):e.type==="STRING_FUNC"?$t(e):e.type==="FIELD_REF"?t(Ke(e.field))??qe():e.type==="FIELD"?t(e)??qe():qe()}function go(e){if(e.length===0)return qe();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&&ui(r(n.semantics),r(t.semantics)))?e.every(i=>ui(i.semantics,t.semantics))?t:{...t,semantics:r(t.semantics)}:e.some(n=>n.semantics?.compareMode==="unsupported")?Dp("KSQL_MIXED_UNSUPPORTED"):qe()}function Is(e,t){if(e.type==="FIELD_REF")return t(Ke(e.field))??qe();if(e.type==="FIELD")return t(e)??qe();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 $t(e);let r=e.branches.map(n=>Pr(n.result,t));return e.elseResult&&r.push(Pr(e.elseResult,t)),go(r)}function gy(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 as(e,t,r,n,i,o=!1){let a=new Map;gy(e)&&await Promise.all(Ss(e).map(async R=>{if(a.has(R.appId))return;let m=await Q(R.appId,r,n);a.set(R.appId,new Map(m.map(y=>[y.code,y])))}));let s=[e.from,...e.joins.map(R=>R.table)],l=o&&i===void 0&&s.every(R=>R.cteName===null),p=R=>{if(R.tableAlias!==null){if(R.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){let g=a.get(e.from.appId)?.get(R.field);return g?je(g,e.from.appId):void 0}let y=s.find(g=>_e(g)===R.tableAlias);if(!y)return;if(y.cteName!==null)return i?.get(y.cteName)?.columnMeta?.get(R.field);let h=a.get(y.appId)?.get(Ee(y,R.field));return h?je(h,y.appId):Ft(R.field)}if(e.joins.length===0){if(e.from.cteName!==null)return i?.get(e.from.cteName)?.columnMeta?.get(R.field);let y=a.get(e.from.appId)?.get(Ee(e.from,R.field));return y?je(y,e.from.appId):Ft(R.field)}let m=s.flatMap(y=>{if(y.cteName!==null){let S=i?.get(y.cteName);return S?.columns.includes(R.field)?[S.columnMeta?.get(R.field)]:[]}let h=a.get(y.appId)?.get(Ee(y,R.field)),g=h?je(h,y.appId):Ft(R.field);return g?[g]:[]});return m.length===1?m[0]:void 0},u=R=>{if(!l)return;let m=s.filter(y=>{if(R.tableAlias!==null&&_e(y)!==R.tableAlias)return!1;let h=Ee(y,R.field);return a.get(y.appId)?.has(h)===!0||Ft(R.field)!==void 0});return m.length===1?m[0].appId:void 0},d=(R,m)=>{let y=u(m);return R&&y!==void 0?{...R,publicSourceApp:y}:R},c=new Map,f=e.columns.some(R=>R.type==="WILDCARD"||R.type==="PARENT_WILDCARD");if(e.columns.length===1&&(e.columns[0].type==="WILDCARD"||e.columns[0].type==="PARENT_WILDCARD")){for(let R of t){let m=Ke(R),y=d(p(m),m);y&&c.set(R,y)}return c}if(f)for(let R of t){let m=Ke(R),y=d(p(m),m);y&&c.set(R,y)}return e.columns.filter(R=>R.type!=="WILDCARD"&&R.type!=="PARENT_WILDCARD").forEach((R,m)=>{let y=f?"alias"in R&&R.alias?R.alias:void 0:t[m];if(!y)return;let h;if(R.type==="FIELD"){let g=Ke(R.field);h=d(p(g),g)}else if(R.type==="AGGREGATE")R.func==="GROUP_CONCAT"?h=Y("string"):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"?h=Y("number"):(R.func==="MIN"||R.func==="MAX"||R.func==="MODE")&&R.arg.type!=="WILDCARD"&&(h=Is(R.arg,p));else if(R.type==="ARITH_AGG_COL"||R.type==="ARITH_COL")h=Y("number");else if(R.type==="GROUPING_COL")h=Y("number");else if(R.type==="LITERAL_COL")h=Y("string");else if(R.type==="SCALAR_VALUE_COL"){let g=R.expr;g.type==="STRING_FUNC"?h=$t(g):g.type==="NUMBER"||g.type==="SCALAR_ARITH"?h=Y("number"):g.type==="FIELD"?h=p(g):h=Y("string")}else if(R.type==="STRFUNC_COL")h=$t(R.expr);else if(R.type==="WINDOW_COL")h=Y("number");else if(R.type==="CASE_COL"){let g=R.expr.branches.map(S=>Pr(S.result,p));R.expr.elseResult&&g.push(Pr(R.expr.elseResult,p)),h=go(g)}else R.type==="SCALAR_SUBQUERY_COL"&&(h=qe());h&&c.set(y,h)}),c}function vp(e,t){let r=ge.get(e),n=ge.get(t),i=new Map;return e.columns.forEach((o,a)=>{let s=r?.get(o),l=t.columns[a],p=l===void 0?void 0:n?.get(l);if(s&&p){let u=go([s,p]),d=s.publicSourceApp===p.publicSourceApp?s.publicSourceApp:void 0,{publicSourceApp:c,...f}=u;i.set(o,d===void 0?f:{...f,publicSourceApp:d})}else(s||p)&&i.set(o,qe())}),i}function ws(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 p=r.find(u=>_e(u)===s.tableAlias);return!p||p.cteName!==null?void 0:oo(p,s.field)??t.get(p.appId)?.get(Ee(p,s.field))}if(e.joins.length===0)return e.from.cteName!==null?void 0:oo(e.from,s.field)??t.get(e.from.appId)?.get(Ee(e.from,s.field));if(r.some(p=>p.cteName!==null))return;let l=n.flatMap(p=>{let u=oo(p,s.field)??t.get(p.appId)?.get(Ee(p,s.field));return u?[u]:[]});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 Ay(e,t,r,n,i,o=!0,a,s,l){let p=r.maxRecords??1e4,u=new Set,d=r.fetchParallel??1;await Promise.all([Un(e.where,t,r,n,i),Un(e.having,t,r,n,i)]);let[c,f,E]=await Promise.all([As(e,t,n),Ts(e,t,n),Lp(e,t,n,i)]),R=ws(e,f),m=await Cr(e,t,n,i,We(e.having)||ms(e)),y=Ip(e,m),h=gs(e,c)??ur(e,c);Vo(h);let g=t,S=h.mainCondition,O=h.joinConditions;if(s&&o)throw new Error("internal error: relative-date prefilter must disable original WHERE pushdown.");let P=s?s.prefilterWhere:S,_=await td(e.columns,t,r,n,i),N=at(e.where),L=N?Promise.resolve([]):wn(e,e.from,g,p,d,!0,r.onLimitReached??"error",u,P,o,l),I=[],v=[];for(let H of e.joins){if(N){I.push({join:H,promise:Promise.resolve([])});continue}let ue=H.table.alias?O.get(H.table.alias)??null:null;ue!==null?I.push({join:H,promise:wn(e,H.table,g,p,d,!1,r.onLimitReached??"error",u,ue,!0,l)}):v.push(H)}let k=a?Promise.resolve(a):_n(e,t,n,i);k.catch(()=>{});let A=await L,b=new Map;b.set(e.from.alias,A);for(let{join:H,promise:ue}of I)b.set(H.table.alias,await ue);await Promise.all(v.map(async H=>{let D=await Kp(e,H,b,g,p,d,r.onLimitReached??"error",u,null,l,"")??await wn(e,H.table,g,p,d,!1,r.onLimitReached??"error",u,null,!0,l,"");b.set(H.table.alias,D)}));let{optionOrders:C,sortKinds:w,semantics:U}=await k,{rows:K,columns:W}=Ba({tables:b,stmt:e,scalarCache:_,optionOrders:C,sortKinds:w,orderSemantics:U,fieldTypeResolver:R.row,fieldSemanticsResolver:m,havingFieldTypeResolver:R.having,havingFieldSemanticsResolver:y,aggregateSortKindResolver:E,appliedKlikes:s?.appliedKlikes??h.appliedKlikes,...s?{residualWhere:s.residualWhere}:{},resolvedGroupingSpec:Ln.get(e),plainGroupByPlan:l});return{type:"SELECT",rows:K,columns:W,rowCount:K.length,warnings:[...u]}}async function Up(e,t,r,n,i=!1,o=!1){let[a,s]=await Promise.all([e.left.type==="UNION"?Up(e.left,t,r,n,i,o):It(e.left,t,r,n,void 0,i,o),It(e.right,t,r,n,void 0,i,o)]),l=a.columns,p=s.columns,u=s.rows.map(E=>{let R={};return l.forEach((m,y)=>{R[m]=E[p[y]??m]??""}),R}),d=[...a.rows,...u],c=e.all?d:kp(d,l),f={type:"SELECT",rows:c,columns:l,rowCount:c.length};return i&&ge.set(f,vp(a,s)),f}function kp(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 Sy(e,t,r,n,i,o=!1){if((i==null||i.size===0)&&ft(e))return It(Et(e),t,r,n,void 0,o,!1);let a=new Map(i??[]);for(let s of e.ctes){let l;s.query.type==="SHOW_APPS"?l=await Jp(t):s.query.type==="DESCRIBE"?l=await Qp(s.query,t,n):l=await Gt(s.query,t,r,a,n,!0),a.set(s.name,{rows:l.rows,columns:l.columns,columnMeta:ge.get(l)})}return Gt(e.query,t,r,a,n,o)}async function Gt(e,t,r,n,i,o=!1){if(e.type==="UNION"){let[l,p]=await Promise.all([Gt(e.left,t,r,n,i,o),Gt(e.right,t,r,n,i,o)]),u=l.columns,d=p.columns,c=p.rows.map(m=>{let y={};return u.forEach((h,g)=>{y[h]=m[d[g]??h]??""}),y}),f=[...l.rows,...c],E=e.all?f:kp(f,u),R={type:"SELECT",rows:E,columns:u,rowCount:E.length};return o&&ge.set(R,vp(l,p)),R}if(!(e.from.cteName!=null&&e.from.cteName!==ut||e.joins.some(l=>l.table.cteName!=null)))return It(e,t,r,i,n,o,!1);let s=await Ty(e,t,r,n,i);return o&&ge.set(s,await as(e,s.columns,t,i,n)),s}async function Ty(e,t,r,n,i){await ho(e,t,i,n);let o=Ln.get(e),a=await ys(e,t,i,n),s=new Set,l=D=>{if(D.alias!==null||D.cteName===null)return D;let x=_e(D);return s.add(x),{...D,alias:x}};e={...e,from:l(e.from),joins:e.joins.map(D=>({...D,table:l(D.table)}))};let p=new Set;for(let D of[e.from,...e.joins.map(x=>x.table)]){let x=_e(D);if(x!==null){if(p.has(x))throw new Error(`ArgumentError: effective alias ${x} is used by multiple tables.`);p.add(x)}}let u=D=>{let x=n.get(D);if(!x)throw new Error(`ArgumentError: materialized source ${D} is not available.`);return x};for(let D of[e.from,...e.joins.map(x=>x.table)])D.cteName!==null&&u(D.cteName);let d=r.maxRecords??1e4,c=new Set,f=r.fetchParallel??1;await Promise.all([Un(e.where,t,r,i,n),Un(e.having,t,r,i,n),Zp(e,t,r,i,n)]);let E=await On(e,t,i,n);if(E.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Kt(E)}).`);let R=await _n(e,t,i,n),m=lo(e)?(e.orderMode==="KINTONE_NATIVE"?fn:dn)({stmt:e,staticMode:"FULL_SCAN",whereCapability:E.capability,whereReasons:E.reasons,orderSemantics:R.semantics,maxRecords:d,hasKlike:ae(e.where)}):null,y=bp(e,r,m),h=y.effectiveOptions,[g,S,O]=await Promise.all([As(e,t,i),Ts(e,t,i),Lp(e,t,i,n)]),P=ws(e,S),_=await Cr(e,t,i,n,We(e.having)||ms(e)),N=Ip(e,_),L=gs(e,g)??ur(e,g);Vo(L);let I=t,v=await td(e.columns,t,h,i,n),k=Promise.resolve(R);k.catch(()=>{});let A=new Map,b=new Map;if(e.from.cteName!=null){let D=u(e.from.cteName);A.set(e.from.alias,D.rows.map(Zc)),b.set(e.from.alias,D.columns)}else{let D=await Qc(y,()=>wn(e,e.from,I,d,f,!0,h.onLimitReached??"error",c,L.mainCondition,E.capability==="EXACT_PUSHDOWN",a));A.set(e.from.alias,D)}let C=e.joins.map(D=>Qc(y,async()=>{if(D.table.cteName!=null){let x=u(D.table.cteName);A.set(D.table.alias,x.rows.map(Zc)),b.set(D.table.alias,x.columns)}else{let x=D.table.alias?L.joinConditions.get(D.table.alias)??null:null,ve=await Kp(e,D,A,I,d,f,h.onLimitReached??"error",c,x,a)??await wn(e,D.table,I,d,f,!1,h.onLimitReached??"error",c,x,!0,a);A.set(D.table.alias,ve)}}));await Promise.all(C);let{optionOrders:w,sortKinds:U,semantics:K}=await k,W=e.joins.length===0&&e.from.cteName!=null?u(e.from.cteName).columns:void 0,{rows:H,columns:ue}=Ba({tables:A,stmt:e,scalarCache:v,optionOrders:w,sortKinds:U,orderSemantics:K,fieldTypeResolver:P.row,fieldSemanticsResolver:_,havingFieldTypeResolver:P.having,havingFieldSemanticsResolver:N,aggregateSortKindResolver:O,appliedKlikes:L.appliedKlikes,sourceColumns:W,tableColumns:b,hiddenQualifiedAliases:s,resolvedGroupingSpec:o,plainGroupByPlan:a});return{type:"SELECT",rows:H,columns:ue,rowCount:H.length,warnings:[...c]}}function Zc(e){return Object.fromEntries(Object.entries(e).map(([t,r])=>[t,{value:r??""}]))}async function wn(e,t,r,n,i,o,a,s,l=null,p=!0,u,d=""){let c=Ot(e,t,u),f=y=>{s.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${y} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${y} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`)};if(!t.subtableCode){let y=o&&p?bl(e,t.appId).query:"",h=[l!==null?$(l):"",d].filter(P=>P!==""),g=h.length>1?h.map(P=>`(${P})`).join(" and "):h[0]??"",S=y&&g?`(${y}) and (${g})`:y||g;return(await ke(r.getRecords,t.appId,S,c,{parallel:i,maxRecords:n,onLimit:a,onTruncate:f})).records}let m=(await ke(r.getRecords,t.appId,"",c,{parallel:i,maxRecords:n,onLimit:a,onTruncate:f})).records;return wc(m,t.subtableCode)}var Mp=50;function Iy(e){let t=we(e);return t!==null?JSON.stringify(t):e}function ss(e){return JSON.stringify(e)}function Vt(e,t){return JSON.stringify(e.map((r,n)=>t[n]?Iy(r):r))}function Mn(e,t){let r=e.raw.get(ss(t));if(r!==void 0)return r;if(e.numericKey.some(Boolean))return e.normalized.get(Vt(t,e.numericKey))}async function xn(e,t,r,n,i,o){let a=i.maxRecords??1e4,s=i.fetchParallel??1,l=t.map(m=>o.get(m)==="NUMBER"),p={raw:new Map,normalized:new Map,numericKey:l},u=(m,y,h)=>{let g=m.get(y);(g===void 0||h>g)&&m.set(y,h)},d=(m,y)=>{u(p.raw,ss(m),y),l.some(Boolean)&&u(p.normalized,Vt(m,l),y)},c=new Set,f=[],E=new Set;for(let m of r){let y=ss(m);E.has(y)||(E.add(y),m.some(h=>h==="")?f.push(m):c.add(m[0]))}let R=["$id",...t];for(let m of Or([...c],Mp)){let y=`${t[0]} in (${m.map(fo).join(",")})`,h=await ye(n.getRecords,e,y,R,{maxRecords:a,parallel:s});for(let g of h){let S=Number(g.$id?.value);Number.isFinite(S)&&d(t.map(O=>xp(g[O]?.value)),S)}}for(let m of f){let y=t.map((g,S)=>`${g} = ${fo(m[S])}`).join(" and "),h=await ye(n.getRecords,e,y,["$id"],{maxRecords:a,parallel:s});h.length!==0&&d(m,wy(h))}return p}function wy(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 xp(e){return typeof e=="string"?e:e==null?"":String(e)}function fo(e){return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Or(e,t){let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}var Fp=50,by=6,ep=Fp*by;async function Kp(e,t,r,n,i,o,a,s,l=null,p,u=""){if(t.type!=="INNER"||!t.table.alias||t.table.subtableCode)return null;let d=t.on.left.tableAlias,c=t.on.right.tableAlias;if(!d||!c)return null;let f,E,R;if(d===t.table.alias&&c!==t.table.alias)f=c,E=t.on.right.field,R=t.on.left.field;else if(c===t.table.alias&&d!==t.table.alias)f=d,E=t.on.left.field,R=t.on.right.field;else return null;let m=r.get(f);if(!m)return null;let y=new Set;for(let N of m){let L=N[E]?.value,I=xp(L).trim();I.length>0&&y.add(I)}let h=[...y];if(h.length===0)return[];if(h.length>ep)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 ${ep} \u4EF6\uFF09\u3002`),null;let g=Ot(e,t.table,p),S=N=>{s.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${N} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${N} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`)},O=Or(h,Fp),P=[],_=new Set;for(let N of O){let L=`${R} in (${N.map(fo).join(",")})`,v=[l!==null?$(l):"",u].filter(A=>A!=="").reduce((A,b)=>`(${A}) and (${b})`,L),k=await ke(n.getRecords,t.table.appId,v,g,{parallel:o,maxRecords:i,onLimit:a,onTruncate:S});for(let A of k.records){let b=`${A.$id?.value??""}:${JSON.stringify(A)}`;_.has(b)||(_.add(b),P.push(A))}}return P}var tp=new Map,rp=new Map,np=new Map,ip=new Map,op=new Map,ap=new Map;function Lr(e,t,r){return e.get(t)?.get(r)}function _r(e,t,r,n){let i=e.get(t);i||(i=new Map,e.set(t,i)),i.set(r,n)}async function Q(e,t,r){let n=Lr(ip,r,e);if(n)return n;let i=t.getFields(e);return _r(ip,r,e,i),i}async function ze(e,t,r){let n=Lr(ap,r,e);if(n)return n;let i=t.getNumberPrecision(e);return _r(ap,r,e,i),i}async function bs(e,t,r){let n=Lr(op,r,e);if(n)return n;let i=t.getProcessStatuses(e);return _r(op,r,e,i),i}async function Ps(e,t,r){let n=await bs(e,t,r);return n.enable&&n.states!==null?new Map(n.states.map(i=>[i.name,i.index])):void 0}async function Re(e,t,r){let n=Lr(tp,r,e);if(n)return n;let i=await Q(e,t,r),o=new Map(i.map(a=>[a.code,a.fieldType]));return _r(tp,r,e,o),o}async function ls(e,t,r){let n=Lr(rp,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 _r(rp,r,e,o),o}async function Py(e,t,r){let n=await ls(e,t,r);return new Map([...n.entries()].map(([i,o])=>[i,new Set(o.keys())]))}async function sp(e,t,r){let n=Lr(np,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 _r(np,r,e,o),o}function Ny(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 Cy(e,t,r,n){let i=Ny(e);if(i.length===0)return new Map;let o=[e.from,...e.joins.map(d=>d.table)],a=new Set,s=new Map(await Promise.all([...new Set(o.filter(d=>d.cteName===null).map(d=>d.appId))].map(async d=>{let c=await Q(d,t,r);return[d,new Map(c.map(f=>[f.code,f]))]}))),l=d=>{if(d.tableAlias!==null){if(d.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){let R=s.get(e.from.appId)?.get(d.field);return R?je(R,e.from.appId):void 0}let f=o.find(R=>_e(R)===d.tableAlias);if(!f)return;if(f.cteName!==null)return n?.get(f.cteName)?.columnMeta?.get(d.field);let E=s.get(f.appId)?.get(Ee(f,d.field));return E?je(E,f.appId):Ft(d.field)}if(e.joins.length===0){if(e.from.cteName!==null)return n?.get(e.from.cteName)?.columnMeta?.get(d.field);let f=s.get(e.from.appId)?.get(Ee(e.from,d.field));return f?je(f,e.from.appId):Ft(d.field)}let c=o.flatMap(f=>{if(f.cteName!==null){let m=n?.get(f.cteName),y=m?.columns.includes(d.field)?m.columnMeta?.get(d.field):void 0;return y?[y]:[]}let E=s.get(f.appId)?.get(Ee(f,d.field)),R=E?je(E,f.appId):Ft(d.field);return R?[R]:[]});return c.length>1&&a.add(d.field),c.length===1?c[0]:void 0},p=new Map;for(let d of e.columns){if(!("alias"in d)||!d.alias)continue;let c;if(d.type==="FIELD")c=l(Ke(d.field));else if(d.type==="ARITH_COL"||d.type==="ARITH_AGG_COL"||d.type==="WINDOW_COL")c=Y("number");else if(d.type==="GROUPING_COL")c=Y("number");else if(d.type==="LITERAL_COL"||d.type==="SCALAR_VALUE_COL")c=Y("string");else if(d.type==="STRFUNC_COL")c=$t(d.expr);else if(d.type==="SCALAR_SUBQUERY_COL")c=qe();else if(d.type==="CASE_COL"){let f=d.expr.branches.map(E=>Pr(E.result,l));d.expr.elseResult&&f.push(Pr(d.expr.elseResult,l)),c=go(f)}else d.type==="AGGREGATE"&&(d.func==="MIN"||d.func==="MAX"||d.func==="MODE"?d.arg.type!=="WILDCARD"&&(c=Is(d.arg,l)):c=d.func==="GROUP_CONCAT"?Y("string"):Y("number"));c?.semantics&&p.set(d.alias,c.semantics)}let u=new Map;for(let d of i){let c=p.get(d)??l(Ke(d))?.semantics;if(!c){let E=Ke(d);E.tableAlias===null&&a.has(E.field)&&u.set(d,q({fieldType:"KSQL_AMBIGUOUS"}));continue}let f=c;if(c.fieldType==="STATUS"&&c.source&&e.orderMode!=="KINTONE_NATIVE"){let E=await bs(c.source.appId,t,r);E.enable&&E.states!==null&&(f={...c,optionOrder:new Map(E.states.map(R=>[R.name,R.index]))})}u.set(d,f)}return u}async function _n(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([Oy(e,t,r),Ly(e,t,r),Cy(e,t,r,n)]);return{optionOrders:o,sortKinds:a,semantics:s}}async function Oy(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 ls(a.appId,t,r);for(let[l,p]of s.entries())n.has(l)||n.set(l,p)}for(let a of i){if(a.cteName!=null||!a.alias)continue;let s=await ls(a.appId,t,r);for(let[l,p]of s.entries())n.set(`${a.alias}.${l}`,p)}return n}async function Ly(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 sp(a.appId,t,r);for(let[l,p]of s.entries())n.has(l)||n.set(l,p)}for(let a of i){if(a.cteName!=null||!a.alias)continue;let s=await sp(a.appId,t,r);for(let[l,p]of s.entries())n.set(`${a.alias}.${l}`,p)}return n}function Bp(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 _y=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function Dy(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||_y.has(o.fieldType))throw new Error(`ArgumentError: DML target field ${i} is not writable (${o.fieldType}).`)}}async function Be(e,t,r,n){let i=await Q(e,r,n);return Dy(e,t,i),i}async function st(e,t,r,n,i){let o=new Map(r.map(a=>[a.code,a]));return t.some(a=>o.get(a)?.fieldType==="NUMBER")?ze(e,n,i):void 0}function Wt(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),p=o[s]?.value??"",u=Se(p,l,n);if(!u.ok)throw new Error(`DmlValidationError: ${u.code} ${u.message} (row=${a+1}, field=${s})`);let d=["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(l.fieldType)&&Array.isArray(p)&&p.every(c=>typeof c=="object"&&c!==null&&"code"in c);o[s]={value:d?p:u.value}}})}async function vy(e,t,r,n,i){let o=await Be(e.appId,e.fields,t,n),a=await nn({statement:e,fieldInfos:o,dmlMaxRows:De(r.dmlMaxRows,"dmlMaxRows",lt),dmlMaxSubtableRows:De(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",Te),statementNumber:i,loadNumberPrecision:()=>ze(e.appId,t,n)});return ch(e,a,o)}async function Uy(e,t,r,n,i){let{fieldInfos:o,prepared:a}=await $p(e,t,r,n,i);return dh(e,a,o)}async function $p(e,t,r,n,i){let o=await Be(e.appId,e.fields,t,n),a=new Map(o.map(m=>[m.code,m.fieldType])),s=qp(e),l=new Set;for(let m of s){let y=Vt(m,e.keyFields.map(h=>a.get(h)==="NUMBER"));if(l.has(y))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(y)}let p=await xn(e.appId,e.keyFields,s,t,r,a),u=s.map(m=>Mn(p,m)),d=new Map,c=[...new Set(u.filter(m=>m!==void 0))],f=["$id","$revision",...o.filter(m=>!m.inSubtable&&m.fieldType!=="FILE").map(m=>m.code)];for(let m of Or(c,100)){let y=await t.getRecords({app:e.appId,query:`$id in (${m.join(",")}) limit 500`,fields:[...new Set(f)]});for(let h of y.records){let g=Number(h.$id?.value);Number.isSafeInteger(g)&&g>0&&d.set(g,h)}}let E=u.map((m,y)=>({sourceRowIndex:y,...m===void 0?{}:{targetId:m,snapshot:d.get(m)}})),R=await Mu({statement:e,matches:E,fieldInfos:o,dmlMaxRows:De(r.dmlMaxRows,"dmlMaxRows",lt),dmlMaxSubtableRows:De(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",Te),statementNumber:i,loadNumberPrecision:()=>ze(e.appId,t,n)});return{fieldInfos:o,prepared:R}}async function ky(e,t,r,n){if(r.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let i=await Be(e.appId,e.fields,t,n),o=await nn({statement:e,fieldInfos:i,dmlMaxRows:De(r.dmlMaxRows,"dmlMaxRows",lt),dmlMaxSubtableRows:De(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",Te),loadNumberPrecision:()=>ze(e.appId,t,n)}),a=Ia(o);if(r.confirm&&!await r.confirm(o.guards.parentRows,"INSERT",{statementIndex:0,statementCount:1,statementType:"INSERT",targetAppId:e.appId,applyDetail:Ao(a),applyDiagnostic:a}))throw new te("INSERT",o.guards.parentRows);let s=await $u(o,t,a);return{...s,diagnostic:Ce(a,s)}}async function My(e,t,r,n){if(r.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let{prepared:i}=await $p(e,t,r,n,1),o=wa(i);if(r.confirm){let s=Ao(o);if(!await r.confirm(i.guards.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPSERT",targetAppId:e.appId,applyDetail:s,applyDiagnostic:o}))throw new te("UPDATE",i.guards.parentRows)}let a=await Gu(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:Ce(o,a)}}function xy(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 Ao(e,t=!0){let r=e.branches.find(c=>c.branch==="insert"),n=e.branches.find(c=>c.branch==="update"),i=e.branches.flatMap(c=>c.targets),o=xy(r?io(r):[],n?io(n):[]),a=Fy(i),s=e.branches.reduce((c,f)=>c+(f.parentRows??0),0),l=i.filter(c=>c.targetKind==="SUBTABLE").reduce((c,f)=>c+(f.changedCount??0),0),p=o.reduce((c,f)=>c+f.appendRows,0),u=o.reduce((c,f)=>c+f.removeRows,0),d={kind:e.statementKind==="UPDATE"?"APPLY_PATCH":e.statementKind==="INSERT"?"APPLY_INSERT":"APPLY_UPSERT",parentRows:s,changedSubtableRows:l,addedSubtableRows:p,tables:o,...a.length>0?{multiValues:a}:{},deletedRows:u,deletedParentRows:e.branches.reduce((c,f)=>c+(f.deletedParentRows??0),0),revisionRequired:e.branches.some(c=>c.guards.revisionRequired),irreversible:!0,retryOnRevisionConflict:!1,...t?{nonTransactional:!0,partialSuccessPossible:!0}:{}};if(e.statementKind==="INSERT"&&r)return{...d,insertedParentRows:r.parentRows??0,initialSubtableRows:r.targets.filter(c=>c.targetKind==="SUBTABLE").reduce((c,f)=>c+(f.changedCount??0),0)};if(e.statementKind==="UPSERT"&&r&&n){let c=io(r),f=io(n);return{...d,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:c.reduce((E,R)=>E+R.appendRows,0),tables:c},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 d}function io(e){return e.targets.filter(t=>t.targetKind==="SUBTABLE").map(t=>{let r=Bt(t,"APPEND"),n=Bt(t,"REMOVE");return{table:t.field,patchRows:(t.changedCount??0)-r-n,appendRows:r,removeRows:n}})}function Bt(e,t){return e.operations.filter(r=>r.kind===t).reduce((r,n)=>r+(n.count??0),0)}function Fy(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:Bt(r,"ADD"),removedValues:Bt(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 Gp(e,t,r,n,i,o){if(e.type==="INSERT"&&e.applyBlocks?.length)return vy(e,t,r,n,o);if(e.type==="UPSERT"&&(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length))return Uy(e,t,r,n,o);if(e.type==="UPDATE"&&e.applyBlocks?.length){let a=await jp(e,t,r,n,o);if(a.type!=="VALIDATION")throw new Error("InternalError: APPLY VALIDATE ONLY returned a mutation result.");return a}return(await Ns(e,t,r,n,i,o)).result}var Eo=class extends Error{constructor(r,n){super(`RejectLimitExceededError: ${r}`);this.diagnostic=n;this.name="RejectLimitExceededError"}};async function Ns(e,t,r,n,i,o,a=!0,s=!0){let l=e.type==="UPDATE"?"UPDATE":e.type.startsWith("UPSERT")?"UPSERT":"INSERT",p=e.type==="UPDATE"?["$id",...e.assignments.map(b=>b.field)]:[...e.fields];if(new Set(p).size!==p.length)throw new Error("ArgumentError: DML target fields contain duplicates.");let u=e.type==="UPDATE"?e.assignments.map(b=>b.field):e.fields,d=await Be(e.appId,u,t,n);e.type==="UPDATE"&&await wr(e,t,n);let c=new Map(d.map(b=>[b.code,b])),f=await st(e.appId,u,d,t,n),E=Ge(d,p),R=bc(E),m=(await Ky(e,l,t,r,n,i,c,e.type==="UPDATE"?R:void 0)).sort((b,C)=>b.rowNumber-C.rowNumber),y=m.filter(b=>b.mode==="update"),h=e.type==="UPDATE"?Gy:e.type.startsWith("UPSERT")?b=>Vy(b,t,r.maxRecords??1e4):void 0,g=r.loadUpdateModeSnapshots??h,S=y.length>0&&g!==void 0,O=new Map;if(S){ma(y,u,d);let b=await g({appId:e.appId,candidates:y,fields:R}),C=new Map;for(let w of y){if(w.targetId===void 0)throw new Error(`InternalError: update-mode validation candidate has no targetId (row=${w.rowNumber}).`);let U=b.get(w.targetId);if(!U)throw new Error(`InternalError: update-mode snapshot is missing for record ${w.targetId}.`);let K=Pc(U,w.record??{});C.set(w.rowNumber,K)}f===void 0&&[...C.values()].some(w=>Ut(w,E))&&(f=await ze(e.appId,t,n));for(let w of y){let U=C.get(w.rowNumber);if(!U)throw new Error(`InternalError: validation post-image is missing for row ${w.rowNumber}.`);O.set(w.rowNumber,kt(U,E,f,o,w.rowNumber,l))}}let P=ya(m,l,p,u,d,o,f,e.checkGroups??[],a,s,{validateUpdateBuiltIns:!S}),{errors:_,invalidRows:N,invalidRowNumbers:L}=P;if(S){let b=new Map(P.candidateResults.map(C=>[C.rowNumber,C]));_=[],L=new Set;for(let C of m){let w=b.get(C.rowNumber);if(!w)throw new Error(`InternalError: validation detail is missing for row ${C.rowNumber}.`);if(C.mode==="create"){let W=[...w.preErrors,...w.builtInErrors,...w.checkErrors];_.push(...W),W.length>0&&L.add(C.rowNumber);continue}let U=O.get(C.rowNumber);if(!U)throw new Error(`InternalError: prepared post-image validation is missing for row ${C.rowNumber}.`);let K=Nc({rowNumber:C.rowNumber,setFields:u,normalizedPostImage:U.normalizedRecord,preErrors:w.preErrors,postImageErrors:U.errors,checkErrors:w.checkErrors});C.record=K.writeRecord,_.push(...K.errors);for(let W of K.invalidRowNumbers)L.add(W)}N=L.size}let I=[...p,...yr],v={type:"VALIDATION",operation:l,validatedRows:m.length,validRows:m.length-N,invalidRows:N,errorCount:_.length,columns:I,errors:_,...e.validationErrorTable?{errTable:e.validationErrorTable}:e.onErrorSkip&&e.errorTable?{errTable:e.errorTable}:{}},k=new Map;for(let b of p){if(b==="$id"){k.set(b,{sortKind:"number",fieldType:"RECORD_NUMBER",semantics:q({fieldType:"RECORD_NUMBER"})});continue}let C=c.get(b);C&&k.set(b,je(C,e.appId))}let A=new Set(["$err_statement","$err_row"]);for(let b of yr)k.set(b,Y(A.has(b)?"number":"string"));return Nr.set(v,k),{result:v,candidates:m,invalidRowNumbers:L,columnMeta:k}}async function lp(e,t,r,n,i,o){let a=await Ns(e,t,r,n,i,o),s=e.errorTable;if(!s)throw new Error("ArgumentError: ON ERROR SKIP requires INTO #error_table.");Tt(i,s,a.result.columns,a.result.errors,r.tempTableMaxRows??St,a.columnMeta);let l=e.rejectLimit??null;if(l!==null&&a.result.invalidRows>l)throw new Eo(`rejected rows (${a.result.invalidRows}) exceed REJECT LIMIT (${l}).`,a.result);let p=a.candidates.filter(E=>!a.invalidRowNumbers.has(E.rowNumber));if(r.confirm){let E=e.type.startsWith("INSERT")?"INSERT":"UPDATE";if(!await r.confirm(p.length,E))throw new te(E,p.length)}let u={affectedRows:p.length,skippedRows:a.result.invalidRows,rejectLimit:l,errTable:s};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(y=>y.record)});E.push(m.ids)}return{type:"INSERT",createdIds:E,insertedCount:E.flat().length,...u}}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,...u}}let d=p.filter(E=>E.mode==="create"),c=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<d.length;E+=100){let R=await t.postRecords({app:e.appId,records:d.slice(E,E+100).map(m=>m.record)});f+=R.ids.length}for(let E=0;E<c.length;E+=100)await t.putRecords({app:e.appId,records:c.slice(E,E+100)});return{type:"UPSERT",insertedCount:f,updatedCount:c.length,...u}}async function Ky(e,t,r,n,i,o,a,s){if(e.type==="UPDATE")return $y(e,r,n,i,o,s);let l,p,u,d,c;if(e.type==="INSERT"||e.type==="UPSERT")up(e,e.fields),c=new Map(e.fields.map(S=>[S,a.get(S)?.fieldType??""])),Ht(e,c),l=e.values.map(S=>S.map((O,P)=>O.type==="CASE_VALUE"?ht(O.expr,{},a.get(e.fields[P])?.fieldType):O));else{let S=await Os.materialize(e,r,n,i,o,[...a.values()]),O=(e.checkGroups?.length??0)>0;if(S.columns.length<e.fields.length||!O&&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(O&&new Set(S.columns).size!==S.columns.length)throw le("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");up(e,S.columns),p=S.rows,u=S.importPresence,d=S.importRowErrors;let P=S.columnMeta;c=new Map(S.columns.map(_=>{let N=P?.get(_),L=N?.fieldType??(N?.semantics?.compareMode==="number"||N?.sortKind==="number"?"NUMBER":"SINGLE_LINE_TEXT");return[_,L]})),Ht(e,c),l=S.rows.map(_=>S.columns.map(N=>_[N]??""))}let f=l.map((S,O)=>({rowNumber:O+1,operation:t,mode:"create",payload:new Map(e.fields.flatMap((P,_)=>u&&!u[O]?.has(P)?[]:[[P,S[_]]])),preErrors:[...d?.[O]??[]],record:{},evaluationRow:p?.[O]??Object.fromEntries(e.fields.map((P,_)=>[P,$e(S[_])])),evaluationFieldTypes:c}));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,O])=>[S,O.fieldType])),R=f.map(S=>e.keyFields.map(O=>$e(S.payload.get(O)))),m=e.keyFields.map(S=>E.get(S)==="NUMBER"),y=new Map;for(let S of R){let O=Vt(S,m);y.set(O,(y.get(O)??0)+1)}let h=yo.has(e);if(h&&[...y.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 g=await xn(e.appId,e.keyFields,R,r,n,E);return f.forEach((S,O)=>{let P=R[O],_=Mn(g,P);S.mode=_===void 0?"create":"update",_!==void 0&&(S.targetId=_),e.keyFields.forEach((N,L)=>{P[L]===""&&S.preErrors.push({field:N,code:"ERR_KEY_EMPTY",message:`UPSERT \u30AD\u30FC ${N} \u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093`})}),!h&&(y.get(Vt(P,m))??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 Cs(e){return e.checkGroups?Rr(e.checkGroups):[]}function up(e,t){let r=new Set(t);for(let n of Cs(e)){if(n.tableAlias!==null)throw le(`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 le(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${n.field} \u306F\u8A55\u4FA1\u884C\u306B\u5B58\u5728\u3057\u307E\u305B\u3093`)}}var By=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE","KSQL_ARRAY"]);function Ht(e,t){if(e.checkGroups)for(let r of nu(e.checkGroups)){let n=r.tableAlias?`${r.tableAlias}.${r.field}`:r.field,i=t.get(n)??t.get(r.field);if(By.has(i??""))throw le(`CHECK \u306E\u6BD4\u8F03\u3067\u306F ${i} \u30D5\u30A3\u30FC\u30EB\u30C9 ${n} \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`)}}async function $y(e,t,r,n,i,o){if(e.from)return Hy(e,e.from,t,r,n,i,o);await ed(e.assignments,t,r,n);let a=await Re(e.appId,t,n),s=Vp(e,a);Ht(e,us(a,e.appId));let l,p=new Map,u=new Map;if(hi(e)){let d=ea(e),c=[...new Set([...d.fields,...s,...o??[]])],f=await ke(t.getRecords,d.app,d.query,c,{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1,onLimit:"error"});u=ao(f.records),p=u,l=ra(e,f.records,a).flatMap(E=>E.records)}else{let d=qr(e);if(s.length>0){let c=[...new Set(["$id",...s,...o??[]])],f=await ke(t.getRecords,d.app,d.query,c,{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1,onLimit:"error"});u=ao(f.records),p=u,l=zr(e,[...p.keys()],a).flatMap(E=>E.records)}else if(o){let c=await ke(t.getRecords,d.app,d.query,[...o],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1,onLimit:"error"});u=ao(c.records),l=zr(e,[...u.keys()],a).flatMap(f=>f.records)}else{let c=await vi(t.getRecords,d.app,d.query,{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1});l=zr(e,c.ids,a).flatMap(f=>f.records)}}return l.sort((d,c)=>d.id-c.id).map((d,c)=>({rowNumber:c+1,operation:"UPDATE",mode:"update",payload:new Map([["$id",String(d.id)],...e.assignments.map(f=>[f.field,d.record[f.field]?.value??""])]),preErrors:[],record:d.record,targetId:d.id,validationSnapshot:u.get(d.id),evaluationRow:Wy(p.get(d.id),e.appId),evaluationFieldTypes:us(a,e.appId)}))}function ao(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 Gy(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 Vy(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 Ie(`\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 Or(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 p=l.$id?.value,u=Number(p);if(!Number.isSafeInteger(u)||u<=0)throw new Error(`InternalError: invalid $id in UPSERT validation snapshot: ${String(p)}.`);if(!i.has(u))throw new Error(`InternalError: unexpected $id in UPSERT validation snapshot: ${u}.`);if(o.has(u))throw new Error(`InternalError: duplicate $id in UPSERT validation snapshot: ${u}.`);o.set(u,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 Vp(e,t){if(e.from)return[];let r=new Set;for(let n of Cs(e)){if(n.tableAlias!==null&&n.tableAlias.toLowerCase()!==`app${e.appId}`.toLowerCase())throw le(`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 le(`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 Wy(e,t){if(!e)return{};let r=nt(e,null);return Object.fromEntries([...Object.entries(r),...Object.entries(r).map(([n,i])=>[`APP${t}.${n}`,i])])}function us(e,t){return new Map([...e,...[...e].map(([r,n])=>[`APP${t}.${r}`,n]),["$id","RECORD_NUMBER"],[`APP${t}.$id`,"RECORD_NUMBER"]])}async function Hy(e,t,r,n,i,o,a){let s=await ad(e,t,r,i,o);Ht(e,s.evaluationTypes);let l=await Wp(e,t,r,n,i,o,a),p=await Re(e.appId,r,i),u=ia(e,l,p).flatMap(f=>f.records),d=new Map(l.map(f=>[Number(f.target.$id?.value),f])),c=a?ao(l.map(f=>f.target)):new Map;return u.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:c.get(f.id),evaluationRow:Yh(d.get(f.id),e.appId,t.alias),evaluationFieldTypes:s.evaluationTypes}))}var Yy=Mp,jy=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);async function Wp(e,t,r,n,i,o,a){let s=await qy(e,t,r,i),l=await ad(e,t,r,i,o),p=[...new Set(e.assignments.filter(O=>O.value.type==="SOURCE_FIELD").map(O=>O.value.type==="SOURCE_FIELD"?O.value.field:"").concat(l.sourceFields))],u=[...new Set([t.joinKeyField,...p])],d=await zy(t,u,p,r,n,i,o),c=new Map,f=new Map;for(let O of d){if(!Object.prototype.hasOwnProperty.call(O,t.joinKeyField))throw new Error(`ArgumentError: UPDATE ... FROM source column ${t.joinKeyField} does not exist.`);let P=cp(O[t.joinKeyField],s,"source");if(c.has(P))throw new Error(`ArgumentError: UPDATE ... FROM source has multiple rows for normalized key ${P}.`);c.set(P,O),f.set(P,String(O[t.joinKeyField]).trim())}if(c.size===0)return[];let E=n.maxRecords??1e4,R=[...new Set([...Eh(e),...l.targetFields,...a??[]])],m=t.targetFilter===null?"":qr({...e,from:null,where:t.targetFilter,checkGroups:void 0}).query,y=[],h=new Set,g=0;for(let O of Or([...f.values()],Yy)){let P=`${t.targetJoinField} in (${O.map(fo).join(",")})`,_=m?`(${P}) and (${m})`:P,N=await ke(r.getRecords,e.appId,_,R,{maxRecords:E,parallel:n.fetchParallel??1,onLimit:"error"});if(g+=N.records.length,g>E)throw new Ie(`\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 L of N.records){let I=L.$id?.value;if(typeof I!="string"||I==="")throw new Error("ArgumentError: UPDATE ... FROM target record does not contain a valid $id.");h.has(I)||(h.add(I),y.push(L))}}let S=[];for(let O of y){let P=O[t.targetJoinField]?.value,_=cp(P,s,"target");if(_===null)continue;let N=c.get(_);N!==void 0&&S.push({target:O,source:N})}return S}async function qy(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 zy(e,t,r,n,i,o,a){if(e.cteName!==null){let u=a?.get(e.cteName);if(!u)throw new Error(`ArgumentError: temp table ${e.cteName} is not available.`);for(let d of t)if(!u.columns.includes(d))throw new Error(`ArgumentError: UPDATE ... FROM source column ${d} does not exist.`);return u.rows}let s=await Re(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 u of r){if(u!=="$id"&&!s.has(u))throw new Error(`ArgumentError: UPDATE ... FROM source column ${u} does not exist.`);let d=u==="$id"?"RECORD_NUMBER":s.get(u);if(jy.has(d??""))throw new Error(`ArgumentError: UPDATE ... FROM does not support source field type ${d} (${u}).`)}return(await ke(n.getRecords,e.appId,"",t,{maxRecords:i.maxRecords??1e4,parallel:i.fetchParallel??1,onLimit:"error"})).records.map(u=>nt(u,null))}function cp(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=we(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 Ns(e,t,r,n,i,1,!1,!1);if(o.result.errors.length>0){let d=o.result.errors[0];throw new Error(`DmlValidationError: ${d.$err_code} ${d.$err_message} (row=${d.$err_row}, field=${d.$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 te(s,a.length);if(e.type==="INSERT"||e.type==="INSERT_SELECT"){let d=[];for(let c=0;c<a.length;c+=100){let f=await t.postRecords({app:e.appId,records:a.slice(c,c+100).map(E=>E.record)});d.push(f.ids)}return{type:"INSERT",createdIds:d,insertedCount:d.flat().length}}if(e.type==="UPDATE"){let d=a.map(c=>({id:c.targetId,record:c.record}));for(let c=0;c<d.length;c+=100)await t.putRecords({app:e.appId,records:d.slice(c,c+100)});return{type:"UPDATE",updatedCount:d.length}}let l=a.filter(d=>d.mode==="create"),p=a.filter(d=>d.mode==="update").map(d=>({id:d.targetId,record:d.record})),u=0;for(let d=0;d<l.length;d+=100){let c=await t.postRecords({app:e.appId,records:l.slice(d,d+100).map(f=>f.record)});u+=c.ids.length}for(let d=0;d<p.length;d+=100)await t.putRecords({app:e.appId,records:p.slice(d,d+100)});return{type:"UPSERT",insertedCount:u,updatedCount:p.length}}async function Xy(e,t,r,n){if(e.applyBlocks?.length)return ky(e,t,r,n);if(e.checkGroups?.length)return Fn(e,t,r,n);if(e.subtableCode)return yh(e,t,r,n);let i=await Be(e.appId,e.fields,t,n),o=await st(e.appId,e.fields,i,t,n),a=await Re(e.appId,t,n),s=yi(e,a);Wt(s.flatMap(p=>p.records),e.fields,i,o);let l=[];for(let p of s){let u=await t.postRecords(p);l.push(u.ids)}return{type:"INSERT",createdIds:l,insertedCount:l.flat().length}}function Jy(){return{type:"SELECT",distinct:!1,columns:[],from:{appId:0,alias:null,cteName:ut},joins:[],where:null,groupBy:[],having:null,orderMode:"CANONICAL",orderBy:[],limit:null,offset:null}}async function Qy(e,t,r,n,i){if(!r.enableImport)throw new Error("UnsupportedError: IMPORT capability is disabled.");let o=Uc(e.source.sourceName,r.importSource);if(e.targets?.some(d=>d.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(x=>x.kind==="SUBTABLE").map(x=>x.subtableCode));if(e.replaceSubtables.some(x=>!D.has(x)))throw new Error("ArgumentError: REPLACE SUBTABLES contains a table not declared in INTO.");for(let x of e.targets.filter(ie=>ie.kind==="SUBTABLE"))if(!x.rowIdSourceHeader||!e.replaceSubtables.includes(x.subtableCode))throw new Error(`ArgumentError: CSV subtable ${x.subtableCode} requires ROW ID SOURCE and REPLACE SUBTABLES declaration.`)}if(e.validationErrorTable&&!i)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");let d=e.targets,c=await Q(e.appId,t,n),f=d.flatMap(D=>D.kind==="FIELD"?[D.field]:D.children),E=c.some(D=>f.includes(D.code)&&D.fieldType==="NUMBER")?await ze(e.appId,t,n):void 0,R=await Zi(o,new Map),m=e.source.kind==="JSON"?Kc(e.source,R,d,r.maxRecords??1e4):Bc(e.source,R,d,e.replaceSubtables??[],r.maxRecords??1e4,e.recordNumberSourceHeader),y=e.source.kind==="CSV"?"UPDATE":e.keyFields?"UPSERT":"INSERT",h=Wc(m,d,c,E,y);if(e.source.kind==="CSV")return Zy(e,m,h,c,t,r,i);Ja(h,e.rejectLimit);let g=[...new Set(d.flatMap(D=>D.kind==="FIELD"?[D.field]:D.children))],S=Za(h.errors,g),O=[...g,...Qa],P=h.invalidParentRows.size,_={preflight:"ACTUAL_DATA",parents:{total:h.parents.length,valid:h.parents.length-P,invalid:P,mutationCandidates:h.parents.filter(D=>D.valid).length},tables:Object.fromEntries(h.tableCounts),writesKintone:!1},N={type:"VALIDATION",operation:y,validatedRows:h.parents.length,validRows:h.parents.length-P,invalidRows:P,errorCount:S.length,columns:O,errors:S,importDetail:_,...e.validationErrorTable?{errTable:e.validationErrorTable}:{}};if(e.validationErrorTable&&i&&Tt(i,e.validationErrorTable,O,S,r.tempTableMaxRows??St,new Map),e.validateOnly)return N;if(Yc(m),h.errors.length>0&&!e.onErrorSkip){let D=h.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.");Tt(i,e.errorTable,O,S,r.tempTableMaxRows??St,new Map)}let L=h.parents.filter(D=>D.valid),I=new Map(c.map(D=>[D.code,D.fieldType])),v=L.map(()=>{});if(e.keyFields){for(let Ae of e.keyFields)if(!e.fields.includes(Ae))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${Ae}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let D=e.keyFields.map(Ae=>I.get(Ae)==="NUMBER"),x=new Set,ie=L.map(Ae=>e.keyFields.map(zt=>String(Ae.top[zt]?.value??"")));for(let Ae of ie){let zt=Vt(Ae,D);if(x.has(zt))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");x.add(zt)}let ve=await xn(e.appId,e.keyFields,ie,t,r,I);ie.forEach((Ae,zt)=>{v[zt]=Mn(ve,Ae)})}let k=d.filter(D=>D.kind==="SUBTABLE").map(D=>D.subtableCode),A=new Map,b=v.filter(D=>D!==void 0);for(let D of Or([...new Set(b)],100)){let x=await t.getRecords({app:e.appId,query:`$id in (${D.join(",")}) limit 500`,fields:["$id","$revision",...k]});for(let ie of x.records){let ve=Number(ie.$id?.value),Ae=Number(ie.$revision?.value);Number.isFinite(ve)&&A.set(ve,{id:ve,...Number.isFinite(Ae)?{revision:Ae}:{},record:ie})}}let C=jc(L,v,A),w={kind:"IMPORT_JSON_SUBTABLE",rowIdPolicy:"DROP_AND_RENUMBER_ALL",parentsToWrite:C.length,insertedParents:C.filter(D=>D.mode==="INSERT").length,updatedParents:C.filter(D=>D.mode==="UPDATE").length,hasDeletes:C.some(D=>D.tables.some(x=>x.deleteRows>0)),parents:C.map(D=>({parentRow:D.parentRow,mode:D.mode,...D.targetId===void 0?{}:{targetId:D.targetId},tables:D.tables}))};if(C.length>0){if(!r.confirm)throw new Error("UnsupportedError: JSON IMPORT subtable mutation requires explicit confirmation detail approval.");if(!await r.confirm(C.length,e.keyFields?"UPDATE":"INSERT",{statementIndex:0,statementCount:1,statementType:"IMPORT",targetAppId:e.appId,importDetail:w}))throw new te(e.keyFields?"UPDATE":"INSERT",C.length)}let U=D=>new Map(Object.entries(D).map(([x,ie])=>[x,ie.value])),K=D=>Hc(U(D.top),new Map([...D.subtables].map(([x,ie])=>[x,ie.map(ve=>({values:U(ve)}))]))),W=C.filter(D=>D.mode==="INSERT"),H=C.filter(D=>D.mode==="UPDATE"),ue=[];for(let D=0;D<W.length;D+=100){let x=await t.postRecords({app:e.appId,records:W.slice(D,D+100).map(K)});ue.push(x.ids)}for(let D=0;D<H.length;D+=100)await t.putRecords({app:e.appId,records:H.slice(D,D+100).map(x=>({id:x.targetId,...x.revision===void 0?{}:{revision:x.revision},record:K(x)}))});return e.keyFields?{type:"UPSERT",insertedCount:ue.flat().length,updatedCount:H.length,affectedRows:C.length,skippedRows:h.invalidParentRows.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:w}:{type:"INSERT",createdIds:ue,insertedCount:ue.flat().length,affectedRows:C.length,skippedRows:h.invalidParentRows.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:w}}if(e.writeMode==="UPDATE_RECORD_NUMBER")return eh(e,o,t,r,n,i);let a={appId:e.appId,fields:e.fields,select:Jy(),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};yo.set(s,l);let p=d=>(l.audit&&Object.assign(d,{importAudit:l.audit}),d);if(s.validateOnly){if(s.validationErrorTable&&!i)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");let d=await Gp(s,t,{...r,onLimitReached:"error"},n,i,1);return s.validationErrorTable&&i&&Tt(i,s.validationErrorTable,d.columns,d.errors,r.tempTableMaxRows??St,Nr.get(d)??new Map),p(d)}if(s.onErrorSkip){if(!i)throw new Error("ArgumentError: ON ERROR SKIP requires a batch.");let d=await(s.type==="UPSERT_SELECT",lp(s,t,r,n,i,1));return p(d)}let u=await(s.type==="UPSERT_SELECT"?Xp(s,t,r,n,i):Yp(s,t,r,n,i));return p(u)}async function Zy(e,t,r,n,i,o,a){if(!e.recordNumberSourceHeader||!e.replaceSubtables?.length)throw new Error("InternalError: incomplete CSV subtable replacement AST.");qc(t.records);let s=t.records.map(A=>A.recordNumberSourceValue??""),l=rs(s,e.recordNumberSourceHeader),p=[...e.replaceSubtables],u=[...new Set(n.filter(A=>!A.inSubtable&&A.fieldType==="SUBTABLE").map(A=>A.code))],d=await ye(i.getRecords,e.appId,"",["$id","$revision",...u],{maxRecords:o.maxRecords??1e4,parallel:o.fetchParallel??1,onLimit:"error"}),c=new Map,f=new Map;for(let A of d){let b=Number(A.$id?.value),C=Number(A.$revision?.value);if(Number.isFinite(b)){c.set(b,{id:b,...Number.isFinite(C)?{revision:C}:{},record:A});for(let w of u){let U=A[w]?.value;if(Array.isArray(U)){for(let K of U)if(K.id){let W=f.get(K.id)??[];W.push({parentId:b,table:w}),f.set(K.id,W)}}}}}let E=l.normalized.map(A=>A===null?void 0:Number(A)),R=r.parents.map((A,b)=>{let C=[...A.errors];for(let U of l.errors[b])C.push({operation:"UPDATE",parentRow:A.parentRow,field:U.field,code:U.code,message:U.message,sourceValues:t.records[b].top});let w=E[b];return w!==void 0&&!c.has(w)&&C.push({operation:"UPDATE",parentRow:A.parentRow,field:e.recordNumberSourceHeader,code:"ERR_RECORD_NUMBER_NOT_FOUND",message:`record number ${w} does not exist in APP${e.appId}`,sourceValues:t.records[b].top}),{...A,valid:C.length===0,errors:C}}),m=zc(t.records,R,E,c,f),y=m.flatMap(A=>[...A.errors]),h=new Set(m.filter(A=>!A.valid).map(A=>A.parentRow)),g={...r,parents:R,errors:y,invalidParentRows:h};Ja(g,e.rejectLimit);let S=m.filter(A=>A.valid),O=m.flatMap(A=>A.tables),P=(A,b)=>O.filter(C=>C.table===A).reduce((C,w)=>C+Number(w[b]),0),_=Object.fromEntries(p.map(A=>[A,{existingRows:P(A,"existingRows"),inputRows:P(A,"inputRows"),updateRows:P(A,"updateRows"),addRows:P(A,"addRows"),deleteRows:P(A,"deleteRows"),rowIdNotFound:P(A,"rowIdNotFound")}])),N={kind:"IMPORT_CSV_SUBTABLE_REPLACE",rowIdPolicy:"PRESERVE_EXISTING",parentsToWrite:S.length,insertedParents:0,updatedParents:S.length,hasDeletes:S.some(A=>A.tables.some(b=>b.deleteRows>0)),totalDeleteRows:S.flatMap(A=>A.tables).reduce((A,b)=>A+b.deleteRows,0),rowIdNotFound:S.flatMap(A=>A.tables).reduce((A,b)=>A+b.rowIdNotFound,0),invalidParents:h.size,parents:S.map(A=>({parentRow:A.parentRow,mode:"UPDATE",targetId:A.targetId,tables:A.tables}))},L=[...new Set(e.targets.flatMap(A=>A.kind==="FIELD"?[A.field]:A.children))],I=Za(y,L),v=[...L,...Qa];if(e.validateOnly){if(e.validationErrorTable&&!a)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return e.validationErrorTable&&a&&Tt(a,e.validationErrorTable,v,I,o.tempTableMaxRows??St,new Map),{type:"VALIDATION",operation:"UPDATE",validatedRows:R.length,validRows:R.length-h.size,invalidRows:h.size,errorCount:I.length,columns:v,errors:I,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},importDetail:{preflight:"ACTUAL_DATA",parents:{total:R.length,valid:S.length,invalid:h.size,mutationCandidates:S.length},tables:_,rowIdPolicy:"PRESERVE_EXISTING",rowIdNotFound:N.rowIdNotFound,writesKintone:!1}}}if(y.length&&!e.onErrorSkip){let A=y[0];throw new Error(`DmlValidationError: ${A.code} ${A.message} (row=${A.parentRow}, field=${A.field})`)}if(e.onErrorSkip){if(!a||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch and INTO error table.");Tt(a,e.errorTable,v,I,o.tempTableMaxRows??St,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:N}))throw new te("UPDATE",S.length)}let k=A=>new Map(Object.entries(A).map(([b,C])=>[b,C.value]));for(let A of S){let b=es(k(A.top),new Map([...A.subtables].map(([C,w])=>[C,w.map(U=>({...U.rowId?{rowId:U.rowId}:{},values:k(U.record)}))])),"PRESERVE");await i.putRecords({app:e.appId,records:[{id:A.targetId,...A.revision===void 0?{}:{revision:A.revision},record:b}]})}return{type:"UPDATE",updatedCount:S.length,affectedRows:S.length,skippedRows:h.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:N}}async function eh(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 Be(e.appId,e.fields,r,i),s=await st(e.appId,e.fields,a,r,i),l=await Zi(t,new Map),p=qa(e.source,l,n.maxRecords??1e4,e.fields,a,e.recordNumberSourceHeader),u=p.recordNumberSourceValues;if(!u)throw new Error("InternalError: record-number source values were not materialized.");let d=rs(u,e.recordNumberSourceHeader),c=new Set,f=[...new Set(d.normalized.filter(N=>N!==null))];for(let N=0;N<f.length;N+=100){let L=f.slice(N,N+100),I=await r.getRecords({app:e.appId,query:`$id in (${L.join(",")}) limit 500`,fields:["$id"]});for(let v of I.records){let k=v.$id?.value;typeof k=="string"&&k!==""&&c.add(k.replace(/^0+(?=\d)/,""))}}let E=new Map(a.map(N=>[N.code,N])),R=new Map(e.fields.map(N=>[N,E.get(N)?.fieldType??"SINGLE_LINE_TEXT"])),m=p.rows.map((N,L)=>{let I=d.normalized[L],v=[...p.importRowErrors?.[L]??[],...d.errors[L]];return I!==null&&!c.has(I)&&v.push({field:e.recordNumberSourceHeader,code:"ERR_RECORD_NUMBER_NOT_FOUND",message:`record number ${I} does not exist in APP${e.appId}`}),{rowNumber:L+1,operation:"UPDATE",mode:"update",...I!==null&&c.has(I)?{targetId:Number(I)}:{},payload:new Map([[e.recordNumberSourceHeader,u[L]],...e.fields.map(k=>[k,N[k]??""])]),preErrors:v,record:{},evaluationRow:N,evaluationFieldTypes:R}}),y=[e.recordNumberSourceHeader,...e.fields],h=ya(m,"UPDATE",y,e.fields,a,1,s,e.checkGroups??[],!1),g=[...y,...yr],S={type:"VALIDATION",operation:"UPDATE",validatedRows:m.length,validRows:m.length-h.invalidRows,invalidRows:h.invalidRows,errorCount:h.errors.length,columns:g,errors:h.errors,...e.validationErrorTable??e.errorTable?{errTable:e.validationErrorTable??e.errorTable}:{}};if(Object.assign(S,{importAudit:p.importAudit}),e.validateOnly){if(e.validationErrorTable&&!o)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return e.validationErrorTable&&o&&Tt(o,e.validationErrorTable,g,h.errors,n.tempTableMaxRows??St,new Map),S}if(!e.onErrorSkip&&h.invalidRows>0){let N=h.errors[0];throw new Error(`DmlValidationError: ${N.$err_code} ${N.$err_message} (row=${N.$err_row}, field=${N.$err_field})`)}if(e.onErrorSkip){if(!o||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch.");if(Tt(o,e.errorTable,g,h.errors,n.tempTableMaxRows??St,new Map),e.rejectLimit!=null&&h.invalidRows>e.rejectLimit)throw new Eo(`rejected rows (${h.invalidRows}) exceed REJECT LIMIT (${e.rejectLimit}).`,S)}let O=m.filter(N=>!h.invalidRowNumbers.has(N.rowNumber));if(n.confirm&&!await n.confirm(O.length,"UPDATE"))throw new te("UPDATE",O.length);let P=O.map(N=>({id:N.targetId,record:N.record}));for(let N=0;N<P.length;N+=100)await r.putRecords({app:e.appId,records:P.slice(N,N+100)});let _={type:"UPDATE",updatedCount:P.length,...e.onErrorSkip?{affectedRows:P.length,skippedRows:h.invalidRows,rejectLimit:e.rejectLimit??null,errTable:e.errorTable}:{}};return Object.assign(_,{insertedCount:0,importAudit:p.importAudit}),_}async function th(e,t,r,n,i,o){let a=yo.get(e);if(!a){let R=i&&i.size>0?await Gt(e.select,t,r,i,n,!0):await It(e.select,t,r,n,void 0,!0);return{rows:R.rows,columns:R.columns,columnMeta:ge.get(R)}}let s=await Zi(a.handle,a.cache),l=r.maxRecords??1e4,p=new Map((o??[]).map(R=>[R.code,R])),u=e.fields.map(R=>({code:R,fieldType:p.get(R)?.fieldType??"SINGLE_LINE_TEXT"})),d=a.source.kind==="JSON"?ja(a.source,s,u,l):qa(a.source,s,l,e.fields,o);if(a.audit=d.importAudit,a.source.kind==="JSON"||!a.source.projection)return d;let c=Xc(a.source.projection),f=new Map(i??[]);f.set(ts,d);let E=await Gt(c,t,{...r,onLimitReached:"error"},f,n,!0);return{rows:E.rows,columns:E.columns,columnMeta:ge.get(E)}}var Os={materialize:th};function Hp(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 Yp(e,t,r,n,i){if(e.checkGroups?.length)return Fn(e,t,r,n,i);let o=await Be(e.appId,e.fields,t,n),a=await st(e.appId,e.fields,o,t,n),s=await Os.materialize(e,t,r,n,i,o),{rows:l,columns:p}=s;if(Hp(s),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 te("INSERT",l.length);let u=await Re(e.appId,t,n),d=l.map((f,E)=>{let R={};return e.fields.forEach((m,y)=>{if(s.importPresence&&!s.importPresence[E]?.has(m))return;let h=f[p[y]]??"";R[m]={value:Bp(h,u.get(m))}}),R});d.forEach(f=>Wt([f],e.fields.filter(E=>E in f),o,a));let c=[];for(let f=0;f<d.length;f+=100){let E=d.slice(f,f+100),R=await t.postRecords({app:e.appId,records:E});c.push(R.ids)}return{type:"INSERT",createdIds:c,insertedCount:c.flat().length}}async function pp(e,t,r,n,i){if(e.applyBlocks?.length)return jp(e,t,r,n);if(e.checkGroups?.length&&at(e.where)){let E=await Be(e.appId,e.assignments.map(m=>m.field),t,n);await st(e.appId,e.assignments.map(m=>m.field),E,t,n);let R=await Re(e.appId,t,n);return Vp(e,R),Ht(e,us(R,e.appId)),await wr(e,t,n),{type:"UPDATE",updatedCount:0}}if(e.checkGroups?.length)return Fn(e,t,r,n,i);if(e.subtableCode)return await wr(e,t,n),hh(e,t,r,n);let o=await Be(e.appId,e.assignments.map(E=>E.field),t,n),a=e.assignments.map(E=>E.field),s=await st(e.appId,a,o,t,n);if(await wr(e,t,n),at(e.where))return{type:"UPDATE",updatedCount:0};if(e.from!=null)return fh(e,e.from,t,r,n,i);let l=r.maxRecords??1e4;await ed(e.assignments,t,r,n);let p=await Re(e.appId,t,n);if(hi(e)){let E=ea(e),m=(await ke(t.getRecords,E.app,E.query,[...E.fields],{maxRecords:l,parallel:r.fetchParallel??1})).records,y=ra(e,m,p);if(Wt(y.flatMap(h=>h.records.map(g=>g.record)),a,o,s),r.confirm&&!await r.confirm(m.length,"UPDATE"))throw new te("UPDATE",m.length);for(let h of y)await t.putRecords(h);return{type:"UPDATE",updatedCount:m.length}}let u=qr(e),c=(await vi(t.getRecords,u.app,u.query,{maxRecords:l,parallel:r.fetchParallel??1})).ids,f=zr(e,c,p);if(Wt(f.flatMap(E=>E.records.map(R=>R.record)),a,o,s),r.confirm&&!await r.confirm(c.length,"UPDATE"))throw new te("UPDATE",c.length);for(let E of f)await t.putRecords(E);return{type:"UPDATE",updatedCount:c.length}}async function jp(e,t,r,n,i=1){if(!e.validateOnly&&r.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");if(!Qe(e.where))return rh(e,t,r,n,i);let o=await Q(e.appId,t,n),a=tt(e,o),s=Ai(e,o),l=ca(e),p=await t.getRecords({app:e.appId,query:`$id = ${l} limit 2`,fields:[...s]});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 u=Number(p.records[0].$id?.value);if(u!==l)throw new Error(`ArgumentError: APPLY snapshot $id ${u} does not match requested $id ${l}.`);wi(p.records[0]);let d=Au({statement:e,snapshot:p.records[0],fieldInfos:o,metadata:a}),c=Ge(o,e.assignments.map(O=>O.field)),f=Ut(d.postImage,c)?await ze(e.appId,t,n):void 0,E=kt(d.postImage,c,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=De(r.dmlMaxRows,"dmlMaxRows",lt),m=De(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",Te),y=d.parentRows>R||d.changedSubtableRows>m;if(e.validateOnly){let O=an({plans:[d],records:Zr(d).records,validations:[],guards:{revisionRequired:!0,parentRows:d.parentRows,dmlMaxRows:R,subtableRows:d.changedSubtableRows,dmlMaxSubtableRows:m,wouldExceed:y}}),P={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:Dn(O.branches[0]),guards:vn(O.branches[0]),deletedRows:{total:d.tables.reduce((_,N)=>_+N.deletedRows,0),parentRows:d.tables.some(_=>_.deletedRows>0)?1:0},diagnostic:O};return Nr.set(P,So(E.columns,o,e.appId)),P}if(d.parentRows>R)throw new Error(`ArgumentError: APPLY parent rows (${d.parentRows}) exceed dmlMaxRows (${R}).`);if(d.changedSubtableRows>m)throw new Error(`ArgumentError: APPLY changed subtable rows (${d.changedSubtableRows}) exceed dmlMaxSubtableRows (${m}).`);let h=Ti(d,E.normalizedRecord),g=Zr(h),S=an({plans:[h],records:g.records,validations:[],guards:{revisionRequired:!0,parentRows:d.parentRows,dmlMaxRows:R,subtableRows:d.changedSubtableRows,dmlMaxSubtableRows:m,wouldExceed:y}});if(r.confirm){let O=Ao(S,!1);if(!await r.confirm(d.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPDATE",targetAppId:e.appId,applyDetail:O,applyDiagnostic:S}))throw new te("UPDATE",d.parentRows)}return await t.putRecords(g),{type:"UPDATE",updatedCount:d.parentRows,diagnostic:Ce(S,{successfulChunks:1,successfulParents:d.parentRows})}}async function rh(e,t,r,n,i){let o=De(r.dmlMaxRows,"dmlMaxRows",lt),a=De(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",Te),s=await Q(e.appId,t,n),l=tt(e,s),p;if(Ro(e))p=await ah(e,t,r,s,n);else{let f=Ai(e,s),E=qr(e).query,R=o+1;p=await ye(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 u=await Ci({statement:e,snapshots:p,fieldInfos:s,metadata:l,dmlMaxRows:o,dmlMaxSubtableRows:a,statementNumber:i,loadNumberPrecision:()=>ze(e.appId,t,n)});if(e.validateOnly)return ph(e,u,s);ml("phase15b",e);let d=an(u);if(r.confirm){let f=Ao(d);if(!await r.confirm(u.guards.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPDATE",targetAppId:e.appId,applyDetail:f,applyDiagnostic:d}))throw new te("UPDATE",u.guards.parentRows)}let c=await Bu(u,t,d);return{...c,diagnostic:Ce(d,c)}}function Ro(e){return(e.applyBlocks?.length??0)>0&&!Qe(e.where)&&(ct(e.where)||ae(e.where))}function nh(e){let t=e.type==="EXPLAIN"?e.query:e;return t.type==="UPDATE"&&Ro(t)&&ae(t.where)}var ih=`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 Ry(e){if(e.unappliedKlikes.length>0)throw new Error(`UnsupportedError: ${Ey}`)}async function my(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))]]:[])),p=Ea(e.where,{fieldTypes:s,fieldOptions:l});Ry(p);let u=p.prefilter===null?"":G(p.prefilter),d=new Set(pi(e,n));for(let E of yy(e.where))d.add(E);let c=await gy(e.appId,e.where,a,t,i);return(await ye(t.getRecords,e.appId,u,[...d],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1,onLimit:"error"})).map(E=>({snapshot:E,row:tt(E,null)})).filter(({row:E})=>q(e.where,E,c.fieldTypeResolver,p.appliedKlikes,c.fieldSemanticsResolver)).map(({snapshot:E})=>E)}function yy(e){return rs(e)}async function gy(e,t,r,n,i){let s=[...hy(t)].some(u=>r.get(u)?.fieldType==="STATUS")?await ps(e,n,i):void 0;return{fieldTypeResolver:u=>u.field==="$id"?"NUMBER":r.get(u.field)?.fieldType,fieldSemanticsResolver:u=>{if(u.field==="$id")return cr(z({fieldType:"__ID__"}),e,"$id");let d=r.get(u.field);if(!d)return;let c=d.semantics??z(d),f=d.fieldType==="STATUS"&&s?{...c,optionOrder:s}:c;return cr(f,e,d.code)}}}function hy(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 Ay(e,t,r){let n=t.validations.flatMap(u=>u.errors),i=t.validations.reduce((u,d)=>u+(d.invalidRows>0?1:0),0),o=t.validations[0]?.columns?[...t.validations[0].columns]:[...Fe(r,e.fields).payloadFields,...Xr],a=t.guards.parentRows,s=pa(t),l=s.branches[0],p={type:"VALIDATION",operation:"INSERT",validatedRows:a,validRows:a-i,invalidRows:i,errorCount:n.length,columns:o,errors:n,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},apply:In(l),guards:bn(l),deletedRows:{total:0,parentRows:0},diagnostic:s};return Ar.set(p,uo(o,r,e.appId)),p}function Sy(e,t,r){let n=t.validations,i=n.flatMap(p=>p.errors),o=n.reduce((p,u)=>p+(u.invalidRows>0?1:0),0),a=n[0]?.columns?[...n[0].columns]:[...Fe(r,e.assignments.map(p=>p.field)).payloadFields,...Xr],s=Zr(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:In(s.branches[0]),guards:bn(s.branches[0]),deletedRows:{total:t.plans.reduce((p,u)=>p+u.tables.reduce((d,c)=>d+c.deletedRows,0),0),parentRows:t.plans.filter(p=>p.tables.some(u=>u.deletedRows>0)).length},diagnostic:s};return Ar.set(l,uo(a,r,e.appId)),l}function Ty(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??[...Fe(r,e.fields).payloadFields,...Xr],l=da(t),p=l.branches.find(E=>E.branch==="insert"),u=l.branches.find(E=>E.branch==="update"),d=In(p),c=In(u),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:[...d,...c],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:d,guards:bn(p)},update:{apply:c,guards:bn(u)}},deletedRows:{total:t.update.plans.reduce((E,R)=>E+R.tables.reduce((m,y)=>m+y.deletedRows,0),0),parentRows:t.update.plans.filter(E=>E.tables.some(R=>R.deletedRows>0)).length},diagnostic:l};return Ar.set(f,uo([...s],r,e.appId)),f}function In(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:Mt(t,"REMOVE")}:{field:t.field,operations:r,changedSubtableRows:0,deletedRows:0,multiValue:{fieldType:t.fieldType??"UNKNOWN",addedValues:Mt(t,"ADD"),removedValues:Mt(t,"REMOVE_VALUE"),changedValues:t.changedCount??0,postImages:t.postImages??[]}}})}function bn(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 st=100,Te=500;function Le(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 uo(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,We(s,r));continue}o.set(a,Y(i.has(a)?"number":"string"))}return o}async function wy(e,t,r,n,i,o){let a=await fp(e,t,r,n,i,o),s=await Re(e.appId,r,i),l=Yo(e,a,s),p=e.assignments.map(c=>c.field),u=await J(e.appId,r,i),d=await at(e.appId,p,u,r,i);if(Bt(l.flatMap(c=>c.records.map(f=>f.record)),p,u,d),n.confirm&&!await n.confirm(a.length,"UPDATE"))throw new ee("UPDATE",a.length);for(let c of l)await r.putRecords(c);return{type:"UPDATE",updatedCount:a.length}}function Iy(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 by(e,t,r,n){if(await yr(e,t,n),ot(e.where))return{type:"DELETE",deletedCount:0};if(e.subtableCode)return Oy(e,t,r,n);let i=Jl(e),a=(await Ii(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 ee("DELETE",a.length);let s=Ql(e.appId,a);for(let l of s)await t.deleteRecords(l);return{type:"DELETE",deletedCount:a.length}}async function Py(e,t,r,n){if(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length)return Ym(e,t,r,n);if(e.checkGroups?.length)return Ln(e,t,r,n);let i=await Me(e.appId,e.fields,t,n),o=await at(e.appId,e.fields,i,t,n),a=[],s=[],l=await Re(e.appId,t,n),p=yp(e),u=await On(e.appId,e.keyFields,p,t,r,l);if(e.values.forEach((c,f)=>{let E={};e.fields.forEach((m,y)=>{let g=c[y];g.type==="CASE_VALUE"?E[m]={value:mt(g.expr,{},l.get(m))}:E[m]={value:Qe(g,l.get(m))}});let R=Cn(u,p[f]);R!==void 0?s.push({id:R,record:E}):a.push(E)}),Bt([...a,...s.map(c=>c.record)],e.fields,i,o),r.confirm&&a.length+s.length>0){let c=a.length+s.length;if(!await r.confirm(c,"UPDATE"))throw new ee("UPDATE",c)}let d=[];for(let c=0;c<a.length;c+=100){let f=await t.postRecords({app:e.appId,records:a.slice(c,c+100)});d.push(f.ids)}for(let c=0;c<s.length;c+=100)await t.putRecords({app:e.appId,records:s.slice(c,c+100)});return{type:"UPSERT",insertedCount:d.flat().length,updatedCount:s.length}}function yp(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"?W(i):i.type==="CASE_VALUE"?Ne(i.expr,{}):i.elements.map(o=>o.value).join(",")}))}async function Rs(e,t,r,n){if(t.length===0)return;let i=await Re(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 Ny(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 ye(t.getRecords,e.appId,"",[],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1}),s=co(a),l=new Map;for(let u of e.values){let d=Fc(u[o]);if(!s.get(d))throw new Error(`_pid=${d} \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:Fc(u[m])}}});let E=l.get(d);E?E.push(f):l.set(d,[f])}let p=[];for(let[u,d]of l.entries()){let c=s.get(u),E=[..._n(c,i),...d];p.push(gp(e.appId,u,Dn(c),i,E))}for(let u of p)await t.putRecords(u);return{type:"INSERT",createdIds:[],insertedCount:e.values.length}}async function Cy(e,t,r,n){let i=e.subtableCode;if(!yn(e.where))throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u306F _rid \u6761\u4EF6\u304C\u5FC5\u9808\u3067\u3059");let o=[];it(e.where,o);for(let c of e.assignments)c.value.type==="CASE_VALUE"&&Zi(c.value.expr,o);let a=await Rs(e.appId,o,t,n),s=await ye(t.getRecords,e.appId,"",[],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1}),p=ms(s,i).filter(c=>q(e.where,c.flat,a));if(r.confirm&&!await r.confirm(p.length,"UPDATE"))throw new ee("UPDATE",p.length);let u=new Map;for(let c of p){if(!c.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=u.get(c.parentId);f||(f=new Map,u.set(c.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:ci(R.value,c.flat,a)}}f.set(c.rowId,E)}let d=co(s);for(let[c,f]of u.entries()){let E=d.get(c);if(!E)continue;let m=_n(E,i).map(y=>{let g=y.id??"";if(!g)return y;let h=f.get(g);return h?{id:g,value:h}:{id:g}});await t.putRecords(Ly(e.appId,c,Dn(E),i,m))}return{type:"UPDATE",updatedCount:p.length}}async function Oy(e,t,r,n){let i=e.subtableCode;if(!yn(e.where))throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB DELETE \u306B\u306F _rid \u6761\u4EF6\u304C\u5FC5\u9808\u3067\u3059");let o=[];it(e.where,o);let a=await Rs(e.appId,o,t,n),s=await ye(t.getRecords,e.appId,"",[],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1}),p=ms(s,i).filter(c=>q(e.where,c.flat,a));if(r.confirm&&!await r.confirm(p.length,"DELETE"))throw new ee("DELETE",p.length);let u=new Map;for(let c of p){let f=u.get(c.parentId);f?f.push(c.rowIndex):u.set(c.parentId,[c.rowIndex])}let d=co(s);for(let[c,f]of u.entries()){let E=d.get(c);if(!E)continue;let R=_n(E,i),m=new Set(f),y=R.filter((g,h)=>!m.has(h));await t.putRecords(gp(e.appId,c,Dn(E),i,y))}return{type:"DELETE",deletedCount:p.length}}function co(e){let t=new Map;for(let r of e){let n=String(r.$id?.value??"");n&&t.set(n,r)}return t}function ms(e,t){let r=[];for(let n of e){let i=String(n.$id?.value??""),o=Dn(n),a=_n(n,t);for(let s=0;s<a.length;s++){let l=a[s],p={...di(l,s),_pid:i};for(let[u,d]of Object.entries(n))u!==t&&(p[`_p.${u}`]=Ja(d?.value));r.push({parent:n,parentId:i,parentRevision:o,rowIndex:s,rowId:l.id??"",row:l,flat:p})}}return r}function _n(e,t){let r=e[t]?.value;return Array.isArray(r)?r:[]}function Dn(e){let t=Number(e.$revision?.value??0);return Number.isFinite(t)?t:0}function gp(e,t,r,n,i){return{app:e,records:[{id:Number(t),revision:r,record:{[n]:{value:i}}}]}}function Ly(e,t,r,n,i){return{app:e,records:[{id:Number(t),revision:r,record:{[n]:{value:i}}}]}}function _y(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 Fc(e){return e.type==="STRING"?e.value:e.type==="NUMBER"?W(e):e.type==="CASE_VALUE"?Ne(e.expr,{}):e.elements.map(t=>t.value).join(",")}function Ja(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 yn(e){switch(e.type){case"BINARY":return e.left.type==="FIELD"&&e.left.tableAlias===null&&e.left.field==="_rid";case"LOGICAL":return yn(e.left)||yn(e.right);case"NOT":case"GROUP":return yn(e.expr);default:return!1}}async function Dy(e,t,r,n){let i=[];it(e.where,i);let o=await Rs(e.appId,i,t,n),a=await J(e.appId,t,n);if(ot(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")},p=await ye(t.getRecords,e.appId,"",[],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1}),u=ms(p,e.subtableCode),d=e.all?new Set(p.map(f=>String(f.$id?.value??"")).filter(f=>f!=="")):new Set(u.filter(f=>e.where&&q(e.where,f.flat,o,void 0,l)).map(f=>f.parentId));if(r.confirm&&!await r.confirm(d.size,"UPDATE"))throw new ee("UPDATE",d.size);let c=co(p);for(let f of d){let E=c.get(f);if(!E)continue;let m=_n(E,e.subtableCode).map((g,h)=>({row:g,i:h,flat:vy(E,e.subtableCode,g,h)}));m.sort((g,h)=>Uy(g.flat,h.flat,e.by,l));let y=m.map(g=>g.row.id??"");await t.putRecords(_y(e.appId,f,Dn(E),e.subtableCode,y))}return{type:"REORDER",reorderedParentCount:d.size}}function vy(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}`]=Ja(a?.value));for(let[o,a]of Object.entries(r.value??{}))i[o]=Ja(a?.value);return i}function Uy(e,t,r,n){for(let i of r){let o=Kc(i.key,e),a=Kc(i.key,t),s=i.key.type==="FIELD_NAME"?n(ke(i.key.name)):i.key.type==="ARITH_KEY"?x("number"):i.key.type==="FUNC_KEY"?xt(i.key.expr).semantics??x("string"):x("number"),l=Pt(o,a,s??x("string"));if(l!==0)return i.direction==="ASC"?l:-l}return 0}function Kc(e,t){switch(e.type){case"FIELD_NAME":return t[e.name]??"";case"ARITH_KEY":return String(re(e.expr,t));case"FUNC_KEY":return ne(e.expr,t);case"GROUPING_KEY":throw new Error("ArgumentError: GROUPING() is not supported in REORDER BY.")}}async function hp(e,t,r,n,i){if(e.checkGroups?.length)return Ln(e,t,r,n,i);let o=await Me(e.appId,e.fields,t,n),a=await at(e.appId,e.fields,o,t,n),s=await Es.materialize(e,t,r,n,i,o),{rows:l,columns:p}=s;if(Ep(s),p.length!==e.fields.length){let y=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${y}`)}for(let y of e.keyFields)if(!e.fields.includes(y))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${y}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let u=[],d=[],c=await Re(e.appId,t,n),f=l.map((y,g)=>{let h={};return e.fields.forEach((S,O)=>{if(s.importPresence&&!s.importPresence[g]?.has(S))return;let b=y[p[O]]??"";h[S]={value:up(b,c.get(S))}}),h});f.forEach(y=>Bt([y],e.fields.filter(g=>g in y),o,a));let E=f.map(y=>e.keyFields.map(g=>String(y[g]?.value??"")));if(oo.has(e)){let y=e.keyFields.map(h=>c.get(h)==="NUMBER"),g=new Set;for(let h of E){let S=Kt(h,y);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 On(e.appId,e.keyFields,E,t,r,c);if(f.forEach((y,g)=>{let h=Cn(R,E[g]);h!==void 0?d.push({id:h,record:y}):u.push(y)}),r.confirm&&u.length+d.length>0){let y=u.length+d.length;if(!await r.confirm(y,"UPDATE"))throw new ee("UPDATE",y)}let m=[];for(let y=0;y<u.length;y+=100){let g=await t.postRecords({app:e.appId,records:u.slice(y,y+100)});m.push(g.ids)}for(let y=0;y<d.length;y+=100)await t.putRecords({app:e.appId,records:d.slice(y,y+100)});return{type:"UPSERT",insertedCount:m.flat().length,updatedCount:d.length}}async function Ap(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 Sp(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(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 ky(e,t=!1){try{let r=new jt(e).tokenize(),n=new zt(r,{import:t}).parse();return Wn("phase15b",n),lr(n),n}catch(r){throw r instanceof ce||r instanceof T,r}}async function Pn(e,t,r,n,i){let o=[];Xi(e,t,r,n,o,i),await Promise.all(o)}async function Tp(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(Pn(s.condition,t,r,n,i));await Promise.all(o)}function gn(e,t,r,n,i){return i!==void 0&&i.size>0?Ft(e,t,r,i,n):St(e,t,r,n)}function Xi(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(gn(a.query,t,r,n,o).then(s=>{let l=a.column??s.columns[0]??"";a.resolved=new Set(s.rows.map(p=>p[l]??""))})),a.type==="SCALAR_SUBQUERY"&&i.push(gn(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":Xi(e.left,t,r,n,i,o),Xi(e.right,t,r,n,i,o);break;case"NOT":case"GROUP":Xi(e.expr,t,r,n,i,o);break;case"EXISTS":{let a=e;i.push(gn(a.query,t,r,n,o).then(s=>{a.resolved=s.rowCount>0}));break}case"BOOLEAN":break}}async function wp(e,t,r,n){for(let i of e){if(i.value.type!=="SCALAR_SUBQUERY")continue;let o=await St(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 Ip(e,t,r,n,i){let o=new Map,a=[];for(let p=0;p<e.length;p++){let u=e[p];if(u.type!=="SCALAR_SUBQUERY_COL")continue;let d=JSON.stringify(u.query),c=o.get(d);c||(c=gn(u.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(d,c)),a.push([p,c])}let s=await Promise.all(a.map(([,p])=>p)),l=new Map;return a.forEach(([p],u)=>l.set(p,s[u])),l}var bp=new WeakMap,Pp=new WeakMap;async function My(e,t,r,n=1e4,i){let o=new Set,a=new Set,s=new Set,l={...t,getFields:async m=>(o.add(m),t.getFields(m)),getProcessStatuses:async m=>(a.add(m),t.getProcessStatuses(m)),getNumberPrecision:async m=>(s.add(m),t.getNumberPrecision(m))},p=new Map,u=new Map,d=new Map,c=new Set,f=i??await Za(e,l,r),E=m=>f.nodes.find(y=>y.source===m||JSON.stringify(y.source)===JSON.stringify(m)),R=async m=>{if(m===null||typeof m!="object"||c.has(m))return;if(c.add(m),Array.isArray(m)){await Promise.all(m.map(R));return}let y=m;if(y.type==="SELECT"){let g=m;await ao(g,l,r);let h=[g.from,...g.joins.map(I=>I.table)].some(I=>I.cteName!==null);if(Q(g).type==="PLAIN"&&!h){let I=await is(g,l,r);I&&d.set(g,I)}let S=[g.from,...g.joins.map(I=>I.table)].filter(I=>I.cteName===null).map(I=>I.appId);(Be(g.where)||g.orderBy.length>0||g.columns.some(I=>I.type==="WINDOW_COL"&&I.orderBy.length>0))&&S.forEach(I=>o.add(I));let b=await Sn(g,l,r),L=E(g);if(b.capability==="UNSUPPORTED"&&!L)throw new Error(`ArgumentError: WHERE predicate is unsupported (${kt(b)}).`);if(p.set(g,b),g.orderBy.length>0||g.columns.some(I=>I.type==="WINDOW_COL"&&I.orderBy.length>0)){let I=await wn(g,l,r);if(g.orderMode!=="KINTONE_NATIVE")for(let _ of I.semantics.values())_.fieldType==="STATUS"&&_.source&&a.add(_.source.appId);if(Ji(g)&&!h&&L?.allowed!==!1){let _=b.capability==="EXACT_PUSHDOWN"?be(g):"FULL_SCAN";u.set(g,(g.orderMode==="KINTONE_NATIVE"?tn:en)({stmt:g,staticMode:_,whereCapability:b.capability,whereReasons:b.reasons,orderSemantics:I.semantics,maxRecords:n,hasKlike:se(g.where)}))}}}else if(y.type==="VALIDATE"){let g=m;o.add(g.appId);let h=await J(g.appId,l,r),S=new Map(h.filter(N=>!N.inSubtable).map(N=>[N.code,N])),O=new Set(h.filter(N=>N.inSubtable).map(N=>N.code)),b=sa(g,h),L=pr(g.checkGroups??[]),I=rs(g.where);for(let N of L){if(N.field!=="$id"&&!S.has(N.field)&&!O.has(N.field))throw ue(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${N.field} \u306F APP${g.appId} \u306B\u5B58\u5728\u3057\u307E\u305B\u3093`);if(N.field!=="$id"&&!S.has(N.field)&&O.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 I){if(N!=="$id"&&!S.has(N)&&!O.has(N))throw new Error(`ArgumentError: WHERE field ${N} does not exist in APP${g.appId}.`);if(N!=="$id"&&!S.has(N)&&O.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 _=new Map([...S].map(([N,w])=>[N,w.fieldType]));_.set("$id","RECORD_NUMBER"),$t(g,_);let C=rt(g.where,N=>N.field==="$id"?z({fieldType:"__ID__"}):S.get(N.field)?.semantics??(S.has(N.field)?z(S.get(N.field)):void 0));if(C.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${kt(C)}).`);let v=new Map([...S].map(([N,w])=>[N,w.fieldType])),k=new Map([...S.values()].flatMap(N=>N.optionOrder?[[N.code,new Set(Object.keys(N.optionOrder))]]:[])),A=g.where===null?null:C.capability==="EXACT_PUSHDOWN"?g.where:nr(g.where,{allowUnqualifiedFields:!0,fieldTypes:v,fieldOptions:k,allowKlike:!1}),P=b.some(N=>N.field.fieldType==="NUMBER");P&&(s.add(g.appId),await Ye(g.appId,l,r)),bp.set(g,{targetFields:b.map(N=>N.subtableCode?`${N.subtableCode}(${N.field.code})`:N.field.code),fetchFields:[...new Set(["$id",...b.map(N=>N.subtableCode??N.field.code),...I,...L.map(N=>N.field)])],subtables:new Map([...new Set(b.flatMap(N=>N.subtableCode?[N.subtableCode]:[]))].map(N=>[N,b.filter(w=>w.subtableCode===N).length])),capability:C,prefilter:A,numberPrecision:P})}else if(y.type==="UPDATE"||y.type==="DELETE"){if(o.add(m.appId),y.type==="UPDATE"&&m.applyBlocks?.length){let h=m,S=await J(h.appId,l,r);if(Ze(h,S),no(h)){let O=S.filter(L=>!L.inSubtable),b=Ea(h.where,{fieldTypes:new Map(O.map(L=>[L.code,L.fieldType])),fieldOptions:new Map(O.flatMap(L=>L.optionOrder?[[L.code,new Set(Object.keys(L.optionOrder))]]:[]))});Pp.set(h,b)}}let g=m;(g.type!=="UPDATE"||!no(g))&&E(g)?.allowed!==!1&&await yr(g,l,r)}await Promise.all(Object.values(y).map(R))};if(await R(e),typeof e=="object"&&e!==null&&e.type==="WITH"&&pt(e)){let m=dt(e),y=await Sn(m,l,r),g=E(m);if(y.capability==="UNSUPPORTED"&&!g)throw new Error(`ArgumentError: WHERE predicate is unsupported (${kt(y)}).`);if(p.set(m,y),Ji(m)&&g?.allowed!==!1){let h=await wn(m,l,r);u.set(m,(m.orderMode==="KINTONE_NATIVE"?tn:en)({stmt:m,staticMode:y.capability==="EXACT_PUSHDOWN"?be(m):"FULL_SCAN",whereCapability:y.capability,whereReasons:y.reasons,orderSemantics:h.semantics,maxRecords:n,hasKlike:se(m.where)}))}}return{capabilities:p,orderPlans:u,plainGroupByPlans:d,fieldApps:o,processStatusApps:a,numberPrecisionApps:s,relativeDatePlan:f}}function Bc(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 xy(e){switch(e){case"NOT_LIKE":return"NOT LIKE";case"NOT_KLIKE":return"NOT KLIKE";case"NOT_IN":return"NOT IN";case"LIKE":case"KLIKE":case"IN":case"=":case"!=":case"<>":case">":case"<":case">=":case"<=":return e;default:return"<op>"}}function $c(e){return e==="<>"?"!=":e}function ve(e){if(e===null||typeof e!="object")return"<expr>";let t=e;switch(t.type){case"FIELD":return typeof t.field=="string"?`${typeof t.tableAlias=="string"?`${t.tableAlias}.`:""}${t.field}`:"<expr>";case"FIELD_REF":return typeof t.field=="string"?t.field:"<expr>";case"NUMBER":return typeof t.raw=="string"?t.raw:typeof t.value=="number"?String(t.value):"<expr>";case"STRING":return typeof t.value=="string"?`'${t.value.replace(/'/g,"''")}'`:"<expr>";case"VARIABLE":return typeof t.name=="string"?`@${t.name}`:"<expr>";case"VARIABLE_IN_LIST":return typeof t.name=="string"?`@${t.name}`:"<expr>";case"STRING_FUNC":return typeof t.func!="string"||!Array.isArray(t.args)?"<expr>":`${t.func}(${t.args.map(ve).join(", ")})`;case"FUNC_FIELD":case"ARITH_FIELD":case"CASE_FIELD":case"ARITH_VALUE":case"CASE_VALUE":return ve(t.expr);case"GROUPING_FIELD":return`GROUPING(${ve(t.ref)})`;case"GROUPING_REF":return ve(t.field);case"ARITH":case"SCALAR_ARITH":case"CONCAT_OP":return`(${ve(t.left)} ${typeof t.op=="string"?t.op:t.type==="CONCAT_OP"?"||":"<op>"} ${ve(t.right)})`;case"KINTONE_FUNC":return typeof t.name=="string"?`${t.name}(...)`:"<expr>";case"IN_LIST":return Array.isArray(t.values)?`(${t.values.map(ve).join(", ")})`:"<expr>";case"ARRAY":return Array.isArray(t.elements)?`[${t.elements.map(ve).join(", ")}]`:"<expr>";case"CASE":case"CASE_WHEN":return"CASE ... END";default:return"<expr>"}}function fn(e){try{let t=e;switch(t.type){case"BINARY":return`${ve(t.left)} ${xy(t.op)} ${ve(t.right)}`;case"NULL_CHECK":return`${ve(t.field)} IS ${t.not===!0?"NOT ":""}NULL`;case"LOGICAL":return`(${fn(t.left)} ${t.op==="AND"||t.op==="OR"?t.op:"<op>"} ${fn(t.right)})`;case"NOT":return`NOT (${fn(t.expr)})`;case"GROUP":return`(${fn(t.expr)})`;case"BOOLEAN":return t.value===!0?"TRUE":t.value===!1?"FALSE":"<expr>";default:return"<expr>"}}catch{return"<expr>"}}function Fy(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){let n=r.fullScanExactPlan;if(r.allowed&&r.allowForm==="FULL_SCAN_EXACT"&&n){for(let a of n.prefilterPlan.exactRelativeLeaves){let s=a.right.type==="KINTONE_FUNC"?a.right.name:"(unknown)",l=a.left.type==="FIELD"?a.left.field:void 0,p=$c(a.op),u=r.capability?.reasons.find(d=>d.functionName===s&&(l===void 0||d.field===l)&&d.operator===p);t.push(` relative date function: ${s}`," relative date evaluation: kintone server whole-WHERE exact",` field: ${u?.field??l??"(unknown)"} (${u?.fieldType??"unknown"})`,` operator: ${u?.operator??p}`)}let o=n.serializedWholeWhere;t.push(" where capability: EXACT_PUSHDOWN",` server predicate: ${o}`," client residual: (none)"," relative date client evaluations: 0",` kintone query: ${o}`);continue}let i=r.prefilterPlan;if(r.allowed&&i?.prefilterWhere&&i.residualWhere){for(let a of i.exactRelativeLeaves){let s=a.right.type==="KINTONE_FUNC"?a.right.name:"(unknown)",l=a.left.type==="FIELD"?a.left.field:void 0,p=$c(a.op),u=r.capability?.reasons.find(d=>d.functionName===s&&(l===void 0||d.field===l)&&d.operator===p);t.push(` relative date function: ${s}`," relative date evaluation: kintone server exact prefilter",` field: ${u?.field??l??"(unknown)"} (${u?.fieldType??"unknown"})`,` operator: ${u?.operator??p}`)}let o=G(i.prefilterWhere);t.push(" where capability: SUPERSET_PREFILTER",` server prefilter: ${o}`,` client residual: ${fn(i.residualWhere)}`," relative date client evaluations: 0",` kintone query: ${o}`);continue}for(let o of r.functionNames){let a=r.capability?.reasons.find(s=>s.functionName===o);t.push(` relative date function: ${o}`," evaluation: kintone server",` field: ${a?.field??"(unknown)"} (${a?.fieldType??"unknown"})`,` operator: ${a?.operator??"(unknown)"}`,` where capability: ${r.capability?.capability??"(unknown)"}`," client evaluation: forbidden",` kintone query: ${r.restQuery||"(\u306A\u3057)"}`)}}return t}async function Ky(e,t,r,n,i,o=100,a=Te,s){let l=s??await Za(e.query,t,r),p=await My(e.query,t,r,n,l),u=Fy(l),d=l.hasRelativeDate&&!l.allowed?[...Bc(p),...u]:[...Bc(p),...u,...By(Np(e.query,void 0,p.capabilities,p.orderPlans,o,a,n,p.plainGroupByPlans),i)];return{type:"SELECT",columns:["plan"],rows:d.map(c=>({plan:c})),rowCount:d.length}}function By(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 Np(e,t,r,n,i=100,o=Te,a=1e4,s){if(e.type==="UNION")return Gy(e,r,n,s);if(e.type==="WITH")return Vy(e,r,n,s);if(e.type==="INSERT")return Yy(e,t,i,o);if(e.type==="INSERT_SELECT")return jy(e,t,r,n,s);if(e.type==="UPSERT")return Jy(e,t,i,o);if(e.type==="UPSERT_SELECT")return Qy(e,t,r,n,s);if(e.type==="UPDATE")return qy(e,t,r,n,i,o,a);if(e.type==="DELETE")return Xy(e,t);if(e.type==="REORDER")return Zy(e,t);if(e.type==="VALIDATE")return $y(e,t);if(e.type==="IMPORT"){if(e.writeMode==="UPDATE_RECORD_NUMBER"){let u=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",...u.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 l=e.keyFields?"UPSERT":"INSERT",p=e.targets?.some(u=>u.kind==="SUBTABLE")===!0;return[...t?[t]:[],`IMPORT ${l} 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",...p?[" 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&&p?"requires actual source load at execution; this EXPLAIN is static":"requires load"}`,...p?[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 Ue(e,t,r,n,s)}function $y(e,t){let r=bp.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)":G(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?ts:es).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 Ue(e,t,r,n,i){let o=r?.get(e)??(r?[...r].find(([m])=>JSON.stringify(m)===JSON.stringify(e))?.[1]:void 0),a=n?.get(e)??(n?[...n].find(([m])=>JSON.stringify(m)===JSON.stringify(e))?.[1]:void 0),s=i?.get(e)??(i?[...i].find(([m])=>JSON.stringify(m)===JSON.stringify(e))?.[1]:void 0),l=a?.kind==="CANONICAL_LOCAL"||o&&o.capability!=="EXACT_PUSHDOWN"?"FULL_SCAN":be(e),p=Wy(e);o&&o.capability!=="EXACT_PUSHDOWN"&&p.push(...o.reasons.map(m=>m.code));let u=[],d=Cu(e,Tn.get(e)?.allItems.length);t&&u.push(t),u.push(` mode: ${l}`),d&&(u.push(` grouping source: ${d.source}`),u.push(` grouping sets: ${d.expandedSetCount} (limit: ${d.setLimit})`),u.push(` grouping items: ${d.groupingItemCount} (limit: ${d.itemLimit})`),u.push(` grouping output rows: runtime checked (limit: ${d.outputRowLimit}, before HAVING/DISTINCT/LIMIT)`));let c=Q(e);if(c.type==="PLAIN"){let m=c.allItems;if(s)s.items.forEach((y,g)=>{let h=m[g];h?.type==="FIELD_NAME"&&y.kind==="PHYSICAL"&&u.push(` group key ${h.name}: PHYSICAL (source=${y.sourceIndex}, field=${y.fieldCode})`)});else if([e.from,...e.joins.map(y=>y.table)].some(y=>y.cteName!==null))for(let y of m)y.type==="FIELD_NAME"&&u.push(` group key ${y.name}: DEFERRED (materialized schema unavailable)`)}a?(u.push(` order plan: ${a.kind}`),a.reasonCodes.length>0&&u.push(` order reason: ${a.reasonCodes.join(", ")}`),a.kind==="KORDER_NATIVE"?(u.push(" order semantics: kintone native (not kSQL canonical)"),u.push(" REST execution: single GET")):a.kind==="KORDER_CURSOR"&&(u.push(" order semantics: kintone native (not kSQL canonical)"),u.push(" fetch API: POST/GET/DELETE records/cursor.json"),u.push(" cursor page size: 500"),u.push(` scan rows: ${a.scanRows}`))):d&&u.push(" order plan: CANONICAL_LOCAL");let f=a&&!a.requiresCompleteInput?{...e,orderBy:[]}:e,E=It(f);a?.requiresCompleteInput&&E.add("LOCAL_ORDER");let R=ot(e.where);if(E.size>0&&(!R||d!==null)&&(u.push(" complete input: required (onLimit=truncate disabled)"),u.push(` complete input reason: ${[...E].join(", ")}`),u.push(" onLimit=truncate: disabled")),R)return u.push(" predicate: constant false"),u.push(" records API access: none"),u.push(` app: APP${e.from.appId} (${e.from.appId})`),u;if(l==="FULL_SCAN"&&p.length>0&&u.push(` reason: ${p.join(", ")}`),l==="SIMPLE"){let m=Hn(a?.kind==="CANONICAL_REST_TOP_N"?ep(e):e);u.push(` app: APP${e.from.appId} (${e.from.appId})`);let y=a?.kind==="KORDER_CURSOR"?Ra(e):m.query;u.push(` kintone query: ${y||"(\u306A\u3057)"}`),u.push(` fields: ${m.fields.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":m.fields.join(", ")}`)}else{let m=or(e),y=bt(e,e.from,s),g=e.from.alias?` AS ${e.from.alias}`:"",h=m.mainCondition,S=zc(e),O=e.joins.length===0&&o?.capability==="EXACT_PUSHDOWN"&&e.where!==null&&!ct(e.where)?G(e.where):"",b=h!==null?G(h):O||"(\u5168\u4EF6\u53D6\u5F97)";u.push(` app: APP${e.from.appId}${g} (${e.from.appId})`),u.push(` kintone query: ${b}`),S!==null&&u.push(` pushdown candidate: ${G(S)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`),u.push(` fields: ${y.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":y.join(", ")}`);for(let L of e.joins){let I=bt(e,L.table,s),_=L.table.alias?` AS ${L.table.alias}`:"",C=L.type==="INNER"?"JOIN":`${L.type} JOIN`,v=L.table.alias?m.joinConditions.get(L.table.alias)??null:null,k=L.table.alias&&!L.table.subtableCode&&L.table.cteName===null&&e.where?kr(e.where,{tableAlias:L.table.alias}):null,A=v!==null?G(v):"(\u5168\u4EF6\u53D6\u5F97)";u.push(` ${C}: APP${L.table.appId}${_} (${L.table.appId})`),u.push(` kintone query: ${A}`),k!==null&&u.push(` pushdown candidate: ${G(k)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`),u.push(` fields: ${I.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":I.join(", ")}`)}}return u.push(...Hy(e,r,n,i)),u}function Gy(e,t,r,n){let i=[],o=s=>{if(s.type==="SELECT"){i.push(s);return}o(s.left),i.push(s.right)};o(e);let a=[];return i.forEach((s,l)=>{l>0&&a.push(""),a.push(...Ue(s,`[union:${l+1}]`,t,r,n))}),a}function Vy(e,t,r,n){let i=[];for(let o of e.ctes)o.query.type==="SELECT"&&(i.push(...Ue(o.query,`[cte: ${o.name}]`,t,r,n)),i.push(""));if((e.query.type==="SELECT"||e.query.type==="UNION")&&i.push(...Np(e.query,"[main]",t,r,100,Te,1e4,n)),pt(e)){i.push("");let o=dt(e);i.push(...Ue(o,"[effective: inlined CTE]",t,r,n))}return i}function Wy(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=Q(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"),ct(e.where)&&t.push("WHERE \u53E5\u306B JS \u8A55\u4FA1\u304C\u5FC5\u8981\u306A\u5F0F"),ut(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 Hy(e,t,r,n){let i=[],o=1,a=s=>{if(s)switch(s.type){case"BINARY":s.right.type==="SCALAR_SUBQUERY"&&(i.push(""),i.push(...Ue(s.right.query,`[subquery:${o++}]`,t,r,n))),s.right.type==="SUBQUERY_IN_LIST"&&(i.push(""),i.push(...Ue(s.right.query,`[subquery:${o++}]`,t,r,n)));break;case"EXISTS":i.push(""),i.push(...Ue(s.query,`[subquery:${o++}]`,t,r,n));break;case"LOGICAL":a(s.left),a(s.right);break;case"NOT":case"GROUP":a(s.expr);break;case"NULL_CHECK":break;case"BOOLEAN":break}};a(e.where);for(let s of e.columns)s.type==="SCALAR_SUBQUERY_COL"&&(i.push(""),i.push(...Ue(s.query,`[subquery:${o++}]`,t,r,n)));return e.having&&a(e.having),i}function Yy(e,t,r=st,n=Te){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,...ys(Ti(e,r,n))]:a}function jy(e,t,r,n,i){let o=[];return t&&o.push(t),o.push(" [INSERT SELECT]"),o.push(` target: APP${e.appId} (${e.appId})`),o.push(` fields: ${e.fields.join(", ")}`),o.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"),o.push(""),o.push(...Ue(e.select,"[source SELECT]",r,n,i)),o}function qy(e,t,r,n,i=100,o=Te,a=1e4){if(e.applyBlocks?.length)return zy(e,t,i,o,a);let s=jl(e),l=e.assignments.some(f=>f.value.type==="STRING_FUNC"),p=ui(e),u=e.assignments.some(f=>f.value.type==="SCALAR_SUBQUERY"),d=[];if(t&&d.push(t),d.push(e.from?" [UPDATE FROM]":" [UPDATE]"),d.push(` target: APP${e.appId} (${e.appId})`),e.from){let f=e.from.cteName??`APP${e.from.appId}`;d.push(` source: ${f} AS ${e.from.alias}`),d.push(` join: APP${e.appId}.${e.from.targetJoinField} = ${e.from.alias}.${e.from.joinKeyField}`),d.push(` target filter: ${e.from.targetFilter?Nn(e.from.targetFilter):"(none)"}`)}else d.push(` kintone query: ${Nn(e.where)}`);e.subtableCode||(d.push(" selection: exact native pushdown; JS residual none"),d.push(" search abort: DML fail-closed (SearchAbortedError; mutation 0)")),d.push(ot(e.where)?" api: metadata validation only (records API access: none)":" api: GET /k/v1/records.json \u2192 PUT /k/v1/records.json");let c=[];if(s&&c.push("\u7B97\u8853 SET\uFF08\u73FE\u5728\u5024\u3092\u53D6\u5F97\u3057\u3066\u8A08\u7B97\uFF09"),l&&c.push("\u6587\u5B57\u5217\u95A2\u6570 SET\uFF08\u73FE\u5728\u5024\u3092\u53D6\u5F97\u3057\u3066\u8A55\u4FA1\uFF09"),u&&c.push("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA SET"),!p&&!u&&c.push("\u5358\u7D14 SET"),d.push(` set type: ${c.join(", ")}`),p){let f=tg(e);f.length>0&&d.push(` ref fields: ${f.join(", ")}\uFF08GET \u306B\u542B\u3081\u308B\uFF09`)}d.push(" set fields:");for(let f of e.assignments)d.push(` ${ng(f)}`);for(let f of e.assignments)f.value.type==="SCALAR_SUBQUERY"&&(d.push(""),d.push(...Ue(f.value.query,`[subquery: ${f.field}]`,r,n)));return d}function zy(e,t,r,n,i){let o=Ti(e,r,n),a=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"}),u=[...new Set(a.targets.flatMap(E=>E.operations.map(R=>R.kind)))],d=u.includes("REMOVE"),c=Pp.get(e),f=c?["parent selection: safe prefilter + JS residual evaluation",`kintone prefilter: ${c.prefilter===null?"(none; empty query)":G(c.prefilter)}`,"JS residual: original parent WHERE",`applied KLIKE: ${c.appliedKlikes.size}`,`unapplied KLIKE: ${c.unappliedKlikes.length}${c.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: ${Nn(e.where)}`,`parent cardinality: ${Xe(e.where)?"single":"multiple"}`,...f,`apply target: ${a.targets.map(E=>`${E.field} (${E.targetKind})`).join(" | ")}`,`operations: ${u.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=${d?"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: ${d?"unknown (records API not called)":"0 (static without REMOVE)"}`,`dmlMaxRows: ${r}`,`dmlMaxSubtableRows: ${n}`,"MCP mutation: disabled in v1",...ys(o)]}function Xy(e,t){let r=[];return t&&r.push(t),r.push(" [DELETE]"),r.push(` target: APP${e.appId} (${e.appId})`),r.push(` kintone query: ${Nn(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(ot(e.where)?" api: metadata validation only (records API access: none)":" api: GET /k/v1/records.json \u2192 DELETE /k/v1/records.json"),r}function Jy(e,t,r=st,n=Te){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,...ys(Ti(e,r,n))]:a}function ys(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 Qy(e,t,r,n,i){let o=[...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 o.push(...Ue(e.select,"[source SELECT]",r,n,i)),o}function Zy(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(eg).join(", "),o=[...t?[t]:[]," [REORDER]",` target: APP${e.appId} (${e.appId})`,` table: ${r}`,` scope: ${n}`,` by: ${i}`,ot(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: ${Nn(e.where)}`),o}function eg(e){return`${e.key.type==="FIELD_NAME"?e.key.name:"(\u5F0F)"} ${e.direction}`}function Nn(e){if(e.type==="BOOLEAN")return e.value?"TRUE":"FALSE (constant)";try{return G(e)}catch{return"(JS \u8A55\u4FA1\u304C\u5FC5\u8981\u306A\u305F\u3081 kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u4E0D\u53EF)"}}function tg(e){let t=new Set;for(let{value:r}of e.assignments)r.type==="ARITH"&&io(r,t),r.type==="STRING_FUNC"&&io(r,t),(r.type==="SCALAR_ARITH"||r.type==="CONCAT_OP")&&hn(r,t);return[...t]}function io(e,t){if(e.type==="FIELD_REF"){t.add(e.field);return}if(e.type==="ARITH"&&(io(e.left,t),io(e.right,t)),e.type==="STRING_FUNC")for(let r of e.args)r.type!=="AGG_REF"&&r.type!=="AGG_ARITH"&&hn(r,t)}async function Cp(e,t,r,n,i){let o=fs(e),a=await Re(e.appId,r,n),s=t.cteName,l=s!==null?new Map((i?.get(s)?.columns??[]).map(c=>[c,i?.get(s)?.columnMeta?.get(c)?.fieldType??(i?.get(s)?.columnMeta?.get(c)?.semantics?.compareMode==="number"?"NUMBER":"SINGLE_LINE_TEXT")])):await Re(t.appId,r,n),p=new Set,u=new Set;for(let c of o){if(c.tableAlias!==null){if(c.tableAlias.toLowerCase()===`app${e.appId}`.toLowerCase()){if(c.field!=="$id"&&!a.has(c.field))throw ue(`CHECK \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u30D5\u30A3\u30FC\u30EB\u30C9 ${c.field} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093`);p.add(c.field)}else if(c.tableAlias.toLowerCase()===t.alias.toLowerCase()){if(c.field!=="$id"&&!l.has(c.field))throw ue(`CHECK \u306E\u30BD\u30FC\u30B9\u30D5\u30A3\u30FC\u30EB\u30C9 ${c.field} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093`);u.add(c.field)}else throw ue(`CHECK \u306E\u4FEE\u98FE\u5B50 ${c.tableAlias} \u306F\u66F4\u65B0\u5148\u307E\u305F\u306F FROM alias \u3067\u306F\u3042\u308A\u307E\u305B\u3093`);continue}let f=c.field==="$id"||a.has(c.field),E=c.field==="$id"||l.has(c.field);if(!f)throw ue(`UPDATE FROM \u306E CHECK \u3067\u306F\u30BD\u30FC\u30B9\u5217 ${c.field} \u3092\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044`);if(E)throw ue(`UPDATE FROM \u306E CHECK \u306E\u975E\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9 ${c.field} \u306F\u66D6\u6627\u3067\u3059`);p.add(c.field)}let d=new Map;for(let[c,f]of a)d.set(c,f),d.set(`APP${e.appId}.${c}`,f);d.set("$id","RECORD_NUMBER"),d.set(`APP${e.appId}.$id`,"RECORD_NUMBER");for(let[c,f]of l)d.set(`${t.alias}.${c}`,f);return{targetFields:[...p],sourceFields:[...u],evaluationTypes:d}}function rg(e,t,r){if(!e)return{};let n=tt(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 hn(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"&&hn(r,t);return}(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP")&&(hn(e.left,t),hn(e.right,t))}function ng(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} = ${Op(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 Op(e){return`${Gc(e.left)} ${e.op} ${Gc(e.right)}`}function Gc(e){return e.type==="FIELD_REF"?e.field:e.type==="NUMBER"?W(e):e.type==="ARITH"?`(${Op(e)})`:"..."}var ee=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 Gt(e){return new me("READ_ONLY_VIOLATION",e)}function gs(e,t){return new me("PARSE_ERROR",e,t)}function Lp(){let e=new gr;return new me("SEARCH_ABORTED",e.message,e)}function vn(e){return e instanceof Error&&e.message.trim()!==""||e!==null&&typeof e=="object"&&typeof e.message=="string"?e.message:String(e)}function ig(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 Un(e){return e instanceof me?e:e instanceof ce||e instanceof T?new me("PARSE_ERROR",vn(e),e):e instanceof gr||e?.name==="SearchAbortedError"?new me("SEARCH_ABORTED",vn(e),e):e instanceof we||e?.name==="FetchAllLimitError"?new me("FETCH_LIMIT_EXCEEDED",vn(e),e):e instanceof Error&&e.name==="ClientOperationError"&&"cause"in e?new me("CLIENT_ERROR",e.message,e.cause):ig(e)?new me("CLIENT_ERROR",vn(e),e):new me("EXECUTION_ERROR",vn(e),e)}var og=2,po=5,ag=3e4,sg=10*6e4+3e4,fo=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??og;if(!Number.isSafeInteger(n)||n<1||n>po)throw new Error(`ArgumentError: cursorMaxActive must be an integer from 1 to ${po}.`);this.maxActive=n,this.waitTimeoutMs=r.waitTimeoutMs??ag,this.quarantineMs=r.quarantineMs??sg}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 bi(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>po)throw new Error(`ArgumentError: cursorMaxActive must be an integer from 1 to ${po}.`)}};function lg(e){let t=e;return t?.status===404&&t.code==="GAIA_CN01"}async function ug(e,t=n=>new Promise(i=>setTimeout(i,n)),r=lg){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 cg(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 _p(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 cg(ug(t.delete,t.sleep,t.isAlreadyReleasedError),t.cleanupTimeoutMs??5e3),r=!0,t.onReleased?.()}catch(l){throw t.onReleaseUnknown?.(),l}}),o)}}function Dp(e){return vp(e,dg(e))}function vp(e,t,r=!1,n){let i=[];for(let o of Object.values(e)){let a=fg(o.options),s=Eg(o.type,o.format),l={code:o.code,label:o.label,fieldType:o.type,optionOrder:a,sortKind:s,required:o.required,minValue:Eo(o.minValue),maxValue:Eo(o.maxValue),minLength:Eo(o.minLength),maxLength:Eo(o.maxLength),defaultValue:o.defaultValue,inSubtable:r,...n?{subtableCode:n}:{},writable:!t.has(o.code)&&!pg.has(o.type)};l.semantics=z(l),i.push(l),o.fields&&i.push(...vp(o.fields,t,!0,o.type==="SUBTABLE"?o.code:n))}return i}var pg=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE","SUBTABLE"]);function dg(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 Eo(e){return e==null||e===""?void 0:e}function fg(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 Eg(e,t){if(e==="NUMBER"||e==="RECORD_NUMBER")return"number";if(e==="CALC")return t==="NUMBER"||t==="NUMBER_DIGIT"?"number":"string"}function Up(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 Rg="Filter aborted because of too many search results";function kp(e){return e?.includes(Rg)===!0}var Mp="/k/v1/records.json",Ro="/k/v1/records/cursor.json",mg=4096,yg=2,hs=e=>kintone.api.url(e,!0);function gg(e){let t={app:e.app,query:e.query,...e.fields.length>0?{fields:e.fields}:{}},n=kintone.api.urlForGet(Mp,t,!0),i={"X-Requested-With":"XMLHttpRequest"};return new TextEncoder().encode(n).byteLength<=mg?{url:n,init:{method:"GET",credentials:"include",headers:i}}:{url:hs(Mp),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 kn(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
|
|
13
|
-
`),metrics:
|
|
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 oh(e){if(e.unappliedKlikes.length>0)throw new Error(`UnsupportedError: ${ih}`)}async function ah(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))]]:[])),p=Oa(e.where,{fieldTypes:s,fieldOptions:l});oh(p);let u=p.prefilter===null?"":$(p.prefilter),d=new Set(Ai(e,n));for(let E of sh(e.where))d.add(E);let c=await lh(e.appId,e.where,a,t,i);return(await ye(t.getRecords,e.appId,u,[...d],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1,onLimit:"error"})).map(E=>({snapshot:E,row:nt(E,null)})).filter(({row:E})=>X(e.where,E,c.fieldTypeResolver,p.appliedKlikes,c.fieldSemanticsResolver)).map(({snapshot:E})=>E)}function sh(e){return Rs(e)}async function lh(e,t,r,n,i){let s=[...uh(t)].some(u=>r.get(u)?.fieldType==="STATUS")?await Ps(e,n,i):void 0;return{fieldTypeResolver:u=>u.field==="$id"?"NUMBER":r.get(u.field)?.fieldType,fieldSemanticsResolver:u=>{if(u.field==="$id")return Er(q({fieldType:"__ID__"}),e,"$id");let d=r.get(u.field);if(!d)return;let c=d.semantics??q(d),f=d.fieldType==="STATUS"&&s?{...c,optionOrder:s}:c;return Er(f,e,d.code)}}}function uh(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 ch(e,t,r){let n=t.validations.flatMap(u=>u.errors),i=t.validations.reduce((u,d)=>u+(d.invalidRows>0?1:0),0),o=t.validations[0]?.columns?[...t.validations[0].columns]:[...Ge(r,e.fields).payloadFields,...rn],a=t.guards.parentRows,s=Ia(t),l=s.branches[0],p={type:"VALIDATION",operation:"INSERT",validatedRows:a,validRows:a-i,invalidRows:i,errorCount:n.length,columns:o,errors:n,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},apply:Dn(l),guards:vn(l),deletedRows:{total:0,parentRows:0},diagnostic:s};return Nr.set(p,So(o,r,e.appId)),p}function ph(e,t,r){let n=t.validations,i=n.flatMap(p=>p.errors),o=n.reduce((p,u)=>p+(u.invalidRows>0?1:0),0),a=n[0]?.columns?[...n[0].columns]:[...Ge(r,e.assignments.map(p=>p.field)).payloadFields,...rn],s=an(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:Dn(s.branches[0]),guards:vn(s.branches[0]),deletedRows:{total:t.plans.reduce((p,u)=>p+u.tables.reduce((d,c)=>d+c.deletedRows,0),0),parentRows:t.plans.filter(p=>p.tables.some(u=>u.deletedRows>0)).length},diagnostic:s};return Nr.set(l,So(a,r,e.appId)),l}function dh(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??[...Ge(r,e.fields).payloadFields,...rn],l=wa(t),p=l.branches.find(E=>E.branch==="insert"),u=l.branches.find(E=>E.branch==="update"),d=Dn(p),c=Dn(u),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:[...d,...c],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:d,guards:vn(p)},update:{apply:c,guards:vn(u)}},deletedRows:{total:t.update.plans.reduce((E,R)=>E+R.tables.reduce((m,y)=>m+y.deletedRows,0),0),parentRows:t.update.plans.filter(E=>E.tables.some(R=>R.deletedRows>0)).length},diagnostic:l};return Nr.set(f,So([...s],r,e.appId)),f}function Dn(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:Bt(t,"REMOVE")}:{field:t.field,operations:r,changedSubtableRows:0,deletedRows:0,multiValue:{fieldType:t.fieldType??"UNKNOWN",addedValues:Bt(t,"ADD"),removedValues:Bt(t,"REMOVE_VALUE"),changedValues:t.changedCount??0,postImages:t.postImages??[]}}})}function vn(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 lt=100,Te=500;function De(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 So(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:q({fieldType:"RECORD_NUMBER"})});continue}let s=n.get(a);if(s){o.set(a,je(s,r));continue}o.set(a,Y(i.has(a)?"number":"string"))}return o}async function fh(e,t,r,n,i,o){let a=await Wp(e,t,r,n,i,o),s=await Re(e.appId,r,i),l=ia(e,a,s),p=e.assignments.map(c=>c.field),u=await Q(e.appId,r,i),d=await st(e.appId,p,u,r,i);if(Wt(l.flatMap(c=>c.records.map(f=>f.record)),p,u,d),n.confirm&&!await n.confirm(a.length,"UPDATE"))throw new te("UPDATE",a.length);for(let c of l)await r.putRecords(c);return{type:"UPDATE",updatedCount:a.length}}function Eh(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 Rh(e,t,r,n){if(await wr(e,t,n),at(e.where))return{type:"DELETE",deletedCount:0};if(e.subtableCode)return gh(e,t,r,n);let i=du(e),a=(await vi(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 te("DELETE",a.length);let s=fu(e.appId,a);for(let l of s)await t.deleteRecords(l);return{type:"DELETE",deletedCount:a.length}}async function mh(e,t,r,n){if(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length)return My(e,t,r,n);if(e.checkGroups?.length)return Fn(e,t,r,n);let i=await Be(e.appId,e.fields,t,n),o=await st(e.appId,e.fields,i,t,n),a=[],s=[],l=await Re(e.appId,t,n),p=qp(e),u=await xn(e.appId,e.keyFields,p,t,r,l);if(e.values.forEach((c,f)=>{let E={};e.fields.forEach((m,y)=>{let h=c[y];h.type==="CASE_VALUE"?E[m]={value:ht(h.expr,{},l.get(m))}:E[m]={value:et(h,l.get(m))}});let R=Mn(u,p[f]);R!==void 0?s.push({id:R,record:E}):a.push(E)}),Wt([...a,...s.map(c=>c.record)],e.fields,i,o),r.confirm&&a.length+s.length>0){let c=a.length+s.length;if(!await r.confirm(c,"UPDATE"))throw new te("UPDATE",c)}let d=[];for(let c=0;c<a.length;c+=100){let f=await t.postRecords({app:e.appId,records:a.slice(c,c+100)});d.push(f.ids)}for(let c=0;c<s.length;c+=100)await t.putRecords({app:e.appId,records:s.slice(c,c+100)});return{type:"UPSERT",insertedCount:d.flat().length,updatedCount:s.length}}function qp(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"?Ne(i.expr,{}):i.elements.map(o=>o.value).join(",")}))}async function Ls(e,t,r,n){if(t.length===0)return;let i=await Re(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 yh(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 ye(t.getRecords,e.appId,"",[],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1}),s=To(a),l=new Map;for(let u of e.values){let d=dp(u[o]);if(!s.get(d))throw new Error(`_pid=${d} \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:dp(u[m])}}});let E=l.get(d);E?E.push(f):l.set(d,[f])}let p=[];for(let[u,d]of l.entries()){let c=s.get(u),E=[...Kn(c,i),...d];p.push(zp(e.appId,u,Bn(c),i,E))}for(let u of p)await t.putRecords(u);return{type:"INSERT",createdIds:[],insertedCount:e.values.length}}async function hh(e,t,r,n){let i=e.subtableCode;if(!bn(e.where))throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u306F _rid \u6761\u4EF6\u304C\u5FC5\u9808\u3067\u3059");let o=[];ot(e.where,o);for(let c of e.assignments)c.value.type==="CASE_VALUE"&&co(c.value.expr,o);let a=await Ls(e.appId,o,t,n),s=await ye(t.getRecords,e.appId,"",[],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1}),p=_s(s,i).filter(c=>X(e.where,c.flat,a));if(r.confirm&&!await r.confirm(p.length,"UPDATE"))throw new te("UPDATE",p.length);let u=new Map;for(let c of p){if(!c.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=u.get(c.parentId);f||(f=new Map,u.set(c.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:gi(R.value,c.flat,a)}}f.set(c.rowId,E)}let d=To(s);for(let[c,f]of u.entries()){let E=d.get(c);if(!E)continue;let m=Kn(E,i).map(y=>{let h=y.id??"";if(!h)return y;let g=f.get(h);return g?{id:h,value:g}:{id:h}});await t.putRecords(Ah(e.appId,c,Bn(E),i,m))}return{type:"UPDATE",updatedCount:p.length}}async function gh(e,t,r,n){let i=e.subtableCode;if(!bn(e.where))throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB DELETE \u306B\u306F _rid \u6761\u4EF6\u304C\u5FC5\u9808\u3067\u3059");let o=[];ot(e.where,o);let a=await Ls(e.appId,o,t,n),s=await ye(t.getRecords,e.appId,"",[],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1}),p=_s(s,i).filter(c=>X(e.where,c.flat,a));if(r.confirm&&!await r.confirm(p.length,"DELETE"))throw new te("DELETE",p.length);let u=new Map;for(let c of p){let f=u.get(c.parentId);f?f.push(c.rowIndex):u.set(c.parentId,[c.rowIndex])}let d=To(s);for(let[c,f]of u.entries()){let E=d.get(c);if(!E)continue;let R=Kn(E,i),m=new Set(f),y=R.filter((h,g)=>!m.has(g));await t.putRecords(zp(e.appId,c,Bn(E),i,y))}return{type:"DELETE",deletedCount:p.length}}function To(e){let t=new Map;for(let r of e){let n=String(r.$id?.value??"");n&&t.set(n,r)}return t}function _s(e,t){let r=[];for(let n of e){let i=String(n.$id?.value??""),o=Bn(n),a=Kn(n,t);for(let s=0;s<a.length;s++){let l=a[s],p={...Si(l,s),_pid:i};for(let[u,d]of Object.entries(n))u!==t&&(p[`_p.${u}`]=cs(d?.value));r.push({parent:n,parentId:i,parentRevision:o,rowIndex:s,rowId:l.id??"",row:l,flat:p})}}return r}function Kn(e,t){let r=e[t]?.value;return Array.isArray(r)?r:[]}function Bn(e){let t=Number(e.$revision?.value??0);return Number.isFinite(t)?t:0}function zp(e,t,r,n,i){return{app:e,records:[{id:Number(t),revision:r,record:{[n]:{value:i}}}]}}function Ah(e,t,r,n,i){return{app:e,records:[{id:Number(t),revision:r,record:{[n]:{value:i}}}]}}function Sh(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 dp(e){return e.type==="STRING"?e.value:e.type==="NUMBER"?G(e):e.type==="CASE_VALUE"?Ne(e.expr,{}):e.elements.map(t=>t.value).join(",")}function cs(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 bn(e){switch(e.type){case"BINARY":return e.left.type==="FIELD"&&e.left.tableAlias===null&&e.left.field==="_rid";case"LOGICAL":return bn(e.left)||bn(e.right);case"NOT":case"GROUP":return bn(e.expr);default:return!1}}async function Th(e,t,r,n){let i=[];ot(e.where,i);let o=await Ls(e.appId,i,t,n),a=await Q(e.appId,t,n);if(at(e.where))return{type:"REORDER",reorderedParentCount:0};let s=new Map(a.map(f=>[f.code,f.semantics??q(f)])),l=f=>{if(f.field==="_idx"||f.field==="_pid"||f.field==="_rid")return F("number");let E=f.field.startsWith("_p.")?f.field.slice(3):f.field;return s.get(E)??F("string")},p=await ye(t.getRecords,e.appId,"",[],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1}),u=_s(p,e.subtableCode),d=e.all?new Set(p.map(f=>String(f.$id?.value??"")).filter(f=>f!=="")):new Set(u.filter(f=>e.where&&X(e.where,f.flat,o,void 0,l)).map(f=>f.parentId));if(r.confirm&&!await r.confirm(d.size,"UPDATE"))throw new te("UPDATE",d.size);let c=To(p);for(let f of d){let E=c.get(f);if(!E)continue;let m=Kn(E,e.subtableCode).map((h,g)=>({row:h,i:g,flat:Ih(E,e.subtableCode,h,g)}));m.sort((h,g)=>wh(h.flat,g.flat,e.by,l));let y=m.map(h=>h.row.id??"");await t.putRecords(Sh(e.appId,f,Bn(E),e.subtableCode,y))}return{type:"REORDER",reorderedParentCount:d.size}}function Ih(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}`]=cs(a?.value));for(let[o,a]of Object.entries(r.value??{}))i[o]=cs(a?.value);return i}function wh(e,t,r,n){for(let i of r){let o=fp(i.key,e),a=fp(i.key,t),s=i.key.type==="FIELD_NAME"?n(Ke(i.key.name)):i.key.type==="ARITH_KEY"?F("number"):i.key.type==="FUNC_KEY"?$t(i.key.expr).semantics??F("string"):F("number"),l=Lt(o,a,s??F("string"));if(l!==0)return i.direction==="ASC"?l:-l}return 0}function fp(e,t){switch(e.type){case"FIELD_NAME":return t[e.name]??"";case"ARITH_KEY":return String(re(e.expr,t));case"FUNC_KEY":return ne(e.expr,t);case"GROUPING_KEY":throw new Error("ArgumentError: GROUPING() is not supported in REORDER BY.")}}async function Xp(e,t,r,n,i){if(e.checkGroups?.length)return Fn(e,t,r,n,i);let o=await Be(e.appId,e.fields,t,n),a=await st(e.appId,e.fields,o,t,n),s=await Os.materialize(e,t,r,n,i,o),{rows:l,columns:p}=s;if(Hp(s),p.length!==e.fields.length){let y=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${y}`)}for(let y of e.keyFields)if(!e.fields.includes(y))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${y}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let u=[],d=[],c=await Re(e.appId,t,n),f=l.map((y,h)=>{let g={};return e.fields.forEach((S,O)=>{if(s.importPresence&&!s.importPresence[h]?.has(S))return;let P=y[p[O]]??"";g[S]={value:Bp(P,c.get(S))}}),g});f.forEach(y=>Wt([y],e.fields.filter(h=>h in y),o,a));let E=f.map(y=>e.keyFields.map(h=>String(y[h]?.value??"")));if(yo.has(e)){let y=e.keyFields.map(g=>c.get(g)==="NUMBER"),h=new Set;for(let g of E){let S=Vt(g,y);if(h.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");h.add(S)}}let R=await xn(e.appId,e.keyFields,E,t,r,c);if(f.forEach((y,h)=>{let g=Mn(R,E[h]);g!==void 0?d.push({id:g,record:y}):u.push(y)}),r.confirm&&u.length+d.length>0){let y=u.length+d.length;if(!await r.confirm(y,"UPDATE"))throw new te("UPDATE",y)}let m=[];for(let y=0;y<u.length;y+=100){let h=await t.postRecords({app:e.appId,records:u.slice(y,y+100)});m.push(h.ids)}for(let y=0;y<d.length;y+=100)await t.putRecords({app:e.appId,records:d.slice(y,y+100)});return{type:"UPSERT",insertedCount:m.flat().length,updatedCount:d.length}}async function Jp(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 Qp(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 bh(e,t=!1){try{let r=new Jt(e).tokenize(),n=new er(r,{import:t}).parse();return Zn("phase15b",n),dr(n),n}catch(r){throw r instanceof ce||r instanceof T,r}}async function Un(e,t,r,n,i){let o=[];so(e,t,r,n,o,i),await Promise.all(o)}async function Zp(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(Un(s.condition,t,r,n,i));await Promise.all(o)}function Pn(e,t,r,n,i){return i!==void 0&&i.size>0?Gt(e,t,r,i,n):It(e,t,r,n)}function so(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(Pn(a.query,t,r,n,o).then(s=>{let l=a.column??s.columns[0]??"";a.resolved=new Set(s.rows.map(p=>p[l]??""))})),a.type==="SCALAR_SUBQUERY"&&i.push(Pn(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":so(e.left,t,r,n,i,o),so(e.right,t,r,n,i,o);break;case"NOT":case"GROUP":so(e.expr,t,r,n,i,o);break;case"EXISTS":{let a=e;i.push(Pn(a.query,t,r,n,o).then(s=>{a.resolved=s.rowCount>0}));break}case"BOOLEAN":break}}async function ed(e,t,r,n){for(let i of e){if(i.value.type!=="SCALAR_SUBQUERY")continue;let o=await It(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 td(e,t,r,n,i){let o=new Map,a=[];for(let p=0;p<e.length;p++){let u=e[p];if(u.type!=="SCALAR_SUBQUERY_COL")continue;let d=JSON.stringify(u.query),c=o.get(d);c||(c=Pn(u.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(d,c)),a.push([p,c])}let s=await Promise.all(a.map(([,p])=>p)),l=new Map;return a.forEach(([p],u)=>l.set(p,s[u])),l}var rd=new WeakMap,nd=new WeakMap,id=new WeakMap;async function Ph(e,t,r,n=1e4,i){let o=new Set,a=new Set,s=new Set,l={...t,getFields:async m=>(o.add(m),t.getFields(m)),getProcessStatuses:async m=>(a.add(m),t.getProcessStatuses(m)),getNumberPrecision:async m=>(s.add(m),t.getNumberPrecision(m))},p=new Map,u=new Map,d=new Map,c=new Set,f=i??await ds(e,l,r),E=m=>f.nodes.find(y=>y.source===m||JSON.stringify(y.source)===JSON.stringify(m)),R=async m=>{if(m===null||typeof m!="object"||c.has(m))return;if(c.add(m),Array.isArray(m)){await Promise.all(m.map(R));return}let y=m;if(y.type==="SELECT"){let h=m;await ho(h,l,r);let g=[h.from,...h.joins.map(I=>I.table)].some(I=>I.cteName!==null);if(Z(h).type==="PLAIN"&&!g){let I=await ys(h,l,r);I&&d.set(h,I)}let S=[h.from,...h.joins.map(I=>I.table)].filter(I=>I.cteName===null).map(I=>I.appId);(We(h.where)||h.orderBy.length>0||h.columns.some(I=>I.type==="WINDOW_COL"&&I.orderBy.length>0))&&S.forEach(I=>o.add(I));let P=await On(h,l,r),_=E(h);if(P.capability==="UNSUPPORTED"&&!_)throw new Error(`ArgumentError: WHERE predicate is unsupported (${Kt(P)}).`);p.set(h,P);let N=await As(h,l,r),L=gs(h,N);if(L&&rd.set(h,L),h.orderBy.length>0||h.columns.some(I=>I.type==="WINDOW_COL"&&I.orderBy.length>0)){let I=await _n(h,l,r);if(h.orderMode!=="KINTONE_NATIVE")for(let v of I.semantics.values())v.fieldType==="STATUS"&&v.source&&a.add(v.source.appId);if(lo(h)&&!g&&_?.allowed!==!1){let v=P.capability==="EXACT_PUSHDOWN"?be(h):"FULL_SCAN";u.set(h,(h.orderMode==="KINTONE_NATIVE"?fn:dn)({stmt:h,staticMode:v,whereCapability:P.capability,whereReasons:P.reasons,orderSemantics:I.semantics,maxRecords:n,hasKlike:ae(h.where)}))}}}else if(y.type==="VALIDATE"){let h=m;o.add(h.appId);let g=await Q(h.appId,l,r),S=new Map(g.filter(C=>!C.inSubtable).map(C=>[C.code,C])),O=new Set(g.filter(C=>C.inSubtable).map(C=>C.code)),P=ga(h,g),_=Rr(h.checkGroups??[]),N=Rs(h.where);for(let C of _){if(C.field!=="$id"&&!S.has(C.field)&&!O.has(C.field))throw le(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${C.field} \u306F APP${h.appId} \u306B\u5B58\u5728\u3057\u307E\u305B\u3093`);if(C.field!=="$id"&&!S.has(C.field)&&O.has(C.field))throw new Error(`ArgumentError: VALIDATE \u306E CHECK \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${C.field} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}for(let C of N){if(C!=="$id"&&!S.has(C)&&!O.has(C))throw new Error(`ArgumentError: WHERE field ${C} does not exist in APP${h.appId}.`);if(C!=="$id"&&!S.has(C)&&O.has(C))throw new Error(`ArgumentError: VALIDATE \u306E WHERE \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${C} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let L=new Map([...S].map(([C,w])=>[C,w.fieldType]));L.set("$id","RECORD_NUMBER"),Ht(h,L);let I=Le(h.where,C=>C.field==="$id"?q({fieldType:"__ID__"}):S.get(C.field)?.semantics??(S.has(C.field)?q(S.get(C.field)):void 0));if(I.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Kt(I)}).`);let v=new Map([...S].map(([C,w])=>[C,w.fieldType])),k=new Map([...S.values()].flatMap(C=>C.optionOrder?[[C.code,new Set(Object.keys(C.optionOrder))]]:[])),A=h.where===null?null:I.capability==="EXACT_PUSHDOWN"?h.where:sr(h.where,{allowUnqualifiedFields:!0,fieldTypes:v,fieldOptions:k,allowKlike:!1}),b=P.some(C=>C.field.fieldType==="NUMBER");b&&(s.add(h.appId),await ze(h.appId,l,r)),nd.set(h,{targetFields:P.map(C=>C.subtableCode?`${C.subtableCode}(${C.field.code})`:C.field.code),fetchFields:[...new Set(["$id",...P.map(C=>C.subtableCode??C.field.code),...N,..._.map(C=>C.field)])],subtables:new Map([...new Set(P.flatMap(C=>C.subtableCode?[C.subtableCode]:[]))].map(C=>[C,P.filter(w=>w.subtableCode===C).length])),capability:I,prefilter:A,numberPrecision:b})}else if(y.type==="UPDATE"||y.type==="DELETE"){if(o.add(m.appId),y.type==="UPDATE"&&m.applyBlocks?.length){let g=m,S=await Q(g.appId,l,r);if(tt(g,S),Ro(g)){let O=S.filter(_=>!_.inSubtable),P=Oa(g.where,{fieldTypes:new Map(O.map(_=>[_.code,_.fieldType])),fieldOptions:new Map(O.flatMap(_=>_.optionOrder?[[_.code,new Set(Object.keys(_.optionOrder))]]:[]))});id.set(g,P)}}let h=m;(h.type!=="UPDATE"||!Ro(h))&&E(h)?.allowed!==!1&&await wr(h,l,r)}await Promise.all(Object.values(y).map(R))};if(await R(e),typeof e=="object"&&e!==null&&e.type==="WITH"&&ft(e)){let m=Et(e),y=await On(m,l,r),h=E(m);if(y.capability==="UNSUPPORTED"&&!h)throw new Error(`ArgumentError: WHERE predicate is unsupported (${Kt(y)}).`);if(p.set(m,y),lo(m)&&h?.allowed!==!1){let g=await _n(m,l,r);u.set(m,(m.orderMode==="KINTONE_NATIVE"?fn:dn)({stmt:m,staticMode:y.capability==="EXACT_PUSHDOWN"?be(m):"FULL_SCAN",whereCapability:y.capability,whereReasons:y.reasons,orderSemantics:g.semantics,maxRecords:n,hasKlike:ae(m.where)}))}}return{capabilities:p,orderPlans:u,plainGroupByPlans:d,fieldApps:o,processStatusApps:a,numberPrecisionApps:s,relativeDatePlan:f}}function Ep(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){switch(e){case"NOT_LIKE":return"NOT LIKE";case"NOT_KLIKE":return"NOT KLIKE";case"NOT_IN":return"NOT IN";case"LIKE":case"KLIKE":case"IN":case"=":case"!=":case"<>":case">":case"<":case">=":case"<=":return e;default:return"<op>"}}function Rp(e){return e==="<>"?"!=":e}function xe(e){if(e===null||typeof e!="object")return"<expr>";let t=e;switch(t.type){case"FIELD":return typeof t.field=="string"?`${typeof t.tableAlias=="string"?`${t.tableAlias}.`:""}${t.field}`:"<expr>";case"FIELD_REF":return typeof t.field=="string"?t.field:"<expr>";case"NUMBER":return typeof t.raw=="string"?t.raw:typeof t.value=="number"?String(t.value):"<expr>";case"STRING":return typeof t.value=="string"?`'${t.value.replace(/'/g,"''")}'`:"<expr>";case"VARIABLE":return typeof t.name=="string"?`@${t.name}`:"<expr>";case"VARIABLE_IN_LIST":return typeof t.name=="string"?`@${t.name}`:"<expr>";case"STRING_FUNC":return typeof t.func!="string"||!Array.isArray(t.args)?"<expr>":`${t.func}(${t.args.map(xe).join(", ")})`;case"FUNC_FIELD":case"ARITH_FIELD":case"CASE_FIELD":case"ARITH_VALUE":case"CASE_VALUE":return xe(t.expr);case"GROUPING_FIELD":return`GROUPING(${xe(t.ref)})`;case"GROUPING_REF":return xe(t.field);case"ARITH":case"SCALAR_ARITH":case"CONCAT_OP":return`(${xe(t.left)} ${typeof t.op=="string"?t.op:t.type==="CONCAT_OP"?"||":"<op>"} ${xe(t.right)})`;case"KINTONE_FUNC":return typeof t.name=="string"?t.name==="LOGINUSER"?"LOGINUSER()":`${t.name}(...)`:"<expr>";case"IN_LIST":return Array.isArray(t.values)?`(${t.values.map(xe).join(", ")})`:"<expr>";case"ARRAY":return Array.isArray(t.elements)?`[${t.elements.map(xe).join(", ")}]`:"<expr>";case"CASE":case"CASE_WHEN":return"CASE ... END";default:return"<expr>"}}function Sn(e){try{let t=e;switch(t.type){case"BINARY":return`${xe(t.left)} ${Nh(t.op)} ${xe(t.right)}`;case"NULL_CHECK":return`${xe(t.field)} IS ${t.not===!0?"NOT ":""}NULL`;case"LOGICAL":return`(${Sn(t.left)} ${t.op==="AND"||t.op==="OR"?t.op:"<op>"} ${Sn(t.right)})`;case"NOT":return`NOT (${Sn(t.expr)})`;case"GROUP":return`(${Sn(t.expr)})`;case"BOOLEAN":return t.value===!0?"TRUE":t.value===!1?"FALSE":"<expr>";default:return"<expr>"}}catch{return"<expr>"}}function Ch(e){if(!e.hasServerOnlyWhereFunction)return[];if(!e.allowed&&e.rejection)return[` ${z(e.rejection.functionName)?"relative date function":"kintone 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){let n=r.fullScanExactPlan;if(r.allowed&&r.allowForm==="FULL_SCAN_EXACT"&&n){for(let a of n.prefilterPlan.exactRelativeLeaves){let s=yp(a),l=a.left.type==="FIELD"?a.left.field:void 0,p=Rp(a.op),u=r.capability?.reasons.find(d=>d.functionName===s&&(l===void 0||d.field===l)&&d.operator===p);t.push(` ${mp(s)}: ${s}`,` ${hp(s)}: kintone server whole-WHERE exact`,` field: ${u?.field??l??"(unknown)"} (${u?.fieldType??"unknown"})`,` operator: ${u?.operator??p}`)}let o=n.serializedWholeWhere;t.push(" where capability: EXACT_PUSHDOWN",` server predicate: ${o}`," client residual: (none)",` ${gp(n.prefilterPlan.exactRelativeLeaves)}: 0`,` kintone query: ${o}`);continue}let i=r.prefilterPlan;if(r.allowed&&i?.prefilterWhere&&i.residualWhere){for(let a of i.exactRelativeLeaves){let s=yp(a),l=a.left.type==="FIELD"?a.left.field:void 0,p=Rp(a.op),u=r.capability?.reasons.find(d=>d.functionName===s&&(l===void 0||d.field===l)&&d.operator===p);t.push(` ${mp(s)}: ${s}`,` ${hp(s)}: kintone server exact prefilter`,` field: ${u?.field??l??"(unknown)"} (${u?.fieldType??"unknown"})`,` operator: ${u?.operator??p}`)}let o=$(i.prefilterWhere);t.push(" where capability: SUPERSET_PREFILTER",` server prefilter: ${o}`,` client residual: ${Sn(i.residualWhere)}`,` ${gp(i.exactRelativeLeaves)}: 0`,` kintone query: ${o}`);continue}for(let o of r.functionNames){let a=r.capability?.reasons.find(s=>s.functionName===o);if(!z(o)){t.push(` kintone function: ${o}`," kintone function evaluation: kintone server",` field: ${a?.field??"(unknown)"} (${a?.fieldType??"unknown"})`,` operator: ${a?.operator??"(unknown)"}`,` where capability: ${r.capability?.capability??"(unknown)"}`," client residual: (none)"," kintone function client evaluations: 0",` kintone query: ${r.restQuery||"(\u306A\u3057)"}`);continue}t.push(` relative date function: ${o}`," evaluation: kintone server",` field: ${a?.field??"(unknown)"} (${a?.fieldType??"unknown"})`,` operator: ${a?.operator??"(unknown)"}`,` where capability: ${r.capability?.capability??"(unknown)"}`," client evaluation: forbidden",` kintone query: ${r.restQuery||"(\u306A\u3057)"}`)}}return t}function mp(e){return z(e)?"relative date function":"kintone function"}function yp(e){return e.right.type==="KINTONE_FUNC"?e.right.name:e.right.type==="IN_LIST"&&e.right.values.length===1&&e.right.values[0].type==="KINTONE_FUNC"?e.right.values[0].name:"(unknown)"}function hp(e){return z(e)?"relative date evaluation":"kintone function evaluation"}function gp(e){return e.every(t=>t.right.type==="KINTONE_FUNC"&&z(t.right.name))?"relative date client evaluations":"kintone function client evaluations"}async function Oh(e,t,r,n,i,o=100,a=Te,s){let l=s??await ds(e.query,t,r),p=await Ph(e.query,t,r,n,l),u=Ch(l),d=l.hasServerOnlyWhereFunction&&!l.allowed?[...Ep(p),...u]:[...Ep(p),...u,...Lh(od(e.query,void 0,p.capabilities,p.orderPlans,o,a,n,p.plainGroupByPlans),i)];return{type:"SELECT",columns:["plan"],rows:d.map(c=>({plan:c})),rowCount:d.length}}function Lh(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 od(e,t,r,n,i=100,o=Te,a=1e4,s){if(e.type==="UNION")return Dh(e,r,n,s);if(e.type==="WITH")return vh(e,r,n,s);if(e.type==="INSERT")return Mh(e,t,i,o);if(e.type==="INSERT_SELECT")return xh(e,t,r,n,s);if(e.type==="UPSERT")return $h(e,t,i,o);if(e.type==="UPSERT_SELECT")return Gh(e,t,r,n,s);if(e.type==="UPDATE")return Fh(e,t,r,n,i,o,a);if(e.type==="DELETE")return Bh(e,t);if(e.type==="REORDER")return Vh(e,t);if(e.type==="VALIDATE")return _h(e,t);if(e.type==="IMPORT"){if(e.writeMode==="UPDATE_RECORD_NUMBER"){let u=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",...u.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 l=e.keyFields?"UPSERT":"INSERT",p=e.targets?.some(u=>u.kind==="SUBTABLE")===!0;return[...t?[t]:[],`IMPORT ${l} 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",...p?[" 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&&p?"requires actual source load at execution; this EXPLAIN is static":"requires load"}`,...p?[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 Fe(e,t,r,n,s)}function _h(e,t){let r=nd.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)":$(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?Es:fs).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 Fe(e,t,r,n,i){let o=r?.get(e)??(r?[...r].find(([m])=>JSON.stringify(m)===JSON.stringify(e))?.[1]:void 0),a=n?.get(e)??(n?[...n].find(([m])=>JSON.stringify(m)===JSON.stringify(e))?.[1]:void 0),s=i?.get(e)??(i?[...i].find(([m])=>JSON.stringify(m)===JSON.stringify(e))?.[1]:void 0),l=a?.kind==="CANONICAL_LOCAL"||o&&o.capability!=="EXACT_PUSHDOWN"?"FULL_SCAN":be(e),p=Uh(e);o&&o.capability!=="EXACT_PUSHDOWN"&&p.push(...o.reasons.map(m=>m.code));let u=[],d=Vu(e,Ln.get(e)?.allItems.length);t&&u.push(t),u.push(` mode: ${l}`),d&&(u.push(` grouping source: ${d.source}`),u.push(` grouping sets: ${d.expandedSetCount} (limit: ${d.setLimit})`),u.push(` grouping items: ${d.groupingItemCount} (limit: ${d.itemLimit})`),u.push(` grouping output rows: runtime checked (limit: ${d.outputRowLimit}, before HAVING/DISTINCT/LIMIT)`));let c=Z(e);if(c.type==="PLAIN"){let m=c.allItems;if(s)s.items.forEach((y,h)=>{let g=m[h];g?.type==="FIELD_NAME"&&y.kind==="PHYSICAL"&&u.push(` group key ${g.name}: PHYSICAL (source=${y.sourceIndex}, field=${y.fieldCode})`)});else if([e.from,...e.joins.map(y=>y.table)].some(y=>y.cteName!==null))for(let y of m)y.type==="FIELD_NAME"&&u.push(` group key ${y.name}: DEFERRED (materialized schema unavailable)`)}a?(u.push(` order plan: ${a.kind}`),a.reasonCodes.length>0&&u.push(` order reason: ${a.reasonCodes.join(", ")}`),a.kind==="KORDER_NATIVE"?(u.push(" order semantics: kintone native (not kSQL canonical)"),u.push(" REST execution: single GET")):a.kind==="KORDER_CURSOR"&&(u.push(" order semantics: kintone native (not kSQL canonical)"),u.push(" fetch API: POST/GET/DELETE records/cursor.json"),u.push(" cursor page size: 500"),u.push(` scan rows: ${a.scanRows}`))):d&&u.push(" order plan: CANONICAL_LOCAL");let f=a&&!a.requiresCompleteInput?{...e,orderBy:[]}:e,E=Ct(f);a?.requiresCompleteInput&&E.add("LOCAL_ORDER");let R=at(e.where);if(E.size>0&&(!R||d!==null)&&(u.push(" complete input: required (onLimit=truncate disabled)"),u.push(` complete input reason: ${[...E].join(", ")}`),u.push(" onLimit=truncate: disabled")),R)return u.push(" predicate: constant false"),u.push(" records API access: none"),u.push(` app: APP${e.from.appId} (${e.from.appId})`),u;if(l==="FULL_SCAN"&&p.length>0&&u.push(` reason: ${p.join(", ")}`),l==="SIMPLE"){let m=ei(a?.kind==="CANONICAL_REST_TOP_N"?_p(e):e);u.push(` app: APP${e.from.appId} (${e.from.appId})`);let y=a?.kind==="KORDER_CURSOR"?La(e):m.query;u.push(` kintone query: ${y||"(\u306A\u3057)"}`),u.push(` fields: ${m.fields.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":m.fields.join(", ")}`)}else{let m=rd.get(e),y=m??ur(e);if(e.joins.length>0)if(m){u.push(" join pushdown plan: applied (runtime metadata resolved)"),u.push(" runtime plan timing: variables/subqueries resolved -> metadata resolved -> immutable plan"),u.push(" EXPLAIN unresolved subqueries: not applied (records API is not called)"),u.push(" residual: original WHERE"),u.push(` KLIKE applied nodes: ${m.joinPlan.appliedKlikes.size}`);for(let L of m.joinPlan.rejections)u.push(` join pushdown not applied: ${L.reason}`)}else{let L=e.joins.some(I=>I.type!=="INNER")?"OUTER_JOIN":[e.from,...e.joins.map(I=>I.table)].some(I=>I.cteName!==null||!!I.subtableCode)?"SOURCE_KIND":"PLAN_NOT_APPLICABLE";u.push(" join pushdown plan: not applied"),u.push(` join pushdown not applied: ${L}`)}let h=Ot(e,e.from,s),g=e.from.alias?` AS ${e.from.alias}`:"",S=y.mainCondition,O=Np(e),P=e.joins.length===0&&o?.capability==="EXACT_PUSHDOWN"&&e.where!==null&&!dt(e.where)?$(e.where):"",_=S!==null?$(S):P||"(\u5168\u4EF6\u53D6\u5F97)";u.push(` app: APP${e.from.appId}${g} (${e.from.appId})`),u.push(` kintone query: ${_}`);let N=m?.joinPlan.items.find(L=>L.targetAlias===e.from.alias);N?(u.push(` pushdown applied: ${m.queriesByAlias.get(N.targetAlias)}`),u.push(` relation: ${N.relation}`)):!m&&O!==null&&u.push(` pushdown candidate: ${$(O)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`),u.push(` fields: ${h.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":h.join(", ")}`);for(let L of e.joins){let I=Ot(e,L.table,s),v=L.table.alias?` AS ${L.table.alias}`:"",k=L.type==="INNER"?"JOIN":`${L.type} JOIN`,A=L.table.alias?y.joinConditions.get(L.table.alias)??null:null,b=L.table.alias&&!L.table.subtableCode&&L.table.cteName===null&&e.where?$r(e.where,{tableAlias:L.table.alias}):null,C=A!==null?$(A):"(\u5168\u4EF6\u53D6\u5F97)";u.push(` ${k}: APP${L.table.appId}${v} (${L.table.appId})`),u.push(` kintone query: ${C}`);let w=m?.joinPlan.items.find(U=>U.targetAlias===L.table.alias);w?(u.push(` pushdown applied: ${m.queriesByAlias.get(w.targetAlias)}`),u.push(` relation: ${w.relation}`)):!m&&b!==null&&u.push(` pushdown candidate: ${$(b)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`),u.push(` fields: ${I.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":I.join(", ")}`)}}return u.push(...kh(e,r,n,i)),u}function Dh(e,t,r,n){let i=[],o=s=>{if(s.type==="SELECT"){i.push(s);return}o(s.left),i.push(s.right)};o(e);let a=[];return i.forEach((s,l)=>{l>0&&a.push(""),a.push(...Fe(s,`[union:${l+1}]`,t,r,n))}),a}function vh(e,t,r,n){let i=[];for(let o of e.ctes)o.query.type==="SELECT"&&(i.push(...Fe(o.query,`[cte: ${o.name}]`,t,r,n)),i.push(""));if((e.query.type==="SELECT"||e.query.type==="UNION")&&i.push(...od(e.query,"[main]",t,r,100,Te,1e4,n)),ft(e)){i.push("");let o=Et(e);i.push(...Fe(o,"[effective: inlined CTE]",t,r,n))}return i}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=Z(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"),dt(e.where)&&t.push("WHERE \u53E5\u306B JS \u8A55\u4FA1\u304C\u5FC5\u8981\u306A\u5F0F"),ct(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 kh(e,t,r,n){let i=[],o=1,a=s=>{if(s)switch(s.type){case"BINARY":s.right.type==="SCALAR_SUBQUERY"&&(i.push(""),i.push(...Fe(s.right.query,`[subquery:${o++}]`,t,r,n))),s.right.type==="SUBQUERY_IN_LIST"&&(i.push(""),i.push(...Fe(s.right.query,`[subquery:${o++}]`,t,r,n)));break;case"EXISTS":i.push(""),i.push(...Fe(s.query,`[subquery:${o++}]`,t,r,n));break;case"LOGICAL":a(s.left),a(s.right);break;case"NOT":case"GROUP":a(s.expr);break;case"NULL_CHECK":break;case"BOOLEAN":break}};a(e.where);for(let s of e.columns)s.type==="SCALAR_SUBQUERY_COL"&&(i.push(""),i.push(...Fe(s.query,`[subquery:${o++}]`,t,r,n)));return e.having&&a(e.having),i}function Mh(e,t,r=lt,n=Te){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,...Ds(_i(e,r,n))]:a}function xh(e,t,r,n,i){let o=[];return t&&o.push(t),o.push(" [INSERT SELECT]"),o.push(` target: APP${e.appId} (${e.appId})`),o.push(` fields: ${e.fields.join(", ")}`),o.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"),o.push(""),o.push(...Fe(e.select,"[source SELECT]",r,n,i)),o}function Fh(e,t,r,n,i=100,o=Te,a=1e4){if(e.applyBlocks?.length)return Kh(e,t,i,o,a);let s=lu(e),l=e.assignments.some(f=>f.value.type==="STRING_FUNC"),p=hi(e),u=e.assignments.some(f=>f.value.type==="SCALAR_SUBQUERY"),d=[];if(t&&d.push(t),d.push(e.from?" [UPDATE FROM]":" [UPDATE]"),d.push(` target: APP${e.appId} (${e.appId})`),e.from){let f=e.from.cteName??`APP${e.from.appId}`;d.push(` source: ${f} AS ${e.from.alias}`),d.push(` join: APP${e.appId}.${e.from.targetJoinField} = ${e.from.alias}.${e.from.joinKeyField}`),d.push(` target filter: ${e.from.targetFilter?kn(e.from.targetFilter):"(none)"}`)}else d.push(` kintone query: ${kn(e.where)}`);e.subtableCode||(d.push(" selection: exact native pushdown; JS residual none"),d.push(" search abort: DML fail-closed (SearchAbortedError; mutation 0)")),d.push(at(e.where)?" api: metadata validation only (records API access: none)":" api: GET /k/v1/records.json \u2192 PUT /k/v1/records.json");let c=[];if(s&&c.push("\u7B97\u8853 SET\uFF08\u73FE\u5728\u5024\u3092\u53D6\u5F97\u3057\u3066\u8A08\u7B97\uFF09"),l&&c.push("\u6587\u5B57\u5217\u95A2\u6570 SET\uFF08\u73FE\u5728\u5024\u3092\u53D6\u5F97\u3057\u3066\u8A55\u4FA1\uFF09"),u&&c.push("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA SET"),!p&&!u&&c.push("\u5358\u7D14 SET"),d.push(` set type: ${c.join(", ")}`),p){let f=Hh(e);f.length>0&&d.push(` ref fields: ${f.join(", ")}\uFF08GET \u306B\u542B\u3081\u308B\uFF09`)}d.push(" set fields:");for(let f of e.assignments)d.push(` ${jh(f)}`);for(let f of e.assignments)f.value.type==="SCALAR_SUBQUERY"&&(d.push(""),d.push(...Fe(f.value.query,`[subquery: ${f.field}]`,r,n)));return d}function Kh(e,t,r,n,i){let o=_i(e,r,n),a=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"}),u=[...new Set(a.targets.flatMap(E=>E.operations.map(R=>R.kind)))],d=u.includes("REMOVE"),c=id.get(e),f=c?["parent selection: safe prefilter + JS residual evaluation",`kintone prefilter: ${c.prefilter===null?"(none; empty query)":$(c.prefilter)}`,"JS residual: original parent WHERE",`applied KLIKE: ${c.appliedKlikes.size}`,`unapplied KLIKE: ${c.unappliedKlikes.length}${c.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: ${kn(e.where)}`,`parent cardinality: ${Qe(e.where)?"single":"multiple"}`,...f,`apply target: ${a.targets.map(E=>`${E.field} (${E.targetKind})`).join(" | ")}`,`operations: ${u.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=${d?"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: ${d?"unknown (records API not called)":"0 (static without REMOVE)"}`,`dmlMaxRows: ${r}`,`dmlMaxSubtableRows: ${n}`,"MCP mutation: disabled in v1",...Ds(o)]}function Bh(e,t){let r=[];return t&&r.push(t),r.push(" [DELETE]"),r.push(` target: APP${e.appId} (${e.appId})`),r.push(` kintone query: ${kn(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(at(e.where)?" api: metadata validation only (records API access: none)":" api: GET /k/v1/records.json \u2192 DELETE /k/v1/records.json"),r}function $h(e,t,r=lt,n=Te){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,...Ds(_i(e,r,n))]:a}function Ds(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 Gh(e,t,r,n,i){let o=[...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 o.push(...Fe(e.select,"[source SELECT]",r,n,i)),o}function Vh(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(Wh).join(", "),o=[...t?[t]:[]," [REORDER]",` target: APP${e.appId} (${e.appId})`,` table: ${r}`,` scope: ${n}`,` by: ${i}`,at(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: ${kn(e.where)}`),o}function Wh(e){return`${e.key.type==="FIELD_NAME"?e.key.name:"(\u5F0F)"} ${e.direction}`}function kn(e){if(e.type==="BOOLEAN")return e.value?"TRUE":"FALSE (constant)";try{return $(e)}catch{return"(JS \u8A55\u4FA1\u304C\u5FC5\u8981\u306A\u305F\u3081 kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u4E0D\u53EF)"}}function Hh(e){let t=new Set;for(let{value:r}of e.assignments)r.type==="ARITH"&&mo(r,t),r.type==="STRING_FUNC"&&mo(r,t),(r.type==="SCALAR_ARITH"||r.type==="CONCAT_OP")&&Nn(r,t);return[...t]}function mo(e,t){if(e.type==="FIELD_REF"){t.add(e.field);return}if(e.type==="ARITH"&&(mo(e.left,t),mo(e.right,t)),e.type==="STRING_FUNC")for(let r of e.args)r.type!=="AGG_REF"&&r.type!=="AGG_ARITH"&&Nn(r,t)}async function ad(e,t,r,n,i){let o=Cs(e),a=await Re(e.appId,r,n),s=t.cteName,l=s!==null?new Map((i?.get(s)?.columns??[]).map(c=>[c,i?.get(s)?.columnMeta?.get(c)?.fieldType??(i?.get(s)?.columnMeta?.get(c)?.semantics?.compareMode==="number"?"NUMBER":"SINGLE_LINE_TEXT")])):await Re(t.appId,r,n),p=new Set,u=new Set;for(let c of o){if(c.tableAlias!==null){if(c.tableAlias.toLowerCase()===`app${e.appId}`.toLowerCase()){if(c.field!=="$id"&&!a.has(c.field))throw le(`CHECK \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u30D5\u30A3\u30FC\u30EB\u30C9 ${c.field} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093`);p.add(c.field)}else if(c.tableAlias.toLowerCase()===t.alias.toLowerCase()){if(c.field!=="$id"&&!l.has(c.field))throw le(`CHECK \u306E\u30BD\u30FC\u30B9\u30D5\u30A3\u30FC\u30EB\u30C9 ${c.field} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093`);u.add(c.field)}else throw le(`CHECK \u306E\u4FEE\u98FE\u5B50 ${c.tableAlias} \u306F\u66F4\u65B0\u5148\u307E\u305F\u306F FROM alias \u3067\u306F\u3042\u308A\u307E\u305B\u3093`);continue}let f=c.field==="$id"||a.has(c.field),E=c.field==="$id"||l.has(c.field);if(!f)throw le(`UPDATE FROM \u306E CHECK \u3067\u306F\u30BD\u30FC\u30B9\u5217 ${c.field} \u3092\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044`);if(E)throw le(`UPDATE FROM \u306E CHECK \u306E\u975E\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9 ${c.field} \u306F\u66D6\u6627\u3067\u3059`);p.add(c.field)}let d=new Map;for(let[c,f]of a)d.set(c,f),d.set(`APP${e.appId}.${c}`,f);d.set("$id","RECORD_NUMBER"),d.set(`APP${e.appId}.$id`,"RECORD_NUMBER");for(let[c,f]of l)d.set(`${t.alias}.${c}`,f);return{targetFields:[...p],sourceFields:[...u],evaluationTypes:d}}function Yh(e,t,r){if(!e)return{};let n=nt(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 Nn(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"&&Nn(r,t);return}(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP")&&(Nn(e.left,t),Nn(e.right,t))}function jh(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} = ${sd(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 sd(e){return`${Ap(e.left)} ${e.op} ${Ap(e.right)}`}function Ap(e){return e.type==="FIELD_REF"?e.field:e.type==="NUMBER"?G(e):e.type==="ARITH"?`(${sd(e)})`:"..."}var te=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 Yt(e){return new me("READ_ONLY_VIOLATION",e)}function vs(e,t){return new me("PARSE_ERROR",e,t)}function ld(){let e=new br;return new me("SEARCH_ABORTED",e.message,e)}function $n(e){return e instanceof Error&&e.message.trim()!==""||e!==null&&typeof e=="object"&&typeof e.message=="string"?e.message:String(e)}function qh(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 ce||e instanceof T?new me("PARSE_ERROR",$n(e),e):e instanceof br||e?.name==="SearchAbortedError"?new me("SEARCH_ABORTED",$n(e),e):e instanceof Ie||e?.name==="FetchAllLimitError"?new me("FETCH_LIMIT_EXCEEDED",$n(e),e):e instanceof Error&&e.name==="ClientOperationError"&&"cause"in e?new me("CLIENT_ERROR",e.message,e.cause):qh(e)?new me("CLIENT_ERROR",$n(e),e):new me("EXECUTION_ERROR",$n(e),e)}var zh=2,Io=5,Xh=3e4,Jh=10*6e4+3e4,wo=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??zh;if(!Number.isSafeInteger(n)||n<1||n>Io)throw new Error(`ArgumentError: cursorMaxActive must be an integer from 1 to ${Io}.`);this.maxActive=n,this.waitTimeoutMs=r.waitTimeoutMs??Xh,this.quarantineMs=r.quarantineMs??Jh}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 Fi(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>Io)throw new Error(`ArgumentError: cursorMaxActive must be an integer from 1 to ${Io}.`)}};function Qh(e){let t=e;return t?.status===404&&t.code==="GAIA_CN01"}async function Zh(e,t=n=>new Promise(i=>setTimeout(i,n)),r=Qh){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 eg(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 ud(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 eg(Zh(t.delete,t.sleep,t.isAlreadyReleasedError),t.cleanupTimeoutMs??5e3),r=!0,t.onReleased?.()}catch(l){throw t.onReleaseUnknown?.(),l}}),o)}}function cd(e){return pd(e,rg(e))}function pd(e,t,r=!1,n){let i=[];for(let o of Object.values(e)){let a=ng(o.options),s=ig(o.type,o.format),l={code:o.code,label:o.label,fieldType:o.type,optionOrder:a,sortKind:s,required:o.required,minValue:bo(o.minValue),maxValue:bo(o.maxValue),minLength:bo(o.minLength),maxLength:bo(o.maxLength),defaultValue:o.defaultValue,inSubtable:r,...n?{subtableCode:n}:{},writable:!t.has(o.code)&&!tg.has(o.type)};l.semantics=q(l),i.push(l),o.fields&&i.push(...pd(o.fields,t,!0,o.type==="SUBTABLE"?o.code:n))}return i}var tg=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE","SUBTABLE"]);function rg(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 bo(e){return e==null||e===""?void 0:e}function ng(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 ig(e,t){if(e==="NUMBER"||e==="RECORD_NUMBER")return"number";if(e==="CALC")return t==="NUMBER"||t==="NUMBER_DIGIT"?"number":"string"}function dd(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 og="Filter aborted because of too many search results";function fd(e){return e?.includes(og)===!0}var Ed="/k/v1/records.json",Po="/k/v1/records/cursor.json",ag=4096,sg=2,Us=e=>kintone.api.url(e,!0);function lg(e){let t={app:e.app,query:e.query,...e.fields.length>0?{fields:e.fields}:{}},n=kintone.api.urlForGet(Ed,t,!0),i={"X-Requested-With":"XMLHttpRequest"};return new TextEncoder().encode(n).byteLength<=ag?{url:n,init:{method:"GET",credentials:"include",headers:i}}:{url:Us(Ed),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 Vn(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 ug(e){try{let t=await e.json();if(t!==null&&typeof t=="object"){let n=t;return Vn({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}),Vn(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}),Vn(r)}}function cg(e){let t=e;return t?.code==="GAIA_CN01"&&(t.status===404||t.status===void 0)}async function jt(e,t,r){try{return await kintone.api(Us(e),t,r)}catch(n){throw Vn(n)}}function pg(e){if(!Number.isSafeInteger(e)||e<1||e>5)throw new Error("ArgumentError: cursorMaxActive must be an integer from 1 to 5.")}function ks(e={}){let t=e.cursorMaxActive??sg;pg(t);let r=null,n=null,i=new Set;return{async getRecords(a){try{let s=lg(a),l=await fetch(s.url,s.init);if(!l.ok)throw await ug(l);let p=await l.json();return fd(l.headers.get("X-Cybozu-Warning"))?{records:p.records,searchAborted:!0}:{records:p.records}}catch(s){throw Vn(s)}},async openCursor(a){let s=Us(Po),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??(r=new wo(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(),u;try{u=await r.runCreate(()=>jt(Po,"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"?(p.release(),R):(p.quarantine(),new Ki(R))}let d=u.id,c=ud(Number(u.totalCount),{get:()=>jt(Po,"GET",{id:d}),delete:()=>jt(Po,"DELETE",{id:d}),isAlreadyReleasedError:cg,onReleased:()=>p.release(),onReleaseUnknown:()=>p.quarantine()}),f=null,E={totalCount:c.totalCount,async nextPage(){let R=await c.nextPage();return R.next||i.delete(E),R},close(){return f||(f=c.close().finally(()=>{i.delete(E)}),f)}};return i.add(E),E},async getApps(){let s=[],l=0;for(;;){let p=await jt("/k/v1/apps.json","GET",{limit:100,offset:l});for(let u of p.apps)s.push({appId:Number(u.appId),name:u.name,description:u.description});if(p.apps.length<100)break;l+=100}return s},async getFields(a){let s=await jt("/k/v1/app/form/fields.json","GET",{app:a});return cd(s.properties)},async getNumberPrecision(a){let s=await jt("/k/v1/app/settings.json","GET",{app:a});return Nu(s)},async getProcessStatuses(a){let s=await jt("/k/v1/app/status.json","GET",{app:a,lang:"user"});return{enable:s.enable,states:dd(s.states)}}}}var Rd=new Set(["postRecords","putRecords","deleteRecords"]),Wn=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 wt(e){try{return await e()}catch(t){throw new Wn(t)}}function dg(e){return()=>{throw Yt(`${String(e)} is blocked by the readonly client`)}}function Ms(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 p=await wt(()=>t(l));if(p.searchAborted===!0)throw ld();return p},openCursor:async l=>{let p=await wt(()=>r(l)),u=p.nextPage.bind(p),d=p.close.bind(p);return{totalCount:p.totalCount,nextPage:()=>wt(()=>u()),close:()=>wt(()=>d())}},getApps:()=>wt(()=>n()),getFields:l=>wt(()=>i(l)),getNumberPrecision:l=>wt(()=>o(l)),getProcessStatuses:l=>wt(()=>a(l))});return new Proxy(s,{get(l,p,u){return Rd.has(p)?dg(p):Reflect.get(l,p,u)},has(l,p){return Rd.has(p)?!1:Reflect.has(l,p)}})}function fg(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 Wn(o.reason)})(),r)}}}async function xs(e,t){let r=fg(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 md=new Set(["client","maxRecords","fetchParallel","cursorMaxActive"]),Eg=new Set([...md,"onLimitReached"]);function Rg(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new TypeError("options must be an object")}function Fs(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new RangeError(`${t} must be a positive safe integer`)}function mg(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 Ks(e,t){Rg(e);let r=t==="run"?Eg:md;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(mg(e.client),e.maxRecords!==void 0&&Fs(e.maxRecords,"maxRecords"),e.fetchParallel!==void 0&&Fs(e.fetchParallel,"fetchParallel"),e.cursorMaxActive!==void 0&&(Fs(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 yd(e,t={}){let r=new Jt(e).tokenize(),n=new er(r,t).parse();return dr(n),n}function hd(e){if(e.trim()==="")throw vs("SQL statement is empty");try{return yd(e,{import:!0})}catch(t){let r=Gn(t);throw r.code==="PARSE_ERROR"?r:vs("SQL statement could not be parsed",t)}}function yg(e){if(e===null||typeof e!="object"||typeof e.type!="string")throw Yt("Unclassifiable statement branch is not allowed");return e.type}function qt(e,t){let r=yg(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 Yt("WITH contains an unclassifiable CTE list");for(let i of n.ctes){if(i===null||typeof i!="object"||!("query"in i))throw Yt("WITH contains an unclassifiable CTE body");qt(i.query,t)}qt(n.query,t);return}case"UNION":{let n=e;qt(n.left,t),qt(n.right,t);return}default:break}throw Yt(`${r} statements are not allowed in ${t} queries`)}function hg(e){qt(e,"run")}function gd(e){hg(hd(e))}function Ad(e){let t=e.trim(),r=hd(t);return r.type==="EXPLAIN"?(qt(r.query,"explain"),t):(qt(r,"explain"),`EXPLAIN ${t}`)}function Sd(e){return{recordGetCalls:e?.getCalls??0,fetchedRows:e?.fetchedRows??0,elapsedMs:e?.elapsedMs??0,cursorRecordsScanned:e?.cursorRecordsScanned??0}}function Td(e){if(e===null||typeof e!="object"||e.type!=="SELECT")throw new Error("Engine returned a non-SELECT result")}function gg(e){return Object.fromEntries(Object.entries(e).map(([t,r])=>[t,String(r)]))}function Ag(e,t){let r=t?.get(e),n=r?.fieldType??r?.semantics?.fieldType,i=r?.semantics?.compareMode,o=r?.sortKind??(i==="number"||i==="string"?i:void 0),a=r?.publicSourceApp;return{name:e,valueType:"string",...n!==void 0?{fieldType:n}:{},...o!==void 0?{sortKind:o}:{},...a!==void 0?{sourceApp:a}:{}}}async function Bs(e,t){try{let r=Ks(t,"run");gd(e);let n=await xs(r.client,o=>ps(e,Ms(o),{...r.executeOptions,captureColumnMeta:!0}));Td(n);let i=Sp(n);return{type:"query",rows:n.rows.map(gg),columns:n.columns.map(o=>Ag(o,i)),rowCount:n.rowCount,warnings:[...n.warnings??[]],metrics:Sd(n.metrics)}}catch(r){throw Gn(r)}}async function $s(e,t){try{let r=Ks(t,"explain"),n=await xs(r.client,o=>ps(Ad(e),Ms(o),r.executeOptions));Td(n);let i=n.rows.map(o=>String(o.plan??""));return{type:"explain",lines:i,text:i.join(`
|
|
13
|
+
`),metrics:Sd(n.metrics)}}catch(r){throw Gn(r)}}var Gs="3.26.0";var Id=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);function Sg(){let e=Object.create(null);return Object.freeze({versions:e,get(t){return Id(e,t)?e[t]:void 0}})}function Tg(e){if(e===null||typeof e!="object")return!1;let t=e;return t.versions!==null&&typeof t.versions=="object"&&!Array.isArray(t.versions)&&typeof t.get=="function"}function wd(e,t,r,n=console){let i;if(e.ksql===void 0){i=Sg();try{e.ksql=i}catch(a){n.error(`[kSQL engine ${t}] window.ksql registry could not be initialized; loading was aborted.`,a);return}}else if(Tg(e.ksql))i=e.ksql;else{n.error(`[kSQL engine ${t}] window.ksql already exists but is not a compatible { versions, get } registry; loading was aborted.`);return}if(Id(i.versions,t))return n.warn(`[kSQL engine ${t}] this version is already registered; the first entry was kept.`),i;let o=Object.freeze(r);try{i.versions[t]=o}catch(a){n.error(`[kSQL engine ${t}] the compatible window.ksql registry rejected registration; loading was aborted.`,a);return}return i}var Ig={version:Gs,createReadonlyKintoneClient:ks,explainQuery:$s,KsqlEngineError:me,runQuery:Bs};wd(window,Gs,Ig);})();
|