@rex0220/kintone-sql-tools 3.24.0 → 3.25.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 +360 -90
- 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 +7 -7
- package/dist-engine/meta/cjs.json +27 -22
- package/dist-engine/meta/esm.json +27 -22
- package/dist-engine/meta/umd.json +27 -22
- package/dist-mcp/ksql-mcp.js +363 -93
- package/dist-mcpb/ksql-mcp.mcpb +0 -0
- package/package.json +1 -1
package/dist-engine/index.mjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
async function me(e,t,r,n,i={}){let o=i.pageSize
|
|
1
|
+
async function me(e,t,r,n,i={}){let o=i.pageSize??ed,a=Math.max(1,i.parallel??td),s=i.maxRecords??rd,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=_s(r,R),h=await Ls(e,t,y,d,o,m);if(Os(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>=So&&(R=Ds(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)),b=[];for(let C=0;C<O;C++){let v=m+C*o;if(v>=So)break;b.push(v)}let L=_s(r,R),w=await Promise.all(b.map(C=>Ls(e,t,L,d,o,C)));for(let C of w)Os(C,i);let _=!1;for(let C of w){if(c.push(...C.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(C.records.length<o){_=!0;break}}if(_)break;if(m+=o*b.length,m>=So){let C=w[w.length-1];R=Ds(C.records),m=0}}return c}function Os(e,t){e.searchAborted&&t.onSearchAborted?.()}function vs(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 ed=500,td=1,rd=1e4,So=1e4;async function Ls(e,t,r,n,i,o){let a=nd(r,i,o);return e({app:t,query:a,fields:n})}function _s(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 nd(e,t,r){let n=e.trimEnd(),i=`limit ${t} offset ${r}`;return n?`${n} ${i}`:i}function Ds(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 Gn=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"}},Xt=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(zt(r))return this.readNumber(t);let n=this.tryReadOperator(t);if(n)return n;if(To(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&&zt(this.input[this.pos]);)this.pos++;if(this.pos<this.input.length&&this.input[this.pos]==="."&&this.pos+1<this.input.length&&zt(this.input[this.pos+1]))for(this.pos++;this.pos<this.input.length&&zt(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||!zt(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&&zt(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&&Us(this.input[this.pos]);)this.pos++;let r=this.input.slice(t,this.pos),n=r.toUpperCase(),i=Gn.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(!To(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&&Us(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||Hp(t)}function Os(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 Hp(e){return e>=12352&&e<=12543||e>=13312&&e<=40959||e>=63744&&e<=64255||e>=65281&&e<=65376}var Yp=/^([+-]?)(?:(\d+)(?:\.(\d*))?|\.(\d+))(?:[eE]([+-]?)(\d+))?$/;function jp(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=Yp.exec(e.trim());if(t===null)return null;let r=jp(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 qp(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 _s(e){let t=we(e);return t===null?null:qp(t)}function zp(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=zp(e,t);return e.sign===-1?r===0?0:r===-1?1:-1:r}function Kn(e,t){let r=we(e),n=we(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 _s(t)??t}function Ds(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 Xp(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=Xp(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 vs(e){return Q(e).type!=="NONE"}function Us(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 go(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 go(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 ho(e.expr)}function xs(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(xs).join(",")})`;case"ARITH_VALUE":return qt(e.expr);case"CASE_VALUE":return ho(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("_"," ")} ${xs(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 Ms(e){return e.type==="ARRAY"?`[${e.elements.map(t=>Bn(t.value)).join(",")}]`:e.type==="FIELD_REF"||e.type==="ARITH"?qt(e):It(e)}function ho(e){let t=e.branches.map(n=>`WHEN ${br(n.condition)} THEN ${Ms(n.result)}`).join(" "),r=e.elseResult===null?"":` ELSE ${Ms(e.elseResult)}`;return`CASE ${t}${r} END`}function Jp(e){return e.type==="AGG_REF"?ye(e.func,e.distinct,e.arg):e.type==="AGG_ARITH"?Pr(e):It(e)}function go(e){return`${e.func}(${e.args.map(Jp).join(",")})`}function It(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 go(e);case"CASE_WHEN":return ho(e);case"SCALAR_ARITH":return`(${It(e.left)}${e.op}${It(e.right)})`;case"CONCAT_OP":return`(${It(e.left)}||${It(e.right)})`}}function Qp(e){return e.type==="WILDCARD"?"*":e.type==="FIELD_REF"||e.type==="ARITH"?qt(e,!0):It(e)}function ye(e,t,r){let n=Qp(r);return t?`${e}(DISTINCT ${n})`:`${e}(${n})`}function Pr(e){return e.type==="NUMBER"?W(e):e.type==="AGG_REF"?ye(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 Fs=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"}),Bs=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"}),jh=Object.freeze(Object.values(So).filter(e=>e!==void 0)),Zp=Object.freeze(["COUNT","SUM","AVG","MAX","MIN"]),ed=new Set(Zp);function td(e){return ed.has(e)}var $s=Object.freeze({ROW_NUMBER:"ROW_NUMBER",RANK:"RANK",DENSE_RANK:"DENSE_RANK"}),$n=Object.freeze({TODAY:"TODAY",NOW:"NOW",LOGINUSER:"LOGINUSER"});function Ks(e){return $n[e]!==void 0}var rd=Object.freeze([...Nr]),nd=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),id=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function od(e){return nd.has(e)}function ad(e){return id.has(e)}function sd(e){return Number.isInteger(e)&&e>=1&&e<=31}var qh=Object.freeze(Array.from(new Set([...Object.keys(Ao),...Bs,...Object.keys(So),...Object.keys($s),...Object.keys($n),...rd,"IF"]))),ld=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 ud(e,t){return e.kind==="("||e.kind==="."||t.kind===")"||t.kind===","||t.kind==="."?!1:t.kind==="("?!ld.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>Fs)throw new T(`batch exceeds ${Fs} 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 w;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()}w=this.parseIdentifier()}o.push({kind:"SUBTABLE",subtableCode:b,children:L,...w?{rowIdSourceHeader:w}:{}})}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 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(b=>b.kind==="SUBTABLE");if(g.length){if(f)throw new T("IMPORT subtables cannot use SELECT projection.",this.prev());if(l==="JSON"){if(g.some(b=>b.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 b=new Set(h);for(let L of g){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(!g.some(w=>w.subtableCode===L))throw new T(`REPLACE SUBTABLES target ${L} 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}=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&&ud(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 $s[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(Bs.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=cd(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(!td(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:ye(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(!od(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(!ad(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(!sd(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(Ks(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=Ds(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(Ks(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 cd(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 Gs(e){return e==="INSERT"||e==="INSERT_SELECT"||e==="UPDATE"||e==="DELETE"||e==="UPSERT"||e==="UPSERT_SELECT"||e==="REORDER"||e==="IMPORT"}var pd=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"&&pd.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 wt(e){let t=new Set;if(Gs(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,Vs(e));break;case"WITH":for(let r of e.ctes)de(t,wt(r.query));de(t,wt(e.query));break;case"CREATE_TEMP_TABLE":de(t,wt(e.query));break;default:break}return Gn(e)&&t.add("STATISTICAL_AGGREGATE"),t}function Vs(e){let t=e.left.type==="SELECT"?Jt(e.left):Vs(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 dd=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})}),wo=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 fd(e,t){let r=Cr;Cr=e;try{return t()}finally{Cr=r}}function Ed(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 fd(e,()=>Rd(t,dd[e]))}function Rd(e,t){let r=Ed(e);if(r===null)return;if(r.type==="UPSERT"){yd(r,t);return}let n=r.applyBlocks;if(To(n),!t.multipleBlocks&&n.length!==1&&$("multiple APPLY blocks in this phase"),r.type==="INSERT"){hd(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"),gd(i.where,t.multipleParents),Hs(n,t)}function Hs(e,t){for(let r of e){for(let n of r.operations)t.operations.has(n.kind)||$(`${n.kind} in this phase`);Ys(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"&&Ws(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"&&Ws(n.selector.where,t.idxSelectors)}}}}function Ys(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 md=new Set(["MULTI_SELECT","CHECK_BOX","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function js(e,t){if(Ys(e),e.targetKind==="MULTI_VALUE"){if(!md.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 yd(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"),Hs(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 hd(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=wo[e],n="validateOnly"in t&&t.validateOnly===!0;if(t.type!=="EXPLAIN"&&!n&&Xs(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 Xs(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 Js(e,t){if(!(t.type!=="UPDATE"||!t.applyBlocks?.length||Xe(t.where))&&!wo[e].publicMultipleParentWrite)throw new Error(`UnsupportedError: APPLY ${Qt(e)} public multiple-parent write is not connected`)}function er(e){if(!wo[e].internalPreparedWrite)throw new Error(`UnsupportedError: APPLY ${Qt(e)} internal prepared write is not available`)}function Qt(e){return`Phase ${e.slice(5)}`}function gd(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"),Io(e,t))}function Io(e,t){if(Array.isArray(e)){for(let o of e)Io(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))Io(o,t)}function Ws(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=Ad(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 Ad(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 Qs(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 Sd(e);case"NULL_CHECK":return Id(e);case"LOGICAL":return wd(e);case"NOT":return bd(e);case"GROUP":return Pd(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 Sd(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=el(e.left),r=Td(e.op),n=Nd(e.right,e.op);return`${t} ${r} ${n}`}function Td(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 Id(e){let t=el(e.field);return e.not?`${t} != ""`:`${t} = ""`}function wd(e){let t=G(e.left),r=G(e.right),n=e.op==="AND"?"and":"or",i=Zs(e.left)?`(${t})`:t,o=Zs(e.right)?`(${r})`:r;return`${i} ${n} ${o}`}function bd(e){return G(Or(e.expr))}function Pd(e){return`(${G(e.expr)})`}function el(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 Md(e.field)}function Nd(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 tl(e);case"NUMBER":return W(e);case"KINTONE_FUNC":return Cd(e);case"IN_LIST":return Ud(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 tl(e){return`"${e.value.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Cd(e){switch(e.name){case"TODAY":case"NOW":case"LOGINUSER":return`${e.name}()`}return Od(e)}function Od(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"||!Dd(e.args.offset,e.args.offsetText)||!Ld.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&&!_d.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"||!vd(e.args.day)?_r():e.args.day===null?`${e.name}()`:`${e.name}(${e.args.day})`}return _r()}var Ld=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),_d=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function Dd(e,t){return!Number.isSafeInteger(e)||!/^(?:0|[1-9]\d*|-[1-9]\d*)$/.test(t)?!1:Number(t)===e}function vd(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 Ud(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 kd(e.values),`(${e.values.map(n=>n.type==="STRING"?tl(n):W(n)).join(",")})`}function kd(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 Md(e){return/^[\w$\u3000-\u9FFF]+$/u.test(e)?e:`"${e.replace(/"/g,'\\"')}"`}function Zs(e){return e.type==="LOGICAL"}var Z=class extends Error{constructor(t){super(t),this.name="KintoneQueryError"}};function xd(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||xd(e.columns)||e.columns.some(t=>t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"||t.type==="SCALAR_SUBQUERY_COL"||t.type==="STRFUNC_COL"&&al(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 rl(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 rl(e.field);case"LOGICAL":return ct(e.left)||ct(e.right);case"NOT":case"GROUP":return ct(e.expr);case"EXISTS":return!0}}function rl(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(Fd).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:Kd(e.columns),totalCount:!1}}function ol(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=Vd(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 Fd(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 Kd(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 Bd(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"?Bd(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)$d(r,t)}function $d(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)nl(r.result,t);e.elseResult&&nl(e.elseResult,t)}}function nl(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"&&Gd(e.arg,t);return}e.type==="AGG_ARITH"&&(bo(e.left,t),bo(e.right,t))}function Gd(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?Dr(e,t):rr(e,t)}function al(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"?al(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?vr(e.left)||vr(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>il(t.result))||e.elseResult!==null&&il(e.elseResult):!1}function il(e){return e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?!1:vr(e)}function Vd(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=Wd(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 I=P.slice(3);I&&I!=="*"&&N.fields.add(I);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")&&Hd(A))return;let I=A.indexOf(".");if(I>0){let U=A.slice(0,I),B=A.slice(I+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 I=s.get(P);if(I){c(I,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"){h(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}g(A,P)},h=(A,P="select")=>{for(let N of A.args)y(N,P)},g=(A,P="select")=>{if(A.type==="FIELD"){E(A.field,A.tableAlias,P);return}if(A.type==="STRING_FUNC"){h(A,P);return}if(A.type==="SCALAR_ARITH"||A.type==="CONCAT_OP"){g(A.left,P),g(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}g(A,P)},O=(A,P="select")=>{if(A.type!=="ARRAY"){if(A.type==="FIELD_REF"||A.type==="ARITH"){R(A,P);return}g(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"){h(A.expr,P);return}if(A.type==="ARITH_FIELD"){R(A.expr,P);return}A.type!=="GROUPING_FIELD"&&b(A.expr,P)},w=(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),w(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}h(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"&&h(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":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 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 Wd(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(ye(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 Hd(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||vs(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:sl(e.left,t)};case"NULL_CHECK":return{...e,field:sl(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 sl(e,t){return e.type==="FIELD"&&e.tableAlias===t?{...e,tableAlias:null}:e}function nr(e,t={}){return Ur(e,r=>Yd(r,t))}function kr(e,t={}){return Ur(e,r=>ll(r,t)||ul(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 Yd(e,t){return jd(e,t)||Xd(e,t)?!0:ll(e,t)?t.fieldTypes?.get(e.left.field)==="NUMBER":zd(e,t)}function jd(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 qd=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]);function zd(e,t){if(!ul(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||!qd.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 Xd(e,t){return!Jd(e.left,t)||e.right.type!=="NUMBER"?!1:e.op==="="||e.op===">"||e.op==="<"||e.op===">="||e.op==="<="}function Jd(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 ll(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 ul(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){cl(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 cl(e){switch(e.type){case"SELECT":sr(e);return;case"UNION":vo(e);return;case"WITH":pl(e);return;case"EXPLAIN":cl(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)&&!Zd(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):pl(e)}function vo(e){Do(e.left),sr(e.right)}function pl(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(Qd(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 Qd(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 Zd(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&&ef(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 ef(e){return e!==null&&typeof e=="object"&&e.type==="SELECT"}var dl=Symbol("ksql.groupingRowMeta"),fl=new WeakMap;function El(e,t){return Object.defineProperty(e,dl,{value:{includedCanonicalIds:t},enumerable:!1,configurable:!1,writable:!1}),e}function tf(e){return e[dl]}function rf(e){return tf(e)?.includedCanonicalIds}function Rl(e,t){fl.set(e,t)}function ur(e,t){let r=rf(t);if(!r)throw new Error("internal error: GROUPING() evaluation requires B65 grouping row membership.");let n=fl.get(e);if(!n)throw new Error("internal error: GROUPING() reference was not resolved during B65 planning.");return r.has(n)?"0":"1"}var yl=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 nf(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 of(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 af(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).`);Rl(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 sf(e){if(e.type==="GROUPING_KEY")return[];if(e.type==="FIELD_NAME")return[ko(e.name)];let t=[];return xr(e,t),t}function hl(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 gl(e,t,r=()=>{}){hl(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=Us(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)af(u,t,a);let l=of(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)||ml(d)||Uo(d,t,a,"HAVING")}for(let u of e.orderBy)for(let d of sf(u.key))d.tableAlias===null&&l.has(d.field)||ml(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(!nf(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 lf=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME","CREATOR","MODIFIER"]),uf=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":uf.has(e.fieldType)?t="option":lf.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 cf(e,t){return e<t?-1:e>t?1:0}function Al(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 pf(e,t){let r=Al(e),n=Al(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 Sl(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 df(e,t,r){let n=Sl(e,r),i=Sl(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 ff(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 Tl(e,t){let r=t.optionOrder??new Map,i=[...new Set(ff(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(Il),i}function Il(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 Ef(e,t,r){let n=Tl(e,r),i=Tl(t,r),o=Math.min(n.length,i.length);for(let a=0;a<o;a++){let s=Il(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 pf(e,t);case"recordNumber":return df(e,t,r.fieldType==="RECORD_NUMBER");case"option":return Ef(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 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?Fn(s,l):cf(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 Cl(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 Rf(e){return e>=55296&&e<=56319}function mf(e){return e>=56320&&e<=57343}function ni(e,t){return t>0&&t<e.length&&Rf(e.charCodeAt(t-1))&&mf(e.charCodeAt(t))}function bl(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 yf(e,t){let r=Math.max(0,e.length-t);return ni(e,r)&&(r+=1),e.slice(r)}function hf(e,t,r){let n=bl(t,e.length),i=bl(r,e.length);return i<=n?"":(ni(e,n)&&(n+=1),ni(e,i)&&(i-=1),e.slice(n,Math.max(n,i)))}function gf(e,t){let r=e.repeat(Math.ceil(t/e.length));return xo(r,t)}var Af=200,Kr=new Map;function Sf(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=Sf(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>=Af){let s=Kr.keys().next().value;s!==void 0&&Kr.delete(s)}return Kr.set(i,a),a}function Tf(e){if(e.includes("$`")||e.includes("$'"))throw new Error("ArgumentError: REGEXP_REPLACE replacement must not contain $` or $'.")}function If(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 wf(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 bf(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 wf(r,o,u,l?s:void 0)})}function ne(e,t,r,n){let i=e.args.map(o=>vf(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 hf(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?"":yf(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=gf(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),Mo(i[1],i[2]??"").test(i[0])?"1":"0";case"REGEXP_REPLACE":{fe("REGEXP_REPLACE",i,3,5),Tf(i[2]);let o=If(i[4]),a=Mo(i[1],i[3]??"",!0);return o===0?i[0].replace(a,i[2]):bf(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 _f(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(Nl(i[0])):"";case"DATE_FORMAT":return Nf(i[0]??"",i[1]??"");case"DATEDIFF":return Cf(i[0]??"",i[1]??"");case"DATE_ADD":return Of(i[0]??"",Number(i[1]??"0"),(i[2]??"DAY").toUpperCase());case"LAST_DAY":return fe("LAST_DAY",i,1,1),Lf(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 Pl(e){let t=ii(e),r=t.getUTCDay()||7;return t.setUTCDate(t.getUTCDate()+4-r),t}function Pf(e){return Pl(e).getUTCFullYear()}function Nl(e){let t=Pl(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 Nf(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(Nl(e)).padStart(2,"0"):"";case"%G":return l?String(Pf(e)).padStart(4,"0"):"";default:return p}})}function Cf(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 Of(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 Lf(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 _f(e,t){if(/^-?\d+$/.test(t.trim()))return Df(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 Df(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 vf(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 Uf(e,t,r,n,i);case"NULL_CHECK":return Bf(e,t);case"LOGICAL":return $f(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 Uf(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=Ml(e.left,t,r,i),a=e.left.type==="FIELD"?r?.(e.left):void 0,s=Mf(e.left,a,i);return kf(e.op,o,e.right,t,a,r,s,i)}function kf(e,t,r,n,i,o,a=x("string"),s){if(e==="IN"||e==="NOT_IN"){let p=null;if(r.type==="IN_LIST"&&(Kf(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=Ff(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 Ol=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function Mf(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(Ol.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(Ol.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 Ll=new Set(["CHECK_BOX","MULTI_SELECT"]),_l=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE"]),xf=new Set(["CREATOR","MODIFIER"]);function Ff(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(Ll.has(r)||_l.has(r)||xf.has(r))try{i=JSON.parse(e)}catch{return n()}else return n();return Ll.has(r)?!Array.isArray(i)||!i.every(o=>typeof o=="string")?n():i.length===0&&t.has("")?!0:i.some(o=>t.has(o)):_l.has(r)?!Array.isArray(i)||!i.every(Dl)?n():i.length===0&&t.has("")?!0:i.some(o=>t.has(o.code)):Dl(i)?t.has(i.code):n()}function Dl(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&typeof e.code=="string"}function Kf(e){let t=e.find(r=>r.type==="VARIABLE");if(t?.type==="VARIABLE")throw new Error(`ParseError: unresolved batch variable @${t.name}.`)}function Bf(e,t){let r=Ml(e.field,t);return e.not?r!=="":r===""}function $f(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 Ml(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 Gf(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 Ul(i.result,t,r,n);return e.elseResult!==null?Ul(e.elseResult,t,r,n):""}function Cl(e,t,r,n){for(let i of e.branches)if(q(i.condition,t,r,void 0,n))return vl(i.result,t,r,n);return e.elseResult===null?null:vl(e.elseResult,t,r,n)}function vl(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 Ul(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 xl(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 Gf(e){if(ae(e))throw new Error(`${e}: ${qe}`);switch(e){case"TODAY":case"NOW":case"LOGINUSER":return xl(e);default:throw new Error(`InternalError: unexpected KINTONE_FUNC name: ${e}`)}}var oi=new Map,Vf=200;function kl(e,t){if(!Qs(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>=Vf&&oi.clear(),oi.set(t,r)}return r.test(e)}function pr(e){return Kl(e)}function Fl(e){return Kl(e.flatMap(t=>t.rules.map(r=>r.condition)))}function Kl(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 Wf=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),Hf=new Set(["CHECK_BOX","MULTI_SELECT"]);function li(e,t=new Map){let r=e.values.map(n=>Yf(e.fields,n,t));return Wr(r,100).map(n=>({app:e.appId,records:n}))}function Yf(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=Ql(e);return{app:e.appId,query:G(e.where),fields:["$id",...t],totalCount:!1}}function Vr(e,t,r=new Map){let n=jf(e.assignments,r);return Wr(t,100).map(i=>({app:e.appId,records:i.map(o=>({id:o,record:n}))}))}function jf(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 Vl(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"?Wl(r,t):r.type==="SCALAR_ARITH"||r.type==="CONCAT_OP"?dr(r,t):r.type==="STRING_FUNC"?Vo(r,t):r.type==="CASE_VALUE"&&Hl(r.expr,t);return Ql(e).forEach(r=>t.add(r)),{app:e.appId,query:G(e.where),fields:["$id",...t],totalCount:!1}}function Wl(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"?Wl(e,t):e.type==="STRING_FUNC"&&Vo(e,t)}function Vo(e,t){for(let r of e.args)qf(r,t)}function qf(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"&&Hl(e,t)}function Bo(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&zf(e.arg,t);return}e.type==="AGG_ARITH"&&(Bo(e.left,t),Bo(e.right,t))}function zf(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?$r(e,t):dr(e,t)}function Bl(e,t){if(e.type!=="ARRAY"){if(e.type==="FIELD_REF"||e.type==="ARITH"){$r(e,t);return}dr(e,t)}}function Hl(e,t){for(let r of e.branches)si(r.condition,t),Bl(r.result,t);e.elseResult!==null&&Bl(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=Yl(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 Xf=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=Yl(i),l={};for(let{field:p,value:u}of e.assignments){let d=r.get(p);if(u.type==="SOURCE_FIELD"){if(Xf.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 Yl(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=$l(e.left,t),n=$l(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 $l(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 Wf.has(e??"")}function Jf(e){return Hf.has(e??"")}function Qf(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 Zf(e){return!e||/^\d{4}-\d{2}-\d{2}$/.test(e)?e:e.replace(/\//g,"-")}function Xl(e,t){return zl(t)?e===""?[]:e.split(",").map(r=>({code:r.trim()})):Jf(t)?e===""?[]:e.split(",").map(r=>r.trim()):t==="DATETIME"?Qf(e):t==="DATE"?Zf(e):e}function Jl(e,t){return zl(t)?e.map(r=>({code:r})):e}function Gl(e,t,r){return e.type==="ARRAY"?Jl(e.elements.map(n=>n.value),r):e.type==="STRING"?Xl(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 Ql(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 Gl(n.result,t,r);return e.elseResult!==null?Gl(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:eE(e,t)}}catch(r){return{ok:!1,message:r instanceof Error?r.message:String(r)}}}function eE(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 Xl(e.value,t);case"NUMBER":return W(e);case"ARRAY":return Jl(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"]),tE=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function Hr(e){throw new Error(`ArgumentError: ${e}`)}function Zl(e,t,r){let n=rE(r.fieldType,e.field),i=nE(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)&&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 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=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 rE(e,t){return zo.has(e)||tE.has(e)?e:Hr(`APPLY multi-value target ${t} has unsupported type ${e}.`)}function nE(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),iE(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 iE(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]=ou(i?.value);return r}function tu(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}.`),nu(t,r,i,o)}function ru(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),nu(e,o,n,a)})}function nu(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(Zl(u,t[u.field]?.value,C));continue}let d=r.childrenByTable.get(u.field),c=cE(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=[],h=new Set,g=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=sE(v,c,E,u.field);v.expectRows&&eu(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;g.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=aE(v,c,E,u.field);v.expectRows&&eu(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.`),g.add(A);let N=di(P,A);for(let I of v.assignments){let U=`${P.id}\0${I.field}`;h.has(U)&&V(`APPLY patches cell ${P.id}.${I.field} more than once.`),h.add(U),R.push({rowIndex:A,field:I.field,value:ci(I.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 w=[...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:w};O?o.push({..._,payloadShape:"FULL_SURVIVORS",removedRowIds:c.flatMap((C,v)=>S.has(v)?[C.id]:[]),payloadRows:w.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=pE(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 eu(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:oE(e,n,t,r)}))}function oE(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 aE(e,t,r,n){return iu(e.selector,t,r,n)}function sE(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)=>q(i,di(l,p),r)?[p]:[]),a=lE(i);a!==null&&o.length===0&&V(`APPLY _rid ${a} does not exist in snapshot table ${n}.`);let s=uE(i);return s!==null&&o.length===0&&V(`APPLY _idx ${s} does not exist in snapshot table ${n}.`),o}function lE(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 uE(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 cE(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 pE(e){let t={};for(let[r,n]of Object.entries(e))t[r]=ou(n?.value);return t}function ou(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),dE(i),t[i.table]={value:i.payloadRows};return{app:e.app,records:[{id:e.parentId,revision:e.revision,record:t}]}}function au(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 dE(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 su(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 lu(e){let t=e.numberPrecision;if(t==null||typeof t!="object")throw new Error("SettingsError: numberPrecision is missing from app settings.");let r=su(t.digits,"digits",1,30),n=su(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 uu(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 fE=new Set(["CHECK_BOX","MULTI_SELECT"]),EE=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT"]);function Ae(e,t,r){if(t.fieldType==="DATE"||t.fieldType==="TIME"||t.fieldType==="DATETIME"){let i=RE(e);if(i!==""&&!mE(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:yE(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=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&&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}=uu(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)&&EE.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 RE(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 mE(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(fE.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 yE(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]:[],h=[],g=[],S=m.mode==="create"||u.validateUpdateBuiltIns!==!1;for(let w of n){if(!m.payload.has(w))continue;let _=m.payload.get(w),C=d.get(w).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=Ae(_,d.get(w),a);k.ok?m.record[w]={value:v?_:k.value}:h.push({field:w,code:k.code,message:k.message})}if(l&&m.mode==="create")for(let w of i){if(w.inSubtable||m.payload.has(w.code))continue;if(Ot(w.defaultValue)){let C=Ae("",w,a);C.ok?w.required&&h.push({field:w.code,code:"ERR_REQUIRED",message:`${w.code} \u306F\u5FC5\u9808\u3067\u3059`}):h.push({field:w.code,code:C.code,message:C.message})}else{let C=Ae(w.defaultValue,w,a);C.ok||h.push({field:w.code,code:C.code,message:`\u65E2\u5B9A\u5024: ${C.message}`})}}if(s.length>0){let w=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,w,C))g.push({field:"",code:"ERR_CHECK",message:v.message})}catch(v){R??(R=v)}}let O=w=>w.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(h),checkErrors:O(g)};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 hE(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 gE(e){return e.fieldType==="NUMBER"||hE(e)}function hi(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=gE;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 AE=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"&&!AE.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=SE(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=Ae(f,c,r);E.ok?a[c.code]={value:cu(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=Ae(S,g,r);O.ok?(h.value??(h.value={}),h.value[g.code]={value:cu(S,g.fieldType,O.value)}):d(g,S,O,hi(c,m,y))}}}return{normalizedRecord:a,errors:s,columns:p,invalidRows:l.size,invalidRowNumbers:l,errorCount:s.length}}function cu(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 SE(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 gi(e){let{statement:t,snapshots:r,fieldInfos:n,metadata:i,dmlMaxRows:o,dmlMaxSubtableRows:a,statementNumber:s=1}=e;pu(o,"dmlMaxRows"),pu(a,"dmlMaxSubtableRows");for(let g of r)Ri(g);let l=ru(t,r,n,i),p=Fe(n,t.assignments.map(g=>g.field)),u=l.some(g=>Lt(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)=>_t(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)=>fi(g,c[S].normalizedRecord)),y=m.flatMap(g=>jr(g).records),h=c.map(g=>({errors:g.errors,columns:g.columns,invalidRows:g.invalidRows,errorCount:g.errorCount}));return du({plans:m,records:y,validations:h,guards:{revisionRequired:!0,parentRows:f,dmlMaxRows:o,subtableRows:E,dmlMaxSubtableRows:a,wouldExceed:R}})}function pu(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function du(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))du(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)fu(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),fu(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 TE(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;Eu(n,"dmlMaxRows"),Eu(i,"dmlMaxSubtableRows");let a=e.metadata??Ai(t,r),s=TE(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 w of t.fields)L[w]=b[w];for(let w of S.tables){let _=b[w.table]?.value;L[w.table]={value:w.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),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 Ru({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 fu(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 Eu(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 Ru(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))Ru(r,t);return Object.freeze(e)}async function yu(e){let{statement:t,matches:r,fieldInfos:n,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a=1}=e;mu(i,"dmlMaxRows"),mu(o,"dmlMaxSubtableRows"),NE(t,r);let s=r.filter(y=>y.targetId===void 0),l=r.filter(y=>y.targetId!==void 0),p=IE(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 h=y.targetId;c.has(h)&&ua(`UPSERT APPLY resolves more than one source row to parent $id ${h}.`),c.add(h),y.snapshot||ua(`UPSERT APPLY snapshot for parent $id ${h} is missing.`);let g=Number(y.snapshot.$id?.value);g!==h&&ua(`UPSERT APPLY snapshot $id ${g} does not match target $id ${h}.`);let S=wE(t,y.sourceRowIndex,h),O=S.applyBlocks?.length?Ze(S,n):bE(n);d.push(await gi({statement:S,snapshots:[y.snapshot],fieldInfos:n,metadata:O,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a,parentRowNumbers:[y.sourceRowIndex+1],loadNumberPrecision:e.loadNumberPrecision}))}let f=PE(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 ca({create:u,update:f,createBatches:u.batches,updateBatches:CE(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 IE(e,t){return{type:"INSERT",appId:e.appId,fields:[...e.fields],values:t.map(r=>e.values[r]),applyBlocks:e.onInsertApplyBlocks??[],validateOnly:!0}}function wE(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 bE(e){return{targetTables:new Map,targetMultiValueFields:new Map,childrenByTable:new Map,fieldsByCode:new Map(e.map(t=>[t.code,t]))}}function PE(e,t,r){let n=e.flatMap(s=>s.plans),i=e.flatMap(s=>s.records),o=e.flatMap(s=>s.validations),a=n.reduce((s,l)=>s+l.changedSubtableRows,0);return 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 NE(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 CE(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 mu(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",[Au(e)])}function pa(e){return Er("INSERT",[gu(e)])}function da(e){return Er("UPSERT",[gu(e.create),Au(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 gu(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 Au(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:hu(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:hu(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 hu(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=>OE(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 OE(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 Su(e,t,r){er("phase10c");let n=au(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 Tu(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 Iu(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 wu(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 Ii(e.left);case"NULL_CHECK":return Ii(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 Ii(e){if(Array.isArray(e))return e.some(Ii);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(Ii)}async function _e(e,t,r,n,i){let o=await me(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 wi(e,t,r,n){let{records:i,metrics:o}=await _e(e,t,r,["$id"],n);return{ids:Cs(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 LE(e,t){return e.key.type==="FIELD_NAME"?t.get(e.key.name):void 0}function _E(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=LE(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"&&!_E(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 DE=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 vE(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(vE(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}DE.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 bu(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 Pu=["$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 Nu(e){return e.startsWith("_")||e.startsWith("$")}var UE=/^(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"?UE.test(t.field):Object.values(t).some(ya)}function kE(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 ME=["_pid","_rid","_idx"];function ma(e){return[...new Set(e)]}function xE(e){switch(e.kind){case"APP":return ma([...e.fieldCodes,...Pu]);case"SUBTABLE":return ma([...e.childFieldCodes,...ME,...e.parentFieldCodes.map(t=>`_p.${t}`)]);case"MATERIALIZED":return ma(e.columns)}}function Cu(e,t){return[e.from,...e.joins.map(n=>n.table)].map((n,i)=>({sourceIndex:i,qualifier:n.alias??n.cteName,columns:xE(t(n,i))}))}function FE(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 KE(e,t){return e.qualifier===null?t:`${e.qualifier}.${t}`}function BE(e){return"alias"in e&&typeof e.alias=="string"?e.alias:null}function $E(e,t,r){let n=FE(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:KE(l,n.fieldCode)}}if(n.qualifier!==null)return{kind:"UNKNOWN",name:e};let a=t.flatMap((l,p)=>BE(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=kE(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&&ye(l.func,l.distinct,l.arg)===e)?{kind:"ALIAS_REJECT",reason:"AGGREGATE"}:{kind:"UNKNOWN",name:e}}function Ou(e,t,r){return{items:e.map(n=>n.type==="FIELD_NAME"?$E(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 GE(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(Lu(e,a,n.leftColumns),Lu(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 Lu(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 VE(e,t,r,n,i){return t===null?e:e.filter(o=>q(t,o,r,n,i))}function xu(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 WE(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)=>YE(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&&xu(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[Ia(u.expr)]=String(re(u.expr,l[0])):u.type==="FUNC_KEY"&&(p[ht(u.expr)]=ne(u.expr,l[0]));Fu(p,l,r,n),s.push(p)}return s}function HE(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=_u(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,_u(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)}Fu(f,c,r,n),El(f,d),o.push(f)}}return o}function _u(e,t){return t?t[e.directKey]??(e.unqualifiedBridgeKey===null?void 0:t[e.unqualifiedBridgeKey])??"":""}function Fu(e,t,r,n){for(let i of r)if(i.type==="AGGREGATE"){let o=ye(i.func,i.distinct,i.arg),a=String(ga(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??ht(i.expr),a=wa(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 YE(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 ga(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"?Ku(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 h=Pt(m,E,d);(h<0||h===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 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 jE(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(ga(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 Ku(e,t){if(e.type==="FIELD_REF")return t?.(jE(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=>Ku(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 qE(e,t,r,n){return t===null?e:e.filter(i=>q(t,i,r,void 0,n))}function zE(e,t,r,n,i){if(e.length===0)return e;let o=XE(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 XE(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(tR(t,a,o))}function Aa(e,t,r,n,i,o){return t.length===0?e:Bu(e,t,r,n,i,o).rows.map(a=>a.row)}function Bu(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($u.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:ZE(u,p,o)}))})),l=(p,u)=>JE(p,u,t,a);return s.sort(l),{rows:s,compare:l}}function JE(e,t,r,n){for(let i=0;i<r.length;i++){let o=QE(e.keys[i],t.keys[i],n[i]);if(o!==0)return r[i].direction==="ASC"?o:-o}return 0}function QE(e,t,r){return Pt(e.s,t.s,r.semantics)}var $u=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function ZE(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=ye(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=ht(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=>eR(l,d))),u=s.get(p);u?u.push(l):s.set(p,[l])}for(let l of s.values()){let p=Bu(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 eR(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=ye(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=ht(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 tR(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(vu(E),a),m=Oi(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=iR(t),l=t.some(c=>c.type==="WILDCARD"||c.type==="PARENT_WILDCARD"),p=l?null:rR(t,s),u=p??[];return l&&e.length===0?{rows:[],columns:nR(t,s)}:{rows:e.map((c,f)=>{let E={},R={scalarCache:r,resolveFieldType:n,resolveFieldSemantics:o,wildcardKeys:Object.keys(ku(vu(c),a)),parentWildcardKeys:Object.keys(c).filter(m=>m.startsWith("_p.")).sort()};for(let[m,y]of t.entries()){let h=Oi(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=ye(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??Rr(y.expr);E[g]=h,p===null&&f===0&&u.push(g);break}case"ARITH_COL":{let g=p?.[m]??y.alias??Ia(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??ht(y.expr);E[g]=h,p===null&&f===0&&u.push(g);break}case"SCALAR_VALUE_COL":{let g=p?.[m]??y.alias??$e(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 rR(e,t){return e.map((r,n)=>Gu(r,n,t))}function nR(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=Gu(o,i,t);n.has(a)||(n.add(a),r.push(a))}return r}function Gu(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??ye(e.func,e.distinct,e.arg);case"ARITH_AGG_COL":return e.alias??Rr(e.expr);case"ARITH_COL":return e.alias??Ia(e.expr);case"CASE_COL":return e.alias??"case";case"STRFUNC_COL":return e.alias??ht(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 iR(e){let t=new Map;for(let n of e){if(n.type!=="FIELD"||n.alias)continue;let i=Du(n.field);t.set(i,(t.get(i)??0)+1)}let r=new Map;for(let[n,i]of e.entries()){if(i.type!=="FIELD"||i.alias)continue;let o=Du(i.field),a=(t.get(o)??0)>1,s=i.field.includes(".")&&!i.field.startsWith("_p.");r.set(n,a&&s?i.field:o)}return r}function Du(e){if(e.startsWith("_p."))return e;let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function vu(e){let t={};for(let[r,n]of Object.entries(e))r.startsWith("_p.")||(t[r]=n);return t}function Ia(e){let t=r=>r.type==="FIELD_REF"?r.field:r.type==="NUMBER"?W(r):r.type==="STRING_FUNC"?ht(r):`(${t(r.left)}${r.op}${t(r.right)})`;return e.type==="ARITH"?`${t(e.left)}${e.op}${t(e.right)}`:t(e)}function ht(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 ht(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 oR(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=>Uu(t.result))||e.elseResult!==null&&Uu(e.elseResult):!1}function Uu(e){return e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?!1:yt(e)}function rn(e){return e.args.some(t=>oR(t))}function aR(e,t,r){if(e.type==="AGG_REF"){let n=ga(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"?wa(e,t,r):Li(e,t,r)}function Li(e,t,r){return e.type==="STRING_FUNC"?wa(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 wa(e,t,r){return{type:"STRING_FUNC",func:e.func,args:e.args.map(n=>aR(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 Mu(e,t){if(e!==void 0)return t?e.flatMap(r=>[`${t}.${r}`,r]):[...e]}function ha(e,t,r){if(!(e===void 0&&t===void 0&&r.length===0))return[...new Set([...e??[],...t??[],...Object.keys(r[0]??{})])]}function sR(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($u.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=sR(t.columns);for(let[_,C]of a??[])h.set(_,C);let g=[],S=t.from.alias;g=(r.get(S)??r.get(null)??[]).map(_=>tt(_,S));let b=ha(Mu(E?.get(S),S),void 0,g);for(let _ of t.joins){let C=_.table.alias,k=(r.get(C)??[]).map(P=>tt(P,C)),A=ha(Mu(E?.get(C),C),void 0,k);g=GE(g,k,_,{leftColumns:b,rightColumns:A}),b=ha(b,A,g)}let L=e.residualWhere!==void 0?e.residualWhere:t.where;g=VE(g,L,s,c,l);let w=Q(t);if(w.type==="GROUPING_SETS"){if(!m)throw new Error("internal error: B65 grouping sets require a metadata-resolved grouping spec.");g=HE(g,m,t.columns,d,{maxGeneratedRows:5e4})}else(w.type==="PLAIN"||xu(t.columns))&&(g=WE(g,w.type==="PLAIN"?w.allItems:[],t.columns,d,w.type==="PLAIN"?y:void 0,{scalarCache:n,resolveFieldType:s,resolveFieldSemantics:l}));return g=qE(g,t.having,p,u),g=Ta(g,t.columns,i,o,h),t.distinct&&(g=zE(g,t.columns,n,s,l)),g=Aa(g,t.orderBy,i,o,h,Sa(t.columns,n,s,l)),g=_i(g,t.limit,t.offset),Di(g,t.columns,n,s,f,l,R)}function Vu(e,t){let r=[];for(let n of e){let i=Pa(n.$id?.value),o=lR(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 lR(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 Wu(e){return["$id",...new Set([...e.topLevel.map(t=>t.code).filter(t=>t!=="$id"&&t!=="$revision"),...e.subtables.keys()])]}function Hu(e,t){let r=nn(e);for(let[n,i]of Object.entries(t))r[n]=nn(i);return r}function Yu(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=["=","!=",">","<",">=","<="],uR=new Set(["DATE","DATETIME","CREATED_TIME","UPDATED_TIME"]),cR=new Set(Ge),pR=["=","!=","in","not in"],dR=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(pR)]]),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 fR(e){return dR.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 ER(e.op,e.left,e.right,t);case"NULL_CHECK":return e.field.type!=="FIELD"?Ca():yR(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 gR(e.op,r,n)}}}function ER(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(!hR(i.fieldType,e))return Ui("WHERE_OPERATOR_UNSUPPORTED",t.field,i.fieldType,vi(e));let o=vi(e),a=fR(i.fieldType),s=r.type==="STRING"||r.type==="NUMBER"||r.type==="IN_LIST"||RR(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 RR(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?mR(r)?cR.has(i)?!uR.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 mR(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 yR(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 hR(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 gR(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||!TR(l,a)||o===null||!Xu(o,l))return null;let p={prefilterWhere:t.where,residualWhere:null,exactRelativeLeaves:SR(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 AR(u,e,l),u}function AR(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(!Xu(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 SR(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 TR(e,t){return e.length===t.length&&e.every((r,n)=>r===t[n])}function Xu(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 Qu(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 Qu(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 Ju(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 Zu(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":Ju(e,t,r,n);return;case"CREATE_TEMP_TABLE":e.query.type==="WITH"?Ju(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":Zu(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=Qu(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 IR(e){return{kind:e.kind,source:e.source,functionNames:e.functionNames,path:e.path,clientWhereEvaluation:!0,allowed:!1}}function wR(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=wR(t);return{functionName:e.functionNames[0],path:e.path,code:r.find(n=>n!==qe)??qe,reasonCodes:r}}async function ec(e,t){let r=[];Zu(e,"statement",r);let n=[];for(let i of r){if(i.kind==="FORBIDDEN"){let u=IR(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 h;!R&&f.capability==="EXACT_PUSHDOWN"&&(h=ki({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:!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 tc(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=(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=cn(e.where);if(o.length===0)return i(["NO_RELATIVE_DATE"]);let a=bR(e.where,t);if(!a.ok)return i(a.reasonCodes);if(!PR(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=CR(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 g of a.leaves){let S=$i(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=NR(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(g=>$i(g));if(!u(R,[...new Set(m)])||!OR(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 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 bR(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 PR(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 NR(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 CR(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 OR(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 rc(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 LR(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 _R(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 To(e){let t=e.codePointAt(0);return t>=65&&t<=90||t>=97&&t<=122||t===95||t===36||id(t)}function Us(e){let t=e.codePointAt(0);return To(e)||t>=48&&t<=57}function zt(e){let t=e.codePointAt(0);return t>=48&&t<=57}function id(e){return e>=12352&&e<=12543||e>=13312&&e<=40959||e>=63744&&e<=64255||e>=65281&&e<=65376}var od=/^([+-]?)(?:(\d+)(?:\.(\d*))?|\.(\d+))(?:[eE]([+-]?)(\d+))?$/;function ad(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=od.exec(e.trim());if(t===null)return null;let r=ad(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 sd(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 Ms(e){let t=we(e);return t===null?null:sd(t)}function ld(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 Vn(e,t){if(e.sign!==t.sign)return e.sign<t.sign?-1:1;if(e.sign===0)return 0;let r=ld(e,t);return e.sign===-1?r===0?0:r===-1?1:-1:r}function Wn(e,t){let r=we(e),n=we(t);if(r===null||n===null)throw new Error("ArgumentError: compareDecimal requires finite decimal inputs.");return Vn(r,n)}var ut="__NO_FROM__";function pe(e){return{type:"NUMBER",value:Number(e),raw:e}}function W(e){let t=e.raw??String(e.value);return Ms(t)??t}function xs(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 Fs(e){return Z(e).type!=="NONE"}function Ks(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 Hn(e){return`'${e.replace(/'/g,"''")}'`}function Jt(e,t=!1){if(e.type==="FIELD_REF")return e.field;if(e.type==="NUMBER")return W(e);if(e.type==="STRING_FUNC")return wo(e);let r=`${Jt(e.left)}${e.op}${Jt(e.right)}`;return t?r:`(${r})`}function Bs(e){if(e.type==="FIELD")return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;if(e.type==="FUNC_FIELD")return wo(e.expr);if(e.type==="ARITH_FIELD")return Jt(e.expr);if(e.type==="GROUPING_FIELD"){let t=e.ref.field;return`GROUPING(${t.tableAlias?`${t.tableAlias}.`:""}${t.field})`}return Io(e.expr)}function Gs(e){switch(e.type){case"STRING":return Hn(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=>Hn(t.value)).join(",")}]`;case"IN_LIST":return`(${e.values.map(Gs).join(",")})`;case"ARITH_VALUE":return Jt(e.expr);case"CASE_VALUE":return Io(e.expr);case"SUBQUERY_IN_LIST":return"(SUBQUERY)";case"SCALAR_SUBQUERY":return"(SUBQUERY)"}}function Lr(e){switch(e.type){case"BINARY":return`${Bs(e.left)} ${e.op.replace("_"," ")} ${Gs(e.right)}`;case"NULL_CHECK":return`${Bs(e.field)} IS ${e.not?"NOT ":""}NULL`;case"LOGICAL":return`(${Lr(e.left)} ${e.op} ${Lr(e.right)})`;case"NOT":return`NOT (${Lr(e.expr)})`;case"GROUP":return`(${Lr(e.expr)})`;case"BOOLEAN":return e.value?"TRUE":"FALSE";case"EXISTS":return`${e.not?"NOT ":""}EXISTS (SUBQUERY)`}}function $s(e){return e.type==="ARRAY"?`[${e.elements.map(t=>Hn(t.value)).join(",")}]`:e.type==="FIELD_REF"||e.type==="ARITH"?Jt(e):wt(e)}function Io(e){let t=e.branches.map(n=>`WHEN ${Lr(n.condition)} THEN ${$s(n.result)}`).join(" "),r=e.elseResult===null?"":` ELSE ${$s(e.elseResult)}`;return`CASE ${t}${r} END`}function cd(e){return e.type==="AGG_REF"?ye(e.func,e.distinct,e.arg):e.type==="AGG_ARITH"?_r(e):wt(e)}function wo(e){return`${e.func}(${e.args.map(cd).join(",")})`}function wt(e){switch(e.type){case"STRING":return Hn(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 wo(e);case"CASE_WHEN":return Io(e);case"SCALAR_ARITH":return`(${wt(e.left)}${e.op}${wt(e.right)})`;case"CONCAT_OP":return`(${wt(e.left)}||${wt(e.right)})`}}function pd(e){return e.type==="WILDCARD"?"*":e.type==="FIELD_REF"||e.type==="ARITH"?Jt(e,!0):wt(e)}function ye(e,t,r){let n=pd(r);return t?`${e}(DISTINCT ${n})`:`${e}(${n})`}function _r(e){return e.type==="NUMBER"?W(e):e.type==="AGG_REF"?ye(e.func,e.distinct,e.arg):`${_r(e.left)}${e.op}${_r(e.right)}`}var Yn=new Set(["YESTERDAY","TOMORROW","FROM_TODAY","THIS_WEEK","LAST_WEEK","NEXT_WEEK","THIS_MONTH","LAST_MONTH","NEXT_MONTH","THIS_YEAR","LAST_YEAR","NEXT_YEAR"]),bt=new Set(["TODAY","NOW","LOGINUSER"]),bo=new Set([...bt,...Yn]),Pt="WHERE_RELATIVE_DATE_REQUIRES_EXACT_PUSHDOWN",Xe="WHERE_KINTONE_FUNCTION_REQUIRES_EXACT_PUSHDOWN";function q(e){return Yn.has(e)}function Qt(e){return bt.has(e)}function De(e){return bo.has(e)}var Vs=20,Po=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"}),Hs=Object.freeze(["CURRENT_DATE","CURRENT_TIMESTAMP"]),No=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"}),cg=Object.freeze(Object.values(No).filter(e=>e!==void 0)),dd=Object.freeze(["COUNT","SUM","AVG","MAX","MIN"]),fd=new Set(dd);function Ed(e){return fd.has(e)}var Ys=Object.freeze({ROW_NUMBER:"ROW_NUMBER",RANK:"RANK",DENSE_RANK:"DENSE_RANK"}),jn=Object.freeze({TODAY:"TODAY",NOW:"NOW",LOGINUSER:"LOGINUSER"});function Ws(e){return jn[e]!==void 0}var Rd=Object.freeze([...Yn]),md=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),yd=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function hd(e){return md.has(e)}function gd(e){return yd.has(e)}function Ad(e){return Number.isInteger(e)&&e>=1&&e<=31}var pg=Object.freeze(Array.from(new Set([...Object.keys(Po),...Hs,...Object.keys(No),...Object.keys(Ys),...Object.keys(jn),...Rd,"IF"]))),Sd=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 Td(e,t){return e.kind==="("||e.kind==="."||t.kind===")"||t.kind===","||t.kind==="."?!1:t.kind==="("?!Sd.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>Vs)throw new T(`batch exceeds ${Vs} 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=jn[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 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 w;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()}w=this.parseIdentifier()}o.push({kind:"SUBTABLE",subtableCode:b,children:L,...w?{rowIdSourceHeader:w}:{}})}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!==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(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 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(b=>b.kind==="SUBTABLE");if(g.length){if(f)throw new T("IMPORT subtables cannot use SELECT projection.",this.prev());if(l==="JSON"){if(g.some(b=>b.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 b=new Set(h);for(let L of g){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(!g.some(w=>w.subtableCode===L))throw new T(`REPLACE SUBTABLES target ${L} 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&&Td(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 Ys[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=Po[this.peek().kind];if(r==="LEFT"||r==="RIGHT")return r}let t=Po[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(Hs.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=Id(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 No[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(!Ed(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:ye(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==="("&&q(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(!hd(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(!gd(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(!Ad(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(Ws(t.kind))return this.advance(),this.expect("("),this.expect(")"),{type:"KINTONE_FUNC",name:jn[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=xs(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(Ws(t.kind))return this.parseSqlValue();if(t.kind==="IN")return this.parseSqlValue();if(t.kind==="CASE"||t.kind==="IF")return this.parseSqlValue();if(t.kind==="[")return this.parseArrayLiteral();if(t.kind==="("&&this.peekAt(1).kind==="SELECT"){this.advance();let i=this.parseSelect();return this.expect(")"),{type:"SCALAR_SUBQUERY",query:i}}let r=this.allowUnaryPlusNumber;this.allowUnaryPlusNumber=!0;let n;try{n=this.parseArithAddSub()}finally{this.allowUnaryPlusNumber=r}if(n.type==="NUMBER"||n.type==="ARITH"||n.type==="STRING_FUNC")return n;if(n.type==="FIELD_REF"){let i=n.field.indexOf(".");if(i>0&&i<n.field.length-1)return{type:"SOURCE_FIELD",alias:n.field.slice(0,i),field:n.field.slice(i+1)}}throw new 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"||Gn.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 Id(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 js(e){return e==="INSERT"||e==="INSERT_SELECT"||e==="UPDATE"||e==="DELETE"||e==="UPSERT"||e==="UPSERT_SELECT"||e==="REORDER"||e==="IMPORT"}var wd=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 qn(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"&&wd.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=>qn(i,t)):qn(n,t))}function Nt(e){let t=new Set;if(js(e.type))return t.add("DML"),t;switch(e.type){case"VALIDATE":t.add("VALIDATE");break;case"SELECT":de(t,tr(e));break;case"UNION":de(t,qs(e));break;case"WITH":for(let r of e.ctes)de(t,Nt(r.query));de(t,Nt(e.query));break;case"CREATE_TEMP_TABLE":de(t,Nt(e.query));break;default:break}return qn(e)&&t.add("STATISTICAL_AGGREGATE"),t}function qs(e){let t=e.left.type==="SELECT"?tr(e.left):qs(e.left);return de(t,tr(e.right)),t}function tr(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,tr(r.query)),r.type==="CASE_COL")for(let n of r.expr.branches)de(t,er(n.condition));return de(t,er(e.where)),de(t,er(e.having)),qn(e)&&t.add("STATISTICAL_AGGREGATE"),t}function er(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,tr(e.right.query));break;case"LOGICAL":de(t,er(e.left)),de(t,er(e.right));break;case"NOT":case"GROUP":de(t,er(e.expr));break;case"EXISTS":de(t,tr(e.query));break;case"NULL_CHECK":case"BOOLEAN":break}return t}var bd=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})}),Lo=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})}),Dr="v1";function $(e){throw new Error(`UnsupportedError: APPLY ${Dr} scope does not support ${e}`)}function Pd(e,t){let r=Dr;Dr=e;try{return t()}finally{Dr=r}}function Nd(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 Xn(e,t){return Pd(e,()=>Cd(t,bd[e]))}function Cd(e,t){let r=Nd(e);if(r===null)return;if(r.type==="UPSERT"){Ld(r,t);return}let n=r.applyBlocks;if(Co(n),!t.multipleBlocks&&n.length!==1&&$("multiple APPLY blocks in this phase"),r.type==="INSERT"){_d(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"),Dd(i.where,t.multipleParents),Xs(n,t)}function Xs(e,t){for(let r of e){for(let n of r.operations)t.operations.has(n.kind)||$(`${n.kind} in this phase`);Js(r);for(let n of r.operations){if(n.kind==="APPEND"){for(let i of n.fields)zn(i,"APPEND targets");nr(n.values,"APPEND values");continue}if(n.kind==="REMOVE"){!t.expectRows&&n.expectRows&&$("EXPECT ROWS in this phase"),n.selector.kind==="WHERE"&&zs(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")}nr(n.assignments,"PATCH assignments"),n.selector.kind==="WHERE"&&zs(n.selector.where,t.idxSelectors)}}}}function Js(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 Od=new Set(["MULTI_SELECT","CHECK_BOX","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function Qs(e,t){if(Js(e),e.targetKind==="MULTI_VALUE"){if(!Od.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 Co(e){let t=new Set;for(let r of e){if(t.has(r.field))throw new Error(`ArgumentError: APPLY ${Dr} scope allows only one block for table ${r.field}`);t.add(r.field)}}function Ld(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??[];Co(r),Co(n),!t.multipleBlocks&&(r.length>1||n.length>1)&&$("multiple APPLY blocks in this phase"),Zs(r,"UPSERT ON INSERT"),Xs(n,{...t,idxSelectors:!1,expectRows:!1})}function Zs(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)zn(i,"APPEND targets");nr(n.values,"APPEND values")}}function _d(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"),Zs(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=Lo[e],n="validateOnly"in t&&t.validateOnly===!0;if(t.type!=="EXPLAIN"&&!n&&tl(t)&&e!=="phase15b")throw new Error(`UnsupportedError: APPLY ${rr(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 ${rr(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 ${rr(e)} INSERT execution is not connected`);return}if(!(t.type!=="UPDATE"||!t.applyBlocks?.length)&&!r.multipleParentPreflight&&!Qe(t.where))throw new Error(`UnsupportedError: APPLY ${rr(e)} execution does not support multiple-parent APPLY`)}function tl(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 rl(e,t){if(!(t.type!=="UPDATE"||!t.applyBlocks?.length||Qe(t.where))&&!Lo[e].publicMultipleParentWrite)throw new Error(`UnsupportedError: APPLY ${rr(e)} public multiple-parent write is not connected`)}function ir(e){if(!Lo[e].internalPreparedWrite)throw new Error(`UnsupportedError: APPLY ${rr(e)} internal prepared write is not available`)}function rr(e){return`Phase ${e.slice(5)}`}function Dd(e,t){Qe(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"),Oo(e,t))}function Oo(e,t){if(Array.isArray(e)){for(let o of e)Oo(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"&&q(r.name))&&$("non-deterministic kintone functions in parent WHERE");for(let o of Object.values(r))Oo(o,t)}function zs(e,t){nr(e,"child row selectors",t)}function nr(e,t,r=!1){if(Array.isArray(e)){for(let s of e)nr(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"&&q(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}`),zn(l,t,r)}if(i==="FIELD_REF"&&zn(n.field,t,r),!(o==="PATCH"||o==="APPEND"||o==="REMOVE"))for(let s of Object.values(n))nr(s,t,r)}function zn(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 vr(e){switch(e.type){case"BOOLEAN":return{type:"BOOLEAN",value:!e.value};case"BINARY":{let t=vd(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:vr(e.left),right:vr(e.right)};case"NOT":return e.expr;case"GROUP":return{type:"GROUP",expr:vr(e.expr)};case"EXISTS":return{...e,not:!e.not}}}function vd(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 nl(e){return e.includes("%")||e.includes("_")}function Ur(e){return e.type==="BINARY"&&(e.op==="LIKE"||e.op==="NOT_LIKE")}function or(e){return e.type==="BINARY"&&(e.op==="KLIKE"||e.op==="NOT_KLIKE")}function ct(e){if(e===null)return!1;if(Ur(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 se(e){if(e===null)return!1;if(or(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 Ud(e);case"NULL_CHECK":return Md(e);case"LOGICAL":return xd(e);case"NOT":return Fd(e);case"GROUP":return Kd(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 Ud(e){if(Ur(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=ol(e.left),r=kd(e.op),n=Bd(e.right,e.op);return`${t} ${r} ${n}`}function kd(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 Md(e){let t=ol(e.field);return e.not?`${t} != ""`:`${t} = ""`}function xd(e){let t=G(e.left),r=G(e.right),n=e.op==="AND"?"and":"or",i=il(e.left)?`(${t})`:t,o=il(e.right)?`(${r})`:r;return`${i} ${n} ${o}`}function Fd(e){return G(vr(e.expr))}function Kd(e){return`(${G(e.expr)})`}function ol(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 qd(e.field)}function Bd(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 W(e);case"KINTONE_FUNC":return sl(e);case"IN_LIST":return Yd(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 $d(e)}function $d(e){switch(e.name){case"YESTERDAY":case"TOMORROW":case"THIS_YEAR":case"LAST_YEAR":case"NEXT_YEAR":return e.args?.kind!=="NONE"?kr():`${e.name}()`;case"FROM_TODAY":return e.args?.kind!=="FROM_TODAY"||!Wd(e.args.offset,e.args.offsetText)||!Gd.has(e.args.unit)?kr():`${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&&!Vd.has(e.args.weekday)?kr():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"||!Hd(e.args.day)?kr():e.args.day===null?`${e.name}()`:`${e.name}(${e.args.day})`}return kr()}var Gd=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),Vd=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function Wd(e,t){return!Number.isSafeInteger(e)||!/^(?:0|[1-9]\d*|-[1-9]\d*)$/.test(t)?!1:Number(t)===e}function Hd(e){return e===null||e==="LAST"||typeof e=="number"&&Number.isInteger(e)&&e>=1&&e<=31}function kr(){throw new ee("internal error: invalid relative date function AST reached kintone query conversion")}function Yd(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 jd(e.values),`(${e.values.map(n=>n.type==="STRING"?al(n):n.type==="NUMBER"?W(n):sl(n)).join(",")})`}function jd(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 qd(e){return/^[\w$\u3000-\u9FFF]+$/u.test(e)?e:`"${e.replace(/"/g,'\\"')}"`}function il(e){return e.type==="LOGICAL"}var ee=class extends Error{constructor(t){super(t),this.name="KintoneQueryError"}};function zd(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||zd(e.columns)||e.columns.some(t=>t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"||t.type==="SCALAR_SUBQUERY_COL"||t.type==="STRFUNC_COL"&&dl(t.expr)||t.type==="SCALAR_VALUE_COL"&&xr(t.expr))||pt(e.where)||e.orderBy.some(t=>t.key.type!=="FIELD_NAME")?"FULL_SCAN":"SIMPLE"}function pt(e){if(e===null)return!1;switch(e.type){case"BOOLEAN":return!0;case"BINARY":return ll(e.left)||e.right.type==="ARITH_VALUE"||e.right.type==="CASE_VALUE"||e.right.type==="SUBQUERY_IN_LIST"||e.right.type==="SCALAR_SUBQUERY"||Ur(e);case"NULL_CHECK":return ll(e.field);case"LOGICAL":return pt(e.left)||pt(e.right);case"NOT":case"GROUP":return pt(e.expr);case"EXISTS":return!0}}function ll(e){return e.type==="FUNC_FIELD"||e.type==="ARITH_FIELD"||e.type==="CASE_FIELD"}function Jn(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(Xd).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:Jd(e.columns),totalCount:!1}}function pl(e,t){let r=[];return e.where!==null&&e.joins.length===0&&!pt(e.where)&&r.push(G(e.where)),{app:t,query:r.join(" "),fields:[]}}function Ct(e,t,r){let i=tf(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 Xd(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 Jd(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(Do(n.field)):n.type==="ARITH_COL"?Mr(n.expr,r):n.type==="STRFUNC_COL"?vo(n.expr,r):n.type==="SCALAR_VALUE_COL"&&ar(n.expr,r);return[...new Set(r)]}function Qd(e,t){Mr(e.left,t),Mr(e.right,t)}function Mr(e,t){e.type==="FIELD_REF"?t.push(Do(e.field)):e.type==="ARITH"?Qd(e,t):e.type==="STRING_FUNC"&&vo(e,t)}function Do(e){let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function vo(e,t){for(let r of e.args)Zd(r,t)}function Zd(e,t){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"){_o(e,t);return}ar(e,t)}function ar(e,t){if(e.type==="FIELD"){t.push(Do(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"){ar(e.left,t),ar(e.right,t);return}if(e.type==="CASE_WHEN"){for(let r of e.branches)ul(r.result,t);e.elseResult&&ul(e.elseResult,t)}}function ul(e,t){if(e.type!=="ARRAY"){if(e.type==="FIELD_REF"||e.type==="ARITH"){Mr(e,t);return}ar(e,t)}}function _o(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&ef(e.arg,t);return}e.type==="AGG_ARITH"&&(_o(e.left,t),_o(e.right,t))}function ef(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?Mr(e,t):ar(e,t)}function dl(e){return e.args.some(t=>t.type==="AGG_REF"||t.type==="AGG_ARITH"?!0:xr(t))}function xr(e){return e.type==="STRING_FUNC"?dl(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?xr(e.left)||xr(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>cl(t.result))||e.elseResult!==null&&cl(e.elseResult):!1}function cl(e){return e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?!1:xr(e)}function tf(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=rf(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 I=P.slice(3);I&&I!=="*"&&N.fields.add(I);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")&&nf(A))return;let I=A.indexOf(".");if(I>0){let U=A.slice(0,I),B=A.slice(I+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 I=s.get(P);if(I){c(I,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"){h(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}g(A,P)},h=(A,P="select")=>{for(let N of A.args)y(N,P)},g=(A,P="select")=>{if(A.type==="FIELD"){E(A.field,A.tableAlias,P);return}if(A.type==="STRING_FUNC"){h(A,P);return}if(A.type==="SCALAR_ARITH"||A.type==="CONCAT_OP"){g(A.left,P),g(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}g(A,P)},O=(A,P="select")=>{if(A.type!=="ARRAY"){if(A.type==="FIELD_REF"||A.type==="ARITH"){R(A,P);return}g(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"){h(A.expr,P);return}if(A.type==="ARITH_FIELD"){R(A.expr,P);return}A.type!=="GROUPING_FIELD"&&b(A.expr,P)},w=(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),w(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}h(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"&&h(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":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 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=Z(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 rf(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(ye(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 nf(e){return/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/i.test(e)}function dt(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||Fs(r)||r.distinct?!1:!r.columns.some(n=>n.type==="AGGREGATE"||n.type==="ARITH_AGG_COL")}function ft(e){let t=e.ctes[0].query,r=e.query,n=Qn(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 Qn(e,t){if(e===null||t===null)return e;switch(e.type){case"BINARY":return{...e,left:fl(e.left,t)};case"NULL_CHECK":return{...e,field:fl(e.field,t)};case"LOGICAL":return{...e,left:Qn(e.left,t),right:Qn(e.right,t)};case"NOT":case"GROUP":return{...e,expr:Qn(e.expr,t)};case"EXISTS":case"BOOLEAN":return e}}function fl(e,t){return e.type==="FIELD"&&e.tableAlias===t?{...e,tableAlias:null}:e}function sr(e,t={}){return Fr(e,r=>of(r,t))}function Kr(e,t={}){return Fr(e,r=>El(r,t)||Rl(r,t))}function Fr(e,t){switch(e.type){case"BINARY":return t(e)?e:null;case"LOGICAL":if(e.op!=="AND")return null;{let r=Fr(e.left,t),n=Fr(e.right,t);return r&&n?{...e,left:r,right:n}:r??n??null}case"GROUP":return Fr(e.expr,t);case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return null}}function of(e,t){return af(e,t)||uf(e,t)?!0:El(e,t)?t.fieldTypes?.get(e.left.field)==="NUMBER":lf(e,t)}function af(e,t){return t.allowKlike===!1||e.op!=="KLIKE"&&e.op!=="NOT_KLIKE"||e.left.type!=="FIELD"||!Uo(e.left,t)?!1:e.right.type==="STRING"||t.allowUnresolvedKlikeVariables===!0&&e.right.type==="VARIABLE"}var sf=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]);function lf(e,t){if(!Rl(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||!sf.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!cf(e.left,t)||e.right.type!=="NUMBER"?!1:e.op==="="||e.op===">"||e.op==="<"||e.op===">="||e.op==="<="}function cf(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 El(e,t){return e.left.type!=="FIELD"||e.left.field==="$id"||!Uo(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 Rl(e,t){return e.left.type!=="FIELD"||e.left.field==="$id"||!Uo(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 Uo(e,t){let r=t.tableAlias??null;return e.tableAlias===r?!0:t.allowUnqualifiedFields===!0&&e.tableAlias===null}function Br(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=Br(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 ko(e){return e.allKlikes.filter(t=>!e.appliedKlikes.has(t))}function lr(e,t){if(e!==null){if(or(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 ae=class extends Error{constructor(t){super(`ArgumentError: ${t}`),this.name="ArgumentError"}};function dr(e){ml(e)}function xo(e){if(ko(e).length>0)throw new ae("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 ml(e){switch(e.type){case"SELECT":pr(e);return;case"UNION":Ko(e);return;case"WITH":yl(e);return;case"EXPLAIN":ml(e.query);return;case"CREATE_TEMP_TABLE":Fo(e.query);return;case"SET_VARIABLE":case"DECLARE_VARIABLE":case"ASSERT":cr(e);return;case"UPDATE":if(e.applyBlocks?.length&&!Qe(e.where)&&se(e.where)){Mo(e.where),cr(e);return}if(Et(e)&&e.subtableCode)throw new ae("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)&&!df(e,e.where)){Mo(e.where),cr(e);return}if(Et(e))throw new ae("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(Et(e)&&e.subtableCode)throw new ae("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)){Mo(e.where),cr(e);return}if(Et(e))throw new ae("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(Et(e))throw new ae("KLIKE / NOT KLIKE \u306F INSERT / INSERT SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"UPSERT":case"UPSERT_SELECT":if(Et(e))throw new ae("KLIKE / NOT KLIKE \u306F UPSERT / UPSERT SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"REORDER":if(Et(e))throw new ae("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(Et(e))throw new ae("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 Mo(e){ei(e,t=>{if(!or(t))return;let r=t.right;if(r.type!=="STRING"&&r.type!=="VARIABLE")throw new ae("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 ae("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 Fo(e){e.type==="SELECT"?pr(e):e.type==="UNION"?Ko(e):yl(e)}function Ko(e){Fo(e.left),pr(e.right)}function yl(e){if(dt(e)){pr(ft(e));return}for(let t of e.ctes)t.query.type==="SELECT"?pr(t.query):t.query.type==="UNION"&&Ko(t.query);Fo(e.query)}function pr(e){if(pf(e),se(e.where)&&!(be(e)==="SIMPLE"&&e.from.cteName===null&&e.joins.every(r=>r.table.cteName===null))){let r=ur(e,{allowUnresolvedVariables:!0});if(ko(r).length===0){cr(e);return}throw new ae("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 pf(e){ei(e,t=>{if(!or(t))return;if(!Zn(e.where,t))throw new ae("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 ae("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 ae("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){ti(e,t=>{t.type==="SELECT"&&pr(t)},!0)}function Et(e){let t=!1;return ti(e,r=>{r.type==="BINARY"&&(r.op==="KLIKE"||r.op==="NOT_KLIKE")&&(t=!0)}),t}function df(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 Zn(e,t){if(e===null)return!1;if(e===t)return!0;switch(e.type){case"LOGICAL":return Zn(e.left,t)||Zn(e.right,t);case"NOT":case"GROUP":return Zn(e.expr,t);case"BINARY":case"NULL_CHECK":case"EXISTS":return!1;case"BOOLEAN":return!1}}function ei(e,t){if(Array.isArray(e)){for(let n of e)ei(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)||ei(n,t)}function ti(e,t,r=!1){if(Array.isArray(e)){for(let i of e)ti(i,t);return}if(e===null||typeof e!="object")return;let n=e;r||t(n);for(let i of Object.values(n))ti(i,t)}function ff(e){return e!==null&&typeof e=="object"&&e.type==="SELECT"}var hl=Symbol("ksql.groupingRowMeta"),gl=new WeakMap;function Al(e,t){return Object.defineProperty(e,hl,{value:{includedCanonicalIds:t},enumerable:!1,configurable:!1,writable:!1}),e}function Ef(e){return e[hl]}function Rf(e){return Ef(e)?.includedCanonicalIds}function Sl(e,t){gl.set(e,t)}function fr(e,t){let r=Rf(t);if(!r)throw new Error("internal error: GROUPING() evaluation requires B65 grouping row membership.");let n=gl.get(e);if(!n)throw new Error("internal error: GROUPING() reference was not resolved during B65 planning.");return r.has(n)?"0":"1"}var Il=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 ii(e){return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field}function $o(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 oi(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(n=>oi(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=>oi(n,t))}}function $r(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(i=>$r(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($o(r.field));return}Object.values(r).forEach(i=>$r(i,t))}}function Gr(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(Gr);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(Gr)}function mf(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"?Gr(e):!1}function yf(e){return new Set(e.flatMap(t=>"alias"in t&&typeof t.alias=="string"?[t.alias]:[]))}function Tl(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 hf(e,t,r){let n=t(e.field);if(!n.physical)throw new Error(`ArgumentError: B65 grouping reference ${ii(e.field)} must resolve to a physical APP field.`);if(!r.has(n.canonicalId))throw new Error(`ArgumentError: B65 GROUPING argument ${ii(e.field)} is not present in grouping allItems (reason=B65_GROUPING_ARG_NOT_ITEM).`);Sl(e,n.canonicalId)}function Bo(e,t,r,n){let i=t(e);if(!i.physical||!r.has(i.canonicalId))throw new Error(`ArgumentError: B65 non-aggregate field ${ii(e)} in ${n} is not a grouping item (reason=B65_NON_GROUPED_DEPENDENCY).`)}function gf(e){if(e.type==="GROUPING_KEY")return[];if(e.type==="FIELD_NAME")return[$o(e.name)];let t=[];return $r(e,t),t}function wl(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),oi(e.columns,n),oi(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 bl(e,t,r=()=>{}){wl(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=Ks(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 ${ii(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)hf(u,t,a);let l=yf(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($o(u.field)):$r(u,d);for(let c of d)Bo(c,t,a,"SELECT")}if(e.having){let u=[];$r(e.having,u);for(let d of u)d.tableAlias===null&&l.has(d.field)||Tl(d)||Bo(d,t,a,"HAVING")}for(let u of e.orderBy)for(let d of gf(u.key))d.tableAlias===null&&l.has(d.field)||Tl(d)||Bo(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(!mf(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 Af=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME","CREATOR","MODIFIER"]),Sf=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]);function X(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":Sf.has(e.fieldType)?t="option":Af.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 Er(e,t,r){return{...e,source:{appId:t,fieldCode:r}}}function ai(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 Rt(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 Tf(e,t){return e<t?-1:e>t?1:0}function Pl(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 If(e,t){let r=Pl(e),n=Pl(t);return r.band!==n.band?r.band<n.band?-1:1:r.band===2&&n.band===2?Vn(r.value,n.value):r.band===5&&n.band===5?Rt(r.value,n.value):0}function Nl(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 wf(e,t,r){let n=Nl(e,r),i=Nl(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=Rt(n.normalizedId,i.normalizedId);return o!==0?o:Rt(n.display,i.display)}function bf(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 Cl(e,t){let r=t.optionOrder??new Map,i=[...new Set(bf(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(Ol),i}function Ol(e,t){return e.knownBand!==t.knownBand?e.knownBand<t.knownBand?-1:1:e.rank!==t.rank?e.rank<t.rank?-1:1:Rt(e.label,t.label)}function Pf(e,t,r){let n=Cl(e,r),i=Cl(t,r),o=Math.min(n.length,i.length);for(let a=0;a<o;a++){let s=Ol(n[a],i[a]);if(s!==0)return s}return n.length<i.length?-1:n.length>i.length?1:0}function Ot(e,t,r){switch(r.compareMode){case"string":return Rt(e,t);case"number":return If(e,t);case"recordNumber":return wf(e,t,r.fieldType==="RECORD_NUMBER");case"option":return Pf(e,t,r);case"unsupported":throw new Error(`ArgumentError: values of type ${r.fieldType} cannot be compared.`)}}function Lt(e,t,r,n=x("string")){let i=Ot(t,r,n);switch(e){case"=":return i===0;case"!=":case"<>":return i!==0;case">":return i>0;case"<":return i<0;case">=":return i>=0;case"<=":return i<=0}}function Ll(e,t){if(t==="least"&&e.includes(""))return"";let r=t==="greatest"?e.filter(o=>o!==""):[...e];if(r.length===0)return"";let n=r.every(o=>!Number.isNaN(Number(o))),i=(o,a)=>{if(n){let s=we(o),l=we(a),p=s!==null&&l!==null?Vn(s,l):Tf(Number(o),Number(a));if(p!==0)return p}return Rt(o,a)};return r.reduce((o,a)=>{let s=i(a,o);return t==="greatest"?s>0?a:o:s<0?a:o})}function ne(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(ie(e,t));let r=ne(e.left,t),n=ne(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 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 ie(e,t,r,n);case"CASE_WHEN":return Ne(e,t,r,n);case"CONCAT_OP":return ie({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 mt(e,t,r,n){switch(e.type){case"CASE_WHEN":return Ul(e,t,r,n);case"SCALAR_ARITH":{let i=mt(e.left,t,r,n),o=mt(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=mt(e.left,t,r,n),o=mt(e.right,t,r,n);return`${i??""}${o??""}`}default:return le(e,t,r,n)}}function si(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 Nf(e){return e>=55296&&e<=56319}function Cf(e){return e>=56320&&e<=57343}function ui(e,t){return t>0&&t<e.length&&Nf(e.charCodeAt(t-1))&&Cf(e.charCodeAt(t))}function _l(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 Vo(e,t){let r=Math.min(Math.max(0,t),e.length);return ui(e,r)&&(r-=1),e.slice(0,r)}function Of(e,t){let r=Math.max(0,e.length-t);return ui(e,r)&&(r+=1),e.slice(r)}function Lf(e,t,r){let n=_l(t,e.length),i=_l(r,e.length);return i<=n?"":(ui(e,n)&&(n+=1),ui(e,i)&&(i-=1),e.slice(n,Math.max(n,i)))}function _f(e,t){let r=e.repeat(Math.ceil(t/e.length));return Vo(r,t)}var Df=200,Vr=new Map;function vf(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 Go(e,t,r=!1){let n=vf(t)+(r?"g":""),i=`${e}\0${n}`,o=Vr.get(i);if(o!==void 0)return o.lastIndex=0,o;let a;try{a=new RegExp(e,n)}catch(s){let l=s instanceof Error?s.message:String(s);throw new Error(`ArgumentError: invalid regular expression: ${l}`)}if(Vr.size>=Df){let s=Vr.keys().next().value;s!==void 0&&Vr.delete(s)}return Vr.set(i,a),a}function Uf(e){if(e.includes("$`")||e.includes("$'"))throw new Error("ArgumentError: REGEXP_REPLACE replacement must not contain $` or $'.")}function kf(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 Mf(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 xf(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 Mf(r,o,u,l?s:void 0)})}function ie(e,t,r,n){let i=e.args.map(o=>Hf(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 Lf(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?"":Vo(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?"":Of(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 Vo(o,a);let s=i[2]??" ";if(s==="")return o;let l=_f(s,a-o.length);return e.func==="LPAD"?l+o:o+l}case"GREATEST":case"LEAST":return fe(e.func,i,2),Ll(i,e.func==="GREATEST"?"greatest":"least");case"CONCAT":return i.join("");case"REPLACE":{let o=i[0]??"",a=i[1]??"",s=i[2]??"";return a===""?o:o.split(a).join(s)}case"REGEXP_LIKE":return fe("REGEXP_LIKE",i,2,3),Go(i[1],i[2]??"").test(i[0])?"1":"0";case"REGEXP_REPLACE":{fe("REGEXP_REPLACE",i,3,5),Uf(i[2]);let o=kf(i[4]),a=Go(i[1],i[3]??"",!0);return o===0?i[0].replace(a,i[2]):xf(i[0],a,i[2],o)}case"REGEXP_SUBSTR":return fe("REGEXP_SUBSTR",i,2,3),Go(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 si("round",Number(i[0]??"0"),Number(i[1]??"0"));case"FLOOR":return si("floor",Number(i[0]??"0"),Number(i[1]??"0"));case"CEIL":return si("ceil",Number(i[0]??"0"),Number(i[1]??"0"));case"TRUNCATE":return fe("TRUNCATE",i,1,2),si("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 Vf(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),li(i[0])?String(Wo(i[0])+1):"";case"QUARTER":return fe(e.func,i,1,1),li(i[0])?String(Math.ceil(Number(i[0].slice(5,7))/3)):"";case"WEEK":return fe(e.func,i,1,1),li(i[0])?String(vl(i[0])):"";case"DATE_FORMAT":return Kf(i[0]??"",i[1]??"");case"DATEDIFF":return Bf(i[0]??"",i[1]??"");case"DATE_ADD":return $f(i[0]??"",Number(i[1]??"0"),(i[2]??"DAY").toUpperCase());case"LAST_DAY":return fe("LAST_DAY",i,1,1),Gf(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 Wr(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 ci(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 li(e){let t=e.slice(0,10);if(!/^\d{4}-\d{2}-\d{2}$/.test(t))return!1;let r=ci(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 Wo(e){return ci(e).getUTCDay()}function Dl(e){let t=ci(e),r=t.getUTCDay()||7;return t.setUTCDate(t.getUTCDate()+4-r),t}function Ff(e){return Dl(e).getUTCFullYear()}function vl(e){let t=Dl(e),r=t.getUTCFullYear(),n=ci(`${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 Kf(e,t){if(!e||e.length<10)return"";let{y:r,mo:n,d:i,h:o,mi:a,sec:s}=Wr(e),l=li(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(Wo(e)):"";case"%a":return l?["\u65E5","\u6708","\u706B","\u6C34","\u6728","\u91D1","\u571F"][Wo(e)]:"";case"%v":return l?String(vl(e)).padStart(2,"0"):"";case"%G":return l?String(Ff(e)).padStart(4,"0"):"";default:return p}})}function Bf(e,t){if(e.length<10||t.length<10)return"0";let r=Wr(e),n=Wr(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 $f(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}=Wr(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 Gf(e){if(!e||e.length<10)return e;let{y:t,mo:r}=Wr(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 Vf(e,t){if(/^-?\d+$/.test(t.trim()))return Wf(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 Wf(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 Hf(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 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 z(e,t,r,n,i){switch(e.type){case"BOOLEAN":return e.value;case"BINARY":return Yf(e,t,r,n,i);case"NULL_CHECK":return Qf(e,t);case"LOGICAL":return Zf(e,t,r,n,i);case"NOT":return!z(e.expr,t,r,n,i);case"GROUP":return z(e.expr,t,r,n,i);case"EXISTS":{let o=e.resolved;return e.not?!o:o}}}function Yf(e,t,r,n,i){if(e.op==="KLIKE"||e.op==="NOT_KLIKE"){if(n?.has(e))return!0;throw new Error("KLIKE / NOT KLIKE \u306F\u62BC\u3057\u4E0B\u3052\u6E08\u307F\u96C6\u5408\u306B\u542B\u307E\u308C\u306A\u3044\u305F\u3081 JavaScript \u5074\u3067\u306F\u8A55\u4FA1\u3067\u304D\u307E\u305B\u3093")}let o=Gl(e.left,t,r,i),a=e.left.type==="FIELD"?r?.(e.left):void 0,s=qf(e.left,a,i);return jf(e.op,o,e.right,t,a,r,s,i)}function jf(e,t,r,n,i,o,a=x("string"),s){if(e==="IN"||e==="NOT_IN"){let p=null;if(r.type==="IN_LIST"&&(Jf(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=Xf(t,p,i);return e==="IN"?u:!u}if(e==="LIKE"){let p=Ho(r,n,o);return $l(t,p)}if(e==="NOT_LIKE"){let p=Ho(r,n,o);return!$l(t,p)}if(e==="KLIKE"||e==="NOT_KLIKE")throw new Error("KLIKE / NOT KLIKE \u306F JavaScript \u5074\u3067\u306F\u8A55\u4FA1\u3067\u304D\u307E\u305B\u3093\uFF08SIMPLE SELECT \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059\uFF09");let l=Ho(r,n,o,s);return Lt(e,t,l,a)}var kl=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function qf(e,t,r){if(e.type==="FIELD")return r?.(e)??(t?X({fieldType:t}):x("string"));if(e.type==="ARITH_FIELD")return x("number");if(e.type==="FUNC_FIELD")return x(kl.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(kl.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 Ml=new Set(["CHECK_BOX","MULTI_SELECT"]),xl=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE"]),zf=new Set(["CREATOR","MODIFIER"]);function Xf(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=>Lt("=",e,a,o))}let i;if(Ml.has(r)||xl.has(r)||zf.has(r))try{i=JSON.parse(e)}catch{return n()}else return n();return Ml.has(r)?!Array.isArray(i)||!i.every(o=>typeof o=="string")?n():i.length===0&&t.has("")?!0:i.some(o=>t.has(o)):xl.has(r)?!Array.isArray(i)||!i.every(Fl)?n():i.length===0&&t.has("")?!0:i.some(o=>t.has(o.code)):Fl(i)?t.has(i.code):n()}function Fl(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&typeof e.code=="string"}function Jf(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 Qf(e,t){let r=Gl(e.field,t);return e.not?r!=="":r===""}function Zf(e,t,r,n,i){return e.op==="AND"?z(e.left,t,r,n,i)&&z(e.right,t,r,n,i):z(e.left,t,r,n,i)||z(e.right,t,r,n,i)}function Gl(e,t,r,n){if(e.type==="FUNC_FIELD")return ie(e.expr,t);if(e.type==="ARITH_FIELD")return String(ne(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 Ho(e,t,r,n){switch(e.type){case"VARIABLE":throw new Error(`ParseError: unresolved batch variable @${e.name}.`);case"VARIABLE_IN_LIST":throw new Error(`ParseError: unresolved batch array variable @${e.name}.`);case"STRING":return e.value;case"NUMBER":return W(e);case"KINTONE_FUNC":return eE(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"?ie(e.expr,t):String(ne(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(z(i.condition,t,r,void 0,n))return Bl(i.result,t,r,n);return e.elseResult!==null?Bl(e.elseResult,t,r,n):""}function Ul(e,t,r,n){for(let i of e.branches)if(z(i.condition,t,r,void 0,n))return Kl(i.result,t,r,n);return e.elseResult===null?null:Kl(e.elseResult,t,r,n)}function Kl(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"?ne(e,t):mt(e,t,r,n)}function Bl(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(ne(e,t)):String(le(e,t,r,n))}function eE(e){throw q(e)?new Error(`${e}: ${Pt}`):Qt(e)?new Error(`${e}: ${Xe}`):new Error(`InternalError: unexpected KINTONE_FUNC name: ${e}`)}var pi=new Map,tE=200;function $l(e,t){if(!nl(t))return e.includes(t);let r=pi.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"),pi.size>=tE&&pi.clear(),pi.set(t,r)}return r.test(e)}function Rr(e){return Wl(e)}function Vl(e){return Wl(e.flatMap(t=>t.rules.map(r=>r.condition)))}function Wl(e){let t=[],r=new Set,n=o=>{if(Array.isArray(o)){o.forEach(n);return}if(o===null||typeof o!="object")return;let a=o;if(a.type==="EXISTS"||a.type==="SUBQUERY_IN_LIST"||a.type==="SCALAR_SUBQUERY")throw 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 di(e,t,r){let n=[];return e.forEach((i,o)=>{for(let a of i.rules){if(!z(a.condition,t,r))continue;let s=le(a.message,t);n.push({groupIndex:o,message:s==null?"":String(s)});break}}),n}function jo(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 rE=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),nE=new Set(["CHECK_BOX","MULTI_SELECT"]);function Ei(e,t=new Map){let r=e.values.map(n=>iE(e.fields,n,t));return qr(r,100).map(n=>({app:e.appId,records:n}))}function iE(e,t,r){let n={};return e.forEach((i,o)=>{let a=t[o];a.type==="CASE_VALUE"?n[i]={value:yt(a.expr,{},r.get(i))}:n[i]={value:et(a,r.get(i))}}),n}function Yr(e){jo(e.where);let t=nu(e);return{app:e.appId,query:G(e.where),fields:["$id",...t],totalCount:!1}}function jr(e,t,r=new Map){let n=oE(e.assignments,r);return qr(t,100).map(i=>({app:e.appId,records:i.map(o=>({id:o,record:n}))}))}function oE(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 ql(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 Ri(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 qo(e){jo(e.where);let t=new Set;for(let{value:r}of e.assignments)r.type==="ARITH"?zl(r,t):r.type==="SCALAR_ARITH"||r.type==="CONCAT_OP"?mr(r,t):r.type==="STRING_FUNC"?zo(r,t):r.type==="CASE_VALUE"&&Xl(r.expr,t);return nu(e).forEach(r=>t.add(r)),{app:e.appId,query:G(e.where),fields:["$id",...t],totalCount:!1}}function zl(e,t){Hr(e.left,t),Hr(e.right,t)}function Hr(e,t){e.type==="FIELD_REF"?t.add(e.field):e.type==="ARITH"?zl(e,t):e.type==="STRING_FUNC"&&zo(e,t)}function zo(e,t){for(let r of e.args)aE(r,t)}function aE(e,t){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"){Yo(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"){zo(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"&&Xl(e,t)}function Yo(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&sE(e.arg,t);return}e.type==="AGG_ARITH"&&(Yo(e.left,t),Yo(e.right,t))}function sE(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?Hr(e,t):mr(e,t)}function Hl(e,t){if(e.type!=="ARRAY"){if(e.type==="FIELD_REF"||e.type==="ARITH"){Hr(e,t);return}mr(e,t)}}function Xl(e,t){for(let r of e.branches)fi(r.condition,t),Hl(r.result,t);e.elseResult!==null&&Hl(e.elseResult,t)}function fi(e,t){switch(e.type){case"BINARY":e.left.type==="FIELD"?t.add(e.left.field):e.left.type==="ARITH_FIELD"&&Hr(e.left.expr,t);break;case"NULL_CHECK":e.field.type==="FIELD"&&t.add(e.field.field);break;case"LOGICAL":fi(e.left,t),fi(e.right,t);break;case"NOT":case"GROUP":fi(e.expr,t);break;case"EXISTS":case"BOOLEAN":break}}function Xo(e,t,r=new Map){let n=t.map(i=>{let o=Number(i.$id.value),a=Jl(i),s={};for(let{field:l,value:p}of e.assignments)s[l]={value:Jo(p,a,r.get(l),i)};return{id:o,record:s}});return qr(n,100).map(i=>({app:e.appId,records:i}))}function Jo(e,t,r,n){if(e.type==="ARITH")return String(n?Zo(e,n):ne(e,t));if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP")return String(le(e,t));if(e.type==="STRING_FUNC")return ie(e,t);if(e.type==="CASE_VALUE")return yt(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 mi(e,t,r){if(e.type==="STRING")return e.value;if(e.type==="NUMBER")return W(e);if(e.type==="ARITH")return String(ne(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 lE=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);function Qo(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=Jl(i),l={};for(let{field:p,value:u}of e.assignments){let d=r.get(p);if(u.type==="SOURCE_FIELD"){if(lE.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(Zo(u,i))}:u.type==="SCALAR_ARITH"||u.type==="CONCAT_OP"?l[p]={value:String(le(u,s))}:u.type==="CASE_VALUE"?l[p]={value:yt(u.expr,s,d)}:l[p]={value:et(u,d)}}}return{id:a,record:l}});return qr(n,100).map(i=>({app:e.appId,records:i}))}function Jl(e){return Object.fromEntries(Object.entries(e).map(([t,r])=>[t,typeof r.value=="string"?r.value:JSON.stringify(r.value??"")]))}function Zo(e,t){let r=Yl(e.left,t),n=Yl(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 Yl(e,t){if(e.type==="NUMBER")return e.value;if(e.type==="ARITH")return Zo(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 Ql(e){return jo(e.where),{app:e.appId,query:G(e.where),fields:["$id"],totalCount:!1}}function Zl(e,t){return qr(t,100).map(r=>({app:e,ids:r}))}function eu(e){return rE.has(e??"")}function uE(e){return nE.has(e??"")}function cE(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 pE(e){return!e||/^\d{4}-\d{2}-\d{2}$/.test(e)?e:e.replace(/\//g,"-")}function tu(e,t){return eu(t)?e===""?[]:e.split(",").map(r=>({code:r.trim()})):uE(t)?e===""?[]:e.split(",").map(r=>r.trim()):t==="DATETIME"?cE(e):t==="DATE"?pE(e):e}function ru(e,t){return eu(t)?e.map(r=>({code:r})):e}function jl(e,t,r){return e.type==="ARRAY"?ru(e.elements.map(n=>n.value),r):e.type==="STRING"?tu(e.value,r):e.type==="STRING_FUNC"?ie(e,t):e.type==="FIELD_REF"||e.type==="ARITH"?String(ne(e,t)):String(le(e,t))}function nu(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 yt(e,t,r){for(let n of e.branches)if(z(n.condition,t))return jl(n.result,t,r);return e.elseResult!==null?jl(e.elseResult,t,r):""}function et(e,t){let r=ea(e,t);if(!r.ok)throw new j(r.message);return r.value}function ea(e,t){try{return{ok:!0,value:dE(e,t)}}catch(r){return{ok:!1,message:r instanceof Error?r.message:String(r)}}}function dE(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 tu(e.value,t);case"NUMBER":return W(e);case"ARRAY":return ru(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 qr(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 ta=new Set(["CHECK_BOX","MULTI_SELECT"]),fE=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function zr(e){throw new Error(`ArgumentError: ${e}`)}function iu(e,t,r){let n=EE(r.fieldType,e.field),i=RE(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)&&zr(`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=ta.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 EE(e,t){return ta.has(e)||fE.has(e)?e:zr(`APPLY multi-value target ${t} has unsupported type ${e}.`)}function RE(e,t,r){if(!Array.isArray(e))return zr(`APPLY snapshot for ${r} must be an array.`);let n=e.map((i,o)=>ta.has(t)?typeof i!="string"?zr(`APPLY snapshot for ${r} must contain string values (item ${o+1}).`):i:typeof i!="object"||i===null||typeof i.code!="string"?zr(`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 ia(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)ra(s.field,null,n),mE(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(Qs(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)ra(c.field,s.field,n,u),na(c.value,s.field,n,u);d.selector.kind==="WHERE"&&na(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),ra(f,s.field,n,u)}else d.kind==="REMOVE"&&d.selector.kind==="WHERE"&&na(d.selector.where,s.field,n,u)}return{targetTables:i,targetMultiValueFields:o,childrenByTable:a,fieldsByCode:n}}function mE(e,t){Xr(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 ra(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 na(e,t,r,n){Xr(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 yi(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)Xr(i.value,o=>{let a=r.fieldsByCode.get(o);!a?.inSubtable&&a?.fieldType!=="FILE"&&n.add(o)});return[...n]}function hi(e,t){let r={_rid:e.id??"",_idx:String(t)};for(let[n,i]of Object.entries(e.value??{}))r[n]=cu(i?.value);return r}function au(e){let{statement:t,snapshot:r,fieldInfos:n}=e,i=e.metadata??tt(t,n),o=sa(r.$id?.value,"APPLY snapshot $id"),a=ia(t);return o!==a&&V(`APPLY snapshot $id ${o} does not match requested $id ${a}.`),lu(t,r,i,o)}function su(e,t,r,n=tt(e,r)){let i=new Set;return t.map(o=>{let a=sa(o.$id?.value,"APPLY snapshot $id");return i.has(a)&&V(`APPLY snapshots contain duplicate parentId ${a}.`),i.add(a),lu(e,o,n,a)})}function lu(e,t,r,n){let i=sa(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(iu(u,t[u.field]?.value,C));continue}let d=r.childrenByTable.get(u.field),c=TE(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=[],h=new Set,g=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=oa(v,d,u.field);y.push({kind:"APPEND",addedRows:A.length}),m.push(...A);continue}if(v.kind==="REMOVE"){let A=gE(v,c,E,u.field);v.expectRows&&ou(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;g.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=hE(v,c,E,u.field);v.expectRows&&ou(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.`),g.add(A);let N=hi(P,A);for(let I of v.assignments){let U=`${P.id}\0${I.field}`;h.has(U)&&V(`APPLY patches cell ${P.id}.${I.field} more than once.`),h.add(U),R.push({rowIndex:A,field:I.field,value:mi(I.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 w=[...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:w};O?o.push({..._,payloadShape:"FULL_SURVIVORS",removedRowIds:c.flatMap((C,v)=>S.has(v)?[C.id]:[]),payloadRows:w.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=IE(t),l={};for(let u of e.assignments){let d=r.fieldsByCode.get(u.field)?.fieldType;l[u.field]={value:Jo(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 ou(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 gi(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 oa(e,t,r){return e.values.map(n=>({value:yE(e,n,t,r)}))}function yE(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?aa(a):s.type==="CASE_VALUE"?yt(s.expr,{},a.fieldType):et(s,a.fieldType)}}return o}function aa(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 hE(e,t,r,n){return uu(e.selector,t,r,n)}function gE(e,t,r,n){return uu(e.selector,t,r,n)}function uu(e,t,r,n){if(e.kind==="ALL_ROWS")return t.map((l,p)=>p);let i=e.where,o=t.flatMap((l,p)=>z(i,hi(l,p),r)?[p]:[]),a=AE(i);a!==null&&o.length===0&&V(`APPLY _rid ${a} does not exist in snapshot table ${n}.`);let s=SE(i);return s!==null&&o.length===0&&V(`APPLY _idx ${s} does not exist in snapshot table ${n}.`),o}function AE(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 SE(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 TE(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 sa(e,t){let r=Number(e);return(!Number.isSafeInteger(r)||r<=0)&&V(`${t} must be a positive integer.`),r}function IE(e){let t={};for(let[r,n]of Object.entries(e))t[r]=cu(n?.value);return t}function cu(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 Xr(e,t){if(Array.isArray(e)){e.forEach(n=>Xr(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))Xr(n,t)}function J(e){throw new Error(`ArgumentError: ${e}`)}function Si(e){let t=Number(e.$revision?.value);return!Number.isSafeInteger(t)||t<=0?J("APPLY snapshot $revision must be a positive integer."):t}function Jr(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),wE(i),t[i.table]={value:i.payloadRows};return{app:e.app,records:[{id:e.parentId,revision:e.revision,record:t}]}}function pu(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 wE(e){let t=la(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(la(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??"");Ai(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??"");Ai(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=la(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));Ai(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??"");Ai(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)=>!ua(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 la(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 Ai(e,t,r){(e.length!==t.length||e.some((n,i)=>n!==t[i]))&&J(r)}function ua(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)=>ua(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)&&ua(r[a],n[a]))}function du(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 fu(e){let t=e.numberPrecision;if(t==null||typeof t!="object")throw new Error("SettingsError: numberPrecision is missing from app settings.");let r=du(t.digits,"digits",1,30),n=du(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 Eu(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 bE=new Set(["CHECK_BOX","MULTI_SELECT"]),PE=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT"]);function Ae(e,t,r){if(t.fieldType==="DATE"||t.fieldType==="TIME"||t.fieldType==="DATETIME"){let i=NE(e);if(i!==""&&!CE(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:OE(t.fieldType),message:o}}if(t.required&&Ti(n))return{ok:!1,code:"ERR_REQUIRED",message:`${t.code} \u306F\u5FC5\u9808\u3067\u3059`};if(!Ti(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&&Wn(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&&Wn(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}=Eu(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(!Ti(n)&&(t.fieldType==="DATE"||t.fieldType==="TIME"||t.fieldType==="DATETIME")&&!_t(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!Ti(n)&&PE.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 NE(e){return e==null?"":Ii(e)&&e.type==="NUMBER"?W(e):Ii(e)&&e.type==="STRING"?e.value:typeof e=="string"||typeof e=="number"?String(e):""}function CE(e,t){if(t==="DATE")return _t(e.replace(/\//g,"-"),"DATE");if(t==="TIME")return _t(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)?_t(r.slice(0,10),"DATE")&&_t(r.slice(11),"TIME"):_t(r,"DATETIME")}function Qr(e,t){if(Ii(e)){let n=ea(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(bE.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 Ii(e){return typeof e=="object"&&e!==null&&typeof e.type=="string"}function Dt(e){if(e==null||e==="")return!0;if(Array.isArray(e))return e.length===0;if(Ii(e)){if(e.type==="STRING")return e.value==="";if(e.type==="ARRAY")return e.elements.length===0}return!1}function Ti(e){return e===""||Array.isArray(e)&&e.length===0}function OE(e){return e==="NUMBER"?"ERR_TYPE_NUMBER":"ERR_TYPE_DATE"}function _t(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)&&_t(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 ca(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 pa(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&&ca(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 w of n){if(!m.payload.has(w))continue;let _=m.payload.get(w),C=d.get(w).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=Ae(_,d.get(w),a);k.ok?m.record[w]={value:v?_:k.value}:h.push({field:w,code:k.code,message:k.message})}if(l&&m.mode==="create")for(let w of i){if(w.inSubtable||m.payload.has(w.code))continue;if(Dt(w.defaultValue)){let C=Ae("",w,a);C.ok?w.required&&h.push({field:w.code,code:"ERR_REQUIRED",message:`${w.code} \u306F\u5FC5\u9808\u3067\u3059`}):h.push({field:w.code,code:C.code,message:C.message})}else{let C=Ae(w.defaultValue,w,a);C.ok||h.push({field:w.code,code:C.code,message:`\u65E2\u5B9A\u5024: ${C.message}`})}}if(s.length>0){let w=m.evaluationRow??Object.fromEntries([...m.payload].map(([v,k])=>[v,Ke(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 di(s,w,C))g.push({field:"",code:"ERR_CHECK",message:v.message})}catch(v){R??(R=v)}}let O=w=>w.map(_=>{let C={};for(let v of r)C[v]=Ke(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(h),checkErrors:O(g)};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 Ke(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 da(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 LE(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 _E(e){return e.fieldType==="NUMBER"||LE(e)}function wi(e,t,r){return{subtable:e,subrow:t+1,subrowId:String(r.id??"")}}function fa(e,t){let{topByCode:r,childrenByTable:n}=da(t),i=_E;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 Dt(e)?"":Ke(Qr(e,t))}var DE=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]),en=yr;function Be(e,t=["$id"]){let r=da(e),n=r.topLevel.filter(o=>o.fieldType!=="SUBTABLE"&&o.fieldType!=="FILE"&&!DE.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 vt(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 Ut(e,t,r,n,i=1,o="UPDATE"){let a=vE(e),s=[],l=new Set,p=[...t.payloadFields,...en],u=Ke(e.$id?.value),d=(c,f,E,R)=>{l.add(i);let m={};for(let y of t.payloadFields)m[y]=y==="$id"?u:Ke(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=Ae(f,c,r);E.ok?a[c.code]={value:Ru(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=Ae(S,g,r);O.ok?(h.value??(h.value={}),h.value[g.code]={value:Ru(S,g.fieldType,O.value)}):d(g,S,O,wi(c,m,y))}}}return{normalizedRecord:a,errors:s,columns:p,invalidRows:l.size,invalidRowNumbers:l,errorCount:s.length}}function Ru(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 vE(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 bi(e){let{statement:t,snapshots:r,fieldInfos:n,metadata:i,dmlMaxRows:o,dmlMaxSubtableRows:a,statementNumber:s=1}=e;mu(o,"dmlMaxRows"),mu(a,"dmlMaxSubtableRows");for(let g of r)Si(g);let l=su(t,r,n,i),p=Be(n,t.assignments.map(g=>g.field)),u=l.some(g=>vt(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)=>Ut(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)=>gi(g,c[S].normalizedRecord)),y=m.flatMap(g=>Jr(g).records),h=c.map(g=>({errors:g.errors,columns:g.columns,invalidRows:g.invalidRows,errorCount:g.errorCount}));return yu({plans:m,records:y,validations:h,guards:{revisionRequired:!0,parentRows:f,dmlMaxRows:o,subtableRows:E,dmlMaxSubtableRows:a,wouldExceed:R}})}function mu(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function yu(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))yu(r,t);return Object.freeze(e)}var Ea=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function Pi(e,t){if(new Set(e.fields).size!==e.fields.length)return $e("DML target fields contain duplicates.");let r=new Map(t.map(o=>[o.code,o]));for(let o of e.fields)hu(o,null,r);let n=new Map,i=new Map;for(let o of e.applyBlocks??[]){if(n.has(o.field))return $e(`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 $e(`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 $e(`APPLY INSERT supports APPEND only (${l.kind}).`);let p=new Set;for(let u of l.fields){if(p.has(u))return $e(`APPLY APPEND specifies child ${u} more than once.`);p.add(u),hu(u,o.field,r,s)}for(let u of l.values)if(u.length!==l.fields.length)return $e(`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 UE(e,t,r=Pi(e,t),n){let i=new Map(t.map(s=>[s.code,s.fieldType])),o=Ei(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=>oa(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||Ea.has(d.fieldType)||(p[d.code]=s[d.code]??{value:aa(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 tn(e){let{statement:t,fieldInfos:r,dmlMaxRows:n,dmlMaxSubtableRows:i,statementNumber:o=1}=e;gu(n,"dmlMaxRows"),gu(i,"dmlMaxSubtableRows");let a=e.metadata??Pi(t,r),s=UE(t,r,a,e.parentRowNumbers),l=r.filter(S=>S.fieldType==="SUBTABLE"||S.fieldType!=="FILE"&&S.writable!==!1&&!Ea.has(S.fieldType)),p=Be(l,t.fields),u=s.some(S=>vt(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=>Ut(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 w of t.fields)L[w]=b[w];for(let w of S.tables){let _=b[w.table]?.value;L[w.table]={value:w.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),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 Au({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 hu(e,t,r,n){if(e.startsWith("_")||e.startsWith("$"))return $e(`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?$e(`APPLY child ${e} does not belong to subtable ${t}.`):$e(`APPLY ${t===null?"parent field":"child"} ${e} does not exist.`)}if(i.fieldType==="SUBTABLE"||i.fieldType==="FILE"||i.writable===!1||Ea.has(i.fieldType))return $e(`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 $e(e){throw new Error(`ArgumentError: ${e}`)}function Au(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))Au(r,t);return Object.freeze(e)}async function Tu(e){let{statement:t,matches:r,fieldInfos:n,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a=1}=e;Su(i,"dmlMaxRows"),Su(o,"dmlMaxSubtableRows"),KE(t,r);let s=r.filter(y=>y.targetId===void 0),l=r.filter(y=>y.targetId!==void 0),p=kE(t,s.map(y=>y.sourceRowIndex)),u=await tn({statement:p,fieldInfos:n,metadata:Pi(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)&&Ra(`UPSERT APPLY resolves more than one source row to parent $id ${h}.`),c.add(h),y.snapshot||Ra(`UPSERT APPLY snapshot for parent $id ${h} is missing.`);let g=Number(y.snapshot.$id?.value);g!==h&&Ra(`UPSERT APPLY snapshot $id ${g} does not match target $id ${h}.`);let S=ME(t,y.sourceRowIndex,h),O=S.applyBlocks?.length?tt(S,n):xE(n);d.push(await bi({statement:S,snapshots:[y.snapshot],fieldInfos:n,metadata:O,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a,parentRowNumbers:[y.sourceRowIndex+1],loadNumberPrecision:e.loadNumberPrecision}))}let f=FE(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 ma({create:u,update:f,createBatches:u.batches,updateBatches:BE(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 kE(e,t){return{type:"INSERT",appId:e.appId,fields:[...e.fields],values:t.map(r=>e.values[r]),applyBlocks:e.onInsertApplyBlocks??[],validateOnly:!0}}function ME(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 xE(e){return{targetTables:new Map,targetMultiValueFields:new Map,childrenByTable:new Map,fieldsByCode:new Map(e.map(t=>[t.code,t]))}}function FE(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 ma({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 KE(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 BE(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 Su(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function Ra(e){throw new Error(`ArgumentError: ${e}`)}function ma(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))ma(r,t);return Object.freeze(e)}function nn(e){return hr("UPDATE",[bu(e)])}function ya(e){return hr("INSERT",[wu(e)])}function ha(e){return hr("UPSERT",[wu(e.create),bu(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 Ci(e,t,r){return e.type==="UPDATE"?hr("UPDATE",[Ni("update",e.applyBlocks??[],null,!0,t,r)]):e.type==="INSERT"?hr("INSERT",[Ni("insert",e.applyBlocks??[],e.values.length,!1,t,r)]):hr("UPSERT",[Ni("insert",e.onInsertApplyBlocks??[],null,!1,t,r),Ni("update",e.onUpdateApplyBlocks??[],null,!0,t,r)])}function hr(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 bu(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:Iu(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:Iu(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 Iu(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:rn(i.count,r.count),...r.matchedRows!==void 0?{matchedRows:rn(i.matchedRows,r.matchedRows)}:{},...r.changedRows!==void 0?{changedRows:rn(i.changedRows,r.changedRows)}:{},...r.addedRows!==void 0?{addedRows:rn(i.addedRows,r.addedRows)}:{},...r.removedRows!==void 0?{removedRows:rn(i.removedRows,r.removedRows)}:{}}}):t.map(r=>({...r}))}function rn(e,t){return e==null||t===null?null:e+t}function Ni(e,t,r,n,i,o){let a=t.map(u=>{let d=u.operations.map(f=>$E(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 $E(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 Pu(e,t,r){ir("phase10c");let n=pu(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 Nu(e,t,r){ir("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 Cu(e,t,r){ir("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 Ou(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 Ge(e){if(e===null)return!1;switch(e.type){case"BINARY":return Oi(e.left);case"NULL_CHECK":return Oi(e.field);case"LOGICAL":return Ge(e.left)||Ge(e.right);case"NOT":case"GROUP":return Ge(e.expr);case"EXISTS":case"BOOLEAN":return!1}}function Oi(e){if(Array.isArray(e))return e.some(Oi);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(Oi)}async function ve(e,t,r,n,i){let o=await me(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 Li(e,t,r,n){let{records:i,metrics:o}=await ve(e,t,r,["$id"],n);return{ids:vs(i),metrics:o}}function Aa(e,t){let r=Br(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 GE(e,t){return e.key.type==="FIELD_NAME"?t.get(e.key.name):void 0}function VE(e,t){return e.columns.some(r=>"alias"in r&&r.alias===t)}function on(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=GE(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"&&!VE(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 WE=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 HE(e,t){return e.columns.some(r=>"alias"in r&&r.alias===t)}function an(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(HE(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}WE.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 _i=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"}},Di=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}},vi=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 Lu(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 vi(a).message}}return{records:r,cleanupWarning:o}}function Sa(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 _u=["$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 Du(e){return e.startsWith("_")||e.startsWith("$")}var YE=/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/;function Ia(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(Ia);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"?YE.test(t.field):Object.values(t).some(Ia)}function jE(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 Gr(e)||Ia(e)?"AGGREGATE_DEPENDENT":"SAFE"}}var qE=["_pid","_rid","_idx"];function Ta(e){return[...new Set(e)]}function zE(e){switch(e.kind){case"APP":return Ta([...e.fieldCodes,..._u]);case"SUBTABLE":return Ta([...e.childFieldCodes,...qE,...e.parentFieldCodes.map(t=>`_p.${t}`)]);case"MATERIALIZED":return Ta(e.columns)}}function vu(e,t){return[e.from,...e.joins.map(n=>n.table)].map((n,i)=>({sourceIndex:i,qualifier:n.alias??n.cteName,columns:zE(t(n,i))}))}function XE(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 JE(e,t){return e.qualifier===null?t:`${e.qualifier}.${t}`}function QE(e){return"alias"in e&&typeof e.alias=="string"?e.alias:null}function ZE(e,t,r){let n=XE(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:JE(l,n.fieldCode)}}if(n.qualifier!==null)return{kind:"UNKNOWN",name:e};let a=t.flatMap((l,p)=>QE(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=jE(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&&ye(l.func,l.distinct,l.arg)===e)?{kind:"ALIAS_REJECT",reason:"AGGREGATE"}:{kind:"UNKNOWN",name:e}}function Uu(e,t,r){return{items:e.map(n=>n.type==="FIELD_NAME"?ZE(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 eR(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(ku(e,a,n.leftColumns),ku(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 ku(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 tR(e,t,r,n,i){return t===null?e:e.filter(o=>z(t,o,r,n,i))}function Gu(e){return e.some(t=>t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"||t.type==="STRFUNC_COL"&&sn(t.expr)||t.type==="SCALAR_VALUE_COL"&&ht(t.expr))}function rR(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)=>iR(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&&Gu(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[Oa(u.expr)]=String(ne(u.expr,l[0])):u.type==="FUNC_KEY"&&(p[gt(u.expr)]=ie(u.expr,l[0]));Vu(p,l,r,n),s.push(p)}return s}function nR(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=Mu(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,Mu(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)}Vu(f,c,r,n),Al(f,d),o.push(f)}}return o}function Mu(e,t){return t?t[e.directKey]??(e.unqualifiedBridgeKey===null?void 0:t[e.unqualifiedBridgeKey])??"":""}function Vu(e,t,r,n){for(let i of r)if(i.type==="AGGREGATE"){let o=ye(i.func,i.distinct,i.arg),a=String(ba(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??gr(i.expr);e[o]=String(Ui(i.expr,t,n))}else if(i.type==="STRFUNC_COL"&&sn(i.expr)){let o=i.alias??gt(i.expr),a=La(i.expr,t,n);e[o]=ie(a,e)}else if(i.type==="SCALAR_VALUE_COL"&&ht(i.expr)){let o=i.alias??Ve(i.expr),a=Mi(i.expr,t,n);e[o]=String(le(a,e))}}function iR(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=ki(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"?ie(e.expr,t):String(ne(e.expr,t))}function ba(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=ne(r,f);if(isNaN(R))continue;E=String(R)}else{let R=mt(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"?Wu(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 h=Ot(m,E,d);(h<0||h===0&&Rt(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=Ot(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 oR(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 Ui(e,t,r){if(e.type==="NUMBER")return e.value;if(e.type==="AGG_REF")return Number(ba(e.func,e.distinct,e.arg,e.separator,t,r));let n=Ui(e.left,t,r),i=Ui(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 gr(e){return _r(e)}function Wu(e,t){if(e.type==="FIELD_REF")return t?.(oR(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=>Wu(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 aR(e,t,r,n){return t===null?e:e.filter(i=>z(t,i,r,void 0,n))}function sR(e,t,r,n,i){if(e.length===0)return e;let o=lR(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 lR(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(fR(t,a,o))}function Pa(e,t,r,n,i,o){return t.length===0?e:Hu(e,t,r,n,i,o).rows.map(a=>a.row)}function Hu(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(Yu.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:pR(u,p,o)}))})),l=(p,u)=>uR(p,u,t,a);return s.sort(l),{rows:s,compare:l}}function uR(e,t,r,n){for(let i=0;i<r.length;i++){let o=cR(e.keys[i],t.keys[i],n[i]);if(o!==0)return r[i].direction==="ASC"?o:-o}return 0}function cR(e,t,r){return Ot(e.s,t.s,r.semantics)}var Yu=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function pR(e,t,r){switch(e.type){case"FIELD_NAME":return r?.(e.name,t)??t[e.name]??"";case"ARITH_KEY":return String(ne(e.expr,t));case"FUNC_KEY":return ie(e.expr,t);case"GROUPING_KEY":return fr(e.ref,t)}}function Na(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=ye(a.func,a.distinct,a.arg);i.set(s,p=>p[s]??p[l]??"0");break}case"ARITH_AGG_COL":{let l=gr(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(ne(a.expr,l)));break;case"STRFUNC_COL":{let l=gt(a.expr);i.set(s,p=>sn(a.expr)?p[s]??p[l]??ie(a.expr,p,r,n):ie(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=Ve(a.expr);i.set(s,p=>ht(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=>fr(a.ref,l));break;case"VARIABLE_COL":break}}return(o,a)=>i.get(o)?.(a)}function Ca(e,t,r,n,i){let o=t.filter(a=>a.type==="WINDOW_COL");if(e.length===0||o.length===0)return e;for(let a of o){let s=new Map;for(let l of e){let p=JSON.stringify(a.partitionBy.map(d=>dR(l,d))),u=s.get(p);u?u.push(l):s.set(p,[l])}for(let l of s.values()){let p=Hu(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 dR(e,t){let r=t.tableAlias?`${t.tableAlias}.${t.field}`:t.field;return Ze(e,r)}function xi(e,t,r){let n=r??0;return t===null?e.slice(n):e.slice(n,n+t)}function ki(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=ye(e.func,e.distinct,e.arg);return t[e.alias??i]??t[i]??"0"}case"ARITH_AGG_COL":{let i=e.alias??gr(e.expr);return t[i]??"0"}case"ARITH_COL":return String(ne(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=gt(e.expr);return sn(e.expr)?t[e.alias??i]??t[i]??ie(e.expr,t,n.resolveFieldType,n.resolveFieldSemantics):ie(e.expr,t,n.resolveFieldType,n.resolveFieldSemantics)}case"SCALAR_VALUE_COL":{let i=Ve(e.expr);return ht(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 fR(e,t,r={}){return e.map((n,i)=>{let o=ki(n,t,i,r);return typeof o=="string"?o:o.entries.map(([,a])=>a)})}function Fi(e,t,r,n,i,o,a){if(t.length===1&&t[0].type==="WILDCARD"){let c=e.map(E=>{let R=Bu(Fu(E),a),m=ki(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=mR(t),l=t.some(c=>c.type==="WILDCARD"||c.type==="PARENT_WILDCARD"),p=l?null:ER(t,s),u=p??[];return l&&e.length===0?{rows:[],columns:RR(t,s)}:{rows:e.map((c,f)=>{let E={},R={scalarCache:r,resolveFieldType:n,resolveFieldSemantics:o,wildcardKeys:Object.keys(Bu(Fu(c),a)),parentWildcardKeys:Object.keys(c).filter(m=>m.startsWith("_p.")).sort()};for(let[m,y]of t.entries()){let h=ki(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=ye(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??gr(y.expr);E[g]=h,p===null&&f===0&&u.push(g);break}case"ARITH_COL":{let g=p?.[m]??y.alias??Oa(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??gt(y.expr);E[g]=h,p===null&&f===0&&u.push(g);break}case"SCALAR_VALUE_COL":{let g=p?.[m]??y.alias??Ve(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 ER(e,t){return e.map((r,n)=>ju(r,n,t))}function RR(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=ju(o,i,t);n.has(a)||(n.add(a),r.push(a))}return r}function ju(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??ye(e.func,e.distinct,e.arg);case"ARITH_AGG_COL":return e.alias??gr(e.expr);case"ARITH_COL":return e.alias??Oa(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??Ve(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 mR(e){let t=new Map;for(let n of e){if(n.type!=="FIELD"||n.alias)continue;let i=xu(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=xu(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 xu(e){if(e.startsWith("_p."))return e;let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function Fu(e){let t={};for(let[r,n]of Object.entries(e))r.startsWith("_p.")||(t[r]=n);return t}function Oa(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"?gr(r):Ve(r));return`${e.func}(${t.join(",")})`}function Ve(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`${Ve(e.left)}${e.op}${Ve(e.right)}`;case"CONCAT_OP":return`${Ve(e.left)}||${Ve(e.right)}`}}function yR(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:ht(e)}function ht(e){return e.type==="STRING_FUNC"?sn(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?ht(e.left)||ht(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>Ku(t.result))||e.elseResult!==null&&Ku(e.elseResult):!1}function Ku(e){return e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?!1:ht(e)}function sn(e){return e.args.some(t=>yR(t))}function hR(e,t,r){if(e.type==="AGG_REF"){let n=ba(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=Ui(e,t,r);return{type:"NUMBER",value:n,raw:String(n)}}return e.type==="STRING_FUNC"?La(e,t,r):Mi(e,t,r)}function Mi(e,t,r){return e.type==="STRING_FUNC"?La(e,t,r):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?{...e,left:Mi(e.left,t,r),right:Mi(e.right,t,r)}:e}function La(e,t,r){return{type:"STRING_FUNC",func:e.func,args:e.args.map(n=>hR(n,t,r))}}function Bu(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 $u(e,t){if(e!==void 0)return t?e.flatMap(r=>[`${t}.${r}`,r]):[...e]}function wa(e,t,r){if(!(e===void 0&&t===void 0&&r.length===0))return[...new Set([...e??[],...t??[],...Object.keys(r[0]??{})])]}function gR(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(Yu.has(r.expr.func)?"number":"string")));return t}function _a(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=gR(t.columns);for(let[_,C]of a??[])h.set(_,C);let g=[],S=t.from.alias;g=(r.get(S)??r.get(null)??[]).map(_=>nt(_,S));let b=wa($u(E?.get(S),S),void 0,g);for(let _ of t.joins){let C=_.table.alias,k=(r.get(C)??[]).map(P=>nt(P,C)),A=wa($u(E?.get(C),C),void 0,k);g=eR(g,k,_,{leftColumns:b,rightColumns:A}),b=wa(b,A,g)}let L=e.residualWhere!==void 0?e.residualWhere:t.where;g=tR(g,L,s,c,l);let w=Z(t);if(w.type==="GROUPING_SETS"){if(!m)throw new Error("internal error: B65 grouping sets require a metadata-resolved grouping spec.");g=nR(g,m,t.columns,d,{maxGeneratedRows:5e4})}else(w.type==="PLAIN"||Gu(t.columns))&&(g=rR(g,w.type==="PLAIN"?w.allItems:[],t.columns,d,w.type==="PLAIN"?y:void 0,{scalarCache:n,resolveFieldType:s,resolveFieldSemantics:l}));return g=aR(g,t.having,p,u),g=Ca(g,t.columns,i,o,h),t.distinct&&(g=sR(g,t.columns,n,s,l)),g=Pa(g,t.orderBy,i,o,h,Na(t.columns,n,s,l)),g=xi(g,t.limit,t.offset),Fi(g,t.columns,n,s,f,l,R)}function qu(e,t){let r=[];for(let n of e){let i=Da(n.$id?.value),o=AR(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=Da(u?.value);l[`_p.${p}`]={value:d}}for(let[p,u]of Object.entries(s.value??{}))l[p]={value:Da(u?.value)};r.push(l)}}return r}function AR(e){return Array.isArray(e)?e.filter(t=>!!t&&typeof t=="object"):[]}function Da(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 zu(e){return["$id",...new Set([...e.topLevel.map(t=>t.code).filter(t=>t!=="$id"&&t!=="$revision"),...e.subtables.keys()])]}function Xu(e,t){let r=ln(e);for(let[n,i]of Object.entries(t))r[n]=ln(i);return r}function Ju(e){let t=[...e.preErrors.map(i=>va(i)),...e.postImageErrors.map(i=>va(i,i.$err_subtable!=="")),...e.checkErrors.map(i=>va(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]=ln(e.normalizedPostImage[i])}return{errors:t,invalidRows:r.size,invalidRowNumbers:r,writeRecord:n}}function va(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 ln(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(ln(a,t));return o}let i={};t.set(r,i);for(let[o,a]of Object.entries(e))i[o]=ln(a,t);return i}var Oe=["=","!=",">","<",">=","<="],SR=new Set(["DATE","DATETIME","CREATED_TIME","UPDATED_TIME"]),TR=new Set(Oe),IR=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"])]]),wR=new Map([["TODAY",new Set(Oe)],["NOW",new Set(Oe)],["LOGINUSER",new Set(["in","not in"])]]),bR=["=","!=","in","not in"],PR=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(bR)]]),NR=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"])]]),ec=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"]),tc=new Set(["CHECK_BOX","MULTI_SELECT","FILE","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE","CATEGORY"]);function CR(e){return PR.get(e)??new Set}function We(e,t){return e===null?{capability:"EXACT_PUSHDOWN",reasons:[{code:"WHERE_EXACT"}]}:cn(e,t)}function cn(e,t){switch(e.type){case"BOOLEAN":return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]};case"BINARY":return OR(e.op,e.left,e.right,t);case"NULL_CHECK":return e.field.type!=="FIELD"?Ua():DR(e.field,e.not?"IS NOT NULL":"IS NULL",t);case"EXISTS":return Ua();case"GROUP":return cn(e.expr,t);case"NOT":{let r=cn(e.expr,t);return r.capability!=="SUPERSET_PREFILTER"?r:nc(r.reasons)?dn({capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"},...r.reasons]}):{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]}}case"LOGICAL":{let r=cn(e.left,t),n=cn(e.right,t);return UR(e.op,r,n)}}}function OR(e,t,r,n){if(r.type==="KINTONE_FUNC"&&q(r.name))return LR(e,t,r,n);if(r.type==="KINTONE_FUNC"&&Qu(r))return Zu(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?Zu(e,t,u[0],n):Ki("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED",u[0].name,t.type==="FIELD"?t.field:void 0,t.type==="FIELD"?n(t)?.fieldType:void 0,pn(e))}if(t.type!=="FIELD")return Ua();let i=n(t);if(!i)return Ar("WHERE_FIELD_UNRESOLVED",t.field,void 0,pn(e));let o=pn(e);if(!rc(i.fieldType,o))return Ar("WHERE_OPERATOR_INVALID_FOR_FIELD_TYPE",t.field,i.fieldType,o);if(!vR(i.fieldType,e))return Ar("WHERE_OPERATOR_UNSUPPORTED",t.field,i.fieldType,o);let a=CR(i.fieldType),s=r.type==="STRING"||r.type==="NUMBER"||r.type==="IN_LIST"||Qu(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 Qu(e){return e.type==="KINTONE_FUNC"&&bt.has(e.name)}function Zu(e,t,r,n){let i=pn(e),o=r.name;if(!bt.has(o)||t.type!=="FIELD")return Ki("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED",o,void 0,void 0,i);let a=n(t),s=IR.get(o);return!a||!s.has(a.fieldType)||a.inSubtable||a.requiresCollectionOperators?Ki("WHERE_KINTONE_FUNCTION_FIELD_TYPE_UNSUPPORTED",o,t.field,a?.fieldType,i):wR.get(o).has(i)?{capability:"EXACT_PUSHDOWN",reasons:[{code:"WHERE_EXACT",functionName:o,field:t.field,fieldType:a.fieldType,operator:i}]}:Ki("WHERE_KINTONE_FUNCTION_OPERATOR_UNSUPPORTED",o,t.field,a.fieldType,i)}function LR(e,t,r,n){let i=pn(e),o=r.name;if(t.type!=="FIELD")return un("WHERE_RELATIVE_DATE_CONTEXT_UNSUPPORTED",o,void 0,void 0,i);let a=n(t);return a?_R(r)?TR.has(i)?!SR.has(a.fieldType)||a.inSubtable||a.requiresCollectionOperators?un("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}]}:un("WHERE_RELATIVE_DATE_OPERATOR_UNSUPPORTED",o,t.field,a.fieldType,i):un("WHERE_RELATIVE_DATE_ARGUMENT_INVALID",o,t.field,a.fieldType,i):un("WHERE_RELATIVE_DATE_FIELD_TYPE_UNSUPPORTED",o,t.field,void 0,i)}function _R(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 DR(e,t,r){let n=r(e);return n?rc(n.fieldType,t)?!ec.has(n.fieldType)&&!tc.has(n.fieldType)?Ar("WHERE_OPERATOR_UNSUPPORTED",e.field,n.fieldType,t):{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_RESIDUAL",field:e.field,fieldType:n.fieldType,operator:t}]}:Ar("WHERE_OPERATOR_INVALID_FOR_FIELD_TYPE",e.field,n.fieldType,t):Ar("WHERE_FIELD_UNRESOLVED",e.field,void 0,t)}function rc(e,t){let r=NR.get(e);return r===void 0||r.has(t)}function vR(e,t){return ec.has(e)?!0:tc.has(e)?t==="="||t==="!="||t==="<>"||t==="IN"||t==="NOT_IN"||t==="LIKE"||t==="NOT_LIKE"||t==="KLIKE"||t==="NOT_KLIKE":!1}function pn(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 UR(e,t,r){let n=[...t.reasons,...r.reasons];return t.capability==="UNSUPPORTED"||r.capability==="UNSUPPORTED"?dn({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")?dn({capability:"SUPERSET_PREFILTER",reasons:[{code:"WHERE_SUPERSET_PREFILTER"},...n]}):dn({capability:"LOCAL_ONLY",reasons:n})}function Ua(){return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]}}function Ar(e,t,r,n){return{capability:"UNSUPPORTED",reasons:[{code:e,field:t,fieldType:r,operator:n}]}}function Ki(e,t,r,n,i){return dn({capability:"UNSUPPORTED",reasons:[{code:e,functionName:t,field:r,fieldType:n,operator:i}]})}function un(e,t,r,n,i){return ic({capability:"UNSUPPORTED",reasons:[{code:e,functionName:t,field:r,fieldType:n,operator:i}]})}function nc(e){return e.some(t=>t.code.startsWith("WHERE_RELATIVE_DATE_")||t.functionName!==void 0&&q(t.functionName))}function kR(e){return e.some(t=>t.code.startsWith("WHERE_KINTONE_FUNCTION_")||t.functionName!==void 0&&bt.has(t.functionName))}function ic(e){if(e.capability==="EXACT_PUSHDOWN"||!nc(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&&q(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 MR(e){if(e.capability==="EXACT_PUSHDOWN"||!kR(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&&bt.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 dn(e){return MR(ic(e))}function Bi(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=kt(t.where);if(l.length===0||!KR(l,a)||o===null||!oc(o,l))return null;let p={prefilterWhere:t.where,residualWhere:null,exactRelativeLeaves:FR(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 xR(u,e,l),u}function xR(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(!oc(e.serializedWholeWhere,r))throw new Error("FULL_SCAN_EXACT invariant: relative occurrence serialization")}function kt(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"&&De(i.name)){t.push(i.name);return}Object.values(i).forEach(r)}};return r(e),t}function FR(e){let t=[],r=n=>{switch(n.type){case"BINARY":(n.right.type==="KINTONE_FUNC"&&De(n.right.name)||n.right.type==="IN_LIST"&&n.right.values.length===1&&n.right.values[0].type==="KINTONE_FUNC"&&De(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 KR(e,t){return e.length===t.length&&e.every((r,n)=>r===t[n])}function oc(e,t){let r=new Map;for(let n of t){if(!De(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 sc(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"&&De(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 Ma(e){return sc(e,!0)}function $i(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 Ue(e,t,r,n,i=!0,o=!0,a=n){let s=Ma(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:kt(e.where)}),$i(e,e).forEach((l,p)=>Ue(l,`${t}.select-source[${p}]`,r,a,a?!1:i,a?!1:o,a))}function fn(e,t,r,n,i=!0){e.left.type==="UNION"?fn(e.left,`${t}.left`,r,n,i):Ue(e.left,`${t}.left`,r,n,!0,i),Ue(e.right,`${t}.right`,r,n,!0,i)}function ac(e,t,r,n){if(!n&&dt(e)){Ue(ft(e),`${t}.inlined`,r,!1,!0,!0);return}e.ctes.forEach((i,o)=>{i.query.type==="SELECT"?Ue(i.query,`${t}.cte[${o}]`,r,n,!1,!n,!0):i.query.type==="UNION"&&fn(i.query,`${t}.cte[${o}]`,r,!0,!1)}),e.query.type==="SELECT"?Ue(e.query,`${t}.main`,r,n,!1,!n,!0):fn(e.query,`${t}.main`,r,!0,!1)}function lc(e,t,r,n=!1){switch(e.type){case"SELECT":Ue(e,t,r,n);return;case"UNION":fn(e,t,r,n);return;case"WITH":ac(e,t,r,n);return;case"CREATE_TEMP_TABLE":e.query.type==="WITH"?ac(e.query,`${t}.query`,r,!1):e.query.type==="UNION"?fn(e.query,`${t}.query`,r,!0,!1):Ue(e.query,`${t}.query`,r,!1,!1,!0,!0);return;case"EXPLAIN":lc(e.query,`${t}.query`,r,n);return;case"VALIDATE":case"REORDER":{let i=Ma(e.where);i.length>0&&r.push({kind:"FORBIDDEN",source:e,where:e.where,functionNames:i,path:t,allowFullScanExact:!1,relativeFunctionOccurrences:kt(e.where)}),$i(e,e).forEach((o,a)=>Ue(o,`${t}.select-source[${a}]`,r,!0,!0,!1));return}case"UPDATE":case"DELETE":{let i=Ma(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:kt(e.where)})}if(e.type==="UPDATE"&&e.applyBlocks?.length){let o=sc(e.applyBlocks,!0);o.length>0&&r.push({kind:"FORBIDDEN",source:e,where:null,functionNames:o,path:`${t}.apply`,allowFullScanExact:!1,relativeFunctionOccurrences:[]})}$i(e,e).forEach((o,a)=>Ue(o,`${t}.select-source[${a}]`,r,n,!1,!1));return}default:$i(e,e).forEach((i,o)=>Ue(i,`${t}.select-source[${o}]`,r,n,!1,!1))}}function Gi(e,t){let r=new Map;for(let n of t){if(!De(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 xa(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 BR(e){return{kind:e.kind,source:e.source,functionNames:e.functionNames,path:e.path,clientWhereEvaluation:!0,allowed:!1}}function $R(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 Qt(e)?(r.some(n=>n!==Xe)||r.unshift("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED"),r.includes(Xe)||r.push(Xe)):r.includes(Pt)||r.push(Pt),[...new Set(r)]}function ka(e,t){let r=e.functionNames[0],n=Qt(r)?Xe:Pt,i=$R(r,t);return{functionName:r,path:e.path,code:i.find(o=>o!==n)??n,reasonCodes:i}}async function uc(e,t){let r=[];lc(e,"statement",r);let n=[];for(let i of r){if(i.kind==="FORBIDDEN"){let u=BR(i);return n.push(u),{hasRelativeDate:i.functionNames.some(q),hasServerOnlyWhereFunction:!0,nodes:n,allowed:!1,rejection:ka(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"&&Gi(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&&xa(u,S)&&(m=S.plan,y=!0,R=!0)}let h;!R&&f.capability==="EXACT_PUSHDOWN"&&(h=Bi({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(q)),hasServerOnlyWhereFunction:!0,nodes:n,allowed:!1,rejection:ka(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"&&Gi(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(q)),hasServerOnlyWhereFunction:!0,nodes:n,allowed:!1,rejection:ka(i,a)}}return{hasRelativeDate:r.some(i=>i.functionNames.some(q)),hasServerOnlyWhereFunction:r.length>0,nodes:n,allowed:!0}}function cc(e){if(!e.allowed&&e.rejection){let t=Qt(e.rejection.functionName)?Xe:Pt,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 Fa(e,t,r={}){let n=We(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=Rn(e.where);if(o.length===0)return i(["NO_RELATIVE_DATE"]);let a=GR(e.where,t);if(!a.ok)return i(a.reasonCodes);if(!VR(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=HR(e.where,t),l=Br(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??Gi,d=[];for(let g of a.leaves){let S=Yi(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=WR(l.condition),f=new Set(d),E=Wi(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=>Yi(g));if(!u(R,[...new Set(m)])||!YR(R,m))return i(["PREFILTER_FUNCTION_MISSING"]);let y=r.rewriteResidual?r.rewriteResidual(e.where,f):Hi(e.where,f);if(y!==null&&Rn(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 GR(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}Rn(o).length>0&&(n="RELATIVE_DATE_CONTEXT_UNSUPPORTED");return;case"NOT":Rn(o).length>0&&(n="RELATIVE_DATE_CONTEXT_UNSUPPORTED");return;case"BINARY":{if(Yi(o)===null)return;if(We(o,t).capability!=="EXACT_PUSHDOWN"){n="RELATIVE_DATE_LEAF_NOT_EXACT";return}r.push(o);return}case"EXISTS":Rn(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 Yi(e){return e.right.type==="KINTONE_FUNC"&&De(e.right.name)?e.right.name:e.right.type==="IN_LIST"&&e.right.values.length===1&&e.right.values[0].type==="KINTONE_FUNC"&&De(e.right.values[0].name)?e.right.values[0].name:null}function Rn(e){let t=[],r=n=>{if(n.type==="BINARY"&&Yi(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 VR(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 WR(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 Wi(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=Wi(e.left,t,r),i=Wi(e.right,t,r);return n!==null&&i!==null?{...e,left:n,right:i}:n??i}case"GROUP":{let n=Wi(e.expr,t,r);return n===null?null:{...e,expr:n}}case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return null}}var En={type:"BOOLEAN",value:!0};function Hi(e,t){if(e.type==="BINARY"&&t.has(e))return En;switch(e.type){case"LOGICAL":{if(e.op!=="AND")return e;let r=Hi(e.left,t)??En,n=Hi(e.right,t)??En;return Vi(r)?Vi(n)?null:n:Vi(n)?r:r===e.left&&n===e.right?e:{...e,left:r,right:n}}case"GROUP":{let r=Hi(e.expr,t)??En;return Vi(r)?En:r===e.expr?e:{...e,expr:r}}case"BINARY":case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return e}}function Vi(e){return e.type==="BOOLEAN"&&e.value}function HR(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 YR(e,t){let r=new Map;for(let n of t){if(!bo.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 pc(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 ji(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 jR(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 qR(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 zR(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 qi(e,t){let r=qR(jR(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}`)),zR(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 XR=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),JR=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),mn=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 dc(e,t,r){if(!XR.has(t??""))return e;if(e==="")return[];let n=e.split(/\r\n|\n/);if(n.some(i=>i===""))throw new mn;return JR.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 fc(e){try{return new TextDecoder("utf-8",{fatal:!0}).decode(e)}catch{throw new M("JSON source is not valid UTF-8.")}}function Ec(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 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)))&&nt("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)&&nt("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?nt("has an unpaired low surrogate",r-4,n,Math.max(1,i-4)):c+=String.fromCharCode(h)}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=oc(ic(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 kR=new Set(["CHECK_BOX","MULTI_SELECT"]),ac=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 MR(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof Map)&&e.kind==="number"}function xR(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."),MR(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."),!kR.has(t.fieldType)&&!ac.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."),ac.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]=xR(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,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]=nc(O,p.get(S)?.fieldType,{cliKintone:!0})}catch(b){if(!(b instanceof pn))throw b;g[S]=O,h.push({field:S,code:b.code,message:b.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 dn=(e,t,r)=>{throw new M(`JSON subtable validation failed (parentRow=${e}, field=${t}): ${r}`)};function sc(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),h=m.map((g,S)=>{g instanceof Map||dn(u,R,`childRow=${S+1} must be an object.`);let O=g;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,h)}return{rowNumber:u,top:d,subtables:c,replacementTables:f}})}}function lc(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)],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 FR=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),KR=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 dc(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)uc(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)uc(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=>BR(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 BR(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)||cc(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={},h=i.get(c.subtableCode);for(let g of c.children){let S=h.get(g),O=Ma(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):cc(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 uc(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&&KR.has(t.fieldType))throw new Error(`ArgumentError: IMPORT ${r?`child ${r}.${e}`:`field ${e}`} is not writable (${t.fieldType}).`)}function cc(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=$R(e),p=Ae(l,t,r);p.ok?n[i]={value:GR(l,t)?l:p.value}:o.push({...a,code:p.code,message:s?`\u65E2\u5B9A\u5024: ${p.message}`:p.message})}function $R(e){return pc(e)?e.lexeme:Array.isArray(e)?e.map(t=>t instanceof Map?t:pc(t)?t.lexeme:t):e}function pc(e){return typeof e=="object"&&e!==null&&e.kind==="number"}function GR(e,t){return FR.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?"":VR(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 VR(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 fc(e,t){return $a(e,t,"DROP")}function Ec(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 Rc(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 WR(e,t){let r=e[t]?.value;return Array.isArray(r)?r:[]}function mc(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 yc(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=WR(p.record,f),R=new Set(E.map(b=>b.id).filter(b=>!!b)),m=s.subtables.get(f)??[],y=o.subtables.get(f)??[],h=0,g=0,S=0,O=m.map((b,L)=>{let w=y[L]??{};return b.rowId&&R.has(b.rowId)?(h++,{rowId:b.rowId,record:w}):(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++),g++,{record:w})});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 Ga="#__import_source";function hc(e){return{...e,from:{appId:0,alias:null,cteName:Ga}}}function HR(e){return/^[0-9]+$/.test(e)?e.replace(/^0+(?=\d)/,""):null}function Va(e,t){let r=e.map(HR),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 YR="\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",hr=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 Kc(e){return he.get(e)}var Ar=new WeakMap,oo=new WeakMap,gc=new WeakMap,jR=1;function qR(e,t){if(t)return t;let r=gc.get(e);return r||(r=`client:${jR++}`,gc.set(e,r)),r}async function Qa(e,t,r={}){let n=Date.now(),i=qR(t,r.cacheContext),o=Oy(e,r.enableImport===!0),a=zR(),s=XR(t,a),l={aborted:!1},p=Bc(s,l,!JR(o)),u=await ZR(o,p,r,i);a.elapsedMs=Date.now()-n;let d={...QR(u,l),metrics:a};if(u.type==="SELECT"){let c=he.get(u);c&&he.set(d,c)}return d}function zR(){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 XR(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 Bc(e,t,r){return{...e,getRecords:async n=>{let i=await e.getRecords(n);if(i.searchAborted&&(t.aborted=!0,r))throw new hr;return i}}}function JR(e){return e.type==="SELECT"||e.type==="UNION"||e.type==="WITH"}function QR(e,t){if(!t.aborted||e.type!=="SELECT")return e;let r=new Set(e.warnings??[]);return r.add(YR),{...e,warnings:[...r]}}async function Za(e,t,r){return ec(e,{select:n=>Sn(n,t,r),dml:n=>Gc(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 ZR(e,t,r,n){let i=await Za(e,t,n);e.type!=="EXPLAIN"&&tc(i);let o=Wa(e);if(o!==null&&!sy(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 lm(e,t,n),e.type==="IMPORT")return ry(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 vc(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 sp(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 tm(e,t,r,n);case"SELECT":return St(e,t,r,n,void 0,r.captureColumnMeta===!0,r.captureColumnMeta===!0);case"UNION":return Zc(e,t,r,n,r.captureColumnMeta===!0,r.captureColumnMeta===!0);case"WITH":return bm(e,t,r,n,void 0,r.captureColumnMeta===!0);case"INSERT":return ey(e,t,r,n);case"INSERT_SELECT":return pp(e,t,r,n);case"UPSERT":return Ay(e,t,r,n);case"UPSERT_SELECT":return Rp(e,t,r,n);case"UPDATE":return vc(e,t,r,n);case"DELETE":return gy(e,t,r,n);case"REORDER":return Py(e,t,r,n);case"SHOW_APPS":return mp(t);case"DESCRIBE":return yp(e,t,n);case"EXPLAIN":return vy(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",Se):Se,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 im(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 em(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 tm(e,t,r,n){if(e.errorTable)throw new Error("ArgumentError: VALIDATE INTO requires a batch.");return rm(e,t,r,n)}async function rm(e,t,r,n){let i=await J(e.appId,t,n),o=new Map(i.filter(I=>!I.inSubtable).map(I=>[I.code,I])),a=new Set(i.filter(I=>I.inSubtable).map(I=>I.code)),s=sa(e,i),l=e.checkGroups??[],p=pr(l);for(let I of p){if(I.field!=="$id"&&!o.has(I.field)&&!a.has(I.field))throw ue(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${I.field} \u306F APP${e.appId} \u306B\u5B58\u5728\u3057\u307E\u305B\u3093`);if(I.field!=="$id"&&!o.has(I.field)&&a.has(I.field))throw new Error(`ArgumentError: VALIDATE \u306E CHECK \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${I.field} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let u=new Map([...o].map(([I,U])=>[I,U.fieldType]));u.set("$id","RECORD_NUMBER"),$t(e,u);let d=rs(e.where),c=[...new Set(["$id",...s.map(I=>I.subtableCode??I.field.code),...d,...p.map(I=>I.field)])];for(let I of d){if(I!=="$id"&&!o.has(I)&&!a.has(I))throw new Error(`ArgumentError: WHERE field ${I} does not exist in APP${e.appId}.`);if(I!=="$id"&&!o.has(I)&&a.has(I))throw new Error(`ArgumentError: VALIDATE \u306E WHERE \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${I} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let f=s.some(I=>I.field.fieldType==="NUMBER")?await Ye(e.appId,t,n):void 0,E=I=>I.field==="$id"?z({fieldType:"__ID__"}):o.get(I.field)?.semantics??(o.has(I.field)?z(o.get(I.field)):void 0),R=rt(e.where,E);if(R.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${kt(R)}).`);let m=new Map([...o].map(([I,U])=>[I,U.fieldType])),y=new Map([...o.values()].flatMap(I=>I.optionOrder?[[I.code,new Set(Object.keys(I.optionOrder))]]:[])),h=e.where===null?null:R.capability==="EXACT_PUSHDOWN"?e.where:nr(e.where,{allowUnqualifiedFields:!0,fieldTypes:m,fieldOptions:y,allowKlike:!1}),g=h===null?"":G(h),O=(await me(t.getRecords,e.appId,g,c,{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1,onLimit:"error"})).map(I=>({id:String(I.$id?.value??""),record:I,flat:tt(I,null)})).filter(I=>e.where===null||q(e.where,I.flat,U=>u.get(U.field))),b=[],L=new Map,w=new Map,_=new Set,C=0,v=I=>{if(_.add(I.id),C+=1,e.summary){let K=JSON.stringify([I.id,I.subtable??"",I.field,I.code]),te=w.get(K);te?te.$err_count=String(Number(te.$err_count)+1):w.set(K,{$id:I.id,$err_subtable:I.subtable??"",$err_field:I.field,$err_code:I.code,$err_count:"1"});return}let U=JSON.stringify([I.id,I.subtable??"",I.field,I.code,I.message]),B=L.get(U);B?(B.$err_count=String(Number(B.$err_count)+1),I.subrow!==void 0&&(B.$err_subrow=`${B.$err_subrow},${I.subrow}`,B.$err_subrow_id=`${B.$err_subrow_id},${I.subrowId??""}`)):L.set(U,{$id:I.id,$err_field:I.field,$err_code:I.code,$err_message:I.message,$err_value:I.value,$err_subtable:I.subtable??"",$err_subrow:I.subrow===void 0?"":String(I.subrow),$err_subrow_id:I.subrowId??"",$err_count:"1"})},k=s.filter(I=>!I.subtableCode),A=new Map;for(let I of s){if(!I.subtableCode)continue;let U=A.get(I.subtableCode)??[];U.push(I),A.set(I.subtableCode,U)}for(let I of O){for(let U of k){let B=I.record[U.field.code]?.value,K=Ae(B,U.field,f);K.ok||v({id:I.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=I.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=Ae(H,D.field,f);if(!ie.ok){let je=hi(U,te,F);v({id:I.id,field:D.field.code,code:ie.code,message:ie.message,value:zr(H,D.field.fieldType),...je})}}}}for(let U of ai(l,I.flat,B=>u.get(B.field)))v({id:I.id,field:"",code:"ERR_CHECK",message:U.message,value:""})}if(e.summary)b.push(...w.values());else for(let I of L.values()){let U=Number(I.$err_count);I.$err_subtable!==""&&U>=2&&(I.$err_message=`${I.$err_message}\uFF08${U}\u884C: ${I.$err_subrow}\uFF09`),b.push(I)}let N={type:"SELECT",columns:[...e.summary?ts:es],rows:b,rowCount:b.length,validateStats:{errorRecords:_.size,errorCount:C}};return he.set(N,em(e.summary===!0)),N}var gt=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])||!nm(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 nm(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 im(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 om(e.query,t,r,n,i)}catch(o){throw o instanceof mr?new An(o.message):o}}}async function om(e,t,r,n,i){let{query:o,probed:a}=am(e),s=await hn(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 am(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 $c(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 Gc(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 Gc(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),pm(e))return s=Em(e),o&&he.set(s,await ja(e,s.columns,t,n,i,a)),s;let l=await is(e,t,n,i);await hp(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 g=await Sr(e,t,n,i),S=va(e,g);S.eligible&&Da(e,S)&&(d=S.plan)}if(d===void 0&&p.capability==="EXACT_PUSHDOWN"&&e.where!==null){let g=null;try{g=G(e.where)}catch{g=null}c=ki({select:e,selectMode:u,capability:p,context:{allowFullScanExact:!0},serializedWholeWhere:g,relativeFunctionNames:Dt(e.where)})??void 0,c&&(d=c.prefilterPlan)}let f=p.capability==="EXACT_PUSHDOWN"?u:"FULL_SCAN",E=await In(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 mm(e,R?.kind==="CANONICAL_LOCAL"?"FULL_SCAN":f,t,n);let m=Vc(e,r,R),h=c!==void 0&&(u==="FULL_SCAN"||R?.kind==="CANONICAL_LOCAL")?Bc(t,{aborted:!1},!0):t;try{f==="SIMPLE"?s=await Rm(e,h,m.effectiveOptions,n,R,E):s=await wm(e,h,m.effectiveOptions,n,i,p.capability==="EXACT_PUSHDOWN"&&d===void 0,E,d,l)}catch(g){Wc(m,g)}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=Cu(e,(p,u)=>o[u]),s=e.groupBy,l=Ou(s,e.columns,a);return sm(e,s,l),l}function sm(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 lm(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 um(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 um(e,t,r,n),s=gl(e,a,yl);s&&Tn.set(e,s)}function cm(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 Vc(e,t,r){let n=r?.kind==="CANONICAL_REST_TOP_N"||r?.kind==="KORDER_NATIVE"||r?.kind==="KORDER_CURSOR"?wt({...e,orderBy:[]}):wt(e),i=n.size>0&&t.onLimitReached==="truncate";return{reasons:n,effectiveOptions:i?{...t,onLimitReached:"error"}:t,truncateWasDisabled:i}}function Wc(e,t){throw e.reasons.size>0&&t instanceof Ie?new Ie(cm(e.reasons)+(e.truncateWasDisabled?"onLimit=truncate\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002":"")+t.message):t}async function Ac(e,t){try{return await t()}catch(r){Wc(e,r)}}function ot(e){return e?.type==="BOOLEAN"&&e.value===!1}function pm(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 dm(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=>dm(t))}function fm(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 Em(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.");fm(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 Rm(e,t,r,n,i,o){let a=i?.kind==="CANONICAL_REST_TOP_N"?Xc(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,h=e.orderBy.length===0&&y!==null&&y<=c&&!se(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 L=await bu({client:t,app:s.app,fields:s.fields,query:Ra(e),offset:e.offset??0,limit:e.limit});g=L.records,L.cleanupWarning&&f.add(L.cleanupWarning)}else if(m)g=(await t.getRecords({app:s.app,query:s.query,fields:s.fields})).records;else{let L=e.where?G(e.where):"";g=await me(t.getRecords,s.app,L,l,{parallel:R,maxRecords:c,stopAfter:h,onLimit:E,onTruncate:w=>{f.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${w} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${w} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`)}})}let S=g.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 mm(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=>!Nu(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 Hc(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 Yc(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,Hc(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),Lm(a,t,r)]),u=ym(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 ym(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 hm(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=hm(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 gm(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 Am=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DROP_DOWN","RADIO_BUTTON","STATUS","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME"]);function Sm(e){return e.sortKind!==void 0?e.sortKind:e.fieldType==="NUMBER"||e.fieldType==="RECORD_NUMBER"?"number":Am.has(e.fieldType)?"string":void 0}async function zc(e,t,r,n){let i=gm(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 g=n?.get(y.cteName);return g?.columns.includes(f.field)?[g.columnMeta?.get(f.field)?.semantics??x("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=>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:Sm(e),fieldType:e.fieldType,semantics:t===void 0?r:cr(r,t,e.code)}}function Xc(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 Jc(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 Tm=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 Tm.has(e.func)?Y("number"):Y("string")}function gr(e,t){return e.type==="STRING"?Y("string"):e.type==="ARRAY"?Jc():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")?Jc("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=>gr(n.result,t));return e.elseResult&&r.push(gr(e.elseResult,t)),so(r)}function Im(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;Im(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 g=a.get(e.from.appId)?.get(R.field);return g?We(g,e.from.appId):void 0}let y=s.find(g=>Oe(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?We(h,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 h=a.get(y.appId)?.get(Ee(y,R.field)),g=h?We(h,y.appId):Ut(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&&Oe(y)!==R.tableAlias)return!1;let h=Ee(y,R.field);return a.get(y.appId)?.has(h)===!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 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=ls(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=xt(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=xt(R.expr);else if(R.type==="WINDOW_COL")h=Y("number");else if(R.type==="CASE_COL"){let g=R.expr.branches.map(S=>gr(S.result,p));R.expr.elseResult&&g.push(gr(R.expr.elseResult,p)),h=so(g)}else R.type==="SCALAR_SUBQUERY_COL"&&(h=He());h&&c.set(y,h)}),c}function Qc(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 wm(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([Yc(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=$c(e,m),h=or(e,c);_o(h);let g=h.mainCondition,S=h.joinConditions;if(s&&o)throw new Error("internal error: relative-date prefilter must disable original WHERE pushdown.");let O=s?s.prefilterWhere:g,b=await Ap(e.columns,t,r,n,i),L=ot(e.where),w=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):In(e,t,n,i);v.catch(()=>{});let k=await w,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 ip(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:I}=await v,{rows:U,columns:B}=ba({tables:A,stmt:e,scalarCache:b,optionOrders:P,sortKinds:N,orderSemantics:I,fieldTypeResolver:R.row,fieldSemanticsResolver:m,havingFieldTypeResolver:R.having,havingFieldSemanticsResolver:y,aggregateSortKindResolver:E,appliedKlikes:s?.appliedKlikes??h.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 Zc(e,t,r,n,i=!1,o=!1){let[a,s]=await Promise.all([e.left.type==="UNION"?Zc(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:ep(d,l),f={type:"SELECT",rows:c,columns:l,rowCount:c.length};return i&&he.set(f,Qc(a,s)),f}function ep(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 bm(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 mp(t):s.query.type==="DESCRIBE"?l=await yp(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((h,g)=>{y[h]=m[d[g]??h]??""}),y}),f=[...l.rows,...c],E=e.all?f:ep(f,u),R={type:"SELECT",rows:E,columns:u,rowCount:E.length};return o&&he.set(R,Qc(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 Pm(e,t,r,n,i);return o&&he.set(s,await ja(e,s.columns,t,i,n)),s}async function Pm(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),hp(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 In(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=Vc(e,r,m),h=y.effectiveOptions,[g,S,O]=await Promise.all([Yc(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)),w=$c(e,L),_=or(e,g);_o(_);let C=await Ap(e.columns,t,h,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(Sc)),A.set(e.from.alias,F.columns)}else{let F=await Ac(y,()=>mn(e,e.from,t,d,f,!0,h.onLimitReached??"error",c,_.mainCondition,E.capability==="EXACT_PUSHDOWN",a));k.set(e.from.alias,F)}let P=e.joins.map(F=>Ac(y,async()=>{if(F.table.cteName!=null){let D=u(F.table.cteName);k.set(F.table.alias,D.rows.map(Sc)),A.set(F.table.alias,D.columns)}else{let D=F.table.alias?_.joinConditions.get(F.table.alias)??null:null,ie=await ip(e,F,k,t,d,f,h.onLimitReached??"error",c,D,a)??await mn(e,F.table,t,d,f,!1,h.onLimitReached??"error",c,D,!0,a);k.set(F.table.alias,ie)}}));await Promise.all(P);let{optionOrders:N,sortKinds:I,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:I,orderSemantics:U,fieldTypeResolver:b.row,fieldSemanticsResolver:L,havingFieldTypeResolver:b.having,havingFieldSemanticsResolver:w,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 Sc(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?ol(e,t.appId).query:"",y=l!==null?G(l):"",h=m&&y?`(${m}) and (${y})`:m||y;return(await _e(r.getRecords,t.appId,h,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 Vu(R,t.subtableCode)}var tp=50;function Nm(e){let t=we(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]?Nm(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,h)=>{let g=m.get(y);(g===void 0||h>g)&&m.set(y,h)},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(h=>h==="")?f.push(m):c.add(m[0]))}let R=["$id",...t];for(let m of Tr([...c],tp)){let y=`${t[0]} in (${m.map(to).join(",")})`,h=await me(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=>rp(g[O]?.value)),S)}}for(let m of f){let y=t.map((g,S)=>`${g} = ${to(m[S])}`).join(" and "),h=await me(n.getRecords,e,y,["$id"],{maxRecords:a,parallel:s});h.length!==0&&d(m,Cm(h))}return p}function Cm(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 rp(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 np=50,Om=6,Tc=np*Om;async function ip(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 w=L[f]?.value,_=rp(w).trim();_.length>0&&m.add(_)}let y=[...m];if(y.length===0)return[];if(y.length>Tc)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 ${Tc} \u4EF6\uFF09\u3002`),null;let h=bt(e,t.table,p),g=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,np),O=[],b=new Set;for(let L of S){let w=`${E} in (${L.map(to).join(",")})`,_=l!==null?`(${w}) and (${G(l)})`:w,C=await _e(n.getRecords,t.table.appId,_,h,{parallel:o,maxRecords:i,onLimit:a,onTruncate:g});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 Ic=new Map,wc=new Map,bc=new Map,Pc=new Map,Nc=new Map,Cc=new Map;function Ir(e,t,r){return e.get(t)?.get(r)}function wr(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=Ir(Pc,r,e);if(n)return n;let i=t.getFields(e);return wr(Pc,r,e,i),i}async function Ye(e,t,r){let n=Ir(Cc,r,e);if(n)return n;let i=t.getNumberPrecision(e);return wr(Cc,r,e,i),i}async function cs(e,t,r){let n=Ir(Nc,r,e);if(n)return n;let i=t.getProcessStatuses(e);return wr(Nc,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=Ir(Ic,r,e);if(n)return n;let i=await J(e,t,r),o=new Map(i.map(a=>[a.code,a.fieldType]));return wr(Ic,r,e,o),o}async function za(e,t,r){let n=Ir(wc,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 wr(wc,r,e,o),o}async function Lm(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 Oc(e,t,r){let n=Ir(bc,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 wr(bc,r,e,o),o}function _m(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 Dm(e,t,r,n){let i=_m(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=>gr(E.result,l));d.expr.elseResult&&f.push(gr(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 In(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([vm(e,t,r),Um(e,t,r),Dm(e,t,r,n)]);return{optionOrders:o,sortKinds:a,semantics:s}}async function vm(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 Um(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 Oc(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 Oc(a.appId,t,r);for(let[l,p]of s.entries())n.set(`${a.alias}.${l}`,p)}return n}function op(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 km=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function Mm(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||km.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 Mm(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=Ae(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 xm(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",Se),statementNumber:i,loadNumberPrecision:()=>Ye(e.appId,t,n)});return Ey(e,a,o)}async function Fm(e,t,r,n,i){let{fieldInfos:o,prepared:a}=await ap(e,t,r,n,i);return my(e,a,o)}async function ap(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=fp(e),l=new Set;for(let m of s){let y=Kt(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 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 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 yu({statement:e,matches:E,fieldInfos:o,dmlMaxRows:Le(r.dmlMaxRows,"dmlMaxRows",st),dmlMaxSubtableRows:Le(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",Se),statementNumber:i,loadNumberPrecision:()=>Ye(e.appId,t,n)});return{fieldInfos:o,prepared:R}}async function Km(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",Se),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 Tu(o,t,a);return{...s,diagnostic:Ce(a,s)}}async function Bm(e,t,r,n){if(r.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let{prepared:i}=await ap(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 Iu(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 $m(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=$m(r?ji(r):[],n?ji(n):[]),a=Gm(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 Gm(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 sp(e,t,r,n,i,o){if(e.type==="INSERT"&&e.applyBlocks?.length)return xm(e,t,r,n,o);if(e.type==="UPSERT"&&(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length))return Fm(e,t,r,n,o);if(e.type==="UPDATE"&&e.applyBlocks?.length){let a=await dp(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=Wu(E),m=(await Vm(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"),h=e.type==="UPDATE"?Ym:e.type.startsWith("UPSERT")?P=>jm(P,t,r.maxRecords??1e4):void 0,g=r.loadUpdateModeSnapshots??h,S=y.length>0&&g!==void 0,O=new Map;if(S){ia(y,u,d);let P=await g({appId:e.appId,candidates:y,fields:R}),N=new Map;for(let I of y){if(I.targetId===void 0)throw new Error(`InternalError: update-mode validation candidate has no targetId (row=${I.rowNumber}).`);let U=P.get(I.targetId);if(!U)throw new Error(`InternalError: update-mode snapshot is missing for record ${I.targetId}.`);let B=Hu(U,I.record??{});N.set(I.rowNumber,B)}f===void 0&&[...N.values()].some(I=>Lt(I,E))&&(f=await Ye(e.appId,t,n));for(let I of y){let U=N.get(I.rowNumber);if(!U)throw new Error(`InternalError: validation post-image is missing for row ${I.rowNumber}.`);O.set(I.rowNumber,_t(U,E,f,o,I.rowNumber,l))}}let b=oa(m,l,p,u,d,o,f,e.checkGroups??[],a,s,{validateUpdateBuiltIns:!S}),{errors:L,invalidRows:w,invalidRowNumbers:_}=b;if(S){let P=new Map(b.candidateResults.map(N=>[N.rowNumber,N]));L=[],_=new Set;for(let N of m){let I=P.get(N.rowNumber);if(!I)throw new Error(`InternalError: validation detail is missing for row ${N.rowNumber}.`);if(N.mode==="create"){let K=[...I.preErrors,...I.builtInErrors,...I.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=Yu({rowNumber:N.rowNumber,setFields:u,normalizedPostImage:U.normalizedRecord,preErrors:I.preErrors,postImageErrors:U.errors,checkErrors:I.checkErrors});N.record=B.writeRecord,L.push(...B.errors);for(let K of B.invalidRowNumbers)_.add(K)}w=_.size}let C=[...p,...fr],v={type:"VALIDATION",operation:l,validatedRows:m.length,validRows:m.length-w,invalidRows:w,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 Lc(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??gt,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 Vm(e,t,r,n,i,o,a,s){if(e.type==="UPDATE")return Hm(e,r,n,i,o,s);let l,p,u,d,c;if(e.type==="INSERT"||e.type==="UPSERT")_c(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");_c(e,S.columns),p=S.rows,u=S.importPresence,d=S.importRowErrors;let b=S.columnMeta;c=new Map(S.columns.map(L=>{let w=b?.get(L),_=w?.fieldType??(w?.semantics?.compareMode==="number"||w?.sortKind==="number"?"NUMBER":"SINGLE_LINE_TEXT");return[L,_]})),$t(e,c),l=S.rows.map(L=>S.columns.map(w=>L[w]??""))}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 h=oo.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 On(e.appId,e.keyFields,R,r,n,E);return f.forEach((S,O)=>{let b=R[O],L=Cn(g,b);S.mode=L===void 0?"create":"update",L!==void 0&&(S.targetId=L),e.keyFields.forEach((w,_)=>{b[_]===""&&S.preErrors.push({field:w,code:"ERR_KEY_EMPTY",message:`UPSERT \u30AD\u30FC ${w} \u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093`})}),!h&&(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 _c(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 Wm=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 Fl(e.checkGroups)){let n=r.tableAlias?`${r.tableAlias}.${r.field}`:r.field,i=t.get(n)??t.get(r.field);if(Wm.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 Hm(e,t,r,n,i,o){if(e.from)return zm(e,e.from,t,r,n,i,o);await gp(e.assignments,t,r,n);let a=await Re(e.appId,t,n),s=lp(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 wi(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:qm(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 Ym(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 jm(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 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 lp(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 qm(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 zm(e,t,r,n,i,o,a){let s=await wp(e,t,r,i,o);$t(e,s.evaluationTypes);let l=await up(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:Xy(d.get(f.id),e.appId,t.alias),evaluationFieldTypes:s.evaluationTypes}))}var Xm=tp,Jm=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);async function up(e,t,r,n,i,o,a){let s=await Qm(e,t,r,i),l=await wp(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 Zm(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=Dc(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([...hy(e),...l.targetFields,...a??[]])],m=t.targetFilter===null?"":Gr({...e,from:null,where:t.targetFilter,checkGroups:void 0}).query,y=[],h=new Set,g=0;for(let O of Tr([...f.values()],Xm)){let b=`${t.targetJoinField} in (${O.map(to).join(",")})`,L=m?`(${b}) and (${m})`:b,w=await _e(r.getRecords,e.appId,L,R,{maxRecords:E,parallel:n.fetchParallel??1,onLimit:"error"});if(g+=w.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 _ of w.records){let C=_.$id?.value;if(typeof C!="string"||C==="")throw new Error("ArgumentError: UPDATE ... FROM target record does not contain a valid $id.");h.has(C)||(h.add(C),y.push(_))}}let S=[];for(let O of y){let b=O[t.targetJoinField]?.value,L=Dc(b,s,"target");if(L===null)continue;let w=c.get(L);w!==void 0&&S.push({target:O,source:w})}return S}async function Qm(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 Zm(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(Jm.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 Dc(e,t,r){if(typeof e!="string")throw new Error(`ArgumentError: UPDATE ... FROM ${r} key must be a scalar string: ${String(e)}`);if(t==="string"){if(e===""){if(r==="target")return null;throw new Error("ArgumentError: UPDATE ... FROM source key must not be empty.")}return e}if(t==="number"&&r==="target"&&e==="")return null;if(t==="id"){let i=e.trim(),o=Number(i);if(i===""||!Number.isSafeInteger(o)||o<=0)throw new Error(`ArgumentError: UPDATE ... FROM ${r} key must be a positive safe integer: ${e}`);return String(o)}let n=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 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 ey(e,t,r,n){if(e.applyBlocks?.length)return Km(e,t,r,n);if(e.checkGroups?.length)return Ln(e,t,r,n);if(e.subtableCode)return Sy(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 ty(){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 ry(e,t,r,n,i){if(!r.enableImport)throw new Error("UnsupportedError: IMPORT capability is disabled.");let o=rc(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"?sc(e.source,R,d,r.maxRecords??1e4):lc(e.source,R,d,e.replaceSubtables??[],r.maxRecords??1e4,e.recordNumberSourceHeader),y=e.source.kind==="CSV"?"UPDATE":e.keyFields?"UPSERT":"INSERT",h=dc(m,d,c,E,y);if(e.source.kind==="CSV")return ny(e,m,h,c,t,r,i);Fa(h,e.rejectLimit);let g=[...new Set(d.flatMap(D=>D.kind==="FIELD"?[D.field]:D.children))],S=Ba(h.errors,g),O=[...g,...Ka],b=h.invalidParentRows.size,L={preflight:"ACTUAL_DATA",parents:{total:h.parents.length,valid:h.parents.length-b,invalid:b,mutationCandidates:h.parents.filter(D=>D.valid).length},tables:Object.fromEntries(h.tableCounts),writesKintone:!1},w={type:"VALIDATION",operation:y,validatedRows:h.parents.length,validRows:h.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??gt,new Map),e.validateOnly)return w;if(Ec(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.");At(i,e.errorTable,O,S,r.tempTableMaxRows??gt,new Map)}let _=h.parents.filter(D=>D.valid),C=new Map(c.map(D=>[D.code,D.fieldType])),v=_.map(()=>{});if(e.keyFields){for(let ge of e.keyFields)if(!e.fields.includes(ge))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${ge}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let D=e.keyFields.map(ge=>C.get(ge)==="NUMBER"),H=new Set,ie=_.map(ge=>e.keyFields.map(Ht=>String(ge.top[Ht]?.value??"")));for(let ge of ie){let Ht=Kt(ge,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((ge,Ht)=>{v[Ht]=Cn(je,ge)})}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),ge=Number(ie.$revision?.value);Number.isFinite(je)&&A.set(je,{id:je,...Number.isFinite(ge)?{revision:ge}:{},record:ie})}}let N=Rc(_,v,A),I={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:I}))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=>fc(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:h.invalidParentRows.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:I}:{type:"INSERT",createdIds:F,insertedCount:F.flat().length,affectedRows:N.length,skippedRows:h.invalidParentRows.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:I}}if(e.writeMode==="UPDATE_RECORD_NUMBER")return iy(e,o,t,r,n,i);let a={appId:e.appId,fields:e.fields,select:ty(),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 sp(s,t,{...r,onLimitReached:"error"},n,i,1);return s.validationErrorTable&&i&&At(i,s.validationErrorTable,d.columns,d.errors,r.tempTableMaxRows??gt,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",Lc(s,t,r,n,i,1));return p(d)}let u=await(s.type==="UPSERT_SELECT"?Rp(s,t,r,n,i):pp(s,t,r,n,i));return p(u)}async function ny(e,t,r,n,i,o,a){if(!e.recordNumberSourceHeader||!e.replaceSubtables?.length)throw new Error("InternalError: incomplete CSV subtable replacement AST.");mc(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 me(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 I of u){let U=A[I]?.value;if(Array.isArray(U)){for(let B of U)if(B.id){let K=f.get(B.id)??[];K.push({parentId:P,table:I}),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 I=E[P];return I!==void 0&&!c.has(I)&&N.push({operation:"UPDATE",parentRow:A.parentRow,field:e.recordNumberSourceHeader,code:"ERR_RECORD_NUMBER_NOT_FOUND",message:`record number ${I} does not exist in APP${e.appId}`,sourceValues:t.records[P].top}),{...A,valid:N.length===0,errors:N}}),m=yc(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};Fa(g,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,I)=>N+Number(I[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")}])),w={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:h.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??gt,new Map),{type:"VALIDATION",operation:"UPDATE",validatedRows:R.length,validRows:R.length-h.size,invalidRows:h.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:h.size,mutationCandidates:S.length},tables:L,rowIdPolicy:"PRESERVE_EXISTING",rowIdNotFound:w.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??gt,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:w}))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,I])=>[N,I.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:h.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:w}}async function iy(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(w=>w!==null))];for(let w=0;w<f.length;w+=100){let _=f.slice(w,w+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(w=>[w.code,w])),R=new Map(e.fields.map(w=>[w,E.get(w)?.fieldType??"SINGLE_LINE_TEXT"])),m=p.rows.map((w,_)=>{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,w[k]??""])]),preErrors:v,record:{},evaluationRow:w,evaluationFieldTypes:R}}),y=[e.recordNumberSourceHeader,...e.fields],h=oa(m,"UPDATE",y,e.fields,a,1,s,e.checkGroups??[],!1),g=[...y,...fr],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&&At(o,e.validationErrorTable,g,h.errors,n.tempTableMaxRows??gt,new Map),S}if(!e.onErrorSkip&&h.invalidRows>0){let w=h.errors[0];throw new Error(`DmlValidationError: ${w.$err_code} ${w.$err_message} (row=${w.$err_row}, field=${w.$err_field})`)}if(e.onErrorSkip){if(!o||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch.");if(At(o,e.errorTable,g,h.errors,n.tempTableMaxRows??gt,new Map),e.rejectLimit!=null&&h.invalidRows>e.rejectLimit)throw new ro(`rejected rows (${h.invalidRows}) exceed REJECT LIMIT (${e.rejectLimit}).`,S)}let O=m.filter(w=>!h.invalidRowNumbers.has(w.rowNumber));if(n.confirm&&!await n.confirm(O.length,"UPDATE"))throw new ee("UPDATE",O.length);let b=O.map(w=>({id:w.targetId,record:w.record}));for(let w=0;w<b.length;w+=100)await r.putRecords({app:e.appId,records:b.slice(w,w+100)});let L={type:"UPDATE",updatedCount:b.length,...e.onErrorSkip?{affectedRows:b.length,skippedRows:h.invalidRows,rejectLimit:e.rejectLimit??null,errTable:e.errorTable}:{}};return Object.assign(L,{insertedCount:0,importAudit:p.importAudit}),L}async function oy(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=hc(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:oy};function cp(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 pp(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(cp(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 h=f[p[y]]??"";R[m]={value:op(h,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 vc(e,t,r,n,i){if(e.applyBlocks?.length)return dp(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 lp(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),Ty(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 yy(e,e.from,t,r,n,i);let l=r.maxRecords??1e4;await gp(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(h=>h.records.map(g=>g.record)),a,o,s),r.confirm&&!await r.confirm(m.length,"UPDATE"))throw new ee("UPDATE",m.length);for(let h of y)await t.putRecords(h);return{type:"UPDATE",updatedCount:m.length}}let u=Gr(e),c=(await wi(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 dp(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 ay(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=tu({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",Se),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:wn(O.branches[0]),guards:bn(O.branches[0]),deletedRows:{total:d.tables.reduce((L,w)=>L+w.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 h=fi(d,E.normalizedRecord),g=jr(h),S=Zr({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=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(g),{type:"UPDATE",updatedCount:d.parentRows,diagnostic:Ce(S,{successfulChunks:1,successfulParents:d.parentRows})}}async function ay(e,t,r,n,i){let o=Le(r.dmlMaxRows,"dmlMaxRows",st),a=Le(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",Se),s=await J(e.appId,t,n),l=Ze(e,s),p;if(no(e))p=await cy(e,t,r,s,n);else{let f=pi(e,s),E=Gr(e).query,R=o+1;p=await me(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 gi({statement:e,snapshots:p,fieldInfos:s,metadata:l,dmlMaxRows:o,dmlMaxSubtableRows:a,statementNumber:i,loadNumberPrecision:()=>Ye(e.appId,t,n)});if(e.validateOnly)return Ry(e,u,s);Js("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 Su(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 sy(e){let t=e.type==="EXPLAIN"?e.query:e;return t.type==="UPDATE"&&no(t)&&se(t.where)}var ly=`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 zi(e){return e.kind==="eof"?"end of input":e.kind==="punct"?e.value:e.kind}function Xi(e){if(e.byteLength===0)throw new M("JSON source is empty.");let t=Ec(fc(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 ${zi(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 ${zi(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 ${zi(p)}`,p)},s=a();t[r].kind!=="eof"&&n(`has trailing data; found ${zi(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 QR=new Set(["CHECK_BOX","MULTI_SELECT"]),Rc=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function He(e,t,r){throw new M(`JSON field validation failed (row=${e}, field=${t}): ${r}`)}function ZR(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof Map)&&e.kind==="number"}function em(e,t,r){if(e===null)return"";if(typeof e=="string")return e;if(typeof e=="boolean"&&He(r,t.code,"boolean is not accepted."),ZR(e)){t.fieldType==="NUMBER"&&He(r,t.code,"precision target requires a JSON string."),(!/^-?(?:0|[1-9]\d*)$/.test(e.lexeme)||e.lexeme==="-0")&&He(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)||He(r,t.code,`JSON number ${e.lexeme} is outside the safe integer range.`),String(i)}e instanceof Map&&He(r,t.code,"object is not accepted for a flat field."),Array.isArray(e)||He(r,t.code,"unsupported value type."),!QR.has(t.fieldType)&&!Rc.has(t.fieldType)&&He(r,t.code,"array is accepted only for multi-value fields.");let n=e.map(i=>(typeof i!="string"&&He(r,t.code,"array elements must be strings."),i));return new Set(n).size!==n.length&&He(r,t.code,"array elements must not contain duplicates."),Rc.has(t.fieldType)?JSON.stringify(n.map(i=>({code:i}))):JSON.stringify(n)}function Ka(e,t,r,n){if(t.encoding&&t.encoding!=="utf8")throw new M("JSON source is UTF-8 only.");let i=Xi(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)||He(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]=em(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 Ba(e,t,r,n,i,o){let a=qi(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]=dc(O,p.get(S)?.fieldType,{cliKintone:!0})}catch(b){if(!(b instanceof mn))throw b;g[S]=O,h.push({field:S,code:b.code,message:b.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 yn=(e,t,r)=>{throw new M(`JSON subtable validation failed (parentRow=${e}, field=${t}): ${r}`)};function mc(e,t,r,n,i=n){if(t.encoding&&t.encoding!=="utf8")throw new M("JSON source is UTF-8 only.");let o=Xi(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)||yn(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&&yn(u,R,"object is not accepted for a top-level field."),d.set(R,m);continue}Array.isArray(m)||yn(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||yn(u,R,`childRow=${S+1} must be an object.`);let O=g;for(let b of O.keys())y.has(b)||yn(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,h)}return{rowNumber:u,top:d,subtables:c,replacementTables:f}})}}function yc(e,t,r,n,i,o){let a=qi(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 tm=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),rm=new Set(["SUBTABLE","FILE","CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function Va(e,t){if(t!=null&&e.invalidParentRows.size>t)throw new Error(`RejectLimitExceededError: rejected parents (${e.invalidParentRows.size}) exceed REJECT LIMIT (${t}).`)}function Sc(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)hc(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)hc(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=>nm(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 nm(e,t,r,n,i,o,a,s){let l=[],p={};for(let c of t)e.top.has(c.field)&&Ga(e.top.get(c.field),n.get(c.field),o,p,c.field,l,$a(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,$a(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=$a(e,a,g,c.subtableCode,R.childRowNumber,R.sourceRowNumber??e.markerRowNumber);R.values.has(g)?Ga(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 hc(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&&rm.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=Dt(e.defaultValue)?"":e.defaultValue;Ga(o,e,t,r,e.code,n,i,!Dt(e.defaultValue))}function Ga(e,t,r,n,i,o,a,s=!1){let l=im(e),p=Ae(l,t,r);p.ok?n[i]={value:om(l,t)?l:p.value}:o.push({...a,code:p.code,message:s?`\u65E2\u5B9A\u5024: ${p.message}`:p.message})}function im(e){return Ac(e)?e.lexeme:Array.isArray(e)?e.map(t=>t instanceof Map?t:Ac(t)?t.lexeme:t):e}function Ac(e){return typeof e=="object"&&e!==null&&e.kind==="number"}function om(e,t){return tm.has(t.fieldType)&&Array.isArray(e)&&e.every(r=>typeof r=="object"&&r!==null&&"code"in r)}function $a(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 Wa=["$err_statement","$err_operation","$err_row","$err_field","$err_subtable","$err_subrow","$err_source_row","$err_code","$err_message"];function Ha(e,t,r=1){return e.map(n=>{let i={};for(let o of t)i[o]=n.sourceValues.get(o)==null?"":am(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 am(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 Ya(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 Tc(e,t){return Ya(e,t,"DROP")}function Ic(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 wc(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 sm(e,t){let r=e[t]?.value;return Array.isArray(r)?r:[]}function bc(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 Pc(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=sm(p.record,f),R=new Set(E.map(b=>b.id).filter(b=>!!b)),m=s.subtables.get(f)??[],y=o.subtables.get(f)??[],h=0,g=0,S=0,O=m.map((b,L)=>{let w=y[L]??{};return b.rowId&&R.has(b.rowId)?(h++,{rowId:b.rowId,record:w}):(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++),g++,{record:w})});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 ja="#__import_source";function Nc(e){return{...e,from:{appId:0,alias:null,cteName:ja}}}function lm(e){return/^[0-9]+$/.test(e)?e.replace(/^0+(?=\d)/,""):null}function qa(e,t){let r=e.map(lm),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 um="\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",Ir=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 Qc(e){return he.get(e)}var br=new WeakMap,co=new WeakMap,Cc=new WeakMap,cm=1;function pm(e,t){if(t)return t;let r=Cc.get(e);return r||(r=`client:${cm++}`,Cc.set(e,r)),r}async function ns(e,t,r={}){let n=Date.now(),i=pm(t,r.cacheContext),o=Yy(e,r.enableImport===!0),a=dm(),s=fm(t,a),l={aborted:!1},p=Zc(s,l,!Em(o)),u=await mm(o,p,r,i);a.elapsedMs=Date.now()-n;let d={...Rm(u,l),metrics:a};if(u.type==="SELECT"){let c=he.get(u);c&&he.set(d,c)}return d}function dm(){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 fm(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 Zc(e,t,r){return{...e,getRecords:async n=>{let i=await e.getRecords(n);if(i.searchAborted&&(t.aborted=!0,r))throw new Ir;return i}}}function Em(e){return e.type==="SELECT"||e.type==="UNION"||e.type==="WITH"}function Rm(e,t){if(!t.aborted||e.type!=="SELECT")return e;let r=new Set(e.warnings??[]);return r.add(um),{...e,warnings:[...r]}}async function is(e,t,r){return uc(e,{select:n=>Pn(n,t,r),dml:n=>tp(n,t,r),prefilterDecomposition:async n=>{if(n.where===null)return null;let i=await Pr(n,t,r);return Fa(n,i)}})}async function mm(e,t,r,n){let i=await is(e,t,n);e.type!=="EXPLAIN"&&cc(i);let o=za(e);if(o!==null&&!wy(e))throw new Error(`ParseError: variable @${o} is not defined in a batch.`);if(Xn("phase15b",e),el("phase15b",e),dr(e),e.type!=="EXPLAIN"&&await bm(e,t,n),e.type==="IMPORT")return gy(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 Gc(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 Ap(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 hm(e,t,r,n);case"SELECT":return Tt(e,t,r,n,void 0,r.captureColumnMeta===!0,r.captureColumnMeta===!0);case"UNION":return dp(e,t,r,n,r.captureColumnMeta===!0,r.captureColumnMeta===!0);case"WITH":return Gm(e,t,r,n,void 0,r.captureColumnMeta===!0);case"INSERT":return yy(e,t,r,n);case"INSERT_SELECT":return wp(e,t,r,n);case"UPSERT":return xy(e,t,r,n);case"UPSERT_SELECT":return Cp(e,t,r,n);case"UPDATE":return Gc(e,t,r,n);case"DELETE":return My(e,t,r,n);case"REORDER":return Vy(e,t,r,n);case"SHOW_APPS":return Op(t);case"DESCRIBE":return Lp(e,t,n);case"EXPLAIN":return Xy(e,t,n,r.maxRecords??1e4,r.cursorMaxActive??2,e.query.type==="UPDATE"&&e.query.applyBlocks?.length?_e(r.dmlMaxRows,"dmlMaxRows",lt):lt,e.query.type==="UPDATE"&&e.query.applyBlocks?.length?_e(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",Se):Se,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 Sm(e,t,r,n)}}var os=["$id","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id","$err_count"],as=["$id","$err_subtable","$err_field","$err_code","$err_count"];function ss(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 ym(e=!1){let t=e?as:os;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 hm(e,t,r,n){if(e.errorTable)throw new Error("ArgumentError: VALIDATE INTO requires a batch.");return gm(e,t,r,n)}async function gm(e,t,r,n){let i=await Q(e.appId,t,n),o=new Map(i.filter(I=>!I.inSubtable).map(I=>[I.code,I])),a=new Set(i.filter(I=>I.inSubtable).map(I=>I.code)),s=fa(e,i),l=e.checkGroups??[],p=Rr(l);for(let I of p){if(I.field!=="$id"&&!o.has(I.field)&&!a.has(I.field))throw ue(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${I.field} \u306F APP${e.appId} \u306B\u5B58\u5728\u3057\u307E\u305B\u3093`);if(I.field!=="$id"&&!o.has(I.field)&&a.has(I.field))throw new Error(`ArgumentError: VALIDATE \u306E CHECK \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${I.field} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let u=new Map([...o].map(([I,U])=>[I,U.fieldType]));u.set("$id","RECORD_NUMBER"),Wt(e,u);let d=ss(e.where),c=[...new Set(["$id",...s.map(I=>I.subtableCode??I.field.code),...d,...p.map(I=>I.field)])];for(let I of d){if(I!=="$id"&&!o.has(I)&&!a.has(I))throw new Error(`ArgumentError: WHERE field ${I} does not exist in APP${e.appId}.`);if(I!=="$id"&&!o.has(I)&&a.has(I))throw new Error(`ArgumentError: VALIDATE \u306E WHERE \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${I} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let f=s.some(I=>I.field.fieldType==="NUMBER")?await qe(e.appId,t,n):void 0,E=I=>I.field==="$id"?X({fieldType:"__ID__"}):o.get(I.field)?.semantics??(o.has(I.field)?X(o.get(I.field)):void 0),R=We(e.where,E);if(R.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Ft(R)}).`);let m=new Map([...o].map(([I,U])=>[I,U.fieldType])),y=new Map([...o.values()].flatMap(I=>I.optionOrder?[[I.code,new Set(Object.keys(I.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?"":G(h),O=(await me(t.getRecords,e.appId,g,c,{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1,onLimit:"error"})).map(I=>({id:String(I.$id?.value??""),record:I,flat:nt(I,null)})).filter(I=>e.where===null||z(e.where,I.flat,U=>u.get(U.field))),b=[],L=new Map,w=new Map,_=new Set,C=0,v=I=>{if(_.add(I.id),C+=1,e.summary){let K=JSON.stringify([I.id,I.subtable??"",I.field,I.code]),re=w.get(K);re?re.$err_count=String(Number(re.$err_count)+1):w.set(K,{$id:I.id,$err_subtable:I.subtable??"",$err_field:I.field,$err_code:I.code,$err_count:"1"});return}let U=JSON.stringify([I.id,I.subtable??"",I.field,I.code,I.message]),B=L.get(U);B?(B.$err_count=String(Number(B.$err_count)+1),I.subrow!==void 0&&(B.$err_subrow=`${B.$err_subrow},${I.subrow}`,B.$err_subrow_id=`${B.$err_subrow_id},${I.subrowId??""}`)):L.set(U,{$id:I.id,$err_field:I.field,$err_code:I.code,$err_message:I.message,$err_value:I.value,$err_subtable:I.subtable??"",$err_subrow:I.subrow===void 0?"":String(I.subrow),$err_subrow_id:I.subrowId??"",$err_count:"1"})},k=s.filter(I=>!I.subtableCode),A=new Map;for(let I of s){if(!I.subtableCode)continue;let U=A.get(I.subtableCode)??[];U.push(I),A.set(I.subtableCode,U)}for(let I of O){for(let U of k){let B=I.record[U.field.code]?.value,K=Ae(B,U.field,f);K.ok||v({id:I.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=I.record[U]?.value;if(Array.isArray(K))for(let re=0;re<K.length;re++){let F=K[re];for(let D of B){let H=F.value?.[D.field.code]?.value,oe=Ae(H,D.field,f);if(!oe.ok){let ze=wi(U,re,F);v({id:I.id,field:D.field.code,code:oe.code,message:oe.message,value:Zr(H,D.field.fieldType),...ze})}}}}for(let U of di(l,I.flat,B=>u.get(B.field)))v({id:I.id,field:"",code:"ERR_CHECK",message:U.message,value:""})}if(e.summary)b.push(...w.values());else for(let I of L.values()){let U=Number(I.$err_count);I.$err_subtable!==""&&U>=2&&(I.$err_message=`${I.$err_message}\uFF08${U}\u884C: ${I.$err_subrow}\uFF09`),b.push(I)}let N={type:"SELECT",columns:[...e.summary?as:os],rows:b,rowCount:b.length,validateStats:{errorRecords:_.size,errorCount:C}};return he.set(N,ym(e.summary===!0)),N}var At=1e4;function St(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])||!Am(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 Am(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||!ai(i.semantics,n.semantics))return!1}return!0}function za(e){if(Array.isArray(e)){for(let t of e){let r=za(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=za(r);if(n!==null)return n}}return null}var bn=class extends Error{constructor(t){super(`AssertError: ${t}`),this.name="AssertError"}},Sr=class extends Error{constructor(t){super(t),this.name="ScalarSubqueryError"}};async function Sm(e,t,r,n,i){let o=await Ji(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 Ji(e.low,t,r,n,i),p=await Ji(e.high,t,r,n,i);if(!Lt(">=",o,l,a)||!Lt("<=",o,p,a))throw new bn(`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 Ji(e.right,t,r,n,i);if(!Lt(e.op,o,s,a))throw new bn(`assertion failed: ${e.text} (actual: ${o}).`);return{type:"ASSERT",condition:e.text}}async function Ji(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(Xa(e));case"SCALAR_SUBQUERY":try{return await Tm(e.query,t,r,n,i)}catch(o){throw o instanceof Sr?new bn(o.message):o}}}async function Tm(e,t,r,n,i){let{query:o,probed:a}=Im(e),s=await In(o,t,r,n,i);if(s.columns.length!==1)throw new Sr(`scalar subquery returned ${s.columns.length} columns (expected 1 column).`);if(s.rowCount===0)throw new Sr("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 Sr(`scalar subquery returned ${l} (expected 1 row).`)}return s.rows[0]?.[s.columns[0]]??""}function Im(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 Xa(e){if(e.type==="NUMBER")return e.value;if(e.type==="ARITH"){let t=Xa(e.left),r=Xa(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 Pr(e,t,r,n,i=!1){let o=[e.from,...e.joins.map(c=>c.table)],a=i||Ge(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 ms(c,t,r);R&&u.set(c,R)}));let d=(c,f,E)=>{if(f==="$id")return Er(X({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??X(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=>Le(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=>Zi(E,c.field)!==void 0))return f.length>1?x("string"):void 0}}function ls(e){let t=r=>{if(r===null||typeof r!="object")return!1;if(Array.isArray(r))return r.some(t);let n=r;return n.type==="CASE_WHEN"&&n.branches?.some(i=>Ge(i.condition))?!0:Object.values(n).some(t)};return e.columns.some(t)}function ep(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(xe(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=fs(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=Bt(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 Pn(e,t,r,n){if(e.where===null)return We(null,()=>{});let i=await Pr(e,t,r,n);return We(e.where,i)}function Ft(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 ro(e){return e.orderBy.length>0||e.columns.some(t=>t.type==="WINDOW_COL"&&t.orderBy.length>0)}async function tp(e,t,r){if(e.subtableCode||e.type==="UPDATE"&&e.from!=null)return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]};let n=Ge(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?We(null,()=>{}):We(e.where,o=>{if(o.field==="$id")return X({fieldType:"__ID__"});let a=i.get(o.field);return a?.semantics??(a?X(a):void 0)})}async function Tr(e,t,r){if(e.subtableCode||e.type==="UPDATE"&&e.from!=null)return;let n=await tp(e,t,r);if(n.capability!=="EXACT_PUSHDOWN")throw new j(`WHERE predicate cannot be represented by kintone REST (${Ft(n)})`)}async function Tt(e,t,r,n,i,o=!1,a=!1){let s;if(await po(e,t,n,i),Cm(e))return s=_m(e),o&&he.set(s,await Qa(e,s.columns,t,n,i,a)),s;let l=await us(e,t,n,i);await _p(e,t,r,n,i);let p=await Pn(e,t,n,i);if(p.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Ft(p)}).`);let u=be(e),d,c;if(p.capability==="SUPERSET_PREFILTER"){let g=await Pr(e,t,n,i),S=Fa(e,g);S.eligible&&xa(e,S)&&(d=S.plan)}if(d===void 0&&p.capability==="EXACT_PUSHDOWN"&&e.where!==null){let g=null;try{g=G(e.where)}catch{g=null}c=Bi({select:e,selectMode:u,capability:p,context:{allowFullScanExact:!0},serializedWholeWhere:g,relativeFunctionNames:kt(e.where)})??void 0,c&&(d=c.prefilterPlan)}let f=p.capability==="EXACT_PUSHDOWN"?u:"FULL_SCAN",E=await Cn(e,t,n,i),R=ro(e)?(e.orderMode==="KINTONE_NATIVE"?an:on)({stmt:e,staticMode:f,whereCapability:p.capability,whereReasons:p.reasons,orderSemantics:E.semantics,maxRecords:r.maxRecords??1e4,hasKlike:se(e.where)}):null;await vm(e,R?.kind==="CANONICAL_LOCAL"?"FULL_SCAN":f,t,n);let m=rp(e,r,R),h=c!==void 0&&(u==="FULL_SCAN"||R?.kind==="CANONICAL_LOCAL")?Zc(t,{aborted:!1},!0):t;try{f==="SIMPLE"?s=await Dm(e,h,m.effectiveOptions,n,R,E):s=await $m(e,h,m.effectiveOptions,n,i,p.capability==="EXACT_PUSHDOWN"&&d===void 0,E,d,l)}catch(g){np(m,g)}return o&&he.set(s,await Qa(e,s.columns,t,n,i,a)),s}async function us(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=vu(e,(p,u)=>o[u]),s=e.groupBy,l=Uu(s,e.columns,a);return wm(e,s,l),l}function wm(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 Nn=new WeakMap;async function bm(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 po(o,t,r);for(let s of Object.values(a))await i(s)};await i(e)}async function Pm(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=Le(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=>Le(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 po(e,t,r,n){Nn.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 Pm(e,t,r,n),s=bl(e,a,Il);s&&Nn.set(e,s)}function Nm(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 rp(e,t,r){let n=r?.kind==="CANONICAL_REST_TOP_N"||r?.kind==="KORDER_NATIVE"||r?.kind==="KORDER_CURSOR"?Nt({...e,orderBy:[]}):Nt(e),i=n.size>0&&t.onLimitReached==="truncate";return{reasons:n,effectiveOptions:i?{...t,onLimitReached:"error"}:t,truncateWasDisabled:i}}function np(e,t){throw e.reasons.size>0&&t instanceof Ie?new Ie(Nm(e.reasons)+(e.truncateWasDisabled?"onLimit=truncate\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002":"")+t.message):t}async function Oc(e,t){try{return await t()}catch(r){np(e,r)}}function at(e){return e?.type==="BOOLEAN"&&e.value===!1}function Cm(e){return e.from.appId===0&&e.from.cteName===ut}function no(e){return e.type==="FIELD_REF"?!0:e.type==="ARITH"?no(e.left)||no(e.right):e.type==="STRING_FUNC"?cs(e):!1}function Om(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:gn(e)}function gn(e){return e.type==="FIELD"?!0:e.type==="STRING_FUNC"?cs(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?gn(e.left)||gn(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"?no(r):gn(r))):!1}function cs(e){return e.args.some(t=>Om(t))}function Lm(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(no(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"STRFUNC_COL":if(cs(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"SCALAR_VALUE_COL":if(gn(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 _m(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.");Lm(e);let t=Ca([{}],e.columns),{rows:r,columns:n}=Fi(t,e.columns),i=xi(r,e.limit,e.offset);return{type:"SELECT",rows:i,columns:n,rowCount:i.length,warnings:[]}}async function Dm(e,t,r,n,i,o){let a=i?.kind==="CANONICAL_REST_TOP_N"?up(e):e,s=Jn(a),l=i?.kind==="CANONICAL_LOCAL"?Ct(e,e.from):s.fields,p=await ds(e,t,n),u=Es(e,p),d=e.columns.some(L=>L.type==="CASE_COL")?await Pr(e,t,n,void 0,ls(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&&!se(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 L=await Lu({client:t,app:s.app,fields:s.fields,query:Sa(e),offset:e.offset??0,limit:e.limit});g=L.records,L.cleanupWarning&&f.add(L.cleanupWarning)}else if(m)g=(await t.getRecords({app:s.app,query:s.query,fields:s.fields})).records;else{let L=e.where?G(e.where):"";g=await me(t.getRecords,s.app,L,l,{parallel:R,maxRecords:c,stopAfter:h,onLimit:E,onTruncate:w=>{f.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${w} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${w} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`)}})}let S=g.map(L=>nt(L,null));m||(S=Pa(S,e.orderBy,o.optionOrders,o.sortKinds,o.semantics,Na(e.columns,void 0,u.row,d)),S=xi(S,e.limit,e.offset));let{rows:O,columns:b}=Fi(S,e.columns,void 0,u.row,void 0,d);return{type:"SELECT",rows:O,columns:b,rowCount:O.length,warnings:[...f]}}async function vm(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=Jn(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,Ct(e,s))}for(let[a,s]of i.entries()){let l=[...s].filter(c=>!Du(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 ip(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 op(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,ip(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),jm(a,t,r)]),u=Um(s).filter(d=>l.get(d)==="STATUS");if(u.length>0){let d=await Rs(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 Um(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"&&io(e.left.expr,t),e.right.type==="CASE_VALUE"&&io(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 io(e,t){for(let r of e.branches)ot(r.condition,t)}function km(e){let t=[];ot(e.where,t),ot(e.having,t);for(let r of e.columns)r.type==="CASE_COL"&&io(r.expr,t);return t}function Le(e){return e.alias??e.cteName}function ap(e,t){return[e.from,...e.joins.map(r=>r.table)].find(r=>Le(r)===t)}function ps(e){return[e.from,...e.joins.map(t=>t.table)].filter(t=>t.cteName===null)}async function ds(e,t,r){let n=km(e);if(n.length===0)return new Map;let i=new Set,o=ps(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=ap(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 xe(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 sp(e,t,r){e!=="MIN"&&e!=="MAX"&&e!=="MODE"||t.type==="WILDCARD"||Mt(t,r)}function Mt(e,t){if(e.type==="FIELD_REF"){t.push(xe(e.field));return}if(e.type==="FIELD"){t.push(e);return}if(e.type==="ARITH"){Mt(e.left,t),Mt(e.right,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){Mt(e.left,t),Mt(e.right,t);return}if(e.type==="STRING_FUNC"){for(let r of e.args)r.type!=="AGG_REF"&&r.type!=="AGG_ARITH"&&Mt(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"&&Mt(r,t)}function oo(e,t){if(e.type==="AGG_REF"){sp(e.func,e.arg,t);return}e.type==="AGG_ARITH"&&(oo(e.left,t),oo(e.right,t))}function Ja(e,t){for(let r of e.args)r.type==="AGG_REF"||r.type==="AGG_ARITH"?oo(r,t):An(r,t)}function An(e,t){if(e.type==="STRING_FUNC"){Ja(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){An(e.left,t),An(e.right,t);return}if(e.type==="CASE_WHEN"){let r=[...e.branches.map(n=>n.result),...e.elseResult?[e.elseResult]:[]];for(let n of r)n.type==="STRING_FUNC"?Ja(n,t):n.type!=="ARRAY"&&n.type!=="FIELD_REF"&&n.type!=="ARITH"&&An(n,t)}}function Mm(e){let t=[];for(let r of e)r.type==="AGGREGATE"?sp(r.func,r.arg,t):r.type==="ARITH_AGG_COL"?oo(r.expr,t):r.type==="STRFUNC_COL"?Ja(r.expr,t):r.type==="SCALAR_VALUE_COL"&&An(r.expr,t);return t}var xm=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DROP_DOWN","RADIO_BUTTON","STATUS","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME"]);function Fm(e){return e.sortKind!==void 0?e.sortKind:e.fieldType==="NUMBER"||e.fieldType==="RECORD_NUMBER"?"number":xm.has(e.fieldType)?"string":void 0}async function lp(e,t,r,n){let i=Mm(e.columns);if(i.length===0)return;let o=new Set,a=ps(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=ap(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 ms(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??X(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=>Le(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 g=n?.get(y.cteName);return g?.columns.includes(f.field)?[g.columnMeta?.get(f.field)?.semantics??x("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=>Le(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 Zi(e,t){if(e.subtableCode){if(t==="_rid")return"SINGLE_LINE_TEXT";if(t==="_idx"||t==="_pid")return"NUMBER"}}function Ye(e,t){let r=e.semantics??X(e);return{sortKind:Fm(e),fieldType:e.fieldType,semantics:t===void 0?r:Er(r,t,e.code)}}function up(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 je(){return{semantics:x("string","KSQL_UNKNOWN")}}function cp(e="KSQL_ARRAY"){return{semantics:{fieldType:e,compareMode:"unsupported",inSubtable:!1,requiresCollectionOperators:!1}}}function xt(e){if(e==="$id")return{sortKind:"number",fieldType:"__ID__",semantics:X({fieldType:"__ID__"})};if(e==="_rid")return Y("string");if(e==="_pid"||e==="_idx"||e==="$revision")return Y("number")}var Km=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function Bt(e){if(e.func==="CAST"){let t=e.args[1];return t?.type==="STRING"&&t.value==="NUMBER"?Y("number"):Y("string")}return Km.has(e.func)?Y("number"):Y("string")}function wr(e,t){return e.type==="STRING"?Y("string"):e.type==="ARRAY"?cp():e.type==="NUMBER"||e.type==="ARITH"||e.type==="SCALAR_ARITH"?Y("number"):e.type==="STRING_FUNC"?Bt(e):e.type==="FIELD_REF"?t(xe(e.field))??je():e.type==="FIELD"?t(e)??je():je()}function fo(e){if(e.length===0)return je();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&&ai(r(n.semantics),r(t.semantics)))?e.every(i=>ai(i.semantics,t.semantics))?t:{...t,semantics:r(t.semantics)}:e.some(n=>n.semantics?.compareMode==="unsupported")?cp("KSQL_MIXED_UNSUPPORTED"):je()}function fs(e,t){if(e.type==="FIELD_REF")return t(xe(e.field))??je();if(e.type==="FIELD")return t(e)??je();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 Bt(e);let r=e.branches.map(n=>wr(n.result,t));return e.elseResult&&r.push(wr(e.elseResult,t)),fo(r)}function Bm(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 Qa(e,t,r,n,i,o=!1){let a=new Map;Bm(e)&&await Promise.all(ps(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?Ye(g,e.from.appId):void 0}let y=s.find(g=>Le(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?Ye(h,y.appId):xt(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?Ye(y,e.from.appId):xt(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?Ye(h,y.appId):xt(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&&Le(y)!==R.tableAlias)return!1;let h=Ee(y,R.field);return a.get(y.appId)?.has(h)===!0||xt(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=xe(R),y=d(p(m),m);y&&c.set(R,y)}return c}if(f)for(let R of t){let m=xe(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=xe(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=fs(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=Bt(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=Bt(R.expr);else if(R.type==="WINDOW_COL")h=Y("number");else if(R.type==="CASE_COL"){let g=R.expr.branches.map(S=>wr(S.result,p));R.expr.elseResult&&g.push(wr(R.expr.elseResult,p)),h=fo(g)}else R.type==="SCALAR_SUBQUERY_COL"&&(h=je());h&&c.set(y,h)}),c}function pp(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=fo([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,je())}),i}function Es(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=>Le(u)===s.tableAlias);return!p||p.cteName!==null?void 0:Zi(p,s.field)??t.get(p.appId)?.get(Ee(p,s.field))}if(e.joins.length===0)return e.from.cteName!==null?void 0:Zi(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=Zi(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 $m(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([_n(e.where,t,r,n,i),_n(e.having,t,r,n,i)]);let[c,f,E]=await Promise.all([op(e,t,n),ds(e,t,n),lp(e,t,n,i)]),R=Es(e,f),m=await Pr(e,t,n,i,Ge(e.having)||ls(e)),y=ep(e,m),h=ur(e,c);xo(h);let g=h.mainCondition,S=h.joinConditions;if(s&&o)throw new Error("internal error: relative-date prefilter must disable original WHERE pushdown.");let O=s?s.prefilterWhere:g,b=await vp(e.columns,t,r,n,i),L=at(e.where),w=L?Promise.resolve([]):Sn(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 re=K.table.alias?S.get(K.table.alias)??null:null;re!==null?_.push({join:K,promise:Sn(e,K.table,t,p,d,!1,r.onLimitReached??"error",u,re,!0,l)}):C.push(K)}let v=a?Promise.resolve(a):Cn(e,t,n,i);v.catch(()=>{});let k=await w,A=new Map;A.set(e.from.alias,k);for(let{join:K,promise:re}of _)A.set(K.table.alias,await re);await Promise.all(C.map(async K=>{let F=await yp(e,K,A,t,p,d,r.onLimitReached??"error",u,null,l)??await Sn(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:I}=await v,{rows:U,columns:B}=_a({tables:A,stmt:e,scalarCache:b,optionOrders:P,sortKinds:N,orderSemantics:I,fieldTypeResolver:R.row,fieldSemanticsResolver:m,havingFieldTypeResolver:R.having,havingFieldSemanticsResolver:y,aggregateSortKindResolver:E,appliedKlikes:s?.appliedKlikes??h.appliedKlikes,...s?{residualWhere:s.residualWhere}:{},resolvedGroupingSpec:Nn.get(e),plainGroupByPlan:l});return{type:"SELECT",rows:U,columns:B,rowCount:U.length,warnings:[...u]}}async function dp(e,t,r,n,i=!1,o=!1){let[a,s]=await Promise.all([e.left.type==="UNION"?dp(e.left,t,r,n,i,o):Tt(e.left,t,r,n,void 0,i,o),Tt(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:fp(d,l),f={type:"SELECT",rows:c,columns:l,rowCount:c.length};return i&&he.set(f,pp(a,s)),f}function fp(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 Gm(e,t,r,n,i,o=!1){if((i==null||i.size===0)&&dt(e))return Tt(ft(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 Op(t):s.query.type==="DESCRIBE"?l=await Lp(s.query,t,n):l=await $t(s.query,t,r,a,n,!0),a.set(s.name,{rows:l.rows,columns:l.columns,columnMeta:he.get(l)})}return $t(e.query,t,r,a,n,o)}async function $t(e,t,r,n,i,o=!1){if(e.type==="UNION"){let[l,p]=await Promise.all([$t(e.left,t,r,n,i,o),$t(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:fp(f,u),R={type:"SELECT",rows:E,columns:u,rowCount:E.length};return o&&he.set(R,pp(l,p)),R}if(!(e.from.cteName!=null&&e.from.cteName!==ut||e.joins.some(l=>l.table.cteName!=null)))return Tt(e,t,r,i,n,o,!1);let s=await Vm(e,t,r,n,i);return o&&he.set(s,await Qa(e,s.columns,t,i,n)),s}async function Vm(e,t,r,n,i){await po(e,t,i,n);let o=Nn.get(e),a=await us(e,t,i,n),s=new Set,l=F=>{if(F.alias!==null||F.cteName===null)return F;let D=Le(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=Le(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([_n(e.where,t,r,i,n),_n(e.having,t,r,i,n),_p(e,t,r,i,n)]);let E=await Pn(e,t,i,n);if(E.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Ft(E)}).`);let R=await Cn(e,t,i,n),m=ro(e)?(e.orderMode==="KINTONE_NATIVE"?an:on)({stmt:e,staticMode:"FULL_SCAN",whereCapability:E.capability,whereReasons:E.reasons,orderSemantics:R.semantics,maxRecords:d,hasKlike:se(e.where)}):null,y=rp(e,r,m),h=y.effectiveOptions,[g,S,O]=await Promise.all([op(e,t,i),ds(e,t,i),lp(e,t,i,n)]),b=Es(e,S),L=await Pr(e,t,i,n,Ge(e.having)||ls(e)),w=ep(e,L),_=ur(e,g);xo(_);let C=await vp(e.columns,t,h,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(Lc)),A.set(e.from.alias,F.columns)}else{let F=await Oc(y,()=>Sn(e,e.from,t,d,f,!0,h.onLimitReached??"error",c,_.mainCondition,E.capability==="EXACT_PUSHDOWN",a));k.set(e.from.alias,F)}let P=e.joins.map(F=>Oc(y,async()=>{if(F.table.cteName!=null){let D=u(F.table.cteName);k.set(F.table.alias,D.rows.map(Lc)),A.set(F.table.alias,D.columns)}else{let D=F.table.alias?_.joinConditions.get(F.table.alias)??null:null,oe=await yp(e,F,k,t,d,f,h.onLimitReached??"error",c,D,a)??await Sn(e,F.table,t,d,f,!1,h.onLimitReached??"error",c,D,!0,a);k.set(F.table.alias,oe)}}));await Promise.all(P);let{optionOrders:N,sortKinds:I,semantics:U}=await v,B=e.joins.length===0&&e.from.cteName!=null?u(e.from.cteName).columns:void 0,{rows:K,columns:re}=_a({tables:k,stmt:e,scalarCache:C,optionOrders:N,sortKinds:I,orderSemantics:U,fieldTypeResolver:b.row,fieldSemanticsResolver:L,havingFieldTypeResolver:b.having,havingFieldSemanticsResolver:w,aggregateSortKindResolver:O,appliedKlikes:_.appliedKlikes,sourceColumns:B,tableColumns:A,hiddenQualifiedAliases:s,resolvedGroupingSpec:o,plainGroupByPlan:a});return{type:"SELECT",rows:K,columns:re,rowCount:K.length,warnings:[...c]}}function Lc(e){return Object.fromEntries(Object.entries(e).map(([t,r])=>[t,{value:r??""}]))}async function Sn(e,t,r,n,i,o,a,s,l=null,p=!0,u){let d=Ct(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?pl(e,t.appId).query:"",y=l!==null?G(l):"",h=m&&y?`(${m}) and (${y})`:m||y;return(await ve(r.getRecords,t.appId,h,d,{parallel:i,maxRecords:n,onLimit:a,onTruncate:c})).records}let R=(await ve(r.getRecords,t.appId,"",d,{parallel:i,maxRecords:n,onLimit:a,onTruncate:c})).records;return qu(R,t.subtableCode)}var Ep=50;function Wm(e){let t=we(e);return t!==null?JSON.stringify(t):e}function Za(e){return JSON.stringify(e)}function Gt(e,t){return JSON.stringify(e.map((r,n)=>t[n]?Wm(r):r))}function vn(e,t){let r=e.raw.get(Za(t));if(r!==void 0)return r;if(e.numericKey.some(Boolean))return e.normalized.get(Gt(t,e.numericKey))}async function Un(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,Za(m),y),l.some(Boolean)&&u(p.normalized,Gt(m,l),y)},c=new Set,f=[],E=new Set;for(let m of r){let y=Za(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 Nr([...c],Ep)){let y=`${t[0]} in (${m.map(ao).join(",")})`,h=await me(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=>Rp(g[O]?.value)),S)}}for(let m of f){let y=t.map((g,S)=>`${g} = ${ao(m[S])}`).join(" and "),h=await me(n.getRecords,e,y,["$id"],{maxRecords:a,parallel:s});h.length!==0&&d(m,Hm(h))}return p}function Hm(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 Rp(e){return typeof e=="string"?e:e==null?"":String(e)}function ao(e){return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Nr(e,t){let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}var mp=50,Ym=6,_c=mp*Ym;async function yp(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 w=L[f]?.value,_=Rp(w).trim();_.length>0&&m.add(_)}let y=[...m];if(y.length===0)return[];if(y.length>_c)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 ${_c} \u4EF6\uFF09\u3002`),null;let h=Ct(e,t.table,p),g=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=Nr(y,mp),O=[],b=new Set;for(let L of S){let w=`${E} in (${L.map(ao).join(",")})`,_=l!==null?`(${w}) and (${G(l)})`:w,C=await ve(n.getRecords,t.table.appId,_,h,{parallel:o,maxRecords:i,onLimit:a,onTruncate:g});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 Dc=new Map,vc=new Map,Uc=new Map,kc=new Map,Mc=new Map,xc=new Map;function Cr(e,t,r){return e.get(t)?.get(r)}function Or(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=Cr(kc,r,e);if(n)return n;let i=t.getFields(e);return Or(kc,r,e,i),i}async function qe(e,t,r){let n=Cr(xc,r,e);if(n)return n;let i=t.getNumberPrecision(e);return Or(xc,r,e,i),i}async function Rs(e,t,r){let n=Cr(Mc,r,e);if(n)return n;let i=t.getProcessStatuses(e);return Or(Mc,r,e,i),i}async function ms(e,t,r){let n=await Rs(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=Cr(Dc,r,e);if(n)return n;let i=await Q(e,t,r),o=new Map(i.map(a=>[a.code,a.fieldType]));return Or(Dc,r,e,o),o}async function es(e,t,r){let n=Cr(vc,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 Or(vc,r,e,o),o}async function jm(e,t,r){let n=await es(e,t,r);return new Map([...n.entries()].map(([i,o])=>[i,new Set(o.keys())]))}async function Fc(e,t,r){let n=Cr(Uc,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 Or(Uc,r,e,o),o}function qm(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 zm(e,t,r,n){let i=qm(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?Ye(R,e.from.appId):void 0}let f=o.find(R=>Le(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?Ye(E,f.appId):xt(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?Ye(f,e.from.appId):xt(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?Ye(E,f.appId):xt(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(xe(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=Bt(d.expr);else if(d.type==="SCALAR_SUBQUERY_COL")c=je();else if(d.type==="CASE_COL"){let f=d.expr.branches.map(E=>wr(E.result,l));d.expr.elseResult&&f.push(wr(d.expr.elseResult,l)),c=fo(f)}else d.type==="AGGREGATE"&&(d.func==="MIN"||d.func==="MAX"||d.func==="MODE"?d.arg.type!=="WILDCARD"&&(c=fs(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(xe(d))?.semantics;if(!c){let E=xe(d);E.tableAlias===null&&a.has(E.field)&&u.set(d,X({fieldType:"KSQL_AMBIGUOUS"}));continue}let f=c;if(c.fieldType==="STATUS"&&c.source&&e.orderMode!=="KINTONE_NATIVE"){let E=await Rs(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 Cn(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([Xm(e,t,r),Jm(e,t,r),zm(e,t,r,n)]);return{optionOrders:o,sortKinds:a,semantics:s}}async function Xm(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 es(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 es(a.appId,t,r);for(let[l,p]of s.entries())n.set(`${a.alias}.${l}`,p)}return n}async function Jm(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 Fc(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 Fc(a.appId,t,r);for(let[l,p]of s.entries())n.set(`${a.alias}.${l}`,p)}return n}function hp(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 Qm=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function Zm(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||Qm.has(o.fieldType))throw new Error(`ArgumentError: DML target field ${i} is not writable (${o.fieldType}).`)}}async function Fe(e,t,r,n){let i=await Q(e,r,n);return Zm(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")?qe(e,n,i):void 0}function Vt(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=Ae(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 ey(e,t,r,n,i){let o=await Fe(e.appId,e.fields,t,n),a=await tn({statement:e,fieldInfos:o,dmlMaxRows:_e(r.dmlMaxRows,"dmlMaxRows",lt),dmlMaxSubtableRows:_e(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",Se),statementNumber:i,loadNumberPrecision:()=>qe(e.appId,t,n)});return _y(e,a,o)}async function ty(e,t,r,n,i){let{fieldInfos:o,prepared:a}=await gp(e,t,r,n,i);return vy(e,a,o)}async function gp(e,t,r,n,i){let o=await Fe(e.appId,e.fields,t,n),a=new Map(o.map(m=>[m.code,m.fieldType])),s=Pp(e),l=new Set;for(let m of s){let y=Gt(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 Un(e.appId,e.keyFields,s,t,r,a),u=s.map(m=>vn(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 Nr(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 Tu({statement:e,matches:E,fieldInfos:o,dmlMaxRows:_e(r.dmlMaxRows,"dmlMaxRows",lt),dmlMaxSubtableRows:_e(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",Se),statementNumber:i,loadNumberPrecision:()=>qe(e.appId,t,n)});return{fieldInfos:o,prepared:R}}async function ry(e,t,r,n){if(r.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let i=await Fe(e.appId,e.fields,t,n),o=await tn({statement:e,fieldInfos:i,dmlMaxRows:_e(r.dmlMaxRows,"dmlMaxRows",lt),dmlMaxSubtableRows:_e(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",Se),loadNumberPrecision:()=>qe(e.appId,t,n)}),a=ya(o);if(r.confirm&&!await r.confirm(o.guards.parentRows,"INSERT",{statementIndex:0,statementCount:1,statementType:"INSERT",targetAppId:e.appId,applyDetail:Eo(a),applyDiagnostic:a}))throw new te("INSERT",o.guards.parentRows);let s=await Nu(o,t,a);return{...s,diagnostic:Ce(a,s)}}async function ny(e,t,r,n){if(r.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let{prepared:i}=await gp(e,t,r,n,1),o=ha(i);if(r.confirm){let s=Eo(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 Cu(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 iy(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 Eo(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=iy(r?Qi(r):[],n?Qi(n):[]),a=oy(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=Qi(r),f=Qi(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 Qi(e){return e.targets.filter(t=>t.targetKind==="SUBTABLE").map(t=>{let r=Kt(t,"APPEND"),n=Kt(t,"REMOVE");return{table:t.field,patchRows:(t.changedCount??0)-r-n,appendRows:r,removeRows:n}})}function Kt(e,t){return e.operations.filter(r=>r.kind===t).reduce((r,n)=>r+(n.count??0),0)}function oy(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:Kt(r,"ADD"),removedValues:Kt(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 Ap(e,t,r,n,i,o){if(e.type==="INSERT"&&e.applyBlocks?.length)return ey(e,t,r,n,o);if(e.type==="UPSERT"&&(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length))return ty(e,t,r,n,o);if(e.type==="UPDATE"&&e.applyBlocks?.length){let a=await bp(e,t,r,n,o);if(a.type!=="VALIDATION")throw new Error("InternalError: APPLY VALIDATE ONLY returned a mutation result.");return a}return(await ys(e,t,r,n,i,o)).result}var so=class extends Error{constructor(r,n){super(`RejectLimitExceededError: ${r}`);this.diagnostic=n;this.name="RejectLimitExceededError"}};async function ys(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 Fe(e.appId,u,t,n);e.type==="UPDATE"&&await Tr(e,t,n);let c=new Map(d.map(P=>[P.code,P])),f=await st(e.appId,u,d,t,n),E=Be(d,p),R=zu(E),m=(await ay(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"),h=e.type==="UPDATE"?uy:e.type.startsWith("UPSERT")?P=>cy(P,t,r.maxRecords??1e4):void 0,g=r.loadUpdateModeSnapshots??h,S=y.length>0&&g!==void 0,O=new Map;if(S){ca(y,u,d);let P=await g({appId:e.appId,candidates:y,fields:R}),N=new Map;for(let I of y){if(I.targetId===void 0)throw new Error(`InternalError: update-mode validation candidate has no targetId (row=${I.rowNumber}).`);let U=P.get(I.targetId);if(!U)throw new Error(`InternalError: update-mode snapshot is missing for record ${I.targetId}.`);let B=Xu(U,I.record??{});N.set(I.rowNumber,B)}f===void 0&&[...N.values()].some(I=>vt(I,E))&&(f=await qe(e.appId,t,n));for(let I of y){let U=N.get(I.rowNumber);if(!U)throw new Error(`InternalError: validation post-image is missing for row ${I.rowNumber}.`);O.set(I.rowNumber,Ut(U,E,f,o,I.rowNumber,l))}}let b=pa(m,l,p,u,d,o,f,e.checkGroups??[],a,s,{validateUpdateBuiltIns:!S}),{errors:L,invalidRows:w,invalidRowNumbers:_}=b;if(S){let P=new Map(b.candidateResults.map(N=>[N.rowNumber,N]));L=[],_=new Set;for(let N of m){let I=P.get(N.rowNumber);if(!I)throw new Error(`InternalError: validation detail is missing for row ${N.rowNumber}.`);if(N.mode==="create"){let K=[...I.preErrors,...I.builtInErrors,...I.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=Ju({rowNumber:N.rowNumber,setFields:u,normalizedPostImage:U.normalizedRecord,preErrors:I.preErrors,postImageErrors:U.errors,checkErrors:I.checkErrors});N.record=B.writeRecord,L.push(...B.errors);for(let K of B.invalidRowNumbers)_.add(K)}w=_.size}let C=[...p,...yr],v={type:"VALIDATION",operation:l,validatedRows:m.length,validRows:m.length-w,invalidRows:w,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:X({fieldType:"RECORD_NUMBER"})});continue}let N=c.get(P);N&&k.set(P,Ye(N,e.appId))}let A=new Set(["$err_statement","$err_row"]);for(let P of yr)k.set(P,Y(A.has(P)?"number":"string"));return br.set(v,k),{result:v,candidates:m,invalidRowNumbers:_,columnMeta:k}}async function Kc(e,t,r,n,i,o){let a=await ys(e,t,r,n,i,o),s=e.errorTable;if(!s)throw new Error("ArgumentError: ON ERROR SKIP requires INTO #error_table.");St(i,s,a.result.columns,a.result.errors,r.tempTableMaxRows??At,a.columnMeta);let l=e.rejectLimit??null;if(l!==null&&a.result.invalidRows>l)throw new so(`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 ay(e,t,r,n,i,o,a,s){if(e.type==="UPDATE")return ly(e,r,n,i,o,s);let l,p,u,d,c;if(e.type==="INSERT"||e.type==="UPSERT")Bc(e,e.fields),c=new Map(e.fields.map(S=>[S,a.get(S)?.fieldType??""])),Wt(e,c),l=e.values.map(S=>S.map((O,b)=>O.type==="CASE_VALUE"?yt(O.expr,{},a.get(e.fields[b])?.fieldType):O));else{let S=await gs.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");Bc(e,S.columns),p=S.rows,u=S.importPresence,d=S.importRowErrors;let b=S.columnMeta;c=new Map(S.columns.map(L=>{let w=b?.get(L),_=w?.fieldType??(w?.semantics?.compareMode==="number"||w?.sortKind==="number"?"NUMBER":"SINGLE_LINE_TEXT");return[L,_]})),Wt(e,c),l=S.rows.map(L=>S.columns.map(w=>L[w]??""))}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,Ke(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=>Ke(S.payload.get(O)))),m=e.keyFields.map(S=>E.get(S)==="NUMBER"),y=new Map;for(let S of R){let O=Gt(S,m);y.set(O,(y.get(O)??0)+1)}let h=co.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 Un(e.appId,e.keyFields,R,r,n,E);return f.forEach((S,O)=>{let b=R[O],L=vn(g,b);S.mode=L===void 0?"create":"update",L!==void 0&&(S.targetId=L),e.keyFields.forEach((w,_)=>{b[_]===""&&S.preErrors.push({field:w,code:"ERR_KEY_EMPTY",message:`UPSERT \u30AD\u30FC ${w} \u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093`})}),!h&&(y.get(Gt(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 hs(e){return e.checkGroups?Rr(e.checkGroups):[]}function Bc(e,t){let r=new Set(t);for(let n of hs(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 sy=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE","KSQL_ARRAY"]);function Wt(e,t){if(e.checkGroups)for(let r of Vl(e.checkGroups)){let n=r.tableAlias?`${r.tableAlias}.${r.field}`:r.field,i=t.get(n)??t.get(r.field);if(sy.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 ly(e,t,r,n,i,o){if(e.from)return dy(e,e.from,t,r,n,i,o);await Dp(e.assignments,t,r,n);let a=await Re(e.appId,t,n),s=Sp(e,a);Wt(e,ts(a,e.appId));let l,p=new Map,u=new Map;if(Ri(e)){let d=qo(e),c=[...new Set([...d.fields,...s,...o??[]])],f=await ve(t.getRecords,d.app,d.query,c,{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1,onLimit:"error"});u=eo(f.records),p=u,l=Xo(e,f.records,a).flatMap(E=>E.records)}else{let d=Yr(e);if(s.length>0){let c=[...new Set(["$id",...s,...o??[]])],f=await ve(t.getRecords,d.app,d.query,c,{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1,onLimit:"error"});u=eo(f.records),p=u,l=jr(e,[...p.keys()],a).flatMap(E=>E.records)}else if(o){let c=await ve(t.getRecords,d.app,d.query,[...o],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1,onLimit:"error"});u=eo(c.records),l=jr(e,[...u.keys()],a).flatMap(f=>f.records)}else{let c=await Li(t.getRecords,d.app,d.query,{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1});l=jr(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:py(p.get(d.id),e.appId),evaluationFieldTypes:ts(a,e.appId)}))}function eo(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 uy(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 cy(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 Nr(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 Sp(e,t){if(e.from)return[];let r=new Set;for(let n of hs(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 py(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 ts(e,t){return new Map([...e,...[...e].map(([r,n])=>[`APP${t}.${r}`,n]),["$id","RECORD_NUMBER"],[`APP${t}.$id`,"RECORD_NUMBER"]])}async function dy(e,t,r,n,i,o,a){let s=await xp(e,t,r,i,o);Wt(e,s.evaluationTypes);let l=await Tp(e,t,r,n,i,o,a),p=await Re(e.appId,r,i),u=Qo(e,l,p).flatMap(f=>f.records),d=new Map(l.map(f=>[Number(f.target.$id?.value),f])),c=a?eo(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:fh(d.get(f.id),e.appId,t.alias),evaluationFieldTypes:s.evaluationTypes}))}var fy=Ep,Ey=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);async function Tp(e,t,r,n,i,o,a){let s=await Ry(e,t,r,i),l=await xp(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 my(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=$c(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([...ky(e),...l.targetFields,...a??[]])],m=t.targetFilter===null?"":Yr({...e,from:null,where:t.targetFilter,checkGroups:void 0}).query,y=[],h=new Set,g=0;for(let O of Nr([...f.values()],fy)){let b=`${t.targetJoinField} in (${O.map(ao).join(",")})`,L=m?`(${b}) and (${m})`:b,w=await ve(r.getRecords,e.appId,L,R,{maxRecords:E,parallel:n.fetchParallel??1,onLimit:"error"});if(g+=w.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 _ of w.records){let C=_.$id?.value;if(typeof C!="string"||C==="")throw new Error("ArgumentError: UPDATE ... FROM target record does not contain a valid $id.");h.has(C)||(h.add(C),y.push(_))}}let S=[];for(let O of y){let b=O[t.targetJoinField]?.value,L=$c(b,s,"target");if(L===null)continue;let w=c.get(L);w!==void 0&&S.push({target:O,source:w})}return S}async function Ry(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 my(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(Ey.has(d??""))throw new Error(`ArgumentError: UPDATE ... FROM does not support source field type ${d} (${u}).`)}return(await ve(n.getRecords,e.appId,"",t,{maxRecords:i.maxRecords??1e4,parallel:i.fetchParallel??1,onLimit:"error"})).records.map(u=>nt(u,null))}function $c(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 kn(e,t,r,n,i){let o=await ys(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 yy(e,t,r,n){if(e.applyBlocks?.length)return ry(e,t,r,n);if(e.checkGroups?.length)return kn(e,t,r,n);if(e.subtableCode)return Fy(e,t,r,n);let i=await Fe(e.appId,e.fields,t,n),o=await st(e.appId,e.fields,i,t,n),a=await Re(e.appId,t,n),s=Ei(e,a);Vt(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 hy(){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 gy(e,t,r,n,i){if(!r.enableImport)throw new Error("UnsupportedError: IMPORT capability is disabled.");let o=pc(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(oe=>oe.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 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 qe(e.appId,t,n):void 0,R=await ji(o,new Map),m=e.source.kind==="JSON"?mc(e.source,R,d,r.maxRecords??1e4):yc(e.source,R,d,e.replaceSubtables??[],r.maxRecords??1e4,e.recordNumberSourceHeader),y=e.source.kind==="CSV"?"UPDATE":e.keyFields?"UPSERT":"INSERT",h=Sc(m,d,c,E,y);if(e.source.kind==="CSV")return Ay(e,m,h,c,t,r,i);Va(h,e.rejectLimit);let g=[...new Set(d.flatMap(D=>D.kind==="FIELD"?[D.field]:D.children))],S=Ha(h.errors,g),O=[...g,...Wa],b=h.invalidParentRows.size,L={preflight:"ACTUAL_DATA",parents:{total:h.parents.length,valid:h.parents.length-b,invalid:b,mutationCandidates:h.parents.filter(D=>D.valid).length},tables:Object.fromEntries(h.tableCounts),writesKintone:!1},w={type:"VALIDATION",operation:y,validatedRows:h.parents.length,validRows:h.parents.length-b,invalidRows:b,errorCount:S.length,columns:O,errors:S,importDetail:L,...e.validationErrorTable?{errTable:e.validationErrorTable}:{}};if(e.validationErrorTable&&i&&St(i,e.validationErrorTable,O,S,r.tempTableMaxRows??At,new Map),e.validateOnly)return w;if(Ic(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.");St(i,e.errorTable,O,S,r.tempTableMaxRows??At,new Map)}let _=h.parents.filter(D=>D.valid),C=new Map(c.map(D=>[D.code,D.fieldType])),v=_.map(()=>{});if(e.keyFields){for(let ge of e.keyFields)if(!e.fields.includes(ge))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${ge}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let D=e.keyFields.map(ge=>C.get(ge)==="NUMBER"),H=new Set,oe=_.map(ge=>e.keyFields.map(qt=>String(ge.top[qt]?.value??"")));for(let ge of oe){let qt=Gt(ge,D);if(H.has(qt))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(qt)}let ze=await Un(e.appId,e.keyFields,oe,t,r,C);oe.forEach((ge,qt)=>{v[qt]=vn(ze,ge)})}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 Nr([...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 oe of H.records){let ze=Number(oe.$id?.value),ge=Number(oe.$revision?.value);Number.isFinite(ze)&&A.set(ze,{id:ze,...Number.isFinite(ge)?{revision:ge}:{},record:oe})}}let N=wc(_,v,A),I={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:I}))throw new te(e.keyFields?"UPDATE":"INSERT",N.length)}let U=D=>new Map(Object.entries(D).map(([H,oe])=>[H,oe.value])),B=D=>Tc(U(D.top),new Map([...D.subtables].map(([H,oe])=>[H,oe.map(ze=>({values:U(ze)}))]))),K=N.filter(D=>D.mode==="INSERT"),re=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<re.length;D+=100)await t.putRecords({app:e.appId,records:re.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:re.length,affectedRows:N.length,skippedRows:h.invalidParentRows.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:I}:{type:"INSERT",createdIds:F,insertedCount:F.flat().length,affectedRows:N.length,skippedRows:h.invalidParentRows.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:I}}if(e.writeMode==="UPDATE_RECORD_NUMBER")return Sy(e,o,t,r,n,i);let a={appId:e.appId,fields:e.fields,select:hy(),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};co.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 Ap(s,t,{...r,onLimitReached:"error"},n,i,1);return s.validationErrorTable&&i&&St(i,s.validationErrorTable,d.columns,d.errors,r.tempTableMaxRows??At,br.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",Kc(s,t,r,n,i,1));return p(d)}let u=await(s.type==="UPSERT_SELECT"?Cp(s,t,r,n,i):wp(s,t,r,n,i));return p(u)}async function Ay(e,t,r,n,i,o,a){if(!e.recordNumberSourceHeader||!e.replaceSubtables?.length)throw new Error("InternalError: incomplete CSV subtable replacement AST.");bc(t.records);let s=t.records.map(A=>A.recordNumberSourceValue??""),l=qa(s,e.recordNumberSourceHeader),p=[...e.replaceSubtables],u=[...new Set(n.filter(A=>!A.inSubtable&&A.fieldType==="SUBTABLE").map(A=>A.code))],d=await me(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 I of u){let U=A[I]?.value;if(Array.isArray(U)){for(let B of U)if(B.id){let K=f.get(B.id)??[];K.push({parentId:P,table:I}),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 I=E[P];return I!==void 0&&!c.has(I)&&N.push({operation:"UPDATE",parentRow:A.parentRow,field:e.recordNumberSourceHeader,code:"ERR_RECORD_NUMBER_NOT_FOUND",message:`record number ${I} does not exist in APP${e.appId}`,sourceValues:t.records[P].top}),{...A,valid:N.length===0,errors:N}}),m=Pc(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};Va(g,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,I)=>N+Number(I[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")}])),w={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:h.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=Ha(y,_),v=[..._,...Wa];if(e.validateOnly){if(e.validationErrorTable&&!a)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return e.validationErrorTable&&a&&St(a,e.validationErrorTable,v,C,o.tempTableMaxRows??At,new Map),{type:"VALIDATION",operation:"UPDATE",validatedRows:R.length,validRows:R.length-h.size,invalidRows:h.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:h.size,mutationCandidates:S.length},tables:L,rowIdPolicy:"PRESERVE_EXISTING",rowIdNotFound:w.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.");St(a,e.errorTable,v,C,o.tempTableMaxRows??At,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:w}))throw new te("UPDATE",S.length)}let k=A=>new Map(Object.entries(A).map(([P,N])=>[P,N.value]));for(let A of S){let P=Ya(k(A.top),new Map([...A.subtables].map(([N,I])=>[N,I.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:h.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:w}}async function Sy(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 Fe(e.appId,e.fields,r,i),s=await st(e.appId,e.fields,a,r,i),l=await ji(t,new Map),p=Ba(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=qa(u,e.recordNumberSourceHeader),c=new Set,f=[...new Set(d.normalized.filter(w=>w!==null))];for(let w=0;w<f.length;w+=100){let _=f.slice(w,w+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(w=>[w.code,w])),R=new Map(e.fields.map(w=>[w,E.get(w)?.fieldType??"SINGLE_LINE_TEXT"])),m=p.rows.map((w,_)=>{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,w[k]??""])]),preErrors:v,record:{},evaluationRow:w,evaluationFieldTypes:R}}),y=[e.recordNumberSourceHeader,...e.fields],h=pa(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&&St(o,e.validationErrorTable,g,h.errors,n.tempTableMaxRows??At,new Map),S}if(!e.onErrorSkip&&h.invalidRows>0){let w=h.errors[0];throw new Error(`DmlValidationError: ${w.$err_code} ${w.$err_message} (row=${w.$err_row}, field=${w.$err_field})`)}if(e.onErrorSkip){if(!o||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch.");if(St(o,e.errorTable,g,h.errors,n.tempTableMaxRows??At,new Map),e.rejectLimit!=null&&h.invalidRows>e.rejectLimit)throw new so(`rejected rows (${h.invalidRows}) exceed REJECT LIMIT (${e.rejectLimit}).`,S)}let O=m.filter(w=>!h.invalidRowNumbers.has(w.rowNumber));if(n.confirm&&!await n.confirm(O.length,"UPDATE"))throw new te("UPDATE",O.length);let b=O.map(w=>({id:w.targetId,record:w.record}));for(let w=0;w<b.length;w+=100)await r.putRecords({app:e.appId,records:b.slice(w,w+100)});let L={type:"UPDATE",updatedCount:b.length,...e.onErrorSkip?{affectedRows:b.length,skippedRows:h.invalidRows,rejectLimit:e.rejectLimit??null,errTable:e.errorTable}:{}};return Object.assign(L,{insertedCount:0,importAudit:p.importAudit}),L}async function Ty(e,t,r,n,i,o){let a=co.get(e);if(!a){let R=i&&i.size>0?await $t(e.select,t,r,i,n,!0):await Tt(e.select,t,r,n,void 0,!0);return{rows:R.rows,columns:R.columns,columnMeta:he.get(R)}}let s=await ji(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"?Ka(a.source,s,u,l):Ba(a.source,s,l,e.fields,o);if(a.audit=d.importAudit,a.source.kind==="JSON"||!a.source.projection)return d;let c=Nc(a.source.projection),f=new Map(i??[]);f.set(ja,d);let E=await $t(c,t,{...r,onLimitReached:"error"},f,n,!0);return{rows:E.rows,columns:E.columns,columnMeta:he.get(E)}}var gs={materialize:Ty};function Ip(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 wp(e,t,r,n,i){if(e.checkGroups?.length)return kn(e,t,r,n,i);let o=await Fe(e.appId,e.fields,t,n),a=await st(e.appId,e.fields,o,t,n),s=await gs.materialize(e,t,r,n,i,o),{rows:l,columns:p}=s;if(Ip(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:hp(h,u.get(m))}}),R});d.forEach(f=>Vt([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 Gc(e,t,r,n,i){if(e.applyBlocks?.length)return bp(e,t,r,n);if(e.checkGroups?.length&&at(e.where)){let E=await Fe(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 Sp(e,R),Wt(e,ts(R,e.appId)),await Tr(e,t,n),{type:"UPDATE",updatedCount:0}}if(e.checkGroups?.length)return kn(e,t,r,n,i);if(e.subtableCode)return await Tr(e,t,n),Ky(e,t,r,n);let o=await Fe(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 Tr(e,t,n),at(e.where))return{type:"UPDATE",updatedCount:0};if(e.from!=null)return Uy(e,e.from,t,r,n,i);let l=r.maxRecords??1e4;await Dp(e.assignments,t,r,n);let p=await Re(e.appId,t,n);if(Ri(e)){let E=qo(e),m=(await ve(t.getRecords,E.app,E.query,[...E.fields],{maxRecords:l,parallel:r.fetchParallel??1})).records,y=Xo(e,m,p);if(Vt(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=Yr(e),c=(await Li(t.getRecords,u.app,u.query,{maxRecords:l,parallel:r.fetchParallel??1})).ids,f=jr(e,c,p);if(Vt(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 bp(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 Iy(e,t,r,n,i);let o=await Q(e.appId,t,n),a=tt(e,o),s=yi(e,o),l=ia(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}.`);Si(p.records[0]);let d=au({statement:e,snapshot:p.records[0],fieldInfos:o,metadata:a}),c=Be(o,e.assignments.map(O=>O.field)),f=vt(d.postImage,c)?await qe(e.appId,t,n):void 0,E=Ut(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=_e(r.dmlMaxRows,"dmlMaxRows",lt),m=_e(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",Se),y=d.parentRows>R||d.changedSubtableRows>m;if(e.validateOnly){let O=nn({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:On(O.branches[0]),guards:Ln(O.branches[0]),deletedRows:{total:d.tables.reduce((L,w)=>L+w.deletedRows,0),parentRows:d.tables.some(L=>L.deletedRows>0)?1:0},diagnostic:O};return br.set(b,Ro(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 h=gi(d,E.normalizedRecord),g=Jr(h),S=nn({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=Eo(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 Iy(e,t,r,n,i){let o=_e(r.dmlMaxRows,"dmlMaxRows",lt),a=_e(r.dmlMaxSubtableRows,"dmlMaxSubtableRows",Se),s=await Q(e.appId,t,n),l=tt(e,s),p;if(lo(e))p=await Ny(e,t,r,s,n);else{let f=yi(e,s),E=Yr(e).query,R=o+1;p=await me(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 bi({statement:e,snapshots:p,fieldInfos:s,metadata:l,dmlMaxRows:o,dmlMaxSubtableRows:a,statementNumber:i,loadNumberPrecision:()=>qe(e.appId,t,n)});if(e.validateOnly)return Dy(e,u,s);rl("phase15b",e);let d=nn(u);if(r.confirm){let f=Eo(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 Pu(u,t,d);return{...c,diagnostic:Ce(d,c)}}function lo(e){return(e.applyBlocks?.length??0)>0&&!Qe(e.where)&&(ct(e.where)||se(e.where))}function wy(e){let t=e.type==="EXPLAIN"?e.query:e;return t.type==="UPDATE"&&lo(t)&&se(t.where)}var by=`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 uy(e){if(e.unappliedKlikes.length>0)throw new Error(`UnsupportedError: ${ly}`)}async function cy(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});uy(p);let u=p.prefilter===null?"":G(p.prefilter),d=new Set(pi(e,n));for(let E of py(e.where))d.add(E);let c=await dy(e.appId,e.where,a,t,i);return(await me(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 py(e){return rs(e)}async function dy(e,t,r,n,i){let s=[...fy(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 fy(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 Ey(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:wn(l),guards:bn(l),deletedRows:{total:0,parentRows:0},diagnostic:s};return Ar.set(p,uo(o,r,e.appId)),p}function Ry(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:wn(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 my(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=wn(p),c=wn(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 wn(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,Se=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 yy(e,t,r,n,i,o){let a=await up(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 hy(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 gy(e,t,r,n){if(await yr(e,t,n),ot(e.where))return{type:"DELETE",deletedCount:0};if(e.subtableCode)return Iy(e,t,r,n);let i=jl(e),a=(await wi(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 Ay(e,t,r,n){if(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length)return Bm(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=fp(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 h=c[y];h.type==="CASE_VALUE"?E[m]={value:mt(h.expr,{},l.get(m))}:E[m]={value:Qe(h,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 fp(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 Sy(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 me(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=Uc(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:Uc(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(Ep(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 Ty(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 me(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 h=y.id??"";if(!h)return y;let g=f.get(h);return g?{id:h,value:g}:{id:h}});await t.putRecords(wy(e.appId,c,Dn(E),i,m))}return{type:"UPDATE",updatedCount:p.length}}async function Iy(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 me(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((h,g)=>!m.has(g));await t.putRecords(Ep(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 Ep(e,t,r,n,i){return{app:e,records:[{id:Number(t),revision:r,record:{[n]:{value:i}}}]}}function wy(e,t,r,n,i){return{app:e,records:[{id:Number(t),revision:r,record:{[n]:{value:i}}}]}}function by(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 Uc(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 Py(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 me(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((h,g)=>({row:h,i:g,flat:Ny(E,e.subtableCode,h,g)}));m.sort((h,g)=>Cy(h.flat,g.flat,e.by,l));let y=m.map(h=>h.row.id??"");await t.putRecords(by(e.appId,f,Dn(E),e.subtableCode,y))}return{type:"REORDER",reorderedParentCount:d.size}}function Ny(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 Cy(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 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(cp(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 b=y[p[O]]??"";g[S]={value:op(b,c.get(S))}}),g});f.forEach(y=>Bt([y],e.fields.filter(h=>h in y),o,a));let E=f.map(y=>e.keyFields.map(h=>String(y[h]?.value??"")));if(oo.has(e)){let y=e.keyFields.map(g=>c.get(g)==="NUMBER"),h=new Set;for(let g of E){let S=Kt(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 On(e.appId,e.keyFields,E,t,r,c);if(f.forEach((y,h)=>{let g=Cn(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 ee("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 mp(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 yp(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 Oy(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 hp(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 hn(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(hn(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(hn(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(hn(a.query,t,r,n,o).then(s=>{a.resolved=s.rowCount>0}));break}case"BOOLEAN":break}}async function gp(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 Ap(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=hn(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 Sp=new WeakMap,Tp=new WeakMap;async function Ly(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 h=m;await ao(h,l,r);let g=[h.from,...h.joins.map(w=>w.table)].some(w=>w.cteName!==null);if(Q(h).type==="PLAIN"&&!g){let w=await is(h,l,r);w&&d.set(h,w)}let S=[h.from,...h.joins.map(w=>w.table)].filter(w=>w.cteName===null).map(w=>w.appId);(Be(h.where)||h.orderBy.length>0||h.columns.some(w=>w.type==="WINDOW_COL"&&w.orderBy.length>0))&&S.forEach(w=>o.add(w));let b=await Sn(h,l,r),L=E(h);if(b.capability==="UNSUPPORTED"&&!L)throw new Error(`ArgumentError: WHERE predicate is unsupported (${kt(b)}).`);if(p.set(h,b),h.orderBy.length>0||h.columns.some(w=>w.type==="WINDOW_COL"&&w.orderBy.length>0)){let w=await In(h,l,r);if(h.orderMode!=="KINTONE_NATIVE")for(let _ of w.semantics.values())_.fieldType==="STATUS"&&_.source&&a.add(_.source.appId);if(Ji(h)&&!g&&L?.allowed!==!1){let _=b.capability==="EXACT_PUSHDOWN"?be(h):"FULL_SCAN";u.set(h,(h.orderMode==="KINTONE_NATIVE"?tn:en)({stmt:h,staticMode:_,whereCapability:b.capability,whereReasons:b.reasons,orderSemantics:w.semantics,maxRecords:n,hasKlike:se(h.where)}))}}}else if(y.type==="VALIDATE"){let h=m;o.add(h.appId);let g=await J(h.appId,l,r),S=new Map(g.filter(N=>!N.inSubtable).map(N=>[N.code,N])),O=new Set(g.filter(N=>N.inSubtable).map(N=>N.code)),b=sa(h,g),L=pr(h.checkGroups??[]),w=rs(h.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${h.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 w){if(N!=="$id"&&!S.has(N)&&!O.has(N))throw new Error(`ArgumentError: WHERE field ${N} does not exist in APP${h.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,I])=>[N,I.fieldType]));_.set("$id","RECORD_NUMBER"),$t(h,_);let C=rt(h.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,I])=>[N,I.fieldType])),k=new Map([...S.values()].flatMap(N=>N.optionOrder?[[N.code,new Set(Object.keys(N.optionOrder))]]:[])),A=h.where===null?null:C.capability==="EXACT_PUSHDOWN"?h.where:nr(h.where,{allowUnqualifiedFields:!0,fieldTypes:v,fieldOptions:k,allowKlike:!1}),P=b.some(N=>N.field.fieldType==="NUMBER");P&&(s.add(h.appId),await Ye(h.appId,l,r)),Sp.set(h,{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),...w,...L.map(N=>N.field)])],subtables:new Map([...new Set(b.flatMap(N=>N.subtableCode?[N.subtableCode]:[]))].map(N=>[N,b.filter(I=>I.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 g=m,S=await J(g.appId,l,r);if(Ze(g,S),no(g)){let O=S.filter(L=>!L.inSubtable),b=Ea(g.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))]]:[]))});Tp.set(g,b)}}let h=m;(h.type!=="UPDATE"||!no(h))&&E(h)?.allowed!==!1&&await yr(h,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),h=E(m);if(y.capability==="UNSUPPORTED"&&!h)throw new Error(`ArgumentError: WHERE predicate is unsupported (${kt(y)}).`);if(p.set(m,y),Ji(m)&&h?.allowed!==!1){let g=await In(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:g.semantics,maxRecords:n,hasKlike:se(m.where)}))}}return{capabilities:p,orderPlans:u,plainGroupByPlans:d,fieldApps:o,processStatusApps:a,numberPrecisionApps:s,relativeDatePlan:f}}function Mc(e){return[...[...e.fieldApps].sort((t,r)=>t-r).map(t=>` metadata API: form definition APP${t}`),...[...e.processStatusApps].sort((t,r)=>t-r).map(t=>` metadata API: process status APP${t}`),...[...e.numberPrecisionApps].sort((t,r)=>t-r).map(t=>` metadata API: number precision APP${t}`)]}function _y(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 xc(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)} ${_y(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 Dy(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=xc(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=xc(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 vy(e,t,r,n,i,o=100,a=Se,s){let l=s??await Za(e.query,t,r),p=await Ly(e.query,t,r,n,l),u=Dy(l),d=l.hasRelativeDate&&!l.allowed?[...Mc(p),...u]:[...Mc(p),...u,...Uy(Ip(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 Uy(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 Ip(e,t,r,n,i=100,o=Se,a=1e4,s){if(e.type==="UNION")return My(e,r,n,s);if(e.type==="WITH")return xy(e,r,n,s);if(e.type==="INSERT")return By(e,t,i,o);if(e.type==="INSERT_SELECT")return $y(e,t,r,n,s);if(e.type==="UPSERT")return Hy(e,t,i,o);if(e.type==="UPSERT_SELECT")return Yy(e,t,r,n,s);if(e.type==="UPDATE")return Gy(e,t,r,n,i,o,a);if(e.type==="DELETE")return Wy(e,t);if(e.type==="REORDER")return jy(e,t);if(e.type==="VALIDATE")return ky(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 ky(e,t){let r=Sp.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=Fy(e);o&&o.capability!=="EXACT_PUSHDOWN"&&p.push(...o.reasons.map(m=>m.code));let u=[],d=wu(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,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=wt(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"?Xc(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),h=e.from.alias?` AS ${e.from.alias}`:"",g=m.mainCondition,S=Hc(e),O=e.joins.length===0&&o?.capability==="EXACT_PUSHDOWN"&&e.where!==null&&!ct(e.where)?G(e.where):"",b=g!==null?G(g):O||"(\u5168\u4EF6\u53D6\u5F97)";u.push(` app: APP${e.from.appId}${h} (${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 w=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: ${w.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":w.join(", ")}`)}}return u.push(...Ky(e,r,n,i)),u}function My(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 xy(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(...Ip(e.query,"[main]",t,r,100,Se,1e4,n)),pt(e)){i.push("");let o=dt(e);i.push(...Ue(o,"[effective: inlined CTE]",t,r,n))}return i}function Fy(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 Ky(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 By(e,t,r=st,n=Se){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 $y(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 Gy(e,t,r,n,i=100,o=Se,a=1e4){if(e.applyBlocks?.length)return Vy(e,t,i,o,a);let s=Vl(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=zy(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(` ${Jy(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 Vy(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=Tp.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 Wy(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 Hy(e,t,r=st,n=Se){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 Yy(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 jy(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(qy).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 qy(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 zy(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")&&gn(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"&&gn(r,t)}async function wp(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 Xy(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 gn(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"&&gn(r,t);return}(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP")&&(gn(e.left,t),gn(e.right,t))}function Jy(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} = ${bp(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 bp(e){return`${Fc(e.left)} ${e.op} ${Fc(e.right)}`}function Fc(e){return e.type==="FIELD_REF"?e.field:e.type==="NUMBER"?W(e):e.type==="ARITH"?`(${bp(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 Te=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 Te("READ_ONLY_VIOLATION",e)}function hs(e,t){return new Te("PARSE_ERROR",e,t)}function Pp(){let e=new hr;return new Te("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 Qy(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 Te?e:e instanceof ce||e instanceof T?new Te("PARSE_ERROR",vn(e),e):e instanceof hr||e?.name==="SearchAbortedError"?new Te("SEARCH_ABORTED",vn(e),e):e instanceof Ie||e?.name==="FetchAllLimitError"?new Te("FETCH_LIMIT_EXCEEDED",vn(e),e):e instanceof Error&&e.name==="ClientOperationError"&&"cause"in e?new Te("CLIENT_ERROR",e.message,e.cause):Qy(e)?new Te("CLIENT_ERROR",vn(e),e):new Te("EXECUTION_ERROR",vn(e),e)}var Zy=2,po=5,eh=3e4,th=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??Zy;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??eh,this.quarantineMs=r.quarantineMs??th}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 rh(e){let t=e;return t?.status===404&&t.code==="GAIA_CN01"}async function nh(e,t=n=>new Promise(i=>setTimeout(i,n)),r=rh){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 ih(e,t){let r,n=new Promise((i,o)=>{r=setTimeout(()=>o(new Error(`CursorCleanupTimeoutError: cleanup exceeded ${t}ms.`)),t),r.unref?.()});try{return await Promise.race([e,n])}finally{r&&clearTimeout(r)}}function Np(e,t){let r=!1,n=!1,i=Promise.resolve(),o=null;return{totalCount:e,nextPage:()=>{if(n||r)return Promise.resolve({records:[],next:!1});let l=i.then(async()=>{if(n||r)return{records:[],next:!1};let 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 ih(nh(t.delete,t.sleep,t.isAlreadyReleasedError),t.cleanupTimeoutMs??5e3),r=!0,t.onReleased?.()}catch(l){throw t.onReleaseUnknown?.(),l}}),o)}}function Cp(e){return Op(e,ah(e))}function Op(e,t,r=!1,n){let i=[];for(let o of Object.values(e)){let a=sh(o.options),s=lh(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)&&!oh.has(o.type)};l.semantics=z(l),i.push(l),o.fields&&i.push(...Op(o.fields,t,!0,o.type==="SUBTABLE"?o.code:n))}return i}var oh=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE","SUBTABLE"]);function ah(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 sh(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 lh(e,t){if(e==="NUMBER"||e==="RECORD_NUMBER")return"number";if(e==="CALC")return t==="NUMBER"||t==="NUMBER_DIGIT"?"number":"string"}function Lp(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 uh="Filter aborted because of too many search results";function _p(e){return e?.includes(uh)===!0}var Dp="/k/v1/records.json",Ro="/k/v1/records/cursor.json",ch=4096,ph=2,gs=e=>kintone.api.url(e,!0);function dh(e){let t={app:e.app,query:e.query,...e.fields.length>0?{fields:e.fields}:{}},n=kintone.api.urlForGet(Dp,t,!0),i={"X-Requested-With":"XMLHttpRequest"};return new TextEncoder().encode(n).byteLength<=ch?{url:n,init:{method:"GET",credentials:"include",headers:i}}:{url:gs(Dp),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 Py(e){if(e.unappliedKlikes.length>0)throw new Error(`UnsupportedError: ${by}`)}async function Ny(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=Aa(e.where,{fieldTypes:s,fieldOptions:l});Py(p);let u=p.prefilter===null?"":G(p.prefilter),d=new Set(yi(e,n));for(let E of Cy(e.where))d.add(E);let c=await Oy(e.appId,e.where,a,t,i);return(await me(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})=>z(e.where,E,c.fieldTypeResolver,p.appliedKlikes,c.fieldSemanticsResolver)).map(({snapshot:E})=>E)}function Cy(e){return ss(e)}async function Oy(e,t,r,n,i){let s=[...Ly(t)].some(u=>r.get(u)?.fieldType==="STATUS")?await ms(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(X({fieldType:"__ID__"}),e,"$id");let d=r.get(u.field);if(!d)return;let c=d.semantics??X(d),f=d.fieldType==="STATUS"&&s?{...c,optionOrder:s}:c;return Er(f,e,d.code)}}}function Ly(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 _y(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]:[...Be(r,e.fields).payloadFields,...en],a=t.guards.parentRows,s=ya(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:On(l),guards:Ln(l),deletedRows:{total:0,parentRows:0},diagnostic:s};return br.set(p,Ro(o,r,e.appId)),p}function Dy(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]:[...Be(r,e.assignments.map(p=>p.field)).payloadFields,...en],s=nn(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:On(s.branches[0]),guards:Ln(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 br.set(l,Ro(a,r,e.appId)),l}function vy(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??[...Be(r,e.fields).payloadFields,...en],l=ha(t),p=l.branches.find(E=>E.branch==="insert"),u=l.branches.find(E=>E.branch==="update"),d=On(p),c=On(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:Ln(p)},update:{apply:c,guards:Ln(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 br.set(f,Ro([...s],r,e.appId)),f}function On(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:Kt(t,"REMOVE")}:{field:t.field,operations:r,changedSubtableRows:0,deletedRows:0,multiValue:{fieldType:t.fieldType??"UNKNOWN",addedValues:Kt(t,"ADD"),removedValues:Kt(t,"REMOVE_VALUE"),changedValues:t.changedCount??0,postImages:t.postImages??[]}}})}function Ln(e){if(e.guards.parentRows===null||e.guards.subtableRows===null||e.guards.wouldExceed===null)throw new Error("InternalError: runtime APPLY diagnostic guard contains unknown counts.");return{revisionRequired:e.guards.revisionRequired,parentRows:e.guards.parentRows,dmlMaxRows:e.guards.dmlMaxRows,subtableRows:e.guards.subtableRows,dmlMaxSubtableRows:e.guards.dmlMaxSubtableRows,wouldExceed:e.guards.wouldExceed}}var lt=100,Se=500;function _e(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 Ro(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:X({fieldType:"RECORD_NUMBER"})});continue}let s=n.get(a);if(s){o.set(a,Ye(s,r));continue}o.set(a,Y(i.has(a)?"number":"string"))}return o}async function Uy(e,t,r,n,i,o){let a=await Tp(e,t,r,n,i,o),s=await Re(e.appId,r,i),l=Qo(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(Vt(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 ky(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 My(e,t,r,n){if(await Tr(e,t,n),at(e.where))return{type:"DELETE",deletedCount:0};if(e.subtableCode)return By(e,t,r,n);let i=Ql(e),a=(await Li(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=Zl(e.appId,a);for(let l of s)await t.deleteRecords(l);return{type:"DELETE",deletedCount:a.length}}async function xy(e,t,r,n){if(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length)return ny(e,t,r,n);if(e.checkGroups?.length)return kn(e,t,r,n);let i=await Fe(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=Pp(e),u=await Un(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:yt(h.expr,{},l.get(m))}:E[m]={value:et(h,l.get(m))}});let R=vn(u,p[f]);R!==void 0?s.push({id:R,record:E}):a.push(E)}),Vt([...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 Pp(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 As(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 Fy(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 me(t.getRecords,e.appId,"",[],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1}),s=mo(a),l=new Map;for(let u of e.values){let d=Vc(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:Vc(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=[...Mn(c,i),...d];p.push(Np(e.appId,u,xn(c),i,E))}for(let u of p)await t.putRecords(u);return{type:"INSERT",createdIds:[],insertedCount:e.values.length}}async function Ky(e,t,r,n){let i=e.subtableCode;if(!Tn(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"&&io(c.value.expr,o);let a=await As(e.appId,o,t,n),s=await me(t.getRecords,e.appId,"",[],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1}),p=Ss(s,i).filter(c=>z(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:mi(R.value,c.flat,a)}}f.set(c.rowId,E)}let d=mo(s);for(let[c,f]of u.entries()){let E=d.get(c);if(!E)continue;let m=Mn(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($y(e.appId,c,xn(E),i,m))}return{type:"UPDATE",updatedCount:p.length}}async function By(e,t,r,n){let i=e.subtableCode;if(!Tn(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 As(e.appId,o,t,n),s=await me(t.getRecords,e.appId,"",[],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1}),p=Ss(s,i).filter(c=>z(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=mo(s);for(let[c,f]of u.entries()){let E=d.get(c);if(!E)continue;let R=Mn(E,i),m=new Set(f),y=R.filter((h,g)=>!m.has(g));await t.putRecords(Np(e.appId,c,xn(E),i,y))}return{type:"DELETE",deletedCount:p.length}}function mo(e){let t=new Map;for(let r of e){let n=String(r.$id?.value??"");n&&t.set(n,r)}return t}function Ss(e,t){let r=[];for(let n of e){let i=String(n.$id?.value??""),o=xn(n),a=Mn(n,t);for(let s=0;s<a.length;s++){let l=a[s],p={...hi(l,s),_pid:i};for(let[u,d]of Object.entries(n))u!==t&&(p[`_p.${u}`]=rs(d?.value));r.push({parent:n,parentId:i,parentRevision:o,rowIndex:s,rowId:l.id??"",row:l,flat:p})}}return r}function Mn(e,t){let r=e[t]?.value;return Array.isArray(r)?r:[]}function xn(e){let t=Number(e.$revision?.value??0);return Number.isFinite(t)?t:0}function Np(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){return{app:e,records:[{id:Number(t),revision:r,record:{[n]:{value:i}}}]}}function Gy(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 Vc(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 rs(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 Tn(e){switch(e.type){case"BINARY":return e.left.type==="FIELD"&&e.left.tableAlias===null&&e.left.field==="_rid";case"LOGICAL":return Tn(e.left)||Tn(e.right);case"NOT":case"GROUP":return Tn(e.expr);default:return!1}}async function Vy(e,t,r,n){let i=[];ot(e.where,i);let o=await As(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??X(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 me(t.getRecords,e.appId,"",[],{maxRecords:r.maxRecords??1e4,parallel:r.fetchParallel??1}),u=Ss(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&&z(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=mo(p);for(let f of d){let E=c.get(f);if(!E)continue;let m=Mn(E,e.subtableCode).map((h,g)=>({row:h,i:g,flat:Wy(E,e.subtableCode,h,g)}));m.sort((h,g)=>Hy(h.flat,g.flat,e.by,l));let y=m.map(h=>h.row.id??"");await t.putRecords(Gy(e.appId,f,xn(E),e.subtableCode,y))}return{type:"REORDER",reorderedParentCount:d.size}}function Wy(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}`]=rs(a?.value));for(let[o,a]of Object.entries(r.value??{}))i[o]=rs(a?.value);return i}function Hy(e,t,r,n){for(let i of r){let o=Wc(i.key,e),a=Wc(i.key,t),s=i.key.type==="FIELD_NAME"?n(xe(i.key.name)):i.key.type==="ARITH_KEY"?x("number"):i.key.type==="FUNC_KEY"?Bt(i.key.expr).semantics??x("string"):x("number"),l=Ot(o,a,s??x("string"));if(l!==0)return i.direction==="ASC"?l:-l}return 0}function Wc(e,t){switch(e.type){case"FIELD_NAME":return t[e.name]??"";case"ARITH_KEY":return String(ne(e.expr,t));case"FUNC_KEY":return ie(e.expr,t);case"GROUPING_KEY":throw new Error("ArgumentError: GROUPING() is not supported in REORDER BY.")}}async function Cp(e,t,r,n,i){if(e.checkGroups?.length)return kn(e,t,r,n,i);let o=await Fe(e.appId,e.fields,t,n),a=await st(e.appId,e.fields,o,t,n),s=await gs.materialize(e,t,r,n,i,o),{rows:l,columns:p}=s;if(Ip(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 b=y[p[O]]??"";g[S]={value:hp(b,c.get(S))}}),g});f.forEach(y=>Vt([y],e.fields.filter(h=>h in y),o,a));let E=f.map(y=>e.keyFields.map(h=>String(y[h]?.value??"")));if(co.has(e)){let y=e.keyFields.map(g=>c.get(g)==="NUMBER"),h=new Set;for(let g of E){let S=Gt(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 Un(e.appId,e.keyFields,E,t,r,c);if(f.forEach((y,h)=>{let g=vn(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 Op(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 Lp(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 Yy(e,t=!1){try{let r=new Xt(e).tokenize(),n=new Zt(r,{import:t}).parse();return Xn("phase15b",n),dr(n),n}catch(r){throw r instanceof ce||r instanceof T,r}}async function _n(e,t,r,n,i){let o=[];to(e,t,r,n,o,i),await Promise.all(o)}async function _p(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(_n(s.condition,t,r,n,i));await Promise.all(o)}function In(e,t,r,n,i){return i!==void 0&&i.size>0?$t(e,t,r,i,n):Tt(e,t,r,n)}function to(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(In(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(In(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":to(e.left,t,r,n,i,o),to(e.right,t,r,n,i,o);break;case"NOT":case"GROUP":to(e.expr,t,r,n,i,o);break;case"EXISTS":{let a=e;i.push(In(a.query,t,r,n,o).then(s=>{a.resolved=s.rowCount>0}));break}case"BOOLEAN":break}}async function Dp(e,t,r,n){for(let i of e){if(i.value.type!=="SCALAR_SUBQUERY")continue;let o=await Tt(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 vp(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=In(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 Up=new WeakMap,kp=new WeakMap;async function jy(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 is(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 po(h,l,r);let g=[h.from,...h.joins.map(w=>w.table)].some(w=>w.cteName!==null);if(Z(h).type==="PLAIN"&&!g){let w=await us(h,l,r);w&&d.set(h,w)}let S=[h.from,...h.joins.map(w=>w.table)].filter(w=>w.cteName===null).map(w=>w.appId);(Ge(h.where)||h.orderBy.length>0||h.columns.some(w=>w.type==="WINDOW_COL"&&w.orderBy.length>0))&&S.forEach(w=>o.add(w));let b=await Pn(h,l,r),L=E(h);if(b.capability==="UNSUPPORTED"&&!L)throw new Error(`ArgumentError: WHERE predicate is unsupported (${Ft(b)}).`);if(p.set(h,b),h.orderBy.length>0||h.columns.some(w=>w.type==="WINDOW_COL"&&w.orderBy.length>0)){let w=await Cn(h,l,r);if(h.orderMode!=="KINTONE_NATIVE")for(let _ of w.semantics.values())_.fieldType==="STATUS"&&_.source&&a.add(_.source.appId);if(ro(h)&&!g&&L?.allowed!==!1){let _=b.capability==="EXACT_PUSHDOWN"?be(h):"FULL_SCAN";u.set(h,(h.orderMode==="KINTONE_NATIVE"?an:on)({stmt:h,staticMode:_,whereCapability:b.capability,whereReasons:b.reasons,orderSemantics:w.semantics,maxRecords:n,hasKlike:se(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(N=>!N.inSubtable).map(N=>[N.code,N])),O=new Set(g.filter(N=>N.inSubtable).map(N=>N.code)),b=fa(h,g),L=Rr(h.checkGroups??[]),w=ss(h.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${h.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 w){if(N!=="$id"&&!S.has(N)&&!O.has(N))throw new Error(`ArgumentError: WHERE field ${N} does not exist in APP${h.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,I])=>[N,I.fieldType]));_.set("$id","RECORD_NUMBER"),Wt(h,_);let C=We(h.where,N=>N.field==="$id"?X({fieldType:"__ID__"}):S.get(N.field)?.semantics??(S.has(N.field)?X(S.get(N.field)):void 0));if(C.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Ft(C)}).`);let v=new Map([...S].map(([N,I])=>[N,I.fieldType])),k=new Map([...S.values()].flatMap(N=>N.optionOrder?[[N.code,new Set(Object.keys(N.optionOrder))]]:[])),A=h.where===null?null:C.capability==="EXACT_PUSHDOWN"?h.where:sr(h.where,{allowUnqualifiedFields:!0,fieldTypes:v,fieldOptions:k,allowKlike:!1}),P=b.some(N=>N.field.fieldType==="NUMBER");P&&(s.add(h.appId),await qe(h.appId,l,r)),Up.set(h,{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),...w,...L.map(N=>N.field)])],subtables:new Map([...new Set(b.flatMap(N=>N.subtableCode?[N.subtableCode]:[]))].map(N=>[N,b.filter(I=>I.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 g=m,S=await Q(g.appId,l,r);if(tt(g,S),lo(g)){let O=S.filter(L=>!L.inSubtable),b=Aa(g.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))]]:[]))});kp.set(g,b)}}let h=m;(h.type!=="UPDATE"||!lo(h))&&E(h)?.allowed!==!1&&await Tr(h,l,r)}await Promise.all(Object.values(y).map(R))};if(await R(e),typeof e=="object"&&e!==null&&e.type==="WITH"&&dt(e)){let m=ft(e),y=await Pn(m,l,r),h=E(m);if(y.capability==="UNSUPPORTED"&&!h)throw new Error(`ArgumentError: WHERE predicate is unsupported (${Ft(y)}).`);if(p.set(m,y),ro(m)&&h?.allowed!==!1){let g=await Cn(m,l,r);u.set(m,(m.orderMode==="KINTONE_NATIVE"?an:on)({stmt:m,staticMode:y.capability==="EXACT_PUSHDOWN"?be(m):"FULL_SCAN",whereCapability:y.capability,whereReasons:y.reasons,orderSemantics:g.semantics,maxRecords:n,hasKlike:se(m.where)}))}}return{capabilities:p,orderPlans:u,plainGroupByPlans:d,fieldApps:o,processStatusApps:a,numberPrecisionApps:s,relativeDatePlan:f}}function Hc(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 qy(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 Yc(e){return e==="<>"?"!=":e}function ke(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(ke).join(", ")})`;case"FUNC_FIELD":case"ARITH_FIELD":case"CASE_FIELD":case"ARITH_VALUE":case"CASE_VALUE":return ke(t.expr);case"GROUPING_FIELD":return`GROUPING(${ke(t.ref)})`;case"GROUPING_REF":return ke(t.field);case"ARITH":case"SCALAR_ARITH":case"CONCAT_OP":return`(${ke(t.left)} ${typeof t.op=="string"?t.op:t.type==="CONCAT_OP"?"||":"<op>"} ${ke(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(ke).join(", ")})`:"<expr>";case"ARRAY":return Array.isArray(t.elements)?`[${t.elements.map(ke).join(", ")}]`:"<expr>";case"CASE":case"CASE_WHEN":return"CASE ... END";default:return"<expr>"}}function hn(e){try{let t=e;switch(t.type){case"BINARY":return`${ke(t.left)} ${qy(t.op)} ${ke(t.right)}`;case"NULL_CHECK":return`${ke(t.field)} IS ${t.not===!0?"NOT ":""}NULL`;case"LOGICAL":return`(${hn(t.left)} ${t.op==="AND"||t.op==="OR"?t.op:"<op>"} ${hn(t.right)})`;case"NOT":return`NOT (${hn(t.expr)})`;case"GROUP":return`(${hn(t.expr)})`;case"BOOLEAN":return t.value===!0?"TRUE":t.value===!1?"FALSE":"<expr>";default:return"<expr>"}}catch{return"<expr>"}}function zy(e){if(!e.hasServerOnlyWhereFunction)return[];if(!e.allowed&&e.rejection)return[` ${q(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=qc(a),l=a.left.type==="FIELD"?a.left.field:void 0,p=Yc(a.op),u=r.capability?.reasons.find(d=>d.functionName===s&&(l===void 0||d.field===l)&&d.operator===p);t.push(` ${jc(s)}: ${s}`,` ${zc(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)",` ${Xc(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=qc(a),l=a.left.type==="FIELD"?a.left.field:void 0,p=Yc(a.op),u=r.capability?.reasons.find(d=>d.functionName===s&&(l===void 0||d.field===l)&&d.operator===p);t.push(` ${jc(s)}: ${s}`,` ${zc(s)}: 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: ${hn(i.residualWhere)}`,` ${Xc(i.exactRelativeLeaves)}: 0`,` kintone query: ${o}`);continue}for(let o of r.functionNames){let a=r.capability?.reasons.find(s=>s.functionName===o);if(!q(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 jc(e){return q(e)?"relative date function":"kintone function"}function qc(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 zc(e){return q(e)?"relative date evaluation":"kintone function evaluation"}function Xc(e){return e.every(t=>t.right.type==="KINTONE_FUNC"&&q(t.right.name))?"relative date client evaluations":"kintone function client evaluations"}async function Xy(e,t,r,n,i,o=100,a=Se,s){let l=s??await is(e.query,t,r),p=await jy(e.query,t,r,n,l),u=zy(l),d=l.hasServerOnlyWhereFunction&&!l.allowed?[...Hc(p),...u]:[...Hc(p),...u,...Jy(Mp(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 Jy(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 Mp(e,t,r,n,i=100,o=Se,a=1e4,s){if(e.type==="UNION")return Zy(e,r,n,s);if(e.type==="WITH")return eh(e,r,n,s);if(e.type==="INSERT")return nh(e,t,i,o);if(e.type==="INSERT_SELECT")return ih(e,t,r,n,s);if(e.type==="UPSERT")return lh(e,t,i,o);if(e.type==="UPSERT_SELECT")return uh(e,t,r,n,s);if(e.type==="UPDATE")return oh(e,t,r,n,i,o,a);if(e.type==="DELETE")return sh(e,t);if(e.type==="REORDER")return ch(e,t);if(e.type==="VALIDATE")return Qy(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 Me(e,t,r,n,s)}function Qy(e,t){let r=Up.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?as:os).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 Me(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=th(e);o&&o.capability!=="EXACT_PUSHDOWN"&&p.push(...o.reasons.map(m=>m.code));let u=[],d=Ou(e,Nn.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=Nt(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=Jn(a?.kind==="CANONICAL_REST_TOP_N"?up(e):e);u.push(` app: APP${e.from.appId} (${e.from.appId})`);let y=a?.kind==="KORDER_CURSOR"?Sa(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=ur(e),y=Ct(e,e.from,s),h=e.from.alias?` AS ${e.from.alias}`:"",g=m.mainCondition,S=ip(e),O=e.joins.length===0&&o?.capability==="EXACT_PUSHDOWN"&&e.where!==null&&!pt(e.where)?G(e.where):"",b=g!==null?G(g):O||"(\u5168\u4EF6\u53D6\u5F97)";u.push(` app: APP${e.from.appId}${h} (${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 w=Ct(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: ${w.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":w.join(", ")}`)}}return u.push(...rh(e,r,n,i)),u}function Zy(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(...Me(s,`[union:${l+1}]`,t,r,n))}),a}function eh(e,t,r,n){let i=[];for(let o of e.ctes)o.query.type==="SELECT"&&(i.push(...Me(o.query,`[cte: ${o.name}]`,t,r,n)),i.push(""));if((e.query.type==="SELECT"||e.query.type==="UNION")&&i.push(...Mp(e.query,"[main]",t,r,100,Se,1e4,n)),dt(e)){i.push("");let o=ft(e);i.push(...Me(o,"[effective: inlined CTE]",t,r,n))}return i}function th(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"),pt(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 rh(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(...Me(s.right.query,`[subquery:${o++}]`,t,r,n))),s.right.type==="SUBQUERY_IN_LIST"&&(i.push(""),i.push(...Me(s.right.query,`[subquery:${o++}]`,t,r,n)));break;case"EXISTS":i.push(""),i.push(...Me(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(...Me(s.query,`[subquery:${o++}]`,t,r,n)));return e.having&&a(e.having),i}function nh(e,t,r=lt,n=Se){let i=e.values.length,o=Math.ceil(i/100),a=[];return t&&a.push(t),a.push(" [INSERT]"),a.push(` target: APP${e.appId} (${e.appId})`),a.push(` records: ${i} \u4EF6\uFF08\u30D0\u30C3\u30C1 ${o} \u56DE \xD7 \u6700\u5927 100 \u4EF6\uFF09`),a.push(` api: POST /k/v1/records.json \xD7 ${o}`),a.push(` fields: ${e.fields.join(", ")}`),e.applyBlocks?.length?[...a,...Ts(Ci(e,r,n))]:a}function ih(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(...Me(e.select,"[source SELECT]",r,n,i)),o}function oh(e,t,r,n,i=100,o=Se,a=1e4){if(e.applyBlocks?.length)return ah(e,t,i,o,a);let s=ql(e),l=e.assignments.some(f=>f.value.type==="STRING_FUNC"),p=Ri(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?Dn(e.from.targetFilter):"(none)"}`)}else d.push(` kintone query: ${Dn(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=dh(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(` ${Eh(f)}`);for(let f of e.assignments)f.value.type==="SCALAR_SUBQUERY"&&(d.push(""),d.push(...Me(f.value.query,`[subquery: ${f.field}]`,r,n)));return d}function ah(e,t,r,n,i){let o=Ci(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=kp.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: ${Dn(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",...Ts(o)]}function sh(e,t){let r=[];return t&&r.push(t),r.push(" [DELETE]"),r.push(` target: APP${e.appId} (${e.appId})`),r.push(` kintone query: ${Dn(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 lh(e,t,r=lt,n=Se){let i=e.values.length,o=Math.ceil(i/100),a=[...t?[t]:[]," [UPSERT]",` target: APP${e.appId} (${e.appId})`,` records: ${i} \u4EF6\uFF08\u30D0\u30C3\u30C1 ${o} \u56DE \xD7 \u6700\u5927 100 \u4EF6\uFF09`,` key fields: ${e.keyFields.join(", ")}`,` fields: ${e.fields.join(", ")}`,` api: GET /k/v1/records.json\uFF08\u91CD\u8907\u5224\u5B9A\uFF09\u2192 POST \u307E\u305F\u306F PUT /k/v1/records.json \xD7 ${o}`];return e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length?[...a,...Ts(Ci(e,r,n))]:a}function Ts(e){let t=[`apply diagnostic: ${e.statementKind}`,`non-transactional: ${e.nonTransactional}`,`partial success: ${e.partialSuccess.possible?"possible":"none"}`];for(let r of e.branches){t.push(`apply branch: ${r.branch}`,` parent rows: ${r.parentRows===null?"unknown (records API not called)":r.parentRows}`,` chunks: ${r.chunk.plannedChunks===null?"unknown":r.chunk.plannedChunks} \xD7 max ${r.chunk.size}`,` revision guard: ${r.guards.revisionRequired?"required":"not required"}`);for(let n of r.targets)t.push(` target: ${n.field} (${n.targetKind})`,` operations: ${n.operations.map(i=>`${i.kind}=${i.count===null?"unknown":i.count}`).join(" | ")}`,` changed count: ${n.changedCount===null?"unknown":n.changedCount}`)}return t.push("records API: 0","mutation API: 0"),t}function uh(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(...Me(e.select,"[source SELECT]",r,n,i)),o}function ch(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(ph).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: ${Dn(e.where)}`),o}function ph(e){return`${e.key.type==="FIELD_NAME"?e.key.name:"(\u5F0F)"} ${e.direction}`}function Dn(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 dh(e){let t=new Set;for(let{value:r}of e.assignments)r.type==="ARITH"&&uo(r,t),r.type==="STRING_FUNC"&&uo(r,t),(r.type==="SCALAR_ARITH"||r.type==="CONCAT_OP")&&wn(r,t);return[...t]}function uo(e,t){if(e.type==="FIELD_REF"){t.add(e.field);return}if(e.type==="ARITH"&&(uo(e.left,t),uo(e.right,t)),e.type==="STRING_FUNC")for(let r of e.args)r.type!=="AGG_REF"&&r.type!=="AGG_ARITH"&&wn(r,t)}async function xp(e,t,r,n,i){let o=hs(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 fh(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 wn(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"&&wn(r,t);return}(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP")&&(wn(e.left,t),wn(e.right,t))}function Eh(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} = ${Fp(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 Fp(e){return`${Jc(e.left)} ${e.op} ${Jc(e.right)}`}function Jc(e){return e.type==="FIELD_REF"?e.field:e.type==="NUMBER"?W(e):e.type==="ARITH"?`(${Fp(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 Te=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 Ht(e){return new Te("READ_ONLY_VIOLATION",e)}function Is(e,t){return new Te("PARSE_ERROR",e,t)}function Kp(){let e=new Ir;return new Te("SEARCH_ABORTED",e.message,e)}function Fn(e){return e instanceof Error&&e.message.trim()!==""||e!==null&&typeof e=="object"&&typeof e.message=="string"?e.message:String(e)}function Rh(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 Kn(e){return e instanceof Te?e:e instanceof ce||e instanceof T?new Te("PARSE_ERROR",Fn(e),e):e instanceof Ir||e?.name==="SearchAbortedError"?new Te("SEARCH_ABORTED",Fn(e),e):e instanceof Ie||e?.name==="FetchAllLimitError"?new Te("FETCH_LIMIT_EXCEEDED",Fn(e),e):e instanceof Error&&e.name==="ClientOperationError"&&"cause"in e?new Te("CLIENT_ERROR",e.message,e.cause):Rh(e)?new Te("CLIENT_ERROR",Fn(e),e):new Te("EXECUTION_ERROR",Fn(e),e)}var mh=2,yo=5,yh=3e4,hh=10*6e4+3e4,ho=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??mh;if(!Number.isSafeInteger(n)||n<1||n>yo)throw new Error(`ArgumentError: cursorMaxActive must be an integer from 1 to ${yo}.`);this.maxActive=n,this.waitTimeoutMs=r.waitTimeoutMs??yh,this.quarantineMs=r.quarantineMs??hh}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 _i(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>yo)throw new Error(`ArgumentError: cursorMaxActive must be an integer from 1 to ${yo}.`)}};function gh(e){let t=e;return t?.status===404&&t.code==="GAIA_CN01"}async function Ah(e,t=n=>new Promise(i=>setTimeout(i,n)),r=gh){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 Sh(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 Bp(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 Sh(Ah(t.delete,t.sleep,t.isAlreadyReleasedError),t.cleanupTimeoutMs??5e3),r=!0,t.onReleased?.()}catch(l){throw t.onReleaseUnknown?.(),l}}),o)}}function $p(e){return Gp(e,Ih(e))}function Gp(e,t,r=!1,n){let i=[];for(let o of Object.values(e)){let a=wh(o.options),s=bh(o.type,o.format),l={code:o.code,label:o.label,fieldType:o.type,optionOrder:a,sortKind:s,required:o.required,minValue:go(o.minValue),maxValue:go(o.maxValue),minLength:go(o.minLength),maxLength:go(o.maxLength),defaultValue:o.defaultValue,inSubtable:r,...n?{subtableCode:n}:{},writable:!t.has(o.code)&&!Th.has(o.type)};l.semantics=X(l),i.push(l),o.fields&&i.push(...Gp(o.fields,t,!0,o.type==="SUBTABLE"?o.code:n))}return i}var Th=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE","SUBTABLE"]);function Ih(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 go(e){return e==null||e===""?void 0:e}function wh(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 bh(e,t){if(e==="NUMBER"||e==="RECORD_NUMBER")return"number";if(e==="CALC")return t==="NUMBER"||t==="NUMBER_DIGIT"?"number":"string"}function Vp(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 Ph="Filter aborted because of too many search results";function Wp(e){return e?.includes(Ph)===!0}var Hp="/k/v1/records.json",Ao="/k/v1/records/cursor.json",Nh=4096,Ch=2,ws=e=>kintone.api.url(e,!0);function Oh(e){let t={app:e.app,query:e.query,...e.fields.length>0?{fields:e.fields}:{}},n=kintone.api.urlForGet(Hp,t,!0),i={"X-Requested-With":"XMLHttpRequest"};return new TextEncoder().encode(n).byteLength<=Nh?{url:n,init:{method:"GET",credentials:"include",headers:i}}:{url:ws(Hp),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 Bn(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 Lh(e){try{let t=await e.json();if(t!==null&&typeof t=="object"){let n=t;return Bn({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}),Bn(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}),Bn(r)}}function _h(e){let t=e;return t?.code==="GAIA_CN01"&&(t.status===404||t.status===void 0)}async function Yt(e,t,r){try{return await kintone.api(ws(e),t,r)}catch(n){throw Bn(n)}}function Dh(e){if(!Number.isSafeInteger(e)||e<1||e>5)throw new Error("ArgumentError: cursorMaxActive must be an integer from 1 to 5.")}function vh(e={}){let t=e.cursorMaxActive??Ch;Dh(t);let r=null,n=null,i=new Set;return{async getRecords(a){try{let s=Oh(a),l=await fetch(s.url,s.init);if(!l.ok)throw await Lh(l);let p=await l.json();return Wp(l.headers.get("X-Cybozu-Warning"))?{records:p.records,searchAborted:!0}:{records:p.records}}catch(s){throw Bn(s)}},async openCursor(a){let s=ws(Ao),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 ho(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(()=>Yt(Ao,"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 Di(R))}let d=u.id,c=Bp(Number(u.totalCount),{get:()=>Yt(Ao,"GET",{id:d}),delete:()=>Yt(Ao,"DELETE",{id:d}),isAlreadyReleasedError:_h,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 Yt("/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 Yt("/k/v1/app/form/fields.json","GET",{app:a});return $p(s.properties)},async getNumberPrecision(a){let s=await Yt("/k/v1/app/settings.json","GET",{app:a});return fu(s)},async getProcessStatuses(a){let s=await Yt("/k/v1/app/status.json","GET",{app:a,lang:"user"});return{enable:s.enable,states:Vp(s.states)}}}}var Yp=new Set(["postRecords","putRecords","deleteRecords"]),$n=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 It(e){try{return await e()}catch(t){throw new $n(t)}}function Uh(e){return()=>{throw Ht(`${String(e)} is blocked by the readonly client`)}}function bs(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 It(()=>t(l));if(p.searchAborted===!0)throw Kp();return p},openCursor:async l=>{let p=await It(()=>r(l)),u=p.nextPage.bind(p),d=p.close.bind(p);return{totalCount:p.totalCount,nextPage:()=>It(()=>u()),close:()=>It(()=>d())}},getApps:()=>It(()=>n()),getFields:l=>It(()=>i(l)),getNumberPrecision:l=>It(()=>o(l)),getProcessStatuses:l=>It(()=>a(l))});return new Proxy(s,{get(l,p,u){return Yp.has(p)?Uh(p):Reflect.get(l,p,u)},has(l,p){return Yp.has(p)?!1:Reflect.has(l,p)}})}function kh(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 $n(o.reason)})(),r)}}}async function Ps(e,t){let r=kh(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 jp=new Set(["client","maxRecords","fetchParallel","cursorMaxActive"]),Mh=new Set([...jp,"onLimitReached"]);function xh(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new TypeError("options must be an object")}function Ns(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new RangeError(`${t} must be a positive safe integer`)}function Fh(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 Cs(e,t){xh(e);let r=t==="run"?Mh:jp;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(Fh(e.client),e.maxRecords!==void 0&&Ns(e.maxRecords,"maxRecords"),e.fetchParallel!==void 0&&Ns(e.fetchParallel,"fetchParallel"),e.cursorMaxActive!==void 0&&(Ns(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 qp(e,t={}){let r=new Xt(e).tokenize(),n=new Zt(r,t).parse();return dr(n),n}function zp(e){if(e.trim()==="")throw Is("SQL statement is empty");try{return qp(e,{import:!0})}catch(t){let r=Kn(t);throw r.code==="PARSE_ERROR"?r:Is("SQL statement could not be parsed",t)}}function Kh(e){if(e===null||typeof e!="object"||typeof e.type!="string")throw Ht("Unclassifiable statement branch is not allowed");return e.type}function jt(e,t){let r=Kh(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 Ht("WITH contains an unclassifiable CTE list");for(let i of n.ctes){if(i===null||typeof i!="object"||!("query"in i))throw Ht("WITH contains an unclassifiable CTE body");jt(i.query,t)}jt(n.query,t);return}case"UNION":{let n=e;jt(n.left,t),jt(n.right,t);return}default:break}throw Ht(`${r} statements are not allowed in ${t} queries`)}function Bh(e){jt(e,"run")}function Xp(e){Bh(zp(e))}function Jp(e){let t=e.trim(),r=zp(t);return r.type==="EXPLAIN"?(jt(r.query,"explain"),t):(jt(r,"explain"),`EXPLAIN ${t}`)}function Qp(e){return{recordGetCalls:e?.getCalls??0,fetchedRows:e?.fetchedRows??0,elapsedMs:e?.elapsedMs??0,cursorRecordsScanned:e?.cursorRecordsScanned??0}}function Zp(e){if(e===null||typeof e!="object"||e.type!=="SELECT")throw new Error("Engine returned a non-SELECT result")}function $h(e){return Object.fromEntries(Object.entries(e).map(([t,r])=>[t,String(r)]))}function Gh(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 Vh(e,t){try{let r=Cs(t,"run");Xp(e);let n=await Ps(r.client,o=>ns(e,bs(o),{...r.executeOptions,captureColumnMeta:!0}));Zp(n);let i=Qc(n);return{type:"query",rows:n.rows.map($h),columns:n.columns.map(o=>Gh(o,i)),rowCount:n.rowCount,warnings:[...n.warnings??[]],metrics:Qp(n.metrics)}}catch(r){throw Kn(r)}}async function Wh(e,t){try{let r=Cs(t,"explain"),n=await Ps(r.client,o=>ns(Jp(e),bs(o),r.executeOptions));Zp(n);let i=n.rows.map(o=>String(o.plan??""));return{type:"explain",lines:i,text:i.join(`
|
|
13
|
+
`),metrics:Qp(n.metrics)}}catch(r){throw Kn(r)}}var db="3.25.0";export{Te as KsqlEngineError,vh as createReadonlyKintoneClient,Wh as explainQuery,Vh as runQuery,db as version};
|