@rex0220/kintone-sql-tools 3.67.0 → 3.68.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,17 +1,21 @@
1
- "use strict";var Os=Object.defineProperty;var ry=Object.getOwnPropertyDescriptor;var iy=Object.getOwnPropertyNames;var oy=Object.prototype.hasOwnProperty;var ay=(e,t)=>{for(var n in t)Os(e,n,{get:t[n],enumerable:!0})},sy=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of iy(t))!oy.call(e,i)&&i!==n&&Os(e,i,{get:()=>t[i],enumerable:!(r=ry(t,i))||r.enumerable});return e};var ly=e=>sy(Os({},"__esModule",{value:!0}),e);var lb={};ay(lb,{KsqlEngineError:()=>Pe,createReadonlyKintoneClient:()=>Om,explainQuery:()=>Zm,runBatch:()=>Jm,runQuery:()=>Qm,version:()=>sb});module.exports=ly(lb);async function xe(e,t,n,r,i={}){let o=i.pageSize??uy,a=Math.max(1,i.parallel??cy),s=i.maxRecords??py,l=i.onLimit??"error",c=i.stopAfter;if(c!==void 0&&(!Number.isSafeInteger(c)||c<=0||c>s))throw new RangeError("stopAfter must be a positive safe integer <= maxRecords");let p=c??s,u=r.length>0&&!r.includes("$id")?[...r,"$id"]:r,d=[],f=!1,R=`\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`,E=0,m=0,y=cp(n,E),g=await up(e,t,y,u,o,m);if(lp(g,i),d.push(...g.records),c!==void 0&&d.length>=c)return d.slice(0,c);if(d.length>s){if(l==="truncate")return!f&&i.onTruncate&&(i.onTruncate(s),f=!0),d.slice(0,s);throw new Ge(R)}if(g.records.length<o)return d;for(m+=o,m>=Ls&&(E=pp(g.records),m=0);;){if(c!==void 0&&d.length>=c)return d.slice(0,c);if(d.length>=s){if(l==="truncate")return!f&&i.onTruncate&&(i.onTruncate(s),f=!0),d.slice(0,s);throw new Ge(R)}let S=p-d.length,h=Math.ceil(S/o),I=Math.max(1,Math.min(a,h)),N=[];for(let v=0;v<I;v++){let C=m+v*o;if(C>=Ls)break;N.push(C)}let U=cp(n,E),P=await Promise.all(N.map(v=>up(e,t,U,u,o,v)));for(let v of P)lp(v,i);let M=!1;for(let v of P){if(d.push(...v.records),c!==void 0&&d.length>=c)return d.slice(0,c);if(d.length>s){if(l==="truncate")return!f&&i.onTruncate&&(i.onTruncate(s),f=!0),d.slice(0,s);throw new Ge(R)}if(v.records.length<o){M=!0;break}}if(M)break;if(m+=o*N.length,m>=Ls){let v=P[P.length-1];E=pp(v.records),m=0}}return d}function lp(e,t){e.searchAborted&&t.onSearchAborted?.()}function dp(e){return e.map(t=>{let n=t.$id?.value;if(n===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 r=Number(n);if(!Number.isFinite(r))throw new Error(`$id \u306E\u5024\u304C\u6570\u5024\u3067\u306F\u3042\u308A\u307E\u305B\u3093: ${n}`);return r})}var uy=500,cy=1,py=1e4,Ls=1e4;async function up(e,t,n,r,i,o){let a=dy(n,i,o);return e({app:t,query:a,fields:r})}function cp(e,t){let n=e.trimEnd();if(t<=0)return n?`${n} order by $id asc`:"order by $id asc";let r=`$id > ${t} order by $id asc`;return n?`(${n}) and ${r}`:r}function dy(e,t,n){let r=e.trimEnd(),i=`limit ${t} offset ${n}`;return r?`${r} ${i}`:i}function pp(e){let n=e[e.length-1]?.$id?.value;if(n===void 0)return 0;let r=Number(n);return Number.isFinite(r)?r:0}var Ge=class extends Error{constructor(n,r=!1){super(n);this.completeInputWrapped=r;this.name="FetchAllLimitError"}};var fy=/^([+-]?)(?:(\d+)(?:\.(\d*))?|\.(\d+))(?:[eE]([+-]?)(\d+))?$/;function Ey(e,t){if(t===void 0)return 0;let n=0;for(let r of t)if(n=n*10+(r.charCodeAt(0)-48),!Number.isSafeInteger(n))return null;return e==="-"?-n:n}function Ae(e){let t=fy.exec(e.trim());if(t===null)return null;let n=Ey(t[5],t[6]);if(n===null)return null;let r=t[3]??t[4]??"",i=`${t[2]??""}${r}`.replace(/^0+/,"");if(i==="")return{sign:0,coefficient:"0",scale:0};let o=r.length-n;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 _s(e){if(e.sign===0)return"0";let t=e.coefficient,n;if(e.scale<=0)n=`${t}${"0".repeat(-e.scale)}`;else if(t.length>e.scale){let r=t.length-e.scale;n=`${t.slice(0,r)}.${t.slice(r)}`}else n=`0.${"0".repeat(e.scale-t.length)}${t}`;return e.sign===-1?`-${n}`:n}function fp(e){let t=Ae(e);return t===null?null:_s(t)}function Ry(e,t){let n=e.coefficient.length-e.scale,r=t.coefficient.length-t.scale;if(!Number.isSafeInteger(n)||!Number.isSafeInteger(r))throw new Error("ArgumentError: exact decimal scale is outside the supported range.");if(n!==r)return n<r?-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 oo(e,t){if(e.sign!==t.sign)return e.sign<t.sign?-1:1;if(e.sign===0)return 0;let n=Ry(e,t);return e.sign===-1?n===0?0:n===-1?1:-1:n}function ao(e,t){let n=Ae(e),r=Ae(t);if(n===null||r===null)throw new Error("ArgumentError: compareDecimal requires finite decimal inputs.");return oo(n,r)}var _e="__NO_FROM__";function Ds(e){return e.windowKind===void 0||e.windowKind==="RANKING"}function so(e){return e.windowKind==="AGGREGATE"}function vs(e){return e.windowKind==="VALUE"}function Se(e){return{type:"NUMBER",value:Number(e),raw:e}}function z(e){let t=e.raw??String(e.value);return fp(t)??t}function Ep(e){let t=1;for(let r of e){if(t>Math.floor(64/2)){let i=t*2;throw new Error(`ArgumentError: expanded grouping set count ${i} exceeds limit 64 (reason=GROUPING_SET_LIMIT_EXCEEDED).`)}t*=2}let n=[{items:[]}];for(let r of e)n=n.flatMap(i=>[{items:[...i.items,r]},{items:[...i.items]}]);return n}function my(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,n=[];for(let i of e.grouping.sets)for(let o of i.items){let a=my(o);t.has(a)||(t.add(a),n.push(o))}let r=e.grouping.sets.map(i=>({items:[...i.items]}));return{type:"GROUPING_SETS",source:e.grouping.source,allItems:n,sets:r}}function Rp(e){return Z(e).type!=="NONE"}function mp(e,t){let n=Z(e);if(n.type!=="GROUPING_SETS")return null;let r=new Map,i=s=>{let l=t(s),c=r.get(l.canonicalId);if(c)return c;let p={...l,field:s};return r.set(p.canonicalId,p),p},o=n.allItems.map(i).filter((s,l,c)=>c.findIndex(p=>p.canonicalId===s.canonicalId)===l),a=n.sets.map(s=>({items:s.items.map(i)}));return{type:"GROUPING_SETS",source:n.source,allItems:o,sets:a}}function co(e){if(!e||typeof e!="object")return"UNKNOWN";let t=e;return typeof t.type=="string"?t.type:"UNKNOWN"}function Vt(e){return e==="INSERT"||e==="INSERT_SELECT"||e==="UPDATE"||e==="DELETE"||e==="UPSERT"||e==="UPSERT_SELECT"||e==="REORDER"||e==="IMPORT"}function yy(e){return e==="SELECT"||e==="VALIDATE"||e==="UNION"||e==="WITH"||e==="EXPLAIN"||e==="SHOW_APPS"||e==="DESCRIBE"||e==="CREATE_TEMP_TABLE"||e==="DROP_TEMP_TABLE"||e==="SET_VARIABLE"||e==="DECLARE_VARIABLE"||e==="ASSERT"}function Us(e){return Vt(e.type)&&!("validateOnly"in e&&e.validateOnly===!0)}function Gn(e){return!Us(e)&&(yy(e.type)||Vt(e.type))}function yp(e){return Gn(e)?e.type==="SELECT"||e.type==="WITH"||e.type==="UNION"||e.type==="SHOW_APPS"||e.type==="DESCRIBE"||e.type==="VALIDATE":!1}var gp=new Set(["STDDEV_POP","STDDEV_SAMP","VAR_POP","VAR_SAMP","MEDIAN","MODE"]);function De(e,t){for(let n of t)e.add(n)}function lo(e,t=new Set){if(e===null||typeof e!="object"||t.has(e))return!1;t.add(e);let n=e;return(n.type==="AGGREGATE"||n.type==="AGG_REF")&&typeof n.func=="string"&&gp.has(n.func)||n.type==="FIELD"&&typeof n.field=="string"&&/^(STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/i.test(n.field)?!0:Object.values(n).some(r=>Array.isArray(r)?r.some(i=>lo(i,t)):lo(r,t))}function uo(e,t=new Set){if(e===null||typeof e!="object"||t.has(e))return!1;t.add(e);let n=e;return(n.type==="AGGREGATE"||n.type==="AGG_REF")&&typeof n.func=="string"&&!gp.has(n.func)||n.type==="FIELD"&&typeof n.field=="string"&&/^(COUNT|SUM|AVG|MIN|MAX|GROUP_CONCAT)\(/i.test(n.field)?!0:Object.values(n).some(r=>Array.isArray(r)?r.some(i=>uo(i,t)):uo(r,t))}function Wt(e){let t=new Set;if(Vt(e.type))return t.add("DML"),t;switch(e.type){case"VALIDATE":t.add("VALIDATE");break;case"SELECT":De(t,Fn(e));break;case"UNION":De(t,Ap(e));break;case"WITH":for(let n of e.ctes)n.query.type!=="GENERATE_SERIES"&&De(t,Wt(n.query));De(t,Wt(e.query));break;case"CREATE_TEMP_TABLE":De(t,Wt(e.query));break;default:break}return lo(e)&&t.add("STATISTICAL_AGGREGATE"),uo(e)&&t.add("AGGREGATE"),t}function hp(e){return Wt(e).size>0}function Ap(e){let t=e.left.type==="SELECT"?Fn(e.left):Ap(e.left);return De(t,Fn(e.right)),e.all||t.add("DISTINCT"),t}function Fn(e){let t=new Set;e.joins.some(r=>r.type==="CROSS")&&t.add("CROSS_JOIN");let n=Z(e);n.type==="GROUPING_SETS"&&t.add("GROUPING_SETS"),n.type==="PLAIN"&&t.add("GROUP_BY"),e.distinct&&t.add("DISTINCT"),e.orderBy.length>0&&t.add("LOCAL_ORDER");for(let r of e.columns)if(r.type==="WINDOW_COL"&&r.windowKind==="AGGREGATE"?t.add("AGGREGATE_WINDOW"):r.type==="WINDOW_COL"&&r.orderBy.length>0&&t.add("WINDOW_ORDER"),r.type==="SCALAR_SUBQUERY_COL"&&De(t,Fn(r.query)),r.type==="CASE_COL")for(let i of r.expr.branches)De(t,xn(i.condition));return De(t,xn(e.where)),De(t,xn(e.having)),lo(e)&&t.add("STATISTICAL_AGGREGATE"),uo(e)&&t.add("AGGREGATE"),t}function xn(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,Fn(e.right.query));break;case"LOGICAL":De(t,xn(e.left)),De(t,xn(e.right));break;case"NOT":case"GROUP":De(t,xn(e.expr));break;case"EXISTS":De(t,Fn(e.query));break;case"NULL_CHECK":case"BOOLEAN":break}return t}function Sp(e){if(!e||typeof e!="object")return!1;let t=e;return t.where!==null&&t.where!==void 0}function Tp(e){if(!e||typeof e!="object")return null;let t=e;return t.type!=="INSERT"?null:Array.isArray(t.values)?t.values.length:null}var po=new Set(["YESTERDAY","TOMORROW","FROM_TODAY","THIS_WEEK","LAST_WEEK","NEXT_WEEK","THIS_MONTH","LAST_MONTH","NEXT_MONTH","THIS_YEAR","LAST_YEAR","NEXT_YEAR"]),ln=new Set(["TODAY","NOW","LOGINUSER","PRIMARY_ORGANIZATION"]),Tr=new Set([...ln,...po]),un="WHERE_RELATIVE_DATE_REQUIRES_EXACT_PUSHDOWN",wt="WHERE_KINTONE_FUNCTION_REQUIRES_EXACT_PUSHDOWN";function ie(e){return po.has(e)}function Kn(e){return ln.has(e)}function tt(e){return Tr.has(e)}var gy=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})}),xs=Object.freeze({phase10a:Object.freeze({multipleParentPreflight:!1,internalPreparedWrite:!1,publicMultipleParentWrite:!1,insertWrite:!1,upsertWrite:!1}),phase10b:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!1,publicMultipleParentWrite:!1,insertWrite:!1,upsertWrite:!1}),phase10c:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!1,insertWrite:!1,upsertWrite:!1}),phase10d:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!1,upsertWrite:!1}),phase11:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!1,upsertWrite:!1}),phase12:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!1,upsertWrite:!1}),phase13a:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!1,upsertWrite:!1}),phase13b:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!1,upsertWrite:!1}),phase13c:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!0,upsertWrite:!1}),phase14a:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!0,upsertWrite:!1}),phase14b:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!0,upsertWrite:!1}),phase14c:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!0,upsertWrite:!0}),phase15a:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!0,upsertWrite:!0}),phase15b:Object.freeze({multipleParentPreflight:!0,internalPreparedWrite:!0,publicMultipleParentWrite:!0,insertWrite:!0,upsertWrite:!0})}),Ir="v1";function q(e){throw new Error(`UnsupportedError: APPLY ${Ir} scope does not support ${e}`)}function hy(e,t){let n=Ir;Ir=e;try{return t()}finally{Ir=n}}function Ay(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 hy(e,()=>Sy(t,gy[e]))}function Sy(e,t){let n=Ay(e);if(n===null)return;if(n.type==="UPSERT"){Iy(n,t);return}let r=n.applyBlocks;if(Ms(r),!t.multipleBlocks&&r.length!==1&&q("multiple APPLY blocks in this phase"),n.type==="INSERT"){wy(n,r,t);return}let i=n;i.subtableCode&&q("a subtable UPDATE as the parent statement in this phase"),!t.updateFrom&&i.from!=null&&q("UPDATE ... FROM in this phase"),!t.check&&i.checkGroups?.length&&q("CHECK in this phase"),!t.onErrorSkip&&i.onErrorSkip&&q("ON ERROR SKIP in this phase"),!t.rejectLimit&&i.rejectLimit!=null&&q("REJECT LIMIT in this phase"),by(i.where,t.multipleParents),wp(r,t)}function wp(e,t){for(let n of e){for(let r of n.operations)t.operations.has(r.kind)||q(`${r.kind} in this phase`);bp(n);for(let r of n.operations){if(r.kind==="APPEND"){for(let i of r.fields)fo(i,"APPEND targets");$n(r.values,"APPEND values");continue}if(r.kind==="REMOVE"){!t.expectRows&&r.expectRows&&q("EXPECT ROWS in this phase"),r.selector.kind==="WHERE"&&Ip(r.selector.where,t.idxSelectors);continue}if(r.kind==="PATCH"){!t.expectRows&&r.expectRows&&q("EXPECT ROWS in this phase"),r.assignments.length===0&&q("an empty PATCH operation in this phase");for(let i of r.assignments){if(i.field.startsWith("_")||i.field.startsWith("$"))throw new Error(`ArgumentError: APPLY assignment target ${i.field} is a system field.`);i.field.includes(".")&&q("parent or qualified PATCH targets in this phase")}$n(r.assignments,"PATCH assignments"),r.selector.kind==="WHERE"&&Ip(r.selector.where,t.idxSelectors)}}}}function bp(e){let t=e.operations.some(i=>i.kind==="PATCH"||i.kind==="APPEND"||i.kind==="REMOVE"),n=e.operations.some(i=>i.kind==="ADD"||i.kind==="REMOVE_VALUE");if(t&&n)throw new Error("ArgumentError: APPLY block cannot mix row operations and multi-value operations.");let r=n?"MULTI_VALUE":"SUBTABLE";if(e.targetKind!==r)throw new Error(`ArgumentError: APPLY block target kind ${String(e.targetKind)} does not match ${r} operations.`)}var Ty=new Set(["MULTI_SELECT","CHECK_BOX","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function Np(e,t){if(bp(e),e.targetKind==="MULTI_VALUE"){if(!Ty.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 Ms(e){let t=new Set;for(let n of e){if(t.has(n.field))throw new Error(`ArgumentError: APPLY ${Ir} scope allows only one block for table ${n.field}`);t.add(n.field)}}function Iy(e,t){t.upsert||q("UPSERT in this phase"),!t.check&&e.checkGroups?.length&&q("CHECK in this phase"),!t.onErrorSkip&&e.onErrorSkip&&q("ON ERROR SKIP in this phase"),!t.rejectLimit&&e.rejectLimit!=null&&q("REJECT LIMIT in this phase");let n=e.onInsertApplyBlocks??[],r=e.onUpdateApplyBlocks??[];Ms(n),Ms(r),!t.multipleBlocks&&(n.length>1||r.length>1)&&q("multiple APPLY blocks in this phase"),Cp(n,"UPSERT ON INSERT"),wp(r,{...t,idxSelectors:!1,expectRows:!1})}function Cp(e,t){for(let n of e)for(let r of n.operations){r.kind!=="APPEND"&&q(`${r.kind} for ${t} in this phase`);for(let i of r.fields)fo(i,"APPEND targets");$n(r.values,"APPEND values")}}function wy(e,t,n){n.insert||q("INSERT in this phase"),e.subtableCode&&q("a subtable INSERT as the parent statement in this phase"),!n.check&&e.checkGroups?.length&&q("CHECK in this phase"),!n.onErrorSkip&&e.onErrorSkip&&q("ON ERROR SKIP in this phase"),!n.rejectLimit&&e.rejectLimit!=null&&q("REJECT LIMIT in this phase"),Cp(t,"INSERT")}function bt(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 Eo(e,t){let n=xs[e],r="validateOnly"in t&&t.validateOnly===!0;if(t.type!=="EXPLAIN"&&!r&&Fs(t)&&e!=="phase15b")throw new Error(`UnsupportedError: APPLY ${Bn(e)} multi-value execution is not connected`);if(t.type==="UPSERT"&&(t.onInsertApplyBlocks?.length||t.onUpdateApplyBlocks?.length)){if(t.validateOnly!==!0&&!n.upsertWrite)throw new Error(`UnsupportedError: APPLY ${Bn(e)} UPSERT execution is not connected`);return}if(t.type==="INSERT"&&t.applyBlocks?.length){if(t.validateOnly!==!0&&!n.insertWrite)throw new Error(`UnsupportedError: APPLY ${Bn(e)} INSERT execution is not connected`);return}if(!(t.type!=="UPDATE"||!t.applyBlocks?.length)&&!n.multipleParentPreflight&&!bt(t.where))throw new Error(`UnsupportedError: APPLY ${Bn(e)} execution does not support multiple-parent APPLY`)}function Fs(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(r=>r.targetKind==="MULTI_VALUE"||r.operations.some(i=>i.kind==="ADD"||i.kind==="REMOVE_VALUE"))}function Pp(e,t){if(!(t.type!=="UPDATE"||!t.applyBlocks?.length||bt(t.where))&&!xs[e].publicMultipleParentWrite)throw new Error(`UnsupportedError: APPLY ${Bn(e)} public multiple-parent write is not connected`)}function Vn(e){if(!xs[e].internalPreparedWrite)throw new Error(`UnsupportedError: APPLY ${Bn(e)} internal prepared write is not available`)}function Bn(e){return`Phase ${e.slice(5)}`}function by(e,t){bt(e)||(e.type==="BINARY"&&e.op==="="&&e.left.type==="FIELD"&&e.left.tableAlias===null&&e.left.field==="$id"&&q("a parent $id that is not a positive safe integer in this phase"),t||q("a parent WHERE other than the single condition $id = <positive safe integer> in this phase"),ks(e,t))}function ks(e,t){if(Array.isArray(e)){for(let o of e)ks(o,t);return}if(e===null||typeof e!="object")return;let n=e,r=typeof n.type=="string"?n.type:null,i=typeof n.op=="string"?n.op:null;!t&&(i==="KLIKE"||i==="NOT_KLIKE")&&q("KLIKE in parent WHERE"),(r==="SELECT"||r==="SCALAR_SUBQUERY"||r==="SUBQUERY_IN_LIST"||r==="EXISTS")&&q("subqueries in parent WHERE"),(r==="WINDOW_COL"||r==="AGGREGATE"||r==="AGG_REF"||r==="AGG_ARITH"||r==="ARITH_AGG_COL")&&q("aggregate or window expressions in parent WHERE"),(r==="FIELD"||r==="FIELD_REF")&&typeof n.field=="string"&&/^(count|sum|avg|min|max|group_concat)\s*\(/i.test(n.field)&&q("aggregate or window expressions in parent WHERE"),r==="KINTONE_FUNC"&&!(typeof n.name=="string"&&ie(n.name))&&q("non-deterministic kintone functions in parent WHERE");for(let o of Object.values(n))ks(o,t)}function Ip(e,t){$n(e,"child row selectors",t)}function $n(e,t,n=!1){if(Array.isArray(e)){for(let s of e)$n(s,t,n);return}if(e===null||typeof e!="object")return;let r=e,i=typeof r.type=="string"?r.type:null,o=typeof r.kind=="string"?r.kind:null,a=typeof r.op=="string"?r.op:null;if((a==="KLIKE"||a==="NOT_KLIKE")&&q(`KLIKE in ${t}`),(i==="SELECT"||i==="SCALAR_SUBQUERY"||i==="SUBQUERY_IN_LIST"||i==="EXISTS")&&q(`subqueries in ${t}`),(i==="WINDOW_COL"||i==="AGGREGATE"||i==="AGG_REF"||i==="AGG_ARITH"||i==="ARITH_AGG_COL")&&q(`aggregate or window expressions in ${t}`),i==="KINTONE_FUNC"&&!(typeof r.name=="string"&&ie(r.name))&&q(`non-deterministic kintone functions in ${t}`),i==="FIELD"){let s=r.tableAlias,l=r.field;s!=null&&q(`qualified or parent field references in ${t}`),fo(l,t,n)}if(i==="FIELD_REF"&&fo(r.field,t,n),!(o==="PATCH"||o==="APPEND"||o==="REMOVE"))for(let s of Object.values(r))$n(s,t,n)}function fo(e,t,n=!1){if(typeof e!="string")return;let r=e.toLowerCase();r==="_idx"&&!n&&q(`_idx in ${t}`),(r.startsWith("_p.")||r.includes("."))&&q(`parent or qualified field references in ${t}`),/^(count|sum|avg|min|max|group_concat)\s*\(/i.test(e)&&q(`aggregate expressions in ${t}`)}function wr(e){switch(e.type){case"BOOLEAN":return{type:"BOOLEAN",value:!e.value};case"BINARY":{let t=Ny(e.op);if(t===null)throw new pe(`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:wr(e.left),right:wr(e.right)};case"NOT":return e.expr;case"GROUP":return{type:"GROUP",expr:wr(e.expr)};case"EXISTS":return{...e,not:!e.not}}}function Ny(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 Op(e){return e.includes("%")||e.includes("_")}function br(e){return e.type==="BINARY"&&(e.op==="LIKE"||e.op==="NOT_LIKE")}function Yt(e){return e.type==="BINARY"&&(e.op==="KLIKE"||e.op==="NOT_KLIKE")}function Ht(e){if(e===null)return!1;if(br(e))return!0;switch(e.type){case"LOGICAL":return Ht(e.left)||Ht(e.right);case"NOT":case"GROUP":return Ht(e.expr);case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return!1}}function we(e){if(e===null)return!1;if(Yt(e))return!0;switch(e.type){case"LOGICAL":return we(e.left)||we(e.right);case"NOT":case"GROUP":return we(e.expr);case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return!1}}function Y(e){switch(e.type){case"BINARY":return Cy(e);case"NULL_CHECK":return Oy(e);case"LOGICAL":return Ly(e);case"NOT":return _y(e);case"GROUP":return Dy(e);case"EXISTS":throw new pe("EXISTS \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"BOOLEAN":throw new pe("internal error: BOOLEAN predicate reached kintone query conversion")}}function Cy(e){if(br(e))throw new pe("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=_p(e.left),n=Py(e.op),r=vy(e.right,e.op);return`${t} ${n} ${r}`}function Py(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 Oy(e){let t=_p(e.field);return e.not?`${t} != ""`:`${t} = ""`}function Ly(e){let t=Y(e.left),n=Y(e.right),r=e.op==="AND"?"and":"or",i=Lp(e.left)?`(${t})`:t,o=Lp(e.right)?`(${n})`:n;return`${i} ${r} ${o}`}function _y(e){return Y(wr(e.expr))}function Dy(e){return`(${Y(e.expr)})`}function _p(e){if(e.type==="FUNC_FIELD")throw new pe(`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==="AGG_FIELD")throw new pe("HAVING \u53E5\u306E\u96C6\u8A08\u7B97\u8853\u5F0F\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");if(e.type==="ARITH_FIELD")throw new pe("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 pe("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 pe("GROUPING() \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");return By(e.field)}function vy(e,t){switch(e.type){case"VARIABLE":throw new pe(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"VARIABLE_IN_LIST":throw new pe(`\u672A\u89E3\u6C7A\u306E\u914D\u5217\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"STRING":return Dp(e);case"NUMBER":return z(e);case"KINTONE_FUNC":return vp(e);case"IN_LIST":return Gy(e,t);case"ARITH_VALUE":throw new pe("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 pe("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 pe("IN (SELECT ...) \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"SCALAR_SUBQUERY":throw new pe("\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 pe("\u914D\u5217\u30EA\u30C6\u30E9\u30EB\u306F WHERE \u53E5\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093")}}function Dp(e){return`"${e.value.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function vp(e){switch(e.name){case"TODAY":case"NOW":case"LOGINUSER":case"PRIMARY_ORGANIZATION":return`${e.name}()`}return Uy(e)}function Uy(e){switch(e.name){case"YESTERDAY":case"TOMORROW":case"THIS_YEAR":case"LAST_YEAR":case"NEXT_YEAR":return e.args?.kind!=="NONE"?Nr():`${e.name}()`;case"FROM_TODAY":return e.args?.kind!=="FROM_TODAY"||!xy(e.args.offset,e.args.offsetText)||!My.has(e.args.unit)?Nr():`${e.name}(${e.args.offsetText}, ${e.args.unit})`;case"THIS_WEEK":case"LAST_WEEK":case"NEXT_WEEK":return e.args?.kind!=="WEEK"||e.args.weekday!==null&&!ky.has(e.args.weekday)?Nr():e.args.weekday===null?`${e.name}()`:`${e.name}(${e.args.weekday})`;case"THIS_MONTH":case"LAST_MONTH":case"NEXT_MONTH":return e.args?.kind!=="MONTH"||!Fy(e.args.day)?Nr():e.args.day===null?`${e.name}()`:`${e.name}(${e.args.day})`}return Nr()}var My=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),ky=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function xy(e,t){return!Number.isSafeInteger(e)||!/^(?:0|[1-9]\d*|-[1-9]\d*)$/.test(t)?!1:Number(t)===e}function Fy(e){return e===null||e==="LAST"||typeof e=="number"&&Number.isInteger(e)&&e>=1&&e<=31}function Nr(){throw new pe("internal error: invalid relative date function AST reached kintone query conversion")}function Gy(e,t){if(t!=="IN"&&t!=="NOT_IN")throw new pe("IN_LIST \u306F IN / NOT IN \u6F14\u7B97\u5B50\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059");return Ky(e.values),`(${e.values.map(r=>r.type==="STRING"?Dp(r):r.type==="NUMBER"?z(r):vp(r)).join(",")})`}function Ky(e){let t=e.find(n=>n.type==="VARIABLE");if(t?.type==="VARIABLE")throw new pe(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${t.name} \u304C\u3042\u308A\u307E\u3059`)}function By(e){return/^[\w$\u3000-\u9FFF]+$/u.test(e)?e:`"${e.replace(/"/g,'\\"')}"`}function Lp(e){return e.type==="LOGICAL"}var pe=class extends Error{constructor(t){super(t),this.name="KintoneQueryError"}};function Ro(e){return`'${e.replace(/'/g,"''")}'`}function Hn(e,t=!1){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached aggregate expression labeling.`);if(e.type==="FIELD_REF")return e.field;if(e.type==="NUMBER")return z(e);if(e.type==="STRING_FUNC")return Ks(e);let n=`${Hn(e.left)}${e.op}${Hn(e.right)}`;return t?n:`(${n})`}function Up(e){if(e.type==="FIELD")return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;if(e.type==="FUNC_FIELD")return Ks(e.expr);if(e.type==="AGG_FIELD")return dt(e.expr);if(e.type==="ARITH_FIELD")return Hn(e.expr);if(e.type==="GROUPING_FIELD"){let t=e.ref.field;return`GROUPING(${t.tableAlias?`${t.tableAlias}.`:""}${t.field})`}return Gs(e.expr)}function kp(e){switch(e.type){case"STRING":return Ro(e.value);case"NUMBER":return z(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=>Ro(t.value)).join(",")}]`;case"IN_LIST":return`(${e.values.map(kp).join(",")})`;case"ARITH_VALUE":return Hn(e.expr);case"CASE_VALUE":return Gs(e.expr);case"SUBQUERY_IN_LIST":return"(SUBQUERY)";case"SCALAR_SUBQUERY":return"(SUBQUERY)"}}function Cr(e){switch(e.type){case"BINARY":return`${Up(e.left)} ${e.op.replace("_"," ")} ${kp(e.right)}`;case"NULL_CHECK":return`${Up(e.field)} IS ${e.not?"NOT ":""}NULL`;case"LOGICAL":return`(${Cr(e.left)} ${e.op} ${Cr(e.right)})`;case"NOT":return`NOT (${Cr(e.expr)})`;case"GROUP":return`(${Cr(e.expr)})`;case"BOOLEAN":return e.value?"TRUE":"FALSE";case"EXISTS":return`${e.not?"NOT ":""}EXISTS (SUBQUERY)`}}function Mp(e){return e.type==="ARRAY"?`[${e.elements.map(t=>Ro(t.value)).join(",")}]`:e.type==="AGG_REF"?de(e.func,e.distinct,e.arg):e.type==="AGG_ARITH"?dt(e):e.type==="FIELD_REF"||e.type==="ARITH"?Hn(e):cn(e)}function Gs(e){let t=e.branches.map(r=>`WHEN ${Cr(r.condition)} THEN ${Mp(r.result)}`).join(" "),n=e.elseResult===null?"":` ELSE ${Mp(e.elseResult)}`;return`CASE ${t}${n} END`}function $y(e){return e.type==="AGG_REF"?de(e.func,e.distinct,e.arg):e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"?dt(e):cn(e)}function Ks(e){return`${e.func}(${e.args.map($y).join(",")})`}function cn(e){switch(e.type){case"STRING":return Ro(e.value);case"NUMBER":return z(e);case"VARIABLE":return`@${e.name}`;case"FIELD":return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;case"STRING_FUNC":return Ks(e);case"CASE_WHEN":return Gs(e);case"SCALAR_ARITH":return`(${cn(e.left)}${e.op}${cn(e.right)})`;case"CONCAT_OP":return`(${cn(e.left)}||${cn(e.right)})`}}function Wy(e){return e.type==="WILDCARD"?"*":e.type==="FIELD_REF"||e.type==="ARITH"?Hn(e,!0):cn(e)}function de(e,t,n){let r=Wy(n);return t?`${e}(DISTINCT ${r})`:`${e}(${r})`}function dt(e){return e.type==="NUMBER"?z(e):e.type==="AGG_REF"?de(e.func,e.distinct,e.arg):e.type==="AGG_GROUP_KEY"?e.tableAlias?`${e.tableAlias}.${e.field}`:e.field:e.type==="VARIABLE"?`@${e.name}`:`${dt(e.left)}${e.op}${dt(e.right)}`}var xp=Symbol("ksql.groupingRowMeta"),Fp=new WeakMap;function Bs(e,t){return Object.defineProperty(e,xp,{value:{includedCanonicalIds:t},enumerable:!1,configurable:!1,writable:!1}),e}function $s(e){return e[xp]}function Vy(e){return $s(e)?.includedCanonicalIds}function Gp(e,t){Fp.set(e,t)}function Yn(e,t){let n=Vy(t);if(!n)throw new Error("internal error: GROUPING() evaluation requires B65 grouping row membership.");let r=Fp.get(e);if(!r)throw new Error("internal error: GROUPING() reference was not resolved during B65 planning.");return n.has(r)?"0":"1"}var mo=["$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 Ws(e){return e.startsWith("_")||e.startsWith("$")}var Hy=/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/;function Hs(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(Hs);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"?Hy.test(t.field):Object.values(t).some(Hs)}function Yy(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 $e(e)||Hs(e)?"AGGREGATE_DEPENDENT":"SAFE"}}var jy=["_pid","_rid","_idx"];function Vs(e){return[...new Set(e)]}function zy(e){switch(e.kind){case"APP":return Vs([...e.fieldCodes,...mo]);case"SUBTABLE":return Vs([...e.childFieldCodes,...jy,...e.parentFieldCodes.map(t=>`_p.${t}`)]);case"MATERIALIZED":return Vs(e.columns)}}function Kp(e,t){return[e.from,...e.joins.map(r=>r.table)].map((r,i)=>({sourceIndex:i,qualifier:r.alias??r.cteName,columns:zy(t(r,i))}))}function Bp(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 $p(e,t){return e.qualifier===null?t:`${e.qualifier}.${t}`}function Wp(e,t){let n=e.tableAlias===null?e.field:`${e.tableAlias}.${e.field}`,r=e.tableAlias===null?Bp(e.field):{qualifier:e.tableAlias,fieldCode:e.field},o=(r.qualifier===null?t:t.filter(s=>s.qualifier===r.qualifier)).filter(s=>s.columns.includes(r.fieldCode));if(o.length>1)return{kind:"AMBIGUOUS",name:n};if(o.length===0)return{kind:"UNKNOWN",name:n};let a=o[0];return{kind:"PHYSICAL",sourceIndex:a.sourceIndex,fieldCode:r.fieldCode,runtimeKey:$p(a,r.fieldCode)}}function qy(e){return"alias"in e&&typeof e.alias=="string"?e.alias:null}function Jy(e,t,n){let r=Bp(e),o=(r.qualifier===null?n:n.filter(l=>l.qualifier===r.qualifier)).filter(l=>l.columns.includes(r.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:r.fieldCode,runtimeKey:$p(l,r.fieldCode)}}if(r.qualifier!==null)return{kind:"UNKNOWN",name:e};let a=t.flatMap((l,c)=>qy(l)===e?[{column:l,columnIndex:c}]:[]);if(a.length>1)return{kind:"ALIAS_REJECT",reason:"DUPLICATE"};if(a.length===1){let l=a[0],c=Yy(l.column);return c==="SAFE"?{kind:"ALIAS_SAFE",columnIndex:l.columnIndex}:{kind:"ALIAS_REJECT",reason:c==="AGGREGATE_DEPENDENT"?"AGGREGATE":"POST_GROUP_ONLY"}}return t.some(l=>l.type==="AGGREGATE"&&l.alias===null&&de(l.func,l.distinct,l.arg)===e)?{kind:"ALIAS_REJECT",reason:"AGGREGATE"}:{kind:"UNKNOWN",name:e}}function Vp(e,t,n){return{items:e.map(r=>r.type==="FIELD_NAME"?Jy(r.name,t,n):{kind:"EXPRESSION"})}}var Xy="B65_NON_GROUPED_DEPENDENCY",js=new Map([["ARITH_COL","expr"],["ARITH_AGG_COL","expr"],["STRFUNC_COL","expr"],["SCALAR_VALUE_COL","expr"],["CASE_COL","expr"],["ARITH_KEY","expr"],["FUNC_KEY","expr"],["FUNC_FIELD","expr"],["ARITH_FIELD","expr"],["CASE_FIELD","expr"],["ARITH_VALUE","expr"],["CASE_VALUE","expr"],["AGG_FIELD","expr"]]);function yo(e){if(e.startsWith("_p."))return{type:"FIELD",tableAlias:null,field: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 zs(e){let t=e.type;if(t==="FIELD_REF"&&typeof e.field=="string")return yo(e.field);if(t==="AGG_GROUP_KEY"&&typeof e.field=="string")return{type:"FIELD",tableAlias:typeof e.tableAlias=="string"?e.tableAlias:null,field:e.field};if(t==="FIELD"&&typeof e.field=="string"){if(e.aggregateRef!==void 0)return null;let n=typeof e.tableAlias=="string"?e.tableAlias:null;return n===null?yo(e.field):{type:"FIELD",tableAlias:n,field:e.field}}return null}function qs(e){return e.type==="SELECT"||e.type==="SCALAR_SUBQUERY"||e.type==="SCALAR_SUBQUERY_COL"||e.type==="SUBQUERY_IN_LIST"||e.type==="EXISTS"}function Yp(e){return e.type==="AGGREGATE"||e.type==="AGG_REF"}function jp(e){return e.type==="WINDOW_COL"}function Qy(e){let t=e.value;return typeof t!="number"?"?":Object.is(t,-0)?"0":String(t)}function jt(e,t){if(e===null)return"null";if(typeof e=="string"||typeof e=="boolean")return JSON.stringify(e);if(typeof e=="number")return String(e);if(Array.isArray(e)){let c=e.map(p=>jt(p,t));return c.some(p=>p===null)?null:`[${c.join(",")}]`}if(typeof e!="object")return null;let n=e,r=n.type;if(r==="VARIABLE"||r==="VARIABLE_COL"||qs(n))return null;if(r==="GROUP"&&n.expr!==void 0)return jt(n.expr,t);let i=typeof r=="string"?js.get(r):void 0;if(i!==void 0)return jt(n[i],t);if(r==="LITERAL_COL")return`STRING:${JSON.stringify(n.value??"")}`;if(r==="STRING")return`STRING:${JSON.stringify(n.value??"")}`;if(r==="NUMBER")return`NUMBER:${Qy(n)}`;if(r==="BOOLEAN")return`BOOLEAN:${String(n.value)}`;let o=zs(n);if(o!==null)try{return`FIELD:${t(o)}`}catch{return null}if(r==="FIELD"&&n.aggregateRef!==void 0)return null;let a=new Set(["alias","aliasDisplay","raw","separator","distinct","source"]),s=[];for(let c of Object.keys(n)){if(c==="type"||a.has(c))continue;let p=jt(n[c],t);if(p===null)return null;s.push(`${c}=${p}`)}return`${r==="ARITH"||r==="SCALAR_ARITH"?"ARITH":String(r??"OBJECT")}(${s.join(",")})`}function Zy(e){return"alias"in e&&typeof e.alias=="string"?e.alias:null}function eg(e){let t=new Map;for(let n of e){let r=Zy(n);r!==null&&t.set(r,[...t.get(r)??[],n])}return t}function Js(e){return e.tableAlias===null?e.field:`${e.tableAlias}.${e.field}`}var tg=/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/;function go(e){if(e&&typeof e=="object"){let t=e,n=zs(t);if(n!==null)return Js(n);if(t.type==="FIELD_NAME"&&typeof t.name=="string")return t.name;if(t.type==="WILDCARD")return"*";if(t.type==="PARENT_WILDCARD")return"_p.*";let r=t.alias;if(typeof r=="string"&&r.length>0)return r;let i=typeof t.type=="string"?js.get(t.type):void 0;if(i!==void 0){let a=go(t[i]);if(a!=="\u5F0F")return a}let o=t.func;if(typeof o=="string"&&o.length>0)return`${o}(...)`}return"\u5F0F"}function Hp(e,t,n,r){let i=n==="WILDCARD"?"wildcard":Js(n),o=go(t),a=r.groupingLabel===null?"GROUP BY \u304C\u306A\u3044\u305F\u3081\u5165\u529B\u5168\u4F53\u304C1\u30B0\u30EB\u30FC\u30D7\u306B\u306A\u308A":`${r.groupingLabel} \u306E\u5404\u30B0\u30EB\u30FC\u30D7\u3067\u306F`,s=n==="WILDCARD"?"\u5FC5\u8981\u306A grouping \u5217\u3092\u660E\u793A\u3057\u3066 SELECT \u3057\u3066\u304F\u3060\u3055\u3044\u3002":`\u300C${i}\u300D\u3092 MIN() \u306A\u3069\u306E\u96C6\u8A08\u95A2\u6570\u3067\u5305\u3080\u304B\u3001GROUP BY \u3078\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,l=n!=="WILDCARD"&&n.tableAlias===null&&o===i&&r.migrationSourceSql!==void 0?r.migrationGroupingFields&&r.migrationGroupingFields.length>0?` \u5B9F\u884C\u53EF\u80FD\u306A\u66F8\u304D\u63DB\u3048\u4F8B: \u300CSELECT ${r.migrationGroupingFields.join(", ")}, MIN(${i}) FROM ${r.migrationSourceSql} GROUP BY ${r.migrationGroupingFields.join(", ")}\u300D\u3002`:` \u5B9F\u884C\u53EF\u80FD\u306A\u66F8\u304D\u63DB\u3048\u4F8B: \u300CSELECT MIN(${i}) FROM ${r.migrationSourceSql}\u300D\u3002`:"";return new Error(`ArgumentError: ${e} \u5F0F\u300C${o}\u300D\u306F\u96C6\u8A08\u3082\u30B0\u30EB\u30FC\u30D7\u5316\u3082\u3055\u308C\u3066\u3044\u307E\u305B\u3093\uFF08${r.sourceLabel}\u3001\u975E\u30B0\u30EB\u30FC\u30D7\u5316\u4F9D\u5B58: ${i}\uFF09\u3002${a}\u3001\u3069\u306E\u884C\u306E\u5024\u3092\u8FD4\u3059\u304B\u6C7A\u307E\u308A\u307E\u305B\u3093\u3002${s}${l} (reason=${Xy})`)}function pn(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){for(let a of e)pn(a,t);return}let n=e;if(qs(n)||Yp(n)||jp(n)||n.type==="GROUPING_REF"||n.type==="GROUPING_FIELD"||n.type==="GROUPING_COL"||n.type==="GROUPING_KEY")return;if(n.type==="WILDCARD"||n.type==="PARENT_WILDCARD")throw Hp(t.clause,t.expression,"WILDCARD",t.policy);let r=zs(n);if(r!==null){if(t.clause!=="SELECT"&&r.tableAlias===null&&tg.test(r.field))return;if(t.clause!=="SELECT"&&r.tableAlias===null){let l=t.aliases.get(r.field)??[];if(l.length===1&&!t.resolvingAliases.has(r.field)){let c=new Set(t.resolvingAliases);c.add(r.field),pn(l[0],{...t,resolvingAliases:c});return}}let a=jt(n,t.policy.resolveField);if(a!==null&&t.policy.identities.has(a))return;let s=`FIELD:${t.policy.resolveField(r)}`;if(!t.policy.identities.has(s))throw Hp(t.clause,t.expression,r,t.policy);return}let i=jt(n,t.policy.resolveField);if(i!==null&&t.policy.identities.has(i))return;let o=typeof n.type=="string"?js.get(n.type):void 0;if(o!==void 0){pn(n[o],t);return}for(let a of Object.keys(n))a==="type"||a==="alias"||a==="aliasDisplay"||a==="raw"||pn(n[a],t)}function Pr(e,t){let n=eg(e.columns);for(let r of e.columns)r.type!=="WINDOW_COL"&&pn(r,{clause:"SELECT",expression:r,policy:t,aliases:n,resolvingAliases:new Set});e.having!==null&&pn(e.having,{clause:"HAVING",expression:e.having,policy:t,aliases:n,resolvingAliases:new Set});for(let r of e.orderBy){let i=r.key.type==="FIELD_NAME"?yo(r.key.name):r.key;pn(i,{clause:"ORDER BY",expression:i,policy:t,aliases:n,resolvingAliases:new Set})}}function Ys(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(Ys);let t=e;return qs(t)||jp(t)?!1:Yp(t)||t.type==="ARITH_AGG_COL"?!0:Object.values(t).some(Ys)}function jn(e){return Z(e).type!=="NONE"||e.columns.some(t=>t.type!=="WINDOW_COL"&&Ys(t))}function ng(e){return e.type==="FIELD_NAME"?yo(e.name):e.expr}function zp(e,t,n){let r=Z(e);if(r.type!=="PLAIN")throw new Error("InternalError: ordinary dependency policy requires plain GROUP BY.");let i=r.allItems,o=f=>{let R=Wp(f,n);if(R.kind==="AMBIGUOUS")throw new Error(`ArgumentError: field ${R.name} is ambiguous across multiple sources.`);return R.kind==="UNKNOWN"?`unknown:${R.name}`:`source:${R.sourceIndex}:${R.fieldCode}`},a=new Set;t.items.forEach((f,R)=>{if(f.kind==="PHYSICAL"){a.add(`FIELD:source:${f.sourceIndex}:${f.fieldCode}`);return}if(f.kind==="ALIAS_SAFE"){let E=jt(e.columns[f.columnIndex],o);E!==null&&a.add(E);return}if(f.kind==="EXPRESSION"){let E=jt(ng(i[R]),o);E!==null&&a.add(E)}});let s=[e.from,...e.joins.map(f=>f.table)],l=f=>`APP${f.appId}${f.subtableCode!=null?`$${f.subtableCode}`:""}`,c=s.map(f=>f.cteName??l(f)).join(" / "),p=`GROUP BY ${i.map(f=>f.type==="FIELD_NAME"?f.name:go(f)).join(", ")}`,u=s.length===1&&s[0].cteName===null?`${l(s[0])}${s[0].alias&&s[0].alias!==l(s[0])?` ${s[0].alias}`:""}`:void 0,d=i.every((f,R)=>f.type==="FIELD_NAME"&&t.items[R]?.kind==="PHYSICAL")?i.map(f=>f.name):void 0;return{identities:a,resolveField:o,sourceLabel:c,groupingLabel:p,migrationSourceSql:u,migrationGroupingFields:d}}function ho(e){if(Z(e).type!=="NONE"||!jn(e))return;let t={identities:new Set,resolveField:n=>`ast:${Js(n)}`,sourceLabel:e.from.cteName??`APP${e.from.appId}`,groupingLabel:null,migrationSourceSql:e.from.cteName===null&&e.joins.length===0?`APP${e.from.appId}${e.from.alias&&e.from.alias!==`APP${e.from.appId}`?` ${e.from.alias}`:""}`:void 0};Pr(e,t)}function qp(e){return`FIELD:${e}`}var Jp=e=>{if(e.expandedSetCount>64)throw new Error(`ArgumentError: expanded grouping set count ${e.expandedSetCount} exceeds limit ${64} (reason=GROUPING_SET_LIMIT_EXCEEDED).`);if(e.canonicalItemCount>16)throw new Error(`ArgumentError: canonical grouping item count ${e.canonicalItemCount} exceeds limit ${16} (reason=GROUPING_ITEM_LIMIT_EXCEEDED).`)};function Xs(e){return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field}function We(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(r=>We(r,t));return}let n=e;if(!(n.type==="SELECT"||n.type==="SCALAR_SUBQUERY")){if(n.type==="GROUPING_REF"){t.push(n);return}Object.values(n).forEach(r=>We(r,t))}}function To(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(r=>To(r,t));return}let n=e;if(!(n.type==="SELECT"||n.type==="SCALAR_SUBQUERY")){if(n.type==="AGGREGATE"||n.type==="AGG_REF"){We(n.arg,t);return}Object.values(n).forEach(r=>To(r,t))}}function $e(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some($e);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($e)}function rg(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"||e.type==="CASE_COL"?$e(e):!1}function ig(e,t,n){let r=t(e.field);if(!r.physical)throw new Error(`ArgumentError: grouping reference ${Xs(e.field)} must resolve to a physical APP field.`);if(!n.has(r.canonicalId))throw new Error(`ArgumentError: GROUPING argument ${Xs(e.field)} is not present in grouping allItems (reason=B65_GROUPING_ARG_NOT_ITEM).`);Gp(e,r.canonicalId)}function Qs(e){let t=Z(e),n=[];for(let i of e.columns)i.type!=="WINDOW_COL"&&We(i,n);We(e.having,n),We(e.orderBy,n);let r=[];We(e.where,r),We(e.joins,r),To(e.columns,r),To(e.having,r);for(let i of e.columns)i.type==="WINDOW_COL"&&We(i,r);if(r.length>0)throw new Error("ArgumentError: GROUPING() is not allowed in WHERE, JOIN, window, aggregate arguments, or DML expressions.");if(t.type!=="GROUPING_SETS"){if(n.length>0)throw new Error("ArgumentError: GROUPING() requires GROUP BY ROLLUP or GROUPING SETS.");ho(e);return}if(e.orderMode==="KINTONE_NATIVE")throw new Error("ArgumentError: KORDER BY is not supported with extended grouping.");if(e.columns.some(i=>i.type==="WINDOW_COL"))throw new Error("ArgumentError: window functions are not supported with extended grouping.");if(e.columns.some(i=>i.type==="WILDCARD"||i.type==="PARENT_WILDCARD"))throw new Error("ArgumentError: SELECT wildcard \u306F\u96C6\u8A08 query \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u5FC5\u8981\u306A grouping \u5217\u3092\u660E\u793A\u3057\u3066\u304F\u3060\u3055\u3044 (reason=B65_NON_GROUPED_DEPENDENCY).")}function Xp(e,t,n=()=>{}){Qs(e);let r=Z(e),i=[];for(let c of e.columns)c.type!=="WINDOW_COL"&&We(c,i);if(We(e.having,i),We(e.orderBy,i),r.type!=="GROUPING_SETS")return null;let o=mp(e,t),a=new Set,s=[];for(let c of o.allItems){let p=c;if(!p.physical)throw new Error(`ArgumentError: grouping item ${Xs(c.field)} must resolve to a physical APP field.`);a.has(p.canonicalId)||(a.add(p.canonicalId),s.push(p))}n({expandedSetCount:r.sets.length,canonicalItemCount:a.size});for(let c of i)ig(c,t,a);Pr(e,{identities:new Set([...a].map(qp)),resolveField:c=>t(c).canonicalId,sourceLabel:e.from.cteName??`APP${e.from.appId}`,groupingLabel:`GROUP BY ${r.source}`});let l=new Set;for(let c of s)l.add(c.directKey),c.unqualifiedBridgeKey!==null&&l.add(c.unqualifiedBridgeKey);for(let c of e.columns){if(!rg(c))continue;let p="alias"in c?c.alias:null;if(p!==null&&l.has(p))throw new Error(`ArgumentError: aggregate alias ${p} collides with a grouping runtime key (reason=B65_AGGREGATE_ALIAS_COLLISION).`)}return o}function og(e){return e.some(t=>t.type==="WINDOW_COL")}function Ve(e){return e.from.subtableCode||e.joins.some(t=>t.table.subtableCode)||e.joins.length>0||Z(e).type!=="NONE"||e.distinct||og(e.columns)||e.columns.some(t=>t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"||t.type==="SCALAR_SUBQUERY_COL"||t.type==="CASE_COL"&&$e(t.expr)||t.type==="STRFUNC_COL"&&nd(t.expr)||t.type==="SCALAR_VALUE_COL"&&Lr(t.expr))||Nt(e.where)||e.orderBy.some(t=>t.key.type!=="FIELD_NAME")?"FULL_SCAN":"SIMPLE"}function Nt(e){if(e===null)return!1;switch(e.type){case"BOOLEAN":return!0;case"BINARY":return Qp(e.left)||e.right.type==="ARITH_VALUE"||e.right.type==="CASE_VALUE"||e.right.type==="SUBQUERY_IN_LIST"||e.right.type==="SCALAR_SUBQUERY"||br(e);case"NULL_CHECK":return Qp(e.field);case"LOGICAL":return Nt(e.left)||Nt(e.right);case"NOT":case"GROUP":return Nt(e.expr);case"EXISTS":return!0}}function Qp(e){return e.type==="FUNC_FIELD"||e.type==="ARITH_FIELD"||e.type==="CASE_FIELD"}function wo(e){let t=[],r=(e.limit!==null||e.offset!==null)&&e.orderBy.length===0;if(e.where!==null&&t.push(Y(e.where)),e.orderBy.length>0){let i=e.orderBy.map(ag).join(", ");t.push(`order by ${i}`)}else r&&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:sg(e.columns),totalCount:!1}}function td(e,t){let n=[];return e.where!==null&&e.joins.length===0&&!Nt(e.where)&&n.push(Y(e.where)),{app:t,query:n.join(" "),fields:[]}}function dn(e,t,n){let i=id(e,n).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 ag(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 sg(e){if(e.some(r=>r.type==="WILDCARD"||r.type==="AGGREGATE"||r.type==="ARITH_AGG_COL"||r.type==="CASE_COL"||r.type==="SCALAR_SUBQUERY_COL"))return[];let n=[];for(let r of e)r.type==="FIELD"?n.push(bo(r.field)):r.type==="ARITH_COL"?Or(r.expr,n):r.type==="STRFUNC_COL"?Zs(r.expr,n):r.type==="SCALAR_VALUE_COL"&&zn(r.expr,n);return[...new Set(n)]}function lg(e,t){Or(e.left,t),Or(e.right,t)}function Or(e,t){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached SELECT field collection.`);e.type==="FIELD_REF"?t.push(bo(e.field)):e.type==="ARITH"?lg(e,t):e.type==="STRING_FUNC"&&Zs(e,t)}function bo(e){let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function Zs(e,t){for(let n of e.args)ug(n,t)}function ug(e,t){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"){Io(e,t);return}zn(e,t)}function zn(e,t){if(e.type==="FIELD"){t.push(bo(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field));return}if(e.type==="STRING_FUNC"){Zs(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){zn(e.left,t),zn(e.right,t);return}if(e.type==="CASE_WHEN"){for(let n of e.branches)Zp(n.result,t);e.elseResult&&Zp(e.elseResult,t)}}function Zp(e,t){if(e.type!=="ARRAY"){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"){Io(e,t);return}if(e.type==="FIELD_REF"||e.type==="ARITH"){Or(e,t);return}zn(e,t)}}function Io(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&cg(e.arg,t);return}e.type==="AGG_ARITH"&&(Io(e.left,t),Io(e.right,t)),e.type==="AGG_GROUP_KEY"&&t.push(bo(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field))}function cg(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?Or(e,t):zn(e,t)}function nd(e){return e.args.some(t=>t.type==="AGG_REF"||t.type==="AGG_ARITH"?!0:t.type==="AGG_GROUP_KEY"||t.type==="VARIABLE"?!1:Lr(t))}function Lr(e){return e.type==="STRING_FUNC"?nd(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?Lr(e.left)||Lr(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>ed(t.result))||e.elseResult!==null&&ed(e.elseResult):!1}function ed(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?!1:Lr(e)}function rd(e,t){let n=new Set,r=id(e,t,{includeMaterialized:!0,unqualified:n});return{bySource:new Map([...r.entries()].map(([i,o])=>[i,new Set(o.fields)])),unqualified:n}}function id(e,t,n){let r=[e.from,...e.joins.map(A=>A.table)],i=[e.from,...e.joins.map(A=>A.table)].filter(A=>A.cteName===null),o=n?r:i,a=new Map;for(let A of o)a.set(A,{table:A,allFields:!1,fields:new Set});if(a.size===0)return a;let s=o[0]??null,l=o.find(A=>!!A.subtableCode)??null,c=new Map;for(let A of o)A.alias&&c.set(A.alias,A),A.cteName!==null?c.set(A.cteName,A):A.subtableCode||(c.set(`APP${A.appId}`,A),c.set(`app${A.appId}`,A));let p=pg(e.columns),u=A=>{let w=a.get(A);w&&(w.allFields=!0,w.fields.clear())},d=()=>{for(let A of o)u(A)},f=()=>{for(let A of o)A.subtableCode&&u(A)},R=(A,w)=>{let x=a.get(A);if(!(!x||x.allFields)){if(A.subtableCode){if(w.startsWith("_p.")){let O=w.slice(3);O&&O!=="*"&&x.fields.add(O);return}return void 0}w&&x.fields.add(w)}},E=(A,w="select",x)=>{if(!A||A==="*")return;if(A==="_p.*"){f();return}if(A.endsWith(".*")){let F=A.slice(0,-2);if(!F){d();return}if(F==="_p"){f();return}let W=c.get(F);if(W){u(W);return}return}if(w==="groupBy"&&x!==void 0){if(x.kind==="PHYSICAL"){let F=r[x.sourceIndex];F&&(n||F.cteName===null)&&R(F,x.fieldCode)}return}if((w==="orderBy"||w==="having"||w==="groupBy")&&p.has(A)||(w==="orderBy"||w==="having"||w==="groupBy")&&dg(A))return;let O=A.indexOf(".");if(O>0){let F=A.slice(0,O),W=A.slice(O+1);if(F==="_p"){l&&R(l,`_p.${W}`);return}let K=c.get(F);if(K){R(K,W);return}if(n)return}n?n.unqualified.add(A):s&&R(s,A)},m=(A,w,x="select")=>{if(w){if(w==="_p"){l&&R(l,`_p.${A}`);return}let O=c.get(w);if(O){R(O,A);return}if(n)return}E(A,x)},y=(A,w="select")=>{if(A.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${A.name} reached source-aware field collection.`);if(A.type==="FIELD_REF"){E(A.field,w);return}if(A.type==="ARITH"){y(A.left,w),y(A.right,w);return}if(A.type==="STRING_FUNC"){h(A,w);return}},g=(A,w="select")=>{if(A.type==="AGG_REF"){A.arg.type!=="WILDCARD"&&N(A.arg,w);return}A.type==="AGG_ARITH"&&(g(A.left,w),g(A.right,w)),A.type==="AGG_GROUP_KEY"&&m(A.field,A.tableAlias??null,w)},S=(A,w="select")=>{if(A.type==="AGG_REF"||A.type==="AGG_ARITH"||A.type==="AGG_GROUP_KEY"||A.type==="VARIABLE"){g(A,w);return}I(A,w)},h=(A,w="select")=>{for(let x of A.args)S(x,w)},I=(A,w="select")=>{if(A.type==="FIELD"){m(A.field,A.tableAlias,w);return}if(A.type==="STRING_FUNC"){h(A,w);return}if(A.type==="SCALAR_ARITH"||A.type==="CONCAT_OP"){I(A.left,w),I(A.right,w);return}A.type==="CASE_WHEN"&&P(A,w)},N=(A,w="select")=>{if(A.type==="FIELD_REF"||A.type==="ARITH"){y(A,w);return}I(A,w)},U=(A,w="select")=>{if(A.type!=="ARRAY"){if(A.type==="AGG_REF"||A.type==="AGG_ARITH"){g(A,w);return}if(A.type==="FIELD_REF"||A.type==="ARITH"){y(A,w);return}I(A,w)}},P=(A,w="select")=>{for(let x of A.branches)C(x.condition,w),U(x.result,w);A.elseResult&&U(A.elseResult,w)},M=(A,w="select")=>{if(A.type==="FIELD"){if(A.aggregateRef){g(A.aggregateRef,w);return}m(A.field,A.tableAlias,w);return}if(A.type==="FUNC_FIELD"){h(A.expr,w);return}if(A.type==="AGG_FIELD"){g(A.expr,w);return}if(A.type==="ARITH_FIELD"){y(A.expr,w);return}A.type!=="GROUPING_FIELD"&&P(A.expr,w)},v=(A,w="select")=>{if(A.type==="ARITH_VALUE"){y(A.expr,w);return}if(A.type==="CASE_VALUE"){P(A.expr,w);return}},C=(A,w="where")=>{if(A)switch(A.type){case"BINARY":M(A.left,w),v(A.right,w);return;case"NULL_CHECK":M(A.field,w);return;case"LOGICAL":C(A.left,w),C(A.right,w);return;case"NOT":case"GROUP":C(A.expr,w);return;case"EXISTS":case"BOOLEAN":return}},_=(A,w)=>{if(A.type==="FIELD_NAME"){E(A.name,"groupBy",w);return}if(A.type==="ARITH_KEY"){y(A.expr,"groupBy");return}h(A.expr,"groupBy")},b=(A,w="orderBy")=>{if(A.type==="FIELD_NAME"){E(A.name,w);return}if(A.type==="ARITH_KEY"){y(A.expr,w);return}A.type!=="GROUPING_KEY"&&h(A.expr,w)};for(let A of e.columns)switch(A.type){case"WILDCARD":d();break;case"PARENT_WILDCARD":f();break;case"FIELD":E(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"&&N(A.arg,"select");break;case"ARITH_AGG_COL":g(A.expr,"select");break;case"ARITH_COL":y(A.expr,"select");break;case"CASE_COL":P(A.expr,"select");break;case"STRFUNC_COL":h(A.expr,"select");break;case"SCALAR_VALUE_COL":I(A.expr,"select");break;case"GROUPING_COL":break;case"SCALAR_SUBQUERY_COL":break;case"WINDOW_COL":(A.windowKind==="AGGREGATE"||A.windowKind==="VALUE")&&A.arg.type!=="WILDCARD"&&N(A.arg,"select");for(let w of A.partitionBy)m(w.field,w.tableAlias,"select");for(let w of A.orderBy)b(w.key,"select");break}for(let A of e.joins)A.type!=="CROSS"&&(m(A.on.left.field,A.on.left.tableAlias,"where"),m(A.on.right.field,A.on.right.tableAlias,"where"));C(e.where,"where");let D=Z(e);if(D.type==="PLAIN")D.allItems.forEach((A,w)=>_(A,t?.items[w]));else if(D.type==="GROUPING_SETS")for(let A of D.allItems)m(A.field,A.tableAlias,"select");C(e.having,"having");for(let A of e.orderBy)b(A.key);return a}function pg(e){let t=new Set;for(let n of e){if(n.type==="FIELD"&&n.alias){t.add(n.alias);continue}if(n.type==="LITERAL_COL"){t.add(n.alias??`'${n.value}'`);continue}if(n.type==="AGGREGATE"){n.alias?t.add(n.alias):t.add(de(n.func,n.distinct,n.arg));continue}if(n.type==="ARITH_AGG_COL"){n.alias&&t.add(n.alias);continue}if(n.type==="ARITH_COL"){n.alias&&t.add(n.alias);continue}if(n.type==="CASE_COL"){t.add(n.alias??"case");continue}if(n.type==="STRFUNC_COL"){n.alias&&t.add(n.alias);continue}if(n.type==="SCALAR_VALUE_COL"){n.alias&&t.add(n.alias);continue}if(n.type==="GROUPING_COL"){t.add(n.alias??`GROUPING(${n.ref.field.tableAlias?`${n.ref.field.tableAlias}.`:""}${n.ref.field.field})`);continue}if(n.type==="SCALAR_SUBQUERY_COL"){t.add(n.alias??"(subquery)");continue}n.type==="WINDOW_COL"&&t.add(n.alias)}return t}function dg(e){return/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/i.test(e)}function zt(e){if(e.ctes.length!==1)return!1;let t=e.ctes[0];if(t.query.type!=="SELECT"||Ve(t.query)!=="SIMPLE"||!t.query.columns.every(r=>r.type==="WILDCARD"||r.type==="FIELD"&&(r.alias===null||r.alias===r.field)))return!1;let n=e.query;return n.type!=="SELECT"||n.from.cteName!==t.name||n.joins.length>0||Rp(n)||n.distinct?!1:!n.columns.some(r=>r.type==="AGGREGATE"||r.type==="ARITH_AGG_COL")}function qt(e){let t=e.ctes[0].query,n=e.query,r=No(n.where,n.from.alias),i=t.where===null?r:r===null?t.where:{type:"LOGICAL",op:"AND",left:t.where,right:r},o=n.columns.every(a=>a.type==="WILDCARD")?t.columns:n.columns;return{type:"SELECT",from:t.from,joins:[],columns:o,where:i,groupBy:[],having:null,orderMode:"CANONICAL",orderBy:n.orderBy.length>0?n.orderBy:t.orderBy,limit:n.limit??t.limit,offset:n.offset??t.offset,distinct:!1}}function No(e,t){if(e===null||t===null)return e;switch(e.type){case"BINARY":return{...e,left:od(e.left,t)};case"NULL_CHECK":return{...e,field:od(e.field,t)};case"LOGICAL":return{...e,left:No(e.left,t),right:No(e.right,t)};case"NOT":case"GROUP":return{...e,expr:No(e.expr,t)};case"EXISTS":case"BOOLEAN":return e}}function od(e,t){return e.type==="FIELD"&&e.tableAlias===t?{...e,tableAlias:null}:e}var fg=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME","CREATOR","MODIFIER"]),Eg=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]);function te(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":Eg.has(e.fieldType)?t="option":fg.has(e.fieldType)?t="string":t="unsupported";let n=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,...n&&n.size>0?{optionOrder:n}:{}}}function $(e,t=e==="number"?"KSQL_NUMBER":"KSQL_STRING"){return{fieldType:t,compareMode:e,inSubtable:!1,requiresCollectionOperators:!1}}function qn(e,t,n){return{...e,source:{appId:t,fieldCode:n}}}function Co(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 n=e.optionOrder,r=t.optionOrder;if(n===r)return!0;if(!n||!r||n.size!==r.size)return!1;for(let[i,o]of n)if(r.get(i)!==o)return!1;return!0}var He=["=","!=",">","<",">=","<="],Rg=new Set(["DATE","DATETIME","CREATED_TIME","UPDATED_TIME"]),mg=new Set(He),yg=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"])],["PRIMARY_ORGANIZATION",new Set(["ORGANIZATION_SELECT"])]]),gg=new Map([["TODAY",new Set(He)],["NOW",new Set(He)],["LOGINUSER",new Set(["in","not in"])],["PRIMARY_ORGANIZATION",new Set(["in","not in"])]]),hg=["=","!=","in","not in"],Ag=new Map([["RECORD_NUMBER",new Set([...He,"in","not in"])],["__ID__",new Set([...He,"in","not in"])],["CREATOR",new Set(["in","not in"])],["MODIFIER",new Set(["in","not in"])],["CREATED_TIME",new Set(He)],["UPDATED_TIME",new Set(He)],["DATE",new Set(He)],["TIME",new Set(He)],["DATETIME",new Set(He)],["SINGLE_LINE_TEXT",new Set(["=","!=","in","not in","like","not like"])],["LINK",new Set(["=","!=","in","not in","like","not like"])],["NUMBER",new Set([...He,"in","not in"])],["CALC",new Set([...He,"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(hg)],["STATUS_ASSIGNEE",new Set(["in","not in"])]]),Sg=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"])]]),tl=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"]),ld=new Set(["CHECK_BOX","MULTI_SELECT","FILE","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE","CATEGORY"]);function Oo(e){return Ag.get(e)??new Set}function ud(e,t){let n=[],r=i=>{if(i.type==="BINARY"){if((i.op==="="||i.op==="!="||i.op==="<>")&&i.left.type==="FIELD"&&i.right.type==="STRING"&&i.right.value!==""){let o=t(i.left);if(o!==void 0&&o.compareMode==="option"&&tl.has(o.fieldType)&&Oo(o.fieldType).has("in")&&o.optionOrder?.has(i.right.value)===!0){let a=i.op==="="?"IN":"NOT_IN";return n.push({field:i.left,originalOperator:i.op,normalizedOperator:a,value:i.right.value}),{...i,op:a,right:{type:"IN_LIST",values:[i.right]}}}}return i}if(i.type==="LOGICAL"){let o=r(i.left),a=r(i.right);return o===i.left&&a===i.right?i:{...i,left:o,right:a}}if(i.type==="GROUP"||i.type==="NOT"){let o=r(i.expr);return o===i.expr?i:{...i,expr:o}}return i};return{normalizedWhere:r(e),rewrites:n}}function he(e,t){return e===null?{capability:"EXACT_PUSHDOWN",reasons:[{code:"WHERE_EXACT"}]}:Dr(e,t)}function Dr(e,t){switch(e.type){case"BOOLEAN":return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]};case"BINARY":return Tg(e.op,e.left,e.right,t);case"NULL_CHECK":return e.field.type!=="FIELD"?el():bg(e.field,e.not?"IS NOT NULL":"IS NULL",t);case"EXISTS":return el();case"GROUP":return Dr(e.expr,t);case"NOT":{let n=Dr(e.expr,t);return n.capability!=="SUPERSET_PREFILTER"?n:pd(n.reasons)?Ur({capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"},...n.reasons]}):{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]}}case"LOGICAL":{let n=Dr(e.left,t),r=Dr(e.right,t);return Cg(e.op,n,r)}}}function Tg(e,t,n,r){if(n.type==="KINTONE_FUNC"&&ie(n.name))return Ig(e,t,n,r);if(n.type==="KINTONE_FUNC"&&ad(n))return sd(e,t,n,r);if(n.type==="IN_LIST"){let p=n.values.filter(u=>u.type==="KINTONE_FUNC");if(p.length>0)return n.values.length===1&&p.length===1?sd(e,t,p[0],r):Po("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED",p[0].name,t.type==="FIELD"?t.field:void 0,t.type==="FIELD"?r(t)?.fieldType:void 0,vr(e))}if(t.type!=="FIELD")return el();let i=r(t);if(!i)return Jn("WHERE_FIELD_UNRESOLVED",t.field,void 0,vr(e));let o=vr(e);if(!cd(i.fieldType,o))return Jn("WHERE_OPERATOR_INVALID_FOR_FIELD_TYPE",t.field,i.fieldType,o);if(!Ng(i.fieldType,e))return Jn("WHERE_OPERATOR_UNSUPPORTED",t.field,i.fieldType,o);let a=Oo(i.fieldType),s=n.type==="STRING"||n.type==="NUMBER"||n.type==="IN_LIST"||ad(n),l=!i.requiresCollectionOperators||o!=="="&&o!=="!=",c=e==="LIKE"||e==="NOT_LIKE";return s&&l&&a.has(o)&&!c?{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 ad(e){return e.type==="KINTONE_FUNC"&&ln.has(e.name)}function sd(e,t,n,r){let i=vr(e),o=n.name;if(!ln.has(o)||t.type!=="FIELD")return Po("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED",o,void 0,void 0,i);let a=r(t),s=yg.get(o);return!a||!s.has(a.fieldType)||a.inSubtable||a.requiresCollectionOperators?Po("WHERE_KINTONE_FUNCTION_FIELD_TYPE_UNSUPPORTED",o,t.field,a?.fieldType,i):gg.get(o).has(i)?{capability:"EXACT_PUSHDOWN",reasons:[{code:"WHERE_EXACT",functionName:o,field:t.field,fieldType:a.fieldType,operator:i}]}:Po("WHERE_KINTONE_FUNCTION_OPERATOR_UNSUPPORTED",o,t.field,a.fieldType,i)}function Ig(e,t,n,r){let i=vr(e),o=n.name;if(t.type!=="FIELD")return _r("WHERE_RELATIVE_DATE_CONTEXT_UNSUPPORTED",o,void 0,void 0,i);let a=r(t);return a?wg(n)?mg.has(i)?!Rg.has(a.fieldType)||a.inSubtable||a.requiresCollectionOperators?_r("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}]}:_r("WHERE_RELATIVE_DATE_OPERATOR_UNSUPPORTED",o,t.field,a.fieldType,i):_r("WHERE_RELATIVE_DATE_ARGUMENT_INVALID",o,t.field,a.fieldType,i):_r("WHERE_RELATIVE_DATE_FIELD_TYPE_UNSUPPORTED",o,t.field,void 0,i)}function wg(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 bg(e,t,n){let r=n(e);return r?cd(r.fieldType,t)?!tl.has(r.fieldType)&&!ld.has(r.fieldType)?Jn("WHERE_OPERATOR_UNSUPPORTED",e.field,r.fieldType,t):{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_RESIDUAL",field:e.field,fieldType:r.fieldType,operator:t}]}:Jn("WHERE_OPERATOR_INVALID_FOR_FIELD_TYPE",e.field,r.fieldType,t):Jn("WHERE_FIELD_UNRESOLVED",e.field,void 0,t)}function cd(e,t){let n=Sg.get(e);return n===void 0||n.has(t)}function Ng(e,t){return tl.has(e)?!0:ld.has(e)?t==="="||t==="!="||t==="<>"||t==="IN"||t==="NOT_IN"||t==="LIKE"||t==="NOT_LIKE"||t==="KLIKE"||t==="NOT_KLIKE":!1}function vr(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 Cg(e,t,n){let r=[...t.reasons,...n.reasons];return t.capability==="UNSUPPORTED"||n.capability==="UNSUPPORTED"?Ur({capability:"UNSUPPORTED",reasons:r}):t.capability==="EXACT_PUSHDOWN"&&n.capability==="EXACT_PUSHDOWN"?{capability:"EXACT_PUSHDOWN",reasons:r}:e==="AND"&&(t.capability==="EXACT_PUSHDOWN"||n.capability==="EXACT_PUSHDOWN"||t.capability==="SUPERSET_PREFILTER"||n.capability==="SUPERSET_PREFILTER")?Ur({capability:"SUPERSET_PREFILTER",reasons:[{code:"WHERE_SUPERSET_PREFILTER"},...r]}):Ur({capability:"LOCAL_ONLY",reasons:r})}function el(){return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]}}function Jn(e,t,n,r){return{capability:"UNSUPPORTED",reasons:[{code:e,field:t,fieldType:n,operator:r}]}}function Po(e,t,n,r,i){return Ur({capability:"UNSUPPORTED",reasons:[{code:e,functionName:t,field:n,fieldType:r,operator:i}]})}function _r(e,t,n,r,i){return dd({capability:"UNSUPPORTED",reasons:[{code:e,functionName:t,field:n,fieldType:r,operator:i}]})}function pd(e){return e.some(t=>t.code.startsWith("WHERE_RELATIVE_DATE_")||t.functionName!==void 0&&ie(t.functionName))}function Pg(e){return e.some(t=>t.code.startsWith("WHERE_KINTONE_FUNCTION_")||t.functionName!==void 0&&ln.has(t.functionName))}function dd(e){if(e.capability==="EXACT_PUSHDOWN"||!pd(e.reasons)||e.reasons.some(n=>n.code==="WHERE_RELATIVE_DATE_REQUIRES_EXACT_PUSHDOWN"))return e;let t=e.reasons.find(n=>n.code.startsWith("WHERE_RELATIVE_DATE_")||n.functionName!==void 0&&ie(n.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 Og(e){if(e.capability==="EXACT_PUSHDOWN"||!Pg(e.reasons)||e.reasons.some(n=>n.code==="WHERE_KINTONE_FUNCTION_REQUIRES_EXACT_PUSHDOWN"))return e;let t=e.reasons.find(n=>n.code.startsWith("WHERE_KINTONE_FUNCTION_")||n.functionName!==void 0&&ln.has(n.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 Ur(e){return Og(dd(e))}function Mr(e){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e);if(!t)return!1;let n=Number(t[1]),r=Number(t[2]),i=Number(t[3]);if(n<1||n>9999)return!1;let o=new Date(0);return o.setUTCFullYear(n,r-1,i),o.setUTCHours(0,0,0,0),o.getUTCFullYear()===n&&o.getUTCMonth()===r-1&&o.getUTCDate()===i}function Lo(e){let t=/^(\d{2}):(\d{2})$/.exec(e);return t!==null&&Number(t[1])<=23&&Number(t[2])<=59}function _o(e){let t=/^(\d{4}-\d{2}-\d{2})T(\d{2}):(\d{2}):(\d{2})Z$/.exec(e);return!t||!Mr(t[1])?!1:Number(t[2])<=23&&Number(t[3])<=59&&Number(t[4])<=59}function Do(e){let t=e.raw??String(e.value),n=Ae(t);if(n===null)return!1;if(n.sign===0)return z(e)==="0";let r=Math.max(n.scale,0),i=Math.max(n.coefficient.length-n.scale,0);if(r>10||i+r>30)return!1;let o=_s(n);return z(e)===o}var Lg=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]),_g=new Set(["CREATOR","MODIFIER","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE"]),Dg=new Set(["SINGLE_LINE_TEXT","LINK","MULTI_LINE_TEXT","RICH_TEXT","FILE"]),vg=new Set(["DATETIME","CREATED_TIME","UPDATED_TIME"]);function vo(e,t){let{fieldCode:n,fieldType:r,fieldOptions:i}=t;return r.startsWith("KSQL_")||e.op==="LIKE"||e.op==="NOT_LIKE"?"unsafe":e.op==="KLIKE"||e.op==="NOT_KLIKE"?Dg.has(r)&&e.right.type==="STRING"&&e.right.value!==""?"exact":"unsafe":r==="__ID__"||n==="$id"?Mg(e.right)&&(e.op==="="||e.op==="<"||e.op===">"||e.op==="<="||e.op===">=")?"exact":"unsafe":r==="RECORD_NUMBER"||r==="CALC"?Ug(e):r==="NUMBER"?(e.op==="IN"||e.op==="NOT_IN")&&e.right.type==="IN_LIST"&&e.right.values.length>0&&e.right.values.every(o=>o.type==="NUMBER"&&Do(o))||(e.op==="="||e.op==="!="||e.op==="<>"||e.op==="<"||e.op===">"||e.op==="<="||e.op===">=")&&e.right.type==="NUMBER"&&Do(e.right)?"exact":"unsafe":_g.has(r)?nl(e)?"exact":"unsafe":r==="SINGLE_LINE_TEXT"||r==="LINK"?nl(e)||(e.op==="="||e.op==="!="||e.op==="<>")&&e.right.type==="STRING"&&e.right.value!==""?"exact":"unsafe":r==="DATE"||r==="TIME"||vg.has(r)?e.op!=="="&&e.op!=="!="&&e.op!=="<>"&&e.op!=="<"&&e.op!==">"&&e.op!=="<="&&e.op!==">="||e.right.type!=="STRING"?"unsafe":r==="DATE"?Mr(e.right.value)?"exact":"unsafe":r==="TIME"?Lo(e.right.value)?"exact":"unsafe":_o(e.right.value)?"exact":"unsafe":Lg.has(r)?!nl(e)||i===void 0?"unsafe":e.right.type==="IN_LIST"&&e.right.values.every(o=>o.type==="STRING"&&i.has(o.value))?"exact":"unsafe":"unsafe"}function fd(e,t){if(e.left.type!=="FIELD"||e.left.field==="$id"||!t(e.left))return!1;if(e.op==="IN"||e.op==="NOT_IN"){if(e.right.type!=="IN_LIST"||e.right.values.length===0)return!1;let n=e.right.values[0].type;return n!=="NUMBER"&&n!=="STRING"?!1:e.right.values.every(r=>r.type===n&&(r.type!=="STRING"||r.value!==""))}return e.op!=="="&&e.op!=="!="&&e.op!=="<>"&&e.op!=="<"&&e.op!==">"&&e.op!=="<="&&e.op!==">="?!1:e.right.type==="NUMBER"||e.right.type==="STRING"&&e.right.value!==""}function nl(e){return(e.op==="IN"||e.op==="NOT_IN")&&e.right.type==="IN_LIST"&&e.right.values.length>0&&e.right.values.every(t=>t.type==="STRING"&&t.value!=="")}function Ug(e){let t=n=>n.type==="NUMBER"&&Do(n)||n.type==="STRING"&&n.value!=="";if((e.op==="IN"||e.op==="NOT_IN")&&e.right.type==="IN_LIST"){let n=e.right.values;if(n.length>0&&n.every(t)&&n.every(r=>r.type===n[0].type))return"superset"}return(e.op==="="||e.op==="!="||e.op==="<>"||e.op==="<"||e.op===">"||e.op==="<="||e.op===">=")&&t(e.right)?"superset":"unsafe"}function Mg(e){return e.type==="NUMBER"&&Number.isSafeInteger(e.value)&&e.value>0}function rl(e,t={}){return xo(e,t).condition}function xo(e,t={}){return Uo(e,n=>kg(n,t))}function kr(e,t={}){return Mo(e,n=>fd(n,r=>ko(r,t)))}function Uo(e,t){switch(e.type){case"BINARY":{let n=t(e);return n==="unsafe"?{condition:null,relation:null}:{condition:e,relation:n}}case"LOGICAL":{if(e.op!=="AND")return{condition:null,relation:null};let n=Uo(e.left,t),r=Uo(e.right,t);return n.condition&&r.condition?{condition:{...e,left:n.condition,right:r.condition},relation:n.relation==="exact"&&r.relation==="exact"?"exact":"superset"}:n.condition?n:r}case"GROUP":return Uo(e.expr,t);case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return{condition:null,relation:null}}}function Mo(e,t){switch(e.type){case"BINARY":return t(e)?e:null;case"LOGICAL":if(e.op!=="AND")return null;{let n=Mo(e.left,t),r=Mo(e.right,t);return n&&r?{...e,left:n,right:r}:n??r??null}case"GROUP":return Mo(e.expr,t);case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return null}}function kg(e,t){if(xg(e,t)||Fg(e,t))return"exact";if(e.left.type!=="FIELD"||!ko(e.left,t))return"unsafe";let n=t.fieldTypes?.get(e.left.field);return n===void 0||n.startsWith("KSQL_")||he(e,i=>{if(!ko(i,t))return;let o=t.fieldTypes?.get(i.field);return o===void 0?void 0:te({fieldType:o})}).capability!=="EXACT_PUSHDOWN"?"unsafe":vo(e,{fieldCode:e.left.field,fieldType:n,fieldOptions:t.fieldOptions?.get(e.left.field)})}function xg(e,t){return t.allowKlike===!1||e.op!=="KLIKE"&&e.op!=="NOT_KLIKE"||e.left.type!=="FIELD"||!ko(e.left,t)?!1:e.right.type==="STRING"||t.allowUnresolvedKlikeVariables===!0&&e.right.type==="VARIABLE"}function Fg(e,t){return!Gg(e.left,t)||e.right.type!=="NUMBER"?!1:e.op==="="||e.op===">"||e.op==="<"||e.op===">="||e.op==="<="}function Gg(e,t){if(e.type!=="FIELD"||e.field!=="$id")return!1;let n=t.tableAlias??null;return e.tableAlias===n?!0:t.allowUnqualifiedFields===!0&&e.tableAlias===null}function ko(e,t){let n=t.tableAlias??null;return e.tableAlias===n?!0:t.allowUnqualifiedFields===!0&&e.tableAlias===null}function xr(e,t={}){let n=e!==null&&t.extractCondition!==!1?xo(e,t):{condition:null,relation:null},{condition:r,relation:i}=n,o=new Set;Xn(r,o);let a=new Set;return Xn(e,a),{condition:r,relation:i,appliedKlikes:o,allKlikes:[...a]}}function fn(e,t={}){let n=e.joins.every(u=>u.type==="INNER"||u.type==="CROSS"),r={allowKlike:n,allowUnresolvedKlikeVariables:t.allowUnresolvedVariables},i=!e.from.subtableCode&&e.from.cteName===null,o=e.joins.length===0||e.from.alias!==null,a=xr(e.where,{...r,extractCondition:i&&o&&n,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,c=new Map;if(e.where!==null)for(let u of e.joins){if(u.type!=="INNER"&&u.type!=="CROSS"||!u.table.alias||u.table.subtableCode||u.table.cteName!==null)continue;let d=xo(e.where,{...r,tableAlias:u.table.alias,fieldTypes:t.fieldTypesByApp?.get(u.table.appId),fieldOptions:t.fieldOptionsByApp?.get(u.table.appId)});d.condition!==null&&d.relation!==null&&(l.set(u.table.alias,d.condition),c.set(u.table.alias,d.relation))}let p=new Set(a.appliedKlikes);for(let u of l.values())Xn(u,p);return{mainCondition:s,mainRelation:a.relation,joinConditions:l,joinRelations:c,appliedKlikes:p,allKlikes:a.allKlikes}}function il(e){return e.allKlikes.filter(t=>!e.appliedKlikes.has(t))}function Xn(e,t){if(e!==null){if(Yt(e)){t.add(e);return}switch(e.type){case"LOGICAL":Xn(e.left,t),Xn(e.right,t);return;case"NOT":case"GROUP":Xn(e.expr,t);return;case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}}function Fo(e){let{select:t,selectMode:n,capability:r,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(n!=="FULL_SCAN"&&!s||r.capability!=="EXACT_PUSHDOWN")return null;let l=Te(t.where);if(l.length===0||!$g(l,a)||o===null||!Ed(o,l))return null;let c={prefilterWhere:t.where,residualWhere:null,exactRelativeLeaves:Bg(t.where),relativeFunctionNames:new Set(l),appliedKlikes:new Set,capability:r.capability,reasons:r.reasons},p={allowForm:"FULL_SCAN_EXACT",clientWhereEvaluation:!1,serializedWholeWhere:o,prefilterPlan:c};return Kg(p,e,l),p}function Kg(e,t,n){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(!Ed(e.serializedWholeWhere,n))throw new Error("FULL_SCAN_EXACT invariant: relative occurrence serialization")}function Te(e){let t=[],n=r=>{if(Array.isArray(r)){r.forEach(n);return}if(r===null||typeof r!="object")return;let i=r;if(i.type!=="SELECT"){if(i.type==="KINTONE_FUNC"&&typeof i.name=="string"&&tt(i.name)){t.push(i.name);return}Object.values(i).forEach(n)}};return n(e),t}function Bg(e){let t=[],n=r=>{switch(r.type){case"BINARY":(r.right.type==="KINTONE_FUNC"&&tt(r.right.name)||r.right.type==="IN_LIST"&&r.right.values.length===1&&r.right.values[0].type==="KINTONE_FUNC"&&tt(r.right.values[0].name))&&t.push(r);return;case"LOGICAL":n(r.left),n(r.right);return;case"NOT":case"GROUP":n(r.expr);return;case"EXISTS":case"NULL_CHECK":case"BOOLEAN":return}};return n(e),t}function $g(e,t){return e.length===t.length&&e.every((n,r)=>n===t[r])}function Ed(e,t){let n=new Map;for(let r of t){if(!tt(r))return!1;n.set(r,(n.get(r)??0)+1)}for(let[r,i]of n)if((e.match(new RegExp(`\\b${r}\\s*\\(`,"g"))?.length??0)<i)return!1;return!0}var Re=class extends Error{constructor(t){super(`ArgumentError: ${t}`),this.name="ArgumentError"}};function Rd(e){md(e)}function al(e){if(il(e).length>0)throw new Re("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 md(e){switch(e.type){case"SELECT":Qn(e);return;case"UNION":ll(e);return;case"WITH":yd(e);return;case"EXPLAIN":md(e.query);return;case"CREATE_TEMP_TABLE":sl(e.query);return;case"SET_VARIABLE":case"DECLARE_VARIABLE":case"ASSERT":En(e);return;case"UPDATE":if(e.applyBlocks?.length&&!bt(e.where)&&we(e.where)){ol(e.where),En(e);return}if(Jt(e)&&e.subtableCode)throw new Re("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&&we(e.where)&&!Hg(e,e.where)){ol(e.where),En(e);return}if(Jt(e))throw new Re("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(Jt(e)&&e.subtableCode)throw new Re("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&&we(e.where)){ol(e.where),En(e);return}if(Jt(e))throw new Re("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(Jt(e))throw new Re("KLIKE / NOT KLIKE \u306F INSERT / INSERT SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"UPSERT":case"UPSERT_SELECT":if(Jt(e))throw new Re("KLIKE / NOT KLIKE \u306F UPSERT / UPSERT SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"REORDER":if(Jt(e))throw new Re("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(Jt(e))throw new Re("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 ol(e){Ko(e,t=>{if(!Yt(t))return;let n=t.right;if(n.type!=="STRING"&&n.type!=="VARIABLE")throw new Re("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(n.type==="STRING"&&n.value.includes("%"))throw new Re("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 sl(e){e.type==="SELECT"?Qn(e):e.type==="UNION"?ll(e):yd(e)}function ll(e){sl(e.left),Qn(e.right)}function yd(e){if(zt(e)){Qn(qt(e));return}for(let t of e.ctes)t.query.type==="SELECT"?Qn(t.query):t.query.type==="UNION"&&ll(t.query);sl(e.query)}function Qn(e){if(Vg(e),we(e.where)&&!(Ve(e)==="SIMPLE"&&e.from.cteName===null&&e.joins.every(n=>n.table.cteName===null))){let n=fn(e,{allowUnresolvedVariables:!0});if(il(n).length===0){En(e);return}if(Wg(e)){En(e);return}throw new Re("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")}En(e)}function Wg(e){return e.where!==null&&Te(e.where).length>0&&e.joins.length>0&&e.joins.every(t=>t.type==="INNER"||t.type==="CROSS")&&[e.from,...e.joins.map(t=>t.table)].every(t=>t.alias!==null&&t.cteName===null&&!t.subtableCode)}function Vg(e){Ko(e,t=>{if(!Yt(t))return;if(!Go(e.where,t))throw new Re("KLIKE / NOT KLIKE \u306F SELECT \u306E WHERE \u53E5\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059");let n=t.right;if(n.type!=="STRING"&&n.type!=="VARIABLE")throw new Re("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(n.type==="STRING"&&n.value.includes("%"))throw new Re("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 En(e){Bo(e,t=>{t.type==="SELECT"&&Qn(t)},!0)}function Jt(e){let t=!1;return Bo(e,n=>{n.type==="BINARY"&&(n.op==="KLIKE"||n.op==="NOT_KLIKE")&&(t=!0)}),t}function Hg(e,t){let n=!1,r=i=>{if(n||i===t||i===null||typeof i!="object")return;if(Array.isArray(i)){for(let a of i)r(a);return}let o=i;if(o.type!=="SELECT"){if(o.type==="BINARY"&&(o.op==="KLIKE"||o.op==="NOT_KLIKE")){n=!0;return}for(let a of Object.values(o))r(a)}};return r(e),n}function Go(e,t){if(e===null)return!1;if(e===t)return!0;switch(e.type){case"LOGICAL":return Go(e.left,t)||Go(e.right,t);case"NOT":case"GROUP":return Go(e.expr,t);case"BINARY":case"NULL_CHECK":case"EXISTS":return!1;case"BOOLEAN":return!1}}function Ko(e,t){if(Array.isArray(e)){for(let r of e)Ko(r,t);return}if(e===null||typeof e!="object")return;let n=e;(n.type==="BINARY"||n.type==="NULL_CHECK"||n.type==="LOGICAL"||n.type==="NOT"||n.type==="GROUP"||n.type==="EXISTS")&&t(n);for(let r of Object.values(n))r!==e&&Yg(r)||Ko(r,t)}function Bo(e,t,n=!1){if(Array.isArray(e)){for(let i of e)Bo(i,t);return}if(e===null||typeof e!="object")return;let r=e;n||t(r);for(let i of Object.values(r))Bo(i,t)}function Yg(e){return e!==null&&typeof e=="object"&&e.type==="SELECT"}var Fr=class extends Error{constructor(){super("ArgumentError: PRIMARY_ORGANIZATION() \u306F DML \u306E WHERE \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093"),this.name="ArgumentError"}};function gd(e){let t=e.type==="EXPLAIN"?e.query:e;switch(t.type){case"UPDATE":case"DELETE":case"UPSERT":case"UPSERT_SELECT":case"INSERT_SELECT":if(jg(t))throw new Fr;return;default:return}}function jg(e){let t=!1;return $o(e,n=>{t||!Object.prototype.hasOwnProperty.call(n,"where")||zg(n.where)&&(t=!0)}),t}function zg(e){let t=!1;return $o(e,n=>{n.type==="KINTONE_FUNC"&&n.name==="PRIMARY_ORGANIZATION"&&(t=!0)}),t}function $o(e,t){if(Array.isArray(e)){for(let r of e)$o(r,t);return}if(e===null||typeof e!="object")return;let n=e;t(n);for(let r of Object.values(n))$o(r,t)}function Xt(e,t,n,r=Number.POSITIVE_INFINITY){if(t.length>=n&&t.length<=r)return;let i=n===r?String(n):r===Number.POSITIVE_INFINITY?`${n} or more`:`${n} to ${r}`;throw new Error(`ArgumentError: ${e} expects ${i} argument(s).`)}function Wo(e,t){switch(e){case"UPPER":case"LOWER":case"TRIM":case"LTRIM":case"RTRIM":case"LENGTH":case"LENGTH_CHAR":case"YEAR":case"MONTH":case"DAY":case"DAYOFWEEK":case"QUARTER":case"WEEK":case"LAST_DAY":case"ABS":case"SQRT":return Xt(e,t,1,1);case"SUBSTRING":case"LPAD":case"RPAD":case"REGEXP_LIKE":case"REGEXP_SUBSTR":return Xt(e,t,2,3);case"LEFT":case"RIGHT":case"INSTR":case"ISNULL":case"NULLIF":case"MOD":case"POWER":case"FORMAT":case"CAST":case"DATE_FORMAT":case"DATEDIFF":return Xt(e,t,2,2);case"CONCAT":case"COALESCE":case"GREATEST":case"LEAST":return Xt(e,t,2);case"REPLACE":case"TRANSLATE":case"DATE_ADD":return Xt(e,t,3,3);case"REGEXP_REPLACE":return Xt(e,t,3,5);case"ROUND":case"FLOOR":case"CEIL":case"TRUNCATE":return Xt(e,t,1,2);case"CURRENT_DATE":case"CURRENT_TIMESTAMP":return Xt(e,t,0,0)}}var pl=1e4,Ct=pl,X=e=>new Error(`ArgumentError: ${e}`),qg=e=>e.type==="VARIABLE",Qt=e=>e?.type==="STRING"&&e.fromVariable===!0;function Jg(e){return e.type==="NUMBER"?Number(z(e)):e.value}function Zn(e){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e);if(!t)return null;let n=Number(t[1]),r=Number(t[2]),i=Number(t[3]);if(n<1||n>9999||r<1||r>12||i<1||i>31)return null;let o=new Date(0);return o.setUTCHours(0,0,0,0),o.setUTCFullYear(n,r-1,i),o.getUTCFullYear()===n&&o.getUTCMonth()===r-1&&o.getUTCDate()===i?{year:n,month:r,day:i}:null}function ul(e){let t=Zn(e),n=new Date(0);return n.setUTCHours(0,0,0,0),n.setUTCFullYear(t.year,t.month-1,t.day),Math.trunc(n.getTime()/864e5)}function Xg(e){let t=new Date(e*864e5),n=t.getUTCFullYear();if(n<1||n>9999)throw X("GENERATE_SERIES \u306E\u65E5\u4ED8\u5F15\u6570\u306B\u306F\u5B9F\u5728\u3059\u308B YYYY-MM-DD \u5F62\u5F0F\u306E DATE \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");return`${String(n).padStart(4,"0")}-${String(t.getUTCMonth()+1).padStart(2,"0")}-${String(t.getUTCDate()).padStart(2,"0")}`}function hd(e){let t=e.trim(),n=/^([+-]?\d+)\s+(day|days|month|months|year|years)$/i.exec(t);if(!n)throw/^\S+\s+(?:day|days|month|months|year|years)$/i.test(t)?X("GENERATE_SERIES \u306E\u65E5\u4ED8 step \u306E\u4FC2\u6570\u306B\u306F\u5B89\u5168\u306A\u6574\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002"):/^[+-]?\d+\s+\S+$/i.test(t)?X("GENERATE_SERIES \u306E\u65E5\u4ED8 step \u306F day\u3001days\u3001month\u3001months\u3001year\u3001years \u306E\u307F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\u3002"):X("GENERATE_SERIES \u306E step \u304C\u7CFB\u5217\u306E\u578B\u3068\u4E00\u81F4\u3057\u307E\u305B\u3093\u3002\u6574\u6570\u7CFB\u5217\u306B\u306F\u6574\u6570\u3001DATE \u7CFB\u5217\u306B\u306F day\u3001month\u3001year \u5358\u4F4D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let r=Number(n[1]);if(!Number.isSafeInteger(r))throw X("GENERATE_SERIES \u306E\u65E5\u4ED8 step \u306E\u4FC2\u6570\u306B\u306F\u5B89\u5168\u306A\u6574\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let i=n[2].toLowerCase(),o=i.startsWith("month")?"MONTH":i.startsWith("year")?"YEAR":"DAY";if(r===0)throw X(`GENERATE_SERIES \u306E\u65E5\u4ED8 step \u306B 0 ${o.toLowerCase()} \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002`);return{coefficient:r,unit:o}}function Gr(e){if(typeof e=="number")return Number.isSafeInteger(e)?e:null;if(!/^[+-]?\d+$/.test(e))return null;let t=Number(e);return Number.isSafeInteger(t)?t:null}function Kr(e){let t=Ae(e.raw??String(e.value));if(t===null||t.scale>0)return null;if(t.sign===0)return 0;if(t.coefficient.length-t.scale>16)return null;let r=`${t.coefficient}${"0".repeat(-t.scale)}`;if(r.length===16&&r>"9007199254740991")return null;let i=Number(r)*t.sign;return Number.isSafeInteger(i)?i:null}function Ad(e){return typeof e=="string"&&(/^\d{4}-\d{2}-\d{2}T/.test(e)||/^\d{2}:\d{2}(?::\d{2})?$/.test(e))}function Vo(e,t,n){if(e===t)return 1;if(e<t&&n<0||e>t&&n>0)return 0;let r=n>0?BigInt(t)-BigInt(e):BigInt(e)-BigInt(t);return Number(r/BigInt(Math.abs(n))+1n)}function cl(e){return e.year*12+e.month-1}function Sd(e,t){if(t==="MONTH"&&e.day!==1)throw X("GENERATE_SERIES \u306E month step \u3067\u306F start \u306B\u6708\u521D\uFF08YYYY-MM-01\uFF09\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");if(t==="YEAR"&&(e.month!==1||e.day!==1))throw X("GENERATE_SERIES \u306E year step \u3067\u306F start \u306B\u5E74\u521D\uFF08YYYY-01-01\uFF09\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}function Qg(e,t,n){let r=ul(`${String(e.year).padStart(4,"0")}-${String(e.month).padStart(2,"0")}-${String(e.day).padStart(2,"0")}`),i=ul(`${String(t.year).padStart(4,"0")}-${String(t.month).padStart(2,"0")}-${String(t.day).padStart(2,"0")}`);if(n.unit==="DAY")return Vo(r,i,n.coefficient);if(r===i)return 1;if(r<i&&n.coefficient<0||r>i&&n.coefficient>0)return 0;if(n.unit==="MONTH"){let s=cl(t)+(n.coefficient<0&&t.day!==1?1:0);return Vo(cl(e),s,n.coefficient)}let o=t.month===1&&t.day===1,a=t.year+(n.coefficient<0&&!o?1:0);return Vo(e.year,a,n.coefficient)}function Td(e,t,n){if(e<1||e>9999)throw X("GENERATE_SERIES \u306E\u65E5\u4ED8\u5F15\u6570\u306B\u306F\u5B9F\u5728\u3059\u308B YYYY-MM-DD \u5F62\u5F0F\u306E DATE \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");return`${String(e).padStart(4,"0")}-${String(t).padStart(2,"0")}-${String(n).padStart(2,"0")}`}function Zg(e){let t=Math.floor(e/12),n=e-t*12+1;return Td(t,n,1)}function Id(e){if(e.args.length<2||e.args.length>3)throw X("GENERATE_SERIES \u306F start\u3001stop \u3068\u7701\u7565\u53EF\u80FD\u306A step \u306E2\u500B\u307E\u305F\u306F3\u500B\u306E\u5F15\u6570\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002");let t=e.args.map(g=>Jg(g));["start","stop","step"].forEach((g,S)=>{if(t[S]==="")throw X(`GENERATE_SERIES \u306E ${g} \u306B\u7A7A\u6587\u5B57\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002`)});let[n,r,i]=t,[o,a,s]=e.args,l=typeof n=="string"?Zn(n):null,c=typeof r=="string"?Zn(r):null,p=typeof n=="string"&&/^\d{4}-/.test(n),u=typeof r=="string"&&/^\d{4}-/.test(r);if([n,r].some(Ad))throw X("GENERATE_SERIES \u306F Phase 1 \u3067\u306F\u6574\u6570\u3068 DATE \u306E\u307F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\u3002DATETIME \u3068 TIME \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002");if(l||c||p||u||typeof n=="string"&&typeof r=="string"&&!(Qt(o)&&Qt(a)&&Gr(n)!==null&&Gr(r)!==null)){if(!l||!c)throw X(l&&typeof r!="string"||c&&typeof n!="string"?"GENERATE_SERIES \u306E start \u3068 stop \u306F\u3001\u4E21\u65B9\u3092\u6574\u6570\u307E\u305F\u306F\u4E21\u65B9\u3092 DATE \u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002":"GENERATE_SERIES \u306E\u65E5\u4ED8\u5F15\u6570\u306B\u306F\u5B9F\u5728\u3059\u308B YYYY-MM-DD \u5F62\u5F0F\u306E DATE \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");if(i!==void 0&&typeof i!="string")throw X("GENERATE_SERIES \u306E step \u304C\u7CFB\u5217\u306E\u578B\u3068\u4E00\u81F4\u3057\u307E\u305B\u3093\u3002\u6574\u6570\u7CFB\u5217\u306B\u306F\u6574\u6570\u3001DATE \u7CFB\u5217\u306B\u306F day\u3001month\u3001year \u5358\u4F4D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let g=i===void 0?{coefficient:1,unit:"DAY"}:hd(i);return Sd(l,g.unit),{kind:"DATE",start:n,stop:r,step:g.coefficient,dateUnit:g.unit,rowCount:Qg(l,c,g)}}let d=o.type==="NUMBER"?Kr(o):Qt(o)?Gr(n):null,f=a.type==="NUMBER"?Kr(a):Qt(a)?Gr(r):null;if(d===null||f===null)throw(o.type==="NUMBER"||Qt(o))&&(a.type==="NUMBER"||Qt(a))?X("GENERATE_SERIES \u306E\u6570\u5024\u7CFB\u5217\u306F\u6574\u6570\u306E start\u3001stop\u3001step \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002"):X("GENERATE_SERIES \u306E start \u3068 stop \u306F\u3001\u4E21\u65B9\u3092\u6574\u6570\u307E\u305F\u306F\u4E21\u65B9\u3092 DATE \u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let R=i===void 0?1:s?.type==="NUMBER"?Kr(s):Qt(s)?Gr(i):null;if(R===null)throw s?.type==="NUMBER"||Qt(s)?X("GENERATE_SERIES \u306E\u6570\u5024\u7CFB\u5217\u306F\u6574\u6570\u306E start\u3001stop\u3001step \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002"):X("GENERATE_SERIES \u306E step \u304C\u7CFB\u5217\u306E\u578B\u3068\u4E00\u81F4\u3057\u307E\u305B\u3093\u3002\u6574\u6570\u7CFB\u5217\u306B\u306F\u6574\u6570\u3001DATE \u7CFB\u5217\u306B\u306F day\u3001month\u3001year \u5358\u4F4D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let E=d,m=f,y=R;if(y===0)throw X("GENERATE_SERIES \u306E step \u306B 0 \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002");return{kind:"INTEGER",start:E,stop:m,step:y,rowCount:Vo(E,m,y)}}function eh(e){if(e.args.length<2||e.args.length>3)throw X("GENERATE_SERIES \u306F start\u3001stop \u3068\u7701\u7565\u53EF\u80FD\u306A step \u306E2\u500B\u307E\u305F\u306F3\u500B\u306E\u5F15\u6570\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002");if(e.args.some(qg)){["start","stop","step"].forEach((r,i)=>{let o=e.args[i];if(o?.type==="STRING"&&o.value==="")throw X(`GENERATE_SERIES \u306E ${r} \u306B\u7A7A\u6587\u5B57\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002`);if(o?.type==="NUMBER"&&Kr(o)===null)throw X("GENERATE_SERIES \u306E\u6570\u5024\u7CFB\u5217\u306F\u6574\u6570\u306E start\u3001stop\u3001step \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002");if(i<2&&o?.type==="STRING"){if(Ad(o.value))throw X("GENERATE_SERIES \u306F Phase 1 \u3067\u306F\u6574\u6570\u3068 DATE \u306E\u307F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\u3002DATETIME \u3068 TIME \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002");if(/^\d{4}-/.test(o.value)&&Zn(o.value)===null)throw X("GENERATE_SERIES \u306E\u65E5\u4ED8\u5F15\u6570\u306B\u306F\u5B9F\u5728\u3059\u308B YYYY-MM-DD \u5F62\u5F0F\u306E DATE \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}});let n=e.args[2];if(n?.type==="NUMBER"){let r=Kr(n);if(r===null)throw X("GENERATE_SERIES \u306E\u6570\u5024\u7CFB\u5217\u306F\u6574\u6570\u306E start\u3001stop\u3001step \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002");if(r===0)throw X("GENERATE_SERIES \u306E step \u306B 0 \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002")}else if(n?.type==="STRING"){let r=hd(n.value),i=e.args[0];if(i?.type==="STRING"){let o=Zn(i.value);o&&Sd(o,r.unit)}}return null}let t=Id(e);if(t.rowCount>Ct)throw X(`GENERATE_SERIES \u306E\u751F\u6210\u4EF6\u6570 ${t.rowCount} \u884C\u304C\u4E0A\u9650 ${Ct} \u884C\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002`);return t.rowCount}function wd(e){let t=n=>{if(n===null||typeof n!="object")return;if(Array.isArray(n)){n.forEach(t);return}let r=n;if(r.type==="WITH"){let i=0,o=!0;for(let a of r.ctes)if(a.query.type==="GENERATE_SERIES"){let s=eh(a.query);s===null?o=!1:i+=s}else t(a.query);if(o&&i>Ct)throw X(`\u3053\u306E WITH \u6587\u306E GENERATE_SERIES \u751F\u6210\u4EF6\u6570\u5408\u8A08 ${i} \u884C\u304C\u4E0A\u9650 ${Ct} \u884C\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002`);t(r.query);return}Object.values(r).forEach(t)};t(e)}function Ho(e){let t=Id(e);if(t.rowCount>Ct)throw X(`GENERATE_SERIES \u306E\u751F\u6210\u4EF6\u6570 ${t.rowCount} \u884C\u304C\u4E0A\u9650 ${Ct} \u884C\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002`);let n=[];if(t.kind==="INTEGER"){let r=t.start;for(let i=0;i<t.rowCount;i++)if(n.push(String(r)),i+1<t.rowCount){let o=r+t.step;if(!Number.isSafeInteger(o))throw X("GENERATE_SERIES \u306E\u6570\u5024\u7CFB\u5217\u306F\u6574\u6570\u306E start\u3001stop\u3001step \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002");r=o}}else{let r=Zn(t.start);if(t.dateUnit==="MONTH"){let i=cl(r);for(let o=0;o<t.rowCount;o++)n.push(Zg(i+o*t.step))}else if(t.dateUnit==="YEAR")for(let i=0;i<t.rowCount;i++)n.push(Td(r.year+i*t.step,1,1));else{let i=ul(t.start);for(let o=0;o<t.rowCount;o++)n.push(Xg(i+o*t.step))}}return{...t,values:n}}function nt(e){th(e),gd(e),Rd(e),wd(e)}function th(e){let t=n=>{if(n===null||typeof n!="object")return;if(Array.isArray(n)){n.forEach(t);return}let r=n;if(r.type==="STRING_FUNC"){let i=r;Wo(i.func,i.args)}Object.values(r).forEach(t)};t(e)}var Yo=16,bd=64,oe=class extends Error{constructor(n,r){super(n);this.statementIndex=r}};function Br(e,t,n){if(Array.isArray(e)){for(let r of e)Br(r,t,n);return}if(e!==null&&typeof e=="object"){let r=e,i=r.cteName;typeof i=="string"&&i.startsWith("#")&&t.add(i);let o=r.appId;typeof o=="number"&&o>0&&n.add(o);for(let a of Object.values(r))Br(a,t,n)}}var nh=new Set(["=","!=","<>",">","<",">=","<="]);function dl(e,t,n=!1){if(Array.isArray(e)){for(let r of e)dl(r,t,n);return}if(e!==null&&typeof e=="object"){let r=e,i=r.type;if((i==="VARIABLE"||i==="VARIABLE_COL"||i==="VARIABLE_IN_LIST")&&typeof r.name=="string"){t.push({name:r.name,kind:i==="VARIABLE"?"scalar":i==="VARIABLE_COL"?"select-column":"array-in-list",relativeDateAllowed:n});return}let o=i==="BINARY"||i==="LOGICAL"||i==="NOT"||i==="GROUP"||i==="NULL_CHECK"||i==="BOOLEAN";for(let[a,s]of Object.entries(r)){let l=s!==null&&typeof s=="object"&&s.type==="VARIABLE",c=n&&i==="BINARY"&&a==="right"&&l&&nh.has(String(r.op));dl(s,t,a==="where"?!0:i==="BINARY"&&a==="right"&&l?c:o?n:!1)}}}function rh(e){let t=e.type==="EXPLAIN"?e.query:e;return Vt(t.type)||t.type==="VALIDATE"}function fl(e){if(Array.isArray(e)){for(let t of e)fl(t);return}if(e!==null&&typeof e=="object"){let t=e;t.type==="SELECT"&&Qs(e);for(let n of Object.values(t))fl(n)}}function El(e){if(e.length===0)throw new oe("ArgumentError: SQL is empty.",0);if(e.forEach((u,d)=>{try{fl(u)}catch(f){throw f instanceof Error?new oe(f.message,d):f}try{Wn("phase15b",u),nt(u)}catch(f){throw f instanceof Re||f instanceof Fr?new oe(f.message,d):f instanceof Error&&/^(UnsupportedError|ArgumentError): APPLY /.test(f.message)?new oe(f.message,d):f}}),e.length===1){let u=e[0].type;if(u==="SET_VARIABLE"||u==="DECLARE_VARIABLE"){let d=u==="SET_VARIABLE"?"SET":"DECLARE";throw new oe(`ArgumentError: ${d} variable requires a batch.`,0)}if(u==="CREATE_TEMP_TABLE"||u==="DROP_TEMP_TABLE"){let d=u==="CREATE_TEMP_TABLE"?"CREATE TEMP TABLE":"DROP TEMP TABLE";throw new oe(`ArgumentError: ${d} requires a batch (temp tables are batch-scoped).`,0)}}let t=new Map,n=new Map,r=[],i=[],o=new Map,a=[];e.forEach((u,d)=>{let f=u.type==="VALIDATE"&&u.errorTable?u.errorTable:"validationErrorTable"in u&&u.validationErrorTable?u.validationErrorTable:"onErrorSkip"in u&&u.onErrorSkip?u.errorTable??null:null;if(e.length===1&&f){let U=u.type==="VALIDATE"?"ArgumentError: VALIDATE INTO requires a batch.":"onErrorSkip"in u&&u.onErrorSkip?"ArgumentError: ON ERROR SKIP requires a batch.":"ArgumentError: VALIDATE ONLY INTO requires a batch.";throw new oe(U,d)}let R=co(u),E=[],m=[],y=new Set,g=new Set,S=new Set,h=[];dl(u,h);let I=new Set;for(let U of h){let P=o.get(U.name);if(P===void 0)throw new oe(`ParseError: variable @${U.name} is not defined before statement ${d+1}.`,d);if(P.kind==="scalar"&&U.kind==="array-in-list")throw new oe(`ParseError: scalar variable @${U.name} cannot be used as IN @${U.name}; use IN (@${U.name}) instead.`,d);if(P.kind==="array"&&U.kind!=="array-in-list")throw new oe(`ParseError: array variable @${U.name} can only be used as IN @${U.name}.`,d);if(P.relativeDate&&rh(u))throw new oe(`ArgumentError: RELATIVE_DATE variable @${U.name} cannot be used in DML or VALIDATE statements.`,d);if(P.relativeDate&&!U.relativeDateAllowed)throw new oe(`ArgumentError: RELATIVE_DATE variable @${U.name} can only be used as a WHERE comparison right operand or BETWEEN boundary.`,d);I.has(U.name)||(P.referencedBy.push(d),I.add(U.name))}if(u.type==="SET_VARIABLE"||u.type==="DECLARE_VARIABLE"){if(o.has(u.name))throw new oe(`ParseError: variable @${u.name} is already defined.`,d);if(o.set(u.name,{index:d,kind:u.type==="SET_VARIABLE"&&u.expr.type==="ARRAY"?"array":"scalar",relativeDate:u.type==="DECLARE_VARIABLE"&&u.annotation==="RELATIVE_DATE",referencedBy:[]}),a.push(u.name),a.length>bd)throw new oe(`ParseError: batch exceeds ${bd} variables.`,d)}u.type==="CREATE_TEMP_TABLE"?Br(u.query,y,g):u.type==="DROP_TEMP_TABLE"||Br(u,y,g);let N=!1;if(u.type==="INSERT_SELECT"||u.type==="UPSERT_SELECT"){let U=new Set,P=new Set;Br(u.select,U,P),N=U.size>0&&P.size===0}for(let U of y){let P=t.get(U);if(P===void 0)throw new oe(`ParseError: temp table ${U} is not defined in this batch.`,d);S.add(P)}if(f){let U=u.type==="VALIDATE"?u.summary?["$id","$err_subtable","$err_field","$err_code","$err_count"]:["$id","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id","$err_count"]:u.type==="IMPORT"&&u.targets?.some(v=>v.kind==="SUBTABLE")?[...new Set(u.targets.flatMap(v=>v.kind==="FIELD"?[v.field]:v.children)),"$err_subtable","$err_subrow","$err_source_row"]:u.type==="UPDATE"?["$id",...u.assignments.map(v=>v.field)]:"fields"in u?u.fields:[],P=JSON.stringify(U),M=t.get(f);if(M===void 0){if(t.set(f,d),n.set(f,P),r.push(f),E.push(f),t.size>Yo)throw new oe(`ParseError: batch exceeds ${Yo} temp tables.`,d)}else{if(n.get(f)!==P)throw new oe(`ParseError: validation error table ${f} has a different payload schema.`,d);S.add(M)}}if(u.type==="CREATE_TEMP_TABLE"){if(t.has(u.name))throw new oe(`ParseError: temp table ${u.name} is already defined.`,d);if(t.set(u.name,d),r.push(u.name),E.push(u.name),t.size>Yo)throw new oe(`ParseError: batch exceeds ${Yo} temp tables.`,d)}if(u.type==="DROP_TEMP_TABLE"){let U=t.get(u.name);if(U===void 0)throw new oe(`ParseError: temp table ${u.name} is not defined in this batch.`,d);S.add(U),m.push(u.name),t.delete(u.name)}i.push({index:d,statementType:R,isDml:Us(u),isReadOnly:Gn(u),hasWhere:Sp(u),insertValuesCount:Tp(u),appIds:[...g].sort((U,P)=>U-P),tempTablesCreated:E,tempTablesReferenced:[...y],tempTablesDropped:m,dependsOn:[...S].sort((U,P)=>U-P),tempOnlySource:N,targetAppId:Vt(R)&&typeof u.appId=="number"?u.appId:null,isUpdateFrom:u.type==="UPDATE"&&u.from!=null,isValidationOnly:"validateOnly"in u&&u.validateOnly===!0,isOnErrorSkip:"onErrorSkip"in u&&u.onErrorSkip===!0,requiresCompleteInput:hp(u)})});let s=i.some(u=>u.isDml),l=i.some(u=>u.isValidationOnly),c=i.some(u=>u.requiresCompleteInput),p=a.map(u=>({name:u,kind:o.get(u).kind,referencedBy:[...o.get(u).referencedBy]}));return{statementCount:e.length,isReadOnlyBatch:!s&&i.every(u=>u.isReadOnly),containsDml:s,containsValidationOnly:l,requiresCompleteInput:c,tempTables:r,variables:p,warnings:p.filter(u=>u.referencedBy.length===0).map(u=>`variable @${u.name} is never used.`),statements:i}}var jo=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"],["CROSS","CROSS"],["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"],["PRIMARY_ORGANIZATION","PRIMARY_ORGANIZATION"],["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 ve=class extends Error{constructor(n,r,i,o=!1){let a=i.slice(Math.max(0,r-10),r+10);super(`${n}\uFF08\u4F4D\u7F6E ${r}\u3001\u524D\u5F8C: \u300C${a}\u300D\uFF09`);this.pos=r;this.input=i;this.unterminated=o;this.name="LexError"}},Zt=class{constructor(t){this.input=t;this.pos=0}tokenize(){let t=[];for(;;){let n=this.nextToken();if(t.push(n),n.kind==="EOF")break}return t}nextToken(){if(this.skipWhitespaceAndComments(),this.pos>=this.input.length)return this.makeToken("EOF","",this.pos);let t=this.pos,n=this.input[this.pos];if(n==="'")return this.readString(t);if(n==="`")return this.readBacktickIdent(t);if(er(n))return this.readNumber(t);let r=this.tryReadOperator(t);if(r)return r;if(Rl(n))return this.readIdentOrKeyword(t);if(n==="#")return this.readHashIdent(t);if(n==="@")return this.readVariable(t);throw new ve(`\u4E88\u671F\u3057\u306A\u3044\u6587\u5B57 \u300C${n}\u300D \u3067\u3059`,this.pos,this.input)}readString(t){this.pos++;let n="";for(;this.pos<this.input.length;){let r=this.input[this.pos];if(r==="'")if(this.pos++,this.pos<this.input.length&&this.input[this.pos]==="'")n+="'",this.pos++;else return this.makeToken("STRING",n,t);else n+=r,this.pos++}throw new ve("\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 n="";for(;this.pos<this.input.length;){let r=this.input[this.pos];if(r==="`")return this.pos++,this.makeToken("BIDENT",n,t);n+=r,this.pos++}throw new ve("\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&&er(this.input[this.pos]);)this.pos++;if(this.pos<this.input.length&&this.input[this.pos]==="."&&this.pos+1<this.input.length&&er(this.input[this.pos+1]))for(this.pos++;this.pos<this.input.length&&er(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||!er(this.input[this.pos]))throw new ve("\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&&er(this.input[this.pos]);)this.pos++}return this.makeToken("NUMBER",this.input.slice(t,this.pos),t)}tryReadOperator(t){let n=this.input[this.pos],r=this.input[this.pos+1]??"";if(n==="!"&&r==="=")return this.pos+=2,this.makeToken("!=","!=",t);if(n==="<"&&r===">")return this.pos+=2,this.makeToken("<>","<>",t);if(n===">"&&r==="=")return this.pos+=2,this.makeToken(">=",">=",t);if(n==="<"&&r==="=")return this.pos+=2,this.makeToken("<=","<=",t);if(n==="|"&&r==="|")return this.pos+=2,this.makeToken("||","||",t);switch(n){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&&Nd(this.input[this.pos]);)this.pos++;let n=this.input.slice(t,this.pos),r=n.toUpperCase(),i=jo.get(r)??"IDENT",o=i==="IDENT"?n:r;return this.makeToken(i,o,t)}readHashIdent(t){this.pos++;let n=this.input[this.pos]??"";if(!Rl(n))throw new ve("\u300C#\u300D \u306E\u76F4\u5F8C\u306B\u306F\u8B58\u5225\u5B50\u304C\u5FC5\u8981\u3067\u3059",t,this.input);for(;this.pos<this.input.length&&Nd(this.input[this.pos]);)this.pos++;let r=this.input.slice(t,this.pos);if(this.input[this.pos]==="@")throw new ve(`@profile is not allowed on temp table ${r}.`,this.pos,this.input);return this.makeToken("IDENT",r,t)}readVariable(t){this.pos++;let n=this.input[this.pos]??"";if(!/[A-Za-z_]/.test(n))throw new ve("\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 ve("\u5909\u6570\u540D\u306F 64 \u6587\u5B57\u4EE5\u5185\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",t,this.input);return this.makeToken("VARIABLE",this.input.slice(t,this.pos),t)}skipWhitespaceAndComments(){for(;this.pos<this.input.length;){let t=this.input[this.pos];if(t===" "||t===" "||t==="\r"||t===`
1
+ "use strict";var _s=Object.defineProperty;var sg=Object.getOwnPropertyDescriptor;var lg=Object.getOwnPropertyNames;var ug=Object.prototype.hasOwnProperty;var cg=(e,t)=>{for(var n in t)_s(e,n,{get:t[n],enumerable:!0})},pg=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of lg(t))!ug.call(e,i)&&i!==n&&_s(e,i,{get:()=>t[i],enumerable:!(r=sg(t,i))||r.enumerable});return e};var dg=e=>pg(_s({},"__esModule",{value:!0}),e);var yb={};cg(yb,{KsqlEngineError:()=>Pe,createReadonlyKintoneClient:()=>vm,explainQuery:()=>rg,runBatch:()=>eg,runQuery:()=>ng,version:()=>gb});module.exports=dg(yb);async function xe(e,t,n,r,i={}){let o=i.pageSize??fg,a=Math.max(1,i.parallel??Eg),s=i.maxRecords??Rg,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 c=p??s,u=r.length>0&&!r.includes("$id")?[...r,"$id"]:r,d=[],f=!1,R=`\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`,E=0,m=0,g=fp(n,E),y=await dp(e,t,g,u,o,m);if(pp(y,i),d.push(...y.records),p!==void 0&&d.length>=p)return d.slice(0,p);if(d.length>s){if(l==="truncate")return!f&&i.onTruncate&&(i.onTruncate(s),f=!0),d.slice(0,s);throw new Ge(R)}if(y.records.length<o)return d;for(m+=o,m>=Ds&&(E=Ep(y.records),m=0);;){if(p!==void 0&&d.length>=p)return d.slice(0,p);if(d.length>=s){if(l==="truncate")return!f&&i.onTruncate&&(i.onTruncate(s),f=!0),d.slice(0,s);throw new Ge(R)}let T=c-d.length,h=Math.ceil(T/o),I=Math.max(1,Math.min(a,h)),C=[];for(let M=0;M<I;M++){let N=m+M*o;if(N>=Ds)break;C.push(N)}let v=fp(n,E),P=await Promise.all(C.map(M=>dp(e,t,v,u,o,M)));for(let M of P)pp(M,i);let U=!1;for(let M of P){if(d.push(...M.records),p!==void 0&&d.length>=p)return d.slice(0,p);if(d.length>s){if(l==="truncate")return!f&&i.onTruncate&&(i.onTruncate(s),f=!0),d.slice(0,s);throw new Ge(R)}if(M.records.length<o){U=!0;break}}if(U)break;if(m+=o*C.length,m>=Ds){let M=P[P.length-1];E=Ep(M.records),m=0}}return d}function pp(e,t){e.searchAborted&&t.onSearchAborted?.()}function Rp(e){return e.map(t=>{let n=t.$id?.value;if(n===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 r=Number(n);if(!Number.isFinite(r))throw new Error(`$id \u306E\u5024\u304C\u6570\u5024\u3067\u306F\u3042\u308A\u307E\u305B\u3093: ${n}`);return r})}var fg=500,Eg=1,Rg=1e4,Ds=1e4;async function dp(e,t,n,r,i,o){let a=mg(n,i,o);return e({app:t,query:a,fields:r})}function fp(e,t){let n=e.trimEnd();if(t<=0)return n?`${n} order by $id asc`:"order by $id asc";let r=`$id > ${t} order by $id asc`;return n?`(${n}) and ${r}`:r}function mg(e,t,n){let r=e.trimEnd(),i=`limit ${t} offset ${n}`;return r?`${r} ${i}`:i}function Ep(e){let n=e[e.length-1]?.$id?.value;if(n===void 0)return 0;let r=Number(n);return Number.isFinite(r)?r:0}var Ge=class extends Error{constructor(n,r=!1){super(n);this.completeInputWrapped=r;this.name="FetchAllLimitError"}};var gg=/^([+-]?)(?:(\d+)(?:\.(\d*))?|\.(\d+))(?:[eE]([+-]?)(\d+))?$/;function yg(e,t){if(t===void 0)return 0;let n=0;for(let r of t)if(n=n*10+(r.charCodeAt(0)-48),!Number.isSafeInteger(n))return null;return e==="-"?-n:n}function Ae(e){let t=gg.exec(e.trim());if(t===null)return null;let n=yg(t[5],t[6]);if(n===null)return null;let r=t[3]??t[4]??"",i=`${t[2]??""}${r}`.replace(/^0+/,"");if(i==="")return{sign:0,coefficient:"0",scale:0};let o=r.length-n;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 vs(e){if(e.sign===0)return"0";let t=e.coefficient,n;if(e.scale<=0)n=`${t}${"0".repeat(-e.scale)}`;else if(t.length>e.scale){let r=t.length-e.scale;n=`${t.slice(0,r)}.${t.slice(r)}`}else n=`0.${"0".repeat(e.scale-t.length)}${t}`;return e.sign===-1?`-${n}`:n}function mp(e){let t=Ae(e);return t===null?null:vs(t)}function hg(e,t){let n=e.coefficient.length-e.scale,r=t.coefficient.length-t.scale;if(!Number.isSafeInteger(n)||!Number.isSafeInteger(r))throw new Error("ArgumentError: exact decimal scale is outside the supported range.");if(n!==r)return n<r?-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 lo(e,t){if(e.sign!==t.sign)return e.sign<t.sign?-1:1;if(e.sign===0)return 0;let n=hg(e,t);return e.sign===-1?n===0?0:n===-1?1:-1:n}function uo(e,t){let n=Ae(e),r=Ae(t);if(n===null||r===null)throw new Error("ArgumentError: compareDecimal requires finite decimal inputs.");return lo(n,r)}var _e="__NO_FROM__";function Ms(e){return e.windowKind===void 0||e.windowKind==="RANKING"}function co(e){return e.windowKind==="AGGREGATE"}function Us(e){return e.windowKind==="VALUE"}function Se(e){return{type:"NUMBER",value:Number(e),raw:e}}function z(e){let t=e.raw??String(e.value);return mp(t)??t}function gp(e){let t=1;for(let r of e){if(t>Math.floor(64/2)){let i=t*2;throw new Error(`ArgumentError: expanded grouping set count ${i} exceeds limit 64 (reason=GROUPING_SET_LIMIT_EXCEEDED).`)}t*=2}let n=[{items:[]}];for(let r of e)n=n.flatMap(i=>[{items:[...i.items,r]},{items:[...i.items]}]);return n}function Ag(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,n=[];for(let i of e.grouping.sets)for(let o of i.items){let a=Ag(o);t.has(a)||(t.add(a),n.push(o))}let r=e.grouping.sets.map(i=>({items:[...i.items]}));return{type:"GROUPING_SETS",source:e.grouping.source,allItems:n,sets:r}}function yp(e){return Z(e).type!=="NONE"}function hp(e,t){let n=Z(e);if(n.type!=="GROUPING_SETS")return null;let r=new Map,i=s=>{let l=t(s),p=r.get(l.canonicalId);if(p)return p;let c={...l,field:s};return r.set(c.canonicalId,c),c},o=n.allItems.map(i).filter((s,l,p)=>p.findIndex(c=>c.canonicalId===s.canonicalId)===l),a=n.sets.map(s=>({items:s.items.map(i)}));return{type:"GROUPING_SETS",source:n.source,allItems:o,sets:a}}function Eo(e){if(!e||typeof e!="object")return"UNKNOWN";let t=e;return typeof t.type=="string"?t.type:"UNKNOWN"}function Wt(e){return e==="INSERT"||e==="INSERT_SELECT"||e==="UPDATE"||e==="DELETE"||e==="UPSERT"||e==="UPSERT_SELECT"||e==="REORDER"||e==="IMPORT"}function Sg(e){return e==="SELECT"||e==="VALIDATE"||e==="UNION"||e==="WITH"||e==="EXPLAIN"||e==="SHOW_APPS"||e==="DESCRIBE"||e==="CREATE_TEMP_TABLE"||e==="DROP_TEMP_TABLE"||e==="SET_VARIABLE"||e==="DECLARE_VARIABLE"||e==="ASSERT"||e==="EXIT"}function ks(e){return Wt(e.type)&&!("validateOnly"in e&&e.validateOnly===!0)}function $n(e){return!ks(e)&&(Sg(e.type)||Wt(e.type))}function Ap(e){return $n(e)?e.type==="SELECT"||e.type==="WITH"||e.type==="UNION"||e.type==="SHOW_APPS"||e.type==="DESCRIBE"||e.type==="VALIDATE":!1}var Sp=new Set(["STDDEV_POP","STDDEV_SAMP","VAR_POP","VAR_SAMP","MEDIAN","MODE"]);function De(e,t){for(let n of t)e.add(n)}function po(e,t=new Set){if(e===null||typeof e!="object"||t.has(e))return!1;t.add(e);let n=e;return(n.type==="AGGREGATE"||n.type==="AGG_REF")&&typeof n.func=="string"&&Sp.has(n.func)||n.type==="FIELD"&&typeof n.field=="string"&&/^(STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/i.test(n.field)?!0:Object.values(n).some(r=>Array.isArray(r)?r.some(i=>po(i,t)):po(r,t))}function fo(e,t=new Set){if(e===null||typeof e!="object"||t.has(e))return!1;t.add(e);let n=e;return(n.type==="AGGREGATE"||n.type==="AGG_REF")&&typeof n.func=="string"&&!Sp.has(n.func)||n.type==="FIELD"&&typeof n.field=="string"&&/^(COUNT|SUM|AVG|MIN|MAX|GROUP_CONCAT)\(/i.test(n.field)?!0:Object.values(n).some(r=>Array.isArray(r)?r.some(i=>fo(i,t)):fo(r,t))}function Vt(e){let t=new Set;if(Wt(e.type))return t.add("DML"),t;switch(e.type){case"VALIDATE":t.add("VALIDATE");break;case"SELECT":De(t,Kn(e));break;case"UNION":De(t,Ip(e));break;case"WITH":for(let n of e.ctes)n.query.type!=="GENERATE_SERIES"&&De(t,Vt(n.query));De(t,Vt(e.query));break;case"CREATE_TEMP_TABLE":De(t,Vt(e.query));break;default:break}return po(e)&&t.add("STATISTICAL_AGGREGATE"),fo(e)&&t.add("AGGREGATE"),t}function Tp(e){return Vt(e).size>0}function Ip(e){let t=e.left.type==="SELECT"?Kn(e.left):Ip(e.left);return De(t,Kn(e.right)),e.all||t.add("DISTINCT"),t}function Kn(e){let t=new Set;e.joins.some(r=>r.type==="CROSS")&&t.add("CROSS_JOIN");let n=Z(e);n.type==="GROUPING_SETS"&&t.add("GROUPING_SETS"),n.type==="PLAIN"&&t.add("GROUP_BY"),e.distinct&&t.add("DISTINCT"),e.orderBy.length>0&&t.add("LOCAL_ORDER");for(let r of e.columns)if(r.type==="WINDOW_COL"&&r.windowKind==="AGGREGATE"?t.add("AGGREGATE_WINDOW"):r.type==="WINDOW_COL"&&r.orderBy.length>0&&t.add("WINDOW_ORDER"),r.type==="SCALAR_SUBQUERY_COL"&&De(t,Kn(r.query)),r.type==="CASE_COL")for(let i of r.expr.branches)De(t,Gn(i.condition));return De(t,Gn(e.where)),De(t,Gn(e.having)),po(e)&&t.add("STATISTICAL_AGGREGATE"),fo(e)&&t.add("AGGREGATE"),t}function Gn(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,Kn(e.right.query));break;case"LOGICAL":De(t,Gn(e.left)),De(t,Gn(e.right));break;case"NOT":case"GROUP":De(t,Gn(e.expr));break;case"EXISTS":De(t,Kn(e.query));break;case"NULL_CHECK":case"BOOLEAN":break}return t}function wp(e){if(!e||typeof e!="object")return!1;let t=e;return t.where!==null&&t.where!==void 0}function bp(e){if(!e||typeof e!="object")return null;let t=e;return t.type!=="INSERT"?null:Array.isArray(t.values)?t.values.length:null}var Ro=new Set(["YESTERDAY","TOMORROW","FROM_TODAY","THIS_WEEK","LAST_WEEK","NEXT_WEEK","THIS_MONTH","LAST_MONTH","NEXT_MONTH","THIS_YEAR","LAST_YEAR","NEXT_YEAR"]),ln=new Set(["TODAY","NOW","LOGINUSER","PRIMARY_ORGANIZATION"]),wr=new Set([...ln,...Ro]),un="WHERE_RELATIVE_DATE_REQUIRES_EXACT_PUSHDOWN",bt="WHERE_KINTONE_FUNCTION_REQUIRES_EXACT_PUSHDOWN";function ie(e){return Ro.has(e)}function Bn(e){return ln.has(e)}function tt(e){return wr.has(e)}var Tg=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})}),Gs=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})}),br="v1";function q(e){throw new Error(`UnsupportedError: APPLY ${br} scope does not support ${e}`)}function Ig(e,t){let n=br;br=e;try{return t()}finally{br=n}}function wg(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 Hn(e,t){return Ig(e,()=>bg(t,Tg[e]))}function bg(e,t){let n=wg(e);if(n===null)return;if(n.type==="UPSERT"){Cg(n,t);return}let r=n.applyBlocks;if(xs(r),!t.multipleBlocks&&r.length!==1&&q("multiple APPLY blocks in this phase"),n.type==="INSERT"){Pg(n,r,t);return}let i=n;i.subtableCode&&q("a subtable UPDATE as the parent statement in this phase"),!t.updateFrom&&i.from!=null&&q("UPDATE ... FROM in this phase"),!t.check&&i.checkGroups?.length&&q("CHECK in this phase"),!t.onErrorSkip&&i.onErrorSkip&&q("ON ERROR SKIP in this phase"),!t.rejectLimit&&i.rejectLimit!=null&&q("REJECT LIMIT in this phase"),Og(i.where,t.multipleParents),Cp(r,t)}function Cp(e,t){for(let n of e){for(let r of n.operations)t.operations.has(r.kind)||q(`${r.kind} in this phase`);Pp(n);for(let r of n.operations){if(r.kind==="APPEND"){for(let i of r.fields)mo(i,"APPEND targets");Wn(r.values,"APPEND values");continue}if(r.kind==="REMOVE"){!t.expectRows&&r.expectRows&&q("EXPECT ROWS in this phase"),r.selector.kind==="WHERE"&&Np(r.selector.where,t.idxSelectors);continue}if(r.kind==="PATCH"){!t.expectRows&&r.expectRows&&q("EXPECT ROWS in this phase"),r.assignments.length===0&&q("an empty PATCH operation in this phase");for(let i of r.assignments){if(i.field.startsWith("_")||i.field.startsWith("$"))throw new Error(`ArgumentError: APPLY assignment target ${i.field} is a system field.`);i.field.includes(".")&&q("parent or qualified PATCH targets in this phase")}Wn(r.assignments,"PATCH assignments"),r.selector.kind==="WHERE"&&Np(r.selector.where,t.idxSelectors)}}}}function Pp(e){let t=e.operations.some(i=>i.kind==="PATCH"||i.kind==="APPEND"||i.kind==="REMOVE"),n=e.operations.some(i=>i.kind==="ADD"||i.kind==="REMOVE_VALUE");if(t&&n)throw new Error("ArgumentError: APPLY block cannot mix row operations and multi-value operations.");let r=n?"MULTI_VALUE":"SUBTABLE";if(e.targetKind!==r)throw new Error(`ArgumentError: APPLY block target kind ${String(e.targetKind)} does not match ${r} operations.`)}var Ng=new Set(["MULTI_SELECT","CHECK_BOX","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function Op(e,t){if(Pp(e),e.targetKind==="MULTI_VALUE"){if(!Ng.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 xs(e){let t=new Set;for(let n of e){if(t.has(n.field))throw new Error(`ArgumentError: APPLY ${br} scope allows only one block for table ${n.field}`);t.add(n.field)}}function Cg(e,t){t.upsert||q("UPSERT in this phase"),!t.check&&e.checkGroups?.length&&q("CHECK in this phase"),!t.onErrorSkip&&e.onErrorSkip&&q("ON ERROR SKIP in this phase"),!t.rejectLimit&&e.rejectLimit!=null&&q("REJECT LIMIT in this phase");let n=e.onInsertApplyBlocks??[],r=e.onUpdateApplyBlocks??[];xs(n),xs(r),!t.multipleBlocks&&(n.length>1||r.length>1)&&q("multiple APPLY blocks in this phase"),Lp(n,"UPSERT ON INSERT"),Cp(r,{...t,idxSelectors:!1,expectRows:!1})}function Lp(e,t){for(let n of e)for(let r of n.operations){r.kind!=="APPEND"&&q(`${r.kind} for ${t} in this phase`);for(let i of r.fields)mo(i,"APPEND targets");Wn(r.values,"APPEND values")}}function Pg(e,t,n){n.insert||q("INSERT in this phase"),e.subtableCode&&q("a subtable INSERT as the parent statement in this phase"),!n.check&&e.checkGroups?.length&&q("CHECK in this phase"),!n.onErrorSkip&&e.onErrorSkip&&q("ON ERROR SKIP in this phase"),!n.rejectLimit&&e.rejectLimit!=null&&q("REJECT LIMIT in this phase"),Lp(t,"INSERT")}function Nt(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 go(e,t){let n=Gs[e],r="validateOnly"in t&&t.validateOnly===!0;if(t.type!=="EXPLAIN"&&!r&&Ks(t)&&e!=="phase15b")throw new Error(`UnsupportedError: APPLY ${Vn(e)} multi-value execution is not connected`);if(t.type==="UPSERT"&&(t.onInsertApplyBlocks?.length||t.onUpdateApplyBlocks?.length)){if(t.validateOnly!==!0&&!n.upsertWrite)throw new Error(`UnsupportedError: APPLY ${Vn(e)} UPSERT execution is not connected`);return}if(t.type==="INSERT"&&t.applyBlocks?.length){if(t.validateOnly!==!0&&!n.insertWrite)throw new Error(`UnsupportedError: APPLY ${Vn(e)} INSERT execution is not connected`);return}if(!(t.type!=="UPDATE"||!t.applyBlocks?.length)&&!n.multipleParentPreflight&&!Nt(t.where))throw new Error(`UnsupportedError: APPLY ${Vn(e)} execution does not support multiple-parent APPLY`)}function Ks(e){let t=e.type==="EXPLAIN"?e.query:e;return(t.type==="UPDATE"||t.type==="INSERT"?t.applyBlocks??[]:t.type==="UPSERT"?[...t.onInsertApplyBlocks??[],...t.onUpdateApplyBlocks??[]]:[]).some(r=>r.targetKind==="MULTI_VALUE"||r.operations.some(i=>i.kind==="ADD"||i.kind==="REMOVE_VALUE"))}function _p(e,t){if(!(t.type!=="UPDATE"||!t.applyBlocks?.length||Nt(t.where))&&!Gs[e].publicMultipleParentWrite)throw new Error(`UnsupportedError: APPLY ${Vn(e)} public multiple-parent write is not connected`)}function Yn(e){if(!Gs[e].internalPreparedWrite)throw new Error(`UnsupportedError: APPLY ${Vn(e)} internal prepared write is not available`)}function Vn(e){return`Phase ${e.slice(5)}`}function Og(e,t){Nt(e)||(e.type==="BINARY"&&e.op==="="&&e.left.type==="FIELD"&&e.left.tableAlias===null&&e.left.field==="$id"&&q("a parent $id that is not a positive safe integer in this phase"),t||q("a parent WHERE other than the single condition $id = <positive safe integer> in this phase"),Fs(e,t))}function Fs(e,t){if(Array.isArray(e)){for(let o of e)Fs(o,t);return}if(e===null||typeof e!="object")return;let n=e,r=typeof n.type=="string"?n.type:null,i=typeof n.op=="string"?n.op:null;!t&&(i==="KLIKE"||i==="NOT_KLIKE")&&q("KLIKE in parent WHERE"),(r==="SELECT"||r==="SCALAR_SUBQUERY"||r==="SUBQUERY_IN_LIST"||r==="EXISTS")&&q("subqueries in parent WHERE"),(r==="WINDOW_COL"||r==="AGGREGATE"||r==="AGG_REF"||r==="AGG_ARITH"||r==="ARITH_AGG_COL")&&q("aggregate or window expressions in parent WHERE"),(r==="FIELD"||r==="FIELD_REF")&&typeof n.field=="string"&&/^(count|sum|avg|min|max|group_concat)\s*\(/i.test(n.field)&&q("aggregate or window expressions in parent WHERE"),r==="KINTONE_FUNC"&&!(typeof n.name=="string"&&ie(n.name))&&q("non-deterministic kintone functions in parent WHERE");for(let o of Object.values(n))Fs(o,t)}function Np(e,t){Wn(e,"child row selectors",t)}function Wn(e,t,n=!1){if(Array.isArray(e)){for(let s of e)Wn(s,t,n);return}if(e===null||typeof e!="object")return;let r=e,i=typeof r.type=="string"?r.type:null,o=typeof r.kind=="string"?r.kind:null,a=typeof r.op=="string"?r.op:null;if((a==="KLIKE"||a==="NOT_KLIKE")&&q(`KLIKE in ${t}`),(i==="SELECT"||i==="SCALAR_SUBQUERY"||i==="SUBQUERY_IN_LIST"||i==="EXISTS")&&q(`subqueries in ${t}`),(i==="WINDOW_COL"||i==="AGGREGATE"||i==="AGG_REF"||i==="AGG_ARITH"||i==="ARITH_AGG_COL")&&q(`aggregate or window expressions in ${t}`),i==="KINTONE_FUNC"&&!(typeof r.name=="string"&&ie(r.name))&&q(`non-deterministic kintone functions in ${t}`),i==="FIELD"){let s=r.tableAlias,l=r.field;s!=null&&q(`qualified or parent field references in ${t}`),mo(l,t,n)}if(i==="FIELD_REF"&&mo(r.field,t,n),!(o==="PATCH"||o==="APPEND"||o==="REMOVE"))for(let s of Object.values(r))Wn(s,t,n)}function mo(e,t,n=!1){if(typeof e!="string")return;let r=e.toLowerCase();r==="_idx"&&!n&&q(`_idx in ${t}`),(r.startsWith("_p.")||r.includes("."))&&q(`parent or qualified field references in ${t}`),/^(count|sum|avg|min|max|group_concat)\s*\(/i.test(e)&&q(`aggregate expressions in ${t}`)}function Nr(e){switch(e.type){case"BOOLEAN":return{type:"BOOLEAN",value:!e.value};case"BINARY":{let t=Lg(e.op);if(t===null)throw new pe(`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:Nr(e.left),right:Nr(e.right)};case"NOT":return e.expr;case"GROUP":return{type:"GROUP",expr:Nr(e.expr)};case"EXISTS":return{...e,not:!e.not}}}function Lg(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 Dp(e){return e.includes("%")||e.includes("_")}function Cr(e){return e.type==="BINARY"&&(e.op==="LIKE"||e.op==="NOT_LIKE")}function Yt(e){return e.type==="BINARY"&&(e.op==="KLIKE"||e.op==="NOT_KLIKE")}function Ht(e){if(e===null)return!1;if(Cr(e))return!0;switch(e.type){case"LOGICAL":return Ht(e.left)||Ht(e.right);case"NOT":case"GROUP":return Ht(e.expr);case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return!1}}function we(e){if(e===null)return!1;if(Yt(e))return!0;switch(e.type){case"LOGICAL":return we(e.left)||we(e.right);case"NOT":case"GROUP":return we(e.expr);case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return!1}}function j(e){switch(e.type){case"BINARY":return _g(e);case"NULL_CHECK":return vg(e);case"LOGICAL":return Mg(e);case"NOT":return Ug(e);case"GROUP":return kg(e);case"EXISTS":throw new pe("EXISTS \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"BOOLEAN":throw new pe("internal error: BOOLEAN predicate reached kintone query conversion")}}function _g(e){if(Cr(e))throw new pe("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=Mp(e.left),n=Dg(e.op),r=xg(e.right,e.op);return`${t} ${n} ${r}`}function Dg(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 vg(e){let t=Mp(e.field);return e.not?`${t} != ""`:`${t} = ""`}function Mg(e){let t=j(e.left),n=j(e.right),r=e.op==="AND"?"and":"or",i=vp(e.left)?`(${t})`:t,o=vp(e.right)?`(${n})`:n;return`${i} ${r} ${o}`}function Ug(e){return j(Nr(e.expr))}function kg(e){return`(${j(e.expr)})`}function Mp(e){if(e.type==="FUNC_FIELD")throw new pe(`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==="AGG_FIELD")throw new pe("HAVING \u53E5\u306E\u96C6\u8A08\u7B97\u8853\u5F0F\u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");if(e.type==="ARITH_FIELD")throw new pe("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 pe("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 pe("GROUPING() \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");return Hg(e.field)}function xg(e,t){switch(e.type){case"VARIABLE":throw new pe(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"VARIABLE_IN_LIST":throw new pe(`\u672A\u89E3\u6C7A\u306E\u914D\u5217\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"STRING":return Up(e);case"NUMBER":return z(e);case"KINTONE_FUNC":return kp(e);case"IN_LIST":return Vg(e,t);case"ARITH_VALUE":throw new pe("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 pe("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 pe("IN (SELECT ...) \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"SCALAR_SUBQUERY":throw new pe("\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 pe("\u914D\u5217\u30EA\u30C6\u30E9\u30EB\u306F WHERE \u53E5\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093")}}function Up(e){return`"${e.value.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function kp(e){switch(e.name){case"TODAY":case"NOW":case"LOGINUSER":case"PRIMARY_ORGANIZATION":return`${e.name}()`}return Fg(e)}function Fg(e){switch(e.name){case"YESTERDAY":case"TOMORROW":case"THIS_YEAR":case"LAST_YEAR":case"NEXT_YEAR":return e.args?.kind!=="NONE"?Pr():`${e.name}()`;case"FROM_TODAY":return e.args?.kind!=="FROM_TODAY"||!$g(e.args.offset,e.args.offsetText)||!Gg.has(e.args.unit)?Pr():`${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&&!Kg.has(e.args.weekday)?Pr():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"||!Bg(e.args.day)?Pr():e.args.day===null?`${e.name}()`:`${e.name}(${e.args.day})`}return Pr()}var Gg=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),Kg=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function $g(e,t){return!Number.isSafeInteger(e)||!/^(?:0|[1-9]\d*|-[1-9]\d*)$/.test(t)?!1:Number(t)===e}function Bg(e){return e===null||e==="LAST"||typeof e=="number"&&Number.isInteger(e)&&e>=1&&e<=31}function Pr(){throw new pe("internal error: invalid relative date function AST reached kintone query conversion")}function Vg(e,t){if(t!=="IN"&&t!=="NOT_IN")throw new pe("IN_LIST \u306F IN / NOT IN \u6F14\u7B97\u5B50\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059");return Wg(e.values),`(${e.values.map(r=>r.type==="STRING"?Up(r):r.type==="NUMBER"?z(r):kp(r)).join(",")})`}function Wg(e){let t=e.find(n=>n.type==="VARIABLE");if(t?.type==="VARIABLE")throw new pe(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${t.name} \u304C\u3042\u308A\u307E\u3059`)}function Hg(e){return/^[\w$\u3000-\u9FFF]+$/u.test(e)?e:`"${e.replace(/"/g,'\\"')}"`}function vp(e){return e.type==="LOGICAL"}var pe=class extends Error{constructor(t){super(t),this.name="KintoneQueryError"}};function yo(e){return`'${e.replace(/'/g,"''")}'`}function jn(e,t=!1){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached aggregate expression labeling.`);if(e.type==="FIELD_REF")return e.field;if(e.type==="NUMBER")return z(e);if(e.type==="STRING_FUNC")return Bs(e);let n=`${jn(e.left)}${e.op}${jn(e.right)}`;return t?n:`(${n})`}function xp(e){if(e.type==="FIELD")return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;if(e.type==="FUNC_FIELD")return Bs(e.expr);if(e.type==="AGG_FIELD")return dt(e.expr);if(e.type==="ARITH_FIELD")return jn(e.expr);if(e.type==="GROUPING_FIELD"){let t=e.ref.field;return`GROUPING(${t.tableAlias?`${t.tableAlias}.`:""}${t.field})`}return $s(e.expr)}function Gp(e){switch(e.type){case"STRING":return yo(e.value);case"NUMBER":return z(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=>yo(t.value)).join(",")}]`;case"IN_LIST":return`(${e.values.map(Gp).join(",")})`;case"ARITH_VALUE":return jn(e.expr);case"CASE_VALUE":return $s(e.expr);case"SUBQUERY_IN_LIST":return"(SUBQUERY)";case"SCALAR_SUBQUERY":return"(SUBQUERY)"}}function Or(e){switch(e.type){case"BINARY":return`${xp(e.left)} ${e.op.replace("_"," ")} ${Gp(e.right)}`;case"NULL_CHECK":return`${xp(e.field)} IS ${e.not?"NOT ":""}NULL`;case"LOGICAL":return`(${Or(e.left)} ${e.op} ${Or(e.right)})`;case"NOT":return`NOT (${Or(e.expr)})`;case"GROUP":return`(${Or(e.expr)})`;case"BOOLEAN":return e.value?"TRUE":"FALSE";case"EXISTS":return`${e.not?"NOT ":""}EXISTS (SUBQUERY)`}}function Fp(e){return e.type==="ARRAY"?`[${e.elements.map(t=>yo(t.value)).join(",")}]`:e.type==="AGG_REF"?de(e.func,e.distinct,e.arg):e.type==="AGG_ARITH"?dt(e):e.type==="FIELD_REF"||e.type==="ARITH"?jn(e):cn(e)}function $s(e){let t=e.branches.map(r=>`WHEN ${Or(r.condition)} THEN ${Fp(r.result)}`).join(" "),n=e.elseResult===null?"":` ELSE ${Fp(e.elseResult)}`;return`CASE ${t}${n} END`}function Yg(e){return e.type==="AGG_REF"?de(e.func,e.distinct,e.arg):e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"?dt(e):cn(e)}function Bs(e){return`${e.func}(${e.args.map(Yg).join(",")})`}function cn(e){switch(e.type){case"STRING":return yo(e.value);case"NUMBER":return z(e);case"VARIABLE":return`@${e.name}`;case"FIELD":return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;case"STRING_FUNC":return Bs(e);case"CASE_WHEN":return $s(e);case"SCALAR_ARITH":return`(${cn(e.left)}${e.op}${cn(e.right)})`;case"CONCAT_OP":return`(${cn(e.left)}||${cn(e.right)})`}}function jg(e){return e.type==="WILDCARD"?"*":e.type==="FIELD_REF"||e.type==="ARITH"?jn(e,!0):cn(e)}function de(e,t,n){let r=jg(n);return t?`${e}(DISTINCT ${r})`:`${e}(${r})`}function dt(e){return e.type==="NUMBER"?z(e):e.type==="AGG_REF"?de(e.func,e.distinct,e.arg):e.type==="AGG_GROUP_KEY"?e.tableAlias?`${e.tableAlias}.${e.field}`:e.field:e.type==="VARIABLE"?`@${e.name}`:`${dt(e.left)}${e.op}${dt(e.right)}`}var Kp=Symbol("ksql.groupingRowMeta"),$p=new WeakMap;function Vs(e,t){return Object.defineProperty(e,Kp,{value:{includedCanonicalIds:t},enumerable:!1,configurable:!1,writable:!1}),e}function Ws(e){return e[Kp]}function zg(e){return Ws(e)?.includedCanonicalIds}function Bp(e,t){$p.set(e,t)}function zn(e,t){let n=zg(t);if(!n)throw new Error("internal error: GROUPING() evaluation requires B65 grouping row membership.");let r=$p.get(e);if(!r)throw new Error("internal error: GROUPING() reference was not resolved during B65 planning.");return n.has(r)?"0":"1"}var ho=["$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 Hs(e){return e.startsWith("_")||e.startsWith("$")}var qg=/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/;function js(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(js);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"?qg.test(t.field):Object.values(t).some(js)}function Jg(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 Be(e)||js(e)?"AGGREGATE_DEPENDENT":"SAFE"}}var Xg=["_pid","_rid","_idx"];function Ys(e){return[...new Set(e)]}function Qg(e){switch(e.kind){case"APP":return Ys([...e.fieldCodes,...ho]);case"SUBTABLE":return Ys([...e.childFieldCodes,...Xg,...e.parentFieldCodes.map(t=>`_p.${t}`)]);case"MATERIALIZED":return Ys(e.columns)}}function Vp(e,t){return[e.from,...e.joins.map(r=>r.table)].map((r,i)=>({sourceIndex:i,qualifier:r.alias??r.cteName,columns:Qg(t(r,i))}))}function Wp(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 Hp(e,t){return e.qualifier===null?t:`${e.qualifier}.${t}`}function Yp(e,t){let n=e.tableAlias===null?e.field:`${e.tableAlias}.${e.field}`,r=e.tableAlias===null?Wp(e.field):{qualifier:e.tableAlias,fieldCode:e.field},o=(r.qualifier===null?t:t.filter(s=>s.qualifier===r.qualifier)).filter(s=>s.columns.includes(r.fieldCode));if(o.length>1)return{kind:"AMBIGUOUS",name:n};if(o.length===0)return{kind:"UNKNOWN",name:n};let a=o[0];return{kind:"PHYSICAL",sourceIndex:a.sourceIndex,fieldCode:r.fieldCode,runtimeKey:Hp(a,r.fieldCode)}}function Zg(e){return"alias"in e&&typeof e.alias=="string"?e.alias:null}function ey(e,t,n){let r=Wp(e),o=(r.qualifier===null?n:n.filter(l=>l.qualifier===r.qualifier)).filter(l=>l.columns.includes(r.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:r.fieldCode,runtimeKey:Hp(l,r.fieldCode)}}if(r.qualifier!==null)return{kind:"UNKNOWN",name:e};let a=t.flatMap((l,p)=>Zg(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=Jg(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&&de(l.func,l.distinct,l.arg)===e)?{kind:"ALIAS_REJECT",reason:"AGGREGATE"}:{kind:"UNKNOWN",name:e}}function jp(e,t,n){return{items:e.map(r=>r.type==="FIELD_NAME"?ey(r.name,t,n):{kind:"EXPRESSION"})}}var ty="B65_NON_GROUPED_DEPENDENCY",qs=new Map([["ARITH_COL","expr"],["ARITH_AGG_COL","expr"],["STRFUNC_COL","expr"],["SCALAR_VALUE_COL","expr"],["CASE_COL","expr"],["ARITH_KEY","expr"],["FUNC_KEY","expr"],["FUNC_FIELD","expr"],["ARITH_FIELD","expr"],["CASE_FIELD","expr"],["ARITH_VALUE","expr"],["CASE_VALUE","expr"],["AGG_FIELD","expr"]]);function Ao(e){if(e.startsWith("_p."))return{type:"FIELD",tableAlias:null,field: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 Js(e){let t=e.type;if(t==="FIELD_REF"&&typeof e.field=="string")return Ao(e.field);if(t==="AGG_GROUP_KEY"&&typeof e.field=="string")return{type:"FIELD",tableAlias:typeof e.tableAlias=="string"?e.tableAlias:null,field:e.field};if(t==="FIELD"&&typeof e.field=="string"){if(e.aggregateRef!==void 0)return null;let n=typeof e.tableAlias=="string"?e.tableAlias:null;return n===null?Ao(e.field):{type:"FIELD",tableAlias:n,field:e.field}}return null}function Xs(e){return e.type==="SELECT"||e.type==="SCALAR_SUBQUERY"||e.type==="SCALAR_SUBQUERY_COL"||e.type==="SUBQUERY_IN_LIST"||e.type==="EXISTS"}function qp(e){return e.type==="AGGREGATE"||e.type==="AGG_REF"}function Jp(e){return e.type==="WINDOW_COL"}function ny(e){let t=e.value;return typeof t!="number"?"?":Object.is(t,-0)?"0":String(t)}function jt(e,t){if(e===null)return"null";if(typeof e=="string"||typeof e=="boolean")return JSON.stringify(e);if(typeof e=="number")return String(e);if(Array.isArray(e)){let p=e.map(c=>jt(c,t));return p.some(c=>c===null)?null:`[${p.join(",")}]`}if(typeof e!="object")return null;let n=e,r=n.type;if(r==="VARIABLE"||r==="VARIABLE_COL"||Xs(n))return null;if(r==="GROUP"&&n.expr!==void 0)return jt(n.expr,t);let i=typeof r=="string"?qs.get(r):void 0;if(i!==void 0)return jt(n[i],t);if(r==="LITERAL_COL")return`STRING:${JSON.stringify(n.value??"")}`;if(r==="STRING")return`STRING:${JSON.stringify(n.value??"")}`;if(r==="NUMBER")return`NUMBER:${ny(n)}`;if(r==="BOOLEAN")return`BOOLEAN:${String(n.value)}`;let o=Js(n);if(o!==null)try{return`FIELD:${t(o)}`}catch{return null}if(r==="FIELD"&&n.aggregateRef!==void 0)return null;let a=new Set(["alias","aliasDisplay","raw","separator","distinct","source"]),s=[];for(let p of Object.keys(n)){if(p==="type"||a.has(p))continue;let c=jt(n[p],t);if(c===null)return null;s.push(`${p}=${c}`)}return`${r==="ARITH"||r==="SCALAR_ARITH"?"ARITH":String(r??"OBJECT")}(${s.join(",")})`}function ry(e){return"alias"in e&&typeof e.alias=="string"?e.alias:null}function iy(e){let t=new Map;for(let n of e){let r=ry(n);r!==null&&t.set(r,[...t.get(r)??[],n])}return t}function Qs(e){return e.tableAlias===null?e.field:`${e.tableAlias}.${e.field}`}var oy=/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/;function So(e){if(e&&typeof e=="object"){let t=e,n=Js(t);if(n!==null)return Qs(n);if(t.type==="FIELD_NAME"&&typeof t.name=="string")return t.name;if(t.type==="WILDCARD")return"*";if(t.type==="PARENT_WILDCARD")return"_p.*";let r=t.alias;if(typeof r=="string"&&r.length>0)return r;let i=typeof t.type=="string"?qs.get(t.type):void 0;if(i!==void 0){let a=So(t[i]);if(a!=="\u5F0F")return a}let o=t.func;if(typeof o=="string"&&o.length>0)return`${o}(...)`}return"\u5F0F"}function zp(e,t,n,r){let i=n==="WILDCARD"?"wildcard":Qs(n),o=So(t),a=r.groupingLabel===null?"GROUP BY \u304C\u306A\u3044\u305F\u3081\u5165\u529B\u5168\u4F53\u304C1\u30B0\u30EB\u30FC\u30D7\u306B\u306A\u308A":`${r.groupingLabel} \u306E\u5404\u30B0\u30EB\u30FC\u30D7\u3067\u306F`,s=n==="WILDCARD"?"\u5FC5\u8981\u306A grouping \u5217\u3092\u660E\u793A\u3057\u3066 SELECT \u3057\u3066\u304F\u3060\u3055\u3044\u3002":`\u300C${i}\u300D\u3092 MIN() \u306A\u3069\u306E\u96C6\u8A08\u95A2\u6570\u3067\u5305\u3080\u304B\u3001GROUP BY \u3078\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,l=n!=="WILDCARD"&&n.tableAlias===null&&o===i&&r.migrationSourceSql!==void 0?r.migrationGroupingFields&&r.migrationGroupingFields.length>0?` \u5B9F\u884C\u53EF\u80FD\u306A\u66F8\u304D\u63DB\u3048\u4F8B: \u300CSELECT ${r.migrationGroupingFields.join(", ")}, MIN(${i}) FROM ${r.migrationSourceSql} GROUP BY ${r.migrationGroupingFields.join(", ")}\u300D\u3002`:` \u5B9F\u884C\u53EF\u80FD\u306A\u66F8\u304D\u63DB\u3048\u4F8B: \u300CSELECT MIN(${i}) FROM ${r.migrationSourceSql}\u300D\u3002`:"";return new Error(`ArgumentError: ${e} \u5F0F\u300C${o}\u300D\u306F\u96C6\u8A08\u3082\u30B0\u30EB\u30FC\u30D7\u5316\u3082\u3055\u308C\u3066\u3044\u307E\u305B\u3093\uFF08${r.sourceLabel}\u3001\u975E\u30B0\u30EB\u30FC\u30D7\u5316\u4F9D\u5B58: ${i}\uFF09\u3002${a}\u3001\u3069\u306E\u884C\u306E\u5024\u3092\u8FD4\u3059\u304B\u6C7A\u307E\u308A\u307E\u305B\u3093\u3002${s}${l} (reason=${ty})`)}function pn(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){for(let a of e)pn(a,t);return}let n=e;if(Xs(n)||qp(n)||Jp(n)||n.type==="GROUPING_REF"||n.type==="GROUPING_FIELD"||n.type==="GROUPING_COL"||n.type==="GROUPING_KEY")return;if(n.type==="WILDCARD"||n.type==="PARENT_WILDCARD")throw zp(t.clause,t.expression,"WILDCARD",t.policy);let r=Js(n);if(r!==null){if(t.clause!=="SELECT"&&r.tableAlias===null&&oy.test(r.field))return;if(t.clause!=="SELECT"&&r.tableAlias===null){let l=t.aliases.get(r.field)??[];if(l.length===1&&!t.resolvingAliases.has(r.field)){let p=new Set(t.resolvingAliases);p.add(r.field),pn(l[0],{...t,resolvingAliases:p});return}}let a=jt(n,t.policy.resolveField);if(a!==null&&t.policy.identities.has(a))return;let s=`FIELD:${t.policy.resolveField(r)}`;if(!t.policy.identities.has(s))throw zp(t.clause,t.expression,r,t.policy);return}let i=jt(n,t.policy.resolveField);if(i!==null&&t.policy.identities.has(i))return;let o=typeof n.type=="string"?qs.get(n.type):void 0;if(o!==void 0){pn(n[o],t);return}for(let a of Object.keys(n))a==="type"||a==="alias"||a==="aliasDisplay"||a==="raw"||pn(n[a],t)}function Lr(e,t){let n=iy(e.columns);for(let r of e.columns)r.type!=="WINDOW_COL"&&pn(r,{clause:"SELECT",expression:r,policy:t,aliases:n,resolvingAliases:new Set});e.having!==null&&pn(e.having,{clause:"HAVING",expression:e.having,policy:t,aliases:n,resolvingAliases:new Set});for(let r of e.orderBy){let i=r.key.type==="FIELD_NAME"?Ao(r.key.name):r.key;pn(i,{clause:"ORDER BY",expression:i,policy:t,aliases:n,resolvingAliases:new Set})}}function zs(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(zs);let t=e;return Xs(t)||Jp(t)?!1:qp(t)||t.type==="ARITH_AGG_COL"?!0:Object.values(t).some(zs)}function qn(e){return Z(e).type!=="NONE"||e.columns.some(t=>t.type!=="WINDOW_COL"&&zs(t))}function ay(e){return e.type==="FIELD_NAME"?Ao(e.name):e.expr}function Xp(e,t,n){let r=Z(e);if(r.type!=="PLAIN")throw new Error("InternalError: ordinary dependency policy requires plain GROUP BY.");let i=r.allItems,o=f=>{let R=Yp(f,n);if(R.kind==="AMBIGUOUS")throw new Error(`ArgumentError: field ${R.name} is ambiguous across multiple sources.`);return R.kind==="UNKNOWN"?`unknown:${R.name}`:`source:${R.sourceIndex}:${R.fieldCode}`},a=new Set;t.items.forEach((f,R)=>{if(f.kind==="PHYSICAL"){a.add(`FIELD:source:${f.sourceIndex}:${f.fieldCode}`);return}if(f.kind==="ALIAS_SAFE"){let E=jt(e.columns[f.columnIndex],o);E!==null&&a.add(E);return}if(f.kind==="EXPRESSION"){let E=jt(ay(i[R]),o);E!==null&&a.add(E)}});let s=[e.from,...e.joins.map(f=>f.table)],l=f=>`APP${f.appId}${f.subtableCode!=null?`$${f.subtableCode}`:""}`,p=s.map(f=>f.cteName??l(f)).join(" / "),c=`GROUP BY ${i.map(f=>f.type==="FIELD_NAME"?f.name:So(f)).join(", ")}`,u=s.length===1&&s[0].cteName===null?`${l(s[0])}${s[0].alias&&s[0].alias!==l(s[0])?` ${s[0].alias}`:""}`:void 0,d=i.every((f,R)=>f.type==="FIELD_NAME"&&t.items[R]?.kind==="PHYSICAL")?i.map(f=>f.name):void 0;return{identities:a,resolveField:o,sourceLabel:p,groupingLabel:c,migrationSourceSql:u,migrationGroupingFields:d}}function To(e){if(Z(e).type!=="NONE"||!qn(e))return;let t={identities:new Set,resolveField:n=>`ast:${Qs(n)}`,sourceLabel:e.from.cteName??`APP${e.from.appId}`,groupingLabel:null,migrationSourceSql:e.from.cteName===null&&e.joins.length===0?`APP${e.from.appId}${e.from.alias&&e.from.alias!==`APP${e.from.appId}`?` ${e.from.alias}`:""}`:void 0};Lr(e,t)}function Qp(e){return`FIELD:${e}`}var Zp=e=>{if(e.expandedSetCount>64)throw new Error(`ArgumentError: expanded grouping set count ${e.expandedSetCount} exceeds limit ${64} (reason=GROUPING_SET_LIMIT_EXCEEDED).`);if(e.canonicalItemCount>16)throw new Error(`ArgumentError: canonical grouping item count ${e.canonicalItemCount} exceeds limit ${16} (reason=GROUPING_ITEM_LIMIT_EXCEEDED).`)};function Zs(e){return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field}function Ve(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(r=>Ve(r,t));return}let n=e;if(!(n.type==="SELECT"||n.type==="SCALAR_SUBQUERY")){if(n.type==="GROUPING_REF"){t.push(n);return}Object.values(n).forEach(r=>Ve(r,t))}}function bo(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(r=>bo(r,t));return}let n=e;if(!(n.type==="SELECT"||n.type==="SCALAR_SUBQUERY")){if(n.type==="AGGREGATE"||n.type==="AGG_REF"){Ve(n.arg,t);return}Object.values(n).forEach(r=>bo(r,t))}}function Be(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(Be);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(Be)}function sy(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"||e.type==="CASE_COL"?Be(e):!1}function ly(e,t,n){let r=t(e.field);if(!r.physical)throw new Error(`ArgumentError: grouping reference ${Zs(e.field)} must resolve to a physical APP field.`);if(!n.has(r.canonicalId))throw new Error(`ArgumentError: GROUPING argument ${Zs(e.field)} is not present in grouping allItems (reason=B65_GROUPING_ARG_NOT_ITEM).`);Bp(e,r.canonicalId)}function el(e){let t=Z(e),n=[];for(let i of e.columns)i.type!=="WINDOW_COL"&&Ve(i,n);Ve(e.having,n),Ve(e.orderBy,n);let r=[];Ve(e.where,r),Ve(e.joins,r),bo(e.columns,r),bo(e.having,r);for(let i of e.columns)i.type==="WINDOW_COL"&&Ve(i,r);if(r.length>0)throw new Error("ArgumentError: GROUPING() is not allowed in WHERE, JOIN, window, aggregate arguments, or DML expressions.");if(t.type!=="GROUPING_SETS"){if(n.length>0)throw new Error("ArgumentError: GROUPING() requires GROUP BY ROLLUP or GROUPING SETS.");To(e);return}if(e.orderMode==="KINTONE_NATIVE")throw new Error("ArgumentError: KORDER BY is not supported with extended grouping.");if(e.columns.some(i=>i.type==="WINDOW_COL"))throw new Error("ArgumentError: window functions are not supported with extended grouping.");if(e.columns.some(i=>i.type==="WILDCARD"||i.type==="PARENT_WILDCARD"))throw new Error("ArgumentError: SELECT wildcard \u306F\u96C6\u8A08 query \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u5FC5\u8981\u306A grouping \u5217\u3092\u660E\u793A\u3057\u3066\u304F\u3060\u3055\u3044 (reason=B65_NON_GROUPED_DEPENDENCY).")}function ed(e,t,n=()=>{}){el(e);let r=Z(e),i=[];for(let p of e.columns)p.type!=="WINDOW_COL"&&Ve(p,i);if(Ve(e.having,i),Ve(e.orderBy,i),r.type!=="GROUPING_SETS")return null;let o=hp(e,t),a=new Set,s=[];for(let p of o.allItems){let c=p;if(!c.physical)throw new Error(`ArgumentError: grouping item ${Zs(p.field)} must resolve to a physical APP field.`);a.has(c.canonicalId)||(a.add(c.canonicalId),s.push(c))}n({expandedSetCount:r.sets.length,canonicalItemCount:a.size});for(let p of i)ly(p,t,a);Lr(e,{identities:new Set([...a].map(Qp)),resolveField:p=>t(p).canonicalId,sourceLabel:e.from.cteName??`APP${e.from.appId}`,groupingLabel:`GROUP BY ${r.source}`});let l=new Set;for(let p of s)l.add(p.directKey),p.unqualifiedBridgeKey!==null&&l.add(p.unqualifiedBridgeKey);for(let p of e.columns){if(!sy(p))continue;let c="alias"in p?p.alias:null;if(c!==null&&l.has(c))throw new Error(`ArgumentError: aggregate alias ${c} collides with a grouping runtime key (reason=B65_AGGREGATE_ALIAS_COLLISION).`)}return o}function uy(e){return e.some(t=>t.type==="WINDOW_COL")}function We(e){return e.from.subtableCode||e.joins.some(t=>t.table.subtableCode)||e.joins.length>0||Z(e).type!=="NONE"||e.distinct||uy(e.columns)||e.columns.some(t=>t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"||t.type==="SCALAR_SUBQUERY_COL"||t.type==="CASE_COL"&&Be(t.expr)||t.type==="STRFUNC_COL"&&od(t.expr)||t.type==="SCALAR_VALUE_COL"&&Dr(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 td(e.left)||e.right.type==="ARITH_VALUE"||e.right.type==="CASE_VALUE"||e.right.type==="SUBQUERY_IN_LIST"||e.right.type==="SCALAR_SUBQUERY"||Cr(e);case"NULL_CHECK":return td(e.field);case"LOGICAL":return Ct(e.left)||Ct(e.right);case"NOT":case"GROUP":return Ct(e.expr);case"EXISTS":return!0}}function td(e){return e.type==="FUNC_FIELD"||e.type==="ARITH_FIELD"||e.type==="CASE_FIELD"}function Co(e){let t=[],r=(e.limit!==null||e.offset!==null)&&e.orderBy.length===0;if(e.where!==null&&t.push(j(e.where)),e.orderBy.length>0){let i=e.orderBy.map(cy).join(", ");t.push(`order by ${i}`)}else r&&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:py(e.columns),totalCount:!1}}function id(e,t){let n=[];return e.where!==null&&e.joins.length===0&&!Ct(e.where)&&n.push(j(e.where)),{app:t,query:n.join(" "),fields:[]}}function dn(e,t,n){let i=sd(e,n).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 cy(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 py(e){if(e.some(r=>r.type==="WILDCARD"||r.type==="AGGREGATE"||r.type==="ARITH_AGG_COL"||r.type==="CASE_COL"||r.type==="SCALAR_SUBQUERY_COL"))return[];let n=[];for(let r of e)r.type==="FIELD"?n.push(Po(r.field)):r.type==="ARITH_COL"?_r(r.expr,n):r.type==="STRFUNC_COL"?tl(r.expr,n):r.type==="SCALAR_VALUE_COL"&&Jn(r.expr,n);return[...new Set(n)]}function dy(e,t){_r(e.left,t),_r(e.right,t)}function _r(e,t){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached SELECT field collection.`);e.type==="FIELD_REF"?t.push(Po(e.field)):e.type==="ARITH"?dy(e,t):e.type==="STRING_FUNC"&&tl(e,t)}function Po(e){let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function tl(e,t){for(let n of e.args)fy(n,t)}function fy(e,t){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"){No(e,t);return}Jn(e,t)}function Jn(e,t){if(e.type==="FIELD"){t.push(Po(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field));return}if(e.type==="STRING_FUNC"){tl(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){Jn(e.left,t),Jn(e.right,t);return}if(e.type==="CASE_WHEN"){for(let n of e.branches)nd(n.result,t);e.elseResult&&nd(e.elseResult,t)}}function nd(e,t){if(e.type!=="ARRAY"){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"){No(e,t);return}if(e.type==="FIELD_REF"||e.type==="ARITH"){_r(e,t);return}Jn(e,t)}}function No(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&Ey(e.arg,t);return}e.type==="AGG_ARITH"&&(No(e.left,t),No(e.right,t)),e.type==="AGG_GROUP_KEY"&&t.push(Po(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field))}function Ey(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?_r(e,t):Jn(e,t)}function od(e){return e.args.some(t=>t.type==="AGG_REF"||t.type==="AGG_ARITH"?!0:t.type==="AGG_GROUP_KEY"||t.type==="VARIABLE"?!1:Dr(t))}function Dr(e){return e.type==="STRING_FUNC"?od(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?Dr(e.left)||Dr(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>rd(t.result))||e.elseResult!==null&&rd(e.elseResult):!1}function rd(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?!1:Dr(e)}function ad(e,t){let n=new Set,r=sd(e,t,{includeMaterialized:!0,unqualified:n});return{bySource:new Map([...r.entries()].map(([i,o])=>[i,new Set(o.fields)])),unqualified:n}}function sd(e,t,n){let r=[e.from,...e.joins.map(A=>A.table)],i=[e.from,...e.joins.map(A=>A.table)].filter(A=>A.cteName===null),o=n?r:i,a=new Map;for(let A of o)a.set(A,{table:A,allFields:!1,fields:new Set});if(a.size===0)return a;let s=o[0]??null,l=o.find(A=>!!A.subtableCode)??null,p=new Map;for(let A of o)A.alias&&p.set(A.alias,A),A.cteName!==null?p.set(A.cteName,A):A.subtableCode||(p.set(`APP${A.appId}`,A),p.set(`app${A.appId}`,A));let c=Ry(e.columns),u=A=>{let w=a.get(A);w&&(w.allFields=!0,w.fields.clear())},d=()=>{for(let A of o)u(A)},f=()=>{for(let A of o)A.subtableCode&&u(A)},R=(A,w)=>{let x=a.get(A);if(!(!x||x.allFields)){if(A.subtableCode){if(w.startsWith("_p.")){let O=w.slice(3);O&&O!=="*"&&x.fields.add(O);return}return void 0}w&&x.fields.add(w)}},E=(A,w="select",x)=>{if(!A||A==="*")return;if(A==="_p.*"){f();return}if(A.endsWith(".*")){let F=A.slice(0,-2);if(!F){d();return}if(F==="_p"){f();return}let V=p.get(F);if(V){u(V);return}return}if(w==="groupBy"&&x!==void 0){if(x.kind==="PHYSICAL"){let F=r[x.sourceIndex];F&&(n||F.cteName===null)&&R(F,x.fieldCode)}return}if((w==="orderBy"||w==="having"||w==="groupBy")&&c.has(A)||(w==="orderBy"||w==="having"||w==="groupBy")&&my(A))return;let O=A.indexOf(".");if(O>0){let F=A.slice(0,O),V=A.slice(O+1);if(F==="_p"){l&&R(l,`_p.${V}`);return}let K=p.get(F);if(K){R(K,V);return}if(n)return}n?n.unqualified.add(A):s&&R(s,A)},m=(A,w,x="select")=>{if(w){if(w==="_p"){l&&R(l,`_p.${A}`);return}let O=p.get(w);if(O){R(O,A);return}if(n)return}E(A,x)},g=(A,w="select")=>{if(A.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${A.name} reached source-aware field collection.`);if(A.type==="FIELD_REF"){E(A.field,w);return}if(A.type==="ARITH"){g(A.left,w),g(A.right,w);return}if(A.type==="STRING_FUNC"){h(A,w);return}},y=(A,w="select")=>{if(A.type==="AGG_REF"){A.arg.type!=="WILDCARD"&&C(A.arg,w);return}A.type==="AGG_ARITH"&&(y(A.left,w),y(A.right,w)),A.type==="AGG_GROUP_KEY"&&m(A.field,A.tableAlias??null,w)},T=(A,w="select")=>{if(A.type==="AGG_REF"||A.type==="AGG_ARITH"||A.type==="AGG_GROUP_KEY"||A.type==="VARIABLE"){y(A,w);return}I(A,w)},h=(A,w="select")=>{for(let x of A.args)T(x,w)},I=(A,w="select")=>{if(A.type==="FIELD"){m(A.field,A.tableAlias,w);return}if(A.type==="STRING_FUNC"){h(A,w);return}if(A.type==="SCALAR_ARITH"||A.type==="CONCAT_OP"){I(A.left,w),I(A.right,w);return}A.type==="CASE_WHEN"&&P(A,w)},C=(A,w="select")=>{if(A.type==="FIELD_REF"||A.type==="ARITH"){g(A,w);return}I(A,w)},v=(A,w="select")=>{if(A.type!=="ARRAY"){if(A.type==="AGG_REF"||A.type==="AGG_ARITH"){y(A,w);return}if(A.type==="FIELD_REF"||A.type==="ARITH"){g(A,w);return}I(A,w)}},P=(A,w="select")=>{for(let x of A.branches)N(x.condition,w),v(x.result,w);A.elseResult&&v(A.elseResult,w)},U=(A,w="select")=>{if(A.type==="FIELD"){if(A.aggregateRef){y(A.aggregateRef,w);return}m(A.field,A.tableAlias,w);return}if(A.type==="FUNC_FIELD"){h(A.expr,w);return}if(A.type==="AGG_FIELD"){y(A.expr,w);return}if(A.type==="ARITH_FIELD"){g(A.expr,w);return}A.type!=="GROUPING_FIELD"&&P(A.expr,w)},M=(A,w="select")=>{if(A.type==="ARITH_VALUE"){g(A.expr,w);return}if(A.type==="CASE_VALUE"){P(A.expr,w);return}},N=(A,w="where")=>{if(A)switch(A.type){case"BINARY":U(A.left,w),M(A.right,w);return;case"NULL_CHECK":U(A.field,w);return;case"LOGICAL":N(A.left,w),N(A.right,w);return;case"NOT":case"GROUP":N(A.expr,w);return;case"EXISTS":case"BOOLEAN":return}},_=(A,w)=>{if(A.type==="FIELD_NAME"){E(A.name,"groupBy",w);return}if(A.type==="ARITH_KEY"){g(A.expr,"groupBy");return}h(A.expr,"groupBy")},b=(A,w="orderBy")=>{if(A.type==="FIELD_NAME"){E(A.name,w);return}if(A.type==="ARITH_KEY"){g(A.expr,w);return}A.type!=="GROUPING_KEY"&&h(A.expr,w)};for(let A of e.columns)switch(A.type){case"WILDCARD":d();break;case"PARENT_WILDCARD":f();break;case"FIELD":E(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"&&C(A.arg,"select");break;case"ARITH_AGG_COL":y(A.expr,"select");break;case"ARITH_COL":g(A.expr,"select");break;case"CASE_COL":P(A.expr,"select");break;case"STRFUNC_COL":h(A.expr,"select");break;case"SCALAR_VALUE_COL":I(A.expr,"select");break;case"GROUPING_COL":break;case"SCALAR_SUBQUERY_COL":break;case"WINDOW_COL":(A.windowKind==="AGGREGATE"||A.windowKind==="VALUE")&&A.arg.type!=="WILDCARD"&&C(A.arg,"select");for(let w of A.partitionBy)m(w.field,w.tableAlias,"select");for(let w of A.orderBy)b(w.key,"select");break}for(let A of e.joins)A.type!=="CROSS"&&(m(A.on.left.field,A.on.left.tableAlias,"where"),m(A.on.right.field,A.on.right.tableAlias,"where"));N(e.where,"where");let D=Z(e);if(D.type==="PLAIN")D.allItems.forEach((A,w)=>_(A,t?.items[w]));else if(D.type==="GROUPING_SETS")for(let A of D.allItems)m(A.field,A.tableAlias,"select");N(e.having,"having");for(let A of e.orderBy)b(A.key);return a}function Ry(e){let t=new Set;for(let n of e){if(n.type==="FIELD"&&n.alias){t.add(n.alias);continue}if(n.type==="LITERAL_COL"){t.add(n.alias??`'${n.value}'`);continue}if(n.type==="AGGREGATE"){n.alias?t.add(n.alias):t.add(de(n.func,n.distinct,n.arg));continue}if(n.type==="ARITH_AGG_COL"){n.alias&&t.add(n.alias);continue}if(n.type==="ARITH_COL"){n.alias&&t.add(n.alias);continue}if(n.type==="CASE_COL"){t.add(n.alias??"case");continue}if(n.type==="STRFUNC_COL"){n.alias&&t.add(n.alias);continue}if(n.type==="SCALAR_VALUE_COL"){n.alias&&t.add(n.alias);continue}if(n.type==="GROUPING_COL"){t.add(n.alias??`GROUPING(${n.ref.field.tableAlias?`${n.ref.field.tableAlias}.`:""}${n.ref.field.field})`);continue}if(n.type==="SCALAR_SUBQUERY_COL"){t.add(n.alias??"(subquery)");continue}n.type==="WINDOW_COL"&&t.add(n.alias)}return t}function my(e){return/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/i.test(e)}function zt(e){if(e.ctes.length!==1)return!1;let t=e.ctes[0];if(t.query.type!=="SELECT"||We(t.query)!=="SIMPLE"||!t.query.columns.every(r=>r.type==="WILDCARD"||r.type==="FIELD"&&(r.alias===null||r.alias===r.field)))return!1;let n=e.query;return n.type!=="SELECT"||n.from.cteName!==t.name||n.joins.length>0||yp(n)||n.distinct?!1:!n.columns.some(r=>r.type==="AGGREGATE"||r.type==="ARITH_AGG_COL")}function qt(e){let t=e.ctes[0].query,n=e.query,r=Oo(n.where,n.from.alias),i=t.where===null?r:r===null?t.where:{type:"LOGICAL",op:"AND",left:t.where,right:r},o=n.columns.every(a=>a.type==="WILDCARD")?t.columns:n.columns;return{type:"SELECT",from:t.from,joins:[],columns:o,where:i,groupBy:[],having:null,orderMode:"CANONICAL",orderBy:n.orderBy.length>0?n.orderBy:t.orderBy,limit:n.limit??t.limit,offset:n.offset??t.offset,distinct:!1}}function Oo(e,t){if(e===null||t===null)return e;switch(e.type){case"BINARY":return{...e,left:ld(e.left,t)};case"NULL_CHECK":return{...e,field:ld(e.field,t)};case"LOGICAL":return{...e,left:Oo(e.left,t),right:Oo(e.right,t)};case"NOT":case"GROUP":return{...e,expr:Oo(e.expr,t)};case"EXISTS":case"BOOLEAN":return e}}function ld(e,t){return e.type==="FIELD"&&e.tableAlias===t?{...e,tableAlias:null}:e}var gy=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME","CREATOR","MODIFIER"]),yy=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]);function te(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":yy.has(e.fieldType)?t="option":gy.has(e.fieldType)?t="string":t="unsupported";let n=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,...n&&n.size>0?{optionOrder:n}:{}}}function B(e,t=e==="number"?"KSQL_NUMBER":"KSQL_STRING"){return{fieldType:t,compareMode:e,inSubtable:!1,requiresCollectionOperators:!1}}function Xn(e,t,n){return{...e,source:{appId:t,fieldCode:n}}}function Lo(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 n=e.optionOrder,r=t.optionOrder;if(n===r)return!0;if(!n||!r||n.size!==r.size)return!1;for(let[i,o]of n)if(r.get(i)!==o)return!1;return!0}var He=["=","!=",">","<",">=","<="],hy=new Set(["DATE","DATETIME","CREATED_TIME","UPDATED_TIME"]),Ay=new Set(He),Sy=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"])],["PRIMARY_ORGANIZATION",new Set(["ORGANIZATION_SELECT"])]]),Ty=new Map([["TODAY",new Set(He)],["NOW",new Set(He)],["LOGINUSER",new Set(["in","not in"])],["PRIMARY_ORGANIZATION",new Set(["in","not in"])]]),Iy=["=","!=","in","not in"],wy=new Map([["RECORD_NUMBER",new Set([...He,"in","not in"])],["__ID__",new Set([...He,"in","not in"])],["CREATOR",new Set(["in","not in"])],["MODIFIER",new Set(["in","not in"])],["CREATED_TIME",new Set(He)],["UPDATED_TIME",new Set(He)],["DATE",new Set(He)],["TIME",new Set(He)],["DATETIME",new Set(He)],["SINGLE_LINE_TEXT",new Set(["=","!=","in","not in","like","not like"])],["LINK",new Set(["=","!=","in","not in","like","not like"])],["NUMBER",new Set([...He,"in","not in"])],["CALC",new Set([...He,"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(Iy)],["STATUS_ASSIGNEE",new Set(["in","not in"])]]),by=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"])]]),rl=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"]),pd=new Set(["CHECK_BOX","MULTI_SELECT","FILE","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE","CATEGORY"]);function Do(e){return wy.get(e)??new Set}function dd(e,t){let n=[],r=i=>{if(i.type==="BINARY"){if((i.op==="="||i.op==="!="||i.op==="<>")&&i.left.type==="FIELD"&&i.right.type==="STRING"&&i.right.value!==""){let o=t(i.left);if(o!==void 0&&o.compareMode==="option"&&rl.has(o.fieldType)&&Do(o.fieldType).has("in")&&o.optionOrder?.has(i.right.value)===!0){let a=i.op==="="?"IN":"NOT_IN";return n.push({field:i.left,originalOperator:i.op,normalizedOperator:a,value:i.right.value}),{...i,op:a,right:{type:"IN_LIST",values:[i.right]}}}}return i}if(i.type==="LOGICAL"){let o=r(i.left),a=r(i.right);return o===i.left&&a===i.right?i:{...i,left:o,right:a}}if(i.type==="GROUP"||i.type==="NOT"){let o=r(i.expr);return o===i.expr?i:{...i,expr:o}}return i};return{normalizedWhere:r(e),rewrites:n}}function he(e,t){return e===null?{capability:"EXACT_PUSHDOWN",reasons:[{code:"WHERE_EXACT"}]}:Mr(e,t)}function Mr(e,t){switch(e.type){case"BOOLEAN":return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]};case"BINARY":return Ny(e.op,e.left,e.right,t);case"NULL_CHECK":return e.field.type!=="FIELD"?nl():Oy(e.field,e.not?"IS NOT NULL":"IS NULL",t);case"EXISTS":return nl();case"GROUP":return Mr(e.expr,t);case"NOT":{let n=Mr(e.expr,t);return n.capability!=="SUPERSET_PREFILTER"?n:Ed(n.reasons)?kr({capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"},...n.reasons]}):{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]}}case"LOGICAL":{let n=Mr(e.left,t),r=Mr(e.right,t);return _y(e.op,n,r)}}}function Ny(e,t,n,r){if(n.type==="KINTONE_FUNC"&&ie(n.name))return Cy(e,t,n,r);if(n.type==="KINTONE_FUNC"&&ud(n))return cd(e,t,n,r);if(n.type==="IN_LIST"){let c=n.values.filter(u=>u.type==="KINTONE_FUNC");if(c.length>0)return n.values.length===1&&c.length===1?cd(e,t,c[0],r):_o("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED",c[0].name,t.type==="FIELD"?t.field:void 0,t.type==="FIELD"?r(t)?.fieldType:void 0,Ur(e))}if(t.type!=="FIELD")return nl();let i=r(t);if(!i)return Qn("WHERE_FIELD_UNRESOLVED",t.field,void 0,Ur(e));let o=Ur(e);if(!fd(i.fieldType,o))return Qn("WHERE_OPERATOR_INVALID_FOR_FIELD_TYPE",t.field,i.fieldType,o);if(!Ly(i.fieldType,e))return Qn("WHERE_OPERATOR_UNSUPPORTED",t.field,i.fieldType,o);let a=Do(i.fieldType),s=n.type==="STRING"||n.type==="NUMBER"||n.type==="IN_LIST"||ud(n),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 ud(e){return e.type==="KINTONE_FUNC"&&ln.has(e.name)}function cd(e,t,n,r){let i=Ur(e),o=n.name;if(!ln.has(o)||t.type!=="FIELD")return _o("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED",o,void 0,void 0,i);let a=r(t),s=Sy.get(o);return!a||!s.has(a.fieldType)||a.inSubtable||a.requiresCollectionOperators?_o("WHERE_KINTONE_FUNCTION_FIELD_TYPE_UNSUPPORTED",o,t.field,a?.fieldType,i):Ty.get(o).has(i)?{capability:"EXACT_PUSHDOWN",reasons:[{code:"WHERE_EXACT",functionName:o,field:t.field,fieldType:a.fieldType,operator:i}]}:_o("WHERE_KINTONE_FUNCTION_OPERATOR_UNSUPPORTED",o,t.field,a.fieldType,i)}function Cy(e,t,n,r){let i=Ur(e),o=n.name;if(t.type!=="FIELD")return vr("WHERE_RELATIVE_DATE_CONTEXT_UNSUPPORTED",o,void 0,void 0,i);let a=r(t);return a?Py(n)?Ay.has(i)?!hy.has(a.fieldType)||a.inSubtable||a.requiresCollectionOperators?vr("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}]}:vr("WHERE_RELATIVE_DATE_OPERATOR_UNSUPPORTED",o,t.field,a.fieldType,i):vr("WHERE_RELATIVE_DATE_ARGUMENT_INVALID",o,t.field,a.fieldType,i):vr("WHERE_RELATIVE_DATE_FIELD_TYPE_UNSUPPORTED",o,t.field,void 0,i)}function Py(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 Oy(e,t,n){let r=n(e);return r?fd(r.fieldType,t)?!rl.has(r.fieldType)&&!pd.has(r.fieldType)?Qn("WHERE_OPERATOR_UNSUPPORTED",e.field,r.fieldType,t):{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_RESIDUAL",field:e.field,fieldType:r.fieldType,operator:t}]}:Qn("WHERE_OPERATOR_INVALID_FOR_FIELD_TYPE",e.field,r.fieldType,t):Qn("WHERE_FIELD_UNRESOLVED",e.field,void 0,t)}function fd(e,t){let n=by.get(e);return n===void 0||n.has(t)}function Ly(e,t){return rl.has(e)?!0:pd.has(e)?t==="="||t==="!="||t==="<>"||t==="IN"||t==="NOT_IN"||t==="LIKE"||t==="NOT_LIKE"||t==="KLIKE"||t==="NOT_KLIKE":!1}function Ur(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 _y(e,t,n){let r=[...t.reasons,...n.reasons];return t.capability==="UNSUPPORTED"||n.capability==="UNSUPPORTED"?kr({capability:"UNSUPPORTED",reasons:r}):t.capability==="EXACT_PUSHDOWN"&&n.capability==="EXACT_PUSHDOWN"?{capability:"EXACT_PUSHDOWN",reasons:r}:e==="AND"&&(t.capability==="EXACT_PUSHDOWN"||n.capability==="EXACT_PUSHDOWN"||t.capability==="SUPERSET_PREFILTER"||n.capability==="SUPERSET_PREFILTER")?kr({capability:"SUPERSET_PREFILTER",reasons:[{code:"WHERE_SUPERSET_PREFILTER"},...r]}):kr({capability:"LOCAL_ONLY",reasons:r})}function nl(){return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]}}function Qn(e,t,n,r){return{capability:"UNSUPPORTED",reasons:[{code:e,field:t,fieldType:n,operator:r}]}}function _o(e,t,n,r,i){return kr({capability:"UNSUPPORTED",reasons:[{code:e,functionName:t,field:n,fieldType:r,operator:i}]})}function vr(e,t,n,r,i){return Rd({capability:"UNSUPPORTED",reasons:[{code:e,functionName:t,field:n,fieldType:r,operator:i}]})}function Ed(e){return e.some(t=>t.code.startsWith("WHERE_RELATIVE_DATE_")||t.functionName!==void 0&&ie(t.functionName))}function Dy(e){return e.some(t=>t.code.startsWith("WHERE_KINTONE_FUNCTION_")||t.functionName!==void 0&&ln.has(t.functionName))}function Rd(e){if(e.capability==="EXACT_PUSHDOWN"||!Ed(e.reasons)||e.reasons.some(n=>n.code==="WHERE_RELATIVE_DATE_REQUIRES_EXACT_PUSHDOWN"))return e;let t=e.reasons.find(n=>n.code.startsWith("WHERE_RELATIVE_DATE_")||n.functionName!==void 0&&ie(n.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 vy(e){if(e.capability==="EXACT_PUSHDOWN"||!Dy(e.reasons)||e.reasons.some(n=>n.code==="WHERE_KINTONE_FUNCTION_REQUIRES_EXACT_PUSHDOWN"))return e;let t=e.reasons.find(n=>n.code.startsWith("WHERE_KINTONE_FUNCTION_")||n.functionName!==void 0&&ln.has(n.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 kr(e){return vy(Rd(e))}function xr(e){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e);if(!t)return!1;let n=Number(t[1]),r=Number(t[2]),i=Number(t[3]);if(n<1||n>9999)return!1;let o=new Date(0);return o.setUTCFullYear(n,r-1,i),o.setUTCHours(0,0,0,0),o.getUTCFullYear()===n&&o.getUTCMonth()===r-1&&o.getUTCDate()===i}function vo(e){let t=/^(\d{2}):(\d{2})$/.exec(e);return t!==null&&Number(t[1])<=23&&Number(t[2])<=59}function Mo(e){let t=/^(\d{4}-\d{2}-\d{2})T(\d{2}):(\d{2}):(\d{2})Z$/.exec(e);return!t||!xr(t[1])?!1:Number(t[2])<=23&&Number(t[3])<=59&&Number(t[4])<=59}function Uo(e){let t=e.raw??String(e.value),n=Ae(t);if(n===null)return!1;if(n.sign===0)return z(e)==="0";let r=Math.max(n.scale,0),i=Math.max(n.coefficient.length-n.scale,0);if(r>10||i+r>30)return!1;let o=vs(n);return z(e)===o}var My=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]),Uy=new Set(["CREATOR","MODIFIER","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE"]),ky=new Set(["SINGLE_LINE_TEXT","LINK","MULTI_LINE_TEXT","RICH_TEXT","FILE"]),xy=new Set(["DATETIME","CREATED_TIME","UPDATED_TIME"]);function ko(e,t){let{fieldCode:n,fieldType:r,fieldOptions:i}=t;return r.startsWith("KSQL_")||e.op==="LIKE"||e.op==="NOT_LIKE"?"unsafe":e.op==="KLIKE"||e.op==="NOT_KLIKE"?ky.has(r)&&e.right.type==="STRING"&&e.right.value!==""?"exact":"unsafe":r==="__ID__"||n==="$id"?Gy(e.right)&&(e.op==="="||e.op==="<"||e.op===">"||e.op==="<="||e.op===">=")?"exact":"unsafe":r==="RECORD_NUMBER"||r==="CALC"?Fy(e):r==="NUMBER"?(e.op==="IN"||e.op==="NOT_IN")&&e.right.type==="IN_LIST"&&e.right.values.length>0&&e.right.values.every(o=>o.type==="NUMBER"&&Uo(o))||(e.op==="="||e.op==="!="||e.op==="<>"||e.op==="<"||e.op===">"||e.op==="<="||e.op===">=")&&e.right.type==="NUMBER"&&Uo(e.right)?"exact":"unsafe":Uy.has(r)?il(e)?"exact":"unsafe":r==="SINGLE_LINE_TEXT"||r==="LINK"?il(e)||(e.op==="="||e.op==="!="||e.op==="<>")&&e.right.type==="STRING"&&e.right.value!==""?"exact":"unsafe":r==="DATE"||r==="TIME"||xy.has(r)?e.op!=="="&&e.op!=="!="&&e.op!=="<>"&&e.op!=="<"&&e.op!==">"&&e.op!=="<="&&e.op!==">="||e.right.type!=="STRING"?"unsafe":r==="DATE"?xr(e.right.value)?"exact":"unsafe":r==="TIME"?vo(e.right.value)?"exact":"unsafe":Mo(e.right.value)?"exact":"unsafe":My.has(r)?!il(e)||i===void 0?"unsafe":e.right.type==="IN_LIST"&&e.right.values.every(o=>o.type==="STRING"&&i.has(o.value))?"exact":"unsafe":"unsafe"}function md(e,t){if(e.left.type!=="FIELD"||e.left.field==="$id"||!t(e.left))return!1;if(e.op==="IN"||e.op==="NOT_IN"){if(e.right.type!=="IN_LIST"||e.right.values.length===0)return!1;let n=e.right.values[0].type;return n!=="NUMBER"&&n!=="STRING"?!1:e.right.values.every(r=>r.type===n&&(r.type!=="STRING"||r.value!==""))}return e.op!=="="&&e.op!=="!="&&e.op!=="<>"&&e.op!=="<"&&e.op!==">"&&e.op!=="<="&&e.op!==">="?!1:e.right.type==="NUMBER"||e.right.type==="STRING"&&e.right.value!==""}function il(e){return(e.op==="IN"||e.op==="NOT_IN")&&e.right.type==="IN_LIST"&&e.right.values.length>0&&e.right.values.every(t=>t.type==="STRING"&&t.value!=="")}function Fy(e){let t=n=>n.type==="NUMBER"&&Uo(n)||n.type==="STRING"&&n.value!=="";if((e.op==="IN"||e.op==="NOT_IN")&&e.right.type==="IN_LIST"){let n=e.right.values;if(n.length>0&&n.every(t)&&n.every(r=>r.type===n[0].type))return"superset"}return(e.op==="="||e.op==="!="||e.op==="<>"||e.op==="<"||e.op===">"||e.op==="<="||e.op===">=")&&t(e.right)?"superset":"unsafe"}function Gy(e){return e.type==="NUMBER"&&Number.isSafeInteger(e.value)&&e.value>0}function ol(e,t={}){return Ko(e,t).condition}function Ko(e,t={}){return xo(e,n=>Ky(n,t))}function Fr(e,t={}){return Fo(e,n=>md(n,r=>Go(r,t)))}function xo(e,t){switch(e.type){case"BINARY":{let n=t(e);return n==="unsafe"?{condition:null,relation:null}:{condition:e,relation:n}}case"LOGICAL":{if(e.op!=="AND")return{condition:null,relation:null};let n=xo(e.left,t),r=xo(e.right,t);return n.condition&&r.condition?{condition:{...e,left:n.condition,right:r.condition},relation:n.relation==="exact"&&r.relation==="exact"?"exact":"superset"}:n.condition?n:r}case"GROUP":return xo(e.expr,t);case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return{condition:null,relation:null}}}function Fo(e,t){switch(e.type){case"BINARY":return t(e)?e:null;case"LOGICAL":if(e.op!=="AND")return null;{let n=Fo(e.left,t),r=Fo(e.right,t);return n&&r?{...e,left:n,right:r}:n??r??null}case"GROUP":return Fo(e.expr,t);case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return null}}function Ky(e,t){if($y(e,t)||By(e,t))return"exact";if(e.left.type!=="FIELD"||!Go(e.left,t))return"unsafe";let n=t.fieldTypes?.get(e.left.field);return n===void 0||n.startsWith("KSQL_")||he(e,i=>{if(!Go(i,t))return;let o=t.fieldTypes?.get(i.field);return o===void 0?void 0:te({fieldType:o})}).capability!=="EXACT_PUSHDOWN"?"unsafe":ko(e,{fieldCode:e.left.field,fieldType:n,fieldOptions:t.fieldOptions?.get(e.left.field)})}function $y(e,t){return t.allowKlike===!1||e.op!=="KLIKE"&&e.op!=="NOT_KLIKE"||e.left.type!=="FIELD"||!Go(e.left,t)?!1:e.right.type==="STRING"||t.allowUnresolvedKlikeVariables===!0&&e.right.type==="VARIABLE"}function By(e,t){return!Vy(e.left,t)||e.right.type!=="NUMBER"?!1:e.op==="="||e.op===">"||e.op==="<"||e.op===">="||e.op==="<="}function Vy(e,t){if(e.type!=="FIELD"||e.field!=="$id")return!1;let n=t.tableAlias??null;return e.tableAlias===n?!0:t.allowUnqualifiedFields===!0&&e.tableAlias===null}function Go(e,t){let n=t.tableAlias??null;return e.tableAlias===n?!0:t.allowUnqualifiedFields===!0&&e.tableAlias===null}function Gr(e,t={}){let n=e!==null&&t.extractCondition!==!1?Ko(e,t):{condition:null,relation:null},{condition:r,relation:i}=n,o=new Set;Zn(r,o);let a=new Set;return Zn(e,a),{condition:r,relation:i,appliedKlikes:o,allKlikes:[...a]}}function fn(e,t={}){let n=e.joins.every(u=>u.type==="INNER"||u.type==="CROSS"),r={allowKlike:n,allowUnresolvedKlikeVariables:t.allowUnresolvedVariables},i=!e.from.subtableCode&&e.from.cteName===null,o=e.joins.length===0||e.from.alias!==null,a=Gr(e.where,{...r,extractCondition:i&&o&&n,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,p=new Map;if(e.where!==null)for(let u of e.joins){if(u.type!=="INNER"&&u.type!=="CROSS"||!u.table.alias||u.table.subtableCode||u.table.cteName!==null)continue;let d=Ko(e.where,{...r,tableAlias:u.table.alias,fieldTypes:t.fieldTypesByApp?.get(u.table.appId),fieldOptions:t.fieldOptionsByApp?.get(u.table.appId)});d.condition!==null&&d.relation!==null&&(l.set(u.table.alias,d.condition),p.set(u.table.alias,d.relation))}let c=new Set(a.appliedKlikes);for(let u of l.values())Zn(u,c);return{mainCondition:s,mainRelation:a.relation,joinConditions:l,joinRelations:p,appliedKlikes:c,allKlikes:a.allKlikes}}function al(e){return e.allKlikes.filter(t=>!e.appliedKlikes.has(t))}function Zn(e,t){if(e!==null){if(Yt(e)){t.add(e);return}switch(e.type){case"LOGICAL":Zn(e.left,t),Zn(e.right,t);return;case"NOT":case"GROUP":Zn(e.expr,t);return;case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}}function $o(e){let{select:t,selectMode:n,capability:r,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(n!=="FULL_SCAN"&&!s||r.capability!=="EXACT_PUSHDOWN")return null;let l=Te(t.where);if(l.length===0||!Yy(l,a)||o===null||!gd(o,l))return null;let p={prefilterWhere:t.where,residualWhere:null,exactRelativeLeaves:Hy(t.where),relativeFunctionNames:new Set(l),appliedKlikes:new Set,capability:r.capability,reasons:r.reasons},c={allowForm:"FULL_SCAN_EXACT",clientWhereEvaluation:!1,serializedWholeWhere:o,prefilterPlan:p};return Wy(c,e,l),c}function Wy(e,t,n){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(!gd(e.serializedWholeWhere,n))throw new Error("FULL_SCAN_EXACT invariant: relative occurrence serialization")}function Te(e){let t=[],n=r=>{if(Array.isArray(r)){r.forEach(n);return}if(r===null||typeof r!="object")return;let i=r;if(i.type!=="SELECT"){if(i.type==="KINTONE_FUNC"&&typeof i.name=="string"&&tt(i.name)){t.push(i.name);return}Object.values(i).forEach(n)}};return n(e),t}function Hy(e){let t=[],n=r=>{switch(r.type){case"BINARY":(r.right.type==="KINTONE_FUNC"&&tt(r.right.name)||r.right.type==="IN_LIST"&&r.right.values.length===1&&r.right.values[0].type==="KINTONE_FUNC"&&tt(r.right.values[0].name))&&t.push(r);return;case"LOGICAL":n(r.left),n(r.right);return;case"NOT":case"GROUP":n(r.expr);return;case"EXISTS":case"NULL_CHECK":case"BOOLEAN":return}};return n(e),t}function Yy(e,t){return e.length===t.length&&e.every((n,r)=>n===t[r])}function gd(e,t){let n=new Map;for(let r of t){if(!tt(r))return!1;n.set(r,(n.get(r)??0)+1)}for(let[r,i]of n)if((e.match(new RegExp(`\\b${r}\\s*\\(`,"g"))?.length??0)<i)return!1;return!0}var Re=class extends Error{constructor(t){super(`ArgumentError: ${t}`),this.name="ArgumentError"}};function yd(e){hd(e)}function ll(e){if(al(e).length>0)throw new Re("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 hd(e){switch(e.type){case"SELECT":er(e);return;case"UNION":cl(e);return;case"WITH":Ad(e);return;case"EXPLAIN":hd(e.query);return;case"CREATE_TEMP_TABLE":ul(e.query);return;case"SET_VARIABLE":case"DECLARE_VARIABLE":case"ASSERT":case"EXIT":En(e);return;case"UPDATE":if(e.applyBlocks?.length&&!Nt(e.where)&&we(e.where)){sl(e.where),En(e);return}if(Jt(e)&&e.subtableCode)throw new Re("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&&we(e.where)&&!qy(e,e.where)){sl(e.where),En(e);return}if(Jt(e))throw new Re("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(Jt(e)&&e.subtableCode)throw new Re("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&&we(e.where)){sl(e.where),En(e);return}if(Jt(e))throw new Re("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(Jt(e))throw new Re("KLIKE / NOT KLIKE \u306F INSERT / INSERT SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"UPSERT":case"UPSERT_SELECT":if(Jt(e))throw new Re("KLIKE / NOT KLIKE \u306F UPSERT / UPSERT SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"REORDER":if(Jt(e))throw new Re("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(Jt(e))throw new Re("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 sl(e){Vo(e,t=>{if(!Yt(t))return;let n=t.right;if(n.type!=="STRING"&&n.type!=="VARIABLE")throw new Re("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(n.type==="STRING"&&n.value.includes("%"))throw new Re("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 ul(e){e.type==="SELECT"?er(e):e.type==="UNION"?cl(e):Ad(e)}function cl(e){ul(e.left),er(e.right)}function Ad(e){if(zt(e)){er(qt(e));return}for(let t of e.ctes)t.query.type==="SELECT"?er(t.query):t.query.type==="UNION"&&cl(t.query);ul(e.query)}function er(e){if(zy(e),we(e.where)&&!(We(e)==="SIMPLE"&&e.from.cteName===null&&e.joins.every(n=>n.table.cteName===null))){let n=fn(e,{allowUnresolvedVariables:!0});if(al(n).length===0){En(e);return}if(jy(e)){En(e);return}throw new Re("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")}En(e)}function jy(e){return e.where!==null&&Te(e.where).length>0&&e.joins.length>0&&e.joins.every(t=>t.type==="INNER"||t.type==="CROSS")&&[e.from,...e.joins.map(t=>t.table)].every(t=>t.alias!==null&&t.cteName===null&&!t.subtableCode)}function zy(e){Vo(e,t=>{if(!Yt(t))return;if(!Bo(e.where,t))throw new Re("KLIKE / NOT KLIKE \u306F SELECT \u306E WHERE \u53E5\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059");let n=t.right;if(n.type!=="STRING"&&n.type!=="VARIABLE")throw new Re("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(n.type==="STRING"&&n.value.includes("%"))throw new Re("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 En(e){Wo(e,t=>{t.type==="SELECT"&&er(t)},!0)}function Jt(e){let t=!1;return Wo(e,n=>{n.type==="BINARY"&&(n.op==="KLIKE"||n.op==="NOT_KLIKE")&&(t=!0)}),t}function qy(e,t){let n=!1,r=i=>{if(n||i===t||i===null||typeof i!="object")return;if(Array.isArray(i)){for(let a of i)r(a);return}let o=i;if(o.type!=="SELECT"){if(o.type==="BINARY"&&(o.op==="KLIKE"||o.op==="NOT_KLIKE")){n=!0;return}for(let a of Object.values(o))r(a)}};return r(e),n}function Bo(e,t){if(e===null)return!1;if(e===t)return!0;switch(e.type){case"LOGICAL":return Bo(e.left,t)||Bo(e.right,t);case"NOT":case"GROUP":return Bo(e.expr,t);case"BINARY":case"NULL_CHECK":case"EXISTS":return!1;case"BOOLEAN":return!1}}function Vo(e,t){if(Array.isArray(e)){for(let r of e)Vo(r,t);return}if(e===null||typeof e!="object")return;let n=e;(n.type==="BINARY"||n.type==="NULL_CHECK"||n.type==="LOGICAL"||n.type==="NOT"||n.type==="GROUP"||n.type==="EXISTS")&&t(n);for(let r of Object.values(n))r!==e&&Jy(r)||Vo(r,t)}function Wo(e,t,n=!1){if(Array.isArray(e)){for(let i of e)Wo(i,t);return}if(e===null||typeof e!="object")return;let r=e;n||t(r);for(let i of Object.values(r))Wo(i,t)}function Jy(e){return e!==null&&typeof e=="object"&&e.type==="SELECT"}var Kr=class extends Error{constructor(){super("ArgumentError: PRIMARY_ORGANIZATION() \u306F DML \u306E WHERE \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093"),this.name="ArgumentError"}};function Sd(e){let t=e.type==="EXPLAIN"?e.query:e;switch(t.type){case"UPDATE":case"DELETE":case"UPSERT":case"UPSERT_SELECT":case"INSERT_SELECT":if(Xy(t))throw new Kr;return;default:return}}function Xy(e){let t=!1;return Ho(e,n=>{t||!Object.prototype.hasOwnProperty.call(n,"where")||Qy(n.where)&&(t=!0)}),t}function Qy(e){let t=!1;return Ho(e,n=>{n.type==="KINTONE_FUNC"&&n.name==="PRIMARY_ORGANIZATION"&&(t=!0)}),t}function Ho(e,t){if(Array.isArray(e)){for(let r of e)Ho(r,t);return}if(e===null||typeof e!="object")return;let n=e;t(n);for(let r of Object.values(n))Ho(r,t)}function Xt(e,t,n,r=Number.POSITIVE_INFINITY){if(t.length>=n&&t.length<=r)return;let i=n===r?String(n):r===Number.POSITIVE_INFINITY?`${n} or more`:`${n} to ${r}`;throw new Error(`ArgumentError: ${e} expects ${i} argument(s).`)}function Yo(e,t){switch(e){case"UPPER":case"LOWER":case"TRIM":case"LTRIM":case"RTRIM":case"LENGTH":case"LENGTH_CHAR":case"YEAR":case"MONTH":case"DAY":case"DAYOFWEEK":case"QUARTER":case"WEEK":case"LAST_DAY":case"ABS":case"SQRT":return Xt(e,t,1,1);case"SUBSTRING":case"LPAD":case"RPAD":case"REGEXP_LIKE":case"REGEXP_SUBSTR":return Xt(e,t,2,3);case"LEFT":case"RIGHT":case"INSTR":case"ISNULL":case"NULLIF":case"MOD":case"POWER":case"FORMAT":case"CAST":case"DATE_FORMAT":case"DATEDIFF":return Xt(e,t,2,2);case"CONCAT":case"COALESCE":case"GREATEST":case"LEAST":return Xt(e,t,2);case"REPLACE":case"TRANSLATE":case"DATE_ADD":return Xt(e,t,3,3);case"REGEXP_REPLACE":return Xt(e,t,3,5);case"ROUND":case"FLOOR":case"CEIL":case"TRUNCATE":return Xt(e,t,1,2);case"CURRENT_DATE":case"CURRENT_TIMESTAMP":return Xt(e,t,0,0)}}var fl=1e4,Pt=fl,X=e=>new Error(`ArgumentError: ${e}`),Zy=e=>e.type==="VARIABLE",Qt=e=>e?.type==="STRING"&&e.fromVariable===!0;function eh(e){return e.type==="NUMBER"?Number(z(e)):e.value}function tr(e){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e);if(!t)return null;let n=Number(t[1]),r=Number(t[2]),i=Number(t[3]);if(n<1||n>9999||r<1||r>12||i<1||i>31)return null;let o=new Date(0);return o.setUTCHours(0,0,0,0),o.setUTCFullYear(n,r-1,i),o.getUTCFullYear()===n&&o.getUTCMonth()===r-1&&o.getUTCDate()===i?{year:n,month:r,day:i}:null}function pl(e){let t=tr(e),n=new Date(0);return n.setUTCHours(0,0,0,0),n.setUTCFullYear(t.year,t.month-1,t.day),Math.trunc(n.getTime()/864e5)}function th(e){let t=new Date(e*864e5),n=t.getUTCFullYear();if(n<1||n>9999)throw X("GENERATE_SERIES \u306E\u65E5\u4ED8\u5F15\u6570\u306B\u306F\u5B9F\u5728\u3059\u308B YYYY-MM-DD \u5F62\u5F0F\u306E DATE \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");return`${String(n).padStart(4,"0")}-${String(t.getUTCMonth()+1).padStart(2,"0")}-${String(t.getUTCDate()).padStart(2,"0")}`}function Td(e){let t=e.trim(),n=/^([+-]?\d+)\s+(day|days|month|months|year|years)$/i.exec(t);if(!n)throw/^\S+\s+(?:day|days|month|months|year|years)$/i.test(t)?X("GENERATE_SERIES \u306E\u65E5\u4ED8 step \u306E\u4FC2\u6570\u306B\u306F\u5B89\u5168\u306A\u6574\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002"):/^[+-]?\d+\s+\S+$/i.test(t)?X("GENERATE_SERIES \u306E\u65E5\u4ED8 step \u306F day\u3001days\u3001month\u3001months\u3001year\u3001years \u306E\u307F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\u3002"):X("GENERATE_SERIES \u306E step \u304C\u7CFB\u5217\u306E\u578B\u3068\u4E00\u81F4\u3057\u307E\u305B\u3093\u3002\u6574\u6570\u7CFB\u5217\u306B\u306F\u6574\u6570\u3001DATE \u7CFB\u5217\u306B\u306F day\u3001month\u3001year \u5358\u4F4D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let r=Number(n[1]);if(!Number.isSafeInteger(r))throw X("GENERATE_SERIES \u306E\u65E5\u4ED8 step \u306E\u4FC2\u6570\u306B\u306F\u5B89\u5168\u306A\u6574\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let i=n[2].toLowerCase(),o=i.startsWith("month")?"MONTH":i.startsWith("year")?"YEAR":"DAY";if(r===0)throw X(`GENERATE_SERIES \u306E\u65E5\u4ED8 step \u306B 0 ${o.toLowerCase()} \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002`);return{coefficient:r,unit:o}}function $r(e){if(typeof e=="number")return Number.isSafeInteger(e)?e:null;if(!/^[+-]?\d+$/.test(e))return null;let t=Number(e);return Number.isSafeInteger(t)?t:null}function Br(e){let t=Ae(e.raw??String(e.value));if(t===null||t.scale>0)return null;if(t.sign===0)return 0;if(t.coefficient.length-t.scale>16)return null;let r=`${t.coefficient}${"0".repeat(-t.scale)}`;if(r.length===16&&r>"9007199254740991")return null;let i=Number(r)*t.sign;return Number.isSafeInteger(i)?i:null}function Id(e){return typeof e=="string"&&(/^\d{4}-\d{2}-\d{2}T/.test(e)||/^\d{2}:\d{2}(?::\d{2})?$/.test(e))}function jo(e,t,n){if(e===t)return 1;if(e<t&&n<0||e>t&&n>0)return 0;let r=n>0?BigInt(t)-BigInt(e):BigInt(e)-BigInt(t);return Number(r/BigInt(Math.abs(n))+1n)}function dl(e){return e.year*12+e.month-1}function wd(e,t){if(t==="MONTH"&&e.day!==1)throw X("GENERATE_SERIES \u306E month step \u3067\u306F start \u306B\u6708\u521D\uFF08YYYY-MM-01\uFF09\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");if(t==="YEAR"&&(e.month!==1||e.day!==1))throw X("GENERATE_SERIES \u306E year step \u3067\u306F start \u306B\u5E74\u521D\uFF08YYYY-01-01\uFF09\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}function nh(e,t,n){let r=pl(`${String(e.year).padStart(4,"0")}-${String(e.month).padStart(2,"0")}-${String(e.day).padStart(2,"0")}`),i=pl(`${String(t.year).padStart(4,"0")}-${String(t.month).padStart(2,"0")}-${String(t.day).padStart(2,"0")}`);if(n.unit==="DAY")return jo(r,i,n.coefficient);if(r===i)return 1;if(r<i&&n.coefficient<0||r>i&&n.coefficient>0)return 0;if(n.unit==="MONTH"){let s=dl(t)+(n.coefficient<0&&t.day!==1?1:0);return jo(dl(e),s,n.coefficient)}let o=t.month===1&&t.day===1,a=t.year+(n.coefficient<0&&!o?1:0);return jo(e.year,a,n.coefficient)}function bd(e,t,n){if(e<1||e>9999)throw X("GENERATE_SERIES \u306E\u65E5\u4ED8\u5F15\u6570\u306B\u306F\u5B9F\u5728\u3059\u308B YYYY-MM-DD \u5F62\u5F0F\u306E DATE \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");return`${String(e).padStart(4,"0")}-${String(t).padStart(2,"0")}-${String(n).padStart(2,"0")}`}function rh(e){let t=Math.floor(e/12),n=e-t*12+1;return bd(t,n,1)}function Nd(e){if(e.args.length<2||e.args.length>3)throw X("GENERATE_SERIES \u306F start\u3001stop \u3068\u7701\u7565\u53EF\u80FD\u306A step \u306E2\u500B\u307E\u305F\u306F3\u500B\u306E\u5F15\u6570\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002");let t=e.args.map(y=>eh(y));["start","stop","step"].forEach((y,T)=>{if(t[T]==="")throw X(`GENERATE_SERIES \u306E ${y} \u306B\u7A7A\u6587\u5B57\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002`)});let[n,r,i]=t,[o,a,s]=e.args,l=typeof n=="string"?tr(n):null,p=typeof r=="string"?tr(r):null,c=typeof n=="string"&&/^\d{4}-/.test(n),u=typeof r=="string"&&/^\d{4}-/.test(r);if([n,r].some(Id))throw X("GENERATE_SERIES \u306F Phase 1 \u3067\u306F\u6574\u6570\u3068 DATE \u306E\u307F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\u3002DATETIME \u3068 TIME \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002");if(l||p||c||u||typeof n=="string"&&typeof r=="string"&&!(Qt(o)&&Qt(a)&&$r(n)!==null&&$r(r)!==null)){if(!l||!p)throw X(l&&typeof r!="string"||p&&typeof n!="string"?"GENERATE_SERIES \u306E start \u3068 stop \u306F\u3001\u4E21\u65B9\u3092\u6574\u6570\u307E\u305F\u306F\u4E21\u65B9\u3092 DATE \u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002":"GENERATE_SERIES \u306E\u65E5\u4ED8\u5F15\u6570\u306B\u306F\u5B9F\u5728\u3059\u308B YYYY-MM-DD \u5F62\u5F0F\u306E DATE \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");if(i!==void 0&&typeof i!="string")throw X("GENERATE_SERIES \u306E step \u304C\u7CFB\u5217\u306E\u578B\u3068\u4E00\u81F4\u3057\u307E\u305B\u3093\u3002\u6574\u6570\u7CFB\u5217\u306B\u306F\u6574\u6570\u3001DATE \u7CFB\u5217\u306B\u306F day\u3001month\u3001year \u5358\u4F4D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let y=i===void 0?{coefficient:1,unit:"DAY"}:Td(i);return wd(l,y.unit),{kind:"DATE",start:n,stop:r,step:y.coefficient,dateUnit:y.unit,rowCount:nh(l,p,y)}}let d=o.type==="NUMBER"?Br(o):Qt(o)?$r(n):null,f=a.type==="NUMBER"?Br(a):Qt(a)?$r(r):null;if(d===null||f===null)throw(o.type==="NUMBER"||Qt(o))&&(a.type==="NUMBER"||Qt(a))?X("GENERATE_SERIES \u306E\u6570\u5024\u7CFB\u5217\u306F\u6574\u6570\u306E start\u3001stop\u3001step \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002"):X("GENERATE_SERIES \u306E start \u3068 stop \u306F\u3001\u4E21\u65B9\u3092\u6574\u6570\u307E\u305F\u306F\u4E21\u65B9\u3092 DATE \u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let R=i===void 0?1:s?.type==="NUMBER"?Br(s):Qt(s)?$r(i):null;if(R===null)throw s?.type==="NUMBER"||Qt(s)?X("GENERATE_SERIES \u306E\u6570\u5024\u7CFB\u5217\u306F\u6574\u6570\u306E start\u3001stop\u3001step \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002"):X("GENERATE_SERIES \u306E step \u304C\u7CFB\u5217\u306E\u578B\u3068\u4E00\u81F4\u3057\u307E\u305B\u3093\u3002\u6574\u6570\u7CFB\u5217\u306B\u306F\u6574\u6570\u3001DATE \u7CFB\u5217\u306B\u306F day\u3001month\u3001year \u5358\u4F4D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let E=d,m=f,g=R;if(g===0)throw X("GENERATE_SERIES \u306E step \u306B 0 \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002");return{kind:"INTEGER",start:E,stop:m,step:g,rowCount:jo(E,m,g)}}function ih(e){if(e.args.length<2||e.args.length>3)throw X("GENERATE_SERIES \u306F start\u3001stop \u3068\u7701\u7565\u53EF\u80FD\u306A step \u306E2\u500B\u307E\u305F\u306F3\u500B\u306E\u5F15\u6570\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002");if(e.args.some(Zy)){["start","stop","step"].forEach((r,i)=>{let o=e.args[i];if(o?.type==="STRING"&&o.value==="")throw X(`GENERATE_SERIES \u306E ${r} \u306B\u7A7A\u6587\u5B57\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002`);if(o?.type==="NUMBER"&&Br(o)===null)throw X("GENERATE_SERIES \u306E\u6570\u5024\u7CFB\u5217\u306F\u6574\u6570\u306E start\u3001stop\u3001step \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002");if(i<2&&o?.type==="STRING"){if(Id(o.value))throw X("GENERATE_SERIES \u306F Phase 1 \u3067\u306F\u6574\u6570\u3068 DATE \u306E\u307F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\u3002DATETIME \u3068 TIME \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002");if(/^\d{4}-/.test(o.value)&&tr(o.value)===null)throw X("GENERATE_SERIES \u306E\u65E5\u4ED8\u5F15\u6570\u306B\u306F\u5B9F\u5728\u3059\u308B YYYY-MM-DD \u5F62\u5F0F\u306E DATE \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}});let n=e.args[2];if(n?.type==="NUMBER"){let r=Br(n);if(r===null)throw X("GENERATE_SERIES \u306E\u6570\u5024\u7CFB\u5217\u306F\u6574\u6570\u306E start\u3001stop\u3001step \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002");if(r===0)throw X("GENERATE_SERIES \u306E step \u306B 0 \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002")}else if(n?.type==="STRING"){let r=Td(n.value),i=e.args[0];if(i?.type==="STRING"){let o=tr(i.value);o&&wd(o,r.unit)}}return null}let t=Nd(e);if(t.rowCount>Pt)throw X(`GENERATE_SERIES \u306E\u751F\u6210\u4EF6\u6570 ${t.rowCount} \u884C\u304C\u4E0A\u9650 ${Pt} \u884C\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002`);return t.rowCount}function Cd(e){let t=n=>{if(n===null||typeof n!="object")return;if(Array.isArray(n)){n.forEach(t);return}let r=n;if(r.type==="WITH"){let i=0,o=!0;for(let a of r.ctes)if(a.query.type==="GENERATE_SERIES"){let s=ih(a.query);s===null?o=!1:i+=s}else t(a.query);if(o&&i>Pt)throw X(`\u3053\u306E WITH \u6587\u306E GENERATE_SERIES \u751F\u6210\u4EF6\u6570\u5408\u8A08 ${i} \u884C\u304C\u4E0A\u9650 ${Pt} \u884C\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002`);t(r.query);return}Object.values(r).forEach(t)};t(e)}function zo(e){let t=Nd(e);if(t.rowCount>Pt)throw X(`GENERATE_SERIES \u306E\u751F\u6210\u4EF6\u6570 ${t.rowCount} \u884C\u304C\u4E0A\u9650 ${Pt} \u884C\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002`);let n=[];if(t.kind==="INTEGER"){let r=t.start;for(let i=0;i<t.rowCount;i++)if(n.push(String(r)),i+1<t.rowCount){let o=r+t.step;if(!Number.isSafeInteger(o))throw X("GENERATE_SERIES \u306E\u6570\u5024\u7CFB\u5217\u306F\u6574\u6570\u306E start\u3001stop\u3001step \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002");r=o}}else{let r=tr(t.start);if(t.dateUnit==="MONTH"){let i=dl(r);for(let o=0;o<t.rowCount;o++)n.push(rh(i+o*t.step))}else if(t.dateUnit==="YEAR")for(let i=0;i<t.rowCount;i++)n.push(bd(r.year+i*t.step,1,1));else{let i=pl(t.start);for(let o=0;o<t.rowCount;o++)n.push(th(i+o*t.step))}}return{...t,values:n}}function nt(e){oh(e),Sd(e),yd(e),Cd(e)}function oh(e){let t=n=>{if(n===null||typeof n!="object")return;if(Array.isArray(n)){n.forEach(t);return}let r=n;if(r.type==="STRING_FUNC"){let i=r;Yo(i.func,i.args)}Object.values(r).forEach(t)};t(e)}var qo=16,Pd=64,oe=class extends Error{constructor(n,r){super(n);this.statementIndex=r}};function Vr(e,t,n){if(Array.isArray(e)){for(let r of e)Vr(r,t,n);return}if(e!==null&&typeof e=="object"){let r=e,i=r.cteName;typeof i=="string"&&i.startsWith("#")&&t.add(i);let o=r.appId;typeof o=="number"&&o>0&&n.add(o);for(let a of Object.values(r))Vr(a,t,n)}}var ah=new Set(["=","!=","<>",">","<",">=","<="]);function El(e,t,n=!1){if(Array.isArray(e)){for(let r of e)El(r,t,n);return}if(e!==null&&typeof e=="object"){let r=e,i=r.type;if((i==="VARIABLE"||i==="VARIABLE_COL"||i==="VARIABLE_IN_LIST")&&typeof r.name=="string"){t.push({name:r.name,kind:i==="VARIABLE"?"scalar":i==="VARIABLE_COL"?"select-column":"array-in-list",relativeDateAllowed:n});return}let o=i==="BINARY"||i==="LOGICAL"||i==="NOT"||i==="GROUP"||i==="NULL_CHECK"||i==="BOOLEAN";for(let[a,s]of Object.entries(r)){let l=s!==null&&typeof s=="object"&&s.type==="VARIABLE",p=n&&i==="BINARY"&&a==="right"&&l&&ah.has(String(r.op));El(s,t,a==="where"?!0:i==="BINARY"&&a==="right"&&l?p:o?n:!1)}}}function sh(e){let t=e.type==="EXPLAIN"?e.query:e;return Wt(t.type)||t.type==="VALIDATE"}function Rl(e){if(Array.isArray(e)){for(let t of e)Rl(t);return}if(e!==null&&typeof e=="object"){let t=e;t.type==="SELECT"&&el(e);for(let n of Object.values(t))Rl(n)}}function ml(e){if(e.length===0)throw new oe("ArgumentError: SQL is empty.",0);if(e.forEach((u,d)=>{try{Rl(u)}catch(f){throw f instanceof Error?new oe(f.message,d):f}try{Hn("phase15b",u),nt(u)}catch(f){throw f instanceof Re||f instanceof Kr?new oe(f.message,d):f instanceof Error&&/^(UnsupportedError|ArgumentError): APPLY /.test(f.message)?new oe(f.message,d):f}}),e.length===1){let u=e[0].type;if(u==="SET_VARIABLE"||u==="DECLARE_VARIABLE"){let d=u==="SET_VARIABLE"?"SET":"DECLARE";throw new oe(`ArgumentError: ${d} variable requires a batch.`,0)}if(u==="CREATE_TEMP_TABLE"||u==="DROP_TEMP_TABLE"){let d=u==="CREATE_TEMP_TABLE"?"CREATE TEMP TABLE":"DROP TEMP TABLE";throw new oe(`ArgumentError: ${d} requires a batch (temp tables are batch-scoped).`,0)}}let t=new Map,n=new Map,r=[],i=[],o=new Map,a=[];e.forEach((u,d)=>{let f=u.type==="VALIDATE"&&u.errorTable?u.errorTable:"validationErrorTable"in u&&u.validationErrorTable?u.validationErrorTable:"onErrorSkip"in u&&u.onErrorSkip?u.errorTable??null:null;if(e.length===1&&f){let v=u.type==="VALIDATE"?"ArgumentError: VALIDATE INTO requires a batch.":"onErrorSkip"in u&&u.onErrorSkip?"ArgumentError: ON ERROR SKIP requires a batch.":"ArgumentError: VALIDATE ONLY INTO requires a batch.";throw new oe(v,d)}let R=Eo(u),E=[],m=[],g=new Set,y=new Set,T=new Set,h=[];El(u,h);let I=new Set;for(let v of h){let P=o.get(v.name);if(P===void 0)throw new oe(`ParseError: variable @${v.name} is not defined before statement ${d+1}.`,d);if(P.kind==="scalar"&&v.kind==="array-in-list")throw new oe(`ParseError: scalar variable @${v.name} cannot be used as IN @${v.name}; use IN (@${v.name}) instead.`,d);if(P.kind==="array"&&v.kind!=="array-in-list")throw new oe(`ParseError: array variable @${v.name} can only be used as IN @${v.name}.`,d);if(P.relativeDate&&sh(u))throw new oe(`ArgumentError: RELATIVE_DATE variable @${v.name} cannot be used in DML or VALIDATE statements.`,d);if(P.relativeDate&&!v.relativeDateAllowed)throw new oe(`ArgumentError: RELATIVE_DATE variable @${v.name} can only be used as a WHERE comparison right operand or BETWEEN boundary.`,d);I.has(v.name)||(P.referencedBy.push(d),I.add(v.name))}if(u.type==="SET_VARIABLE"||u.type==="DECLARE_VARIABLE"){if(o.has(u.name))throw new oe(`ParseError: variable @${u.name} is already defined.`,d);if(o.set(u.name,{index:d,kind:u.type==="SET_VARIABLE"&&u.expr.type==="ARRAY"?"array":"scalar",relativeDate:u.type==="DECLARE_VARIABLE"&&u.annotation==="RELATIVE_DATE",referencedBy:[]}),a.push(u.name),a.length>Pd)throw new oe(`ParseError: batch exceeds ${Pd} variables.`,d)}u.type==="CREATE_TEMP_TABLE"?Vr(u.query,g,y):u.type==="DROP_TEMP_TABLE"||Vr(u,g,y);let C=!1;if(u.type==="INSERT_SELECT"||u.type==="UPSERT_SELECT"){let v=new Set,P=new Set;Vr(u.select,v,P),C=v.size>0&&P.size===0}for(let v of g){let P=t.get(v);if(P===void 0)throw new oe(`ParseError: temp table ${v} is not defined in this batch.`,d);T.add(P)}if(f){let v=u.type==="VALIDATE"?u.summary?["$id","$err_subtable","$err_field","$err_code","$err_count"]:["$id","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id","$err_count"]:u.type==="IMPORT"&&u.targets?.some(M=>M.kind==="SUBTABLE")?[...new Set(u.targets.flatMap(M=>M.kind==="FIELD"?[M.field]:M.children)),"$err_subtable","$err_subrow","$err_source_row"]:u.type==="UPDATE"?["$id",...u.assignments.map(M=>M.field)]:"fields"in u?u.fields:[],P=JSON.stringify(v),U=t.get(f);if(U===void 0){if(t.set(f,d),n.set(f,P),r.push(f),E.push(f),t.size>qo)throw new oe(`ParseError: batch exceeds ${qo} temp tables.`,d)}else{if(n.get(f)!==P)throw new oe(`ParseError: validation error table ${f} has a different payload schema.`,d);T.add(U)}}if(u.type==="CREATE_TEMP_TABLE"){if(t.has(u.name))throw new oe(`ParseError: temp table ${u.name} is already defined.`,d);if(t.set(u.name,d),r.push(u.name),E.push(u.name),t.size>qo)throw new oe(`ParseError: batch exceeds ${qo} temp tables.`,d)}if(u.type==="DROP_TEMP_TABLE"){let v=t.get(u.name);if(v===void 0)throw new oe(`ParseError: temp table ${u.name} is not defined in this batch.`,d);T.add(v),m.push(u.name),t.delete(u.name)}i.push({index:d,statementType:R,isDml:ks(u),isReadOnly:$n(u),hasWhere:wp(u),insertValuesCount:bp(u),appIds:[...y].sort((v,P)=>v-P),tempTablesCreated:E,tempTablesReferenced:[...g],tempTablesDropped:m,dependsOn:[...T].sort((v,P)=>v-P),tempOnlySource:C,targetAppId:Wt(R)&&typeof u.appId=="number"?u.appId:null,isUpdateFrom:u.type==="UPDATE"&&u.from!=null,isValidationOnly:"validateOnly"in u&&u.validateOnly===!0,isOnErrorSkip:"onErrorSkip"in u&&u.onErrorSkip===!0,requiresCompleteInput:Tp(u)})});let s=i.some(u=>u.isDml),l=i.some(u=>u.isValidationOnly),p=i.some(u=>u.requiresCompleteInput),c=a.map(u=>({name:u,kind:o.get(u).kind,referencedBy:[...o.get(u).referencedBy]}));return{statementCount:e.length,isReadOnlyBatch:!s&&i.every(u=>u.isReadOnly),containsDml:s,containsValidationOnly:l,requiresCompleteInput:p,tempTables:r,variables:c,warnings:c.filter(u=>u.referencedBy.length===0).map(u=>`variable @${u.name} is never used.`),statements:i}}var Jo=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"],["CROSS","CROSS"],["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"],["PRIMARY_ORGANIZATION","PRIMARY_ORGANIZATION"],["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 ve=class extends Error{constructor(n,r,i,o=!1){let a=i.slice(Math.max(0,r-10),r+10);super(`${n}\uFF08\u4F4D\u7F6E ${r}\u3001\u524D\u5F8C: \u300C${a}\u300D\uFF09`);this.pos=r;this.input=i;this.unterminated=o;this.name="LexError"}},Zt=class{constructor(t){this.input=t;this.pos=0}tokenize(){let t=[];for(;;){let n=this.nextToken();if(t.push(n),n.kind==="EOF")break}return t}nextToken(){if(this.skipWhitespaceAndComments(),this.pos>=this.input.length)return this.makeToken("EOF","",this.pos);let t=this.pos,n=this.input[this.pos];if(n==="'")return this.readString(t);if(n==="`")return this.readBacktickIdent(t);if(nr(n))return this.readNumber(t);let r=this.tryReadOperator(t);if(r)return r;if(gl(n))return this.readIdentOrKeyword(t);if(n==="#")return this.readHashIdent(t);if(n==="@")return this.readVariable(t);throw new ve(`\u4E88\u671F\u3057\u306A\u3044\u6587\u5B57 \u300C${n}\u300D \u3067\u3059`,this.pos,this.input)}readString(t){this.pos++;let n="";for(;this.pos<this.input.length;){let r=this.input[this.pos];if(r==="'")if(this.pos++,this.pos<this.input.length&&this.input[this.pos]==="'")n+="'",this.pos++;else return this.makeToken("STRING",n,t);else n+=r,this.pos++}throw new ve("\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 n="";for(;this.pos<this.input.length;){let r=this.input[this.pos];if(r==="`")return this.pos++,this.makeToken("BIDENT",n,t);n+=r,this.pos++}throw new ve("\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&&nr(this.input[this.pos]);)this.pos++;if(this.pos<this.input.length&&this.input[this.pos]==="."&&this.pos+1<this.input.length&&nr(this.input[this.pos+1]))for(this.pos++;this.pos<this.input.length&&nr(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||!nr(this.input[this.pos]))throw new ve("\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&&nr(this.input[this.pos]);)this.pos++}return this.makeToken("NUMBER",this.input.slice(t,this.pos),t)}tryReadOperator(t){let n=this.input[this.pos],r=this.input[this.pos+1]??"";if(n==="!"&&r==="=")return this.pos+=2,this.makeToken("!=","!=",t);if(n==="<"&&r===">")return this.pos+=2,this.makeToken("<>","<>",t);if(n===">"&&r==="=")return this.pos+=2,this.makeToken(">=",">=",t);if(n==="<"&&r==="=")return this.pos+=2,this.makeToken("<=","<=",t);if(n==="|"&&r==="|")return this.pos+=2,this.makeToken("||","||",t);switch(n){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&&Od(this.input[this.pos]);)this.pos++;let n=this.input.slice(t,this.pos),r=n.toUpperCase(),i=Jo.get(r)??"IDENT",o=i==="IDENT"?n:r;return this.makeToken(i,o,t)}readHashIdent(t){this.pos++;let n=this.input[this.pos]??"";if(!gl(n))throw new ve("\u300C#\u300D \u306E\u76F4\u5F8C\u306B\u306F\u8B58\u5225\u5B50\u304C\u5FC5\u8981\u3067\u3059",t,this.input);for(;this.pos<this.input.length&&Od(this.input[this.pos]);)this.pos++;let r=this.input.slice(t,this.pos);if(this.input[this.pos]==="@")throw new ve(`@profile is not allowed on temp table ${r}.`,this.pos,this.input);return this.makeToken("IDENT",r,t)}readVariable(t){this.pos++;let n=this.input[this.pos]??"";if(!/[A-Za-z_]/.test(n))throw new ve("\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 ve("\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 n=this.pos;this.pos+=2;let r=!1;for(;this.pos<this.input.length;){if(this.input[this.pos]==="*"&&this.input[this.pos+1]==="/"){this.pos+=2,r=!0;break}this.pos++}if(!r)throw new ve("\u30D6\u30ED\u30C3\u30AF\u30B3\u30E1\u30F3\u30C8\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u307E\u305B\u3093",n,this.input,!0);continue}break}}makeToken(t,n,r){return{kind:t,value:n,pos:r}}};function Rl(e){let t=e.codePointAt(0);return t>=65&&t<=90||t>=97&&t<=122||t===95||t===36||ih(t)}function Nd(e){let t=e.codePointAt(0);return Rl(e)||t>=48&&t<=57}function er(e){let t=e.codePointAt(0);return t>=48&&t<=57}function ih(e){return e>=12352&&e<=12543||e>=13312&&e<=40959||e>=63744&&e<=64255||e>=65281&&e<=65376}var Pd=20,yl=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"}),Ld=Object.freeze(["CURRENT_DATE","CURRENT_TIMESTAMP"]),$r=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"}),eC=Object.freeze(Object.values($r).filter(e=>e!==void 0)),oh=Object.freeze(["COUNT","SUM","AVG","MAX","MIN"]),ah=new Set(oh);function sh(e){return ah.has(e)}var _d=Object.freeze({ROW_NUMBER:"ROW_NUMBER",RANK:"RANK",DENSE_RANK:"DENSE_RANK"}),Wr=Object.freeze({TODAY:"TODAY",NOW:"NOW",LOGINUSER:"LOGINUSER",PRIMARY_ORGANIZATION:"PRIMARY_ORGANIZATION"});function Od(e){return Wr[e]!==void 0}var lh=Object.freeze([...po]),uh=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),ch=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function ph(e){return uh.has(e)}function dh(e){return ch.has(e)}function fh(e){return Number.isInteger(e)&&e>=1&&e<=31}var tC=Object.freeze(Array.from(new Set([...Object.keys(yl),...Ld,...Object.keys($r),...Object.keys(_d),...Object.keys(Wr),...lh,"IF"]))),Eh=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","PRIMARY_ORGANIZATION","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 Rh(e,t){return e.kind==="("||e.kind==="."||t.kind===")"||t.kind===","||t.kind==="."?!1:t.kind==="("?!Eh.has(e.kind):!0}var T=class extends Error{constructor(n,r){super(`${n}\uFF08\u4F4D\u7F6E ${r.pos}\u3001\u30C8\u30FC\u30AF\u30F3: \u300C${r.value}\u300D\uFF09`);this.rawMessage=n;this.token=r;this.name="ParseError"}},ml=["\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306E\u7D50\u679C\u306F\u540C\u3058 SELECT \u306E\u5F0F\u3067\u306F\u4F7F\u3048\u307E\u305B\u3093\u3002"," \xD7 SELECT ROUND(SUM(x) OVER (), 1) AS a FROM t"," \u25CB WITH w AS (SELECT SUM(x) OVER () AS \u7DCF\u8A08 FROM t) SELECT ROUND(\u7DCF\u8A08, 1) AS a FROM w","\u30A6\u30A3\u30F3\u30C9\u30A6\u7D50\u679C\u3092\u5217\u3068\u3057\u3066\u51FA\u3057\u3001\u305D\u308C\u3092\u4F7F\u3046\u5F0F\u306F\u6B21\u306E\u6BB5\uFF08CTE \u307E\u305F\u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\uFF09\u306B\u66F8\u3044\u3066\u304F\u3060\u3055\u3044"].join(`
4
- `),en=class{constructor(t,n={}){this.tokens=t;this.capabilities=n;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=[];this.aggregateGroupKeyTokens=new WeakMap;this.activeCteDefinition=null;this.provisionalRecursiveCte=null;this.allowSelectArithVariable=!1}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 n=this.tempTableRefs[0];throw new T(`temp table ${n.value} is not defined in this batch.`,n)}return t[0]}parseStatements(){let t=[];for(;;){for(;this.peek().kind===";";)this.advance();if(this.peek().kind==="EOF")break;let n=this.peek();if(t.push(this.parseStatement()),t.length>Pd)throw new T(`batch exceeds ${Pd} statements.`,n);let r=this.peek();if(r.kind!==";"&&r.kind!=="EOF")throw new T("\u6587\u306E\u533A\u5207\u308A\u306B\u306F ; \u304C\u5FC5\u8981\u3067\u3059",r)}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 n=t.value.toUpperCase();if(n==="CREATE")return this.parseCreateTempTable();if(n==="DROP")return this.parseDropTempTable();if(n==="DECLARE")return this.parseDeclareVariable();if(n==="VALIDATE")return this.parseValidate();if(n==="GENERATE_SERIES")throw new T("GENERATE_SERIES \u306F WITH \u306E CTE \u672C\u4F53\u306B\u66F8\u3044\u3066\u304F\u3060\u3055\u3044\u3002\u4F8B: WITH s AS (GENERATE_SERIES(1, 5)) SELECT generate_series FROM s",t);if(n==="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 n=this.peek().kind==="["?this.parseArrayLiteral():this.parseScalarExpr("SET",!0);return{type:"SET_VARIABLE",name:t.value.slice(1).toLowerCase(),expr:n}}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"),n=this.peek().kind==="IDENT"&&this.peek().value.toUpperCase()==="RELATIVE_DATE";if(n&&this.advance(),this.expect("="),n)return{type:"DECLARE_VARIABLE",name:t.value.slice(1).toLowerCase(),annotation:"RELATIVE_DATE",default:this.parseRelativeDateVariableToken()};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}}parseRelativeDateVariableToken(){let t=this.peek(),n=Wr[t.kind];if(n==="TODAY"||n==="NOW")return this.parseSqlValue();if(t.kind==="IDENT"&&this.peekAt(1).kind==="("&&ie(t.value.toUpperCase()))return this.parseRelativeDateFunction();throw new T("RELATIVE_DATE \u306E\u65E2\u5B9A\u5024\u306B\u306F\u30B5\u30DD\u30FC\u30C8\u5BFE\u8C61\u306E\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\u30C8\u30FC\u30AF\u30F3\u304C\u5FC5\u8981\u3067\u3059",t)}parseScalarExpr(t,n){let r=this.peek();if(r.kind==="VARIABLE")throw new T(`${t} \u306E\u53F3\u8FBA\u3067\u306F\u4ED6\u306E\u5909\u6570\u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093`,r);if(r.kind==="NULL")throw new T(`${t} \u306E\u53F3\u8FBA\u3067 NULL \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`,r);if(r.kind==="("&&this.peekAt(1).kind==="SELECT"){if(!n)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",r);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.",r);return{type:"SCALAR_SUBQUERY",query:a}}if(r.kind==="STRING")return this.advance(),{type:"STRING",value:r.value};let i=Wr[r.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`,r);if(i==="PRIMARY_ORGANIZATION")throw new T(`${t} \u306E\u53F3\u8FBA\u3067 PRIMARY_ORGANIZATION() \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u5B9F\u884C\u74B0\u5883\u5171\u901A\u306E\u512A\u5148\u7D44\u7E54\u89E3\u6C7A\u306F\u672A\u5BFE\u5FDC\u3067\u3059\uFF09`,r);if(i!==void 0)return this.parseSqlValue();let o=this.parseArithAddSub();if(this.rejectNonScalarExpr(o,r,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`,r)}rejectNonScalarExpr(t,n,r){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(`${r} \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`,n);if(t.type==="ARITH"||t.type==="SCALAR_ARITH"||t.type==="CONCAT_OP"||t.type==="AGG_ARITH"){this.rejectNonScalarExpr(t.left,n,r),this.rejectNonScalarExpr(t.right,n,r);return}if(t.type==="STRING_FUNC"){for(let i of t.args)this.rejectNonScalarExpr(i,n,r);return}throw new T(`${r} \u306E\u53F3\u8FBA\u3067\u306F CASE \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`,n)}}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 n=this.peek(),r;if(n.kind==="WITH")r=this.parseWith();else if(n.kind==="SELECT")r=this.tryParseUnionChain(this.parseSelect());else throw new T("CREATE TEMP TABLE ... AS \u306E\u5F8C\u306B\u306F SELECT / WITH \u304C\u5FC5\u8981\u3067\u3059",n);return{type:"CREATE_TEMP_TABLE",name:t,query:r}}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,n){let r=this.peek();if(r.kind==="IDENT"&&r.value.toUpperCase()===t){this.advance();return}throw new T(n,r)}consumeSoftKeyword(t){return this.isSoftKeyword(t)?(this.advance(),!0):!1}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:n,subtableCode:r}=Pt(t,this.prev());if(r)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:n}}parseExplain(){this.advance();let t=this.peek(),n;if(t.kind==="WITH"){let r=this.parseWith();if(r.type!=="WITH")throw new T("EXPLAIN \u306B\u7D9A\u304F WITH \u53E5\u304C\u4E0D\u6B63\u3067\u3059",t);n=r}else if(t.kind==="SELECT"){let r=this.parseSelect(!0);n=this.tryParseUnionChain(r)}else if(t.kind==="INSERT")n=this.parseInsert();else if(t.kind==="UPSERT")n=this.parseUpsert();else if(t.kind==="UPDATE")n=this.parseUpdate();else if(t.kind==="DELETE")n=this.parseDelete();else if(t.kind==="REORDER")n=this.parseReorder();else if(t.kind==="IDENT"&&t.value.toUpperCase()==="VALIDATE")n=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);n=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:n}}parseImport(){this.advance();let t;this.peek().kind==="UPDATE"&&(this.advance(),t="UPDATE_RECORD_NUMBER"),this.expect("INTO"),this.rejectTempTableDml();let n=this.parseIdentifier(),{appId:r,subtableCode:i}=Pt(n,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 N=this.parseIdentifier();if(s.has(N))throw new T(`IMPORT target ${N} is declared more than once.`,this.prev());if(s.add(N),this.peek().kind==="("){this.advance();let U=this.parseIdentList();if(this.expect(")"),new Set(U).size!==U.length)throw new T(`IMPORT subtable ${N} contains duplicate child declarations.`,this.prev());let P;if(this.isSoftKeyword("ROW")){this.advance();for(let M of["ID","SOURCE"]){if(!this.isSoftKeyword(M))throw new T("ROW must be followed by ID SOURCE <header>.",this.peek());this.advance()}P=this.parseIdentifier()}o.push({kind:"SUBTABLE",subtableCode:N,children:U,...P?{rowIdSourceHeader:P}:{}})}else a.push(N),o.push({kind:"FIELD",field:N});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 c=this.parseIdentifier(),p,u=!0,d;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 N=this.parseIdentifier().toUpperCase();if(N!=="UTF8"&&N!=="SJIS")throw new T("ENCODING must be UTF8 or SJIS.",this.prev());p=N==="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(),u=!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(),u=!1}if(this.isSoftKeyword("COLUMNS")){if(l==="JSON")throw new T("COLUMNS is CSV-only.",this.peek());if(u)throw new T("COLUMNS requires NO HEADER.",this.peek());this.advance(),this.expect("("),d=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!==_e||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(N=>N.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 R="POSITION",E=!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(),!u)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(R="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(),E=!0}}let m,y;if(this.isSoftKeyword("MATCH")){this.advance();for(let N of["RECORD","NUMBER","SOURCE"]){if(!this.isSoftKeyword(N))throw new T("MATCH must be followed by RECORD NUMBER SOURCE <header>.",this.peek());this.advance()}y=this.parseIdentifier()}this.peek().kind==="ON"&&this.peekAt(1).kind==="DUPLICATE"&&(m=this.parseOnDuplicate());let g;if(this.peek().kind==="REPLACE"||this.isSoftKeyword("REPLACE")){if(this.advance(),!this.isSoftKeyword("SUBTABLES"))throw new T("REPLACE must be followed by SUBTABLES (...).",this.peek());if(this.advance(),this.expect("("),g=this.parseIdentList(),this.expect(")"),new Set(g).size!==g.length)throw new T("REPLACE SUBTABLES contains duplicates.",this.prev())}let S=o.filter(N=>N.kind==="SUBTABLE");if(S.length){if(f)throw new T("IMPORT subtables cannot use SELECT projection.",this.prev());if(l==="JSON"){if(S.some(N=>N.rowIdSourceHeader))throw new T("JSON subtable IMPORT does not accept ROW ID SOURCE.",this.prev());if(g)throw new T("REPLACE SUBTABLES is CSV-only; JSON uses nested-array replacement semantics.",this.prev())}else{if(t!=="UPDATE_RECORD_NUMBER"||!y)throw new T("CSV subtable IMPORT requires IMPORT UPDATE and MATCH RECORD NUMBER SOURCE.",this.prev());if(R!=="BY_NAME")throw new T("CSV subtable IMPORT requires BY NAME.",this.prev());if(!g)throw new T("CSV subtable IMPORT requires REPLACE SUBTABLES (...).",this.prev());let N=new Set(g);for(let U of S){if(!U.rowIdSourceHeader)throw new T(`CSV subtable ${U.subtableCode} requires ROW ID SOURCE <header>.`,this.prev());if(!N.has(U.subtableCode))throw new T(`IMPORT declares child columns for non-replaced subtable ${U.subtableCode}.`,this.prev())}for(let U of N)if(!S.some(P=>P.subtableCode===U))throw new T(`REPLACE SUBTABLES target ${U} is not declared in INTO.`,this.prev())}}else if(g)throw new T("REPLACE SUBTABLES requires subtable targets in INTO.",this.prev());if(t){if(l!=="CSV")throw new T("IMPORT UPDATE supports CSV only.",this.prev());if(R!=="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 h=this.parseCheckGroups(),I=this.parseDmlControlSuffix();return{type:"IMPORT",appId:r,fields:a,targets:o,source:l==="JSON"?{kind:"JSON",sourceName:c}:{kind:"CSV",sourceName:c,encoding:p,hasHeader:u,mappingMode:R,ignoreUnknownColumns:E,...d?{columns:d}:{},...f?{projection:f}:{}},...t?{writeMode:t,recordNumberSourceHeader:y}:{},...g?{replaceSubtables:g}:{},...m?{keyFields:m}:{},...h,...I}}validateImportProjectionScope(t,n){if(Array.isArray(t)){t.forEach(i=>this.validateImportProjectionScope(i,n));return}if(t===null||typeof t!="object")return;let r=t;if(r.type==="SCALAR_SUBQUERY"||r.type==="SCALAR_SUBQUERY_COL")throw new T("IMPORT projection cannot use subqueries.",n);if(typeof r.tableAlias=="string")throw new T("IMPORT projection cannot use qualified column references.",n);Object.values(r).forEach(i=>this.validateImportProjectionScope(i,n))}parseValidate(){let t=this.advance(),n=this.parseIdentifier(),{appId:r,subtableCode:i}=Pt(n,this.prev());if(i)throw new T(`VALIDATE APP${r}$${i} \u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002VALIDATE APP${r} (${i}) \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044`,this.prev());let o;if(this.consume("(")){o=[];do{let u=this.parseIdentifier();if(this.consume("(")){let d=this.peek().kind===")"?[]:this.parseIdentList();this.expect(")"),o.push({kind:"SUBTABLE",subtableCode:u,children:d})}else o.push({kind:"FIELD",field:u})}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(),c;if(this.consume("INTO")){let u=this.peek();if(u.kind!=="IDENT"||!u.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",u);c=this.parseTableName()}let p={type:"VALIDATE",appId:r,targets:o,...a?{summary:a}:{},where:s,...l,...c?{errorTable:c}:{}};return this.assertValidateExpressions(p,t),p}assertValidateExpressions(t,n){let r=i=>{if(Array.isArray(i)){i.forEach(r);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",n);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",n);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",n);Object.values(o).forEach(r)};r(t.where),r(t.checkGroups)}parseAssert(){this.expect("ASSERT");let t=this.pos,n=this.parseAssertOperand(),r=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:n,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",r);let o=this.parseAssertOperand();return this.rejectAssertCompound(),{type:"ASSERT",left:n,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 n=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(!n.columns.some(i=>i.type==="WILDCARD"||i.type==="PARENT_WILDCARD")&&n.columns.length>1)throw new T("scalar subquery in ASSERT must return exactly 1 column.",t);return{type:"SCALAR_SUBQUERY",query:n}}if(t.kind==="NUMBER"||t.kind==="("||t.kind==="-"){let n=this.parseArithAddSub();return this.rejectNonLiteralArith(n,t),n.type==="NUMBER",n}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,n){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}`,n);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",n);t.type==="ARITH"&&(this.rejectNonLiteralArith(t.left,n),this.rejectNonLiteralArith(t.right,n))}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,n){let r="";for(let i=t;i<n;i++){let o=this.tokens[i],a;o.kind==="STRING"?a=`'${o.value.replace(/'/g,"''")}'`:o.kind==="BIDENT"?a=`\`${o.value}\``:a=o.value,r.length>0&&Rh(this.tokens[i-1],o)&&(r+=" "),r+=a}return r}parseSelect(t=!1){this.expect("SELECT");let n=this.consume("DISTINCT"),r=this.parseSelectColumns(),i=this.consume("FROM"),o=i?this.parseTableRef():{appId:0,alias:null,cteName:_e},a=i?this.parseJoins():[],s=this.consume("WHERE")?this.parseWhereExpr(void 0,!0):null,l=[],c,p=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()?c=this.parseGroupingSetsClause():this.isRollupStart()?c=this.parseRollupClause():this.isCubeStart()?c=this.parseCubeClause():l=this.parseGroupByKeys(),c&&this.peek().kind===",")throw new T("B65: ordinary GROUP BY items cannot be mixed with grouping elements.",this.peek());this.consume("HAVING")&&(p=this.parseWhereExpr("HAVING"))}let u="CANONICAL",d=[];if(this.consume("ORDER"))this.expect("BY"),d=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());u="KINTONE_NATIVE",this.expect("BY"),d=this.parseOrderBy()}let f=this.consume("LIMIT")?this.parseUnsignedInt():null,R=this.consume("OFFSET")?this.parseUnsignedInt():null,E=r.some(y=>y.type==="WINDOW_COL"),m=r.some(y=>this.selectColumnHasAggregate(y));if(E&&(l.length>0||c!==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(c&&u==="KINTONE_NATIVE")throw new T("B65: KORDER BY cannot be combined with grouping sets in Phase1.",this.peek());return this.validateAggregateGroupKeyRefs(r,p,l,c),{type:"SELECT",distinct:n,columns:r,from:o,joins:a,where:s,groupBy:l,...c?{grouping:c}:{},having:p,orderMode:u,orderBy:d,limit:f,offset:R}}parseWith(){this.expect("WITH");let t=this.isSoftKeyword("RECURSIVE")&&this.peekAt(1).kind!=="AS"&&this.peekAt(1).kind!=="(";t&&this.advance();let n=[],r=0;try{do{let o=this.parseIdentifier(),a=this.parseOptionalCteColumnAliases();this.expect("AS"),this.expect("("),this.activeCteDefinition={name:o,recursiveWith:t,phase:"SEED"};let s,l,c=this.peek().kind;if(c==="SHOW")s=this.parseShow();else if(c==="DESCRIBE"||c==="DESC")s=this.parseDescribe();else if(c==="IDENT"&&this.peek().value.toUpperCase()==="GENERATE_SERIES")s=this.parseGenerateSeries();else if(t){let d=this.parseRecursiveCteCandidate(o);s=d.query,l=d.recursiveSpec}else s=this.tryParseUnionChain(this.parseSelect());this.expect(")");let p=t&&this.isSoftKeyword("CYCLE")?this.parseRecursiveCycleClause():null;if(p&&!l)throw new T("CYCLE \u53E5\u306F\u81EA\u5DF1\u53C2\u7167\u3059\u308B\u518D\u5E30 CTE \u306B\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059",this.prev());if(l&&(l={...l,cycle:p},this.validateRecursiveCte(o,a,l),r++,r>1))throw new T("WITH RECURSIVE \u3067\u5B9A\u7FA9\u3067\u304D\u308B\u518D\u5E30 CTE \u306F1\u500B\u307E\u3067\u3067\u3059",this.prev());if(a&&!l)throw new T("CTE \u306E\u5217\u540D\u30EA\u30B9\u30C8\u306F WITH RECURSIVE \u306E\u518D\u5E30 CTE \u306B\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059",this.prev());let u={name:o,query:s};a&&(u.columnAliases=a),l&&(u.recursiveSpec=l),n.push(u),this.activeCteDefinition=null,this.provisionalRecursiveCte=null,this.cteNames.add(o)}while(this.consume(","));let i=this.tryParseUnionChain(this.parseSelect());return t?{type:"WITH",ctes:n,query:i,recursive:!0}:{type:"WITH",ctes:n,query:i}}finally{this.activeCteDefinition=null,this.provisionalRecursiveCte=null,this.cteNames.clear()}}parseOptionalCteColumnAliases(){if(!this.consume("("))return;let t=[];if(this.peek().kind===")")throw new T("CTE \u306E\u5217\u540D\u30EA\u30B9\u30C8\u306B\u306F1\u500B\u4EE5\u4E0A\u306E\u5217\u540D\u304C\u5FC5\u8981\u3067\u3059",this.peek());do t.push(this.parseIdentifier());while(this.consume(","));if(this.expect(")"),new Set(t).size!==t.length)throw new T("CTE \u306E\u5217\u540D\u30EA\u30B9\u30C8\u306B\u540C\u3058\u5217\u540D\u3092\u91CD\u8907\u3057\u3066\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.prev());return t}parseRecursiveCteCandidate(t){let n=this.parseSelect();if(this.peek().kind!=="UNION")return{query:n};this.advance();let r=this.consume("ALL");this.activeCteDefinition={name:t,recursiveWith:!0,phase:"RECURSIVE_TERM"},this.provisionalRecursiveCte={name:t,references:0};let i=this.parseSelect(),o=this.provisionalRecursiveCte.references;this.provisionalRecursiveCte=null;let a={type:"UNION",all:r,left:n,right:i};if(a=this.tryParseUnionChain(a),this.activeCteDefinition={name:t,recursiveWith:!0,phase:"SEED"},o===0)return{query:a};if(!r||a.type!=="UNION"||a.left!==n||a.right!==i)throw new T("\u518D\u5E30 CTE \u306F seed SELECT UNION ALL recursive SELECT \u306E2\u5206\u5C90\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.prev());if(o!==1)throw new T("\u518D\u5E30\u9805\u304B\u3089\u306E\u81EA\u5DF1\u53C2\u7167\u306F\u3061\u3087\u3046\u30691\u56DE\u306B\u3057\u3066\u304F\u3060\u3055\u3044",this.prev());return{query:a,recursiveSpec:{seed:n,recursiveTerm:i,unionAll:!0,cycle:null}}}parseRecursiveCycleClause(){this.advance();let t=this.parseIdentifier();this.expect("SET","CYCLE \u306E\u5217\u540D\u306E\u5F8C\u306B\u306F SET \u304C\u5FC5\u8981\u3067\u3059");let n=this.parseIdentifier();if(!this.isSoftKeyword("TO"))throw new T("CYCLE \u306E mark \u5217\u306E\u5F8C\u306B\u306F TO \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance();let r=this.expect("STRING","CYCLE TO \u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");if(!this.isSoftKeyword("DEFAULT"))throw new T("CYCLE TO \u306E\u5024\u306E\u5F8C\u306B\u306F DEFAULT \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance();let i=this.expect("STRING","CYCLE DEFAULT \u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");if(r.value===i.value)throw new T("CYCLE \u306E TO \u3068 DEFAULT \u306B\u306F\u7570\u306A\u308B\u6587\u5B57\u5217\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",i);return{column:t,markColumn:n,markValue:r.value,defaultValue:i.value,exposePath:!1}}validateRecursiveCte(t,n,r){let i=this.prev(),o=r.seed,a=r.recursiveTerm,{groupBy:s}=a;if(o.columns.length!==a.columns.length)throw new T("\u518D\u5E30 CTE \u306E seed \u3068\u518D\u5E30\u9805\u306E\u5217\u6570\u3092\u4E00\u81F4\u3055\u305B\u3066\u304F\u3060\u3055\u3044",i);if(n&&n.length!==o.columns.length)throw new T("CTE \u306E\u5217\u540D\u30EA\u30B9\u30C8\u3068 SELECT \u306E\u5217\u6570\u3092\u4E00\u81F4\u3055\u305B\u3066\u304F\u3060\u3055\u3044",i);if(o.columns.some(p=>p.type==="WILDCARD"||p.type==="PARENT_WILDCARD")||a.columns.some(p=>p.type==="WILDCARD"||p.type==="PARENT_WILDCARD"))throw new T("\u518D\u5E30 CTE \u306E seed \u3068\u518D\u5E30\u9805\u3067\u306F\u5217\u3092\u660E\u793A\u7684\u306B\u5C04\u5F71\u3057\u3066\u304F\u3060\u3055\u3044",i);if(a.distinct||s.length>0||a.grouping!==void 0||a.having!==null||a.orderBy.length>0||a.orderMode!=="CANONICAL"||a.limit!==null||a.offset!==null)throw new T("\u518D\u5E30\u9805\u3067\u306F DISTINCT\u3001\u96C6\u8A08\u3001window\u3001GROUP BY\u3001HAVING\u3001ORDER BY\u3001LIMIT\u3001OFFSET \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",i);if(a.joins.length!==1||a.joins[0].type!=="INNER")throw new T("\u518D\u5E30\u9805\u306F\u81EA\u5DF1\u53C2\u7167\u3068\u7269\u7406 source \u307E\u305F\u306F\u5148\u884C CTE \u306E INNER JOIN 1\u500B\u3067\u69CB\u6210\u3057\u3066\u304F\u3060\u3055\u3044",i);if([a.from.cteName,a.joins[0].table.cteName].filter(p=>p===t).length!==1)throw new T("\u518D\u5E30\u9805\u306E INNER JOIN \u306B\u306F\u81EA\u5DF1\u53C2\u7167\u3092\u3061\u3087\u3046\u30691\u56DE\u542B\u3081\u3066\u304F\u3060\u3055\u3044",i);if(this.containsRecursiveForbiddenNode(a.columns)||this.containsRecursiveForbiddenNode(a.where))throw new T("\u518D\u5E30\u9805\u3067\u306F\u96C6\u8A08\u3001window\u3001DISTINCT\u3001subquery \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",i);let c=n??o.columns.map(p=>this.selectColumnOutputName(p));if(r.cycle){if(c.filter(u=>u===r.cycle.column).length!==1)throw new T("CYCLE \u5217\u306F\u518D\u5E30 CTE \u306E\u51FA\u529B\u52171\u500B\u3078\u4E00\u610F\u306B\u89E3\u6C7A\u3067\u304D\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059",i);if(c.includes(r.cycle.markColumn))throw new T("CYCLE \u306E mark \u5217\u306F\u518D\u5E30 CTE \u306E\u65E2\u5B58\u51FA\u529B\u5217\u3068\u540C\u540D\u306B\u3067\u304D\u307E\u305B\u3093",i)}}containsRecursiveForbiddenNode(t){if(Array.isArray(t))return t.some(r=>this.containsRecursiveForbiddenNode(r));if(t===null||typeof t!="object")return!1;let n=t;return n.type==="AGGREGATE"||n.type==="AGG_REF"||n.type==="ARITH_AGG_COL"||n.type==="WINDOW_COL"||n.type==="SCALAR_SUBQUERY"||n.type==="SCALAR_SUBQUERY_COL"||n.type==="SUBQUERY_IN_LIST"||n.type==="EXISTS"?!0:Object.values(n).some(r=>this.containsRecursiveForbiddenNode(r))}selectColumnOutputName(t){return"alias"in t&&typeof t.alias=="string"?t.alias:t.type==="FIELD"?t.field:null}parseGenerateSeries(){let t=this.advance();if(t.kind!=="IDENT"||t.value.toUpperCase()!=="GENERATE_SERIES")throw new T("GENERATE_SERIES \u304C\u5FC5\u8981\u3067\u3059",t);this.expect("(");let n=[];if(this.peek().kind!==")")do{let i=this.peek();if(i.kind==="STRING"){this.advance(),n.push({type:"STRING",value:i.value});continue}if(i.kind==="VARIABLE"){this.advance(),n.push({type:"VARIABLE",name:i.value.slice(1).toLowerCase()});continue}let o="";(i.kind==="+"||i.kind==="-")&&(o=i.kind==="-"?"-":"+",this.advance());let a=this.peek();if(a.kind!=="NUMBER")throw new T("GENERATE_SERIES \u306E\u5F15\u6570\u306B\u306F\u6570\u5024\u3001\u6587\u5B57\u5217\u3001\u307E\u305F\u306F\u30D0\u30C3\u30C1\u5909\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",a);this.advance(),n.push(Se(`${o}${a.value}`))}while(this.consume(","));this.expect(")");let r=this.consume("AS")?this.parseIdentifier():"generate_series";return{type:"GENERATE_SERIES",args:n,columnAlias: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 n=this.consume("ALL"),r=this.parseSelect(),i={type:"UNION",all:n,left:t,right:r};return this.tryParseUnionChain(i)}parseSelectColumns(){let t=[];do t.push(this.parseSelectColumn());while(this.consume(","));return t}parseSelectArith(t){let n=this.allowSelectArithVariable;this.allowSelectArithVariable=!0;try{return t()}finally{this.allowSelectArithVariable=n}}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 a=this.parseGroupingRef(),s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"GROUPING_COL",ref:a,alias:s?.alias??null},s)}let t=this.tryValueWindowFunc();if(t!==null)return this.parseValueWindowColumn(t);if(this.tryAggregateFunc()===null&&this.hasNestedAggregateWindowInSelectColumn())throw new T(ml,this.peek());if(this.isNonAggregateArithmeticStartWithAggregate())throw new T(`\u96C6\u8A08\u7B97\u8853\u5F0F\u306F\u96C6\u8A08\u95A2\u6570\u304B\u3089\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08${this.peek().value}\uFF09\u3002`,this.peek());if(this.tryAggregateFunc()===null&&this.hasTopLevelTokenBeforeValueEnd("||")){let a=this.parseScalarValueExpr({allowAggregateArgs:!0}),s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"SCALAR_VALUE_COL",expr:a,alias:s?.alias??null},s)}if(this.peek().kind==="VARIABLE"){let a=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());let s=this.parseAliasName();return this.withAliasDisplay({type:"VARIABLE_COL",name:a.value.slice(1).toLowerCase(),alias:s.alias},s)}let n=this.tryWindowFunc();if(n!==null)return this.parseWindowColumn(n);if(this.peek().kind==="CASE"){let a=this.parseCaseWhenExpr(!0),s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"CASE_COL",expr:a,alias:s?.alias??null},s)}if(this.peek().kind==="IF"){let a=this.parseIfExpr(!0),s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"CASE_COL",expr:a,alias:s?.alias??null},s)}if(this.tryStringFuncName()!==null){let a=this.parseStringFuncExpr();if(this.isArithOp(this.peek().kind)){let l=this.parseSelectArith(()=>this.continueArith(a)),c=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"ARITH_COL",expr:l,alias:c?.alias??null},c)}let s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"STRFUNC_COL",expr:a,alias:s?.alias??null},s)}let r=this.tryAggregateFunc();if(r!==null){let a=this.parseAggregateRef(r);if(this.isSoftKeyword("OVER"))return this.parseAggregateWindowColumn(a);if(this.isArithOp(this.peek().kind)){let l=this.continueAggArith(a),c=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"ARITH_AGG_COL",expr:l,alias:c?.alias??null},c)}let s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"AGGREGATE",func:a.func,distinct:a.distinct,arg:a.arg,...a.separator!==void 0?{separator:a.separator}:{},alias:s?.alias??null},s)}if(this.peek().kind==="("&&this.peekAt(1).kind==="SELECT"){this.advance();let a=this.parseSelect();this.expect(")");let s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"SCALAR_SUBQUERY_COL",query:a,alias:s?.alias??null},s)}if(this.peek().kind==="STRING"){let a=this.expect("STRING").value,s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"LITERAL_COL",value:a,alias:s?.alias??null},s)}if(this.peek().kind==="("||this.peek().kind==="NUMBER"){let a=this.parseSelectArith(()=>this.parseArithAddSub()),s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"ARITH_COL",expr:a,alias:s?.alias??null},s)}let i=this.parseColumnFieldRef();if(i==="_p.*")return{type:"PARENT_WILDCARD"};if(i==="_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 a={type:"FIELD_REF",field:i},s=this.parseSelectArith(()=>this.continueArith(a)),l=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"ARITH_COL",expr:s,alias:l?.alias??null},l)}let o=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"FIELD",field:i,alias:o?.alias??null},o)}tryWindowFunc(){return _d[this.peek().kind]??null}tryValueWindowFunc(t=this.pos){let n=this.tokens[t];if(n?.kind!=="IDENT"||this.tokens[t+1]?.kind!=="(")return null;let r=n.value.toUpperCase();if(r!=="LAG"&&r!=="LEAD")return null;let i=0;for(let o=t+1;o<this.tokens.length;o++){let a=this.tokens[o];if(a.kind==="(")i++;else if(a.kind===")"&&--i===0){let s=this.tokens[o+1];return s?.kind==="IDENT"&&s.value.toUpperCase()==="OVER"?r:null}}return null}hasNestedAggregateWindowInSelectColumn(){let t=0;for(let n=this.pos;n<this.tokens.length;n++){let r=this.tokens[n];if(t===0&&(r.kind===","||r.kind==="FROM"||r.kind===";"||r.kind==="EOF"))return!1;if($r[r.kind]!==void 0&&this.tokens[n+1]?.kind==="("){let i=0;for(let o=n+1;o<this.tokens.length;o++){let a=this.tokens[o];if(a.kind==="(")i++;else if(a.kind===")"&&--i===0){let s=this.tokens[o+1];if(s?.kind==="IDENT"&&s.value.toUpperCase()==="OVER")return!0;break}}}if(this.tryValueWindowFunc(n)!==null)return!0;r.kind==="("?t++:r.kind===")"&&t--}return!1}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 n=[];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();n.push({type:"FIELD",tableAlias:o.tableAlias,field:o.field})}while(this.consume(","))}let r=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 this.withAliasDisplay({type:"WINDOW_COL",func:t,partitionBy:n,orderBy:r,alias:i.alias},i)}parseValueWindowColumn(t){this.advance(),this.expect("(");let n=this.parseScalarValueExpr({allowCase:!0,allowAggregateArgs:!1}),r=1;if(this.consume(",")){let s=this.expect("NUMBER",`${t} \u306E offset \u306F\u975E\u8CA0\u306E\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u3060\u3051\u3067\u3059`);if(r=Number(s.value),!Number.isSafeInteger(r)||r<0)throw new T(`${t} \u306E offset \u306F\u975E\u8CA0\u306E safe integer \u30EA\u30C6\u30E9\u30EB\u3060\u3051\u3067\u3059`,s)}this.expect(")",`${t} \u306F expr \u3068\u7701\u7565\u53EF\u80FD\u306A offset \u306E 2 \u5F15\u6570\u307E\u3067\u3067\u3059`),this.expectSoftKeyword("OVER",`${t} \u306B\u306F OVER (...) \u304C\u5FC5\u8981\u3067\u3059`),this.expect("(");let i=[];if(this.isSoftKeyword("PARTITION")){this.advance(),this.expect("BY","PARTITION \u306E\u5F8C\u306B\u306F BY \u304C\u5FC5\u8981\u3067\u3059");do{let s=this.parseQualifiedIdent();i.push({type:"FIELD",tableAlias:s.tableAlias,field:s.field})}while(this.consume(","))}if(!this.consume("ORDER"))throw new T(`${t} \u306E OVER \u306B\u306F ORDER BY \u304C\u5FC5\u8981\u3067\u3059`,this.peek());this.expect("BY");let o=this.parseOrderBy(!1);if(this.expect(")"),this.isArithOp(this.peek().kind)||this.peek().kind==="||")throw new T(ml,this.peek());if(!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 a=this.parseAliasName();return this.withAliasDisplay({type:"WINDOW_COL",windowKind:"VALUE",valueFunc:t,arg:n,offset:r,partitionBy:i,orderBy:o,alias:a.alias},a)}parseAggregateWindowColumn(t){if(!new Set(["SUM","COUNT","AVG","MIN","MAX"]).has(t.func))throw new T(`${t.func} \u306E\u30A6\u30A3\u30F3\u30C9\u30A6\u96C6\u8A08\u306F\u672A\u5BFE\u5FDC\u3067\u3059\u3002\u5BFE\u5FDC\u306F SUM / COUNT / AVG / MIN / MAX \u3067\u3059`,this.peek());if(t.distinct)throw new T("\u30A6\u30A3\u30F3\u30C9\u30A6\u96C6\u8A08\u3067\u306F\u5F15\u6570\u306E DISTINCT \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());this.advance(),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 s=this.parseQualifiedIdent();r.push({type:"FIELD",tableAlias:s.tableAlias,field:s.field})}while(this.consume(","))}let i=this.consume("ORDER")?(this.expect("BY"),this.parseOrderBy(!1)):[],o=i.length>0?{unit:"RANGE",source:"DEFAULT"}:null;if(this.isSoftKeyword("ROWS")||this.isSoftKeyword("RANGE")){if(i.length===0)throw new T("\u30D5\u30EC\u30FC\u30E0\u53E5\u306B\u306F OVER (ORDER BY ...) \u304C\u5FC5\u8981\u3067\u3059",this.peek());let s=this.advance().value.toUpperCase();if(!(this.consume("BETWEEN")&&this.consumeSoftKeyword("UNBOUNDED")&&this.consumeSoftKeyword("PRECEDING")&&this.consume("AND")&&this.consumeSoftKeyword("CURRENT")&&this.consumeSoftKeyword("ROW")))throw new T("\u5BFE\u5FDC\u3059\u308B\u30D5\u30EC\u30FC\u30E0\u306F BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW \u3060\u3051\u3067\u3059",this.peek());o={unit:s,source:"EXPLICIT"}}if(this.expect(")"),this.isArithOp(this.peek().kind))throw new T(ml,this.peek());if(!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 a=this.parseAliasName();return this.withAliasDisplay({type:"WINDOW_COL",windowKind:"AGGREGATE",aggFunc:t.func,arg:t.arg,frame:o,partitionBy:r,orderBy:i,alias:a.alias},a)}selectColumnHasAggregate(t){return t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"?!0:t.type==="STRFUNC_COL"?t.expr.args.some(n=>this.stringFuncArgHasAggregate(n)):t.type==="SCALAR_VALUE_COL"?this.scalarValueHasAggregate(t.expr):t.type==="CASE_COL"?this.nodeHasAggregate(t.expr):!1}nodeHasAggregate(t){if(t===null||typeof t!="object")return!1;if(Array.isArray(t))return t.some(r=>this.nodeHasAggregate(r));let n=t;return n.type==="AGG_REF"||n.type==="AGG_ARITH"?!0:n.type==="SELECT"||n.type==="SCALAR_SUBQUERY"?!1:Object.values(n).some(r=>this.nodeHasAggregate(r))}stringFuncArgHasAggregate(t){return t.type==="AGG_REF"||t.type==="AGG_ARITH"?!0:t.type==="AGG_GROUP_KEY"||t.type==="VARIABLE"?!1:this.scalarValueHasAggregate(t)}scalarValueHasAggregate(t){return t.type==="STRING_FUNC"?t.args.some(n=>this.stringFuncArgHasAggregate(n)):t.type==="SCALAR_ARITH"||t.type==="CONCAT_OP"?this.scalarValueHasAggregate(t.left)||this.scalarValueHasAggregate(t.right):t.type==="CASE_WHEN"?this.nodeHasAggregate(t):!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 n=this.parseArithOp();t={type:"AGG_ARITH",left:t,op:n,right:this.parseAggPrimary()}}return t}continueAggArithAddSub(t){for(;this.peek().kind==="+"||this.peek().kind==="-";){let n=this.parseArithOp();t={type:"AGG_ARITH",left:t,op:n,right:this.parseAggArithMulDiv()}}return t}parseAggArithMulDiv(){return this.continueAggArithMulDiv(this.parseAggPrimary())}parseAggPrimary(){if(this.consume("(")){let n=this.continueAggArith(this.parseAggPrimary());return this.expect(")"),n}if(this.peek().kind==="-"){this.advance();let n=this.parseAggPrimary();return n.type==="NUMBER"?Se(`-${z(n)}`):{type:"AGG_ARITH",left:Se("0"),op:"-",right:n}}if(this.peek().kind==="NUMBER"){let n=this.advance();return Se(n.value)}if(this.peek().kind==="VARIABLE")return{type:"VARIABLE",name:this.advance().value.slice(1).toLowerCase()};let t=this.tryAggregateFunc();if(t!==null){let n=this.parseAggregateRef(t);return this.rejectAggregateWindowOutsideSelect(),n}if(this.peek().kind==="IDENT"||this.peek().kind==="BIDENT"){let n=this.peek(),r=this.parseQualifiedIdent(),i={type:"AGG_GROUP_KEY",field:r.field,...r.tableAlias?{tableAlias:r.tableAlias}:{}};return this.aggregateGroupKeyTokens.set(i,n),i}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())}isNonAggregateArithmeticStartWithAggregate(){let t=this.peek();if(this.tryAggregateFunc()!==null||t.kind==="CASE"||t.kind==="IF"||this.isGroupingFunctionStart()||this.tryStringFuncName()!==null||!["IDENT","BIDENT","VARIABLE","("].includes(t.kind))return!1;let n=0,r=!1;for(let i=this.pos;i<this.tokens.length;i++){let o=this.tokens[i];if(n===0&&i>this.pos&&(o.kind===","||o.kind==="AS"||o.kind==="FROM"||o.kind===";"||o.kind==="EOF"||o.kind==="="||o.kind==="!="||o.kind==="<>"||o.kind===">"||o.kind==="<"||o.kind===">="||o.kind==="<="||o.kind==="AND"||o.kind==="OR"))break;if(this.isArithOp(o.kind)&&(r=!0),$r[o.kind]!==void 0&&this.tokens[i+1]?.kind==="(")return r;if(o.kind==="(")n++;else if(o.kind===")"&&(n--,n<0))break}return!1}validateAggregateGroupKeyRefs(t,n,r,i){let o=[],a=p=>{if(Array.isArray(p)){p.forEach(a);return}if(p===null||typeof p!="object")return;let u=p;if(!(u.type==="SELECT"||u.type==="SCALAR_SUBQUERY")){if(u.type==="AGG_GROUP_KEY"){o.push(p);return}Object.values(u).forEach(a)}};if(a(t),a(n),o.length===0)return;let s=o[0],l=this.aggregateGroupKeyTokens.get(s)??this.peek();if(i!==void 0)throw new T("ROLLUP / CUBE / GROUPING SETS \u3067\u306F\u96C6\u8A08\u7B97\u8853\u5F0F\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u66F8\u3051\u307E\u305B\u3093\uFF08\u5C0F\u8A08\u30FB\u7DCF\u8A08\u884C\u3067\u5024\u304C\u5B9A\u307E\u3089\u306A\u3044\u305F\u3081\u3067\u3059\uFF09\u3002",l);if(r.length===0)throw new T(`\u96C6\u8A08\u7B97\u8853\u5F0F\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u66F8\u304F\u306B\u306F GROUP BY \u304C\u5FC5\u8981\u3067\u3059\uFF08${this.aggregateGroupKeyDisplay(s)}\uFF09\u3002`,l);let c=new Set(r.filter(p=>p.type==="FIELD_NAME").map(p=>p.name));for(let p of o){let u=this.aggregateGroupKeyDisplay(p);if(!c.has(u))throw new T(`\u96C6\u8A08\u7B97\u8853\u5F0F\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306F GROUP BY \u306B\u66F8\u3044\u305F\u8868\u8A18\u3068\u4E00\u81F4\u3059\u308B\u5217\u3060\u3051\u3067\u3059\uFF08${u}\uFF09\u3002\u30B0\u30EB\u30FC\u30D7\u5185\u3067\u5024\u304C\u5B9A\u307E\u3089\u306A\u3044\u305F\u3081\u3067\u3059\u3002`,this.aggregateGroupKeyTokens.get(p)??l)}}aggregateGroupKeyDisplay(t){return t.tableAlias?`${t.tableAlias}.${t.field}`:t.field}parseScalarValueExpr(t={}){let n=this.scalarAllowsAggregateArgs,r=this.scalarAllowsCase;this.scalarAllowsAggregateArgs=t.allowAggregateArgs===!0,this.scalarAllowsCase=t.allowCase!==!1;let i;try{i=this.parseScalarAddSubConcat(this.scalarAllowsCase)}finally{this.scalarAllowsAggregateArgs=n,this.scalarAllowsCase=r}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 n=this.parseScalarMulDiv(t);for(;this.peek().kind==="+"||this.peek().kind==="-"||this.peek().kind==="||";){let r=this.advance(),i=this.parseScalarMulDiv(t);n=r.kind==="||"?{type:"CONCAT_OP",left:n,right:i}:{type:"SCALAR_ARITH",left:n,op:r.kind==="+"?"+":"-",right:i}}return n}parseScalarMulDiv(t){let n=this.parseScalarPrimary(t);for(;this.peek().kind==="*"||this.peek().kind==="/"||this.peek().kind==="%";){let r=this.advance(),i=r.kind==="*"?"*":r.kind==="/"?"/":"%";n={type:"SCALAR_ARITH",left:n,op:i,right:this.parseScalarPrimary(t)}}return n}parseScalarPrimary(t){let n=this.peek();if(n.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",n);this.advance();let r=this.parseScalarAddSubConcat(t);return this.expect(")"),r}if(n.kind==="+"||n.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.parseScalarPrimary(t);if(r.type==="NUMBER")return Se(`${n.kind==="-"?"-":"+"}${z(r)}`);if(n.kind==="+")throw new T("\u5358\u9805 + \u306E\u76F4\u5F8C\u306B\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059",n);return{type:"SCALAR_ARITH",left:Se("0"),op:"-",right:r}}if(n.kind==="STRING")return this.advance(),{type:"STRING",value:n.value};if(n.kind==="NUMBER")return this.advance(),Se(n.value);if(n.kind==="VARIABLE")return this.advance(),{type:"VARIABLE",name:n.value.slice(1).toLowerCase()};if(n.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",n);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",n);if(this.tryStringFuncName()!==null)return this.parseStringFuncExpr();if(n.kind==="IDENT"||n.kind==="BIDENT")return this.advance(),this.consume(".")?{type:"FIELD",tableAlias:n.value,field:this.parseIdentifier()}:{type:"FIELD",tableAlias:null,field:n.value};throw new T("\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306E\u30AA\u30DA\u30E9\u30F3\u30C9\u304C\u5FC5\u8981\u3067\u3059",n)}hasTopLevelTokenBeforeValueEnd(t){let n=0;for(let r=this.pos;r<this.tokens.length;r++){let i=this.tokens[r].kind;if(i==="("||i==="[")n++;else if(i===")"||i==="]"){if(n===0)break;n--}if(i===t)return!0;if(n===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 n=this.parseArithOp(),r=this.parseArithPrimary();t={type:"ARITH",left:t,op:n,right:r}}return t}continueArithAddSub(t){for(;this.peek().kind==="+"||this.peek().kind==="-";){let n=this.parseArithOp(),r=this.parseArithMulDiv();t={type:"ARITH",left:t,op:n,right:r}}return t}parseArithPrimary(){if(this.consume("(")){let n=this.parseArithAddSub();return this.expect(")"),n}if(this.allowUnaryPlusNumber&&this.peek().kind==="+"){this.advance();let n=this.expect("NUMBER","\u5358\u9805 + \u306E\u76F4\u5F8C\u306B\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");return Se(`+${n.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 n=this.parseArithPrimary();return n.type==="NUMBER"?Se(`-${z(n)}`):{type:"ARITH",left:Se("0"),op:"-",right:n}}if(this.tryStringFuncName()!==null)return this.parseStringFuncExpr();let t=this.peek();if(t.kind==="NUMBER")return this.advance(),Se(t.value);if(this.allowSelectArithVariable&&t.kind==="VARIABLE")return this.advance(),{type:"VARIABLE",name:t.value.slice(1).toLowerCase()};if(t.kind==="IDENT"||t.kind==="BIDENT"){this.advance();let n=t.value;if(this.peek().kind==="."){this.advance();let r=this.advance();n=`${n}.${r.value}`}return{type:"FIELD_REF",field:n}}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 n=this.parseCaseCondition(t);this.expect(",");let r=this.parseCaseResult(t);this.expect(",");let i=this.parseCaseResult(t);return this.expect(")"),{type:"CASE_WHEN",branches:[{condition:n,result:r}],elseResult:i}}parseCaseWhenExpr(t=!1){this.expect("CASE");let n=[];for(;this.peek().kind==="WHEN";){this.advance();let i=this.parseCaseCondition(t);this.expect("THEN");let o=this.parseCaseResult(t);n.push({condition:i,result:o})}if(n.length===0)throw new T("CASE \u306E\u5F8C\u306B\u306F WHEN \u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",this.peek());let r=null;return this.consume("ELSE")&&(r=this.parseCaseResult(t)),this.expect("END"),{type:"CASE_WHEN",branches:n,elseResult:r}}parseCaseCondition(t){return t?this.parseWhereExpr("SELECT_CASE"):this.parseWhereExpr()}parseCaseResult(t=!1){let n=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",n);if(n.kind==="[")return this.parseArrayLiteral();let r=this.tryAggregateFunc();if(r!==null&&t){let i=this.parseAggregateRef(r);return this.rejectAggregateWindowOutsideSelect(),this.continueAggArith(i)}return this.hasTopLevelTokenBeforeValueEnd("||")?this.parseScalarValueExpr({allowAggregateArgs:!0}):n.kind==="STRING"?(this.advance(),{type:"STRING",value:n.value}):this.tryStringFuncName()!==null?this.parseStringFuncExpr():this.parseArithAddSub()}tryStringFuncName(){if(this.peekAt(1).kind==="("){let n=yl[this.peek().kind];if(n==="LEFT"||n==="RIGHT")return n}let t=yl[this.peek().kind]??null;if(t!==null&&t!=="LEFT"&&t!=="RIGHT")return t;if(this.peek().kind==="IDENT"){let n=this.peek(),r=n.value.toUpperCase();if(Ld.includes(r)&&this.peekAt(1).kind==="(")return r;if(this.peekAt(1).kind==="("){let i=r==="DATE_SUB"?"\u3002\u65E5\u4ED8\u3092\u6E1B\u7B97\u3059\u308B\u306B\u306F DATE_ADD \u306E\u52A0\u7B97\u5024\u3078\u8CA0\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044":"";throw new T(`\u300C${n.value}\u300D\u3068\u3044\u3046\u95A2\u6570\u306F\u3042\u308A\u307E\u305B\u3093${i}`,n)}}return null}parseStringFuncExpr(){let t=this.peek(),n=this.tryStringFuncName();try{return this.parseStringFuncExprBody()}catch(r){if(!(r instanceof T))throw r;let i=t.value.toUpperCase(),o=n==="DATE_ADD"?`${i} \u306E\u69CB\u6587\u306F DATE_ADD(\u5217, n, '\u5358\u4F4D') \u3067\u3059\u3002`:`${i} \u306E\u5F15\u6570\u69CB\u6587\u304C\u4E0D\u6B63\u3067\u3059\u3002`;throw new T(`${o}${r.rawMessage}`,r.token)}}parseStringFuncExprBody(){let t=this.peek().kind,n=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 r=[];if(this.peek().kind!==")")do r.push(this.parseStringFuncArg());while(this.consume(","));return this.expect(")"),{type:"STRING_FUNC",func:n,args:r}}parseCastType(){let t=this.peek(),n;if(t.kind==="IDENT"||t.kind==="BIDENT")this.advance(),n=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 r=mh(n);if(r===null)throw new T(`\u4E0D\u660E\u306A\u30AD\u30E3\u30B9\u30C8\u578B\u300C${n}\u300D\u3002TEXT \u307E\u305F\u306F NUMBER \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,t);return{type:"STRING",value:r}}parseStringFuncArg(){if(this.scalarAllowsAggregateArgs){let t=this.pos;try{let n=this.parseAggPrimary(),r=this.continueAggArith(n);if(this.hasAggregateOperand(r))return r}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 $r[this.peek().kind]??null}parseAggregateRef(t){this.advance(),this.expect("(");let n=this.consume("DISTINCT"),r=n?this.prev():null;if(t==="MODE"&&r)throw new T("MODE \u3067\u306F DISTINCT \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);let i;if(this.consume("*")){if(!sh(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:n,arg:i,...o!==void 0?{separator:o}:{}}}isAggregateArgEnd(){return this.peek().kind===")"||this.isSoftKeyword("SEPARATOR")}parseAggregateArgExpr(){let t=this.pos;try{let n=this.parseArithAddSub();if(this.isAggregateArgEnd())return n}catch{}this.pos=t,this.insideAggregateArg++;try{let n;try{n=this.parseScalarValueExpr({allowCase:!0,allowAggregateArgs:!1})}catch(r){if(r instanceof T){if(r.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)",r.token);if(r.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",r.token)}throw r}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(n),n}finally{this.insideAggregateArg--}}assertNoNestedAggregate(t){let n=r=>{if(r===null||typeof r!="object")return;let i=r;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))n(o)};n(t)}parseTableRef(){let t=this.peek();if(t.kind==="IDENT"&&t.value.toUpperCase()==="GENERATE_SERIES"&&this.peekAt(1).kind==="(")throw new T("GENERATE_SERIES \u306F WITH \u306E CTE \u672C\u4F53\u306B\u66F8\u3044\u3066\u304F\u3060\u3055\u3044\u3002\u4F8B: WITH s AS (GENERATE_SERIES(1, 5)) SELECT generate_series FROM s",t);let n=this.parseTableName();if(t.kind==="IDENT"&&n.startsWith("#"))return this.tempTableRefs.push(this.prev()),{appId:0,alias:this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias(),cteName:n};if(this.cteNames.has(n))return{appId:0,alias:this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias(),cteName:n};if(this.activeCteDefinition?.name===n){if(this.activeCteDefinition.recursiveWith&&this.activeCteDefinition.phase==="RECURSIVE_TERM"&&this.provisionalRecursiveCte?.name===n)return this.provisionalRecursiveCte.references++,{appId:0,alias:this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias(),cteName:n};let s=this.activeCteDefinition.recursiveWith?this.activeCteDefinition.phase==="RECURSIVE_TERM"?"\u518D\u5E30 CTE \u306F seed SELECT UNION ALL recursive SELECT \u306E2\u5206\u5C90\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044":"\u518D\u5E30 CTE \u306E seed \u304B\u3089\u81EA\u5206\u81EA\u8EAB\u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093":"CTE \u306E\u5B9A\u7FA9\u5185\u304B\u3089\u81EA\u5206\u81EA\u8EAB\u3092\u53C2\u7167\u3057\u3066\u3044\u307E\u3059\u3002\u81EA\u5DF1\u53C2\u7167\u306B\u306F `WITH RECURSIVE` \u304C\u5FC5\u8981\u3067\u3059";throw new T(s,t)}let{appId:r,subtableCode:i}=Pt(n,this.prev());if(i){let s=this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias();return{appId:r,alias:s,cteName:null,subtableCode:i}}let o=this.tryParseImplicitAlias(),a=this.consume("AS")?this.parseTableAliasName():o??n;return{appId:r,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 n=this.tryJoinType();if(n===null)break;let r=this.parseTableRef();if(n==="CROSS"){if(this.peek().kind==="ON")throw new T("CROSS JOIN \u306B ON \u53E5\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002",this.peek());t.push({type:"CROSS",table:r,on:null});continue}this.expect("ON");let i=this.parseJoinCondition();t.push({type:n,table:r,on:i})}return t}tryJoinType(){if(this.consume("INNER")){if(this.peek().kind==="CROSS")throw new T("CROSS JOIN \u306B INNER \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002",this.peek());return this.expect("JOIN"),"INNER"}if(this.consume("LEFT")){if(this.peek().kind==="CROSS")throw new T("CROSS JOIN \u306B LEFT / RIGHT \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002",this.peek());return this.expect("JOIN"),"LEFT"}if(this.consume("RIGHT")){if(this.peek().kind==="CROSS")throw new T("CROSS JOIN \u306B LEFT / RIGHT \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002",this.peek());return this.expect("JOIN"),"RIGHT"}return this.consume("CROSS")?(this.expect("JOIN"),"CROSS"):this.consume("JOIN")?"INNER":null}parseJoinCondition(){let t=this.parseQualifiedIdent();this.expect("=");let n=this.parseQualifiedIdent();return{left:t,right:n}}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 n=this.parseIdentifier();return{tableAlias:t,field:n}}return{tableAlias:null,field:t}}parseWhereExpr(t=this.groupingFieldContext,n=this.allowRelativeDateFunctions){let r=this.groupingFieldContext,i=this.allowRelativeDateFunctions;this.groupingFieldContext=t??r,this.allowRelativeDateFunctions=n;try{return this.parseOrExpr()}finally{this.groupingFieldContext=r,this.allowRelativeDateFunctions=i}}parseOrExpr(){let t=this.parseAndExpr();for(;this.consume("OR");){let n=this.parseAndExpr();t={type:"LOGICAL",op:"OR",left:t,right:n}}return t}parseAndExpr(){let t=this.parseNotExpr();for(;this.consume("AND");){let n=this.parseNotExpr();t={type:"LOGICAL",op:"AND",left:t,right:n}}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 n=this.parseSelect();return this.expect(")"),{type:"EXISTS",not:!0,query:n}}return{type:"NOT",expr:this.parseNotExpr()}}return this.parseCompareExpr()}isArithParen(){let t=0,n=this.pos;for(;n<this.tokens.length;){let r=this.tokens[n].kind;if(r==="(")t++;else if(r===")"&&(t--,t===0)){let i=this.tokens[n+1]?.kind;return i==="*"||i==="/"||i==="+"||i==="-"}n++}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 n=this.parseCompareOp(),r=this.parseWhereSqlValue(n!=="LIKE");return{type:"BINARY",op:n,left:t,right:r}}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.groupingFieldContext==="HAVING"&&this.isNonAggregateArithmeticStartWithAggregate())throw new T(`\u96C6\u8A08\u7B97\u8853\u5F0F\u306F\u96C6\u8A08\u95A2\u6570\u304B\u3089\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08${this.peek().value}\uFF09\u3002`,this.peek());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 r=this.parseStringFuncExpr();return this.isArithOp(this.peek().kind)?{type:"ARITH_FIELD",expr:this.continueArith(r)}:{type:"FUNC_FIELD",expr:r}}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 r=this.parseAggregateRef(t);return this.rejectAggregateWindowOutsideSelect(),this.isArithOp(this.peek().kind)?{type:"AGG_FIELD",expr:this.continueAggArith(r)}:{type:"FIELD",tableAlias:null,field:de(r.func,r.distinct,r.arg),...this.groupingFieldContext==="SELECT_CASE"||this.groupingFieldContext==="HAVING"?{aggregateRef:r}:{}}}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 r=this.parseArithAddSub();return this.expect(")"),{type:"ARITH_FIELD",expr:this.continueArith(r)}}if(this.peek().kind==="-")return{type:"ARITH_FIELD",expr:this.parseArithAddSub()};let n=this.parseQualifiedIdent();if(this.isArithOp(this.peek().kind)){let i={type:"FIELD_REF",field:n.tableAlias?`${n.tableAlias}.${n.field}`:n.field};return{type:"ARITH_FIELD",expr:this.continueArith(i)}}return{type:"FIELD",tableAlias:n.tableAlias,field:n.field}}parseWhereSqlValue(t=!0){let n=this.peek();if(t&&n.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 Se(`+${r.value}`)}return this.allowRelativeDateFunctions&&n.kind==="IDENT"&&this.peekAt(1).kind==="("&&ie(n.value.toUpperCase())?this.parseRelativeDateFunction():this.parseSqlValue()}parseRelativeDateFunction(){let t=this.expect("IDENT"),n=t.value.toUpperCase();switch(this.expect("("),n){case"YESTERDAY":case"TOMORROW":case"THIS_YEAR":case"LAST_YEAR":case"NEXT_YEAR":return this.expect(")",`${n}() \u306F\u5F15\u6570\u3092\u53D7\u3051\u53D6\u308A\u307E\u305B\u3093`),{type:"KINTONE_FUNC",name:n,args:{kind:"NONE"}};case"FROM_TODAY":{let r="";if(this.consume("-")&&(r="-"),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=`${r}${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(!ph(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 c=String(a===0?0:a);return{type:"KINTONE_FUNC",name:n,args:{kind:"FROM_TODAY",offset:a,offsetText:c,unit:l}}}case"THIS_WEEK":case"LAST_WEEK":case"NEXT_WEEK":{let r=null;if(this.peek().kind!==")"){let i=this.expect("IDENT",`${n} \u306E\u66DC\u65E5\u306B\u306F\u975E\u5F15\u7528\u306E SUNDAY ... SATURDAY \u304C\u5FC5\u8981\u3067\u3059`),o=i.value.toUpperCase();if(!dh(o))throw new T(`${n} \u306E\u66DC\u65E5\u304C\u4E0D\u6B63\u3067\u3059`,i);r=o}return this.expect(")",`${n} \u306F\u66DC\u65E5\u3092\u6700\u59271\u500B\u3060\u3051\u53D7\u3051\u53D6\u308A\u307E\u3059`),{type:"KINTONE_FUNC",name:n,args:{kind:"WEEK",weekday:r}}}case"THIS_MONTH":case"LAST_MONTH":case"NEXT_MONTH":{let r=null;if(this.peek().kind!==")"){let i=this.peek();if(i.kind==="IDENT"&&i.value.toUpperCase()==="LAST")this.advance(),r="LAST";else if(i.kind==="NUMBER"&&/^\d+$/.test(i.value)){this.advance();let o=Number(i.value);if(!fh(o))throw new T(`${n} \u306E\u65E5\u306F 1 \u304B\u3089 31 \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,i);r=o}else throw new T(`${n} \u306E\u65E5\u306F\u975E\u5F15\u7528\u306E LAST \u307E\u305F\u306F 1 \u304B\u3089 31 \u304C\u5FC5\u8981\u3067\u3059`,i)}return this.expect(")",`${n} \u306F\u65E5\u3092\u6700\u59271\u500B\u3060\u3051\u53D7\u3051\u53D6\u308A\u307E\u3059`),{type:"KINTONE_FUNC",name:n,args:{kind:"MONTH",day:r}}}default:throw new T(`\u672A\u77E5\u306E\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570 ${n} \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(Od(t.kind))return this.advance(),this.expect("("),this.expect(")"),{type:"KINTONE_FUNC",name:Wr[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 n=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:n}}if(t.kind==="NUMBER"||t.kind==="IDENT"||t.kind==="BIDENT"||t.kind==="("||t.kind==="-"||this.tryStringFuncName()!==null){let n=this.parseArithAddSub();return n.type==="NUMBER"?n:{type:"ARITH_VALUE",expr:n}}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 n=this.parseInListOrSubquery();return this.expect(")"),n}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(),n=t.columns[0],r=n&&n.type==="FIELD"?n.alias??n.field:null;return{type:"SUBQUERY_IN_LIST",query:t,column:r}}return{type:"IN_LIST",values:this.parseInValues()}}parseInValues(){let t=[],n="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",r="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(Se(i.value));else if(i.kind==="-"||i.kind==="+"){let o=this.peek();if(o.kind!=="NUMBER")throw new T(n,i);this.advance();let a=i.kind==="-"?"-":"+";t.push(Se(`${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(r,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(r,this.peek())}else if(i.kind==="PRIMARY_ORGANIZATION"){let o="PRIMARY_ORGANIZATION() \u306F IN / NOT IN \u30EA\u30B9\u30C8\u306E\u5358\u72EC\u8981\u7D20\u3068\u3057\u3066\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059";if(t.length>0)throw new T(o,i);if(this.expect("(","PRIMARY_ORGANIZATION \u306E\u76F4\u5F8C\u306B\u306F\u7A7A\u5F15\u6570\u306E () \u304C\u5FC5\u8981\u3067\u3059"),this.expect(")","PRIMARY_ORGANIZATION \u306E\u76F4\u5F8C\u306B\u306F\u7A7A\u5F15\u6570\u306E () \u304C\u5FC5\u8981\u3067\u3059"),t.push({type:"KINTONE_FUNC",name:"PRIMARY_ORGANIZATION"}),this.peek().kind===",")throw new T(o,this.peek())}else throw new T(n,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 n=new Set,r=[];for(let i of t)for(let o of i.items){let a=this.groupingItemSyntaxKey(o);n.has(a)||(n.add(a),r.push(o))}return r}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(),n=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:n.tableAlias,field:n.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 n=[];if(this.peek().kind!==")")do n.push(this.parseGroupingFieldItem());while(this.consume(","));this.expect(")"),t.push({items:n})}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 n=Array.from({length:t.length+1},(r,i)=>({items:t.slice(0,t.length-i)}));return{type:"GROUPING_SETS",source:"ROLLUP",allItems:this.groupingAllItems(n),sets:n}}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 n=Ep(t);return{type:"GROUPING_SETS",source:"CUBE",allItems:this.groupingAllItems(n),sets:n}}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 n=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:n.tableAlias,field:n.field}}}parseGroupByKey(){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 t=this.parseFieldPath();if(this.isArithOp(this.peek().kind)){let n={type:"FIELD_REF",field:t};return{type:"ARITH_KEY",expr:this.continueArith(n)}}return{type:"FIELD_NAME",name:t}}parseOrderBy(t=!0){let n=[];do{let r=this.parseOrderByKey(t),i="ASC";this.consume("DESC")?i="DESC":this.consume("ASC"),n.push({key:r,direction:i})}while(this.consume(","));return n}parseOrderByKey(t=!0){let n=this.tryAggregateFunc();if(n!==null){let i=this.pos,o=this.parseAggregateRef(n);if(this.isSoftKeyword("OVER"))throw new T("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306F SELECT \u5217\u306B\u306E\u307F\u8A18\u8FF0\u3067\u304D\u307E\u3059",this.peek());this.pos=i}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 i=this.parseStringFuncExpr();return this.isArithOp(this.peek().kind)?{type:"ARITH_KEY",expr:this.continueArith(i)}:{type:"FUNC_KEY",expr:i}}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 i={type:"FIELD_REF",field:r};return{type:"ARITH_KEY",expr:this.continueArith(i)}}return{type:"FIELD_NAME",name:r}}parseInsert(){this.expect("INSERT"),this.expect("INTO"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:n,subtableCode:r}=Pt(t,this.prev());this.expect("(");let i=this.parseIdentList();if(this.expect(")"),this.peek().kind==="SELECT"){let p=this.parseSelect();if(this.isApplyBlockStart()||this.prev().kind==="IDENT"&&this.prev().value.toUpperCase()==="APPLY"&&(this.peek().kind==="IDENT"||this.peek().kind==="BIDENT")&&this.peekAt(1).kind==="(")throw new T("INSERT INTO ... SELECT \u306F APPLY \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(r)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 u=this.parseCheckGroups(),d=this.parseDmlControlSuffix();return{type:"INSERT_SELECT",appId:n,fields:i,select:p,...u,...d}}this.expect("VALUES");let o=[];do{this.expect("(");let p=this.parseInsertRow(i.length);this.expect(")"),o.push(p)}while(this.consume(","));let a=[];for(;this.isApplyBlockStart();)a.push(this.parseApplyBlock());if(this.isSoftKeyword("APPLY")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="SUBTABLE")throw new 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(r&&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(r&&(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 c=a.length>0?{applyBlocks:a}:{};return r?{type:"INSERT",appId:n,subtableCode:r,fields:i,values:o,...c,...s,...l}:{type:"INSERT",appId:n,fields:i,values:o,...c,...s,...l}}parseUpsert(){this.expect("UPSERT"),this.expect("INTO"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:n,subtableCode:r}=Pt(t,this.prev());if(r)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 u=this.parseSelect(),d=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(),R=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:n,fields:i,select:u,keyFields:d,...f,...R}}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 c=this.parseCheckGroups(),p=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:n,fields:i,values:o,keyFields:a,...s,...c,...p}}parseOnDuplicate(){if(this.expectKeyword("ON","UPSERT \u306B\u306F ON DUPLICATE (\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9) \u304C\u5FC5\u8981\u3067\u3059"),!this.consume("DUPLICATE"))throw new 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,n;for(;this.isUpsertApplyBranchStart();){this.advance();let r=this.advance(),i=r.kind==="INSERT";if(i&&t||!i&&n)throw new T(`ON ${i?"INSERT":"UPDATE"} APPLY \u306F 1 \u56DE\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059`,r);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:n=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}:{},...n?{onUpdateApplyBlocks:n}:{}}}parseArrayLiteral(){this.expect("[");let t=[];if(this.peek().kind!=="]")do{let n=this.expect("STRING");t.push({type:"STRING",value:n.value})}while(this.consume(","));return this.expect("]"),{type:"ARRAY",elements:t}}parseInsertRow(t){let n=[];do if(this.peek().kind==="[")n.push(this.parseArrayLiteral());else if(this.peek().kind==="CASE"){let r=this.parseCaseWhenExpr();n.push({type:"CASE_VALUE",expr:r})}else if(this.peek().kind==="IF"){let r=this.parseIfExpr();n.push({type:"CASE_VALUE",expr:r})}else if(this.peek().kind==="-"||this.peek().kind==="+"){let r=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");n.push(Se(`${r.kind==="-"?"-":"+"}${i.value}`))}else{let r=this.advance();if(r.kind==="STRING")n.push({type:"STRING",value:r.value});else if(r.kind==="NUMBER")n.push(Se(r.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",r)}while(this.consume(","));if(n.length!==t)throw new T(`\u30AB\u30E9\u30E0\u6570\uFF08${t}\uFF09\u3068\u5024\u306E\u6570\uFF08${n.length}\uFF09\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093`,this.prev());return n}parseUpdate(){this.expect("UPDATE"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:n,subtableCode:r}=Pt(t,this.prev());this.expect("SET");let i=this.parseAssignments();if(r&&i.some(d=>d.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 d=this.parseTableRef();if(d.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(d.cteName!==null&&!d.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(!d.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(d.alias.toLowerCase()===`app${n}`.toLowerCase())throw new T(`UPDATE ... FROM \u306E\u30BD\u30FC\u30B9 alias \u306F\u66F4\u65B0\u5148 APP${n} \u3068\u540C\u540D\u306B\u3067\u304D\u307E\u305B\u3093`,this.prev());o={appId:d.appId,cteName:d.cteName,alias:d.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(r)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 d=this.decomposeUpdateFromWhere(s,n,o.alias,a);o.targetJoinField=d.targetJoinField,o.joinKeyField=d.joinKeyField,o.targetFilter=d.targetFilter}else{if(i.some(d=>d.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(d=>d.value.type==="STRING_FUNC"&&this.nodeContainsAnyQualifier(d.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 c=this.parseCheckGroups(),p=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(r&&c.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(r&&(p.validateOnly||p.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 u=l.length>0?{applyBlocks:l}:{};return o!==null?{type:"UPDATE",appId:n,assignments:i,where:s,from:o,...u,...c,...p}:r?{type:"UPDATE",appId:n,subtableCode:r,assignments:i,where:s,...u,...c,...p}:{type:"UPDATE",appId:n,assignments:i,where:s,...u,...c,...p}}isApplyBlockStart(){return this.isSoftKeyword("APPLY")&&(this.peekAt(1).kind==="IDENT"||this.peekAt(1).kind==="BIDENT")&&this.peekAt(2).kind==="("}parseApplyBlock(){this.advance();let t=this.parseIdentifier();if(this.expect("("),this.peek().kind===")"||this.peek().kind===";")throw new T("APPLY \u30D6\u30ED\u30C3\u30AF\u306B\u306F\u64CD\u4F5C\u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",this.peek());let n=[];for(;n.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 r=n.some(o=>o.kind==="PATCH"||o.kind==="APPEND"||o.kind==="REMOVE"),i=n.some(o=>o.kind==="ADD"||o.kind==="REMOVE_VALUE");if(r&&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:n}:{field:t,targetKind:"SUBTABLE",operations:n}}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(),n=this.parseApplyRowSelector(),r=this.parseExpectRowsGuard();return{kind:"PATCH",assignments:t,selector:n,...r?{expectRows:r}:{}}}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 n=[];do this.expect("(","APPEND VALUES \u306E\u5404\u884C\u306F ( \u3067\u59CB\u3081\u3066\u304F\u3060\u3055\u3044"),n.push(this.parseInsertRow(t.length)),this.expect(")");while(this.consume(","));return{kind:"APPEND",fields:t,values:n}}if(this.isSoftKeyword("REMOVE")){if(this.advance(),this.peek().kind==="STRING")return{kind:"REMOVE_VALUE",value:this.advance().value};let t=this.parseApplyRowSelector(),n=this.parseExpectRowsGuard();return{kind:"REMOVE",selector:t,...n?{expectRows:n}:{}}}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 n=this.parseExpectRowsCount();if(t>n)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:n}}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 n=this.advance(),r=[];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});r.push({condition:i,message:o})}if(r.length===0)throw new T("CHECK \u306E\u5F8C\u306B\u306F WHEN \u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",n);t.push({rules:r})}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 n=null;if(this.consume("INTO")){let r=this.peek();if(r.kind!=="IDENT"||!r.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",r);n=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:n}}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 n=this.peek();if(n.kind!=="IDENT"||!n.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",n);let r=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:r,rejectLimit:i}}isSoftKeyword(t){return this.peek().kind==="IDENT"&&this.peek().value.toUpperCase()===t}rejectAggregateWindowOutsideSelect(){if(this.isSoftKeyword("OVER"))throw new T("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306F SELECT \u5217\u306B\u306E\u307F\u8A18\u8FF0\u3067\u304D\u307E\u3059",this.peek())}validateUpdateFromAssignments(t,n,r){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",r);if(i.value.type==="SOURCE_FIELD"){if(i.value.alias.toLowerCase()!==n.toLowerCase())throw new T(`UPDATE ... FROM \u306E SET \u53C2\u7167\u306F\u30BD\u30FC\u30B9 alias ${n} \u3067\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044`,r);continue}if(this.nodeContainsQualifiedField(i.value,n))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",r);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",r);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",r)}}decomposeUpdateFromWhere(t,n,r,i){let o=this.flattenTopLevelAnd(t),a=[];if(o.forEach((p,u)=>{let d=this.matchUpdateFromJoin(p,n,r);d!==null&&a.push({index:u,...d})}),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 p=0;p<o.length;p++){if(p!==s.index&&this.nodeContainsQualifiedField(o[p],r))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(p!==s.index&&this.nodeContainsForeignQualifier(o[p],n))throw new T(`UPDATE ... FROM \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u30D5\u30A3\u30EB\u30BF\u306F APP${n} \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3060\u3051\u3092\u53C2\u7167\u3067\u304D\u307E\u3059`,i)}let c=o.filter((p,u)=>u!==s.index).reduce((p,u)=>p===null?u:{type:"LOGICAL",op:"AND",left:p,right:u},null);return{targetJoinField:s.targetField,joinKeyField:s.sourceField,targetFilter:c}}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,n,r){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,n)&&this.isSourceRef(i,r)?{targetField:o.field,sourceField:i.field}:this.isSourceRef(o,r)&&this.isTargetRef(i,n)?{targetField:i.field,sourceField:o.field}:null}splitQualifiedField(t){let n=t.indexOf(".");return n<0?{alias:null,field:t}:{alias:t.slice(0,n),field:t.slice(n+1)}}isTargetRef(t,n){return t.alias===null||t.alias.toLowerCase()===`app${n}`.toLowerCase()}isSourceRef(t,n){return t.alias?.toLowerCase()===n.toLowerCase()}nodeContainsQualifiedField(t,n){if(Array.isArray(t))return t.some(i=>this.nodeContainsQualifiedField(i,n));if(t===null||typeof t!="object")return!1;let r=t;if(r.type==="FIELD"&&typeof r.tableAlias=="string"&&r.tableAlias.toLowerCase()===n.toLowerCase())return!0;if(r.type==="FIELD_REF"&&typeof r.field=="string"){let i=this.splitQualifiedField(r.field);if(this.isSourceRef(i,n))return!0}return Object.values(r).some(i=>this.nodeContainsQualifiedField(i,n))}nodeContainsForeignQualifier(t,n){if(Array.isArray(t))return t.some(o=>this.nodeContainsForeignQualifier(o,n));if(t===null||typeof t!="object")return!1;let r=t,i=`app${n}`.toLowerCase();if(r.type==="FIELD"&&typeof r.tableAlias=="string")return r.tableAlias.toLowerCase()!==i;if(r.type==="FIELD_REF"&&typeof r.field=="string"){let o=this.splitQualifiedField(r.field);if(o.alias!==null)return o.alias.toLowerCase()!==i}return Object.values(r).some(o=>this.nodeContainsForeignQualifier(o,n))}nodeContainsAnyQualifier(t){if(Array.isArray(t))return t.some(r=>this.nodeContainsAnyQualifier(r));if(t===null||typeof t!="object")return!1;let n=t;return n.type==="FIELD"&&typeof n.tableAlias=="string"||n.type==="FIELD_REF"&&typeof n.field=="string"&&this.splitQualifiedField(n.field).alias!==null?!0:Object.values(n).some(r=>this.nodeContainsAnyQualifier(r))}parseAssignments(){let t=[];do{let n=this.parseIdentifier();this.expect("=");let r=this.parseAssignmentValue();t.push({field:n,value:r})}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(Od(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 n=this.allowUnaryPlusNumber;this.allowUnaryPlusNumber=!0;let r;try{r=this.parseArithAddSub()}finally{this.allowUnaryPlusNumber=n}if(r.type==="NUMBER"||r.type==="ARITH"||r.type==="STRING_FUNC")return r;if(r.type==="FIELD_REF"){let i=r.field.indexOf(".");if(i>0&&i<r.field.length-1)return{type:"SOURCE_FIELD",alias:r.field.slice(0,i),field:r.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:n,subtableCode:r}=Pt(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 r?{type:"DELETE",appId:n,subtableCode:r,where:o}:{type:"DELETE",appId:n,where:o}}parseReorder(){this.expect("REORDER");let t=this.consume("ALL");this.rejectTempTableDml();let n=this.parseIdentifier(),{appId:r,subtableCode:i}=Pt(n,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:r,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,n){let r=this.peek();if(r.kind!==t)throw new T(n??`\u300C${t}\u300D\u304C\u5FC5\u8981\u3067\u3059`,r);return this.advance()}expectKeyword(t,n){return this.expect(t,n)}parseUnsignedInt(){let t=this.expect("NUMBER","\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059"),n=Number(t.value);if(!Number.isInteger(n)||n<0)throw new T("\u6B63\u306E\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059",t);return n}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}let n=this.tryParseDigitPrefixedIdentifier();if(n!==null)return n;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;let n=this.tryParseDigitPrefixedIdentifier();if(n!==null)return n;throw new T("\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u307E\u305F\u306F\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}tryParseDigitPrefixedIdentifier(){let t=this.peek(),n=this.peekAt(1);return t.kind!=="NUMBER"||!/^\d+$/.test(t.value)||n.kind!=="IDENT"||n.pos!==t.pos+t.value.length?null:(this.advance(),this.advance(),t.value+n.value)}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"||jo.has(t.value.toUpperCase()))return this.advance(),{alias:t.value.toLowerCase(),display:t.value};throw new T("\u30A8\u30A4\u30EA\u30A2\u30B9\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}withAliasDisplay(t,n){return n!==null&&Object.defineProperty(t,"aliasDisplay",{value:n.display,enumerable:!1}),t}parseFieldPath(){let t=this.parseIdentifier();if(this.peek().kind!==".")return t;this.advance();let n=this.parseIdentifier();return`${t}.${n}`}parseColumnFieldRef(){let t=this.parseIdentifier();if(this.peek().kind!==".")return t;if(this.advance(),this.consume("*"))return`${t}.*`;let n=this.parseIdentifier();return`${t}.${n}`}};function mh(e){let t=e.toUpperCase(),n=new Set(["TEXT","VARCHAR","CHAR","NCHAR","NVARCHAR","STRING"]),r=new Set(["NUMBER","INT","INTEGER","NUMERIC","DECIMAL","FLOAT","DOUBLE","REAL","BIGINT","SMALLINT"]);return n.has(t)?"TEXT":r.has(t)?"NUMBER":null}function Pt(e,t){let n=e.match(/^[Aa][Pp][Pp](\d+)(?:\$(.+))?$/);if(!n)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(n[1]),subtableCode:n[2]??null}}function tn(e,t){let n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){let i=n.next(),o=r.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 yh(e,t){return e<t?-1:e>t?1:0}function Dd(e){if(e==="")return{band:0};let t=Ae(e);if(t!==null)return{band:2,value:t};let n=Number(e);return n===Number.NEGATIVE_INFINITY?{band:1}:n===Number.POSITIVE_INFINITY?{band:3}:e==="NaN"?{band:4}:{band:5,value:e}}function gh(e,t){let n=Dd(e),r=Dd(t);return n.band!==r.band?n.band<r.band?-1:1:n.band===2&&r.band===2?oo(n.value,r.value):n.band===5&&r.band===5?tn(n.value,r.value):0}function vd(e,t){if(e==="")return{empty:!0,normalizedId:"",display:e};let n=/^\d+$/.test(e)?e:t?/-(\d+)$/.exec(e)?.[1]:void 0;if(n===void 0)throw new Error(`ArgumentError: invalid ${t?"RECORD_NUMBER":"$id"} value: ${e}`);return{empty:!1,normalizedId:n.replace(/^0+(?=\d)/,""),display:e}}function hh(e,t,n){let r=vd(e,n),i=vd(t,n);if(r.empty||i.empty)return r.empty===i.empty?0:r.empty?-1:1;if(r.normalizedId.length!==i.normalizedId.length)return r.normalizedId.length<i.normalizedId.length?-1:1;let o=tn(r.normalizedId,i.normalizedId);return o!==0?o:tn(r.display,i.display)}function Ah(e,t){if(e==="")return[];if(t!=="CHECK_BOX"&&t!=="MULTI_SELECT")return[e];try{let n=JSON.parse(e);return Array.isArray(n)?n.map(r=>String(r??"")):[e]}catch{return[e]}}function Ud(e,t){let n=t.optionOrder??new Map,i=[...new Set(Ah(e,t.fieldType))].map(o=>{let a=n.get(o);return a===void 0?{knownBand:1,rank:0,label:o}:{knownBand:0,rank:a,label:o}});return i.sort(Md),i}function Md(e,t){return e.knownBand!==t.knownBand?e.knownBand<t.knownBand?-1:1:e.rank!==t.rank?e.rank<t.rank?-1:1:tn(e.label,t.label)}function Sh(e,t,n){let r=Ud(e,n),i=Ud(t,n),o=Math.min(r.length,i.length);for(let a=0;a<o;a++){let s=Md(r[a],i[a]);if(s!==0)return s}return r.length<i.length?-1:r.length>i.length?1:0}function rt(e,t,n){switch(n.compareMode){case"string":return tn(e,t);case"number":return gh(e,t);case"recordNumber":return hh(e,t,n.fieldType==="RECORD_NUMBER");case"option":return Sh(e,t,n);case"unsupported":throw new Error(`ArgumentError: values of type ${n.fieldType} cannot be compared.`)}}function Ot(e,t,n,r=$("string")){let i=rt(t,n,r);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 kd(e,t){if(t==="least"&&e.includes(""))return"";let n=t==="greatest"?e.filter(o=>o!==""):[...e];if(n.length===0)return"";let r=n.every(o=>!Number.isNaN(Number(o))),i=(o,a)=>{if(r){let s=Ae(o),l=Ae(a),c=s!==null&&l!==null?oo(s,l):yh(Number(o),Number(a));if(c!==0)return c}return tn(o,a)};return n.reduce((o,a)=>{let s=i(a,o);return t==="greatest"?s>0?a:o:s<0?a:o})}function me(e,t,n={}){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached arithmetic evaluation.`);if(e.type==="NUMBER")return e.value;if(e.type==="FIELD_REF")return Number(Fe(t,e.field));if(e.type==="STRING_FUNC")return Number(ye(e,t,void 0,void 0,n));let r=me(e.left,t,n),i=me(e.right,t,n);switch(e.op){case"+":return r+i;case"-":return r-i;case"*":return r*i;case"/":return i!==0?r/i:NaN;case"%":return i!==0?r%i:NaN}}function be(e,t,n,r,i={}){switch(e.type){case"STRING":return e.value;case"NUMBER":return e.value;case"FIELD":return Fe(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 ye(e,t,n,r,i);case"CASE_WHEN":return Ke(e,t,n,r,i);case"CONCAT_OP":return ye({type:"STRING_FUNC",func:"CONCAT",args:[e.left,e.right]},t,n,r,i);case"SCALAR_ARITH":{let o=Number(be(e.left,t,n,r,i)),a=Number(be(e.right,t,n,r,i));switch(e.op){case"+":return o+a;case"-":return o-a;case"*":return o*a;case"/":return a!==0?o/a:NaN;case"%":return a!==0?o%a:NaN}}}}function Lt(e,t,n,r,i={}){switch(e.type){case"CASE_WHEN":return Kd(e,t,n,r,i);case"SCALAR_ARITH":{let o=Lt(e.left,t,n,r,i),a=Lt(e.right,t,n,r,i);if(o===null||a===null)return null;let s=Number(o),l=Number(a);switch(e.op){case"+":return s+l;case"-":return s-l;case"*":return s*l;case"/":return l!==0?s/l:NaN;case"%":return l!==0?s%l:NaN}}case"CONCAT_OP":{let o=Lt(e.left,t,n,r,i),a=Lt(e.right,t,n,r,i);return`${o??""}${a??""}`}default:return be(e,t,n,r,i)}}function zo(e,t,n){let r=Math.pow(10,n),i=Math[e](t*r)/r;return n>0?String(parseFloat(i.toFixed(n))):String(i)}function Th(e){return e>=55296&&e<=56319}function Ih(e){return e>=56320&&e<=57343}function Jo(e,t){return t>0&&t<e.length&&Th(e.charCodeAt(t-1))&&Ih(e.charCodeAt(t))}function xd(e,t){if(Number.isNaN(e)||e===Number.NEGATIVE_INFINITY)return 0;if(e===Number.POSITIVE_INFINITY)return t;let n=Math.trunc(e);return n<0?Math.max(t+n,0):Math.min(n,t)}function hl(e,t){let n=Math.min(Math.max(0,t),e.length);return Jo(e,n)&&(n-=1),e.slice(0,n)}function wh(e,t){let n=Math.max(0,e.length-t);return Jo(e,n)&&(n+=1),e.slice(n)}function bh(e,t,n){let r=xd(t,e.length),i=xd(n,e.length);return i<=r?"":(Jo(e,r)&&(r+=1),Jo(e,i)&&(i-=1),e.slice(r,Math.max(r,i)))}function Nh(e,t){let n=e.repeat(Math.ceil(t/e.length));return hl(n,t)}var Ch=200,Vr=new Map;function Ph(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 gl(e,t,n=!1){let r=Ph(t)+(n?"g":""),i=`${e}\0${r}`,o=Vr.get(i);if(o!==void 0)return o.lastIndex=0,o;let a;try{a=new RegExp(e,r)}catch(s){let l=s instanceof Error?s.message:String(s);throw new Error(`ArgumentError: invalid regular expression: ${l}`)}if(Vr.size>=Ch){let s=Vr.keys().next().value;s!==void 0&&Vr.delete(s)}return Vr.set(i,a),a}function Oh(e){if(e.includes("$`")||e.includes("$'"))throw new Error("ArgumentError: REGEXP_REPLACE replacement must not contain $` or $'.")}function Lh(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 _h(e,t,n,r){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==="<"&&r!==void 0){let l=e.indexOf(">",o+2);if(l>=0){i+=r[e.slice(o+2,l)]??"",o=l;continue}}if(/\d/.test(s)){let l=e[o+2];if(l!==void 0&&/\d/.test(l)){let p=Number(s+l);if(p>=1&&p<=n.length){i+=n[p-1]??"",o+=2;continue}}let c=Number(s);if(c>=1&&c<=n.length){i+=n[c-1]??"",o+=1;continue}}i+="$"}return i}function Dh(e,t,n,r){let i=0;return e.replace(t,(o,...a)=>{if(i+=1,i!==r)return o;let s=a[a.length-1],l=typeof s=="object"&&s!==null,c=a.length-(l?3:2),p=a.slice(0,c);return _h(n,o,p,l?s:void 0)})}function ye(e,t,n,r,i={}){Wo(e.func,e.args);let o=e.args.map(a=>Kh(a,t,n,r,i));switch(e.func){case"UPPER":return(o[0]??"").toUpperCase();case"LOWER":return(o[0]??"").toLowerCase();case"TRIM":return(o[0]??"").trim();case"LTRIM":return(o[0]??"").trimStart();case"RTRIM":return(o[0]??"").trimEnd();case"LENGTH":return String((o[0]??"").length);case"LENGTH_CHAR":return String([...o[0]??""].length);case"SUBSTRING":{let a=o[0]??"",s=Math.max(0,Number(o[1]??"1")-1),l=o[2]!==void 0?Number(o[2]):void 0;return bh(a,s,l!==void 0?s+l:a.length)}case"LEFT":{let a=o[0],s=Math.trunc(Number(o[1]));return Number.isNaN(s)||s<=0?"":hl(a,s)}case"RIGHT":{let a=o[0],s=Math.trunc(Number(o[1]));return Number.isNaN(s)||s<=0?"":wh(a,s)}case"INSTR":return String(o[0].indexOf(o[1])+1);case"LPAD":case"RPAD":{let a=o[0],s=Math.trunc(Number(o[1]));if(Number.isNaN(s)||s<=0)return"";if(a.length>=s)return hl(a,s);let l=o[2]??" ";if(l==="")return a;let c=Nh(l,s-a.length);return e.func==="LPAD"?c+a:a+c}case"GREATEST":case"LEAST":return kd(o,e.func==="GREATEST"?"greatest":"least");case"CONCAT":return o.join("");case"REPLACE":{let a=o[0]??"",s=o[1]??"",l=o[2]??"";return s===""?a:a.split(s).join(l)}case"REGEXP_LIKE":return gl(o[1],o[2]??"").test(o[0])?"1":"0";case"REGEXP_REPLACE":{Oh(o[2]);let a=Lh(o[4]),s=gl(o[1],o[3]??"",!0);return a===0?o[0].replace(s,o[2]):Dh(o[0],s,o[2],a)}case"REGEXP_SUBSTR":return gl(o[1],o[2]??"").exec(o[0])?.[0]??"";case"TRANSLATE":{let a=[...o[1]],s=[...o[2]];if(a.length!==s.length)throw new Error(`ArgumentError: TRANSLATE \u306E from \u3068 to \u306F\u540C\u3058\u6587\u5B57\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08from=${a.length}, to=${s.length}\uFF09`);let l=new Map;return a.forEach((c,p)=>{l.has(c)||l.set(c,s[p])}),[...o[0]].map(c=>l.get(c)??c).join("")}case"COALESCE":return o.find(a=>a!=="")??"";case"NULLIF":return(o[0]??"")===(o[1]??"")?"":o[0]??"";case"ISNULL":return(o[0]??"")!==""?o[0]??"":o[1]??"";case"ROUND":return zo("round",Number(o[0]??"0"),Number(o[1]??"0"));case"FLOOR":return zo("floor",Number(o[0]??"0"),Number(o[1]??"0"));case"CEIL":return zo("ceil",Number(o[0]??"0"),Number(o[1]??"0"));case"TRUNCATE":return zo("trunc",Number(o[0]),Number(o[1]??"0"));case"CAST":{let a=o[0]??"";if((o[1]??"TEXT")==="NUMBER"){let l=Number(a);return isNaN(l)?a:String(l)}return a}case"FORMAT":{let a=Number(o[0]??"0"),s=o[1]??"0";return Fh(a,s)}case"YEAR":{let a=o[0]??"";return a.length>=4?String(parseInt(a.slice(0,4),10)):""}case"MONTH":{let a=o[0]??"";return a.length>=7?String(parseInt(a.slice(5,7),10)):""}case"DAY":{let a=o[0]??"";return a.length>=10?String(parseInt(a.slice(8,10),10)):""}case"DAYOFWEEK":return qo(o[0])?String(Al(o[0])+1):"";case"QUARTER":return qo(o[0])?String(Math.ceil(Number(o[0].slice(5,7))/3)):"";case"WEEK":return qo(o[0])?String(Gd(o[0])):"";case"DATE_FORMAT":return Uh(o[0]??"",o[1]??"");case"DATEDIFF":return Mh(o[0]??"",o[1]??"");case"DATE_ADD":return kh(o[0]??"",Number(o[1]??"0"),(o[2]??"DAY").toUpperCase());case"LAST_DAY":return xh(o[0]);case"ABS":return String(Math.abs(Number(o[0]??"0")));case"MOD":{let a=Number(o[0]??"0"),s=Number(o[1]??"0");return String(s!==0?a%s:NaN)}case"POWER":return String(Math.pow(Number(o[0]??"0"),Number(o[1]??"0")));case"SQRT":return String(Math.sqrt(Number(o[0]??"0")));case"CURRENT_DATE":{let a=i.statementInstant??new Date,s=a.getFullYear(),l=String(a.getMonth()+1).padStart(2,"0"),c=String(a.getDate()).padStart(2,"0");return`${s}-${l}-${c}`}case"CURRENT_TIMESTAMP":return(i.statementInstant??new Date).toISOString()}}function Hr(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 Xo(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 qo(e){let t=e.slice(0,10);if(!/^\d{4}-\d{2}-\d{2}$/.test(t))return!1;let n=Xo(t);return n.getUTCFullYear()===Number(t.slice(0,4))&&n.getUTCMonth()+1===Number(t.slice(5,7))&&n.getUTCDate()===Number(t.slice(8,10))}function Al(e){return Xo(e).getUTCDay()}function Fd(e){let t=Xo(e),n=t.getUTCDay()||7;return t.setUTCDate(t.getUTCDate()+4-n),t}function vh(e){return Fd(e).getUTCFullYear()}function Gd(e){let t=Fd(e),n=t.getUTCFullYear(),r=Xo(`${String(n).padStart(4,"0")}-01-04`),i=r.getUTCDay()||7;return r.setUTCDate(r.getUTCDate()+4-i),1+Math.round((t.getTime()-r.getTime())/(7*864e5))}function Uh(e,t){if(!e||e.length<10)return"";let{y:n,mo:r,d:i,h:o,mi:a,sec:s}=Hr(e),l=qo(e);return t.replace(/%[YymcdeHiswavG]/g,c=>{switch(c){case"%Y":return n;case"%y":return n.slice(2);case"%m":return r;case"%c":return String(parseInt(r,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(Al(e)):"";case"%a":return l?["\u65E5","\u6708","\u706B","\u6C34","\u6728","\u91D1","\u571F"][Al(e)]:"";case"%v":return l?String(Gd(e)).padStart(2,"0"):"";case"%G":return l?String(vh(e)).padStart(4,"0"):"";default:return c}})}function Mh(e,t){if(e.length<10||t.length<10)return"0";let n=Hr(e),r=Hr(t),i=Date.UTC(+n.y,+n.mo-1,+n.d),o=Date.UTC(+r.y,+r.mo-1,+r.d);return String(Math.round((i-o)/864e5))}function kh(e,t,n){if(n!=="YEAR"&&n!=="MONTH"&&n!=="DAY")throw new Error("ArgumentError: DATE_ADD unit must be YEAR, MONTH, or DAY.");if(!e||e.length<10)return e;let{y:r,mo:i,d:o}=Hr(e),a=new Date(Date.UTC(+r,+i-1,+o)),s=u=>{let d=a.getUTCDate();a.setUTCDate(1),u();let f=new Date(a.getTime());f.setUTCMonth(f.getUTCMonth()+1),f.setUTCDate(0),a.setUTCDate(Math.min(d,f.getUTCDate()))};switch(n){case"YEAR":s(()=>a.setUTCFullYear(a.getUTCFullYear()+t));break;case"MONTH":s(()=>a.setUTCMonth(a.getUTCMonth()+t));break;case"DAY":a.setUTCDate(a.getUTCDate()+t);break}let l=String(a.getUTCFullYear()).padStart(4,"0"),c=String(a.getUTCMonth()+1).padStart(2,"0"),p=String(a.getUTCDate()).padStart(2,"0");return`${l}-${c}-${p}`}function xh(e){if(!e||e.length<10)return e;let{y:t,mo:n}=Hr(e),r=new Date(Date.UTC(+t,+n,0)),i=String(r.getUTCFullYear()).padStart(4,"0"),o=String(r.getUTCMonth()+1).padStart(2,"0"),a=String(r.getUTCDate()).padStart(2,"0");return`${i}-${o}-${a}`}function Fh(e,t){if(/^-?\d+$/.test(t.trim()))return Gh(e,Math.max(0,Number(t)));let n=t.endsWith("%"),r=t.includes(","),i=n?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,c=s+l,p=i.toFixed(c),[u,d=""]=p.split(".");l>0&&(d=d.replace(/0+$/,""));let f=r?u.replace(/\B(?=(\d{3})+(?!\d))/g,","):u,R=d?`${f}.${d}`:f;return n?R+"%":R}function Gh(e,t){let n=e.toFixed(t),[r,i]=n.split("."),o=r.replace(/\B(?=(\d{3})+(?!\d))/g,",");return i?`${o}.${i}`:o}function Kh(e,t,n,r,i={}){return e.type==="AGG_REF"||e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"?String(Yr(e,t)):e.type==="NUMBER"?z(e):String(be(e,t,n,r,i))}function Yr(e,t){if(e.type==="NUMBER")return e.value;if(e.type==="AGG_REF")return t[de(e.func,e.distinct,e.arg)]??"";if(e.type==="AGG_GROUP_KEY"){let i=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return Number(Fe(t,i))}if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved aggregate arithmetic variable @${e.name}.`);let n=Number(Yr(e.left,t)),r=Number(Yr(e.right,t));switch(e.op){case"+":return n+r;case"-":return n-r;case"*":return n*r;case"/":return r!==0?n/r:NaN;case"%":return r!==0?n%r:NaN}}function Fe(e,t){let n=e[t];if(n!==void 0)return n;let r=t.indexOf(".");if(r>0){let i=e[t.slice(r+1)];if(i!==void 0)return i}return""}function le(e,t,n,r,i,o={}){switch(e.type){case"BOOLEAN":return e.value;case"BINARY":return Bh(e,t,n,r,i,o);case"NULL_CHECK":return jh(e,t);case"LOGICAL":return zh(e,t,n,r,i,o);case"NOT":return!le(e.expr,t,n,r,i,o);case"GROUP":return le(e.expr,t,n,r,i,o);case"EXISTS":{let a=e.resolved;return e.not?!a:a}}}function Bh(e,t,n,r,i,o={}){if(e.op==="KLIKE"||e.op==="NOT_KLIKE"){if(r?.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 a=zd(e.left,t,n,i,o),s=e.left.type==="FIELD"?n?.(e.left):void 0,l=Wh(e.left,s,i);return $h(e.op,a,e.right,t,s,n,l,i,o)}function $h(e,t,n,r,i,o,a=$("string"),s,l={}){if(e==="IN"||e==="NOT_IN"){let p=null;if(n.type==="IN_LIST"&&(Yh(n.values),p=new Set(n.values.map(d=>d.type==="NUMBER"?i==="NUMBER"?z(d):String(d.value):d.value))),n.type==="SUBQUERY_IN_LIST"&&(p=n.resolved),p===null)return e==="NOT_IN";let u=Hh(t,p,i);return e==="IN"?u:!u}if(e==="LIKE"){let p=Sl(n,r,o,void 0,l);return jd(t,p)}if(e==="NOT_LIKE"){let p=Sl(n,r,o,void 0,l);return!jd(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 c=Sl(n,r,o,s,l);return Ot(e,t,c,a)}var Bd=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function Wh(e,t,n){if(e.type==="FIELD")return n?.(e)??(t?te({fieldType:t}):$("string"));if(e.type==="ARITH_FIELD"||e.type==="AGG_FIELD")return $("number");if(e.type==="FUNC_FIELD")return $(Bd.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 $("number");if(o.type==="STRING_FUNC")return $(Bd.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 n?.(s)??$("string")}return $("string")});if(i.length>0&&i.every(o=>o.compareMode===i[0].compareMode))return i[0]}return e.type==="GROUPING_FIELD"?$("number"):$("string")}var $d=new Set(["CHECK_BOX","MULTI_SELECT"]),Wd=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE"]),Vh=new Set(["CREATOR","MODIFIER"]);function Hh(e,t,n){let r=()=>t.has(e);if(n===void 0)return r();if(n==="NUMBER"){let o=$("number");return[...t].some(a=>Ot("=",e,a,o))}let i;if($d.has(n)||Wd.has(n)||Vh.has(n))try{i=JSON.parse(e)}catch{return r()}else return r();return $d.has(n)?!Array.isArray(i)||!i.every(o=>typeof o=="string")?r():i.length===0&&t.has("")?!0:i.some(o=>t.has(o)):Wd.has(n)?!Array.isArray(i)||!i.every(Vd)?r():i.length===0&&t.has("")?!0:i.some(o=>t.has(o.code)):Vd(i)?t.has(i.code):r()}function Vd(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&typeof e.code=="string"}function Yh(e){let t=e.find(r=>r.type==="VARIABLE");if(t?.type==="VARIABLE")throw new Error(`ParseError: unresolved batch variable @${t.name}.`);let n=e.find(r=>r.type==="KINTONE_FUNC");if(n?.type==="KINTONE_FUNC")throw new Error(`${n.name}: ${wt}`)}function jh(e,t){let n=zd(e.field,t);return e.not?n!=="":n===""}function zh(e,t,n,r,i,o={}){return e.op==="AND"?le(e.left,t,n,r,i,o)&&le(e.right,t,n,r,i,o):le(e.left,t,n,r,i,o)||le(e.right,t,n,r,i,o)}function zd(e,t,n,r,i={}){if(e.type==="FUNC_FIELD")return ye(e.expr,t,void 0,void 0,i);if(e.type==="AGG_FIELD")return String(Yr(e.expr,t));if(e.type==="ARITH_FIELD")return String(me(e.expr,t,i));if(e.type==="CASE_FIELD")return Ke(e.expr,t,n,r,i);if(e.type==="GROUPING_FIELD")return Yn(e.ref,t);if(e.aggregateRef){let a=e.aggregateRef;return Fe(t,de(a.func,a.distinct,a.arg))}let o=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return Fe(t,o)}function Sl(e,t,n,r,i={}){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 z(e);case"KINTONE_FUNC":return qh(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"?Fe(t,e.expr.field):e.expr.type==="STRING_FUNC"?ye(e.expr,t,void 0,void 0,i):String(me(e.expr,t,i));case"CASE_VALUE":return Ke(e.expr,t,n,r,i);case"ARRAY":return e.elements.map(o=>o.value).join(",")}}function Ke(e,t,n,r,i={}){for(let o of e.branches)if(le(o.condition,t,n,void 0,r,i))return Yd(o.result,t,n,r,i);return e.elseResult!==null?Yd(e.elseResult,t,n,r,i):""}function Kd(e,t,n,r,i={}){for(let o of e.branches)if(le(o.condition,t,n,void 0,r,i))return Hd(o.result,t,n,r,i);return e.elseResult===null?null:Hd(e.elseResult,t,n,r,i)}function Hd(e,t,n,r,i={}){return e.type==="ARRAY"?e.elements.map(o=>o.value).join(","):e.type==="AGG_REF"?t[de(e.func,e.distinct,e.arg)]??"":e.type==="AGG_ARITH"?t[dt(e)]??"":e.type==="FIELD_REF"?t[e.field]??"":e.type==="ARITH"?me(e,t,i):Lt(e,t,n,r,i)}function Yd(e,t,n,r,i={}){return e.type==="ARRAY"?e.elements.map(o=>o.value).join(","):e.type==="AGG_REF"?t[de(e.func,e.distinct,e.arg)]??"":e.type==="AGG_ARITH"?t[dt(e)]??"":e.type==="FIELD_REF"?t[e.field]??"":e.type==="ARITH"?String(me(e,t,i)):String(be(e,t,n,r,i))}function qd(e,t={}){let n=t.statementInstant??new Date;switch(e){case"TODAY":{let r=n.getFullYear(),i=String(n.getMonth()+1).padStart(2,"0"),o=String(n.getDate()).padStart(2,"0");return`${r}-${i}-${o}`}case"NOW":return n.toISOString();case"LOGINUSER":case"PRIMARY_ORGANIZATION":return""}}function qh(e){throw ie(e)?new Error(`${e}: ${un}`):Kn(e)?new Error(`${e}: ${wt}`):new Error(`InternalError: unexpected KINTONE_FUNC name: ${e}`)}var Qo=new Map,Jh=200;function jd(e,t){if(!Op(t))return e.includes(t);let n=Qo.get(t);if(!n){let r="^";for(let i=0;i<t.length;i++){let o=t[i];o==="%"?r+=".*":o==="_"?r+=".":r+=o.replace(/[.+*?^${}()|[\]\\]/g,"\\$&")}r+="$",n=new RegExp(r,"u"),Qo.size>=Jh&&Qo.clear(),Qo.set(t,n)}return n.test(e)}function tr(e){return Xd(e)}function Jd(e){return Xd(e.flatMap(t=>t.rules.map(n=>n.condition)))}function Xd(e){let t=[],n=new Set,r=o=>{if(Array.isArray(o)){o.forEach(r);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 Ne("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))r(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 Ne("CHECK \u306B\u96C6\u7D04\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");let s=`${o??""}\0${a}`;n.has(s)||(n.add(s),t.push({tableAlias:o,field:a}))};return r(e),t}function Ne(e){return new T(e,{kind:"EOF",value:"CHECK",pos:0})}function Zo(e,t,n){let r=[];return e.forEach((i,o)=>{for(let a of i.rules){if(!le(a.condition,t,n))continue;let s=be(a.message,t);r.push({groupIndex:o,message:s==null?"":String(s)});break}}),r}function Tl(e){if(Ht(e))throw new ae("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 Xh=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),Qh=new Set(["CHECK_BOX","MULTI_SELECT"]);function na(e,t=new Map,n={}){let r=e.values.map(i=>Zh(e.fields,i,t,n));return Jr(r,100).map(i=>({app:e.appId,records:i}))}function Zh(e,t,n,r){let i={};return e.forEach((o,a)=>{let s=t[a];s.type==="CASE_VALUE"?i[o]={value:nn(s.expr,{},n.get(o),r)}:i[o]={value:_t(s,n.get(o))}}),i}function zr(e){Tl(e.where);let t=pf(e);return{app:e.appId,query:Y(e.where),fields:["$id",...t],totalCount:!1}}function qr(e,t,n=new Map){let r=eA(e.assignments,n);return Jr(t,100).map(i=>({app:e.appId,records:i.map(o=>({id:o,record:r}))}))}function eA(e,t){let n={};for(let{field:r,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"||(n[r]={value:_t(i,t.get(r))});return n}function tf(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 ra(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 Il(e){Tl(e.where);let t=new Set;for(let{value:n}of e.assignments)n.type==="ARITH"?nf(n,t):n.type==="SCALAR_ARITH"||n.type==="CONCAT_OP"?nr(n,t):n.type==="STRING_FUNC"?wl(n,t):n.type==="CASE_VALUE"&&rf(n.expr,t);return pf(e).forEach(n=>t.add(n)),{app:e.appId,query:Y(e.where),fields:["$id",...t],totalCount:!1}}function nf(e,t){jr(e.left,t),jr(e.right,t)}function jr(e,t){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached DML field collection.`);e.type==="FIELD_REF"?t.add(e.field):e.type==="ARITH"?nf(e,t):e.type==="STRING_FUNC"&&wl(e,t)}function wl(e,t){for(let n of e.args)tA(n,t)}function tA(e,t){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"){ta(e,t);return}nr(e,t)}function nr(e,t){if(e.type==="FIELD"){t.add(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field);return}if(e.type==="STRING_FUNC"){wl(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){nr(e.left,t),nr(e.right,t);return}e.type==="CASE_WHEN"&&rf(e,t)}function ta(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&nA(e.arg,t);return}e.type==="AGG_ARITH"&&(ta(e.left,t),ta(e.right,t)),e.type==="AGG_GROUP_KEY"&&t.add(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field)}function nA(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?jr(e,t):nr(e,t)}function Qd(e,t){if(e.type!=="ARRAY"){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"){ta(e,t);return}if(e.type==="FIELD_REF"||e.type==="ARITH"){jr(e,t);return}nr(e,t)}}function rf(e,t){for(let n of e.branches)ea(n.condition,t),Qd(n.result,t);e.elseResult!==null&&Qd(e.elseResult,t)}function ea(e,t){switch(e.type){case"BINARY":e.left.type==="FIELD"?t.add(e.left.field):e.left.type==="ARITH_FIELD"&&jr(e.left.expr,t);break;case"NULL_CHECK":e.field.type==="FIELD"&&t.add(e.field.field);break;case"LOGICAL":ea(e.left,t),ea(e.right,t);break;case"NOT":case"GROUP":ea(e.expr,t);break;case"EXISTS":case"BOOLEAN":break}}function bl(e,t,n=new Map,r={}){let i=t.map(o=>{let a=Number(o.$id.value),s=of(o),l={};for(let{field:c,value:p}of e.assignments)l[c]={value:Nl(p,s,n.get(c),o,r)};return{id:a,record:l}});return Jr(i,100).map(o=>({app:e.appId,records:o}))}function Nl(e,t,n,r,i={}){if(e.type==="ARITH")return String(r?Pl(e,r):me(e,t,i));if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP")return String(be(e,t,void 0,void 0,i));if(e.type==="STRING_FUNC")return ye(e,t,void 0,void 0,i);if(e.type==="CASE_VALUE")return nn(e.expr,t,n,i);if(e.type==="SOURCE_FIELD")throw new ae("SOURCE_FIELD \u306F UPDATE ... FROM \u5C02\u7528\u3067\u3059");return _t(e,n)}function ia(e,t,n,r={}){if(e.type==="STRING")return e.value;if(e.type==="NUMBER")return z(e);if(e.type==="ARITH")return String(me(e,t,r));if(e.type==="CASE_VALUE")return Ke(e.expr,t,n,void 0,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 rA=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);function Cl(e,t,n=new Map,r={}){let i=t.map(({target:o,source:a})=>{let s=Number(o.$id?.value);if(!Number.isSafeInteger(s)||s<=0)throw new ae("UPDATE ... FROM \u306E\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u304C\u4E0D\u6B63\u3067\u3059");let l=of(o),c={};for(let{field:p,value:u}of e.assignments){let d=n.get(p);if(u.type==="SOURCE_FIELD"){if(rA.has(d??""))throw new ae(`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(a,u.field))throw new ae(`UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u5217 ${u.field} \u304C\u5B58\u5728\u3057\u307E\u305B\u3093`);let f=a[u.field];if(typeof f!="string")throw new ae(`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")&&f!==""&&!Number.isFinite(Number(f)))throw new ae(`\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9 ${p} \u306B\u5909\u63DB\u3067\u304D\u306A\u3044\u5024\u3067\u3059: ${f}`);c[p]={value:_t({type:"STRING",value:f},d)}}else{if(u.type==="STRING_FUNC")throw new ae("UPDATE ... FROM \u306E SET \u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u3092\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");u.type==="ARITH"?c[p]={value:String(Pl(u,o))}:u.type==="SCALAR_ARITH"||u.type==="CONCAT_OP"?c[p]={value:String(be(u,l,void 0,void 0,r))}:u.type==="CASE_VALUE"?c[p]={value:nn(u.expr,l,d,r)}:c[p]={value:_t(u,d)}}}return{id:s,record:c}});return Jr(i,100).map(o=>({app:e.appId,records:o}))}function of(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,typeof n.value=="string"?n.value:JSON.stringify(n.value??"")]))}function Pl(e,t){let n=Zd(e.left,t),r=Zd(e.right,t);switch(e.op){case"+":return n+r;case"-":return n-r;case"*":return n*r;case"/":if(r===0)throw new ae("\u7B97\u8853\u5F0F\u3067\u30BC\u30ED\u9664\u7B97\u304C\u767A\u751F\u3057\u307E\u3057\u305F");return n/r;case"%":if(r===0)throw new ae("\u7B97\u8853\u5F0F\u3067\u30BC\u30ED\u9664\u7B97\u304C\u767A\u751F\u3057\u307E\u3057\u305F");return n%r}}function Zd(e,t){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached DML evaluation.`);if(e.type==="NUMBER")return e.value;if(e.type==="ARITH")return Pl(e,t);if(e.type==="STRING_FUNC")throw new ae("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 n=t[e.field]?.value??"",r=Number(n);if(Number.isNaN(r))throw new ae(`\u7B97\u8853\u5F0F\u306E\u30D5\u30A3\u30FC\u30EB\u30C9 "${e.field}" \u306E\u5024 "${n}" \u306F\u6570\u5024\u3067\u306F\u3042\u308A\u307E\u305B\u3093`);return r}function af(e){return Tl(e.where),{app:e.appId,query:Y(e.where),fields:["$id"],totalCount:!1}}function sf(e,t){return Jr(t,100).map(n=>({app:e,ids:n}))}function lf(e){return Xh.has(e??"")}function iA(e){return Qh.has(e??"")}function oA(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 n=new Date(t);return isNaN(n.getTime())?e:n.toISOString().replace(/\.\d{3}Z$/,"Z")}function aA(e){return!e||/^\d{4}-\d{2}-\d{2}$/.test(e)?e:e.replace(/\//g,"-")}function uf(e,t){return lf(t)?e===""?[]:e.split(",").map(n=>({code:n.trim()})):iA(t)?e===""?[]:e.split(",").map(n=>n.trim()):t==="DATETIME"?oA(e):t==="DATE"?aA(e):e}function cf(e,t){return lf(t)?e.map(n=>({code:n})):e}function ef(e,t,n,r){if(e.type==="ARRAY")return cf(e.elements.map(i=>i.value),n);if(e.type==="AGG_REF"||e.type==="AGG_ARITH")throw new Error("InternalError: aggregate CASE result reached DML evaluation.");return e.type==="STRING"?uf(e.value,n):e.type==="STRING_FUNC"?ye(e,t,void 0,void 0,r):e.type==="FIELD_REF"||e.type==="ARITH"?String(me(e,t,r)):String(be(e,t,void 0,void 0,r))}function pf(e){if(!e.checkGroups)return[];let t=`app${e.appId}`.toLowerCase();return[...new Set(tr(e.checkGroups).filter(n=>n.tableAlias===null||n.tableAlias.toLowerCase()===t).map(n=>n.field).filter(n=>n!=="$id"))]}function nn(e,t,n,r={}){for(let i of e.branches)if(le(i.condition,t,void 0,void 0,void 0,r))return ef(i.result,t,n,r);return e.elseResult!==null?ef(e.elseResult,t,n,r):""}function _t(e,t){let n=Ol(e,t);if(!n.ok)throw new ae(n.message);return n.value}function Ol(e,t){try{return{ok:!0,value:sA(e,t)}}catch(n){return{ok:!1,message:n instanceof Error?n.message:String(n)}}}function sA(e,t){switch(e.type){case"VARIABLE":throw new ae(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"VARIABLE_IN_LIST":throw new ae(`\u672A\u89E3\u6C7A\u306E\u914D\u5217\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"STRING":return uf(e.value,t);case"NUMBER":return z(e);case"ARRAY":return cf(e.elements.map(n=>n.value),t);case"KINTONE_FUNC":throw new ae(`${e.name}() \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`);case"IN_LIST":throw new ae("IN_LIST \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");case"ARITH_VALUE":throw new ae("\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 ae("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 ae("IN (SELECT ...) \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");case"SCALAR_SUBQUERY":throw new ae("\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 Jr(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}var ae=class extends Error{constructor(t){super(t),this.name="DmlConvertError"}};var Ll=new Set(["CHECK_BOX","MULTI_SELECT"]),lA=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function Xr(e){throw new Error(`ArgumentError: ${e}`)}function df(e,t,n){let r=uA(n.fieldType,e.field),i=cA(t,r,e.field),o=new Set(i),a=[],s=new Set,l=new Set;for(let y of e.operations){let g=y.value;g!==""&&(y.kind==="ADD"?(s.has(g)||a.push(g),s.add(g)):l.add(g))}for(let y of s)l.has(y)&&Xr(`APPLY multi-value field ${e.field} has conflicting ADD and REMOVE for ${JSON.stringify(y)}.`);let c=i.filter(y=>!l.has(y)),p=a.filter(y=>!o.has(y)),u=[...c,...p],d=new Set(i.filter(y=>l.has(y))).size,f=new Set,R=new Set,E=e.operations.map(y=>{let g=y.kind==="ADD"?f:R,S=!g.has(y.value);return g.add(y.value),{kind:y.kind,value:y.value,changed:y.value!==""&&S&&(y.kind==="ADD"?!o.has(y.value):o.has(y.value))}}),m=Ll.has(r)?u:u.map(y=>({code:y}));return{field:e.field,fieldType:r,operations:E,postImageValue:m,addedValues:p.length,removedValues:d,changedValues:p.length+d}}function uA(e,t){return Ll.has(e)||lA.has(e)?e:Xr(`APPLY multi-value target ${t} has unsupported type ${e}.`)}function cA(e,t,n){if(!Array.isArray(e))return Xr(`APPLY snapshot for ${n} must be an array.`);let r=e.map((i,o)=>Ll.has(t)?typeof i!="string"?Xr(`APPLY snapshot for ${n} must contain string values (item ${o+1}).`):i:typeof i!="object"||i===null||typeof i.code!="string"?Xr(`APPLY snapshot for ${n} must contain {code: string} values (item ${o+1}).`):i.code);return[...new Set(r.filter(i=>i!==""))]}function J(e){throw new Error(`ArgumentError: ${e}`)}function vl(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?J("APPLY parent selector must be a single positive $id."):t.right.value}function Dt(e,t){let n=e.applyBlocks;if(!n?.length)return J("APPLY block is missing.");let r=new Map(t.map(s=>[s.code,s])),i=new Map,o=new Map,a=new Map;for(let s of e.assignments)_l(s.field,null,r),pA(s.value,r);for(let s of n){(i.has(s.field)||o.has(s.field))&&J(`APPLY has more than one block for field ${s.field}.`),e.assignments.some(u=>u.field===s.field)&&J(`APPLY target ${s.field} is also assigned by parent SET.`);let l=t.find(u=>u.code===s.field&&!u.inSubtable);if(!l)return s.targetKind==="SUBTABLE"?J(`APPLY target ${s.field} is not a SUBTABLE.`):J(`APPLY target ${s.field} does not exist as a top-level field.`);if(Np(s,l.fieldType),s.targetKind==="MULTI_VALUE"){l.writable===!1&&J(`APPLY target ${s.field} is not writable (${l.fieldType}).`),o.set(s.field,l);continue}let c=l,p=new Map(t.filter(u=>u.inSubtable&&u.subtableCode===s.field).map(u=>[u.code,u]));i.set(s.field,c),a.set(s.field,p);for(let u of s.operations)if(u.kind==="PATCH"){for(let d of u.assignments)_l(d.field,s.field,r,p),Dl(d.value,s.field,r,p);u.selector.kind==="WHERE"&&Dl(u.selector.where,s.field,r,p)}else if(u.kind==="APPEND"){let d=new Set;for(let f of u.fields)d.has(f)&&J(`APPLY APPEND specifies child ${f} more than once.`),d.add(f),_l(f,s.field,r,p)}else u.kind==="REMOVE"&&u.selector.kind==="WHERE"&&Dl(u.selector.where,s.field,r,p)}return{targetTables:i,targetMultiValueFields:o,childrenByTable:a,fieldsByCode:r}}function pA(e,t){Qr(e,n=>{if(n==="$id"||n==="$revision")return;let r=t.get(n);(!r||r.inSubtable)&&J(`APPLY parent reference ${n} is not a top-level field.`),r.fieldType==="FILE"&&J(`APPLY parent FILE reference ${n} is not supported.`)})}function _l(e,t,n,r){(e.startsWith("_")||e.startsWith("$"))&&J(`APPLY assignment target ${e} is a system field.`);let i=t===null?[...n.values()].find(o=>o.code===e&&!o.inSubtable):r?.get(e);if(!i){let o=n.get(e);t!==null&&o?.inSubtable&&J(`APPLY child ${e} does not belong to subtable ${t}.`),J(`APPLY ${t===null?"parent field":"child"} ${e} does not exist.`)}(i.fieldType==="SUBTABLE"||i.fieldType==="FILE"||i.writable===!1)&&J(`APPLY assignment target ${e} is not writable (${i.fieldType}).`)}function Dl(e,t,n,r){Qr(e,i=>{if(i==="_rid"||i==="_idx"||r.has(i))return;n.get(i)?.inSubtable&&J(`APPLY child reference ${i} does not belong to subtable ${t}.`),J(`APPLY child reference ${i} does not exist in subtable ${t}.`)})}function oa(e,t){let n=Dt(e,t),r=new Set(["$id","$revision"]);for(let i of t)i.inSubtable||i.fieldType==="FILE"||r.add(i.code);for(let i of n.targetTables.values())r.add(i.code);for(let i of e.assignments)Qr(i.value,o=>{let a=n.fieldsByCode.get(o);!a?.inSubtable&&a?.fieldType!=="FILE"&&r.add(o)});return[...r]}function aa(e,t){let n={_rid:e.id??"",_idx:String(t)};for(let[r,i]of Object.entries(e.value??{}))n[r]=gf(i?.value);return n}function Ef(e){let{statement:t,snapshot:n,fieldInfos:r}=e,i=e.metadata??Dt(t,r),o=kl(n.$id?.value,"APPLY snapshot $id"),a=vl(t);return o!==a&&J(`APPLY snapshot $id ${o} does not match requested $id ${a}.`),mf(t,n,i,o,e.evaluationContext)}function Rf(e,t,n,r=Dt(e,n),i={}){let o=new Set;return t.map(a=>{let s=kl(a.$id?.value,"APPLY snapshot $id");return o.has(s)&&J(`APPLY snapshots contain duplicate parentId ${s}.`),o.add(s),mf(e,a,r,s,i)})}function mf(e,t,n,r,i={}){let o=kl(t.$revision?.value,"APPLY snapshot $revision"),a=[],s=[];for(let u of e.applyBlocks){if(u.targetKind==="MULTI_VALUE"){let C=n.targetMultiValueFields.get(u.field);C||J(`APPLY multi-value metadata for ${u.field} is missing.`),s.push(df(u,t[u.field]?.value,C));continue}let d=n.childrenByTable.get(u.field),f=yA(t,u.field),R=new Set;for(let C of f)C.id||J(`APPLY snapshot for ${u.field} contains a row without _rid.`),R.has(C.id)&&J(`APPLY snapshot for ${u.field} contains duplicate _rid ${C.id}.`),R.add(C.id);let E=C=>C.field==="_rid"?"SINGLE_LINE_TEXT":C.field==="_idx"?"NUMBER":d.get(C.field)?.fieldType,m=[],y=[],g=[],S=new Set,h=new Set,I=new Set,N=u.operations.some(C=>C.kind==="REMOVE");for(let[C,_]of u.operations.entries()){if(_.kind==="APPEND"){let D=Ul(_,d,u.field,i);g.push({kind:"APPEND",addedRows:D.length}),y.push(...D);continue}if(_.kind==="REMOVE"){let D=EA(_,f,E,u.field,i);_.expectRows&&ff(_.expectRows,D.length,r,u.field,C,_.kind),g.push({kind:"REMOVE",removedRows:D.length});for(let A of D){let w=f[A].id;h.has(A)&&J(`APPLY row ${w} is selected by both PATCH and REMOVE.`),I.has(A)&&J(`APPLY removes row ${w} more than once.`),I.add(A)}continue}if(_.kind!=="PATCH")continue;let b=fA(_,f,E,u.field,i);_.expectRows&&ff(_.expectRows,b.length,r,u.field,C,_.kind),g.push({kind:"PATCH",matchedRows:b.length,changedRows:b.length});for(let D of b){let A=f[D];I.has(D)&&J(`APPLY row ${A.id} is selected by both PATCH and REMOVE.`),h.add(D);let w=aa(A,D);for(let x of _.assignments){let O=`${A.id}\0${x.field}`;S.has(O)&&J(`APPLY patches cell ${A.id}.${x.field} more than once.`),S.add(O),m.push({rowIndex:D,field:x.field,value:ia(x.value,w,E,i)})}}}let U=new Map;for(let C of m){let _=U.get(C.rowIndex)??{};_[C.field]={value:C.value},U.set(C.rowIndex,_)}let M=[...f.flatMap((C,_)=>I.has(_)?[]:[{id:C.id,value:{...C.value,...U.get(_)??{}}}]),...y],v={table:u.field,operations:g,changedSubtableRows:U.size+I.size+y.length,deletedRows:I.size,snapshotRowIds:f.map(C=>C.id),postImageRows:M};N?a.push({...v,payloadShape:"FULL_SURVIVORS",removedRowIds:f.flatMap((C,_)=>I.has(_)?[C.id]:[]),payloadRows:M.map(C=>({...C.id===void 0?{}:{id:C.id},value:C.value}))}):a.push({...v,payloadShape:"PATCH_ONLY",payloadRows:[...f.map((C,_)=>{let b=U.get(_);return b?{id:C.id,value:b}:{id:C.id}}),...y.map(C=>({value:C.value}))]})}let l=gA(t),c={};for(let u of e.assignments){let d=n.fieldsByCode.get(u.field)?.fieldType;c[u.field]={value:Nl(u.value,l,d,t,i)}}let p={...t};Object.assign(p,c);for(let u of a)p[u.table]={value:u.postImageRows};for(let u of s)p[u.field]={value:u.postImageValue};return{app:e.appId,parentId:r,revision:o,parentRows:1,changedSubtableRows:a.reduce((u,d)=>u+d.changedSubtableRows,0),parentValues:c,postImage:p,tables:a,multiValues:s}}function ff(e,t,n,r,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}`;J(`APPLY EXPECT ROWS mismatch for parent $id ${n}, table ${r}, operation ${i+1} (${o}): expected ${s}, actual ${t}.`)}function sa(e,t){let n=e.tables.map(o=>{let a=t[o.table]?.value;if(!Array.isArray(a)||a.length!==o.postImageRows.length)return J(`APPLY normalized post-image for ${o.table} has an unexpected row count.`);let s=o.payloadRows.map((l,c)=>{let p=a[c];return p?.value?l.id===void 0?{value:p.value}:l.value===void 0?{id:l.id}:{id:l.id,value:Object.fromEntries(Object.keys(l.value).map(u=>[u,p.value[u]]))}:J(`APPLY normalized post-image for ${o.table} row ${c+1} has no value.`)});return{...o,payloadRows:s,postImageRows:a}}),r=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}:J(`APPLY normalized post-image for ${o.field} is not an array.`)});return{...e,parentValues:r,tables:n,multiValues:i,postImage:t}}function Ul(e,t,n,r={}){return e.values.map(i=>({value:dA(e,i,t,n,r)}))}function dA(e,t,n,r,i){if(t.length!==e.fields.length)return J(`APPLY APPEND for ${r} has ${t.length} values for ${e.fields.length} fields.`);let o=new Map(e.fields.map((s,l)=>[s,t[l]])),a={};for(let s of n.values()){if(s.fieldType==="FILE"||s.writable===!1)continue;let l=o.get(s.code);a[s.code]={value:l===void 0?Ml(s):l.type==="CASE_VALUE"?nn(l.expr,{},s.fieldType,i):_t(l,s.fieldType)}}return a}function Ml(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 fA(e,t,n,r,i={}){return yf(e.selector,t,n,r,i)}function EA(e,t,n,r,i={}){return yf(e.selector,t,n,r,i)}function yf(e,t,n,r,i={}){if(e.kind==="ALL_ROWS")return t.map((c,p)=>p);let o=e.where,a=t.flatMap((c,p)=>le(o,aa(c,p),n,void 0,void 0,i)?[p]:[]),s=RA(o);s!==null&&a.length===0&&J(`APPLY _rid ${s} does not exist in snapshot table ${r}.`);let l=mA(o);return l!==null&&a.length===0&&J(`APPLY _idx ${l} does not exist in snapshot table ${r}.`),a}function RA(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 mA(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 yA(e,t){let n=e[t]?.value;return Array.isArray(n)?n.map(r=>{let i=r;return{id:typeof i.id=="string"?i.id:"",value:i.value&&typeof i.value=="object"?i.value:{}}}):J(`APPLY snapshot field ${t} is not a subtable value.`)}function kl(e,t){let n=Number(e);return(!Number.isSafeInteger(n)||n<=0)&&J(`${t} must be a positive integer.`),n}function gA(e){let t={};for(let[n,r]of Object.entries(e))t[n]=gf(r?.value);return t}function gf(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return String(e);try{return JSON.stringify(e)}catch{return String(e)}}function Qr(e,t){if(Array.isArray(e)){e.forEach(r=>Qr(r,t));return}if(e===null||typeof e!="object")return;let n=e;(n.type==="FIELD"||n.type==="FIELD_REF")&&typeof n.field=="string"&&t(n.field);for(let r of Object.values(n))Qr(r,t)}function fe(e){throw new Error(`ArgumentError: ${e}`)}function ua(e){let t=Number(e.$revision?.value);return!Number.isSafeInteger(t)||t<=0?fe("APPLY snapshot $revision must be a positive integer."):t}function Zr(e){if(!Number.isSafeInteger(e.parentId)||e.parentId<=0)return fe("APPLY plan parentId must be a positive integer.");if(!Number.isSafeInteger(e.revision)||e.revision<=0)return fe("APPLY plan revision must be a positive integer.");let t={...e.parentValues},n=new Set(Object.keys(t));for(let i of e.multiValues)n.has(i.field)&&fe(`APPLY plan contains duplicate top-level field ${i.field}.`),n.add(i.field),t[i.field]={value:i.postImageValue};let r=new Set;for(let i of e.tables)n.has(i.table)&&fe(`APPLY plan contains duplicate top-level field ${i.table}.`),r.has(i.table)&&fe(`APPLY plan contains duplicate table ${i.table}.`),r.add(i.table),n.add(i.table),hA(i),t[i.table]={value:i.payloadRows};return{app:e.app,records:[{id:e.parentId,revision:e.revision,record:t}]}}function hf(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 fe("prepared APPLY plans and records must have the same positive-app parent count.");let n=[];for(let r=0;r<e.records.length;r+=100)n.push({app:t,records:e.records.slice(r,r+100)});return n}function hA(e){let t=xl(e.snapshotRowIds,`${e.table} snapshot`),n=e.payloadRows.flatMap(p=>p.id===void 0?[]:[p.id]);for(let p of e.payloadRows)p.id===void 0&&p.value===void 0&&fe(`APPLY ${e.payloadShape} table ${e.table} contains an APPEND row without value.`);if(xl(n,`${e.table} payload`),e.payloadShape==="PATCH_ONLY"){e.operations.some(d=>d.kind==="REMOVE")&&fe(`APPLY PATCH_ONLY table ${e.table} cannot contain REMOVE.`);let p=e.payloadRows.slice(0,t.length).map(d=>d.id??"");la(t,p,`APPLY PATCH_ONLY table ${e.table} must retain every snapshot row id in order.`),e.payloadRows.slice(t.length).some(d=>d.id!==void 0)&&fe(`APPLY PATCH_ONLY table ${e.table} must place every APPEND row after snapshot rows.`);let u=e.postImageRows.slice(0,t.length).map(d=>d.id??"");la(t,u,`APPLY PATCH_ONLY table ${e.table} post-image must retain every snapshot row id in order.`),e.postImageRows.slice(t.length).some(d=>d.id!==void 0)&&fe(`APPLY PATCH_ONLY table ${e.table} post-image must place every APPEND row after snapshot rows.`);return}e.operations.some(p=>p.kind==="REMOVE")||fe(`APPLY FULL_SURVIVORS table ${e.table} requires a REMOVE operation.`);let r=xl(e.removedRowIds,`${e.table} removed`);e.deletedRows!==r.length&&fe(`APPLY FULL_SURVIVORS table ${e.table} deleted row count does not match removed ids.`),e.payloadRows.length!==e.postImageRows.length&&fe(`APPLY FULL_SURVIVORS table ${e.table} payload/post-image row counts must match.`);let i=e.postImageRows.flatMap(p=>p.id===void 0?[]:[p.id]),o=new Set(r),a=new Set(i);for(let p of r)a.has(p)&&fe(`APPLY FULL_SURVIVORS table ${e.table} has intersecting survivor/removed id ${p}.`);let s=t.filter(p=>!o.has(p));la(s,i,`APPLY FULL_SURVIVORS table ${e.table} must retain every survivor in snapshot order.`);let l=e.payloadRows.slice(0,i.length).map(p=>p.id??"");la(i,l,`APPLY FULL_SURVIVORS table ${e.table} payload must enumerate every survivor in order.`),(e.payloadRows.slice(i.length).some(p=>p.id!==void 0)||e.postImageRows.slice(i.length).some(p=>p.id!==void 0))&&fe(`APPLY FULL_SURVIVORS table ${e.table} must place every APPEND row after survivors.`),e.payloadRows.some(p=>p.value===void 0)&&fe(`APPLY FULL_SURVIVORS table ${e.table} requires values for every survivor.`),e.payloadRows.some((p,u)=>!Fl(p.value,e.postImageRows[u]?.value))&&fe(`APPLY FULL_SURVIVORS table ${e.table} payload must contain every post-image child value.`);let c=new Set([...i,...r]);(c.size!==t.length||t.some(p=>!c.has(p)))&&fe(`APPLY FULL_SURVIVORS table ${e.table} does not partition every snapshot row.`)}function xl(e,t){let n=[...e],r=new Set;for(let i of n)i||fe(`APPLY ${t} contains an empty row id.`),r.has(i)&&fe(`APPLY ${t} contains duplicate row id ${i}.`),r.add(i);return n}function la(e,t,n){(e.length!==t.length||e.some((r,i)=>r!==t[i]))&&fe(n)}function Fl(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)=>Fl(a,t[s]));if(e===null||t===null||typeof e!="object"||typeof t!="object")return!1;let n=e,r=t,i=Object.keys(n),o=Object.keys(r);return i.length===o.length&&i.every(a=>Object.prototype.hasOwnProperty.call(r,a)&&Fl(n[a],r[a]))}function Af(e,t,n,r){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<n||i>r)throw new Error(`SettingsError: numberPrecision.${t} must be between ${n} and ${r}.`);return i}function Sf(e){let t=e.numberPrecision;if(t==null||typeof t!="object")throw new Error("SettingsError: numberPrecision is missing from app settings.");let n=Af(t.digits,"digits",1,30),r=Af(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:n,decimalPlaces:r,roundingMode:i}}function Tf(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 AA=new Set(["CHECK_BOX","MULTI_SELECT"]),SA=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT"]);function Be(e,t,n){if(t.fieldType==="DATE"||t.fieldType==="TIME"||t.fieldType==="DATETIME"){let i=TA(e);if(i!==""&&!IA(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 r;try{r=ei(e,t.fieldType)}catch(i){let o=i instanceof Error?i.message:String(i);return{ok:!1,code:wA(t.fieldType),message:o}}if(t.required&&ca(r))return{ok:!1,code:"ERR_REQUIRED",message:`${t.code} \u306F\u5FC5\u9808\u3067\u3059`};if(!ca(r)&&t.fieldType==="NUMBER"){let i=String(r),o=Ae(i);if(o===null)return{ok:!1,code:"ERR_TYPE_NUMBER",message:`${t.code} \u306F\u6570\u5024\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`};if(t.minValue!=null&&ao(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&&ao(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(n!==void 0){let{integerDigits:a}=Tf(o),s=n.digits-n.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=${n.digits}, decimalPlaces=${n.decimalPlaces})`}}}if(!ca(r)&&(t.fieldType==="DATE"||t.fieldType==="TIME"||t.fieldType==="DATETIME")&&!Rn(String(r),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 r=="string"){let i=r.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!ca(r)&&SA.has(t.fieldType)&&t.optionOrder&&(Array.isArray(r)?r.map(String):[String(r)]).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:r}}function TA(e){return e==null?"":pa(e)&&e.type==="NUMBER"?z(e):pa(e)&&e.type==="STRING"?e.value:typeof e=="string"||typeof e=="number"?String(e):""}function IA(e,t){if(t==="DATE")return Rn(e.replace(/\//g,"-"),"DATE");if(t==="TIME")return Rn(e,"TIME");let n=e.replace(/\//g,"-").replace(" ","T");return/T\d{2}:\d{2}$/.test(n)&&(n+=":00"),/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$/.test(n)?Rn(n.slice(0,10),"DATE")&&Rn(n.slice(11),"TIME"):Rn(n,"DATETIME")}function ei(e,t){if(pa(e)){let r=Ol(e,t);if(!r.ok)throw new Error(r.message);return r.value}if(Array.isArray(e))return e.map(r=>typeof r=="object"&&r!==null&&"code"in r?String(r.code):String(r));let n=e==null?"":String(e);if(AA.has(t)){if(n==="")return[];try{let r=JSON.parse(n);if(Array.isArray(r))return r.map(String)}catch{}return n.split(",").map(r=>r.trim())}return n}function pa(e){return typeof e=="object"&&e!==null&&typeof e.type=="string"}function mn(e){if(e==null||e==="")return!0;if(Array.isArray(e))return e.length===0;if(pa(e)){if(e.type==="STRING")return e.value==="";if(e.type==="ARRAY")return e.elements.length===0}return!1}function ca(e){return e===""||Array.isArray(e)&&e.length===0}function wA(e){return e==="NUMBER"?"ERR_TYPE_NUMBER":"ERR_TYPE_DATE"}function Rn(e,t){if(t==="TIME"){let c=/^(\d{2}):(\d{2})(?::(\d{2}))?$/.exec(e);return c!==null&&Number(c[1])<=23&&Number(c[2])<=59&&Number(c[3]??0)<=59}let n=t==="DATE"?e:e.slice(0,10),r=/^(\d{4})-(\d{2})-(\d{2})$/.exec(n);if(!r)return!1;let i=Number(r[1]),o=Number(r[2]),a=Number(r[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)&&Rn(l,"TIME")}var rr=["$err_statement","$err_operation","$err_row","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id"];function Gl(e,t,n){let r=new Map(n.map(i=>[i.code,i]));for(let i of e)if(i.mode==="update"){i.record??={};for(let o of t){if(!i.payload.has(o))continue;let a=i.payload.get(o),s=r.get(o).fieldType,l=["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(s)&&Array.isArray(a)&&a.every(p=>typeof p=="object"&&p!==null&&"code"in p),c=a;try{c=ei(a,s)}catch{}i.record[o]={value:l?a:c}}}}function Kl(e,t,n,r,i,o,a,s=[],l=!0,c=!0,p={}){let u=new Map(i.map(m=>[m.code,m])),d=[],f=new Set,R=[];p.validateUpdateBuiltIns===!1&&Gl(e,r,i);let E;for(let m of e){m.record??={};let y=c?[...m.preErrors]:[],g=[],S=[],h=m.mode==="create"||p.validateUpdateBuiltIns!==!1;for(let P of r){if(!m.payload.has(P))continue;let M=m.payload.get(P),v=u.get(P).fieldType,C=["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(v)&&Array.isArray(M)&&M.every(b=>typeof b=="object"&&b!==null&&"code"in b);if(!h)continue;let _=Be(M,u.get(P),a);_.ok?m.record[P]={value:C?M:_.value}:g.push({field:P,code:_.code,message:_.message})}if(l&&m.mode==="create")for(let P of i){if(P.inSubtable||m.payload.has(P.code))continue;if(mn(P.defaultValue)){let v=Be("",P,a);v.ok?P.required&&g.push({field:P.code,code:"ERR_REQUIRED",message:`${P.code} \u306F\u5FC5\u9808\u3067\u3059`}):g.push({field:P.code,code:v.code,message:v.message})}else{let v=Be(P.defaultValue,P,a);v.ok||g.push({field:P.code,code:v.code,message:`\u65E2\u5B9A\u5024: ${v.message}`})}}if(s.length>0){let P=m.evaluationRow??Object.fromEntries([...m.payload].map(([C,_])=>[C,ft(_)])),M=m.evaluationFieldTypes,v=C=>{let _=C.tableAlias?`${C.tableAlias}.${C.field}`:C.field;return M?.get(_)??M?.get(C.field)};try{for(let C of Zo(s,P,v))S.push({field:"",code:"ERR_CHECK",message:C.message})}catch(C){E??=C}}let I=P=>P.map(M=>{let v={};for(let C of n)v[C]=ft(m.payload.get(C));return v.$err_statement=String(o),v.$err_operation=t,v.$err_row=String(m.rowNumber),v.$err_field=M.field,v.$err_code=M.code,v.$err_message=M.message,v.$err_value="",v.$err_subtable="",v.$err_subrow="",v.$err_subrow_id="",v}),N={rowNumber:m.rowNumber,preErrors:I(y),builtInErrors:I(g),checkErrors:I(S)};R.push(N);let U=[...N.preErrors,...N.builtInErrors,...N.checkErrors];U.length>0&&f.add(m.rowNumber),d.push(...U)}if(E!==void 0)throw E;return{errors:d,invalidRows:f.size,invalidRowNumbers:f,candidateResults:R}}function ft(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(n=>n.value)??[])}return Array.isArray(e)?JSON.stringify(e):String(e)}var Bl=["required","length","range","choice"];function $l(e){return[...e.required===!0?["required"]:[],...e.minLength!==void 0||e.maxLength!==void 0?["length"]:[],...e.minValue!==void 0||e.maxValue!==void 0?["range"]:[],...e.optionOrder!==void 0?["choice"]:[]]}function Wl(e){let t=e.filter(r=>!r.inSubtable),n=new Map;for(let r of e){if(!r.inSubtable||!r.subtableCode)continue;let i=n.get(r.subtableCode)??[];i.push(r),n.set(r.subtableCode,i)}return{topLevel:t,topByCode:new Map(t.map(r=>[r.code,r])),childrenByTable:n}}function bA(e){return $l(e).length>0}function NA(e){return e.fieldType==="NUMBER"||bA(e)}function da(e,t,n){return{subtable:e,subrow:t+1,subrowId:String(n.id??"")}}function Vl(e,t){let{topByCode:n,childrenByTable:r}=Wl(t),i=NA;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,c)=>{let p=c?`${c}\0${l.code}`:l.code;if(a.has(p))throw new Error(`ArgumentError: VALIDATE \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${l.code} \u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059\u3002`);if(a.add(p),!i(l))throw new Error(`ArgumentError: VALIDATE \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${l.code} \u306B\u306F\u76E3\u67FB\u53EF\u80FD\u306A\u5236\u7D04\u304C\u3042\u308A\u307E\u305B\u3093\u3002`);o.push({field:l,...c?{subtableCode:c}:{}})};for(let l of e.targets){if(l.kind==="SUBTABLE"){let u=r.get(l.subtableCode);if(!u)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 d of l.children){let f=u.find(R=>R.code===d);if(!f){let R=[...r.entries()].some(([E,m])=>E!==l.subtableCode&&m.some(y=>y.code===d));throw new Error(R?`ArgumentError: VALIDATE \u306E\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${d} \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 ${d} \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB ${l.subtableCode} \u306B\u5B58\u5728\u3057\u307E\u305B\u3093\u3002`)}s(f,l.subtableCode)}continue}let c=l.field;if(c==="$id")throw new Error("ArgumentError: VALIDATE \u3067\u306F\u30B7\u30B9\u30C6\u30E0\u30D5\u30A3\u30FC\u30EB\u30C9 $id \u3092\u76E3\u67FB\u3067\u304D\u307E\u305B\u3093\u3002");let p=n.get(c);if(p?.fieldType==="SUBTABLE"){let u=(r.get(c)??[]).filter(i);if(u.length===0)throw new Error(`ArgumentError: VALIDATE \u306E\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB ${c} \u306B\u306F\u76E3\u67FB\u53EF\u80FD\u306A\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u3042\u308A\u307E\u305B\u3093\u3002`);u.forEach(d=>s(d,c));continue}if(p){s(p);continue}throw[...r.values()].some(u=>u.some(d=>d.code===c))?new Error(`ArgumentError: VALIDATE \u306E\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${c} \u306F\u6240\u6709\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u3092\u542B\u3080 T(${c}) \u5F62\u5F0F\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`):new Error(`ArgumentError: VALIDATE \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${c} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093\u3002`)}return o}function ti(e,t){return mn(e)?"":ft(ei(e,t))}var CA=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]),ni=rr;function Et(e,t=["$id"]){let n=Wl(e),r=n.topLevel.filter(o=>o.fieldType!=="SUBTABLE"&&o.fieldType!=="FILE"&&!CA.has(o.fieldType)),i=new Map;for(let[o,a]of n.childrenByTable)i.set(o,a.filter(s=>s.fieldType!=="FILE"));return{topLevel:r,subtables:i,payloadFields:["$id",...new Set(t.filter(o=>o!=="$id"))]}}function yn(e,t){if(t.topLevel.some(n=>n.fieldType==="NUMBER"&&n.code in e))return!0;for(let[n,r]of t.subtables){if(!r.some(o=>o.fieldType==="NUMBER"))continue;let i=e[n]?.value;if(Array.isArray(i))for(let o of i){let a=o?.value;if(r.some(s=>s.fieldType==="NUMBER"&&!!a&&s.code in a))return!0}}return!1}function gn(e,t,n,r,i=1,o="UPDATE"){let a=PA(e),s=[],l=new Set,c=[...t.payloadFields,...ni],p=ft(e.$id?.value),u=(d,f,R,E)=>{l.add(i);let m={};for(let y of t.payloadFields)m[y]=y==="$id"?p:ft(e[y]?.value);m.$err_statement=String(r),m.$err_operation=o,m.$err_row=String(i),m.$err_field=d.code,m.$err_code=R.code,m.$err_message=R.message,m.$err_value=ti(f,d.fieldType),m.$err_subtable=E?.subtable??"",m.$err_subrow=E?String(E.subrow):"",m.$err_subrow_id=E?.subrowId??"",s.push(m)};for(let d of t.topLevel){let f=e[d.code]?.value,R=Be(f,d,n);R.ok?a[d.code]={value:If(f,d.fieldType,R.value)}:u(d,f,R)}for(let[d,f]of t.subtables){let R=e[d]?.value;if(!Array.isArray(R))continue;let E=a[d]?.value;for(let m=0;m<R.length;m++){let y=R[m],g=E[m];for(let S of f){let h=y.value?.[S.code]?.value,I=Be(h,S,n);I.ok?(g.value??={},g.value[S.code]={value:If(h,S.fieldType,I.value)}):u(S,h,I,da(d,m,y))}}}return{normalizedRecord:a,errors:s,columns:c,invalidRows:l.size,invalidRowNumbers:l,errorCount:s.length}}function If(e,t,n){return["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(t)&&Array.isArray(e)&&e.every(r=>typeof r=="object"&&r!==null&&"code"in r)?e:n}function PA(e){let t={};for(let[n,r]of Object.entries(e)){let i=r?.value;t[n]={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 fa(e){let{statement:t,snapshots:n,fieldInfos:r,metadata:i,dmlMaxRows:o,dmlMaxSubtableRows:a,statementNumber:s=1}=e;wf(o,"dmlMaxRows"),wf(a,"dmlMaxSubtableRows");for(let S of n)ua(S);let l=Rf(t,n,r,i),c=Et(r,t.assignments.map(S=>S.field)),p=l.some(S=>yn(S.postImage,c));if(p&&!e.loadNumberPrecision)throw new Error("InternalError: APPLY number precision loader is required for NUMBER post-images.");let u=p?await e.loadNumberPrecision():void 0,d=l.map((S,h)=>gn(S.postImage,c,u,s,e.parentRowNumbers?.[h]??h+1));if(!t.validateOnly){let S=d.flatMap(h=>h.errors);if(S.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:d[0]?.columns??[],errors:S})}`)}let f=l.length,R=l.reduce((S,h)=>S+h.changedSubtableRows,0),E=f>o||R>a;if(!t.validateOnly&&f>o)throw new Error(`ArgumentError: APPLY parent rows (${f}) exceed dmlMaxRows (${o}).`);if(!t.validateOnly&&R>a)throw new Error(`ArgumentError: APPLY changed subtable rows (${R}) exceed dmlMaxSubtableRows (${a}).`);let m=l.map((S,h)=>sa(S,d[h].normalizedRecord)),y=m.flatMap(S=>Zr(S).records),g=d.map(S=>({errors:S.errors,columns:S.columns,invalidRows:S.invalidRows,errorCount:S.errorCount}));return bf({plans:m,records:y,validations:g,guards:{revisionRequired:!0,parentRows:f,dmlMaxRows:o,subtableRows:R,dmlMaxSubtableRows:a,wouldExceed:E}})}function wf(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function bf(e,t=new Set){if(e===null||typeof e!="object"||t.has(e))return e;t.add(e);for(let n of Object.values(e))bf(n,t);return Object.freeze(e)}var Hl=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function Ea(e,t){if(new Set(e.fields).size!==e.fields.length)return Rt("DML target fields contain duplicates.");let n=new Map(t.map(o=>[o.code,o]));for(let o of e.fields)Nf(o,null,n);let r=new Map,i=new Map;for(let o of e.applyBlocks??[]){if(r.has(o.field))return Rt(`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 Rt(`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]));r.set(o.field,a),i.set(o.field,s);for(let l of o.operations){if(l.kind!=="APPEND")return Rt(`APPLY INSERT supports APPEND only (${l.kind}).`);let c=new Set;for(let p of l.fields){if(c.has(p))return Rt(`APPLY APPEND specifies child ${p} more than once.`);c.add(p),Nf(p,o.field,n,s)}for(let p of l.values)if(p.length!==l.fields.length)return Rt(`APPLY APPEND for ${o.field} has ${p.length} values for ${l.fields.length} fields.`)}}return{targetTables:r,targetMultiValueFields:new Map,childrenByTable:i,fieldsByCode:n}}function OA(e,t,n=Ea(e,t),r){let i=new Map(t.map(s=>[s.code,s.fieldType])),o=na(e,i).flatMap(s=>s.records);if(r&&r.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=n.childrenByTable.get(s.field),c=s.operations.flatMap(p=>Ul(p,l,s.field));return{table:s.field,rows:c,addedRows:c.length}});return o.map((s,l)=>{let c={};for(let u of t)u.inSubtable||u.fieldType==="SUBTABLE"||u.fieldType==="FILE"||u.writable===!1||Hl.has(u.fieldType)||(c[u.code]=s[u.code]??{value:Ml(u)});let p={...s};for(let u of a){let d=u.rows.map(f=>({value:f.value}));c[u.table]={value:d},p[u.table]={value:d}}return{parentRowNumber:r?.[l]??l+1,tables:a,postImage:c,record:p}})}async function ri(e){let{statement:t,fieldInfos:n,dmlMaxRows:r,dmlMaxSubtableRows:i,statementNumber:o=1}=e;Cf(r,"dmlMaxRows"),Cf(i,"dmlMaxSubtableRows");let a=e.metadata??Ea(t,n),s=OA(t,n,a,e.parentRowNumbers),l=n.filter(h=>h.fieldType==="SUBTABLE"||h.fieldType!=="FILE"&&h.writable!==!1&&!Hl.has(h.fieldType)),c=Et(l,t.fields),p=s.some(h=>yn(h.postImage,c));if(p&&!e.loadNumberPrecision)throw new Error("InternalError: APPLY number precision loader is required for NUMBER post-images.");let u=p?await e.loadNumberPrecision():void 0,d=s.map(h=>gn(h.postImage,c,u,o,h.parentRowNumber,"INSERT"));if(!t.validateOnly){let h=d.flatMap(I=>I.errors);if(h.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:d[0]?.columns??[],errors:h})}`)}let f=s.length,R=s.reduce((h,I)=>h+I.tables.reduce((N,U)=>N+U.addedRows,0),0),E=f>r||R>i;if(!t.validateOnly&&f>r)throw new Error(`ArgumentError: APPLY parent rows (${f}) exceed dmlMaxRows (${r}).`);if(!t.validateOnly&&R>i)throw new Error(`ArgumentError: APPLY changed subtable rows (${R}) exceed dmlMaxSubtableRows (${i}).`);let m=s.map((h,I)=>{let N=d[I].normalizedRecord,U={};for(let P of t.fields)U[P]=N[P];for(let P of h.tables){let M=N[P.table]?.value;U[P.table]={value:P.rows.map((v,C)=>({value:Object.fromEntries(Object.keys(v.value).map(_=>[_,M[C]?.value?.[_]??v.value[_]]))}))}}return{...h,postImage:N,record:U}}),y=m.map(h=>h.record),g=[];for(let h=0;h<y.length;h+=100)g.push({app:t.appId,records:y.slice(h,h+100)});let S=d.map(h=>({errors:h.errors,columns:h.columns,invalidRows:h.invalidRows,errorCount:h.errorCount}));return Pf({applyBlocks:t.applyBlocks??[],candidates:m,records:y,batches:g,validations:S,guards:{revisionRequired:!1,parentRows:f,dmlMaxRows:r,subtableRows:R,dmlMaxSubtableRows:i,wouldExceed:E}})}function Nf(e,t,n,r){if(e.startsWith("_")||e.startsWith("$"))return Rt(`APPLY assignment target ${e} is a system field.`);let i=t===null?[...n.values()].find(o=>o.code===e&&!o.inSubtable):r?.get(e);if(!i){let o=n.get(e);return t!==null&&o?.inSubtable?Rt(`APPLY child ${e} does not belong to subtable ${t}.`):Rt(`APPLY ${t===null?"parent field":"child"} ${e} does not exist.`)}if(i.fieldType==="SUBTABLE"||i.fieldType==="FILE"||i.writable===!1||Hl.has(i.fieldType))return Rt(`APPLY assignment target ${e} is not writable (${i.fieldType}).`)}function Cf(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function Rt(e){throw new Error(`ArgumentError: ${e}`)}function Pf(e,t=new Set){if(e===null||typeof e!="object"||t.has(e))return e;t.add(e);for(let n of Object.values(e))Pf(n,t);return Object.freeze(e)}async function Lf(e){let{statement:t,matches:n,fieldInfos:r,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a=1}=e;Of(i,"dmlMaxRows"),Of(o,"dmlMaxSubtableRows"),UA(t,n);let s=n.filter(y=>y.targetId===void 0),l=n.filter(y=>y.targetId!==void 0),c=LA(t,s.map(y=>y.sourceRowIndex)),p=await ri({statement:c,fieldInfos:r,metadata:Ea(c,r),dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a,parentRowNumbers:s.map(y=>y.sourceRowIndex+1),loadNumberPrecision:e.loadNumberPrecision}),u=[],d=new Set;for(let y of l){let g=y.targetId;d.has(g)&&Yl(`UPSERT APPLY resolves more than one source row to parent $id ${g}.`),d.add(g),y.snapshot||Yl(`UPSERT APPLY snapshot for parent $id ${g} is missing.`);let S=Number(y.snapshot.$id?.value);S!==g&&Yl(`UPSERT APPLY snapshot $id ${S} does not match target $id ${g}.`);let h=_A(t,y.sourceRowIndex,g),I=h.applyBlocks?.length?Dt(h,r):DA(r);u.push(await fa({statement:h,snapshots:[y.snapshot],fieldInfos:r,metadata:I,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a,parentRowNumbers:[y.sourceRowIndex+1],loadNumberPrecision:e.loadNumberPrecision}))}let f=vA(u,i,o),R=p.guards.parentRows+f.guards.parentRows,E=p.guards.subtableRows+f.guards.subtableRows,m=R>i||E>o;if(!t.validateOnly){let y=[...p.validations.flatMap(g=>g.errors),...f.validations.flatMap(g=>g.errors)];if(y.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:p.validations[0]?.columns??f.validations[0]?.columns??[],errors:y})}`)}if(!t.validateOnly&&R>i)throw new Error(`ArgumentError: APPLY parent rows (${R}) exceed dmlMaxRows (${i}).`);if(!t.validateOnly&&E>o)throw new Error(`ArgumentError: APPLY changed subtable rows (${E}) exceed dmlMaxSubtableRows (${o}).`);return jl({create:p,update:f,createBatches:p.batches,updateBatches:MA(f.records,t.appId),guards:{revisionRequired:f.guards.parentRows>0,parentRows:R,dmlMaxRows:i,subtableRows:E,dmlMaxSubtableRows:o,wouldExceed:m,create:p.guards,update:f.guards}})}function LA(e,t){return{type:"INSERT",appId:e.appId,fields:[...e.fields],values:t.map(n=>e.values[n]),applyBlocks:e.onInsertApplyBlocks??[],validateOnly:!0}}function _A(e,t,n){let r=e.fields.map((i,o)=>({field:i,value:e.values[t][o]}));return{type:"UPDATE",appId:e.appId,subtableCode:null,assignments:r,from:null,where:{type:"BINARY",op:"=",left:{type:"FIELD",tableAlias:null,field:"$id"},right:{type:"NUMBER",value:n,raw:String(n)}},applyBlocks:e.onUpdateApplyBlocks??[],validateOnly:!0}}function DA(e){return{targetTables:new Map,targetMultiValueFields:new Map,childrenByTable:new Map,fieldsByCode:new Map(e.map(t=>[t.code,t]))}}function vA(e,t,n){let r=e.flatMap(s=>s.plans),i=e.flatMap(s=>s.records),o=e.flatMap(s=>s.validations),a=r.reduce((s,l)=>s+l.changedSubtableRows,0);return jl({plans:r,records:i,validations:o,guards:{revisionRequired:!0,parentRows:r.length,dmlMaxRows:t,subtableRows:a,dmlMaxSubtableRows:n,wouldExceed:r.length>t||a>n}})}function UA(e,t){if(t.length!==e.values.length)throw new Error("InternalError: UPSERT APPLY match count differs from VALUES rows.");let n=new Set;for(let r of t){if(!Number.isSafeInteger(r.sourceRowIndex)||r.sourceRowIndex<0||r.sourceRowIndex>=e.values.length||n.has(r.sourceRowIndex))throw new Error("InternalError: UPSERT APPLY matches must cover each source row exactly once.");n.add(r.sourceRowIndex)}}function MA(e,t){let n=[];for(let r=0;r<e.length;r+=100)n.push({app:t,records:e.slice(r,r+100)});return n}function Of(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function Yl(e){throw new Error(`ArgumentError: ${e}`)}function jl(e,t=new Set){if(e===null||typeof e!="object"||t.has(e))return e;t.add(e);for(let n of Object.values(e))jl(n,t);return Object.freeze(e)}function oi(e){return ir("UPDATE",[vf(e)])}function zl(e){return ir("INSERT",[Df(e)])}function ql(e){return ir("UPSERT",[Df(e.create),vf(e.update)])}function Ye(e,t){let n=t.failedBranch?.toLowerCase(),r=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=n===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:r,partialSuccess:{possible:!0,successfulParents:t.successfulParents,successfulChunks:t.successfulChunks,...n?{failedBranch:n}:{},...t.retryAttempted!==void 0?{retryAttempted:t.retryAttempted}:{}}}}function ma(e,t,n){return e.type==="UPDATE"?ir("UPDATE",[Ra("update",e.applyBlocks??[],null,!0,t,n)]):e.type==="INSERT"?ir("INSERT",[Ra("insert",e.applyBlocks??[],e.values.length,!1,t,n)]):ir("UPSERT",[Ra("insert",e.onInsertApplyBlocks??[],null,!1,t,n),Ra("update",e.onUpdateApplyBlocks??[],null,!0,t,n)])}function ir(e,t){return{statementKind:e,branches:t,nonTransactional:!0,partialSuccess:{possible:!0}}}function Df(e){let t=new Map;if(e.applyBlocks)for(let n of e.applyBlocks){let r=n.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(n.field,{targetKind:n.targetKind,field:n.field,operations:r,changedCount:r.reduce((i,o)=>i+(o.addedRows??0),0)})}else for(let n of e.candidates)for(let r of n.tables){let i=t.get(r.table),o=i?.operations[0]?.addedRows??0;t.set(r.table,{targetKind:"SUBTABLE",field:r.table,operations:[{kind:"APPEND",count:o+r.addedRows,addedRows:o+r.addedRows}],changedCount:(i?.changedCount??0)+r.addedRows})}return{branch:"insert",parentRows:e.guards.parentRows,targets:[...t.values()],guards:e.guards,chunk:{size:100,plannedChunks:e.batches.length},deletedParentRows:0}}function vf(e){let t=new Map,n=0;for(let r of e.plans){let i=!1;for(let o of r.tables){let a=t.get(o.table);t.set(o.table,{targetKind:"SUBTABLE",field:o.table,operations:_f(a?.operations,o.operations.map(s=>({...s,count:s.kind==="PATCH"?s.changedRows:s.kind==="APPEND"?s.addedRows:s.removedRows}))),changedCount:(a?.changedCount??0)+o.changedSubtableRows}),i||=o.deletedRows>0}for(let o of r.multiValues){let a=t.get(o.field),s={parentId:r.parentId,value:o.postImageValue};t.set(o.field,{targetKind:"MULTI_VALUE",field:o.field,fieldType:o.fieldType,operations:_f(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&&(n+=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:n}}function _f(e,t){return e?t.map((n,r)=>{let i=e[r];if(!i||i.kind!==n.kind||i.value!==n.value)throw new Error("InternalError: APPLY diagnostic operation shape differs between parents.");return{...n,...i.changed!==void 0?{changed:i.changed}:{},count:ii(i.count,n.count),...n.matchedRows!==void 0?{matchedRows:ii(i.matchedRows,n.matchedRows)}:{},...n.changedRows!==void 0?{changedRows:ii(i.changedRows,n.changedRows)}:{},...n.addedRows!==void 0?{addedRows:ii(i.addedRows,n.addedRows)}:{},...n.removedRows!==void 0?{removedRows:ii(i.removedRows,n.removedRows)}:{}}}):t.map(n=>({...n}))}function ii(e,t){return e==null||t===null?null:e+t}function Ra(e,t,n,r,i,o){let a=t.map(p=>{let u=p.operations.map(f=>kA(f,n)),d=u.every(f=>f.count!==null)?u.reduce((f,R)=>f+R.count,0):null;return{targetKind:p.targetKind,field:p.field,operations:u,changedCount:d}}),s=a.filter(p=>p.targetKind==="SUBTABLE"),l=s.every(p=>p.changedCount!==null)?s.reduce((p,u)=>p+u.changedCount,0):null,c=n===null||l===null?null:n>i||l>o;return{branch:e,parentRows:n,targets:a,guards:{revisionRequired:r,parentRows:n,dmlMaxRows:i,subtableRows:l,dmlMaxSubtableRows:o,wouldExceed:c},chunk:{size:100,plannedChunks:n===null?null:Math.ceil(n/100)},deletedParentRows:e==="insert"?0:null}}function kA(e,t){if(e.kind==="APPEND"){let n=t===null?null:e.values.length*t;return{kind:e.kind,count:n,addedRows:n}}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 mt=class extends Error{constructor(t,n){let r=n instanceof Error?n.message:String(n),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: ${r}`),this.name="ApplyWritePartialFailureError",this.partialSuccess=t,this.cause=n}};async function Uf(e,t,n){Vn("phase10c");let r=hf(e),i=0,o=0;for(let a=0;a<r.length;a+=1){let s=r[a];try{await t.putRecords(s)}catch(l){throw new mt({successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"PUT_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:Ye(n,{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 Mf(e,t,n){Vn("phase13c");let r=[],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]});r.push(l.ids)}catch(l){throw new mt({successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"POST_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:Ye(n,{successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"POST_CHUNK",failedBranch:"INSERT",retryAttempted:!1})}:{}},l)}i+=1,o+=s.records.length}return{type:"INSERT",createdIds:r,insertedCount:o,successfulChunks:i,successfulParents:o,nonTransactional:!0}}async function kf(e,t,n){Vn("phase14c");let r=[],i=0,o=0,a=0,s=0;for(let l=0;l<e.createBatches.length;l+=1){let c=e.createBatches[l];try{let p=await t.postRecords({app:c.app,records:[...c.records]});r.push(p.ids)}catch(p){throw new mt({successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,failedChunkIndex:l,failedBranch:"INSERT",failedStage:"POST_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:Ye(n,{successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,successfulInsertChunks:i,successfulUpdateChunks:o,failedChunkIndex:l,failedStage:"POST_CHUNK",failedBranch:"INSERT",retryAttempted:!1})}:{}},p)}i+=1,a+=c.records.length}for(let l=0;l<e.updateBatches.length;l+=1){let c=e.updateBatches[l];try{await t.putRecords({app:c.app,records:[...c.records]})}catch(p){throw new mt({successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,failedChunkIndex:l,failedBranch:"UPDATE",failedStage:"PUT_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:Ye(n,{successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,successfulInsertChunks:i,successfulUpdateChunks:o,failedChunkIndex:l,failedStage:"PUT_CHUNK",failedBranch:"UPDATE",retryAttempted:!1})}:{}},p)}o+=1,s+=c.records.length}return{type:"UPSERT",createdIds:r,insertedCount:a,updatedCount:s,successfulChunks:i+o,successfulParents:a+s,successfulInsertChunks:i,successfulUpdateChunks:o,nonTransactional:!0}}var xA=/^[A-Za-z_][A-Za-z0-9_]{0,63}$/;function FA(e){if(!xA.test(e))throw new Error(`ArgumentError: invalid variable name "${e}". Use a name without @ matching [A-Za-z_][A-Za-z0-9_]{0,63}.`);return e.toLowerCase()}function GA(e){let t=Object.create(null);for(let[n,r]of Object.entries(e??{})){let i=FA(n);if(Object.prototype.hasOwnProperty.call(t,i))throw new Error(`ArgumentError: variable "${n}" is specified more than once.`);t[i]=r}return t}function Jl(e,t){let n=GA(t),r=new Set(e.filter(i=>i.type==="DECLARE_VARIABLE").map(i=>i.name));for(let i of Object.keys(n))if(!r.has(i))throw new Error(`ArgumentError: injected variable @${i} is not declared.`);return n}function KA(e){return e.type!=="SELECT"||!Array.isArray(e.joins)?!1:e.joins.some(t=>{if(t===null||typeof t!="object")return!1;let n=t.type;return n==="LEFT"||n==="RIGHT"})}function Xl(e){let t=new Set,n=r=>{if(Array.isArray(r))return r.some(n);if(r===null||typeof r!="object"||t.has(r))return!1;t.add(r);let i=r;return KA(i)?!0:Object.values(i).some(n)};return n(e)}function xf(e,t,n){if(n)return t===e.from&&e.joins.some(r=>r.type==="RIGHT");for(let r=0;r<e.joins.length;r+=1){let i=e.joins[r];if(i.type==="LEFT"&&t===i.table||i.type==="RIGHT"&&e.joins.slice(0,r).some(o=>t===o.table))return!0}return!1}function yt(e){let t=[["recursiveCteMaxDepth",e.recursiveCteMaxDepth,100],["recursiveCteMaxRows",e.recursiveCteMaxRows,1e4],["recursiveCteMaxExpansions",e.recursiveCteMaxExpansions,1e5]];for(let[n,r]of t)if(r!==void 0&&(!Number.isSafeInteger(r)||r<=0))throw new RangeError(`${n} must be a positive safe integer`);return{depth:e.recursiveCteMaxDepth??100,rows:e.recursiveCteMaxRows??1e4,expansions:e.recursiveCteMaxExpansions??1e5}}var ai=class extends Error{constructor(t,n,r,i){let o=t==="DEPTH"?"\u6DF1\u3055":t==="ROWS"?"\u7D50\u679C\u884C\u6570":"\u4E2D\u9593\u5C55\u958B\u6570",a=t==="DEPTH"?"":" \u4EF6";super(`\u518D\u5E30 CTE\u300C${i}\u300D\u306E${o}\u304C\u4E0A\u9650 ${n}${a}\u3092\u8D85\u3048\u307E\u3057\u305F\uFF08\u691C\u51FA\u5024: ${r}${a}\uFF09\u3002`),this.name="RecursiveCteLimitError",this.kind=t,this.limit=n,this.detected=r,this.cteName=i,Object.setPrototypeOf(this,new.target.prototype)}},ya=class{constructor(t,n=yt({})){this.cteName=t;this.limits=n;this.rows=0;this.expansions=0}observeDepth(t){if(t>this.limits.depth)throw new ai("DEPTH",this.limits.depth,t,this.cteName)}addRow(){if(this.rows++,this.rows>this.limits.rows)throw new ai("ROWS",this.limits.rows,this.rows,this.cteName)}addExpansion(){if(this.expansions++,this.expansions>this.limits.expansions)throw new ai("EXPANSIONS",this.limits.expansions,this.expansions,this.cteName)}};var ga=50;function Zl(e,t,n){if(e.kind==="RANGE")return[`${t} >= ${n(e.min)} and ${t} <= ${n(e.max)}`];if(e.kind!=="IN")return[];let r=[];for(let i=0;i<e.values.length;i+=ga){let o=e.values.slice(i,i+ga);r.push(`${t} in (${o.map(n).join(",")})`)}return r}var Ql=new Set(["DATETIME","CREATED_TIME","UPDATED_TIME"]),BA=new Set(["SINGLE_LINE_TEXT","LINK","NUMBER","CALC","DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]);function $A(e,t){return e==="DATE"?Mr(t):e==="TIME"?Lo(t):Ql.has(e)?_o(t):!1}function WA(e,t){return!t||t.compareMode!=="string"?!1:e==="DATE"?t.fieldType==="DATE":e==="TIME"?t.fieldType==="TIME":Ql.has(e)?Ql.has(t.fieldType):!1}function eu(e){if(e.sourceRowCount===0)return{kind:"EMPTY_SOURCE"};if(!e.fieldType)return{kind:"FALLBACK",reason:"JOIN_KEY_FIELD_TYPE_UNRESOLVED"};let t=Oo(e.fieldType);if(t.has("in")){if(e.values===void 0)return{kind:"FALLBACK",reason:"JOIN_KEY_VALUES_RUNTIME"};if(e.hasEmptyValue&&!BA.has(e.fieldType))return{kind:"FALLBACK",reason:"JOIN_KEY_EMPTY_VALUE"};let a=[...new Set(e.values)];return a.length===0?{kind:"EMPTY_SOURCE"}:a.length>e.maxInKeys?{kind:"FALLBACK",reason:"JOIN_KEY_LIMIT_EXCEEDED"}:{kind:"IN",values:a,relation:"exact"}}if(!t.has(">=")||!t.has("<="))return{kind:"FALLBACK",reason:"JOIN_KEY_OPERATOR_UNAVAILABLE"};if(e.values===void 0)return{kind:"RANGE_CANDIDATE",relation:"superset",reason:"JOIN_KEY_VALUES_RUNTIME"};if(!WA(e.fieldType,e.sourceSemantics))return{kind:"FALLBACK",reason:"JOIN_KEY_SEMANTICS_UNRESOLVED"};let n=e.sourceSemantics;if(e.hasEmptyValue)return{kind:"FALLBACK",reason:"JOIN_KEY_EMPTY_VALUE"};let r=[...new Set(e.values)];if(r.some(a=>!$A(e.fieldType,a)))return{kind:"FALLBACK",reason:"JOIN_KEY_NON_CANONICAL_VALUE"};if(r.length===0)return{kind:"FALLBACK",reason:"JOIN_KEY_EMPTY_VALUE"};let i=r[0],o=r[0];for(let a=1;a<r.length;a+=1){let s=r[a];rt(s,i,n)<0&&(i=s),rt(s,o,n)>0&&(o=s)}return{kind:"RANGE",min:i,max:o,relation:"superset"}}var tu=pl;function si(e,t,n=tu){let r=e===0||t===0?0:e*t;return{leftRows:e,rightRows:t,outputRows:r,limit:n,allowed:r<=n}}function Ff(e,t){let n=Z(e);return n.type!=="GROUPING_SETS"?null:{source:n.source,expandedSetCount:n.sets.length,groupingItemCount:t??n.allItems.length,setLimit:64,itemLimit:16,outputRowLimit:5e4}}function gt(e){if(e===null)return!1;switch(e.type){case"BINARY":return ha(e.left);case"NULL_CHECK":return ha(e.field);case"LOGICAL":return gt(e.left)||gt(e.right);case"NOT":case"GROUP":return gt(e.expr);case"EXISTS":case"BOOLEAN":return!1}}function ha(e){if(Array.isArray(e))return e.some(ha);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(ha)}async function it(e,t,n,r,i){let o=await xe(e,t,n,r,{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 Aa(e,t,n,r){let{records:i,metrics:o}=await it(e,t,n,["$id"],r);return{ids:dp(i),metrics:o}}function ar(e,t){if(e.tableAlias!==null){let r=t.filter(o=>o.alias===e.tableAlias);if(r.length>1)return Object.freeze({status:"AMBIGUOUS"});if(r.length===0)return Object.freeze({status:"UNKNOWN"});let i=r[0];return i.fieldTypes.has(e.field)?Kf(i,e.field):Object.freeze({status:"UNKNOWN"})}let n=t.filter(r=>r.fieldTypes.has(e.field));return n.length>1?Object.freeze({status:"AMBIGUOUS"}):n.length===0?Object.freeze({status:"UNKNOWN"}):Kf(n[0],e.field)}function iu(e,t){if(e.left.type!=="FIELD")return li();let n=ar(e.left,t);if(n.status!=="OWNED"||n.source.sourceKind!=="APP")return li();let r=n.source.fieldTypes.get(n.fieldCode);if(r===void 0||r.startsWith("KSQL_")||he(e,a=>{let s=ar(a,t);if(s.status!=="OWNED"||s.source!==n.source)return;let l=s.source.fieldTypes.get(s.fieldCode);return l===void 0?void 0:te({fieldType:l})}).capability!=="EXACT_PUSHDOWN")return li();let o=vo(e,{fieldCode:n.fieldCode,fieldType:r,fieldOptions:n.source.fieldOptions?.get(n.fieldCode)});return o==="unsafe"?li():Object.freeze({relation:o,owner:n})}function Bf(e,t){let n=Te(e);if(n.length===0||e.left.type!=="FIELD")return Object.freeze({relation:"unsafe"});let r=ar(e.left,t);return r.status!=="OWNED"||r.source.sourceKind!=="APP"?Object.freeze({relation:"unsafe"}):he(e,o=>{let a=ar(o,t);if(a.status!=="OWNED"||a.source!==r.source)return;let s=a.source.fieldTypes.get(a.fieldCode);return s===void 0?void 0:te({fieldType:s})}).capability!=="EXACT_PUSHDOWN"?Object.freeze({relation:"unsafe"}):Object.freeze({relation:"function-leaf-exact",owner:r,functionOccurrences:Object.freeze([...n])})}function $f(e,t){let n=new Set;hn(e,n);let i=(e===null?[]:Hf(or(e,t))).map(s=>Object.freeze({targetAlias:s.owner.alias,appId:s.owner.appId,predicate:s.predicate,relation:s.relation})),o=VA(e,t),a=new Set;if(o.serverFunctionCandidate?.variant==="WHOLE_WHERE_EXACT")for(let s of n)a.add(s);else for(let s of i)hn(s.predicate,a);return Object.freeze({items:Object.freeze(i),appliedKlikes:a,allKlikes:Object.freeze([...n]),rejections:Object.freeze(jA(e,t)),fetchQueriesByAlias:new Map,...o})}function Wf(e,t){if(e.serverFunctionCandidate?.staticContract!=="CONFIRMED"||e.serverFunctionConsumptions.length===0||e.residualServerFunctionOccurrences.length!==0||!An(e.allServerFunctionOccurrences,e.adoptedServerFunctionOccurrences)||e.allKlikes.some(a=>!e.appliedKlikes.has(a)))return e;let n=new Map,r=(a,s)=>{let l=n.get(a);l?l.push(s):n.set(a,[s])};try{if(e.serverFunctionCandidate.variant==="EXACT_LEAF")for(let a of e.items)r(a.targetAlias,sr(a,t));for(let a of e.serverFunctionConsumptions){if(!t.find(c=>c.alias===a.targetAlias&&c.appId===a.appId&&c.sourceKind==="APP"))return e;let l=sr({targetAlias:a.targetAlias,appId:a.appId,predicate:a.predicate,relation:"exact"},t);if(l!==a.serializedPredicate||!An(Na(l),a.functionOccurrences))return e;r(a.targetAlias,l)}}catch{return e}let i=new Map;for(let[a,s]of n)i.set(a,s.length===1?s[0]:s.map(l=>`(${l})`).join(" and "));let o=e.serverFunctionConsumptions.map(a=>{let s=i.get(a.targetAlias);return s?Object.freeze({...a,fetchBinding:Object.freeze({status:"BOUND_TO_TARGET_FETCH",targetAlias:a.targetAlias,appId:a.appId,query:s})}):null});return o.some(a=>a===null)?e:Object.freeze({...e,serverFunctionCandidate:Object.freeze({...e.serverFunctionCandidate,fetchContract:"CONFIRMED"}),serverFunctionConsumptions:Object.freeze(o),fetchQueriesByAlias:i})}function lr(e){if(e.serverFunctionCandidate===null||e.serverFunctionCandidate.staticContract!=="CONFIRMED"||e.serverFunctionCandidate.fetchContract!=="CONFIRMED"||e.serverFunctionConsumptions.length===0||e.residualServerFunctionOccurrences.length!==0||!An(e.allServerFunctionOccurrences,e.adoptedServerFunctionOccurrences)||!e.serverFunctionConsumptions.every(t=>{let n=t.fetchBinding;return n!=="PENDING_STEP_2"&&n.status==="BOUND_TO_TARGET_FETCH"&&n.targetAlias===t.targetAlias&&n.appId===t.appId&&n.query===e.fetchQueriesByAlias.get(t.targetAlias)&&n.query.includes(t.serializedPredicate)}))return!1;for(let[t,n]of e.fetchQueriesByAlias){let r=e.serverFunctionConsumptions.filter(i=>i.targetAlias===t).flatMap(i=>[...i.functionOccurrences]);if(r.length>0&&!An(Na(n),r))return!1}return!(e.serverFunctionCandidate.variant==="WHOLE_WHERE_EXACT"&&(e.serverFunctionConsumptions.length!==1||e.serverFunctionConsumptions[0].consumption!=="whole-where"||e.residualWhere!==null||e.allKlikes.some(t=>!e.appliedKlikes.has(t))||Vf(YA(e))!==e.allKlikes.length))}function VA(e,t){if(e===null)return Gf(null);let n=Object.freeze([...Te(e)]);if(n.length===0)return Gf(e);let r=HA(e,t,n);if(r!==null)return r;let i=Ia(e),o=[],a=new Set;for(let u of i){let d=Bf(u,t);if(d.relation!=="function-leaf-exact")continue;let f={targetAlias:d.owner.alias,appId:d.owner.appId,predicate:u,relation:"exact"},R;try{R=sr(f,t)}catch{continue}let E=Na(R);An(E,d.functionOccurrences)&&(a.add(u),o.push(Object.freeze({targetAlias:d.owner.alias,appId:d.owner.appId,predicate:u,functionLeaves:Object.freeze([u]),functionOccurrences:d.functionOccurrences,relation:d.relation,consumption:"leaf",serializedPredicate:R,staticProof:Object.freeze({classifier:"EXACT_PUSHDOWN",ownership:"OWNED",serialization:"OCCURRENCE_MULTISET_EXACT",residualIdentityConsumption:"CONFIRMED"}),fetchBinding:"PENDING_STEP_2"})))}let s=wa(e,a),l=Object.freeze(s===null?[]:[...Te(s)]),c=Object.freeze(o.flatMap(u=>[...u.functionOccurrences])),p=An(n,c)&&l.length===0?"CONFIRMED":"INCOMPLETE";return{serverFunctionCandidate:Object.freeze({variant:"EXACT_LEAF",staticContract:p,fetchContract:"PENDING_STEP_2"}),serverFunctionConsumptions:Object.freeze(o),allServerFunctionOccurrences:n,adoptedServerFunctionOccurrences:c,residualWhere:s,residualServerFunctionOccurrences:l}}function HA(e,t,n){let r=Sa(e,t);if(r===null)return null;let i={targetAlias:r.alias,appId:r.appId,predicate:e,relation:"exact"},o;try{o=sr(i,t)}catch{return null}if(!An(Na(o),n))return null;let a=new Set;if(hn(e,a),Vf(o)!==a.size)return null;let s=Object.freeze(Ta(e)),l=Object.freeze({targetAlias:r.alias,appId:r.appId,predicate:e,functionLeaves:s,functionOccurrences:Object.freeze([...n]),relation:"function-leaf-exact",consumption:"whole-where",serializedPredicate:o,staticProof:Object.freeze({classifier:"EXACT_PUSHDOWN",ownership:"OWNED",serialization:"OCCURRENCE_MULTISET_EXACT",residualIdentityConsumption:"CONFIRMED"}),fetchBinding:"PENDING_STEP_2"});return{serverFunctionCandidate:Object.freeze({variant:"WHOLE_WHERE_EXACT",staticContract:"CONFIRMED",fetchContract:"PENDING_STEP_2"}),serverFunctionConsumptions:Object.freeze([l]),allServerFunctionOccurrences:Object.freeze([...n]),adoptedServerFunctionOccurrences:Object.freeze([...n]),residualWhere:null,residualServerFunctionOccurrences:Object.freeze([])}}function Sa(e,t){switch(e.type){case"BINARY":{if(Te(e).length>0){let i=Bf(e,t);return i.relation==="function-leaf-exact"?i.owner:null}let r=iu(e,t);return r.relation==="exact"&&r.owner!==void 0?r.owner:null}case"LOGICAL":{let n=Sa(e.left,t),r=Sa(e.right,t);return n!==null&&r!==null&&Ca(n,r)?n:null}case"GROUP":case"NOT":return Sa(e.expr,t);case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return null}}function Ta(e){switch(e.type){case"BINARY":return Te(e).length>0?[e]:[];case"LOGICAL":return[...Ta(e.left),...Ta(e.right)];case"GROUP":case"NOT":return Ta(e.expr);case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return[]}}function Gf(e){let t=e===null?[]:Te(e);return{serverFunctionCandidate:null,serverFunctionConsumptions:Object.freeze([]),allServerFunctionOccurrences:Object.freeze([...t]),adoptedServerFunctionOccurrences:Object.freeze([]),residualWhere:e,residualServerFunctionOccurrences:Object.freeze([...t])}}function Ia(e){switch(e.type){case"BINARY":return Te(e).length>0?[e]:[];case"LOGICAL":return e.op==="AND"?[...Ia(e.left),...Ia(e.right)]:[];case"GROUP":return Ia(e.expr);case"NOT":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return[]}}function wa(e,t){if(e.type==="BINARY")return t.has(e)?null:e;if(e.type==="LOGICAL"){if(e.op!=="AND")return e;let n=wa(e.left,t),r=wa(e.right,t);return n===null?r:r===null?n:n===e.left&&r===e.right?e:{...e,left:n,right:r}}if(e.type==="GROUP"){let n=wa(e.expr,t);return n===null?null:n===e.expr?e:{...e,expr:n}}return e}function Na(e){let t=[];for(let n of Tr){let r=new RegExp(`\\b${n}\\s*\\(`,"g"),i;for(;(i=r.exec(e))!==null;)t.push({name:n,index:i.index})}return t.sort((n,r)=>n.index-r.index).map(n=>n.name)}function An(e,t){if(e.length!==t.length)return!1;let n=new Map;for(let r of e)n.set(r,(n.get(r)??0)+1);for(let r of t){let i=n.get(r);if(i===void 0)return!1;i===1?n.delete(r):n.set(r,i-1)}return n.size===0}function Vf(e){return[...e.matchAll(/\s(?:not\s+)?like\s/g)].length}function YA(e){let t=e.serverFunctionConsumptions[0];return t===void 0?"":e.fetchQueriesByAlias.get(t.targetAlias)??""}function jA(e,t){if(e===null)return[];let n=new Set,r=i=>{if(i.type==="BINARY"){if(i.left.type!=="FIELD"){n.add("UNSAFE_RELATION");return}let o=ar(i.left,t);if(o.status==="AMBIGUOUS"){n.add("AMBIGUOUS_FIELD");return}if(o.status==="UNKNOWN"){n.add("UNKNOWN_FIELD_OR_METADATA");return}if(ba(i.right)){n.add("CROSS_TABLE_BINARY");return}iu(i,t).relation==="unsafe"&&n.add("UNSAFE_RELATION");return}if(i.type==="LOGICAL"){if(i.op==="OR"){if(jf(i)){n.add("KLIKE_OR");return}let o=or(i.left,t),a=or(i.right,t);if(o.length!==1||a.length!==1||!Ca(o[0].owner,a[0].owner)){n.add("CROSS_ALIAS_OR");return}}r(i.left),r(i.right);return}if(i.type==="GROUP"){r(i.expr);return}if(i.type==="NOT"){n.add("NOT");return}n.add("UNSAFE_RELATION")};return r(e),[...n].map(i=>Object.freeze({reason:i}))}function sr(e,t){return ui(e.predicate,e,t),Y(e.predicate)}function ui(e,t,n){switch(e.type){case"LOGICAL":ui(e.left,t,n),ui(e.right,t,n);return;case"GROUP":ui(e.expr,t,n);return;case"NOT":ui(e.expr,t,n);return;case"BINARY":{if(e.left.type!=="FIELD"||ba(e.right))throw ru(t,"predicate contains a non-target or RHS field reference");let r=ar(e.left,n);if(r.status!=="OWNED"||r.alias!==t.targetAlias||r.appId!==t.appId||r.source.sourceKind!=="APP")throw ru(t,`field ${e.left.field} is not uniquely owned by the target`);return}case"NULL_CHECK":case"EXISTS":case"BOOLEAN":throw ru(t,"predicate shape is outside the Phase A serializer contract")}}function ru(e,t){return new Error(`InternalError: JOIN pushdown ownership guard failed for ${e.targetAlias}/APP${e.appId}: ${t}.`)}function or(e,t){switch(e.type){case"BINARY":{let n=iu(e,t);return n.relation==="unsafe"||n.owner===void 0?[]:[{owner:n.owner,predicate:e,relation:n.relation}]}case"LOGICAL":{let n=or(e.left,t),r=or(e.right,t);if(e.op==="AND")return Hf([...n,...r]);if(jf(e))return[];if(n.length!==1||r.length!==1)return[];let i=n[0],o=r[0];return Ca(i.owner,o.owner)?[{owner:i.owner,predicate:{type:"LOGICAL",op:"OR",left:i.predicate,right:o.predicate},relation:Yf(i.relation,o.relation)}]:[]}case"GROUP":return or(e.expr,t).map(n=>({...n,predicate:{type:"GROUP",expr:n.predicate}}));case"NOT":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return[]}}function Hf(e){let t=[];for(let n of e){let r=t.findIndex(o=>Ca(o.owner,n.owner));if(r<0){t.push(n);continue}let i=t[r];t[r]={owner:i.owner,predicate:{type:"LOGICAL",op:"AND",left:i.predicate,right:n.predicate},relation:Yf(i.relation,n.relation)}}return t}function Kf(e,t){return Object.freeze({status:"OWNED",alias:e.alias,appId:e.appId,fieldCode:t,source:e})}function li(){return Object.freeze({relation:"unsafe"})}function Ca(e,t){return e.alias===t.alias&&e.appId===t.appId&&e.source===t.source}function Yf(e,t){return e==="exact"&&t==="exact"?"exact":"superset"}function hn(e,t){if(e!==null){if(Yt(e)){t.add(e);return}switch(e.type){case"LOGICAL":hn(e.left,t),hn(e.right,t);return;case"NOT":case"GROUP":hn(e.expr,t);return;case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}}function jf(e){let t=new Set;return hn(e,t),t.size>0}function ba(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(ba);let t=e;return t.type==="FIELD"||t.type==="FIELD_REF"?!0:Object.values(t).some(ba)}function ou(e,t){let n=xr(e,{allowUnqualifiedFields:!0,allowKlike:!0,fieldTypes:t.fieldTypes,fieldOptions:t.fieldOptions});return{prefilter:n.condition,appliedKlikes:n.appliedKlikes,unappliedKlikes:n.allKlikes.filter(r=>!n.appliedKlikes.has(r))}}function zA(e,t){return e.key.type==="FIELD_NAME"?t.get(e.key.name):void 0}function qA(e,t){return e.columns.some(n=>"alias"in n&&n.alias===t)}function ci(e){let{stmt:t}=e,n=[],r=t.columns.flatMap(a=>a.type==="WINDOW_COL"?a.orderBy:[]),i=[...t.orderBy,...r];for(let a of i){if(a.key.type!=="FIELD_NAME")continue;let s=zA(a,e.orderSemantics);if(!s){n.push("ORDER_KEY_UNRESOLVED");continue}s.fieldType==="KSQL_AMBIGUOUS"?n.push("ORDER_KEY_AMBIGUOUS"):s.compareMode==="unsupported"&&n.push("ORDER_KEY_UNSUPPORTED")}if(n.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(n.includes("ORDER_KEY_UNSUPPORTED")||n.includes("ORDER_KEY_UNRESOLVED")){let a=n.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&&r.length===0&&t.orderBy.every(a=>a.key.type==="FIELD_NAME"&&a.key.name==="$id"&&!qA(t,a.key.name))||n.push("ORDER_KEY_NOT_REST_EQUIVALENT"),e.whereCapability!=="EXACT_PUSHDOWN"&&n.push("WHERE_NOT_EXACT"),e.staticMode!=="SIMPLE"&&n.push("QUERY_SHAPE_LOCAL"),(t.limit===null||t.limit<0||t.limit>500)&&n.push("LIMIT_NOT_REST_WINDOW"),((t.offset??0)<0||(t.offset??0)>1e4)&&n.push("OFFSET_NOT_REST_WINDOW"),t.limit!==null&&t.limit>e.maxRecords&&n.push("MAX_RECORDS_WINDOW"),e.hasKlike&&n.push("KLIKE_NOT_REST_WINDOW"),n.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(n)]}}var JA=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 XA(e,t){return e.columns.some(n=>"alias"in n&&n.alias===t)}function pi(e){let{stmt:t}=e,n=[];t.orderMode!=="KINTONE_NATIVE"&&n.push("KORDER_MODE_REQUIRED"),(t.from.cteName!==null||t.from.subtableCode||e.staticMode!=="SIMPLE")&&n.push("KORDER_QUERY_SHAPE_UNSUPPORTED"),e.whereCapability!=="EXACT_PUSHDOWN"&&(n.push(...(e.whereReasons??[]).filter(s=>s.functionName!==void 0).map(s=>s.code)),n.push("KORDER_WHERE_NOT_EXACT")),e.hasKlike&&n.push("KORDER_KLIKE_UNSUPPORTED"),t.orderBy.length===0&&n.push("KORDER_KEY_REQUIRED");for(let s of t.orderBy){if(s.key.type!=="FIELD_NAME"){n.push(`KORDER_KEY_NOT_DIRECT_FIELD(key=${s.key.type})`);continue}let l=s.key.name,c=e.orderSemantics.get(l);if(!c){n.push(`KORDER_KEY_UNRESOLVED(field=${l})`);continue}if(XA(t,l)){n.push(`KORDER_KEY_NOT_DIRECT_FIELD(field=${l})`);continue}if(l!=="$id"){if(!c.source||c.source.fieldCode!==l){n.push(`KORDER_KEY_NOT_DIRECT_FIELD(field=${l})`);continue}JA.has(c.fieldType)||n.push(`KORDER_TYPE_UNSUPPORTED(field=${l}, type=${c.fieldType})`)}}(t.limit===null||!Number.isSafeInteger(t.limit)||t.limit<0)&&n.push(`KORDER_LIMIT_INVALID(limit=${String(t.limit)})`);let r=t.offset??0;(!Number.isSafeInteger(r)||r<0)&&n.push(`KORDER_OFFSET_INVALID(offset=${r})`);let i=t.limit===null?Number.NaN:r+t.limit;t.limit!==null&&!Number.isSafeInteger(i)&&n.push(`KORDER_SCAN_ROWS_INVALID(offset=${r}, limit=${t.limit})`);let o=[...new Set(n)];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&&r<=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 Pa=class extends Error{constructor(t,n,r){super(`CursorCapacityError: host=${t} \u306E active cursor \u4E0A\u9650 ${n} \u306B ${r}ms \u4EE5\u5185\u3067\u7A7A\u304D\u304C\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002`),this.name="CursorCapacityError"}},Oa=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}},La=class extends Error{constructor(t){let n=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: ${n}`),this.name="CursorCleanupWarning",this.cause=t}};async function zf(e){let t=await e.client.openCursor({app:e.app,fields:e.fields.length>0?e.fields:void 0,query:e.query,size:500}),n=[],r=0,i,o;try{if(t.totalCount>e.offset)for(;n.length<e.limit;){let a=await t.nextPage();for(let s of a.records)if(r<e.offset)r+=1;else if(n.length<e.limit)n.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 La(a).message}}return{records:n,cleanupWarning:o}}function au(e){let t=[];e.where&&t.push(Y(e.where));let n=e.orderBy.map(r=>{if(r.key.type!=="FIELD_NAME")throw new Error("ArgumentError: KORDER cursor key must be a direct field.");return`${r.key.name} ${r.direction==="ASC"?"asc":"desc"}`});return t.push(`order by ${n.join(", ")}`),t.join(" ")}var QA={CALC:"RECORD",CATEGORY:"NON_RECORD",CHECK_BOX:"RECORD",CREATED_TIME:"RECORD",CREATOR:"RECORD",DATE:"RECORD",DATETIME:"RECORD",DROP_DOWN:"RECORD",FILE:"RECORD",GROUP:"NON_RECORD",GROUP_SELECT:"RECORD",LINK:"RECORD",MODIFIER:"RECORD",MULTI_LINE_TEXT:"RECORD",MULTI_SELECT:"RECORD",NUMBER:"RECORD",ORGANIZATION_SELECT:"RECORD",RADIO_BUTTON:"RECORD",RECORD_NUMBER:"RECORD",REFERENCE_TABLE:"NON_RECORD",RICH_TEXT:"RECORD",SINGLE_LINE_TEXT:"RECORD",STATUS:"PROCESS",STATUS_ASSIGNEE:"PROCESS",SUBTABLE:"RECORD",TIME:"RECORD",UPDATED_TIME:"RECORD",USER_SELECT:"RECORD"};function qf(e,t){let n=QA[e];if(n===void 0)throw new Error(`ArgumentError: getFields returned unknown fieldType "${e}" for field "${t}". getFields must return only the fields from /k/v1/app/form/fields.json; $id and $revision are synthesized by the engine and must not be added.`);return n}async function Jf(e,t,n){if(t!=null)return["_pid","_rid","_idx",...e.filter(s=>s.inSubtable===!0&&s.subtableCode===t).map(s=>s.code)];let r=e.filter(s=>!s.inSubtable),o=r.some(s=>qf(s.fieldType,s.code)==="PROCESS")?(await n()).enable:!1;return[...r.filter(s=>{let l=qf(s.fieldType,s.code);return l==="RECORD"||l==="PROCESS"&&o}).map(s=>s.code),"$revision","$id"]}var ur=new WeakMap,lu=new WeakMap,ZA="\u6BD4\u8F03\u6761\u4EF6\u3067\u53C2\u7167\u3057\u305F\u96C6\u8A08\u5024\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093\u3002SELECT \u30EA\u30B9\u30C8\u306B\u540C\u3058\u96C6\u8A08\u5F0F\u3092\u542B\u3081\u3066\u304F\u3060\u3055\u3044\u3002";function du(e){if(lu.has(e))return e;let t;return t=new Proxy(e,{get(n,r,i){return typeof r!="string"||Object.prototype.hasOwnProperty.call(n,r)?Reflect.get(n,r,i):Ie(t,r)},has(n,r){return Reflect.has(n,r)||typeof r=="string"&&Ie(t,r)!==void 0},getOwnPropertyDescriptor(n,r){let i=Reflect.getOwnPropertyDescriptor(n,r);if(i||typeof r!="string")return i;let o=Ie(t,r);return o===void 0?void 0:{configurable:!0,enumerable:!1,writable:!1,value:o}}}),lu.set(t,e),t}function ot(e){return lu.get(e)??e}function sE(e){let t=ur.get(e);return t||(t={byColumn:new Map,byLookupKey:new Map},ur.set(e,t)),t}function ht(e,t,n,r=[]){let i=sE(e);i.byColumn.set(t,n);for(let o of r)i.byLookupKey.set(o,n)}function je(e,t){return ur.get(e)?.byColumn.get(t)}function Ie(e,t){return ur.get(e)?.byLookupKey.get(t)}function vt(e,t){return ur.has(e)?void 0:e[t]}function Xf(e,t,n){if(!n||t.length===0)return;let r=new Set,i=o=>{if(o===null||typeof o!="object")return;if(Array.isArray(o)){o.forEach(i);return}let a=o;if(a.type==="FIELD"&&a.aggregateRef!==void 0){let s=a.aggregateRef;r.add(de(s.func,s.distinct,s.arg));return}a.type==="SELECT"||a.type==="SCALAR_SUBQUERY"||Object.values(a).forEach(i)};i(e),[...r].some(o=>t.some(a=>Ie(a,o)===void 0&&a[o]===void 0))&&n.add(ZA)}function eS(e){let t=ur.get(e)?.byLookupKey;if(!t||t.size===0)return e;let n={...e};for(let[i,o]of t)n[i]=o;let r=$s(e);return r&&Bs(n,r.includedCanonicalIds),n}function Ut(e,t){let n={};for(let[r,i]of Object.entries(e)){let o=i.value,a=o==null?"":typeof o=="string"?o:JSON.stringify(o);t&&(n[`${t}.${r}`]=a),n[r]=a}return n}function tS(e,t,n,r={}){if(n.type==="CROSS"){let d=si(e.length,t.length);if(!d.allowed)throw new Error(`ArgumentError: CROSS JOIN \u306E\u751F\u6210\u4EF6\u6570 ${d.outputRows} \u884C\uFF08\u5DE6 ${d.leftRows} \u884C \xD7 \u53F3 ${d.rightRows} \u884C\uFF09\u304C\u4E0A\u9650 ${d.limit} \u884C\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002`);let f=[];for(let R of e)for(let E of t)f.push({...R,...E});return f}let{on:i,type:o}=n,a=nS(i,e,t,r.leftColumns,r.rightColumns),s=uu(a.left),l=uu(a.right);if(Zf(e,s,r.leftColumns),Zf(t,l,r.rightColumns),o==="RIGHT"){let d=new Map;for(let E of e){let m=E[s]??"",y=d.get(m);y?y.push(E):d.set(m,[E])}let f={};for(let E of r.leftColumns??Object.keys(e[0]??{}))f[E]="";let R=[];for(let E of t){let m=E[l]??"",y=d.get(m)??[];if(y.length>0)for(let g of y)R.push({...g,...E});else R.push({...f,...E})}return R}let c=new Map;for(let d of t){let f=d[l]??"",R=c.get(f);R?R.push(d):c.set(f,[d])}let p=[],u={};for(let d of r.rightColumns??Object.keys(t[0]??{}))u[d]="";for(let d of e){let f=d[s]??"",R=c.get(f)??[];if(R.length>0)for(let E of R)p.push({...d,...E});else o==="LEFT"&&p.push({...d,...u})}return p}function uu(e){return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field}function nS(e,t,n,r,i){let o=r??Object.keys(t[0]??{}),a=i??Object.keys(n[0]??{}),s=Qf(o),l=Qf(a),c=d=>{if(d.tableAlias){let m=s.has(d.tableAlias),y=l.has(d.tableAlias);if(m!==y)return m?"LEFT":"RIGHT"}let f=uu(d),R=o.includes(f),E=a.includes(f);return R!==E?R?"LEFT":"RIGHT":"UNKNOWN"},p=c(e.left),u=c(e.right);return p==="RIGHT"&&u==="LEFT"?{left:e.right,right:e.left}:e}function Qf(e){let t=new Set;for(let n of e){let r=n.indexOf(".");r>0&&t.add(n.slice(0,r))}return t}function Zf(e,t,n){if(e.length>0?e.some(i=>!Object.prototype.hasOwnProperty.call(i,t)):n!==void 0&&!n.includes(t))throw new Error(`ArgumentError: JOIN key ${t} is not available in the materialized table.`)}function rS(e,t,n,r,i,o={}){return t===null?e:e.filter(a=>le(t,a,n,r,i,o))}function lE(e){return e.some(t=>t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"||t.type==="CASE_COL"&&$e(t.expr)||t.type==="STRFUNC_COL"&&yi(t.expr)||t.type==="SCALAR_VALUE_COL"&&rn(t.expr))}function iS(e,t,n,r,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 c=t.map((u,d)=>aS(u,l,i?.items[d],n,o)).join("\0"),p=a.get(c);p?p.push(l):a.set(c,[l])}a.size===0&&t.length===0&&lE(n)&&a.set("",[]);let s=[];for(let l of a.values()){let c=du({...l[0]});for(let p of t)p.type==="ARITH_KEY"?c[mu(p.expr)]=String(me(p.expr,l[0],o.evaluationContext)):p.type==="FUNC_KEY"&&(c[on(p.expr)]=ye(p.expr,l[0],void 0,void 0,o.evaluationContext));uE(c,l,n,r,o.evaluationContext),s.push(c)}return s}function oS(e,t,n,r,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 c={children:new Map},p=[];for(let d of e){let f=c;for(let R of l.items){let E=eE(R,d),m=f.children.get(E);m||(m={children:new Map},f.children.set(E,m)),f=m}f.rows||(s(),f.rows=[],p.push(f.rows)),f.rows.push(d)}e.length===0&&l.items.length===0&&(s(),c.rows=[],p.push(c.rows));let u=new Set(l.items.map(d=>d.canonicalId));for(let d of p){let f=du({...d[0]}),R=new Map;for(let E of l.items)R.has(E.canonicalId)||R.set(E.canonicalId,eE(E,d[0]));for(let E of t.allItems){let m=R.get(E.canonicalId)??"";f[E.directKey]=m,E.unqualifiedBridgeKey!==null&&(f[E.unqualifiedBridgeKey]=m)}uE(f,d,n,r,i.evaluationContext),Bs(f,u),o.push(f)}}return o}function eE(e,t){return t?t[e.directKey]??(e.unqualifiedBridgeKey===null?void 0:t[e.unqualifiedBridgeKey])??"":""}function uE(e,t,n,r,i={}){for(let[o,a]of n.entries())if(a.type==="AGGREGATE"){let s=de(a.func,a.distinct,a.arg),l=String(Ei(a.func,a.distinct,a.arg,a.separator,t,r,i));ht(e,o,l,a.alias?[a.alias,s]:[s])}else if(a.type==="ARITH_AGG_COL"){_a(e,t,a.expr,r,i);let s=a.alias??Ri(a.expr);ht(e,o,String(di(a.expr,t,r,i)),[s])}else if(a.type==="STRFUNC_COL"&&yi(a.expr)){_a(e,t,a.expr,r,i);let s=a.alias??on(a.expr),l=yu(a.expr,t,r);ht(e,o,ye(l,e,void 0,void 0,i),[s])}else if(a.type==="SCALAR_VALUE_COL"&&rn(a.expr)){_a(e,t,a.expr,r,i);let s=a.alias??At(a.expr),l=fi(a.expr,t,r);ht(e,o,String(be(l,e,void 0,void 0,i)),[s])}else if(a.type==="CASE_COL"&&$e(a.expr)){_a(e,t,a.expr,r,i);let s=RE(a.expr,t,r),c=Ke(s,e,void 0,p=>p.aggregateRef?pE(p.aggregateRef,r):void 0,i);ht(e,o,c,[cu(a.alias,o)])}}function cu(e,t){return e??`__ksql_case_column_${t}`}function pu(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(r=>pu(r,t));return}let n=e;if(n.type==="AGG_REF"){t.push(n);return}n.type==="SELECT"||n.type==="SCALAR_SUBQUERY"||Object.values(n).forEach(r=>pu(r,t))}function _a(e,t,n,r,i={}){let o=[];pu(n,o);for(let a of o){let s=de(a.func,a.distinct,a.arg);if(Ie(e,s)!==void 0)continue;let l=String(Ei(a.func,a.distinct,a.arg,a.separator,t,r,i));sE(e).byLookupKey.set(s,l)}}function aS(e,t,n,r,i){if(e.type==="FIELD_NAME"){if(!n)return t[e.name]??"";if(n.kind==="PHYSICAL")return t[n.runtimeKey]??"";if(n.kind==="ALIAS_SAFE"){let o=r[n.columnIndex];if(!o)throw new Error(`InternalError: GROUP BY alias column index ${n.columnIndex} is out of range.`);let a=Da(o,t,n.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 ${n.kind} reached evaluation.`)}return e.type==="FUNC_KEY"?ye(e.expr,t,void 0,void 0,i.evaluationContext):String(me(e.expr,t,i.evaluationContext))}function Ei(e,t,n,r,i,o,a={}){if(n.type==="WILDCARD")return e==="COUNT"?i.length:0;let s=cE(e,n,i,a).filter(R=>R!==null),l=e==="STDDEV_POP"||e==="STDDEV_SAMP"||e==="VAR_POP"||e==="VAR_SAMP"||e==="MEDIAN",c=l?s.map(R=>{let E=Number(R);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: ${R}`);return E}):null,p=t?l?[...new Set(c)]:[...new Set(s)]:l?c:s;if(e==="COUNT")return p.length;if(e==="GROUP_CONCAT")return p.join(r??",");let u=e==="MIN"||e==="MAX"||e==="MODE"?mi(n,o):void 0,d=typeof u=="string"?$(u):u??(n.type==="FIELD_REF"||n.type==="FIELD"||n.type==="STRING"||n.type==="CONCAT_OP"||n.type==="CASE_WHEN"?$("string"):$("number"));if(e==="MODE"){if(s.length===0)return"";let R=new Map;for(let y of s)R.set(y,(R.get(y)??0)+1);let E="",m=0;for(let[y,g]of R){if(g>m){E=y,m=g;continue}if(g!==m)continue;let S=rt(y,E,d);(S<0||S===0&&tn(y,E)<0)&&(E=y)}return E}if(e==="MIN"||e==="MAX"){let R=p;if(R.length===0)return"";let E=R[0];for(let m of R.slice(1)){let y=rt(m,E,d);(e==="MAX"&&y>0||e==="MIN"&&y<0)&&(E=m)}return E}let f=l?p:p.map(Number);switch(e){case"SUM":return f.reduce((R,E)=>R+E,0);case"AVG":return f.length===0?0:f.reduce((R,E)=>R+E,0)/f.length;case"MEDIAN":{if(f.length===0)return"";let R=[...f].sort((m,y)=>m-y),E=Math.floor(R.length/2);return R.length%2===1?R[E]:(R[E-1]+R[E])/2}case"VAR_POP":case"VAR_SAMP":case"STDDEV_POP":case"STDDEV_SAMP":{let R=e==="VAR_SAMP"||e==="STDDEV_SAMP";if(f.length===0||R&&f.length<2)return"";let E=f[0],m=0,y=0,g=0;for(let h of f){let I=h-E;m++;let N=I-y;y+=N/m,g+=N*(I-y)}let S=Math.max(0,g/(R?m-1:m));return e==="STDDEV_POP"||e==="STDDEV_SAMP"?Math.sqrt(S):S}}}function cE(e,t,n,r={}){return n.map(i=>{let o=ot(i),a;if(t.type==="FIELD_REF"){let s=o[t.field];if(s===void 0||s===""&&e!=="MIN"&&e!=="MAX")return null;a=s}else if(t.type==="ARITH"||t.type==="NUMBER"){let s=me(t,o,r);if(isNaN(s))return null;a=String(s)}else{let s=Lt(t,o,void 0,void 0,r);if(s===null||s===""&&e!=="MIN"&&e!=="MAX"||typeof s=="number"&&Number.isNaN(s))return null;a=String(s)}return a})}function sS(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 di(e,t,n,r={}){if(e.type==="NUMBER")return e.value;if(e.type==="AGG_REF")return Number(Ei(e.func,e.distinct,e.arg,e.separator,t,n,r));if(e.type==="AGG_GROUP_KEY"){let a=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return Number(Fe(t[0]??{},a))}if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved aggregate arithmetic variable @${e.name}.`);let i=di(e.left,t,n,r),o=di(e.right,t,n,r);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 Ri(e){return dt(e)}function mi(e,t){if(e.type==="FIELD_REF")return t?.(sS(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 n=[...e.branches.map(o=>o.result),...e.elseResult===null?[]:[e.elseResult]].filter(o=>o.type!=="ARRAY").map(o=>mi(o,t));if(n.length===0||n.some(o=>o===void 0))return"string";let r=n.map(o=>typeof o=="string"?o:o.compareMode==="number"||o.compareMode==="recordNumber"?"number":"string");if(!r.every(o=>o===r[0]))return"string";let i=n[0];return n.every(o=>JSON.stringify(o)===JSON.stringify(i))?i:r[0]}function pE(e,t){if(e.func==="COUNT"||e.func==="SUM"||e.func==="AVG"||e.func==="STDDEV_POP"||e.func==="STDDEV_SAMP"||e.func==="VAR_POP"||e.func==="VAR_SAMP"||e.func==="MEDIAN")return $("number");if(e.func==="GROUP_CONCAT"||e.func==="MODE")return $("string");let n=e.arg.type==="WILDCARD"?"string":mi(e.arg,t)??"string";return typeof n=="string"?$(n):n}function lS(e,t,n,r,i={}){return t===null?e:e.filter(o=>le(t,eS(o),n,void 0,r,i))}function uS(e,t,n,r,i,o={}){if(e.length===0)return e;let a=cS(e,t,{scalarCache:n,resolveFieldType:r,resolveFieldSemantics:i,evaluationContext:o}),s=new Set;return e.filter(l=>{let c=a(l);return s.has(c)?!1:(s.add(c),!0)})}function cS(e,t,n){let r=[];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);r=[...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={...n,wildcardKeys:r,parentWildcardKeys:i};return a=>JSON.stringify(gS(t,a,o))}function fu(e,t,n,r,i,o,a={}){return t.length===0?e:dE(e,t,n,r,i,o,a).rows.map(s=>s.row)}function dE(e,t,n,r,i,o,a={}){let s=t.map(({key:p})=>{if(p.type==="ARITH_KEY")return{semantics:$("number")};if(p.type==="FUNC_KEY")return{semantics:$(fE.has(p.expr.func)?"number":"string")};if(p.type==="GROUPING_KEY")return{semantics:$("number")};let u=i?.get(p.name);if(u)return{semantics:u};let d=n?.get(p.name);return d?{semantics:{fieldType:"MULTI_SELECT",compareMode:"option",inSubtable:!1,requiresCollectionOperators:!1,optionOrder:d}}:{semantics:$(r?.get(p.name)??"string")}}),l=e.map(p=>({row:p,keys:t.map(({key:u},d)=>({s:fS(u,p,o,a)}))})),c=(p,u)=>pS(p,u,t,s);return l.sort(c),{rows:l,compare:c}}function pS(e,t,n,r){for(let i=0;i<n.length;i++){let o=dS(e.keys[i],t.keys[i],r[i]);if(o!==0)return n[i].direction==="ASC"?o:-o}return 0}function dS(e,t,n){return rt(e.s,t.s,n.semantics)}var fE=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function fS(e,t,n,r={}){let i=ot(t);switch(e.type){case"FIELD_NAME":return n?.(e.name,t)??Ie(t,e.name)??i[e.name]??"";case"ARITH_KEY":return String(me(e.expr,i,r));case"FUNC_KEY":return ye(e.expr,i,void 0,void 0,r);case"GROUPING_KEY":return Yn(e.ref,t)}}function Eu(e,t,n,r,i={}){let o=new Map;for(let[a,s]of e.entries()){if(!("alias"in s)||s.alias===null)continue;let l=s.alias;switch(s.type){case"FIELD":o.set(l,c=>Fe(ot(c),s.field));break;case"LITERAL_COL":o.set(l,()=>s.value);break;case"AGGREGATE":{o.set(l,c=>je(c,a)??"0");break}case"ARITH_AGG_COL":{o.set(l,c=>je(c,a)??"0");break}case"WINDOW_COL":o.set(l,c=>je(c,a)??"");break;case"ARITH_COL":o.set(l,c=>String(me(s.expr,ot(c),i)));break;case"STRFUNC_COL":{let c=on(s.expr);o.set(l,p=>yi(s.expr)?je(p,a)??Ie(p,c)??ye(s.expr,ot(p),n,r,i):ye(s.expr,ot(p),n,r,i));break}case"CASE_COL":o.set(l,c=>$e(s.expr)?je(c,a)??"":Ke(s.expr,ot(c),n,r,i));break;case"SCALAR_VALUE_COL":{let c=At(s.expr);o.set(l,p=>rn(s.expr)?je(p,a)??Ie(p,c)??"":String(be(s.expr,ot(p),n,r,i)));break}case"SCALAR_SUBQUERY_COL":o.set(l,()=>t?.get(a)??"");break;case"GROUPING_COL":o.set(l,c=>Yn(s.ref,c));break;case"VARIABLE_COL":break}}return(a,s)=>o.get(a)?.(s)}function Ru(e,t,n,r,i,o,a={}){let s=t.map((l,c)=>({column:l,columnIndex:c})).filter(l=>l.column.type==="WINDOW_COL");if(e.length===0||s.length===0)return e;for(let l=0;l<e.length;l++)e[l]=du(e[l]);for(let{column:l,columnIndex:c}of s){let p=new Map;for(let u of e){let d=JSON.stringify(l.partitionBy.map(R=>yS(u,R))),f=p.get(d);f?f.push(u):p.set(d,[u])}for(let u of p.values()){let d=dE(u,l.orderBy,n,r,i,void 0,a),f=d.rows;if(so(l)){mS(l,c,d,o,a);continue}if(vs(l)){RS(l,c,f,a);continue}if(!Ds(l))throw new Error(`InternalError: unknown window kind ${l.windowKind??"undefined"}`);let R=1,E=1;for(let m=0;m<f.length;m++){m>0&&d.compare(f[m-1],f[m])!==0&&(R=m+1,E++);let y=l.func==="ROW_NUMBER"?m+1:l.func==="RANK"?R:E;ht(f[m].row,c,String(y),[l.alias])}}}return e}function ES(e,t,n={}){let r=Lt(e,ot(t),void 0,void 0,n);return r==null||typeof r=="number"&&!Number.isFinite(r)?"":String(r)}function RS(e,t,n,r={}){let i=n.map(a=>ES(e.arg,a.row,r)),o=e.valueFunc==="LAG"?-1:1;for(let a=0;a<n.length;a++){let s=a+o*e.offset;ht(n[a].row,t,s>=0&&s<i.length?i[s]:"",[e.alias])}}function mS(e,t,n,r,i={}){let o=n.rows,a=e.arg.type==="WILDCARD"?null:cE(e.aggFunc,e.arg,o.map(f=>f.row),i),s=e.arg.type==="WILDCARD"?void 0:mi(e.arg,r),l=typeof s=="string"?$(s):s??$("string"),c=[],p=0,u=0,d;for(let f=0;f<o.length;f++){let R=a?.[f]??null;if(e.arg.type==="WILDCARD")p++;else if(R!==null)if(e.aggFunc==="COUNT")p++;else if(e.aggFunc==="SUM"||e.aggFunc==="AVG")u+=Number(R),p++;else if(d===void 0)d=R;else{let m=rt(R,d,l);(e.aggFunc==="MAX"&&m>0||e.aggFunc==="MIN"&&m<0)&&(d=R)}let E=e.aggFunc==="COUNT"?p:e.aggFunc==="SUM"?u:e.aggFunc==="AVG"?p===0?0:u/p:d??0;c.push(String(E))}if(e.frame===null){let f=c[c.length-1];for(let R of o)ht(R.row,t,f,[e.alias]);return}if(e.frame.unit==="RANGE"){for(let f=0;f<o.length;){let R=f;for(;R+1<o.length&&n.compare(o[R],o[R+1])===0;)R++;for(let E=f;E<=R;E++)ht(o[E].row,t,c[R],[e.alias]);f=R+1}return}for(let f=0;f<o.length;f++)ht(o[f].row,t,c[f],[e.alias])}function yS(e,t){let n=t.tableAlias?`${t.tableAlias}.${t.field}`:t.field;return Fe(ot(e),n)}function va(e,t,n){let r=n??0;return t===null?e.slice(r):e.slice(r,r+t)}function Da(e,t,n,r={}){let i=ot(t);switch(e.type){case"VARIABLE_COL":throw new Error(`internal error: unresolved SELECT variable @${e.name}`);case"WILDCARD":return{kind:"EXPANDED",entries:(r.wildcardKeys??Object.keys(i)).map(a=>[a,i[a]!==void 0?i[a]:null])};case"PARENT_WILDCARD":return{kind:"EXPANDED",entries:(r.parentWildcardKeys??Object.keys(i).filter(a=>a.startsWith("_p.")).sort()).map(a=>[a,i[a]!==void 0?i[a]:null])};case"FIELD":return Fe(i,e.field);case"LITERAL_COL":return e.value;case"AGGREGATE":{let o=de(e.func,e.distinct,e.arg);return je(t,n)??Ie(t,e.alias??o)??Ie(t,o)??vt(t,e.alias??o)??vt(t,o)??"0"}case"ARITH_AGG_COL":{let o=e.alias??Ri(e.expr);return je(t,n)??Ie(t,o)??vt(t,o)??"0"}case"ARITH_COL":return String(me(e.expr,i,r.evaluationContext));case"CASE_COL":return $e(e.expr)?je(t,n)??Ie(t,cu(e.alias,n))??vt(t,cu(e.alias,n))??"":Ke(e.expr,i,r.resolveFieldType,r.resolveFieldSemantics,r.evaluationContext);case"GROUPING_COL":return Yn(e.ref,t);case"STRFUNC_COL":{let o=on(e.expr);return yi(e.expr)?je(t,n)??Ie(t,e.alias??o)??Ie(t,o)??vt(t,e.alias??o)??vt(t,o)??ye(e.expr,i,r.resolveFieldType,r.resolveFieldSemantics,r.evaluationContext):ye(e.expr,i,r.resolveFieldType,r.resolveFieldSemantics,r.evaluationContext)}case"SCALAR_VALUE_COL":{let o=At(e.expr);return rn(e.expr)?je(t,n)??Ie(t,e.alias??o)??Ie(t,o)??vt(t,e.alias??o)??vt(t,o)??"":String(be(e.expr,i,r.resolveFieldType,r.resolveFieldSemantics,r.evaluationContext))}case"SCALAR_SUBQUERY_COL":return r.scalarCache?.get(n)??"";case"WINDOW_COL":return je(t,n)??Ie(t,e.alias)??vt(t,e.alias)??""}}function gS(e,t,n={}){return e.map((r,i)=>{let o=Da(r,t,i,n);return typeof o=="string"?o:o.entries.map(([,a])=>a)})}function Sn(e,t,n,r,i,o,a,s={}){if(t.length===1&&t[0].type==="WILDCARD"){let R=e.map(m=>{let y=oE(nE(m),a),g=Da(t[0],m,0,{wildcardKeys:Object.keys(y)}),S={};if(typeof g!="string")for(let[h,I]of g.entries)I!==null&&(S[h]=I);return S}),E=R.length>0?Object.keys(R[0]):[...i??[]];return{rows:R,columns:E}}let l=TS(t),c=SS(t),p=t.some(R=>R.type==="WILDCARD"||R.type==="PARENT_WILDCARD"),u=p?null:hS(t,l,c),d=u??[];return p&&e.length===0?{rows:[],columns:AS(t,l,c)}:{rows:e.map((R,E)=>{let m={},y={scalarCache:n,resolveFieldType:r,resolveFieldSemantics:o,evaluationContext:s,wildcardKeys:Object.keys(oE(nE(R),a)),parentWildcardKeys:Object.keys(R).filter(g=>g.startsWith("_p.")).sort()};for(let[g,S]of t.entries()){let h=Da(S,R,g,y);switch(S.type){case"VARIABLE_COL":break;case"WILDCARD":if(typeof h!="string")for(let[I,N]of h.entries)N!==null&&(m[I]=N);break;case"PARENT_WILDCARD":{if(typeof h!="string")for(let[I,N]of h.entries)N!==null&&(m[I]=N),E===0&&d.push(I);break}case"FIELD":{let I=u?.[g]??S.alias??l.get(g)??S.field;m[I]=h,u===null&&E===0&&d.push(I);break}case"LITERAL_COL":{let I=u?.[g]??S.alias??`'${S.value}'`;m[I]=h,u===null&&E===0&&d.push(I);break}case"AGGREGATE":{let I=de(S.func,S.distinct,S.arg),N=u?.[g]??S.alias??I;m[N]=h,u===null&&E===0&&d.push(N);break}case"ARITH_AGG_COL":{let I=u?.[g]??S.alias??Ri(S.expr);m[I]=h,u===null&&E===0&&d.push(I);break}case"ARITH_COL":{let I=u?.[g]??S.alias??mu(S.expr);m[I]=h,u===null&&E===0&&d.push(I);break}case"CASE_COL":{let I=u?.[g]??S.alias??c.get(g)??"case";m[I]=h,u===null&&E===0&&d.push(I);break}case"GROUPING_COL":{let I=u?.[g]??S.alias??`GROUPING(${S.ref.field.tableAlias?`${S.ref.field.tableAlias}.`:""}${S.ref.field.field})`;m[I]=h,u===null&&E===0&&d.push(I);break}case"STRFUNC_COL":{let I=u?.[g]??S.alias??on(S.expr);m[I]=h,u===null&&E===0&&d.push(I);break}case"SCALAR_VALUE_COL":{let I=u?.[g]??S.alias??At(S.expr);m[I]=h,u===null&&E===0&&d.push(I);break}case"SCALAR_SUBQUERY_COL":{let I=u?.[g]??S.alias??"(subquery)";m[I]=h,u===null&&E===0&&d.push(I);break}case"WINDOW_COL":{let I=u?.[g]??S.alias;m[I]=h,u===null&&E===0&&d.push(I);break}}}return m}),columns:d}}function hS(e,t,n){return e.map((r,i)=>EE(r,i,t,n))}function AS(e,t,n){let r=[],i=new Set;for(let[o,a]of e.entries()){if(a.type==="WILDCARD"||a.type==="PARENT_WILDCARD")continue;let s=EE(a,o,t,n);i.has(s)||(i.add(s),r.push(s))}return r}function EE(e,t,n,r){switch(e.type){case"VARIABLE_COL":throw new Error(`internal error: unresolved SELECT variable @${e.name}`);case"FIELD":return e.alias??n.get(t)??e.field;case"LITERAL_COL":return e.alias??`'${e.value}'`;case"AGGREGATE":return e.alias??de(e.func,e.distinct,e.arg);case"ARITH_AGG_COL":return e.alias??Ri(e.expr);case"ARITH_COL":return e.alias??mu(e.expr);case"CASE_COL":return e.alias??r.get(t)??"case";case"STRFUNC_COL":return e.alias??on(e.expr);case"SCALAR_VALUE_COL":return e.alias??At(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 SS(e){let t=new Set(e.flatMap(i=>"alias"in i&&i.alias!==null?[i.alias]:[])),n=new Map,r=1;for(let[i,o]of e.entries()){if(o.type!=="CASE_COL"||o.alias!==null)continue;let a;do a=r===1?"case":`case_${r}`,r++;while(t.has(a));t.add(a),n.set(i,a)}return n}function TS(e){let t=new Map;for(let r of e){if(r.type!=="FIELD"||r.alias)continue;let i=tE(r.field);t.set(i,(t.get(i)??0)+1)}let n=new Map;for(let[r,i]of e.entries()){if(i.type!=="FIELD"||i.alias)continue;let o=tE(i.field),a=(t.get(o)??0)>1,s=i.field.includes(".")&&!i.field.startsWith("_p.");n.set(r,a&&s?i.field:o)}return n}function tE(e){if(e.startsWith("_p."))return e;let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function nE(e){let t={};for(let[n,r]of Object.entries(e))n.startsWith("_p.")||(t[n]=r);return t}function mu(e){let t=n=>{if(n.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${n.name} reached arithmetic column labeling.`);return n.type==="FIELD_REF"?n.field:n.type==="NUMBER"?z(n):n.type==="STRING_FUNC"?on(n):`(${t(n.left)}${n.op}${t(n.right)})`};return e.type==="ARITH"?`${t(e.left)}${e.op}${t(e.right)}`:t(e)}function on(e){let t=e.args.map(n=>n.type==="AGG_REF"||n.type==="AGG_ARITH"||n.type==="AGG_GROUP_KEY"?Ri(n):n.type==="VARIABLE"?`@${n.name}`:At(n));return`${e.func}(${t.join(",")})`}function At(e){switch(e.type){case"STRING":return`'${e.value}'`;case"NUMBER":return z(e);case"VARIABLE":return`@${e.name}`;case"FIELD":return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;case"STRING_FUNC":return on(e);case"CASE_WHEN":return"case";case"SCALAR_ARITH":return`${At(e.left)}${e.op}${At(e.right)}`;case"CONCAT_OP":return`${At(e.left)}||${At(e.right)}`}}function IS(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"?!1:rn(e)}function rn(e){return e.type==="STRING_FUNC"?yi(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?rn(e.left)||rn(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>rE(t.result))||e.elseResult!==null&&rE(e.elseResult):!1}function rE(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?!1:rn(e)}function yi(e){return e.args.some(t=>IS(t))}function wS(e,t,n){if(e.type==="AGG_REF"){let r=Ei(e.func,e.distinct,e.arg,e.separator,t,n);return typeof r=="number"?{type:"NUMBER",value:r,raw:String(r)}:{type:"STRING",value:r}}if(e.type==="AGG_ARITH"){let r=di(e,t,n);return{type:"NUMBER",value:r,raw:String(r)}}if(e.type==="AGG_GROUP_KEY"){let r=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return{type:"NUMBER",value:Number(Fe(t[0]??{},r)),raw:Fe(t[0]??{},r)}}if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved aggregate arithmetic variable @${e.name}.`);return e.type==="STRING_FUNC"?yu(e,t,n):fi(e,t,n)}function fi(e,t,n){return e.type==="STRING_FUNC"?yu(e,t,n):e.type==="CASE_WHEN"?RE(e,t,n):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?{...e,left:fi(e.left,t,n),right:fi(e.right,t,n)}:e}function iE(e,t,n){if(e.type==="AGG_REF"){let r=Ei(e.func,e.distinct,e.arg,e.separator,t,n);return typeof r=="number"?{type:"NUMBER",value:r,raw:String(r)}:{type:"STRING",value:r}}if(e.type==="AGG_ARITH"){let r=di(e,t,n);return{type:"NUMBER",value:r,raw:String(r)}}return e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?e:fi(e,t,n)}function RE(e,t,n){return{...e,branches:e.branches.map(r=>({...r,result:iE(r.result,t,n)})),elseResult:e.elseResult===null?null:iE(e.elseResult,t,n)}}function yu(e,t,n){return{type:"STRING_FUNC",func:e.func,args:e.args.map(r=>wS(r,t,n))}}function oE(e,t){if(!t||t.size===0)return e;let n={};for(let[r,i]of Object.entries(e))[...t].some(o=>r.startsWith(`${o}.`))||(n[r]=i);return n}function aE(e,t){if(e!==void 0)return t?e.flatMap(n=>[`${t}.${n}`,n]):[...e]}function su(e,t,n){if(!(e===void 0&&t===void 0&&n.length===0))return[...new Set([...e??[],...t??[],...Object.keys(n[0]??{})])]}function bS(e,t){let n=new Map;for(let r of e)if(!(!("alias"in r)||!r.alias))if(r.type==="ARITH_COL"||r.type==="ARITH_AGG_COL")n.set(r.alias,$("number"));else if(r.type==="WINDOW_COL"){if(Ds(r)||so(r)&&(r.aggFunc==="COUNT"||r.aggFunc==="SUM"||r.aggFunc==="AVG"))n.set(r.alias,$("number"));else if((so(r)||vs(r))&&r.arg.type!=="WILDCARD"){let i=mi(r.arg,t)??"string";n.set(r.alias,typeof i=="string"?$(i):i)}}else 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"?n.set(r.alias,$("number")):r.func==="GROUP_CONCAT"&&n.set(r.alias,$("string")):r.type==="LITERAL_COL"||r.type==="CASE_COL"||r.type==="SCALAR_SUBQUERY_COL"||r.type==="SCALAR_VALUE_COL"?n.set(r.alias,$("string")):r.type==="STRFUNC_COL"&&n.set(r.alias,$(fE.has(r.expr.func)?"number":"string"));return n}function gu(e){let{stmt:t,tables:n,scalarCache:r,optionOrders:i,sortKinds:o,orderSemantics:a,fieldTypeResolver:s,fieldSemanticsResolver:l,havingFieldTypeResolver:c,havingFieldSemanticsResolver:p,aggregateSortKindResolver:u,appliedKlikes:d,sourceColumns:f,tableColumns:R,hiddenQualifiedAliases:E,resolvedGroupingSpec:m,plainGroupByPlan:y,warnings:g,evaluationContext:S}=e,h=bS(t.columns,u);for(let[_,b]of a??[])h.set(_,b);let I=[],N=t.from.alias;I=(n.get(N)??n.get(null)??[]).map(_=>Ut(_,N));let P=su(aE(R?.get(N),N),void 0,I);for(let _ of t.joins){let b=_.table.alias,A=(n.get(b)??[]).map(x=>Ut(x,b)),w=su(aE(R?.get(b),b),void 0,A);I=tS(I,A,_,{leftColumns:P,rightColumns:w}),P=su(P,w,I)}let M=e.residualWhere!==void 0?e.residualWhere:t.where;I=rS(I,M,s,d,l,S);let v=Z(t);if(v.type==="GROUPING_SETS"){if(!m)throw new Error("internal error: B65 grouping sets require a metadata-resolved grouping spec.");I=oS(I,m,t.columns,u,{maxGeneratedRows:5e4,evaluationContext:S})}else(v.type==="PLAIN"||lE(t.columns))&&(I=iS(I,v.type==="PLAIN"?v.allItems:[],t.columns,u,v.type==="PLAIN"?y:void 0,{scalarCache:r,resolveFieldType:s,resolveFieldSemantics:l,evaluationContext:S}));Xf(t.columns,I,g);let C=_=>_.aggregateRef?pE(_.aggregateRef,u):p?.(_);return Xf(t.having,I,g),I=lS(I,t.having,c,C,S),I=Ru(I,t.columns,i,o,h,u,S),t.distinct&&(I=uS(I,t.columns,r,s,l,S)),I=fu(I,t.orderBy,i,o,h,Eu(t.columns,r,s,l,S),S),I=va(I,t.limit,t.offset),Sn(I,t.columns,r,s,f,l,E,S)}function mE(e,t){let n=[];for(let r of e){let i=hu(r.$id?.value),o=NS(r[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[c,p]of Object.entries(r)){if(c===t)continue;let u=hu(p?.value);l[`_p.${c}`]={value:u}}for(let[c,p]of Object.entries(s.value??{}))l[c]={value:hu(p?.value)};n.push(l)}}return n}function NS(e){return Array.isArray(e)?e.filter(t=>!!t&&typeof t=="object"):[]}function hu(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 yE(e){return["$id",...new Set([...e.topLevel.map(t=>t.code).filter(t=>t!=="$id"&&t!=="$revision"),...e.subtables.keys()])]}function gE(e,t){let n=gi(e);for(let[r,i]of Object.entries(t))n[r]=gi(i);return n}function hE(e){let t=[...e.preErrors.map(i=>Au(i)),...e.postImageErrors.map(i=>Au(i,i.$err_subtable!=="")),...e.checkErrors.map(i=>Au(i))],n=new Set;t.length>0&&n.add(e.rowNumber);let r={};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}`);r[i]=gi(e.normalizedPostImage[i])}return{errors:t,invalidRows:n.size,invalidRowNumbers:n,writeRecord:r}}function Au(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 gi(e,t=new Map){if(e===null||typeof e!="object")return e;let n=e,r=t.get(n);if(r!==void 0)return r;if(Array.isArray(e)){let o=[];t.set(n,o);for(let a of e)o.push(gi(a,t));return o}let i={};t.set(n,i);for(let[o,a]of Object.entries(e))i[o]=gi(a,t);return i}function SE(e,t){let n=[],r=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"&&tt(a.name)&&!r.has(a.name)){r.add(a.name),n.push(a.name);return}t&&a.type==="SELECT"||Object.values(a).forEach(i)};return i(e),n}function Tu(e){return SE(e,!0)}function Ua(e,t){let n=[],r=new Set,i=o=>{if(Array.isArray(o)){o.forEach(i);return}if(o===null||typeof o!="object"||r.has(o))return;r.add(o);let a=o;if(a.type==="SELECT"&&o!==t){n.push(o);return}Object.values(a).forEach(i)};return i(e),n}function at(e,t,n,r,i=!0,o=!0,a=r){let s=Tu(e.where);s.length>0&&n.push({kind:r?"FORBIDDEN":"SELECT",source:e,where:e.where,functionNames:s,path:t,allowPhase2Prefilter:i,allowFullScanExact:o,relativeFunctionOccurrences:Te(e.where)}),Ua(e,e).forEach((l,c)=>at(l,`${t}.select-source[${c}]`,n,a,a?!1:i,a?!1:o,a))}function hi(e,t,n,r,i=!0){e.left.type==="UNION"?hi(e.left,`${t}.left`,n,r,i):at(e.left,`${t}.left`,n,r,!0,i),at(e.right,`${t}.right`,n,r,!0,i)}function AE(e,t,n,r){if(!r&&zt(e)){at(qt(e),`${t}.inlined`,n,!1,!0,!0);return}e.ctes.forEach((i,o)=>{i.query.type==="SELECT"?at(i.query,`${t}.cte[${o}]`,n,r,!1,!r,!0):i.query.type==="UNION"&&hi(i.query,`${t}.cte[${o}]`,n,!0,!1)}),e.query.type==="SELECT"?at(e.query,`${t}.main`,n,r,!1,!r,!0):hi(e.query,`${t}.main`,n,!0,!1)}function TE(e,t,n,r=!1){switch(e.type){case"SELECT":at(e,t,n,r);return;case"UNION":hi(e,t,n,r);return;case"WITH":AE(e,t,n,r);return;case"CREATE_TEMP_TABLE":e.query.type==="WITH"?AE(e.query,`${t}.query`,n,!1):e.query.type==="UNION"?hi(e.query,`${t}.query`,n,!0,!1):at(e.query,`${t}.query`,n,!1,!1,!0,!0);return;case"EXPLAIN":TE(e.query,`${t}.query`,n,r);return;case"VALIDATE":case"REORDER":{let i=Tu(e.where);i.length>0&&n.push({kind:"FORBIDDEN",source:e,where:e.where,functionNames:i,path:t,allowFullScanExact:!1,relativeFunctionOccurrences:Te(e.where)}),Ua(e,e).forEach((o,a)=>at(o,`${t}.select-source[${a}]`,n,!0,!0,!1));return}case"UPDATE":case"DELETE":{let i=Tu(e.where);if(i.length>0){let o=r||!!e.subtableCode||e.type==="UPDATE"&&(e.from!=null||!!e.applyBlocks?.length);n.push({kind:o?"FORBIDDEN":"DML",source:e,where:e.where,functionNames:i,path:t,allowFullScanExact:!1,relativeFunctionOccurrences:Te(e.where)})}if(e.type==="UPDATE"&&e.applyBlocks?.length){let o=SE(e.applyBlocks,!0);o.length>0&&n.push({kind:"FORBIDDEN",source:e,where:null,functionNames:o,path:`${t}.apply`,allowFullScanExact:!1,relativeFunctionOccurrences:[]})}Ua(e,e).forEach((o,a)=>at(o,`${t}.select-source[${a}]`,n,r,!1,!1));return}default:Ua(e,e).forEach((i,o)=>at(i,`${t}.select-source[${o}]`,n,r,!1,!1))}}function Ma(e,t){let n=new Map;for(let r of t){if(!tt(r))return!1;n.set(r,(n.get(r)??0)+1)}for(let[r,i]of n)if((e.match(new RegExp(`\\b${r}\\s*\\(`,"g"))?.length??0)<i)return!1;return!0}function Iu(e,t){return t.eligible===!0&&Ve(e)==="FULL_SCAN"&&e.orderMode!=="KINTONE_NATIVE"&&e.from.cteName===null&&!e.from.subtableCode&&e.joins.length===0}function CS(e,t){return e.where!==null&&e.joins.length>0&&e.joins.every(n=>n.type==="INNER"||n.type==="CROSS")&&[e.from,...e.joins.map(n=>n.table)].every(n=>n.alias!==null&&n.cteName===null&&!n.subtableCode)&&lr(t)}function PS(e){return{kind:e.kind,source:e.source,functionNames:e.functionNames,path:e.path,clientWhereEvaluation:!0,allowed:!1}}function OS(e,t){let n=(t?.reasons??[]).filter(r=>r.functionName===e).map(r=>r.code).filter(r=>r.startsWith("WHERE_RELATIVE_DATE_")||r.startsWith("WHERE_KINTONE_FUNCTION_"));return Kn(e)?(n.some(r=>r!==wt)||n.unshift("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED"),n.includes(wt)||n.push(wt)):n.includes(un)||n.push(un),[...new Set(n)]}function Su(e,t){let n=e.functionNames[0],r=Kn(n)?wt:un,i=OS(n,t);return{functionName:n,path:e.path,code:i.find(o=>o!==r)??r,reasonCodes:i}}async function IE(e,t){let n=[];TE(e,"statement",n);let r=[];for(let i of n){if(i.kind==="FORBIDDEN"){let p=PS(i);return r.push(p),{hasRelativeDate:i.functionNames.some(ie),hasServerOnlyWhereFunction:!0,nodes:r,allowed:!1,rejection:Su(i)}}if(i.kind==="SELECT"){let p=i.source,u=p.from.cteName===null&&!p.from.subtableCode&&p.joins.length===0,d=Ve(p),f=await t.select(p),R="";try{R=i.where===null?"":Y(i.where)}catch{R=""}let E=u&&d==="SIMPLE"&&(p.orderBy.length===0||p.orderMode==="KINTONE_NATIVE")&&f.capability==="EXACT_PUSHDOWN"&&Ma(R,i.relativeFunctionOccurrences),m,y;if(!E&&i.allowPhase2Prefilter!==!1&&f.capability==="SUPERSET_PREFILTER"&&t.prefilterDecomposition){let I=await t.prefilterDecomposition(p);I?.eligible===!0&&Iu(p,I)&&(m=I.plan,y=!0,E=!0)}let g;!E&&f.capability==="EXACT_PUSHDOWN"&&(g=Fo({select:p,selectMode:d,capability:f,context:{allowFullScanExact:i.allowFullScanExact},serializedWholeWhere:R||null,relativeFunctionNames:i.relativeFunctionOccurrences})??void 0,g&&(m=g.prefilterPlan,E=!0));let S;if(!E&&t.joinServerFunctionPlan){let I=await t.joinServerFunctionPlan(p);I!==null&&CS(p,I)&&(S=I,E=!0)}let h={kind:i.kind,source:i.source,functionNames:i.functionNames,path:i.path,selectMode:d,capability:f,restQuery:R,...m?{prefilterPlan:m,phase2PrefilterEligible:y}:{},...g?{fullScanExactPlan:g,allowForm:g.allowForm}:{},...S?{joinServerFunctionPlan:S,allowForm:"JOIN_SERVER_FUNCTION_EXACT",joinServerFunctionVariant:S.serverFunctionCandidate.variant}:{},clientWhereEvaluation:!E,allowed:E};if(r.push(h),!E)return{hasRelativeDate:n.some(I=>I.functionNames.some(ie)),hasServerOnlyWhereFunction:!0,nodes:r,allowed:!1,rejection:Su(i,f)};continue}let o=i.source,a=await t.dml(o),s="";try{s=i.where===null?"":Y(i.where)}catch{s=""}let l=a.capability==="EXACT_PUSHDOWN"&&Ma(s,i.relativeFunctionOccurrences),c={kind:i.kind,source:i.source,functionNames:i.functionNames,path:i.path,capability:a,restQuery:s,clientWhereEvaluation:!l,allowed:l};if(r.push(c),!l)return{hasRelativeDate:n.some(p=>p.functionNames.some(ie)),hasServerOnlyWhereFunction:!0,nodes:r,allowed:!1,rejection:Su(i,a)}}return{hasRelativeDate:n.some(i=>i.functionNames.some(ie)),hasServerOnlyWhereFunction:n.length>0,nodes:r,allowed:!0}}function wu(e){if(!e.allowed&&e.rejection){let t=Kn(e.rejection.functionName)?wt:un,n=e.rejection.reasonCodes.filter(r=>r!==t);throw new Error(`${e.rejection.functionName}: ${t}${n.length>0?` (reason=${n.join(", ")})`:""} (path=${e.rejection.path})`)}}function bu(e,t,n={}){let r=he(e.where,t),i=(S,h="INELIGIBLE")=>({eligible:!1,disposition:h,reasonCodes:S,capability:r.capability,reasons:r.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=Si(e.where);if(o.length===0)return i(["NO_RELATIVE_DATE"]);let a=LS(e.where,t);if(!a.ok)return i(a.reasonCodes);if(!_S(o,a.leaves))return i(["RELATIVE_DATE_LEAF_COUNT_MISMATCH"]);if(r.capability==="EXACT_PUSHDOWN")return i(["DEFER_TO_PHASE1"],"DEFER_PHASE1");if(r.capability!=="SUPERSET_PREFILTER")return i(["CAPABILITY_NOT_SUPERSET_PREFILTER"]);let s=vS(e.where,t),l=xr(e.where,{tableAlias:e.from.alias??void 0,allowUnqualifiedFields:!0,allowKlike:!0,fieldTypes:s.fieldTypes,fieldOptions:s.fieldOptions}),c=n.serialize??Y,p=n.containsFunctions??Ma,u=[];for(let S of a.leaves){let h=Ga(S);if(h===null)return i(["RELATIVE_DATE_LEAF_COUNT_MISMATCH"]);let I;try{I=c(S)}catch{return i(["PREFILTER_SERIALIZATION_FAILED"])}if(!p(I,[h]))return i(["PREFILTER_FUNCTION_MISSING"]);u.push(S)}let d=DS(l.condition),f=new Set(u),R=xa(e.where,f,d);if(R===null)return i(["RELATIVE_DATE_LEAF_COUNT_MISMATCH"]);let E;try{E=c(R)}catch{return i(["PREFILTER_SERIALIZATION_FAILED"])}let m=u.map(S=>Ga(S));if(!p(E,[...new Set(m)])||!US(E,m))return i(["PREFILTER_FUNCTION_MISSING"]);let y=n.rewriteResidual?n.rewriteResidual(e.where,f):Fa(e.where,f);if(y!==null&&Si(y).length>0)return i(["RESIDUAL_RELATIVE_DATE_REMAINED"]);if(y===null)return i(["DEFER_TO_PHASE1"],"DEFER_PHASE1");let g=new Set;for(let S of m)g.add(S);return{eligible:!0,plan:{prefilterWhere:R,residualWhere:y,exactRelativeLeaves:u,relativeFunctionNames:g,appliedKlikes:l.appliedKlikes,capability:r.capability,reasons:r.reasons}}}function LS(e,t){let n=[],r=null,i=o=>{if(r===null)switch(o.type){case"GROUP":i(o.expr);return;case"LOGICAL":if(o.op==="AND"){i(o.left),i(o.right);return}Si(o).length>0&&(r="RELATIVE_DATE_CONTEXT_UNSUPPORTED");return;case"NOT":Si(o).length>0&&(r="RELATIVE_DATE_CONTEXT_UNSUPPORTED");return;case"BINARY":{if(Ga(o)===null)return;if(he(o,t).capability!=="EXACT_PUSHDOWN"){r="RELATIVE_DATE_LEAF_NOT_EXACT";return}n.push(o);return}case"EXISTS":Si(o).length>0&&(r="RELATIVE_DATE_CONTEXT_UNSUPPORTED");return;case"NULL_CHECK":case"BOOLEAN":return}};return i(e),r===null?{ok:!0,leaves:n}:{ok:!1,reasonCodes:[r]}}function Ga(e){return e.right.type==="KINTONE_FUNC"&&tt(e.right.name)?e.right.name:e.right.type==="IN_LIST"&&e.right.values.length===1&&e.right.values[0].type==="KINTONE_FUNC"&&tt(e.right.values[0].name)?e.right.values[0].name:null}function Si(e){let t=[],n=r=>{if(r.type==="BINARY"&&Ga(r)!==null){t.push(r);return}switch(r.type){case"LOGICAL":n(r.left),n(r.right);return;case"NOT":case"GROUP":n(r.expr);return;case"EXISTS":r.query.where!==null&&n(r.query.where);return;case"BINARY":case"NULL_CHECK":case"BOOLEAN":return}};return n(e),t}function _S(e,t){if(e.length!==t.length)return!1;let n=new Set(t);for(let r of e)if(!n.delete(r))return!1;return n.size===0}function DS(e){let t=new Set,n=r=>{switch(r.type){case"BINARY":t.add(r);return;case"LOGICAL":n(r.left),n(r.right);return;case"NOT":case"GROUP":n(r.expr);return;case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}};return e!==null&&n(e),t}function xa(e,t,n){switch(e.type){case"BINARY":return t.has(e)||n.has(e)?e:null;case"LOGICAL":if(e.op!=="AND")return null;{let r=xa(e.left,t,n),i=xa(e.right,t,n);return r!==null&&i!==null?{...e,left:r,right:i}:r??i}case"GROUP":{let r=xa(e.expr,t,n);return r===null?null:{...e,expr:r}}case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return null}}var Ai={type:"BOOLEAN",value:!0};function Fa(e,t){if(e.type==="BINARY"&&t.has(e))return Ai;switch(e.type){case"LOGICAL":{if(e.op!=="AND")return e;let n=Fa(e.left,t)??Ai,r=Fa(e.right,t)??Ai;return ka(n)?ka(r)?null:r:ka(r)?n:n===e.left&&r===e.right?e:{...e,left:n,right:r}}case"GROUP":{let n=Fa(e.expr,t)??Ai;return ka(n)?Ai:n===e.expr?e:{...e,expr:n}}case"BINARY":case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return e}}function ka(e){return e.type==="BOOLEAN"&&e.value}function vS(e,t){let n=new Map,r=a=>{if(a===null||typeof a!="object")return;if(Array.isArray(a)){a.forEach(r);return}let s=a;if(s.type!=="SELECT"){if(s.type==="FIELD"&&typeof s.field=="string"&&typeof s.tableAlias<"u"){n.set(s.field,a);return}Object.values(s).forEach(r)}};r(e);let i=new Map,o=new Map;for(let[a,s]of n){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 US(e,t){let n=new Map;for(let r of t){if(!Tr.has(r))return!1;n.set(r,(n.get(r)??0)+1)}for(let[r,i]of n)if((e.match(new RegExp(`\\b${r}\\s*\\(`,"g"))?.length??0)<i)return!1;return!0}var V=class extends Error{constructor(t){super(`ImportSourceError: ${t}`),this.name="ImportSourceError"}};function wE(e,t){if(!t)throw new V("IMPORT source capability is not available.");let n=t(e);if(!n)throw new V(`source "${e}" is not supplied.`);return n}async function Ka(e,t){let n=t.get(e);return n||(n=e.load().then(r=>{if(!(r.bytes instanceof Uint8Array))throw new V("loader must return Uint8Array bytes.");if(r.bytes.byteLength>10485760)throw new V("source exceeds the 10485760 byte limit.");return r}),t.set(e,n)),n}function MS(e,t){try{return new TextDecoder(t==="sjis"?"shift_jis":"utf-8",{fatal:!0}).decode(e).replace(/^\uFEFF/,"")}catch{throw new V(`invalid ${t.toUpperCase()} byte sequence.`)}}function kS(e){let t=[],n=[],r="",i=!1,o=!1,a=0,s=()=>{n.push(r),r="",o=!1},l=()=>{s(),t.push(n),n=[]};for(;a<e.length;){let c=e[a];if(i){if(c==='"'){if(e[a+1]==='"'){r+='"',a+=2;continue}i=!1,o=!0,a++;continue}r+=c,a++;continue}if(o&&c!==","&&c!=="\r"&&c!==`
5
- `)throw new V(`unexpected character after closing quote at offset ${a}.`);if(c==='"'){if(r.length!==0)throw new V(`quote in unquoted cell at offset ${a}.`);i=!0,a++;continue}if(c===","){s(),a++;continue}if(c==="\r"||c===`
6
- `){c==="\r"&&e[a+1]===`
7
- `&&a++,l(),a++;continue}r+=c,a++}if(i)throw new V("unterminated quoted cell.");return(r.length>0||n.length>0||o)&&l(),t}function xS(e){let t=new Set;e.forEach((n,r)=>{if(n==="")throw new V(`CSV column ${r+1} has an empty name.`);if(t.has(n))throw new V(`CSV column name "${n}" is duplicated.`);t.add(n)})}function Ba(e,t){let n=kS(MS(e,t.encoding)),r,i;if(t.hasHeader?(r=n[0]??[],i=n.slice(1)):(i=n,r=t.columns?[...t.columns]:Array.from({length:i[0]?.length??0},(o,a)=>`c${a+1}`)),xS(r),i.length===0)throw new V("CSV has no data rows.");return i.forEach((o,a)=>{if(o.length!==r.length)throw new V(`CSV row ${a+(t.hasHeader?2:1)} has ${o.length} cells; expected ${r.length}.`)}),{columns:r,rows:i}}var FS=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),GS=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),Ti=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 bE(e,t,n){if(!FS.has(t??""))return e;if(e==="")return[];let r=e.split(/\r\n|\n/);if(r.some(i=>i===""))throw new Ti;return GS.has(t??"")?r.map(i=>({code:i})):r}function Mt(e,t,n,r){throw new V(`JSON ${e} (offset=${t}, line=${n}, column=${r}).`)}function NE(e){try{return new TextDecoder("utf-8",{fatal:!0}).decode(e)}catch{throw new V("JSON source is not valid UTF-8.")}}function CE(e){let t=[],n=0,r=1,i=1,o=()=>{let s=e[n++];return s===`
3
+ `;)this.pos++;continue}if(t==="/"&&this.input[this.pos+1]==="*"){let n=this.pos;this.pos+=2;let r=!1;for(;this.pos<this.input.length;){if(this.input[this.pos]==="*"&&this.input[this.pos+1]==="/"){this.pos+=2,r=!0;break}this.pos++}if(!r)throw new ve("\u30D6\u30ED\u30C3\u30AF\u30B3\u30E1\u30F3\u30C8\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u307E\u305B\u3093",n,this.input,!0);continue}break}}makeToken(t,n,r){return{kind:t,value:n,pos:r,end:this.pos}}};function gl(e){let t=e.codePointAt(0);return t>=65&&t<=90||t>=97&&t<=122||t===95||t===36||lh(t)}function Od(e){let t=e.codePointAt(0);return gl(e)||t>=48&&t<=57}function nr(e){let t=e.codePointAt(0);return t>=48&&t<=57}function lh(e){return e>=12352&&e<=12543||e>=13312&&e<=40959||e>=63744&&e<=64255||e>=65281&&e<=65376}var _d=20,hl=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"}),vd=Object.freeze(["CURRENT_DATE","CURRENT_TIMESTAMP"]),Wr=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"}),cC=Object.freeze(Object.values(Wr).filter(e=>e!==void 0)),uh=Object.freeze(["COUNT","SUM","AVG","MAX","MIN"]),ch=new Set(uh);function ph(e){return ch.has(e)}var Md=Object.freeze({ROW_NUMBER:"ROW_NUMBER",RANK:"RANK",DENSE_RANK:"DENSE_RANK"}),Hr=Object.freeze({TODAY:"TODAY",NOW:"NOW",LOGINUSER:"LOGINUSER",PRIMARY_ORGANIZATION:"PRIMARY_ORGANIZATION"});function Dd(e){return Hr[e]!==void 0}var dh=Object.freeze([...Ro]),fh=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),Eh=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function Rh(e){return fh.has(e)}function mh(e){return Eh.has(e)}function gh(e){return Number.isInteger(e)&&e>=1&&e<=31}var pC=Object.freeze(Array.from(new Set([...Object.keys(hl),...vd,...Object.keys(Wr),...Object.keys(Md),...Object.keys(Hr),...dh,"IF"]))),yh=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","PRIMARY_ORGANIZATION","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 hh(e,t){return e.kind==="("||e.kind==="."||t.kind===")"||t.kind===","||t.kind==="."?!1:t.kind==="("?!yh.has(e.kind):!0}var S=class extends Error{constructor(n,r){super(`${n}\uFF08\u4F4D\u7F6E ${r.pos}\u3001\u30C8\u30FC\u30AF\u30F3: \u300C${r.value}\u300D\uFF09`);this.rawMessage=n;this.token=r;this.name="ParseError"}},yl=["\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306E\u7D50\u679C\u306F\u540C\u3058 SELECT \u306E\u5F0F\u3067\u306F\u4F7F\u3048\u307E\u305B\u3093\u3002"," \xD7 SELECT ROUND(SUM(x) OVER (), 1) AS a FROM t"," \u25CB WITH w AS (SELECT SUM(x) OVER () AS \u7DCF\u8A08 FROM t) SELECT ROUND(\u7DCF\u8A08, 1) AS a FROM w","\u30A6\u30A3\u30F3\u30C9\u30A6\u7D50\u679C\u3092\u5217\u3068\u3057\u3066\u51FA\u3057\u3001\u305D\u308C\u3092\u4F7F\u3046\u5F0F\u306F\u6B21\u306E\u6BB5\uFF08CTE \u307E\u305F\u306F\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\uFF09\u306B\u66F8\u3044\u3066\u304F\u3060\u3055\u3044"].join(`
4
+ `),en=class{constructor(t,n={}){this.tokens=t;this.capabilities=n;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.bareTempTableNames=new Set;this.tempTableRefs=[];this.aggregateGroupKeyTokens=new WeakMap;this.activeCteDefinition=null;this.provisionalRecursiveCte=null;this.allowSelectArithVariable=!1}parse(){let t=this.parseStatements();if(t.length===0)throw new S("SQL \u6587\u304C\u3042\u308A\u307E\u305B\u3093",this.peek());if(t.length>1)throw new S("\u3053\u306E API \u306F\u5358\u6587\u306E\u307F\u53D7\u3051\u4ED8\u3051\u307E\u3059\uFF08\u8907\u6587\u306F\u30D0\u30C3\u30C1\u5B9F\u884C API \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",this.peek());if(this.tempTableRefs.length>0){let n=this.tempTableRefs[0];throw new S(`temp table ${n.value} is not defined in this batch.`,n)}return t[0]}parseStatements(){return this.parseStatementsWithRanges().statements}parseStatementsWithRanges(){let t=[],n=[];for(;;){for(;this.peek().kind===";";)this.advance();if(this.peek().kind==="EOF")break;let r=this.peek();if(t.push(this.parseStatement()),t.length>_d)throw new S(`batch exceeds ${_d} statements.`,r);let i=this.peek();if(i.kind!==";"&&i.kind!=="EOF")throw new S("\u6587\u306E\u533A\u5207\u308A\u306B\u306F ; \u304C\u5FC5\u8981\u3067\u3059",i);let o=this.prev();n.push({start:r.pos,end:o.end??i.pos})}return this.expect("EOF"),{statements:t,statementRanges:n}}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 n=t.value.toUpperCase();if(n==="CREATE")return this.parseCreateTempTable();if(n==="DROP")return this.parseDropTempTable();if(n==="DECLARE")return this.parseDeclareVariable();if(n==="VALIDATE")return this.parseValidate();if(n==="EXIT")return this.parseExit();if(n==="MERGE"){if(!this.capabilities.dialect1)throw new S("MERGE \u306B\u306F -- @ksql dialect: 1 \u306E\u5BA3\u8A00\u304C\u5FC5\u8981\u3067\u3059",t);return this.parseMergeAsUpsert()}if(n==="GENERATE_SERIES")throw new S("GENERATE_SERIES \u306F WITH \u306E CTE \u672C\u4F53\u306B\u66F8\u3044\u3066\u304F\u3060\u3055\u3044\u3002\u4F8B: WITH s AS (GENERATE_SERIES(1, 5)) SELECT generate_series FROM s",t);if(n==="IMPORT"){if(!this.capabilities.import)throw new S("IMPORT is not supported (capability is disabled).",t);return this.parseImport()}break}default:break}throw new S("SELECT / INSERT / UPDATE / DELETE / REORDER / VALIDATE / WITH / SHOW / DESCRIBE / EXPLAIN / CREATE TEMP TABLE / DROP TEMP TABLE / SET / DECLARE / ASSERT / EXIT \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 n=this.peek().kind==="["?this.parseArrayLiteral():this.parseScalarExpr("SET",!0);return{type:"SET_VARIABLE",name:t.value.slice(1).toLowerCase(),expr:n}}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"),n=this.peek().kind==="IDENT"&&this.peek().value.toUpperCase()==="RELATIVE_DATE";if(n&&this.advance(),this.expect("="),n)return{type:"DECLARE_VARIABLE",name:t.value.slice(1).toLowerCase(),annotation:"RELATIVE_DATE",default:this.parseRelativeDateVariableToken()};let r=this.parseScalarExpr("DECLARE",!1);if(r.type==="SCALAR_SUBQUERY")throw new S("DECLARE \u306E\u65E2\u5B9A\u5024\u306B\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());return{type:"DECLARE_VARIABLE",name:t.value.slice(1).toLowerCase(),default:r}}parseRelativeDateVariableToken(){let t=this.peek(),n=Hr[t.kind];if(n==="TODAY"||n==="NOW")return this.parseSqlValue();if(t.kind==="IDENT"&&this.peekAt(1).kind==="("&&ie(t.value.toUpperCase()))return this.parseRelativeDateFunction();throw new S("RELATIVE_DATE \u306E\u65E2\u5B9A\u5024\u306B\u306F\u30B5\u30DD\u30FC\u30C8\u5BFE\u8C61\u306E\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570\u30C8\u30FC\u30AF\u30F3\u304C\u5FC5\u8981\u3067\u3059",t)}parseScalarExpr(t,n){let r=this.peek();if(r.kind==="VARIABLE")throw new S(`${t} \u306E\u53F3\u8FBA\u3067\u306F\u4ED6\u306E\u5909\u6570\u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093`,r);if(r.kind==="NULL")throw new S(`${t} \u306E\u53F3\u8FBA\u3067 NULL \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`,r);if(r.kind==="("&&this.peekAt(1).kind==="SELECT"){if(!n)throw new S("DECLARE \u306E\u65E2\u5B9A\u5024\u306B\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);this.advance();let a=this.parseSelect();if(this.expect(")"),this.isArithOp(this.peek().kind))throw new S("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u5F8C\u306B\u7B97\u8853\u6F14\u7B97\u5B50\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(!a.columns.some(l=>l.type==="WILDCARD"||l.type==="PARENT_WILDCARD")&&a.columns.length!==1)throw new S("scalar subquery in SET must return exactly 1 column.",r);return{type:"SCALAR_SUBQUERY",query:a}}if(r.kind==="STRING")return this.advance(),{type:"STRING",value:r.value};let i=Hr[r.kind];if(i==="LOGINUSER")throw new S(`${t} \u306E\u53F3\u8FBA\u3067 LOGINUSER() \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u5B9F\u884C\u74B0\u5883\u5171\u901A\u306E\u30ED\u30B0\u30A4\u30F3\u30E6\u30FC\u30B6\u30FC\u89E3\u6C7A\u306F\u672A\u5BFE\u5FDC\u3067\u3059\uFF09`,r);if(i==="PRIMARY_ORGANIZATION")throw new S(`${t} \u306E\u53F3\u8FBA\u3067 PRIMARY_ORGANIZATION() \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u5B9F\u884C\u74B0\u5883\u5171\u901A\u306E\u512A\u5148\u7D44\u7E54\u89E3\u6C7A\u306F\u672A\u5BFE\u5FDC\u3067\u3059\uFF09`,r);if(i!==void 0)return this.parseSqlValue();let o=this.parseArithAddSub();if(this.rejectNonScalarExpr(o,r,t),o.type==="NUMBER"||o.type==="STRING_FUNC"||o.type==="ARITH")return o;throw new S(`${t} \u306E\u53F3\u8FBA\u306B\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u542B\u307E\u306A\u3044\u30B9\u30AB\u30E9\u30FC\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,r)}rejectNonScalarExpr(t,n,r){if(!(t.type==="STRING"||t.type==="NUMBER")){if(t.type==="FIELD_REF"||t.type==="FIELD"||t.type==="VARIABLE"||t.type==="AGG_REF")throw new S(`${r} \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`,n);if(t.type==="ARITH"||t.type==="SCALAR_ARITH"||t.type==="CONCAT_OP"||t.type==="AGG_ARITH"){this.rejectNonScalarExpr(t.left,n,r),this.rejectNonScalarExpr(t.right,n,r);return}if(t.type==="STRING_FUNC"){for(let i of t.args)this.rejectNonScalarExpr(i,n,r);return}throw new S(`${r} \u306E\u53F3\u8FBA\u3067\u306F CASE \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`,n)}}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.isDialect1BareTempTableName(),n=this.parseTempTableName();this.expect("AS","CREATE TEMP TABLE \u306B\u306F AS SELECT \u304C\u5FC5\u8981\u3067\u3059");let r=this.peek(),i;if(r.kind==="WITH")i=this.parseWith();else if(r.kind==="SELECT")i=this.tryParseUnionChain(this.parseSelect());else throw new S("CREATE TEMP TABLE ... AS \u306E\u5F8C\u306B\u306F SELECT / WITH \u304C\u5FC5\u8981\u3067\u3059",r);return t!==null&&this.bareTempTableNames.add(t),{type:"CREATE_TEMP_TABLE",name:n,query:i}}parseDropTempTable(){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");let t=this.isDialect1BareTempTableName(),n=this.parseTempTableName();return t!==null&&this.bareTempTableNames.delete(t),{type:"DROP_TEMP_TABLE",name:n}}expectSoftKeyword(t,n){let r=this.peek();if(r.kind==="IDENT"&&r.value.toUpperCase()===t){this.advance();return}throw new S(n,r)}consumeSoftKeyword(t){return this.isSoftKeyword(t)?(this.advance(),!0):!1}parseTempTableName(){let t=this.peek();if(t.kind==="IDENT"&&t.value.startsWith("#"))return this.advance(),t.value;if(this.capabilities.dialect1&&(t.kind==="IDENT"||t.kind==="BIDENT"))return this.advance(),`#${t.value}`;throw new S("\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u306F # \u3067\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08\u4F8B: #temp\uFF09",t)}isDialect1BareTempTableName(){let t=this.peek();return this.capabilities.dialect1&&(t.kind==="IDENT"||t.kind==="BIDENT")&&!t.value.startsWith("#")?t.value:null}parseShow(){if(this.advance(),!this.consume("APPS"))throw new S("SHOW \u306E\u5F8C\u306B\u306F APPS \u304C\u5FC5\u8981\u3067\u3059\uFF08\u4F8B: SHOW APPS\uFF09",this.peek());return{type:"SHOW_APPS"}}parseDescribe(){this.advance();let t=this.parseIdentifier(),{appId:n,subtableCode:r}=ft(t,this.prev());if(r)throw new S("DESCRIBE \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u540D\u3092\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093",this.prev());return{type:"DESCRIBE",appId:n}}parseExplain(){this.advance();let t=this.peek(),n;if(t.kind==="WITH"){let r=this.parseWith();if(r.type!=="WITH")throw new S("EXPLAIN \u306B\u7D9A\u304F WITH \u53E5\u304C\u4E0D\u6B63\u3067\u3059",t);n=r}else if(t.kind==="SELECT"){let r=this.parseSelect(!0);n=this.tryParseUnionChain(r)}else if(t.kind==="INSERT")n=this.parseInsert();else if(t.kind==="UPSERT")n=this.parseUpsert();else if(t.kind==="UPDATE")n=this.parseUpdate();else if(t.kind==="DELETE")n=this.parseDelete();else if(t.kind==="REORDER")n=this.parseReorder();else if(t.kind==="IDENT"&&t.value.toUpperCase()==="VALIDATE")n=this.parseValidate();else if(t.kind==="IDENT"&&t.value.toUpperCase()==="IMPORT"){if(!this.capabilities.import)throw new S("IMPORT is not supported (capability is disabled).",t);n=this.parseImport()}else throw new S("EXPLAIN \u306E\u5F8C\u306B\u306F SELECT / WITH / INSERT / UPSERT / UPDATE / DELETE / REORDER / VALIDATE \u304C\u5FC5\u8981\u3067\u3059",t);return{type:"EXPLAIN",query:n}}parseImport(){this.advance();let t;this.peek().kind==="UPDATE"&&(this.advance(),t="UPDATE_RECORD_NUMBER"),this.expect("INTO"),this.rejectTempTableDml();let n=this.parseIdentifier(),{appId:r,subtableCode:i}=ft(n,this.prev());if(i)throw new S("IMPORT does not support subtables in Phase 1.",this.prev());this.expect("(");let o=[],a=[],s=new Set;for(;;){let C=this.parseIdentifier();if(s.has(C))throw new S(`IMPORT target ${C} is declared more than once.`,this.prev());if(s.add(C),this.peek().kind==="("){this.advance();let v=this.parseIdentList();if(this.expect(")"),new Set(v).size!==v.length)throw new S(`IMPORT subtable ${C} contains duplicate child declarations.`,this.prev());let P;if(this.isSoftKeyword("ROW")){this.advance();for(let U of["ID","SOURCE"]){if(!this.isSoftKeyword(U))throw new S("ROW must be followed by ID SOURCE <header>.",this.peek());this.advance()}P=this.parseIdentifier()}o.push({kind:"SUBTABLE",subtableCode:C,children:v,...P?{rowIdSourceHeader:P}:{}})}else a.push(C),o.push({kind:"FIELD",field:C});if(this.peek().kind!==",")break;this.advance()}if(this.expect(")"),this.expect("FROM"),!this.isSoftKeyword("CSV")&&!this.isSoftKeyword("JSON"))throw new S("IMPORT FROM requires CSV or JSON.",this.peek());let l=this.peek().value.toUpperCase();this.advance();let p=this.parseIdentifier(),c,u=!0,d;if(this.isSoftKeyword("ENCODING")){if(l==="JSON")throw new S("JSON source is UTF-8 only; ENCODING is not allowed.",this.peek());this.advance();let C=this.parseIdentifier().toUpperCase();if(C!=="UTF8"&&C!=="SJIS")throw new S("ENCODING must be UTF8 or SJIS.",this.prev());c=C==="UTF8"?"utf8":"sjis"}if(this.peek().kind==="NOT"&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="HEADER"){if(l==="JSON")throw new S("NO HEADER is CSV-only.",this.peek());this.advance(),this.advance(),u=!1}else if(this.isSoftKeyword("NO")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="HEADER"){if(l==="JSON")throw new S("NO HEADER is CSV-only.",this.peek());this.advance(),this.advance(),u=!1}if(this.isSoftKeyword("COLUMNS")){if(l==="JSON")throw new S("COLUMNS is CSV-only.",this.peek());if(u)throw new S("COLUMNS requires NO HEADER.",this.peek());this.advance(),this.expect("("),d=this.parseIdentList(),this.expect(")")}let f;if(this.peek().kind==="SELECT"){if(l==="JSON")throw new S("SELECT projection is CSV-only.",this.peek());if(f=this.parseSelect(),f.from.cteName!==_e||f.joins.length>0)throw new S("IMPORT projection cannot use FROM or JOIN.",this.prev());if(f.where||f.groupBy.length||f.grouping!==void 0||f.having||f.orderBy.length||f.limit!==null||f.offset!==null)throw new S("IMPORT projection supports SELECT expressions only.",this.prev());if(this.validateImportProjectionScope(f,this.prev()),o.some(C=>C.kind==="SUBTABLE"))throw new S("IMPORT subtable sources cannot use SELECT projection.",this.prev());if(f.columns.length!==a.length)throw new S(`IMPORT projection has ${f.columns.length} columns; target has ${a.length}.`,this.prev())}let R="POSITION",E=!1;if(this.peek().kind==="BY"||this.isSoftKeyword("BY")){if(l==="JSON")throw new S("BY NAME is CSV-only.",this.peek());if(this.advance(),!this.isSoftKeyword("NAME"))throw new S("BY must be followed by NAME in IMPORT.",this.peek());if(this.advance(),!u)throw new S("BY NAME requires HEADER.",this.prev());if(f)throw new S("BY NAME and SELECT projection are mutually exclusive.",this.prev());if(R="BY_NAME",this.isSoftKeyword("IGNORE")){if(this.advance(),!this.isSoftKeyword("UNKNOWN"))throw new S("IGNORE must be followed by UNKNOWN COLUMNS.",this.peek());if(this.advance(),!this.isSoftKeyword("COLUMNS"))throw new S("IGNORE UNKNOWN must be followed by COLUMNS.",this.peek());this.advance(),E=!0}}let m,g;if(this.isSoftKeyword("MATCH")){this.advance();for(let C of["RECORD","NUMBER","SOURCE"]){if(!this.isSoftKeyword(C))throw new S("MATCH must be followed by RECORD NUMBER SOURCE <header>.",this.peek());this.advance()}g=this.parseIdentifier()}this.peek().kind==="ON"&&this.peekAt(1).kind==="DUPLICATE"&&(m=this.parseOnDuplicate());let y;if(this.peek().kind==="REPLACE"||this.isSoftKeyword("REPLACE")){if(this.advance(),!this.isSoftKeyword("SUBTABLES"))throw new S("REPLACE must be followed by SUBTABLES (...).",this.peek());if(this.advance(),this.expect("("),y=this.parseIdentList(),this.expect(")"),new Set(y).size!==y.length)throw new S("REPLACE SUBTABLES contains duplicates.",this.prev())}let T=o.filter(C=>C.kind==="SUBTABLE");if(T.length){if(f)throw new S("IMPORT subtables cannot use SELECT projection.",this.prev());if(l==="JSON"){if(T.some(C=>C.rowIdSourceHeader))throw new S("JSON subtable IMPORT does not accept ROW ID SOURCE.",this.prev());if(y)throw new S("REPLACE SUBTABLES is CSV-only; JSON uses nested-array replacement semantics.",this.prev())}else{if(t!=="UPDATE_RECORD_NUMBER"||!g)throw new S("CSV subtable IMPORT requires IMPORT UPDATE and MATCH RECORD NUMBER SOURCE.",this.prev());if(R!=="BY_NAME")throw new S("CSV subtable IMPORT requires BY NAME.",this.prev());if(!y)throw new S("CSV subtable IMPORT requires REPLACE SUBTABLES (...).",this.prev());let C=new Set(y);for(let v of T){if(!v.rowIdSourceHeader)throw new S(`CSV subtable ${v.subtableCode} requires ROW ID SOURCE <header>.`,this.prev());if(!C.has(v.subtableCode))throw new S(`IMPORT declares child columns for non-replaced subtable ${v.subtableCode}.`,this.prev())}for(let v of C)if(!T.some(P=>P.subtableCode===v))throw new S(`REPLACE SUBTABLES target ${v} is not declared in INTO.`,this.prev())}}else if(y)throw new S("REPLACE SUBTABLES requires subtable targets in INTO.",this.prev());if(t){if(l!=="CSV")throw new S("IMPORT UPDATE supports CSV only.",this.prev());if(R!=="BY_NAME")throw new S("IMPORT UPDATE requires BY NAME.",this.prev());if(!g)throw new S("IMPORT UPDATE requires MATCH RECORD NUMBER SOURCE <header>.",this.peek());if(m)throw new S("IMPORT UPDATE and ON DUPLICATE are mutually exclusive.",this.prev())}else if(g)throw new S("MATCH RECORD NUMBER SOURCE requires IMPORT UPDATE.",this.prev());let h=this.parseCheckGroups(),I=this.parseDmlControlSuffix();return{type:"IMPORT",appId:r,fields:a,targets:o,source:l==="JSON"?{kind:"JSON",sourceName:p}:{kind:"CSV",sourceName:p,encoding:c,hasHeader:u,mappingMode:R,ignoreUnknownColumns:E,...d?{columns:d}:{},...f?{projection:f}:{}},...t?{writeMode:t,recordNumberSourceHeader:g}:{},...y?{replaceSubtables:y}:{},...m?{keyFields:m}:{},...h,...I}}validateImportProjectionScope(t,n){if(Array.isArray(t)){t.forEach(i=>this.validateImportProjectionScope(i,n));return}if(t===null||typeof t!="object")return;let r=t;if(r.type==="SCALAR_SUBQUERY"||r.type==="SCALAR_SUBQUERY_COL")throw new S("IMPORT projection cannot use subqueries.",n);if(typeof r.tableAlias=="string")throw new S("IMPORT projection cannot use qualified column references.",n);Object.values(r).forEach(i=>this.validateImportProjectionScope(i,n))}parseValidate(){let t=this.advance(),n=this.parseIdentifier(),{appId:r,subtableCode:i}=ft(n,this.prev());if(i)throw new S(`VALIDATE APP${r}$${i} \u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002VALIDATE APP${r} (${i}) \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044`,this.prev());let o;if(this.consume("(")){o=[];do{let u=this.parseIdentifier();if(this.consume("(")){let d=this.peek().kind===")"?[]:this.parseIdentList();this.expect(")"),o.push({kind:"SUBTABLE",subtableCode:u,children:d})}else o.push({kind:"FIELD",field:u})}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 u=this.peek();if(u.kind!=="IDENT"||!u.value.startsWith("#"))throw new S("VALIDATE INTO \u306B\u306F # \u3067\u59CB\u307E\u308B\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",u);p=this.parseTableName()}let c={type:"VALIDATE",appId:r,targets:o,...a?{summary:a}:{},where:s,...l,...p?{errorTable:p}:{}};return this.assertValidateExpressions(c,t),c}assertValidateExpressions(t,n){let r=i=>{if(Array.isArray(i)){i.forEach(r);return}if(i===null||typeof i!="object")return;let o=i;if(o.type==="EXISTS"||o.type==="SUBQUERY_IN_LIST"||o.type==="SCALAR_SUBQUERY")throw new S("VALIDATE \u306E WHERE / CHECK \u306B\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);if(o.type==="FIELD"&&o.tableAlias!==null&&o.tableAlias!==void 0)throw new S("VALIDATE \u306E WHERE / CHECK \u3067\u306F\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);if(o.type==="FIELD_REF"&&typeof o.field=="string"&&o.field.includes("."))throw new S("VALIDATE \u306E WHERE / CHECK \u3067\u306F\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);Object.values(o).forEach(r)};r(t.where),r(t.checkGroups)}parseAssert(){this.expect("ASSERT");let t=this.peek(),n=this.isSoftKeyword("WARN");n&&(this.requireDialect1(t),this.advance());let r=this.parseAssertCondition(),i=this.parseFlowMessage();return{type:"ASSERT",...r,...n?{warn:!0}:{},...i!==void 0?{message:i}:{}}}parseExit(){let t=this.advance();if(this.requireDialect1(t),!this.isSoftKeyword("SUCCESS"))throw new S("EXIT \u306E\u5F8C\u306B\u306F SUCCESS \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(this.advance(),this.peek().kind!=="IF"&&!this.isSoftKeyword("IF"))throw new S("EXIT SUCCESS \u306E\u5F8C\u306B\u306F IF \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance();let n=this.parseAssertCondition();if(!this.consume(","))throw new S("EXIT SUCCESS IF \u306B\u306F\u672B\u5C3E\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u6587\u5B57\u5217\u304C\u5FC5\u8981\u3067\u3059",this.peek());let r=this.expect("STRING","EXIT SUCCESS IF \u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");return{type:"EXIT",...n,message:r.value}}parseAssertCondition(){let t=this.pos,n=this.parseAssertOperand(),r=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(),{left:n,op:"BETWEEN",right:null,low:a,high:s,text:this.renderTokenRange(t,this.pos)}}let i=this.tryAssertCompareOp();if(i===null)throw new S("ASSERT \u306B\u306F\u6BD4\u8F03\u6F14\u7B97\u5B50\uFF08= <> < <= > >=\uFF09\u307E\u305F\u306F BETWEEN \u304C\u5FC5\u8981\u3067\u3059\uFF08\u5024\u306E\u307F\u306E ASSERT \u306F\u4E0D\u53EF\uFF09",r);let o=this.parseAssertOperand();return this.rejectAssertCompound(),{left:n,op:i,right:o,low:null,high:null,text:this.renderTokenRange(t,this.pos)}}parseFlowMessage(){if(this.consume(","))return this.requireDialect1(this.prev()),this.expect("STRING","ASSERT \u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059").value}requireDialect1(t){if(!this.capabilities.dialect1)throw new S("\u3053\u306E\u69CB\u6587\u306B\u306F -- @ksql dialect: 1 \u306E\u5BA3\u8A00\u304C\u5FC5\u8981\u3067\u3059",t)}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 n=this.parseSelect();if(this.expect(")"),this.isArithOp(this.peek().kind))throw new S("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u5F8C\u306B\u7B97\u8853\u6F14\u7B97\u5B50\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: ASSERT (SELECT COUNT(*) * 2 FROM APP100) > 10\uFF09",this.peek());if(!n.columns.some(i=>i.type==="WILDCARD"||i.type==="PARENT_WILDCARD")&&n.columns.length>1)throw new S("scalar subquery in ASSERT must return exactly 1 column.",t);return{type:"SCALAR_SUBQUERY",query:n}}if(t.kind==="NUMBER"||t.kind==="("||t.kind==="-"){let n=this.parseArithAddSub();return this.rejectNonLiteralArith(n,t),n.type==="NUMBER",n}throw this.tryStringFuncName()!==null?new S("ASSERT \u306E\u5F0F\u3067\u306F\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",t):new S("ASSERT \u306E\u5F0F\u306B\u306F\u30EA\u30C6\u30E9\u30EB\u30FB\u7B97\u8853\u5F0F\u30FB\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF09",t)}rejectNonLiteralArith(t,n){if(t.type==="FIELD_REF")throw new S(`ASSERT \u3067\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08FROM \u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u304C\u3042\u308A\u307E\u305B\u3093\uFF09: ${t.field}`,n);if(t.type==="STRING_FUNC")throw new S("ASSERT \u306E\u5F0F\u3067\u306F\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\uFF08\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",n);t.type==="ARITH"&&(this.rejectNonLiteralArith(t.left,n),this.rejectNonLiteralArith(t.right,n))}tryAssertCompareOp(){switch(this.peek().kind){case"=":return this.advance(),"=";case"!=":return this.advance(),"!=";case"<>":return this.advance(),"<>";case">":return this.advance(),">";case"<":return this.advance(),"<";case">=":return this.advance(),">=";case"<=":return this.advance(),"<=";default:return null}}rejectAssertCompound(){let t=this.peek();if(t.kind==="AND"||t.kind==="OR")throw new S("ASSERT \u306F AND / OR \u306B\u3088\u308B\u8907\u5408\u6761\u4EF6\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093\uFF08\u8907\u6570\u306E ASSERT \u6587\u306B\u5206\u3051\u3066\u304F\u3060\u3055\u3044\uFF09",t)}renderTokenRange(t,n){let r="";for(let i=t;i<n;i++){let o=this.tokens[i],a;o.kind==="STRING"?a=`'${o.value.replace(/'/g,"''")}'`:o.kind==="BIDENT"?a=`\`${o.value}\``:a=o.value,r.length>0&&hh(this.tokens[i-1],o)&&(r+=" "),r+=a}return r}parseSelect(t=!1){this.expect("SELECT");let n=this.consume("DISTINCT"),r=this.parseSelectColumns(),i=this.consume("FROM"),o=i?this.parseTableRef():{appId:0,alias:null,cteName:_e},a=i?this.parseJoins():[],s=this.consume("WHERE")?this.parseWhereExpr(void 0,!0):null,l=[],p,c=null;if(this.consume("GROUP")){if(this.expect("BY"),this.peek().kind==="DISTINCT"||this.isSoftKeyword("DISTINCT"))throw new S("B65: GROUP BY DISTINCT is not supported in Phase1.",this.peek());if(this.isGroupingSetsStart()?p=this.parseGroupingSetsClause():this.isRollupStart()?p=this.parseRollupClause():this.isCubeStart()?p=this.parseCubeClause():l=this.parseGroupByKeys(),p&&this.peek().kind===",")throw new S("B65: ordinary GROUP BY items cannot be mixed with grouping elements.",this.peek());this.consume("HAVING")&&(c=this.parseWhereExpr("HAVING"))}let u="CANONICAL",d=[];if(this.consume("ORDER"))this.expect("BY"),d=this.parseOrderBy();else if(this.consume("KORDER")){if(!t)throw new S("KORDER BY \u306F\u5229\u7528\u8005\u3078\u7D50\u679C\u3092\u8FD4\u3059\u30C8\u30C3\u30D7\u30EC\u30D9\u30EB SELECT \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059",this.prev());u="KINTONE_NATIVE",this.expect("BY"),d=this.parseOrderBy()}let f=this.consume("LIMIT")?this.parseUnsignedInt():null,R=this.consume("OFFSET")?this.parseUnsignedInt():null,E=r.some(g=>g.type==="WINDOW_COL"),m=r.some(g=>this.selectColumnHasAggregate(g));if(E&&(l.length>0||p!==void 0||m))throw new S("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306F GROUP BY / \u96C6\u8A08\u95A2\u6570\u3068\u540C\u3058 SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());if(p&&u==="KINTONE_NATIVE")throw new S("B65: KORDER BY cannot be combined with grouping sets in Phase1.",this.peek());return this.validateAggregateGroupKeyRefs(r,c,l,p),{type:"SELECT",distinct:n,columns:r,from:o,joins:a,where:s,groupBy:l,...p?{grouping:p}:{},having:c,orderMode:u,orderBy:d,limit:f,offset:R}}parseWith(){this.expect("WITH");let t=this.isSoftKeyword("RECURSIVE")&&this.peekAt(1).kind!=="AS"&&this.peekAt(1).kind!=="(";t&&this.advance();let n=[],r=0;try{do{let o=this.parseIdentifier(),a=this.parseOptionalCteColumnAliases();this.expect("AS"),this.expect("("),this.activeCteDefinition={name:o,recursiveWith:t,phase:"SEED"};let s,l,p=this.peek().kind;if(p==="SHOW")s=this.parseShow();else if(p==="DESCRIBE"||p==="DESC")s=this.parseDescribe();else if(p==="IDENT"&&this.peek().value.toUpperCase()==="GENERATE_SERIES")s=this.parseGenerateSeries();else if(t){let d=this.parseRecursiveCteCandidate(o);s=d.query,l=d.recursiveSpec}else s=this.tryParseUnionChain(this.parseSelect());this.expect(")");let c=t&&this.isSoftKeyword("CYCLE")?this.parseRecursiveCycleClause():null;if(c&&!l)throw new S("CYCLE \u53E5\u306F\u81EA\u5DF1\u53C2\u7167\u3059\u308B\u518D\u5E30 CTE \u306B\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059",this.prev());if(l&&(l={...l,cycle:c},this.validateRecursiveCte(o,a,l),r++,r>1))throw new S("WITH RECURSIVE \u3067\u5B9A\u7FA9\u3067\u304D\u308B\u518D\u5E30 CTE \u306F1\u500B\u307E\u3067\u3067\u3059",this.prev());if(a&&!l)throw new S("CTE \u306E\u5217\u540D\u30EA\u30B9\u30C8\u306F WITH RECURSIVE \u306E\u518D\u5E30 CTE \u306B\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059",this.prev());let u={name:o,query:s};a&&(u.columnAliases=a),l&&(u.recursiveSpec=l),n.push(u),this.activeCteDefinition=null,this.provisionalRecursiveCte=null,this.cteNames.add(o)}while(this.consume(","));let i=this.tryParseUnionChain(this.parseSelect());return t?{type:"WITH",ctes:n,query:i,recursive:!0}:{type:"WITH",ctes:n,query:i}}finally{this.activeCteDefinition=null,this.provisionalRecursiveCte=null,this.cteNames.clear()}}parseOptionalCteColumnAliases(){if(!this.consume("("))return;let t=[];if(this.peek().kind===")")throw new S("CTE \u306E\u5217\u540D\u30EA\u30B9\u30C8\u306B\u306F1\u500B\u4EE5\u4E0A\u306E\u5217\u540D\u304C\u5FC5\u8981\u3067\u3059",this.peek());do t.push(this.parseIdentifier());while(this.consume(","));if(this.expect(")"),new Set(t).size!==t.length)throw new S("CTE \u306E\u5217\u540D\u30EA\u30B9\u30C8\u306B\u540C\u3058\u5217\u540D\u3092\u91CD\u8907\u3057\u3066\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.prev());return t}parseRecursiveCteCandidate(t){let n=this.parseSelect();if(this.peek().kind!=="UNION")return{query:n};this.advance();let r=this.consume("ALL");this.activeCteDefinition={name:t,recursiveWith:!0,phase:"RECURSIVE_TERM"},this.provisionalRecursiveCte={name:t,references:0};let i=this.parseSelect(),o=this.provisionalRecursiveCte.references;this.provisionalRecursiveCte=null;let a={type:"UNION",all:r,left:n,right:i};if(a=this.tryParseUnionChain(a),this.activeCteDefinition={name:t,recursiveWith:!0,phase:"SEED"},o===0)return{query:a};if(!r||a.type!=="UNION"||a.left!==n||a.right!==i)throw new S("\u518D\u5E30 CTE \u306F seed SELECT UNION ALL recursive SELECT \u306E2\u5206\u5C90\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.prev());if(o!==1)throw new S("\u518D\u5E30\u9805\u304B\u3089\u306E\u81EA\u5DF1\u53C2\u7167\u306F\u3061\u3087\u3046\u30691\u56DE\u306B\u3057\u3066\u304F\u3060\u3055\u3044",this.prev());return{query:a,recursiveSpec:{seed:n,recursiveTerm:i,unionAll:!0,cycle:null}}}parseRecursiveCycleClause(){this.advance();let t=this.parseIdentifier();this.expect("SET","CYCLE \u306E\u5217\u540D\u306E\u5F8C\u306B\u306F SET \u304C\u5FC5\u8981\u3067\u3059");let n=this.parseIdentifier();if(!this.isSoftKeyword("TO"))throw new S("CYCLE \u306E mark \u5217\u306E\u5F8C\u306B\u306F TO \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance();let r=this.expect("STRING","CYCLE TO \u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");if(!this.isSoftKeyword("DEFAULT"))throw new S("CYCLE TO \u306E\u5024\u306E\u5F8C\u306B\u306F DEFAULT \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance();let i=this.expect("STRING","CYCLE DEFAULT \u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");if(r.value===i.value)throw new S("CYCLE \u306E TO \u3068 DEFAULT \u306B\u306F\u7570\u306A\u308B\u6587\u5B57\u5217\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",i);return{column:t,markColumn:n,markValue:r.value,defaultValue:i.value,exposePath:!1}}validateRecursiveCte(t,n,r){let i=this.prev(),o=r.seed,a=r.recursiveTerm,{groupBy:s}=a;if(o.columns.length!==a.columns.length)throw new S("\u518D\u5E30 CTE \u306E seed \u3068\u518D\u5E30\u9805\u306E\u5217\u6570\u3092\u4E00\u81F4\u3055\u305B\u3066\u304F\u3060\u3055\u3044",i);if(n&&n.length!==o.columns.length)throw new S("CTE \u306E\u5217\u540D\u30EA\u30B9\u30C8\u3068 SELECT \u306E\u5217\u6570\u3092\u4E00\u81F4\u3055\u305B\u3066\u304F\u3060\u3055\u3044",i);if(o.columns.some(c=>c.type==="WILDCARD"||c.type==="PARENT_WILDCARD")||a.columns.some(c=>c.type==="WILDCARD"||c.type==="PARENT_WILDCARD"))throw new S("\u518D\u5E30 CTE \u306E seed \u3068\u518D\u5E30\u9805\u3067\u306F\u5217\u3092\u660E\u793A\u7684\u306B\u5C04\u5F71\u3057\u3066\u304F\u3060\u3055\u3044",i);if(a.distinct||s.length>0||a.grouping!==void 0||a.having!==null||a.orderBy.length>0||a.orderMode!=="CANONICAL"||a.limit!==null||a.offset!==null)throw new S("\u518D\u5E30\u9805\u3067\u306F DISTINCT\u3001\u96C6\u8A08\u3001window\u3001GROUP BY\u3001HAVING\u3001ORDER BY\u3001LIMIT\u3001OFFSET \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",i);if(a.joins.length!==1||a.joins[0].type!=="INNER")throw new S("\u518D\u5E30\u9805\u306F\u81EA\u5DF1\u53C2\u7167\u3068\u7269\u7406 source \u307E\u305F\u306F\u5148\u884C CTE \u306E INNER JOIN 1\u500B\u3067\u69CB\u6210\u3057\u3066\u304F\u3060\u3055\u3044",i);if([a.from.cteName,a.joins[0].table.cteName].filter(c=>c===t).length!==1)throw new S("\u518D\u5E30\u9805\u306E INNER JOIN \u306B\u306F\u81EA\u5DF1\u53C2\u7167\u3092\u3061\u3087\u3046\u30691\u56DE\u542B\u3081\u3066\u304F\u3060\u3055\u3044",i);if(this.containsRecursiveForbiddenNode(a.columns)||this.containsRecursiveForbiddenNode(a.where))throw new S("\u518D\u5E30\u9805\u3067\u306F\u96C6\u8A08\u3001window\u3001DISTINCT\u3001subquery \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",i);let p=n??o.columns.map(c=>this.selectColumnOutputName(c));if(r.cycle){if(p.filter(u=>u===r.cycle.column).length!==1)throw new S("CYCLE \u5217\u306F\u518D\u5E30 CTE \u306E\u51FA\u529B\u52171\u500B\u3078\u4E00\u610F\u306B\u89E3\u6C7A\u3067\u304D\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059",i);if(p.includes(r.cycle.markColumn))throw new S("CYCLE \u306E mark \u5217\u306F\u518D\u5E30 CTE \u306E\u65E2\u5B58\u51FA\u529B\u5217\u3068\u540C\u540D\u306B\u3067\u304D\u307E\u305B\u3093",i)}}containsRecursiveForbiddenNode(t){if(Array.isArray(t))return t.some(r=>this.containsRecursiveForbiddenNode(r));if(t===null||typeof t!="object")return!1;let n=t;return n.type==="AGGREGATE"||n.type==="AGG_REF"||n.type==="ARITH_AGG_COL"||n.type==="WINDOW_COL"||n.type==="SCALAR_SUBQUERY"||n.type==="SCALAR_SUBQUERY_COL"||n.type==="SUBQUERY_IN_LIST"||n.type==="EXISTS"?!0:Object.values(n).some(r=>this.containsRecursiveForbiddenNode(r))}selectColumnOutputName(t){return"alias"in t&&typeof t.alias=="string"?t.alias:t.type==="FIELD"?t.field:null}parseGenerateSeries(){let t=this.advance();if(t.kind!=="IDENT"||t.value.toUpperCase()!=="GENERATE_SERIES")throw new S("GENERATE_SERIES \u304C\u5FC5\u8981\u3067\u3059",t);this.expect("(");let n=[];if(this.peek().kind!==")")do{let i=this.peek();if(i.kind==="STRING"){this.advance(),n.push({type:"STRING",value:i.value});continue}if(i.kind==="VARIABLE"){this.advance(),n.push({type:"VARIABLE",name:i.value.slice(1).toLowerCase()});continue}let o="";(i.kind==="+"||i.kind==="-")&&(o=i.kind==="-"?"-":"+",this.advance());let a=this.peek();if(a.kind!=="NUMBER")throw new S("GENERATE_SERIES \u306E\u5F15\u6570\u306B\u306F\u6570\u5024\u3001\u6587\u5B57\u5217\u3001\u307E\u305F\u306F\u30D0\u30C3\u30C1\u5909\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",a);this.advance(),n.push(Se(`${o}${a.value}`))}while(this.consume(","));this.expect(")");let r=this.consume("AS")?this.parseIdentifier():"generate_series";return{type:"GENERATE_SERIES",args:n,columnAlias:r}}tryParseUnionChain(t){if(this.peek().kind!=="UNION")return t;if(t.type==="SELECT"&&t.orderMode==="KINTONE_NATIVE")throw new S("KORDER BY \u306F UNION \u5206\u5C90\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());this.advance();let n=this.consume("ALL"),r=this.parseSelect(),i={type:"UNION",all:n,left:t,right:r};return this.tryParseUnionChain(i)}parseSelectColumns(){let t=[];do t.push(this.parseSelectColumn());while(this.consume(","));return t}parseSelectArith(t){let n=this.allowSelectArithVariable;this.allowSelectArithVariable=!0;try{return t()}finally{this.allowSelectArithVariable=n}}parseSelectColumn(){if(this.consume("*"))return{type:"WILDCARD"};if(this.isUnsupportedGroupingIdStart())throw new S("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){let a=this.parseGroupingRef(),s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"GROUPING_COL",ref:a,alias:s?.alias??null},s)}let t=this.tryValueWindowFunc();if(t!==null)return this.parseValueWindowColumn(t);if(this.tryAggregateFunc()===null&&this.hasNestedAggregateWindowInSelectColumn())throw new S(yl,this.peek());if(this.isNonAggregateArithmeticStartWithAggregate())throw new S(`\u96C6\u8A08\u7B97\u8853\u5F0F\u306F\u96C6\u8A08\u95A2\u6570\u304B\u3089\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08${this.peek().value}\uFF09\u3002`,this.peek());if(this.tryAggregateFunc()===null&&this.hasTopLevelTokenBeforeValueEnd("||")){let a=this.parseScalarValueExpr({allowAggregateArgs:!0}),s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"SCALAR_VALUE_COL",expr:a,alias:s?.alias??null},s)}if(this.peek().kind==="VARIABLE"){let a=this.advance();if(!this.consume("AS"))throw new S("SELECT \u5217\u306E\u30D0\u30C3\u30C1\u5909\u6570\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());let s=this.parseAliasName();return this.withAliasDisplay({type:"VARIABLE_COL",name:a.value.slice(1).toLowerCase(),alias:s.alias},s)}let n=this.tryWindowFunc();if(n!==null)return this.parseWindowColumn(n);if(this.peek().kind==="CASE"){let a=this.parseCaseWhenExpr(!0),s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"CASE_COL",expr:a,alias:s?.alias??null},s)}if(this.peek().kind==="IF"){let a=this.parseIfExpr(!0),s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"CASE_COL",expr:a,alias:s?.alias??null},s)}if(this.tryStringFuncName()!==null){let a=this.parseStringFuncExpr();if(this.isArithOp(this.peek().kind)){let l=this.parseSelectArith(()=>this.continueArith(a)),p=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"ARITH_COL",expr:l,alias:p?.alias??null},p)}let s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"STRFUNC_COL",expr:a,alias:s?.alias??null},s)}let r=this.tryAggregateFunc();if(r!==null){let a=this.parseAggregateRef(r);if(this.isSoftKeyword("OVER"))return this.parseAggregateWindowColumn(a);if(this.isArithOp(this.peek().kind)){let l=this.continueAggArith(a),p=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"ARITH_AGG_COL",expr:l,alias:p?.alias??null},p)}let s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"AGGREGATE",func:a.func,distinct:a.distinct,arg:a.arg,...a.separator!==void 0?{separator:a.separator}:{},alias:s?.alias??null},s)}if(this.peek().kind==="("&&this.peekAt(1).kind==="SELECT"){this.advance();let a=this.parseSelect();this.expect(")");let s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"SCALAR_SUBQUERY_COL",query:a,alias:s?.alias??null},s)}if(this.peek().kind==="STRING"){let a=this.expect("STRING").value,s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"LITERAL_COL",value:a,alias:s?.alias??null},s)}if(this.peek().kind==="("||this.peek().kind==="NUMBER"){let a=this.parseSelectArith(()=>this.parseArithAddSub()),s=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"ARITH_COL",expr:a,alias:s?.alias??null},s)}let i=this.parseColumnFieldRef();if(i==="_p.*")return{type:"PARENT_WILDCARD"};if(i==="_parent.*")throw new S("_parent.* \u306F\u5EC3\u6B62\u3057\u307E\u3057\u305F\u3002_p.* \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044",this.prev());if(this.isArithOp(this.peek().kind)){let a={type:"FIELD_REF",field:i},s=this.parseSelectArith(()=>this.continueArith(a)),l=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"ARITH_COL",expr:s,alias:l?.alias??null},l)}let o=this.consume("AS")?this.parseAliasName():null;return this.withAliasDisplay({type:"FIELD",field:i,alias:o?.alias??null},o)}tryWindowFunc(){return Md[this.peek().kind]??null}tryValueWindowFunc(t=this.pos){let n=this.tokens[t];if(n?.kind!=="IDENT"||this.tokens[t+1]?.kind!=="(")return null;let r=n.value.toUpperCase();if(r!=="LAG"&&r!=="LEAD")return null;let i=0;for(let o=t+1;o<this.tokens.length;o++){let a=this.tokens[o];if(a.kind==="(")i++;else if(a.kind===")"&&--i===0){let s=this.tokens[o+1];return s?.kind==="IDENT"&&s.value.toUpperCase()==="OVER"?r:null}}return null}hasNestedAggregateWindowInSelectColumn(){let t=0;for(let n=this.pos;n<this.tokens.length;n++){let r=this.tokens[n];if(t===0&&(r.kind===","||r.kind==="FROM"||r.kind===";"||r.kind==="EOF"))return!1;if(Wr[r.kind]!==void 0&&this.tokens[n+1]?.kind==="("){let i=0;for(let o=n+1;o<this.tokens.length;o++){let a=this.tokens[o];if(a.kind==="(")i++;else if(a.kind===")"&&--i===0){let s=this.tokens[o+1];if(s?.kind==="IDENT"&&s.value.toUpperCase()==="OVER")return!0;break}}}if(this.tryValueWindowFunc(n)!==null)return!0;r.kind==="("?t++:r.kind===")"&&t--}return!1}parseWindowColumn(t){if(this.advance(),this.expect("("),this.peek().kind!==")")throw new S(`${t} \u306F\u5F15\u6570\u3092\u53D7\u3051\u4ED8\u3051\u307E\u305B\u3093`,this.peek());this.expect(")"),this.expectSoftKeyword("OVER",`${t} \u306B\u306F OVER (...) \u304C\u5FC5\u8981\u3067\u3059`),this.expect("(");let n=[];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();n.push({type:"FIELD",tableAlias:o.tableAlias,field:o.field})}while(this.consume(","))}let r=this.consume("ORDER")?(this.expect("BY"),this.parseOrderBy(!1)):[];if(this.expect(")"),!this.consume("AS"))throw new S("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());let i=this.parseAliasName();return this.withAliasDisplay({type:"WINDOW_COL",func:t,partitionBy:n,orderBy:r,alias:i.alias},i)}parseValueWindowColumn(t){this.advance(),this.expect("(");let n=this.parseScalarValueExpr({allowCase:!0,allowAggregateArgs:!1}),r=1;if(this.consume(",")){let s=this.expect("NUMBER",`${t} \u306E offset \u306F\u975E\u8CA0\u306E\u6574\u6570\u30EA\u30C6\u30E9\u30EB\u3060\u3051\u3067\u3059`);if(r=Number(s.value),!Number.isSafeInteger(r)||r<0)throw new S(`${t} \u306E offset \u306F\u975E\u8CA0\u306E safe integer \u30EA\u30C6\u30E9\u30EB\u3060\u3051\u3067\u3059`,s)}this.expect(")",`${t} \u306F expr \u3068\u7701\u7565\u53EF\u80FD\u306A offset \u306E 2 \u5F15\u6570\u307E\u3067\u3067\u3059`),this.expectSoftKeyword("OVER",`${t} \u306B\u306F OVER (...) \u304C\u5FC5\u8981\u3067\u3059`),this.expect("(");let i=[];if(this.isSoftKeyword("PARTITION")){this.advance(),this.expect("BY","PARTITION \u306E\u5F8C\u306B\u306F BY \u304C\u5FC5\u8981\u3067\u3059");do{let s=this.parseQualifiedIdent();i.push({type:"FIELD",tableAlias:s.tableAlias,field:s.field})}while(this.consume(","))}if(!this.consume("ORDER"))throw new S(`${t} \u306E OVER \u306B\u306F ORDER BY \u304C\u5FC5\u8981\u3067\u3059`,this.peek());this.expect("BY");let o=this.parseOrderBy(!1);if(this.expect(")"),this.isArithOp(this.peek().kind)||this.peek().kind==="||")throw new S(yl,this.peek());if(!this.consume("AS"))throw new S("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());let a=this.parseAliasName();return this.withAliasDisplay({type:"WINDOW_COL",windowKind:"VALUE",valueFunc:t,arg:n,offset:r,partitionBy:i,orderBy:o,alias:a.alias},a)}parseAggregateWindowColumn(t){if(!new Set(["SUM","COUNT","AVG","MIN","MAX"]).has(t.func))throw new S(`${t.func} \u306E\u30A6\u30A3\u30F3\u30C9\u30A6\u96C6\u8A08\u306F\u672A\u5BFE\u5FDC\u3067\u3059\u3002\u5BFE\u5FDC\u306F SUM / COUNT / AVG / MIN / MAX \u3067\u3059`,this.peek());if(t.distinct)throw new S("\u30A6\u30A3\u30F3\u30C9\u30A6\u96C6\u8A08\u3067\u306F\u5F15\u6570\u306E DISTINCT \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());this.advance(),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 s=this.parseQualifiedIdent();r.push({type:"FIELD",tableAlias:s.tableAlias,field:s.field})}while(this.consume(","))}let i=this.consume("ORDER")?(this.expect("BY"),this.parseOrderBy(!1)):[],o=i.length>0?{unit:"RANGE",source:"DEFAULT"}:null;if(this.isSoftKeyword("ROWS")||this.isSoftKeyword("RANGE")){if(i.length===0)throw new S("\u30D5\u30EC\u30FC\u30E0\u53E5\u306B\u306F OVER (ORDER BY ...) \u304C\u5FC5\u8981\u3067\u3059",this.peek());let s=this.advance().value.toUpperCase();if(!(this.consume("BETWEEN")&&this.consumeSoftKeyword("UNBOUNDED")&&this.consumeSoftKeyword("PRECEDING")&&this.consume("AND")&&this.consumeSoftKeyword("CURRENT")&&this.consumeSoftKeyword("ROW")))throw new S("\u5BFE\u5FDC\u3059\u308B\u30D5\u30EC\u30FC\u30E0\u306F BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW \u3060\u3051\u3067\u3059",this.peek());o={unit:s,source:"EXPLICIT"}}if(this.expect(")"),this.isArithOp(this.peek().kind))throw new S(yl,this.peek());if(!this.consume("AS"))throw new S("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());let a=this.parseAliasName();return this.withAliasDisplay({type:"WINDOW_COL",windowKind:"AGGREGATE",aggFunc:t.func,arg:t.arg,frame:o,partitionBy:r,orderBy:i,alias:a.alias},a)}selectColumnHasAggregate(t){return t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"?!0:t.type==="STRFUNC_COL"?t.expr.args.some(n=>this.stringFuncArgHasAggregate(n)):t.type==="SCALAR_VALUE_COL"?this.scalarValueHasAggregate(t.expr):t.type==="CASE_COL"?this.nodeHasAggregate(t.expr):!1}nodeHasAggregate(t){if(t===null||typeof t!="object")return!1;if(Array.isArray(t))return t.some(r=>this.nodeHasAggregate(r));let n=t;return n.type==="AGG_REF"||n.type==="AGG_ARITH"?!0:n.type==="SELECT"||n.type==="SCALAR_SUBQUERY"?!1:Object.values(n).some(r=>this.nodeHasAggregate(r))}stringFuncArgHasAggregate(t){return t.type==="AGG_REF"||t.type==="AGG_ARITH"?!0:t.type==="AGG_GROUP_KEY"||t.type==="VARIABLE"?!1:this.scalarValueHasAggregate(t)}scalarValueHasAggregate(t){return t.type==="STRING_FUNC"?t.args.some(n=>this.stringFuncArgHasAggregate(n)):t.type==="SCALAR_ARITH"||t.type==="CONCAT_OP"?this.scalarValueHasAggregate(t.left)||this.scalarValueHasAggregate(t.right):t.type==="CASE_WHEN"?this.nodeHasAggregate(t):!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 n=this.parseArithOp();t={type:"AGG_ARITH",left:t,op:n,right:this.parseAggPrimary()}}return t}continueAggArithAddSub(t){for(;this.peek().kind==="+"||this.peek().kind==="-";){let n=this.parseArithOp();t={type:"AGG_ARITH",left:t,op:n,right:this.parseAggArithMulDiv()}}return t}parseAggArithMulDiv(){return this.continueAggArithMulDiv(this.parseAggPrimary())}parseAggPrimary(){if(this.consume("(")){let n=this.continueAggArith(this.parseAggPrimary());return this.expect(")"),n}if(this.peek().kind==="-"){this.advance();let n=this.parseAggPrimary();return n.type==="NUMBER"?Se(`-${z(n)}`):{type:"AGG_ARITH",left:Se("0"),op:"-",right:n}}if(this.peek().kind==="NUMBER"){let n=this.advance();return Se(n.value)}if(this.peek().kind==="VARIABLE")return{type:"VARIABLE",name:this.advance().value.slice(1).toLowerCase()};let t=this.tryAggregateFunc();if(t!==null){let n=this.parseAggregateRef(t);return this.rejectAggregateWindowOutsideSelect(),n}if(this.peek().kind==="IDENT"||this.peek().kind==="BIDENT"){let n=this.peek(),r=this.parseQualifiedIdent(),i={type:"AGG_GROUP_KEY",field:r.field,...r.tableAlias?{tableAlias:r.tableAlias}:{}};return this.aggregateGroupKeyTokens.set(i,n),i}throw new S("\u96C6\u8A08\u7B97\u8853\u5F0F\u306B\u306F\u96C6\u8A08\u95A2\u6570\u307E\u305F\u306F\u6570\u5024\u304C\u5FC5\u8981\u3067\u3059",this.peek())}isNonAggregateArithmeticStartWithAggregate(){let t=this.peek();if(this.tryAggregateFunc()!==null||t.kind==="CASE"||t.kind==="IF"||this.isGroupingFunctionStart()||this.tryStringFuncName()!==null||!["IDENT","BIDENT","VARIABLE","("].includes(t.kind))return!1;let n=0,r=!1;for(let i=this.pos;i<this.tokens.length;i++){let o=this.tokens[i];if(n===0&&i>this.pos&&(o.kind===","||o.kind==="AS"||o.kind==="FROM"||o.kind===";"||o.kind==="EOF"||o.kind==="="||o.kind==="!="||o.kind==="<>"||o.kind===">"||o.kind==="<"||o.kind===">="||o.kind==="<="||o.kind==="AND"||o.kind==="OR"))break;if(this.isArithOp(o.kind)&&(r=!0),Wr[o.kind]!==void 0&&this.tokens[i+1]?.kind==="(")return r;if(o.kind==="(")n++;else if(o.kind===")"&&(n--,n<0))break}return!1}validateAggregateGroupKeyRefs(t,n,r,i){let o=[],a=c=>{if(Array.isArray(c)){c.forEach(a);return}if(c===null||typeof c!="object")return;let u=c;if(!(u.type==="SELECT"||u.type==="SCALAR_SUBQUERY")){if(u.type==="AGG_GROUP_KEY"){o.push(c);return}Object.values(u).forEach(a)}};if(a(t),a(n),o.length===0)return;let s=o[0],l=this.aggregateGroupKeyTokens.get(s)??this.peek();if(i!==void 0)throw new S("ROLLUP / CUBE / GROUPING SETS \u3067\u306F\u96C6\u8A08\u7B97\u8853\u5F0F\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u66F8\u3051\u307E\u305B\u3093\uFF08\u5C0F\u8A08\u30FB\u7DCF\u8A08\u884C\u3067\u5024\u304C\u5B9A\u307E\u3089\u306A\u3044\u305F\u3081\u3067\u3059\uFF09\u3002",l);if(r.length===0)throw new S(`\u96C6\u8A08\u7B97\u8853\u5F0F\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u66F8\u304F\u306B\u306F GROUP BY \u304C\u5FC5\u8981\u3067\u3059\uFF08${this.aggregateGroupKeyDisplay(s)}\uFF09\u3002`,l);let p=new Set(r.filter(c=>c.type==="FIELD_NAME").map(c=>c.name));for(let c of o){let u=this.aggregateGroupKeyDisplay(c);if(!p.has(u))throw new S(`\u96C6\u8A08\u7B97\u8853\u5F0F\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u306F GROUP BY \u306B\u66F8\u3044\u305F\u8868\u8A18\u3068\u4E00\u81F4\u3059\u308B\u5217\u3060\u3051\u3067\u3059\uFF08${u}\uFF09\u3002\u30B0\u30EB\u30FC\u30D7\u5185\u3067\u5024\u304C\u5B9A\u307E\u3089\u306A\u3044\u305F\u3081\u3067\u3059\u3002`,this.aggregateGroupKeyTokens.get(c)??l)}}aggregateGroupKeyDisplay(t){return t.tableAlias?`${t.tableAlias}.${t.field}`:t.field}parseScalarValueExpr(t={}){let n=this.scalarAllowsAggregateArgs,r=this.scalarAllowsCase;this.scalarAllowsAggregateArgs=t.allowAggregateArgs===!0,this.scalarAllowsCase=t.allowCase!==!1;let i;try{i=this.parseScalarAddSubConcat(this.scalarAllowsCase)}finally{this.scalarAllowsAggregateArgs=n,this.scalarAllowsCase=r}let o=this.peek();if(o.kind==="IS"||o.kind==="="||o.kind==="!="||o.kind==="<>"||o.kind===">"||o.kind==="<"||o.kind===">="||o.kind==="<="||o.kind==="LIKE"||o.kind==="KLIKE"||o.kind==="IN"||o.kind==="BETWEEN")throw new S("\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306B\u6BD4\u8F03\u30FB\u8FF0\u8A9E\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",o);return i}parseScalarAddSubConcat(t){let n=this.parseScalarMulDiv(t);for(;this.peek().kind==="+"||this.peek().kind==="-"||this.peek().kind==="||";){let r=this.advance(),i=this.parseScalarMulDiv(t);n=r.kind==="||"?{type:"CONCAT_OP",left:n,right:i}:{type:"SCALAR_ARITH",left:n,op:r.kind==="+"?"+":"-",right:i}}return n}parseScalarMulDiv(t){let n=this.parseScalarPrimary(t);for(;this.peek().kind==="*"||this.peek().kind==="/"||this.peek().kind==="%";){let r=this.advance(),i=r.kind==="*"?"*":r.kind==="/"?"/":"%";n={type:"SCALAR_ARITH",left:n,op:i,right:this.parseScalarPrimary(t)}}return n}parseScalarPrimary(t){let n=this.peek();if(n.kind==="("){if(this.peekAt(1).kind==="SELECT")throw new S("\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306B\u30B5\u30D6\u30AF\u30A8\u30EA\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);this.advance();let r=this.parseScalarAddSubConcat(t);return this.expect(")"),r}if(n.kind==="+"||n.kind==="-"){if(this.advance(),this.peek().kind==="+"||this.peek().kind==="-")throw new S("\u5358\u9805\u7B26\u53F7\u3092\u91CD\u306D\u3066\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",this.peek());let r=this.parseScalarPrimary(t);if(r.type==="NUMBER")return Se(`${n.kind==="-"?"-":"+"}${z(r)}`);if(n.kind==="+")throw new S("\u5358\u9805 + \u306E\u76F4\u5F8C\u306B\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059",n);return{type:"SCALAR_ARITH",left:Se("0"),op:"-",right:r}}if(n.kind==="STRING")return this.advance(),{type:"STRING",value:n.value};if(n.kind==="NUMBER")return this.advance(),Se(n.value);if(n.kind==="VARIABLE")return this.advance(),{type:"VARIABLE",name:n.value.slice(1).toLowerCase()};if(n.kind==="CASE"){if(!t)throw new S("\u3053\u306E\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u3067\u306F CASE \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);return this.parseCaseWhenExpr()}if(this.tryAggregateFunc()!==null)throw new S(this.insideAggregateArg>0?"\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093":"\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306B\u96C6\u7D04\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);if(this.tryStringFuncName()!==null)return this.parseStringFuncExpr();if(n.kind==="IDENT"||n.kind==="BIDENT")return this.advance(),this.consume(".")?{type:"FIELD",tableAlias:n.value,field:this.parseIdentifier()}:{type:"FIELD",tableAlias:null,field:n.value};throw new S("\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u306E\u30AA\u30DA\u30E9\u30F3\u30C9\u304C\u5FC5\u8981\u3067\u3059",n)}hasTopLevelTokenBeforeValueEnd(t){let n=0;for(let r=this.pos;r<this.tokens.length;r++){let i=this.tokens[r].kind;if(i==="("||i==="[")n++;else if(i===")"||i==="]"){if(n===0)break;n--}if(i===t)return!0;if(n===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 n=this.parseArithOp(),r=this.parseArithPrimary();t={type:"ARITH",left:t,op:n,right:r}}return t}continueArithAddSub(t){for(;this.peek().kind==="+"||this.peek().kind==="-";){let n=this.parseArithOp(),r=this.parseArithMulDiv();t={type:"ARITH",left:t,op:n,right:r}}return t}parseArithPrimary(){if(this.consume("(")){let n=this.parseArithAddSub();return this.expect(")"),n}if(this.allowUnaryPlusNumber&&this.peek().kind==="+"){this.advance();let n=this.expect("NUMBER","\u5358\u9805 + \u306E\u76F4\u5F8C\u306B\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059");return Se(`+${n.value}`)}if(this.peek().kind==="-"){if(this.advance(),this.peek().kind==="-"||this.peek().kind==="+")throw new S("\u5358\u9805\u7B26\u53F7\u3092\u91CD\u306D\u3066\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",this.peek());let n=this.parseArithPrimary();return n.type==="NUMBER"?Se(`-${z(n)}`):{type:"ARITH",left:Se("0"),op:"-",right:n}}if(this.tryStringFuncName()!==null)return this.parseStringFuncExpr();let t=this.peek();if(t.kind==="NUMBER")return this.advance(),Se(t.value);if(this.allowSelectArithVariable&&t.kind==="VARIABLE")return this.advance(),{type:"VARIABLE",name:t.value.slice(1).toLowerCase()};if(t.kind==="IDENT"||t.kind==="BIDENT"){this.advance();let n=t.value;if(this.peek().kind==="."){this.advance();let r=this.advance();n=`${n}.${r.value}`}return{type:"FIELD_REF",field:n}}throw new S("\u7B97\u8853\u5F0F\u306E\u30AA\u30DA\u30E9\u30F3\u30C9\u306B\u306F\u8B58\u5225\u5B50\u30FB\u6570\u5024\u30FB\u62EC\u5F27\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",t)}parseIfExpr(t=!1){this.advance(),this.expect("(");let n=this.parseCaseCondition(t);this.expect(",");let r=this.parseCaseResult(t);this.expect(",");let i=this.parseCaseResult(t);return this.expect(")"),{type:"CASE_WHEN",branches:[{condition:n,result:r}],elseResult:i}}parseCaseWhenExpr(t=!1){this.expect("CASE");let n=[];for(;this.peek().kind==="WHEN";){this.advance();let i=this.parseCaseCondition(t);this.expect("THEN");let o=this.parseCaseResult(t);n.push({condition:i,result:o})}if(n.length===0)throw new S("CASE \u306E\u5F8C\u306B\u306F WHEN \u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",this.peek());let r=null;return this.consume("ELSE")&&(r=this.parseCaseResult(t)),this.expect("END"),{type:"CASE_WHEN",branches:n,elseResult:r}}parseCaseCondition(t){return t?this.parseWhereExpr("SELECT_CASE"):this.parseWhereExpr()}parseCaseResult(t=!1){let n=this.peek();if(this.insideAggregateArg>0&&this.tryAggregateFunc()!==null)throw new S("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",n);if(n.kind==="[")return this.parseArrayLiteral();let r=this.tryAggregateFunc();if(r!==null&&t){let i=this.parseAggregateRef(r);return this.rejectAggregateWindowOutsideSelect(),this.continueAggArith(i)}return this.hasTopLevelTokenBeforeValueEnd("||")?this.parseScalarValueExpr({allowAggregateArgs:!0}):n.kind==="STRING"?(this.advance(),{type:"STRING",value:n.value}):this.tryStringFuncName()!==null?this.parseStringFuncExpr():this.parseArithAddSub()}tryStringFuncName(){if(this.peekAt(1).kind==="("){let n=hl[this.peek().kind];if(n==="LEFT"||n==="RIGHT")return n}let t=hl[this.peek().kind]??null;if(t!==null&&t!=="LEFT"&&t!=="RIGHT")return t;if(this.peek().kind==="IDENT"){let n=this.peek(),r=n.value.toUpperCase();if(vd.includes(r)&&this.peekAt(1).kind==="(")return r;if(this.peekAt(1).kind==="("){let i=r==="DATE_SUB"?"\u3002\u65E5\u4ED8\u3092\u6E1B\u7B97\u3059\u308B\u306B\u306F DATE_ADD \u306E\u52A0\u7B97\u5024\u3078\u8CA0\u6570\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044":"";throw new S(`\u300C${n.value}\u300D\u3068\u3044\u3046\u95A2\u6570\u306F\u3042\u308A\u307E\u305B\u3093${i}`,n)}}return null}parseStringFuncExpr(){let t=this.peek(),n=this.tryStringFuncName();try{return this.parseStringFuncExprBody()}catch(r){if(!(r instanceof S))throw r;let i=t.value.toUpperCase(),o=n==="DATE_ADD"?`${i} \u306E\u69CB\u6587\u306F DATE_ADD(\u5217, n, '\u5358\u4F4D') \u3067\u3059\u3002`:`${i} \u306E\u5F15\u6570\u69CB\u6587\u304C\u4E0D\u6B63\u3067\u3059\u3002`;throw new S(`${o}${r.rawMessage}`,r.token)}}parseStringFuncExprBody(){let t=this.peek().kind,n=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 r=[];if(this.peek().kind!==")")do r.push(this.parseStringFuncArg());while(this.consume(","));return this.expect(")"),{type:"STRING_FUNC",func:n,args:r}}parseCastType(){let t=this.peek(),n;if(t.kind==="IDENT"||t.kind==="BIDENT")this.advance(),n=t.value.toUpperCase();else throw new S("\u30AD\u30E3\u30B9\u30C8\u5148\u306E\u578B\u540D\uFF08TEXT, NUMBER, INT \u306A\u3069\uFF09\u304C\u5FC5\u8981\u3067\u3059",t);this.peek().kind==="("&&(this.advance(),this.parseUnsignedInt(),this.expect(")"));let r=Ah(n);if(r===null)throw new S(`\u4E0D\u660E\u306A\u30AD\u30E3\u30B9\u30C8\u578B\u300C${n}\u300D\u3002TEXT \u307E\u305F\u306F NUMBER \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,t);return{type:"STRING",value:r}}parseStringFuncArg(){if(this.scalarAllowsAggregateArgs){let t=this.pos;try{let n=this.parseAggPrimary(),r=this.continueAggArith(n);if(this.hasAggregateOperand(r))return r}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 Wr[this.peek().kind]??null}parseAggregateRef(t){this.advance(),this.expect("(");let n=this.consume("DISTINCT"),r=n?this.prev():null;if(t==="MODE"&&r)throw new S("MODE \u3067\u306F DISTINCT \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);let i;if(this.consume("*")){if(!ph(t))throw new S(`${t}(*) \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30D5\u30A3\u30FC\u30EB\u30C9\u307E\u305F\u306F\u5F0F\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,this.prev());i={type:"WILDCARD"}}else i=this.parseAggregateArgExpr();let o;if(this.isSoftKeyword("SEPARATOR")){let a=this.advance();if(t!=="GROUP_CONCAT")throw new S("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:n,arg:i,...o!==void 0?{separator:o}:{}}}isAggregateArgEnd(){return this.peek().kind===")"||this.isSoftKeyword("SEPARATOR")}parseAggregateArgExpr(){let t=this.pos;try{let n=this.parseArithAddSub();if(this.isAggregateArgEnd())return n}catch{}this.pos=t,this.insideAggregateArg++;try{let n;try{n=this.parseScalarValueExpr({allowCase:!0,allowAggregateArgs:!1})}catch(r){if(r instanceof S){if(r.message.includes("\u6BD4\u8F03\u30FB\u8FF0\u8A9E"))throw new S("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u306B\u6BD4\u8F03\u30FB\u8FF0\u8A9E\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002CASE \u3067\u5024\u3092\u660E\u793A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u4F8B: SUM(CASE WHEN amount > 0 THEN 1 ELSE 0 END)",r.token);if(r.message.includes("\u96C6\u7D04\u95A2\u6570"))throw new S("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r.token)}throw r}if(!this.isAggregateArgEnd())throw new S("\u3053\u306E\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5F62\u5F0F\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002CASE \u3067\u5024\u3092\u660E\u793A\u3059\u308B\u304B\u3001CTE \u3067\u5F0F\u3092\u5217\u306B\u3057\u3066\u304B\u3089\u96C6\u8A08\u3057\u3066\u304F\u3060\u3055\u3044\u3002",this.peek());return this.assertNoNestedAggregate(n),n}finally{this.insideAggregateArg--}}assertNoNestedAggregate(t){let n=r=>{if(r===null||typeof r!="object")return;let i=r;if(i.type==="AGG_REF"||i.type==="AGG_ARITH")throw new S("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());for(let o of Object.values(i))n(o)};n(t)}parseTableRef(){let t=this.peek();if(t.kind==="IDENT"&&t.value.toUpperCase()==="GENERATE_SERIES"&&this.peekAt(1).kind==="(")throw new S("GENERATE_SERIES \u306F WITH \u306E CTE \u672C\u4F53\u306B\u66F8\u3044\u3066\u304F\u3060\u3055\u3044\u3002\u4F8B: WITH s AS (GENERATE_SERIES(1, 5)) SELECT generate_series FROM s",t);let n=this.parseTableName();if(this.capabilities.dialect1&&this.bareTempTableNames.has(n)){let s=`#${n}`;return this.tempTableRefs.push({...this.prev(),value:s}),{appId:0,alias:this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias(),cteName:s}}if(t.kind==="IDENT"&&n.startsWith("#"))return this.tempTableRefs.push(this.prev()),{appId:0,alias:this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias(),cteName:n};if(this.cteNames.has(n))return{appId:0,alias:this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias(),cteName:n};if(this.activeCteDefinition?.name===n){if(this.activeCteDefinition.recursiveWith&&this.activeCteDefinition.phase==="RECURSIVE_TERM"&&this.provisionalRecursiveCte?.name===n)return this.provisionalRecursiveCte.references++,{appId:0,alias:this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias(),cteName:n};let s=this.activeCteDefinition.recursiveWith?this.activeCteDefinition.phase==="RECURSIVE_TERM"?"\u518D\u5E30 CTE \u306F seed SELECT UNION ALL recursive SELECT \u306E2\u5206\u5C90\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044":"\u518D\u5E30 CTE \u306E seed \u304B\u3089\u81EA\u5206\u81EA\u8EAB\u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093":"CTE \u306E\u5B9A\u7FA9\u5185\u304B\u3089\u81EA\u5206\u81EA\u8EAB\u3092\u53C2\u7167\u3057\u3066\u3044\u307E\u3059\u3002\u81EA\u5DF1\u53C2\u7167\u306B\u306F `WITH RECURSIVE` \u304C\u5FC5\u8981\u3067\u3059";throw new S(s,t)}let{appId:r,subtableCode:i}=ft(n,this.prev());if(i){let s=this.consume("AS")?this.parseTableAliasName():this.tryParseImplicitAlias();return{appId:r,alias:s,cteName:null,subtableCode:i}}let o=this.tryParseImplicitAlias(),a=this.consume("AS")?this.parseTableAliasName():o??n;return{appId:r,alias:a,cteName:null}}parseTableAliasName(){let t=this.peek();if((t.kind==="IDENT"||t.kind==="BIDENT")&&t.value.startsWith("#"))throw new S("\u30A8\u30A4\u30EA\u30A2\u30B9\u540D\u306B # \u3067\u59CB\u307E\u308B\u540D\u524D\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",t);return this.parseIdentifier()}tryParseImplicitAlias(){let t=this.peek().kind;return t==="IDENT"||t==="BIDENT"?t==="IDENT"&&this.peek().value.toUpperCase()==="VALIDATE"&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="ONLY"||t==="IDENT"&&this.peek().value.toUpperCase()==="CHECK"&&this.peekAt(1).kind==="WHEN"||t==="IDENT"&&this.peek().value.toUpperCase()==="KEY"&&this.peekAt(1).kind==="("?null:this.parseTableAliasName():null}parseJoins(){let t=[];for(;;){let n=this.tryJoinType();if(n===null)break;let r=this.parseTableRef();if(n==="CROSS"){if(this.peek().kind==="ON")throw new S("CROSS JOIN \u306B ON \u53E5\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002",this.peek());t.push({type:"CROSS",table:r,on:null});continue}this.expect("ON");let i=this.parseJoinCondition();t.push({type:n,table:r,on:i})}return t}tryJoinType(){if(this.consume("INNER")){if(this.peek().kind==="CROSS")throw new S("CROSS JOIN \u306B INNER \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002",this.peek());return this.expect("JOIN"),"INNER"}if(this.consume("LEFT")){if(this.peek().kind==="CROSS")throw new S("CROSS JOIN \u306B LEFT / RIGHT \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002",this.peek());return this.expect("JOIN"),"LEFT"}if(this.consume("RIGHT")){if(this.peek().kind==="CROSS")throw new S("CROSS JOIN \u306B LEFT / RIGHT \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002",this.peek());return this.expect("JOIN"),"RIGHT"}return this.consume("CROSS")?(this.expect("JOIN"),"CROSS"):this.consume("JOIN")?"INNER":null}parseJoinCondition(){let t=this.parseQualifiedIdent();this.expect("=");let n=this.parseQualifiedIdent();return{left:t,right:n}}parseQualifiedIdent(){let t=this.parseIdentifier();if(this.consume(".")){if(this.peek().kind==="*")throw new S("\u3053\u3053\u3067\u306F * \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());let n=this.parseIdentifier();return{tableAlias:t,field:n}}return{tableAlias:null,field:t}}parseWhereExpr(t=this.groupingFieldContext,n=this.allowRelativeDateFunctions){let r=this.groupingFieldContext,i=this.allowRelativeDateFunctions;this.groupingFieldContext=t??r,this.allowRelativeDateFunctions=n;try{return this.parseOrExpr()}finally{this.groupingFieldContext=r,this.allowRelativeDateFunctions=i}}parseOrExpr(){let t=this.parseAndExpr();for(;this.consume("OR");){let n=this.parseAndExpr();t={type:"LOGICAL",op:"OR",left:t,right:n}}return t}parseAndExpr(){let t=this.parseNotExpr();for(;this.consume("AND");){let n=this.parseNotExpr();t={type:"LOGICAL",op:"AND",left:t,right:n}}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 n=this.parseSelect();return this.expect(")"),{type:"EXISTS",not:!0,query:n}}return{type:"NOT",expr:this.parseNotExpr()}}return this.parseCompareExpr()}isArithParen(){let t=0,n=this.pos;for(;n<this.tokens.length;){let r=this.tokens[n].kind;if(r==="(")t++;else if(r===")"&&(t--,t===0)){let i=this.tokens[n+1]?.kind;return i==="*"||i==="/"||i==="+"||i==="-"}n++}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 S("NOT \u306E\u5F8C\u306B\u306F IN\u3001LIKE\u3001KLIKE \u306E\u3044\u305A\u308C\u304B\u304C\u5FC5\u8981\u3067\u3059",this.peek())}if(this.consume("IN")){let i=this.parseInRight();return{type:"BINARY",op:"IN",left:t,right:i}}if(this.consume("KLIKE")){let i=this.parseKlikePattern();return{type:"BINARY",op:"KLIKE",left:t,right:i}}let n=this.parseCompareOp(),r=this.parseWhereSqlValue(n!=="LIKE");return{type:"BINARY",op:n,left:t,right:r}}parseCompareOp(){let t=this.advance();switch(t.kind){case"=":return"=";case"!=":return"!=";case"<>":return"<>";case">":return">";case"<":return"<";case">=":return">=";case"<=":return"<=";case"LIKE":return"LIKE";default:throw new S("\u6BD4\u8F03\u6F14\u7B97\u5B50\uFF08=, !=, >, <, >=, <=, LIKE, KLIKE, IN, IS\uFF09\u304C\u5FC5\u8981\u3067\u3059",t)}}parseKlikePattern(){let t=this.peek();if(t.kind==="STRING")return this.advance(),{type:"STRING",value:t.value};if(t.kind==="VARIABLE")return this.advance(),{type:"VARIABLE",name:t.value.slice(1).toLowerCase()};throw new S("KLIKE / NOT KLIKE \u306E\u53F3\u8FBA\u306B\u306F\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u307E\u305F\u306F\u30D0\u30C3\u30C1\u5909\u6570\u304C\u5FC5\u8981\u3067\u3059",t)}parseFieldValue(){if(this.groupingFieldContext==="HAVING"&&this.isNonAggregateArithmeticStartWithAggregate())throw new S(`\u96C6\u8A08\u7B97\u8853\u5F0F\u306F\u96C6\u8A08\u95A2\u6570\u304B\u3089\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08${this.peek().value}\uFF09\u3002`,this.peek());if(this.isUnsupportedGroupingIdStart())throw new S("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){if(this.groupingFieldContext==="FORBIDDEN"||this.insideAggregateArg>0)throw new S("B65: GROUPING() is only allowed in SELECT, SELECT CASE conditions, HAVING, and direct ORDER BY.",this.peek());return{type:"GROUPING_FIELD",ref:this.parseGroupingRef()}}if(this.tryStringFuncName()!==null){let r=this.parseStringFuncExpr();return this.isArithOp(this.peek().kind)?{type:"ARITH_FIELD",expr:this.continueArith(r)}:{type:"FUNC_FIELD",expr:r}}let t=this.tryAggregateFunc();if(t!==null){if(this.insideAggregateArg>0)throw new S("\u96C6\u8A08\u95A2\u6570\u306E\u5F15\u6570\u5185\u306B\u96C6\u8A08\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let r=this.parseAggregateRef(t);return this.rejectAggregateWindowOutsideSelect(),this.isArithOp(this.peek().kind)?{type:"AGG_FIELD",expr:this.continueAggArith(r)}:{type:"FIELD",tableAlias:null,field:de(r.func,r.distinct,r.arg),...this.groupingFieldContext==="SELECT_CASE"||this.groupingFieldContext==="HAVING"?{aggregateRef:r}:{}}}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 r=this.parseArithAddSub();return this.expect(")"),{type:"ARITH_FIELD",expr:this.continueArith(r)}}if(this.peek().kind==="-")return{type:"ARITH_FIELD",expr:this.parseArithAddSub()};let n=this.parseQualifiedIdent();if(this.isArithOp(this.peek().kind)){let i={type:"FIELD_REF",field:n.tableAlias?`${n.tableAlias}.${n.field}`:n.field};return{type:"ARITH_FIELD",expr:this.continueArith(i)}}return{type:"FIELD",tableAlias:n.tableAlias,field:n.field}}parseWhereSqlValue(t=!0){let n=this.peek();if(t&&n.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 Se(`+${r.value}`)}return this.allowRelativeDateFunctions&&n.kind==="IDENT"&&this.peekAt(1).kind==="("&&ie(n.value.toUpperCase())?this.parseRelativeDateFunction():this.parseSqlValue()}parseRelativeDateFunction(){let t=this.expect("IDENT"),n=t.value.toUpperCase();switch(this.expect("("),n){case"YESTERDAY":case"TOMORROW":case"THIS_YEAR":case"LAST_YEAR":case"NEXT_YEAR":return this.expect(")",`${n}() \u306F\u5F15\u6570\u3092\u53D7\u3051\u53D6\u308A\u307E\u305B\u3093`),{type:"KINTONE_FUNC",name:n,args:{kind:"NONE"}};case"FROM_TODAY":{let r="";if(this.consume("-")&&(r="-"),this.peek().kind==="+")throw new S("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 S("FROM_TODAY \u306E offset \u306F10\u9032\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",i);let o=`${r}${i.value}`,a=Number(o);if(!Number.isSafeInteger(a))throw new S("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(!Rh(l))throw new S("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:n,args:{kind:"FROM_TODAY",offset:a,offsetText:p,unit:l}}}case"THIS_WEEK":case"LAST_WEEK":case"NEXT_WEEK":{let r=null;if(this.peek().kind!==")"){let i=this.expect("IDENT",`${n} \u306E\u66DC\u65E5\u306B\u306F\u975E\u5F15\u7528\u306E SUNDAY ... SATURDAY \u304C\u5FC5\u8981\u3067\u3059`),o=i.value.toUpperCase();if(!mh(o))throw new S(`${n} \u306E\u66DC\u65E5\u304C\u4E0D\u6B63\u3067\u3059`,i);r=o}return this.expect(")",`${n} \u306F\u66DC\u65E5\u3092\u6700\u59271\u500B\u3060\u3051\u53D7\u3051\u53D6\u308A\u307E\u3059`),{type:"KINTONE_FUNC",name:n,args:{kind:"WEEK",weekday:r}}}case"THIS_MONTH":case"LAST_MONTH":case"NEXT_MONTH":{let r=null;if(this.peek().kind!==")"){let i=this.peek();if(i.kind==="IDENT"&&i.value.toUpperCase()==="LAST")this.advance(),r="LAST";else if(i.kind==="NUMBER"&&/^\d+$/.test(i.value)){this.advance();let o=Number(i.value);if(!gh(o))throw new S(`${n} \u306E\u65E5\u306F 1 \u304B\u3089 31 \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,i);r=o}else throw new S(`${n} \u306E\u65E5\u306F\u975E\u5F15\u7528\u306E LAST \u307E\u305F\u306F 1 \u304B\u3089 31 \u304C\u5FC5\u8981\u3067\u3059`,i)}return this.expect(")",`${n} \u306F\u65E5\u3092\u6700\u59271\u500B\u3060\u3051\u53D7\u3051\u53D6\u308A\u307E\u3059`),{type:"KINTONE_FUNC",name:n,args:{kind:"MONTH",day:r}}}default:throw new S(`\u672A\u77E5\u306E\u76F8\u5BFE\u65E5\u4ED8\u95A2\u6570 ${n} \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(Dd(t.kind))return this.advance(),this.expect("("),this.expect(")"),{type:"KINTONE_FUNC",name:Hr[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 n=this.parseSelect();if(this.expect(")"),this.isArithOp(this.peek().kind))throw new S("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u306E\u5F8C\u306B\u7B97\u8853\u6F14\u7B97\u5B50\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u30B5\u30D6\u30AF\u30A8\u30EA\u5185\u3067\u8A08\u7B97\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: (SELECT AVG(\u5408\u8A08\u8CBB\u7528)/2 FROM APP88)\uFF09",this.peek());return{type:"SCALAR_SUBQUERY",query:n}}if(t.kind==="NUMBER"||t.kind==="IDENT"||t.kind==="BIDENT"||t.kind==="("||t.kind==="-"||this.tryStringFuncName()!==null){let n=this.parseArithAddSub();return n.type==="NUMBER"?n:{type:"ARITH_VALUE",expr:n}}throw new S("\u5024\uFF08\u6587\u5B57\u5217\u30FB\u6570\u5024\u30FB\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u30FBTODAY()\u30FBNOW()\u30FBLOGINUSER()\uFF09\u304C\u5FC5\u8981\u3067\u3059",t)}parseInRight(){if(this.consume("(")){let n=this.parseInListOrSubquery();return this.expect(")"),n}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(),n=t.columns[0],r=n&&n.type==="FIELD"?n.alias??n.field:null;return{type:"SUBQUERY_IN_LIST",query:t,column:r}}return{type:"IN_LIST",values:this.parseInValues()}}parseInValues(){let t=[],n="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",r="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(Se(i.value));else if(i.kind==="-"||i.kind==="+"){let o=this.peek();if(o.kind!=="NUMBER")throw new S(n,i);this.advance();let a=i.kind==="-"?"-":"+";t.push(Se(`${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 S(r,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 S(r,this.peek())}else if(i.kind==="PRIMARY_ORGANIZATION"){let o="PRIMARY_ORGANIZATION() \u306F IN / NOT IN \u30EA\u30B9\u30C8\u306E\u5358\u72EC\u8981\u7D20\u3068\u3057\u3066\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059";if(t.length>0)throw new S(o,i);if(this.expect("(","PRIMARY_ORGANIZATION \u306E\u76F4\u5F8C\u306B\u306F\u7A7A\u5F15\u6570\u306E () \u304C\u5FC5\u8981\u3067\u3059"),this.expect(")","PRIMARY_ORGANIZATION \u306E\u76F4\u5F8C\u306B\u306F\u7A7A\u5F15\u6570\u306E () \u304C\u5FC5\u8981\u3067\u3059"),t.push({type:"KINTONE_FUNC",name:"PRIMARY_ORGANIZATION"}),this.peek().kind===",")throw new S(o,this.peek())}else throw new S(n,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 S("B65: ordinary GROUP BY items cannot be mixed with grouping elements.",this.peek());t.push(this.parseGroupByKey())}while(this.consume(","));return t}isRollupStart(){return this.isSoftKeyword("ROLLUP")&&this.peekAt(1).kind==="("}isCubeStart(){return this.isSoftKeyword("CUBE")&&this.peekAt(1).kind==="("}isGroupingSetsStart(){return this.isSoftKeyword("GROUPING")&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="SETS"&&this.peekAt(2).kind==="("}isGroupingFunctionStart(){return this.isSoftKeyword("GROUPING")&&this.peekAt(1).kind==="("}isUnsupportedGroupingIdStart(){return this.isSoftKeyword("GROUPING_ID")&&this.peekAt(1).kind==="("}groupingItemSyntaxKey(t){return`${t.tableAlias??""}\0${t.field}`}groupingAllItems(t){let n=new Set,r=[];for(let i of t)for(let o of i.items){let a=this.groupingItemSyntaxKey(o);n.has(a)||(n.add(a),r.push(o))}return r}parseGroupingFieldItem(){if(this.isRollupStart()||this.isGroupingSetsStart()||this.isCubeStart())throw new S("B65: nested grouping elements are not supported in Phase1.",this.peek());let t=this.peek(),n=this.parseQualifiedIdent();if(this.peek().kind!==","&&this.peek().kind!==")")throw new S("B65: grouping items must be physical field references only.",t);return{type:"FIELD",tableAlias:n.tableAlias,field:n.field}}parseGroupingSetsClause(){if(this.advance(),this.advance(),this.expect("("),this.peek().kind===")")throw new S("B65: GROUPING SETS requires at least one grouping set; use (()) for the empty set.",this.peek());let t=[];do if(this.consume("(")){let n=[];if(this.peek().kind!==")")do n.push(this.parseGroupingFieldItem());while(this.consume(","));this.expect(")"),t.push({items:n})}else t.push({items:[this.parseGroupingFieldItem()]});while(this.consume(","));return this.expect(")"),{type:"GROUPING_SETS",source:"GROUPING_SETS",allItems:this.groupingAllItems(t),sets:t}}parseRollupClause(){if(this.advance(),this.expect("("),this.peek().kind===")")throw new S("B65: ROLLUP requires at least one field.",this.peek());let t=[];do t.push(this.parseGroupingFieldItem());while(this.consume(","));this.expect(")");let n=Array.from({length:t.length+1},(r,i)=>({items:t.slice(0,t.length-i)}));return{type:"GROUPING_SETS",source:"ROLLUP",allItems:this.groupingAllItems(n),sets:n}}parseCubeClause(){if(this.advance(),this.expect("("),this.peek().kind===")")throw new S("B65: CUBE requires at least one field.",this.peek());let t=[];do t.push(this.parseGroupingFieldItem());while(this.consume(","));this.expect(")");let n=gp(t);return{type:"GROUPING_SETS",source:"CUBE",allItems:this.groupingAllItems(n),sets:n}}parseGroupingRef(){let t=this.advance();if(this.expect("("),this.peek().kind===")")throw new S("B65: GROUPING() requires exactly one physical field argument.",this.peek());let n=this.parseQualifiedIdent();if(this.peek().kind!==")")throw new S("B65: GROUPING() requires exactly one physical field argument.",t);return this.expect(")"),{type:"GROUPING_REF",field:{type:"FIELD",tableAlias:n.tableAlias,field:n.field}}}parseGroupByKey(){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 t=this.parseFieldPath();if(this.isArithOp(this.peek().kind)){let n={type:"FIELD_REF",field:t};return{type:"ARITH_KEY",expr:this.continueArith(n)}}return{type:"FIELD_NAME",name:t}}parseOrderBy(t=!0){let n=[];do{let r=this.parseOrderByKey(t),i="ASC";this.consume("DESC")?i="DESC":this.consume("ASC"),n.push({key:r,direction:i})}while(this.consume(","));return n}parseOrderByKey(t=!0){let n=this.tryAggregateFunc();if(n!==null){let i=this.pos,o=this.parseAggregateRef(n);if(this.isSoftKeyword("OVER"))throw new S("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306F SELECT \u5217\u306B\u306E\u307F\u8A18\u8FF0\u3067\u304D\u307E\u3059",this.peek());this.pos=i}if(this.isUnsupportedGroupingIdStart())throw new S("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){if(!t)throw new S("B65: GROUPING() is not allowed in window ORDER BY.",this.peek());return{type:"GROUPING_KEY",ref:this.parseGroupingRef()}}if(this.tryStringFuncName()!==null){let i=this.parseStringFuncExpr();return this.isArithOp(this.peek().kind)?{type:"ARITH_KEY",expr:this.continueArith(i)}:{type:"FUNC_KEY",expr:i}}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 i={type:"FIELD_REF",field:r};return{type:"ARITH_KEY",expr:this.continueArith(i)}}return{type:"FIELD_NAME",name:r}}parseInsert(){this.expect("INSERT"),this.expect("INTO"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:n,subtableCode:r}=ft(t,this.prev());this.expect("(");let i=this.parseIdentList();if(this.expect(")"),this.peek().kind==="SELECT"){let c=this.parseSelect();if(this.isApplyBlockStart()||this.prev().kind==="IDENT"&&this.prev().value.toUpperCase()==="APPLY"&&(this.peek().kind==="IDENT"||this.peek().kind==="BIDENT")&&this.peekAt(1).kind==="(")throw new S("INSERT INTO ... SELECT \u306F APPLY \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(r)throw new S("INSERT INTO ... SELECT \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u3067\u306F\u672A\u5BFE\u5FDC\u3067\u3059",this.prev());let u=this.parseCheckGroups(),d=this.parseDmlControlSuffix();return{type:"INSERT_SELECT",appId:n,fields:i,select:c,...u,...d}}this.expect("VALUES");let o=[];do{this.expect("(");let c=this.parseInsertRow(i.length);this.expect(")"),o.push(c)}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 S("APPLY SUBTABLE noun is not supported; use APPLY <field> (...)",this.peek());if(a.length>0&&this.isSoftKeyword("CHECK"))throw new S("APPLY \u30D6\u30ED\u30C3\u30AF\u306E\u5F8C\u306B CHECK \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());if(a.length>0&&(this.peek().kind==="ON"||this.isSoftKeyword("REJECT")))throw new S("ON ERROR SKIP / REJECT LIMIT \u306F APPLY \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let s=this.parseCheckGroups(),l=this.parseDmlControlSuffix();if(this.isSoftKeyword("APPLY"))throw new S("APPLY \u306F CHECK / VALIDATE ONLY \u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(r&&s.checkGroups)throw new S("CHECK \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB INSERT \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(r&&(l.validateOnly||l.onErrorSkip))throw new S("VALIDATE ONLY / ON ERROR SKIP \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB INSERT \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());let p=a.length>0?{applyBlocks:a}:{};return r?{type:"INSERT",appId:n,subtableCode:r,fields:i,values:o,...p,...s,...l}:{type:"INSERT",appId:n,fields:i,values:o,...p,...s,...l}}parseUpsert(){this.expect("UPSERT"),this.expect("INTO"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:n,subtableCode:r}=ft(t,this.prev());if(r)throw new S("UPSERT \u306F\u307E\u3060\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());this.expect("(");let i=this.parseIdentList();if(this.expect(")"),this.peek().kind==="SELECT"){let u=this.parseSelect(),d=this.parseOnDuplicate();if(this.isUpsertApplyBranchStart()||this.isApplyBlockStart())throw new S("UPSERT INTO ... SELECT \u306F ON INSERT / ON UPDATE APPLY \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.peek());let f=this.parseCheckGroups(),R=this.parseDmlControlSuffix();if(this.isUpsertApplyBranchStart()||this.isApplyBlockStart())throw new S("UPSERT INTO ... SELECT \u306F ON INSERT / ON UPDATE APPLY \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.peek());return{type:"UPSERT_SELECT",appId:n,fields:i,select:u,keyFields:d,...f,...R}}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 S("UPSERT \u306E\u5206\u5C90 APPLY \u306F CHECK \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());if(l&&(this.peek().kind==="ON"||this.isSoftKeyword("REJECT")))throw new S("UPSERT \u306E\u5206\u5C90 APPLY \u306F ON ERROR SKIP / REJECT LIMIT \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let p=this.parseCheckGroups(),c=this.parseDmlControlSuffix();if(this.isUpsertApplyBranchStart()||this.isApplyBlockStart())throw new S("ON INSERT / ON UPDATE APPLY \u306F CHECK / VALIDATE ONLY \u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());return{type:"UPSERT",appId:n,fields:i,values:o,keyFields:a,...s,...p,...c}}parseOnDuplicate(){if(this.capabilities.dialect1&&this.consumeSoftKeyword("KEY")){this.expect("(","KEY \u306E\u5F8C\u306B\u306F (\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9) \u304C\u5FC5\u8981\u3067\u3059");let n=this.parseIdentList();if(this.expect(")"),n.length===0)throw new S("KEY \u306B\u306F\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",this.prev());return n}if(this.expectKeyword("ON","UPSERT \u306B\u306F ON DUPLICATE (\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9) \u304C\u5FC5\u8981\u3067\u3059"),!this.consume("DUPLICATE"))throw new S("ON \u306E\u5F8C\u306B\u306F DUPLICATE \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.expect("(");let t=this.parseIdentList();if(this.expect(")"),t.length===0)throw new S("ON DUPLICATE \u306B\u306F\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",this.prev());return t}parseMergeAsUpsert(){let t=this.advance();this.expect("INTO","MERGE \u306E\u5F8C\u306B\u306F INTO \u304C\u5FC5\u8981\u3067\u3059"),this.rejectTempTableDml();let n=this.parseIdentifier(),{appId:r,subtableCode:i}=ft(n,this.prev());if(i)throw new S("MERGE \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("AS","MERGE \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059");let o=this.parseTableAliasName();this.expectSoftKeyword("USING","MERGE \u306B\u306F USING <source> AS alias \u304C\u5FC5\u8981\u3067\u3059");let a=this.pos,s=this.parseTableRef();if(!this.tokens.slice(a,this.pos).some(I=>I.kind==="AS")||s.alias===null)throw new S("MERGE \u306E USING \u30BD\u30FC\u30B9\u306B\u306F AS alias \u304C\u5FC5\u8981\u3067\u3059",this.peek());let p=s.alias;this.expect("ON","MERGE \u306B\u306F ON t.key = s.key \u306E\u5358\u4E00\u30AD\u30FC\u7B49\u5024\u304C\u5FC5\u8981\u3067\u3059");let c=this.parseMergeQualifiedField("MERGE \u306E ON \u5DE6\u8FBA\u306F targetAlias.key \u306E\u5F62\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");if(!this.consume("="))throw new S("MERGE \u306E ON \u306F\u5358\u4E00\u30AD\u30FC\u306E\u7B49\u5024\uFF08t.key = s.key\uFF09\u306E\u307F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\u3002\u8907\u6570\u6761\u4EF6\u3084\u975E\u7B49\u5024\u306F\u9023\u7D50\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9\u3067\u7F6E\u304D\u63DB\u3048\u3066\u304F\u3060\u3055\u3044",this.peek());let u=this.parseMergeQualifiedField("MERGE \u306E ON \u53F3\u8FBA\u306F sourceAlias.key \u306E\u5F62\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");if(c.alias.toLowerCase()!==o.toLowerCase()||u.alias.toLowerCase()!==p.toLowerCase())throw new S(`MERGE \u306E ON \u306F ${o}.key = ${p}.key \u306E\u5225\u540D\u4FEE\u98FE\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,t);if(this.peek().kind==="AND"||this.peek().kind==="OR")throw new S("MERGE \u306E ON \u306F\u5358\u4E00\u30AD\u30FC\u306E\u7B49\u5024\u306E\u307F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\u3002\u8907\u6570\u6761\u4EF6\u306F\u9023\u7D50\u30AD\u30FC\u30D5\u30A3\u30FC\u30EB\u30C9\u3067\u7F6E\u304D\u63DB\u3048\u3066\u304F\u3060\u3055\u3044",this.peek());let d=null,f=null,R=null;for(;this.peek().kind==="WHEN";){let I=this.advance();if(this.consume("NOT")){if(this.expectSoftKeyword("MATCHED","WHEN NOT \u306E\u5F8C\u306B\u306F MATCHED \u304C\u5FC5\u8981\u3067\u3059"),f!==null)throw new S("WHEN NOT MATCHED \u53E5\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059",I);if(this.expect("THEN","WHEN NOT MATCHED \u306E\u5F8C\u306B\u306F THEN \u304C\u5FC5\u8981\u3067\u3059"),this.expect("INSERT","WHEN NOT MATCHED THEN \u306E\u5F8C\u306B\u306F INSERT \u304C\u5FC5\u8981\u3067\u3059"),this.expect("(","MERGE INSERT \u306B\u306F\u5217\u30EA\u30B9\u30C8\u304C\u5FC5\u8981\u3067\u3059"),f=this.parseIdentList(),this.expect(")"),this.expect("VALUES","MERGE INSERT \u306E\u5217\u30EA\u30B9\u30C8\u306E\u5F8C\u306B\u306F VALUES \u304C\u5FC5\u8981\u3067\u3059"),this.expect("(","MERGE INSERT VALUES \u306F ( \u3067\u59CB\u3081\u3066\u304F\u3060\u3055\u3044"),R=this.parseMergeValueList(),this.expect(")"),f.length!==R.length)throw new S("MERGE INSERT \u306E\u5217\u6570\u3068 VALUES \u306E\u5024\u6570\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093",I)}else{if(this.expectSoftKeyword("MATCHED","WHEN \u306E\u5F8C\u306B\u306F MATCHED \u307E\u305F\u306F NOT MATCHED \u304C\u5FC5\u8981\u3067\u3059"),d!==null)throw new S("WHEN MATCHED \u53E5\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059",I);this.expect("THEN","WHEN MATCHED \u306E\u5F8C\u306B\u306F THEN \u304C\u5FC5\u8981\u3067\u3059"),this.expect("UPDATE","WHEN MATCHED THEN \u306E\u5F8C\u306B\u306F UPDATE \u304C\u5FC5\u8981\u3067\u3059"),this.expect("SET","WHEN MATCHED THEN UPDATE \u306E\u5F8C\u306B\u306F SET \u304C\u5FC5\u8981\u3067\u3059"),d=this.parseMergeAssignments(o)}}if(d===null||f===null||R===null)throw new S("WHEN MATCHED / WHEN NOT MATCHED \u306E\u4E21\u53E5\u304C\u5FC5\u8981\u3067\u3059\uFF08\u66F4\u65B0\u306E\u307F\u306F UPDATE ... FROM\u3001\u633F\u5165\u306E\u307F\u306F INSERT ... SELECT \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\uFF09",this.peek());if(!f.some(I=>I.toLowerCase()===c.field.toLowerCase()))throw new S(`MERGE \u306E ON \u30AD\u30FC ${c.field} \u306F INSERT \u5217\u30EA\u30B9\u30C8\u306B\u542B\u3081\u3066\u304F\u3060\u3055\u3044`,t);let E=new Map;f.forEach((I,C)=>E.set(I.toLowerCase(),R[C]));for(let I of d){let C=I.field.toLowerCase(),v=E.get(C);if(v!==void 0&&!this.mergeExpressionsEqual(v,I.value,p))throw new S(`MERGE \u306E\u5217 ${I.field} \u306F\u4E21\u53E5\u306E\u5F0F\u304C\u4E00\u81F4\u3059\u308B\u5834\u5408\u306E\u307F MERGE \u3092 UPSERT \u3078\u6B63\u898F\u5316\u3067\u304D\u307E\u3059`,t);v===void 0&&(f.push(I.field),R.push(I.value),E.set(C,I.value))}let m=R.map(I=>this.mergeValueToSelectColumn(I,p,t)),g=s.cteName!==null?{...s,alias:null}:{...s,alias:`APP${s.appId}${s.subtableCode?`$${s.subtableCode}`:""}`},y={type:"SELECT",distinct:!1,columns:m,from:g,joins:[],where:null,groupBy:[],having:null,orderMode:"CANONICAL",orderBy:[],limit:null,offset:null},T=this.parseCheckGroups(),h=this.parseDmlControlSuffix();return{type:"UPSERT_SELECT",appId:r,fields:f,select:y,keyFields:[c.field],...T,...h}}parseMergeQualifiedField(t){let n=this.peek(),r=this.parseFieldPath(),i=this.splitQualifiedField(r);if(i.alias===null)throw new S(t,n);return{alias:i.alias,field:i.field}}parseMergeAssignments(t){let n=[];do{let r=this.peek(),i=this.parseFieldPath(),o=this.splitQualifiedField(i);if(o.alias!==null&&o.alias.toLowerCase()!==t.toLowerCase())throw new S(`MERGE UPDATE SET \u306E\u5DE6\u8FBA\u306F target alias ${t} \u3067\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044`,r);this.expect("="),n.push({field:o.field,value:this.parseAssignmentValue()})}while(this.consume(","));return n}parseMergeValueList(){let t=[];if(this.peek().kind===")")return t;do t.push(this.parseAssignmentValue());while(this.consume(","));return t}mergeExpressionsEqual(t,n,r){return this.mergeNormalizedValueEqual(this.normalizeMergeValue(t,r,!0),this.normalizeMergeValue(n,r,!0))}normalizeMergeValue(t,n,r=!1){if(Array.isArray(t))return t.map(o=>this.normalizeMergeValue(o,n,r));if(t===null||typeof t!="object")return t;let i=t;if(r&&i.type==="NUMBER")return{type:"NUMBER",value:i.value};if(i.type==="SOURCE_FIELD")return String(i.alias).toLowerCase()!==n.toLowerCase()?{type:"INVALID_SOURCE"}:{type:"FIELD_REF",field:i.field};if(i.type==="FIELD_REF"&&typeof i.field=="string"){let o=this.splitQualifiedField(i.field);return o.alias!==null&&o.alias.toLowerCase()!==n.toLowerCase()?{type:"INVALID_SOURCE"}:{...i,field:o.field}}return i.type==="FIELD"&&typeof i.tableAlias=="string"?i.tableAlias.toLowerCase()!==n.toLowerCase()?{type:"INVALID_SOURCE"}:{...i,tableAlias:null}:Object.fromEntries(Object.entries(i).map(([o,a])=>[o,this.normalizeMergeValue(a,n,r)]))}mergeNormalizedValueEqual(t,n){if(t===n)return!0;if(Array.isArray(t)||Array.isArray(n))return Array.isArray(t)&&Array.isArray(n)&&t.length===n.length&&t.every((s,l)=>this.mergeNormalizedValueEqual(s,n[l]));if(t===null||n===null||typeof t!="object"||typeof n!="object")return!1;let r=t,i=n,o=Object.keys(r),a=Object.keys(i);return o.length===a.length&&o.every(s=>Object.prototype.hasOwnProperty.call(i,s)&&this.mergeNormalizedValueEqual(r[s],i[s]))}mergeValueToSelectColumn(t,n,r){let i=this.normalizeMergeValue(t,n);if(this.mergeValueContainsInvalidSource(i))throw new S(`MERGE \u306E\u5F0F\u306F source alias ${n} \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3060\u3051\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044`,r);let o=i;switch(o.type){case"FIELD_REF":return{type:"FIELD",field:String(o.field),alias:null};case"STRING":return{type:"LITERAL_COL",value:String(o.value),alias:null};case"NUMBER":return{type:"ARITH_COL",expr:o,alias:null};case"ARITH":return{type:"ARITH_COL",expr:o,alias:null};case"STRING_FUNC":return{type:"STRFUNC_COL",expr:o,alias:null};case"CASE_VALUE":return{type:"CASE_COL",expr:o.expr,alias:null};default:throw new S("MERGE \u306E\u4EE3\u5165\u5F0F\u306F\u30BD\u30FC\u30B9\u30D5\u30A3\u30FC\u30EB\u30C9\u30FB\u30EA\u30C6\u30E9\u30EB\u30FB\u7B97\u8853\u5F0F\u30FB\u6587\u5B57\u5217\u95A2\u6570\u30FBCASE \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",r)}}mergeValueContainsInvalidSource(t){if(Array.isArray(t))return t.some(r=>this.mergeValueContainsInvalidSource(r));if(t===null||typeof t!="object")return!1;let n=t;return n.type==="INVALID_SOURCE"||Object.values(n).some(r=>this.mergeValueContainsInvalidSource(r))}isUpsertApplyBranchStart(){return this.peek().kind==="ON"&&(this.peekAt(1).kind==="INSERT"||this.peekAt(1).kind==="UPDATE")}parseUpsertApplyBranches(){let t,n;for(;this.isUpsertApplyBranchStart();){this.advance();let r=this.advance(),i=r.kind==="INSERT";if(i&&t||!i&&n)throw new S(`ON ${i?"INSERT":"UPDATE"} APPLY \u306F 1 \u56DE\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059`,r);if(!this.isApplyBlockStart())throw new S(`ON ${i?"INSERT":"UPDATE"} \u306E\u5F8C\u306B\u306F APPLY \u30D6\u30ED\u30C3\u30AF\u304C\u5FC5\u8981\u3067\u3059`,this.peek());let o=[];for(;this.isApplyBlockStart();)o.push(this.parseApplyBlock());i?t=o:n=o}if(this.isApplyBlockStart())throw new S("UPSERT \u306E APPLY \u306B\u306F ON INSERT \u307E\u305F\u306F ON UPDATE \u304C\u5FC5\u8981\u3067\u3059",this.peek());return{...t?{onInsertApplyBlocks:t}:{},...n?{onUpdateApplyBlocks:n}:{}}}parseArrayLiteral(){this.expect("[");let t=[];if(this.peek().kind!=="]")do{let n=this.expect("STRING");t.push({type:"STRING",value:n.value})}while(this.consume(","));return this.expect("]"),{type:"ARRAY",elements:t}}parseInsertRow(t){let n=[];do if(this.peek().kind==="[")n.push(this.parseArrayLiteral());else if(this.peek().kind==="CASE"){let r=this.parseCaseWhenExpr();n.push({type:"CASE_VALUE",expr:r})}else if(this.peek().kind==="IF"){let r=this.parseIfExpr();n.push({type:"CASE_VALUE",expr:r})}else if(this.peek().kind==="-"||this.peek().kind==="+"){let r=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");n.push(Se(`${r.kind==="-"?"-":"+"}${i.value}`))}else{let r=this.advance();if(r.kind==="STRING")n.push({type:"STRING",value:r.value});else if(r.kind==="NUMBER")n.push(Se(r.value));else throw new S("INSERT \u306E\u5024\u306B\u306F\u6587\u5B57\u5217\u30FB\u6570\u5024\u30FB\u914D\u5217\u30EA\u30C6\u30E9\u30EB\u30FBCASE WHEN \u304C\u5FC5\u8981\u3067\u3059",r)}while(this.consume(","));if(n.length!==t)throw new S(`\u30AB\u30E9\u30E0\u6570\uFF08${t}\uFF09\u3068\u5024\u306E\u6570\uFF08${n.length}\uFF09\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093`,this.prev());return n}parseUpdate(){this.expect("UPDATE"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:n,subtableCode:r}=ft(t,this.prev());this.expect("SET");let i=this.parseAssignments();if(r&&i.some(d=>d.value.type==="STRING_FUNC"))throw new S("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE SET \u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u3092\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",this.prev());let o=null;if(this.consume("FROM")){let d=this.parseTableRef();if(d.subtableCode)throw new S("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u306B\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.prev());if(d.cteName!==null&&!d.cteName.startsWith("#"))throw new S("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u306F #temp \u307E\u305F\u306F APP<n> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08CTE \u306F\u975E\u5BFE\u5FDC\uFF09",this.prev());if(!d.alias)throw new S("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u306B\u306F\u30A8\u30A4\u30EA\u30A2\u30B9\u304C\u5FC5\u8981\u3067\u3059",this.prev());if(d.alias.toLowerCase()===`app${n}`.toLowerCase())throw new S(`UPDATE ... FROM \u306E\u30BD\u30FC\u30B9 alias \u306F\u66F4\u65B0\u5148 APP${n} \u3068\u540C\u540D\u306B\u3067\u304D\u307E\u305B\u3093`,this.prev());o={appId:d.appId,cteName:d.cteName,alias:d.alias,targetJoinField:"",joinKeyField:"",targetFilter:null}}let a=this.peek();if(!this.consume("WHERE"))throw new S("UPDATE \u6587\u306B\u306F WHERE \u53E5\u304C\u5FC5\u8981\u3067\u3059\uFF08\u5168\u4EF6\u66F4\u65B0\u3092\u9632\u3050\u305F\u3081\uFF09",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 S("APPLY SUBTABLE noun is not supported; use APPLY <field> (...)",this.peek());if(l.length>0&&this.peek().kind==="WHERE")throw new S("\u89AA WHERE \u306F APPLY \u30D6\u30ED\u30C3\u30AF\u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(o!==null){if(r)throw new S("\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 d=this.decomposeUpdateFromWhere(s,n,o.alias,a);o.targetJoinField=d.targetJoinField,o.joinKeyField=d.joinKeyField,o.targetFilter=d.targetFilter}else{if(i.some(d=>d.value.type==="SOURCE_FIELD"))throw new S("SET \u306E\u5024\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u5358\u72EC\u3067\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",a);if(i.some(d=>d.value.type==="STRING_FUNC"&&this.nodeContainsAnyQualifier(d.value)))throw new S("UPDATE SET \u306E\u6587\u5B57\u5217\u95A2\u6570\u3067\u306F\u66F4\u65B0\u5148\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u4FEE\u98FE\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044",a)}if(l.length>0&&this.isSoftKeyword("CHECK"))throw new S("APPLY \u30D6\u30ED\u30C3\u30AF\u306E\u5F8C\u306B CHECK \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());if(l.length>0&&(this.peek().kind==="ON"||this.isSoftKeyword("REJECT")))throw new S("ON ERROR SKIP / REJECT LIMIT \u306F APPLY \u3068\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",this.peek());let p=this.parseCheckGroups(),c=this.parseDmlControlSuffix();if(this.isSoftKeyword("APPLY"))throw new S("APPLY \u306F VALIDATE ONLY \u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(r&&p.checkGroups)throw new S("CHECK \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(r&&(c.validateOnly||c.onErrorSkip))throw new S("VALIDATE ONLY / ON ERROR SKIP \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());let u=l.length>0?{applyBlocks:l}:{};return o!==null?{type:"UPDATE",appId:n,assignments:i,where:s,from:o,...u,...p,...c}:r?{type:"UPDATE",appId:n,subtableCode:r,assignments:i,where:s,...u,...p,...c}:{type:"UPDATE",appId:n,assignments:i,where:s,...u,...p,...c}}isApplyBlockStart(){return this.isSoftKeyword("APPLY")&&(this.peekAt(1).kind==="IDENT"||this.peekAt(1).kind==="BIDENT")&&this.peekAt(2).kind==="("}parseApplyBlock(){this.advance();let t=this.parseIdentifier();if(this.expect("("),this.peek().kind===")"||this.peek().kind===";")throw new S("APPLY \u30D6\u30ED\u30C3\u30AF\u306B\u306F\u64CD\u4F5C\u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",this.peek());let n=[];for(;n.push(this.parseApplyOperation()),!(!this.consume(";")||this.peek().kind===")");)if(this.peek().kind===";")throw new S("APPLY \u30D6\u30ED\u30C3\u30AF\u306B\u7A7A\u306E\u64CD\u4F5C\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek());this.expect(")","APPLY \u30D6\u30ED\u30C3\u30AF\u306E\u672B\u5C3E\u306B\u306F ) \u304C\u5FC5\u8981\u3067\u3059");let r=n.some(o=>o.kind==="PATCH"||o.kind==="APPEND"||o.kind==="REMOVE"),i=n.some(o=>o.kind==="ADD"||o.kind==="REMOVE_VALUE");if(r&&i)throw new S("1 \u3064\u306E APPLY \u30D6\u30ED\u30C3\u30AF\u306B\u884C\u64CD\u4F5C\u3068\u591A\u5024\u64CD\u4F5C\u306F\u6DF7\u5728\u3067\u304D\u307E\u305B\u3093",this.prev());return i?{field:t,targetKind:"MULTI_VALUE",operations:n}:{field:t,targetKind:"SUBTABLE",operations:n}}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(),n=this.parseApplyRowSelector(),r=this.parseExpectRowsGuard();return{kind:"PATCH",assignments:t,selector:n,...r?{expectRows:r}:{}}}if(this.isSoftKeyword("APPEND")){if(this.advance(),this.expect("(","APPEND \u306E\u5F8C\u306B\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u4E00\u89A7\u304C\u5FC5\u8981\u3067\u3059"),this.peek().kind===")")throw new S("APPEND \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u4E00\u89A7\u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093",this.peek());let t=[];do t.push(this.parseIdentifier());while(this.consume(","));this.expect(")"),this.expect("VALUES","APPEND \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u4E00\u89A7\u306E\u5F8C\u306B\u306F VALUES \u304C\u5FC5\u8981\u3067\u3059");let n=[];do this.expect("(","APPEND VALUES \u306E\u5404\u884C\u306F ( \u3067\u59CB\u3081\u3066\u304F\u3060\u3055\u3044"),n.push(this.parseInsertRow(t.length)),this.expect(")");while(this.consume(","));return{kind:"APPEND",fields:t,values:n}}if(this.isSoftKeyword("REMOVE")){if(this.advance(),this.peek().kind==="STRING")return{kind:"REMOVE_VALUE",value:this.advance().value};let t=this.parseApplyRowSelector(),n=this.parseExpectRowsGuard();return{kind:"REMOVE",selector:t,...n?{expectRows:n}:{}}}throw new S("APPLY \u306E\u64CD\u4F5C\u306B\u306F PATCH / APPEND / REMOVE / ADD \u304C\u5FC5\u8981\u3067\u3059",this.peek())}parseApplyRowSelector(){if(this.consume("WHERE"))return{kind:"WHERE",where:this.parseWhereExpr(void 0,!0)};if(this.consume("ALL")){if(!this.isSoftKeyword("ROWS"))throw new S("ALL \u306E\u5F8C\u306B\u306F ROWS \u304C\u5FC5\u8981\u3067\u3059",this.peek());return this.advance(),{kind:"ALL_ROWS"}}throw new S("PATCH / REMOVE \u306B\u306F WHERE \u307E\u305F\u306F ALL ROWS \u304C\u5FC5\u8981\u3067\u3059",this.peek())}parseExpectRowsGuard(){if(this.isSoftKeyword("EXPECT")){if(this.advance(),!this.isSoftKeyword("ROWS"))throw new S("EXPECT \u306E\u5F8C\u306B\u306F ROWS \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(this.advance(),this.consume("BETWEEN")){let t=this.parseExpectRowsCount();this.expect("AND","EXPECT ROWS BETWEEN \u306E\u4E0B\u9650\u3068\u4E0A\u9650\u306F AND \u3067\u533A\u5207\u3063\u3066\u304F\u3060\u3055\u3044");let n=this.parseExpectRowsCount();if(t>n)throw new S("EXPECT ROWS BETWEEN \u306E\u4E0B\u9650\u306F\u4E0A\u9650\u4EE5\u4E0B\u306B\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());return{kind:"BETWEEN",min:t,max:n}}if(this.isSoftKeyword("AT")){if(this.advance(),this.peek().value.toUpperCase()==="LEAST")return this.advance(),{kind:"AT_LEAST",count:this.parseExpectRowsCount()};if(this.isSoftKeyword("MOST"))return this.advance(),{kind:"AT_MOST",count:this.parseExpectRowsCount()};throw new S("EXPECT ROWS AT \u306E\u5F8C\u306B\u306F LEAST \u307E\u305F\u306F MOST \u304C\u5FC5\u8981\u3067\u3059",this.peek())}return{kind:"EXACT",count:this.parseExpectRowsCount()}}}parseExpectRowsCount(){let t=this.expect("NUMBER","EXPECT ROWS \u306B\u306F 0 \u4EE5\u4E0A\u306E\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059");if(!/^\d+$/.test(t.value)||!Number.isSafeInteger(Number(t.value)))throw new S("EXPECT ROWS \u306F 0 \u4EE5\u4E0A\u306E\u5B89\u5168\u306A\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",t);return Number(t.value)}parseCheckGroups(){let t=[];for(;this.isSoftKeyword("CHECK")&&this.peekAt(1).kind==="WHEN";){let n=this.advance(),r=[];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});r.push({condition:i,message:o})}if(r.length===0)throw new S("CHECK \u306E\u5F8C\u306B\u306F WHEN \u304C\u6700\u4F4E 1 \u3064\u5FC5\u8981\u3067\u3059",n);t.push({rules:r})}return t.length>0?{checkGroups:t}:{}}parseDmlControlSuffix(){if(this.peek().kind==="ON")return this.parseOnErrorSkipSuffix();if(this.isSoftKeyword("REJECT"))throw new S("REJECT LIMIT \u306B\u306F ON ERROR SKIP INTO \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(!this.isSoftKeyword("VALIDATE"))return{};let t=this.advance();if(!this.isSoftKeyword("ONLY"))throw new S("VALIDATE \u306E\u5F8C\u306B\u306F ONLY \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance();let n=null;if(this.consume("INTO")){let r=this.peek();if(r.kind!=="IDENT"||!r.value.startsWith("#"))throw new S("VALIDATE ONLY INTO \u306B\u306F # \u3067\u59CB\u307E\u308B\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",r);n=this.parseTableName()}if(this.peek().kind==="ON"||this.isSoftKeyword("REJECT"))throw new S("VALIDATE ONLY \u3068 ON ERROR / REJECT LIMIT \u306F\u4F75\u8A18\u3067\u304D\u307E\u305B\u3093",t);return{validateOnly:!0,validationErrorTable:n}}parseOnErrorSkipSuffix(){let t=this.advance();if(!this.isSoftKeyword("ERROR"))throw new S("ON \u306E\u5F8C\u306B\u306F ERROR \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(this.advance(),!this.isSoftKeyword("SKIP"))throw new S("ON ERROR \u306E\u5F8C\u306B\u306F SKIP \u304C\u5FC5\u8981\u3067\u3059",this.peek());this.advance(),this.expect("INTO","ON ERROR SKIP \u306B\u306F INTO #\u4E00\u6642\u30C6\u30FC\u30D6\u30EB \u304C\u5FC5\u8981\u3067\u3059");let n=this.peek();if(n.kind!=="IDENT"||!n.value.startsWith("#"))throw new S("ON ERROR SKIP INTO \u306B\u306F # \u3067\u59CB\u307E\u308B\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",n);let r=this.parseTableName(),i=null;if(this.isSoftKeyword("REJECT")){this.advance(),this.expect("LIMIT","REJECT \u306E\u5F8C\u306B\u306F LIMIT \u304C\u5FC5\u8981\u3067\u3059");let o=this.expect("NUMBER","REJECT LIMIT \u306B\u306F 0 \u4EE5\u4E0A\u306E\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059");if(!/^\d+$/.test(o.value))throw new S("REJECT LIMIT \u306F 0 \u4EE5\u4E0A\u306E\u5B89\u5168\u306A\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",o);if(i=Number(o.value),!Number.isSafeInteger(i))throw new S("REJECT LIMIT \u306F 0 \u4EE5\u4E0A\u306E\u5B89\u5168\u306A\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",o)}if(this.isSoftKeyword("REJECT")||this.isSoftKeyword("VALIDATE")||this.peek().kind==="ON")throw new S("ON ERROR SKIP \u306E\u53E5\u304C\u91CD\u8907\u307E\u305F\u306F\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059",t);return{onErrorSkip:!0,errorTable:r,rejectLimit:i}}isSoftKeyword(t){return this.peek().kind==="IDENT"&&this.peek().value.toUpperCase()===t}rejectAggregateWindowOutsideSelect(){if(this.isSoftKeyword("OVER"))throw new S("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u306F SELECT \u5217\u306B\u306E\u307F\u8A18\u8FF0\u3067\u304D\u307E\u3059",this.peek())}validateUpdateFromAssignments(t,n,r){for(let i of t){if(i.value.type==="STRING_FUNC")throw new S("UPDATE ... FROM \u306E SET \u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u3092\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);if(i.value.type==="SOURCE_FIELD"){if(i.value.alias.toLowerCase()!==n.toLowerCase())throw new S(`UPDATE ... FROM \u306E SET \u53C2\u7167\u306F\u30BD\u30FC\u30B9 alias ${n} \u3067\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044`,r);continue}if(this.nodeContainsQualifiedField(i.value,n))throw new S("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u5217\u306F SET \u306E\u76F4\u63A5\u5024\u3068\u3057\u3066\u306E\u307F\u53C2\u7167\u3067\u304D\u307E\u3059",r);if(i.value.type==="SCALAR_SUBQUERY")throw new S("UPDATE ... FROM \u306E SET \u3067\u306F\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);if(this.nodeContainsAnyQualifier(i.value))throw new S("UPDATE ... FROM \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u5F0F\u3067\u306F\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u4FEE\u98FE\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044",r)}}decomposeUpdateFromWhere(t,n,r,i){let o=this.flattenTopLevelAnd(t),a=[];if(o.forEach((c,u)=>{let d=this.matchUpdateFromJoin(c,n,r);d!==null&&a.push({index:u,...d})}),a.length!==1)throw new S("UPDATE ... FROM \u306E WHERE \u306B\u306F target.key = source.key \u306E\u7D50\u5408\u7B49\u5024\u304C\u3061\u3087\u3046\u30691\u3064\u5FC5\u8981\u3067\u3059",i);let s=a[0];for(let c=0;c<o.length;c++){if(c!==s.index&&this.nodeContainsQualifiedField(o[c],r))throw new S("UPDATE ... FROM \u306E\u30BD\u30FC\u30B9 alias \u306F\u7D50\u5408\u7B49\u5024\u4EE5\u5916\u306E WHERE \u6761\u4EF6\u3067\u306F\u53C2\u7167\u3067\u304D\u307E\u305B\u3093",i);if(c!==s.index&&this.nodeContainsForeignQualifier(o[c],n))throw new S(`UPDATE ... FROM \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u30D5\u30A3\u30EB\u30BF\u306F APP${n} \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u3060\u3051\u3092\u53C2\u7167\u3067\u304D\u307E\u3059`,i)}let p=o.filter((c,u)=>u!==s.index).reduce((c,u)=>c===null?u:{type:"LOGICAL",op:"AND",left:c,right:u},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,n,r){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,n)&&this.isSourceRef(i,r)?{targetField:o.field,sourceField:i.field}:this.isSourceRef(o,r)&&this.isTargetRef(i,n)?{targetField:i.field,sourceField:o.field}:null}splitQualifiedField(t){let n=t.indexOf(".");return n<0?{alias:null,field:t}:{alias:t.slice(0,n),field:t.slice(n+1)}}isTargetRef(t,n){return t.alias===null||t.alias.toLowerCase()===`app${n}`.toLowerCase()}isSourceRef(t,n){return t.alias?.toLowerCase()===n.toLowerCase()}nodeContainsQualifiedField(t,n){if(Array.isArray(t))return t.some(i=>this.nodeContainsQualifiedField(i,n));if(t===null||typeof t!="object")return!1;let r=t;if(r.type==="FIELD"&&typeof r.tableAlias=="string"&&r.tableAlias.toLowerCase()===n.toLowerCase())return!0;if(r.type==="FIELD_REF"&&typeof r.field=="string"){let i=this.splitQualifiedField(r.field);if(this.isSourceRef(i,n))return!0}return Object.values(r).some(i=>this.nodeContainsQualifiedField(i,n))}nodeContainsForeignQualifier(t,n){if(Array.isArray(t))return t.some(o=>this.nodeContainsForeignQualifier(o,n));if(t===null||typeof t!="object")return!1;let r=t,i=`app${n}`.toLowerCase();if(r.type==="FIELD"&&typeof r.tableAlias=="string")return r.tableAlias.toLowerCase()!==i;if(r.type==="FIELD_REF"&&typeof r.field=="string"){let o=this.splitQualifiedField(r.field);if(o.alias!==null)return o.alias.toLowerCase()!==i}return Object.values(r).some(o=>this.nodeContainsForeignQualifier(o,n))}nodeContainsAnyQualifier(t){if(Array.isArray(t))return t.some(r=>this.nodeContainsAnyQualifier(r));if(t===null||typeof t!="object")return!1;let n=t;return n.type==="FIELD"&&typeof n.tableAlias=="string"||n.type==="FIELD_REF"&&typeof n.field=="string"&&this.splitQualifiedField(n.field).alias!==null?!0:Object.values(n).some(r=>this.nodeContainsAnyQualifier(r))}parseAssignments(){let t=[];do{let n=this.parseIdentifier();this.expect("=");let r=this.parseAssignmentValue();t.push({field:n,value:r})}while(this.consume(","));return t}parseAssignmentValue(){let t=this.peek();if(this.hasTopLevelTokenBeforeValueEnd("||")){let i=this.parseScalarValueExpr();if(i.type==="CONCAT_OP"||i.type==="SCALAR_ARITH"||i.type==="STRING_FUNC")return i;if(i.type==="CASE_WHEN")return{type:"CASE_VALUE",expr:i};throw new S("SET \u306E\u5024\u306B\u306F\u9023\u7D50\u3092\u542B\u3080\u30B9\u30AB\u30E9\u30FC\u5024\u5F0F\u304C\u5FC5\u8981\u3067\u3059",t)}if(t.kind==="VARIABLE")return this.parseSqlValue();if(t.kind==="STRING")return this.parseSqlValue();if(Dd(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 n=this.allowUnaryPlusNumber;this.allowUnaryPlusNumber=!0;let r;try{r=this.parseArithAddSub()}finally{this.allowUnaryPlusNumber=n}if(r.type==="NUMBER"||r.type==="ARITH"||r.type==="STRING_FUNC")return r;if(r.type==="FIELD_REF"){let i=r.field.indexOf(".");if(i>0&&i<r.field.length-1)return{type:"SOURCE_FIELD",alias:r.field.slice(0,i),field:r.field.slice(i+1)}}throw new S("SET \u306E\u5024\u306B\u30D5\u30A3\u30FC\u30EB\u30C9\u53C2\u7167\u3092\u5358\u72EC\u3067\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",t)}parseArithOp(){let t=this.advance();switch(t.kind){case"+":return"+";case"-":return"-";case"*":return"*";case"/":return"/";case"%":return"%";default:throw new S("\u7B97\u8853\u6F14\u7B97\u5B50\uFF08+ - * / %\uFF09\u304C\u5FC5\u8981\u3067\u3059",t)}}parseDelete(){this.expect("DELETE"),this.expect("FROM"),this.rejectTempTableDml();let t=this.parseIdentifier(),{appId:n,subtableCode:r}=ft(t,this.prev()),i=this.peek();if(!this.consume("WHERE"))throw new S("DELETE \u6587\u306B\u306F WHERE \u53E5\u304C\u5FC5\u9808\u3067\u3059\uFF08\u5168\u4EF6\u524A\u9664\u3092\u9632\u3050\u305F\u3081\uFF09",i);let o=this.parseWhereExpr(void 0,!0);return r?{type:"DELETE",appId:n,subtableCode:r,where:o}:{type:"DELETE",appId:n,where:o}}parseReorder(){this.expect("REORDER");let t=this.consume("ALL");this.rejectTempTableDml();let n=this.parseIdentifier(),{appId:r,subtableCode:i}=ft(n,this.prev());if(!i)throw new S("REORDER \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB\u306E\u307F\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08\u4F8B: REORDER APP100$\u660E\u7D30 ...\uFF09",this.prev());this.expect("BY");let o=this.parseOrderBy();if(o.length===0)throw new S("REORDER \u306B\u306F BY \u30AD\u30FC\u304C\u5FC5\u8981\u3067\u3059",this.prev());let a=null;if(t){if(this.peek().kind==="WHERE")throw new S("REORDER ALL \u3067\u306F WHERE \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",this.peek())}else{let s=this.peek();if(!this.consume("WHERE"))throw new S("REORDER \u306B\u306F WHERE \u53E5\u304C\u5FC5\u9808\u3067\u3059\uFF08\u8AA4\u64CD\u4F5C\u9632\u6B62\uFF09",s);a=this.parseWhereExpr(void 0,!0)}return{type:"REORDER",appId:r,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,n){let r=this.peek();if(r.kind!==t)throw new S(n??`\u300C${t}\u300D\u304C\u5FC5\u8981\u3067\u3059`,r);return this.advance()}expectKeyword(t,n){return this.expect(t,n)}parseUnsignedInt(){let t=this.expect("NUMBER","\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059"),n=Number(t.value);if(!Number.isInteger(n)||n<0)throw new S("\u6B63\u306E\u6574\u6570\u304C\u5FC5\u8981\u3067\u3059",t);return n}parseIdentifier(){let t=this.peek();if(t.kind==="IDENT"||t.kind==="BIDENT"){if(t.kind==="IDENT"&&t.value.startsWith("#"))throw new S("\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\uFF08# \u3067\u59CB\u307E\u308B\u540D\u524D\uFF09\u306F FROM / JOIN / CREATE / DROP TEMP TABLE \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059",t);return this.advance(),t.value}let n=this.tryParseDigitPrefixedIdentifier();if(n!==null)return n;throw new S("\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u307E\u305F\u306F\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}parseTableName(){let t=this.peek();if(t.kind==="IDENT"||t.kind==="BIDENT")return this.advance(),t.value;let n=this.tryParseDigitPrefixedIdentifier();if(n!==null)return n;throw new S("\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u307E\u305F\u306F\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}tryParseDigitPrefixedIdentifier(){let t=this.peek(),n=this.peekAt(1);return t.kind!=="NUMBER"||!/^\d+$/.test(t.value)||n.kind!=="IDENT"||n.pos!==t.pos+t.value.length?null:(this.advance(),this.advance(),t.value+n.value)}rejectTempTableDml(){let t=this.peek();if(t.kind==="IDENT"&&t.value.startsWith("#"))throw new S(`DML on temp table ${t.value} is not supported.`,t)}parseAliasName(){let t=this.peek();if(t.value.startsWith("#"))throw new S("\u30A8\u30A4\u30EA\u30A2\u30B9\u540D\u306B # \u3067\u59CB\u307E\u308B\u540D\u524D\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",t);if(t.kind==="IDENT"||t.kind==="BIDENT"||Jo.has(t.value.toUpperCase()))return this.advance(),{alias:t.value.toLowerCase(),display:t.value};throw new S("\u30A8\u30A4\u30EA\u30A2\u30B9\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}withAliasDisplay(t,n){return n!==null&&Object.defineProperty(t,"aliasDisplay",{value:n.display,enumerable:!1}),t}parseFieldPath(){let t=this.parseIdentifier();if(this.peek().kind!==".")return t;this.advance();let n=this.parseIdentifier();return`${t}.${n}`}parseColumnFieldRef(){let t=this.parseIdentifier();if(this.peek().kind!==".")return t;if(this.advance(),this.consume("*"))return`${t}.*`;let n=this.parseIdentifier();return`${t}.${n}`}};function Ah(e){let t=e.toUpperCase(),n=new Set(["TEXT","VARCHAR","CHAR","NCHAR","NVARCHAR","STRING"]),r=new Set(["NUMBER","INT","INTEGER","NUMERIC","DECIMAL","FLOAT","DOUBLE","REAL","BIGINT","SMALLINT"]);return n.has(t)?"TEXT":r.has(t)?"NUMBER":null}function ft(e,t){let n=e.match(/^[Aa][Pp][Pp](\d+)(?:\$(.+))?$/);if(!n)throw new S(`\u30C6\u30FC\u30D6\u30EB\u540D\u306F APP + \u6570\u5B57\uFF08\u307E\u305F\u306F APP + \u6570\u5B57 + $\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\uFF09\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: APP100 / APP100$\u660E\u7D30\uFF09\u3002\u300C${e}\u300D\u306F\u7121\u52B9\u3067\u3059`,t);return{appId:Number(n[1]),subtableCode:n[2]??null}}function tn(e,t){let n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){let i=n.next(),o=r.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 Sh(e,t){return e<t?-1:e>t?1:0}function Ud(e){if(e==="")return{band:0};let t=Ae(e);if(t!==null)return{band:2,value:t};let n=Number(e);return n===Number.NEGATIVE_INFINITY?{band:1}:n===Number.POSITIVE_INFINITY?{band:3}:e==="NaN"?{band:4}:{band:5,value:e}}function Th(e,t){let n=Ud(e),r=Ud(t);return n.band!==r.band?n.band<r.band?-1:1:n.band===2&&r.band===2?lo(n.value,r.value):n.band===5&&r.band===5?tn(n.value,r.value):0}function kd(e,t){if(e==="")return{empty:!0,normalizedId:"",display:e};let n=/^\d+$/.test(e)?e:t?/-(\d+)$/.exec(e)?.[1]:void 0;if(n===void 0)throw new Error(`ArgumentError: invalid ${t?"RECORD_NUMBER":"$id"} value: ${e}`);return{empty:!1,normalizedId:n.replace(/^0+(?=\d)/,""),display:e}}function Ih(e,t,n){let r=kd(e,n),i=kd(t,n);if(r.empty||i.empty)return r.empty===i.empty?0:r.empty?-1:1;if(r.normalizedId.length!==i.normalizedId.length)return r.normalizedId.length<i.normalizedId.length?-1:1;let o=tn(r.normalizedId,i.normalizedId);return o!==0?o:tn(r.display,i.display)}function wh(e,t){if(e==="")return[];if(t!=="CHECK_BOX"&&t!=="MULTI_SELECT")return[e];try{let n=JSON.parse(e);return Array.isArray(n)?n.map(r=>String(r??"")):[e]}catch{return[e]}}function xd(e,t){let n=t.optionOrder??new Map,i=[...new Set(wh(e,t.fieldType))].map(o=>{let a=n.get(o);return a===void 0?{knownBand:1,rank:0,label:o}:{knownBand:0,rank:a,label:o}});return i.sort(Fd),i}function Fd(e,t){return e.knownBand!==t.knownBand?e.knownBand<t.knownBand?-1:1:e.rank!==t.rank?e.rank<t.rank?-1:1:tn(e.label,t.label)}function bh(e,t,n){let r=xd(e,n),i=xd(t,n),o=Math.min(r.length,i.length);for(let a=0;a<o;a++){let s=Fd(r[a],i[a]);if(s!==0)return s}return r.length<i.length?-1:r.length>i.length?1:0}function rt(e,t,n){switch(n.compareMode){case"string":return tn(e,t);case"number":return Th(e,t);case"recordNumber":return Ih(e,t,n.fieldType==="RECORD_NUMBER");case"option":return bh(e,t,n);case"unsupported":throw new Error(`ArgumentError: values of type ${n.fieldType} cannot be compared.`)}}function Ot(e,t,n,r=B("string")){let i=rt(t,n,r);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 Gd(e,t){if(t==="least"&&e.includes(""))return"";let n=t==="greatest"?e.filter(o=>o!==""):[...e];if(n.length===0)return"";let r=n.every(o=>!Number.isNaN(Number(o))),i=(o,a)=>{if(r){let s=Ae(o),l=Ae(a),p=s!==null&&l!==null?lo(s,l):Sh(Number(o),Number(a));if(p!==0)return p}return tn(o,a)};return n.reduce((o,a)=>{let s=i(a,o);return t==="greatest"?s>0?a:o:s<0?a:o})}function me(e,t,n={}){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached arithmetic evaluation.`);if(e.type==="NUMBER")return e.value;if(e.type==="FIELD_REF")return Number(Fe(t,e.field));if(e.type==="STRING_FUNC")return Number(ge(e,t,void 0,void 0,n));let r=me(e.left,t,n),i=me(e.right,t,n);switch(e.op){case"+":return r+i;case"-":return r-i;case"*":return r*i;case"/":return i!==0?r/i:NaN;case"%":return i!==0?r%i:NaN}}function be(e,t,n,r,i={}){switch(e.type){case"STRING":return e.value;case"NUMBER":return e.value;case"FIELD":return Fe(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 ge(e,t,n,r,i);case"CASE_WHEN":return Ke(e,t,n,r,i);case"CONCAT_OP":return ge({type:"STRING_FUNC",func:"CONCAT",args:[e.left,e.right]},t,n,r,i);case"SCALAR_ARITH":{let o=Number(be(e.left,t,n,r,i)),a=Number(be(e.right,t,n,r,i));switch(e.op){case"+":return o+a;case"-":return o-a;case"*":return o*a;case"/":return a!==0?o/a:NaN;case"%":return a!==0?o%a:NaN}}}}function Lt(e,t,n,r,i={}){switch(e.type){case"CASE_WHEN":return Vd(e,t,n,r,i);case"SCALAR_ARITH":{let o=Lt(e.left,t,n,r,i),a=Lt(e.right,t,n,r,i);if(o===null||a===null)return null;let s=Number(o),l=Number(a);switch(e.op){case"+":return s+l;case"-":return s-l;case"*":return s*l;case"/":return l!==0?s/l:NaN;case"%":return l!==0?s%l:NaN}}case"CONCAT_OP":{let o=Lt(e.left,t,n,r,i),a=Lt(e.right,t,n,r,i);return`${o??""}${a??""}`}default:return be(e,t,n,r,i)}}function Xo(e,t,n){let r=Math.pow(10,n),i=Math[e](t*r)/r;return n>0?String(parseFloat(i.toFixed(n))):String(i)}function Nh(e){return e>=55296&&e<=56319}function Ch(e){return e>=56320&&e<=57343}function Zo(e,t){return t>0&&t<e.length&&Nh(e.charCodeAt(t-1))&&Ch(e.charCodeAt(t))}function Kd(e,t){if(Number.isNaN(e)||e===Number.NEGATIVE_INFINITY)return 0;if(e===Number.POSITIVE_INFINITY)return t;let n=Math.trunc(e);return n<0?Math.max(t+n,0):Math.min(n,t)}function Sl(e,t){let n=Math.min(Math.max(0,t),e.length);return Zo(e,n)&&(n-=1),e.slice(0,n)}function Ph(e,t){let n=Math.max(0,e.length-t);return Zo(e,n)&&(n+=1),e.slice(n)}function Oh(e,t,n){let r=Kd(t,e.length),i=Kd(n,e.length);return i<=r?"":(Zo(e,r)&&(r+=1),Zo(e,i)&&(i-=1),e.slice(r,Math.max(r,i)))}function Lh(e,t){let n=e.repeat(Math.ceil(t/e.length));return Sl(n,t)}var _h=200,Yr=new Map;function Dh(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 Al(e,t,n=!1){let r=Dh(t)+(n?"g":""),i=`${e}\0${r}`,o=Yr.get(i);if(o!==void 0)return o.lastIndex=0,o;let a;try{a=new RegExp(e,r)}catch(s){let l=s instanceof Error?s.message:String(s);throw new Error(`ArgumentError: invalid regular expression: ${l}`)}if(Yr.size>=_h){let s=Yr.keys().next().value;s!==void 0&&Yr.delete(s)}return Yr.set(i,a),a}function vh(e){if(e.includes("$`")||e.includes("$'"))throw new Error("ArgumentError: REGEXP_REPLACE replacement must not contain $` or $'.")}function Mh(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 Uh(e,t,n,r){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==="<"&&r!==void 0){let l=e.indexOf(">",o+2);if(l>=0){i+=r[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 c=Number(s+l);if(c>=1&&c<=n.length){i+=n[c-1]??"",o+=2;continue}}let p=Number(s);if(p>=1&&p<=n.length){i+=n[p-1]??"",o+=1;continue}}i+="$"}return i}function kh(e,t,n,r){let i=0;return e.replace(t,(o,...a)=>{if(i+=1,i!==r)return o;let s=a[a.length-1],l=typeof s=="object"&&s!==null,p=a.length-(l?3:2),c=a.slice(0,p);return Uh(n,o,c,l?s:void 0)})}function ge(e,t,n,r,i={}){Yo(e.func,e.args);let o=e.args.map(a=>Wh(a,t,n,r,i));switch(e.func){case"UPPER":return(o[0]??"").toUpperCase();case"LOWER":return(o[0]??"").toLowerCase();case"TRIM":return(o[0]??"").trim();case"LTRIM":return(o[0]??"").trimStart();case"RTRIM":return(o[0]??"").trimEnd();case"LENGTH":return String((o[0]??"").length);case"LENGTH_CHAR":return String([...o[0]??""].length);case"SUBSTRING":{let a=o[0]??"",s=Math.max(0,Number(o[1]??"1")-1),l=o[2]!==void 0?Number(o[2]):void 0;return Oh(a,s,l!==void 0?s+l:a.length)}case"LEFT":{let a=o[0],s=Math.trunc(Number(o[1]));return Number.isNaN(s)||s<=0?"":Sl(a,s)}case"RIGHT":{let a=o[0],s=Math.trunc(Number(o[1]));return Number.isNaN(s)||s<=0?"":Ph(a,s)}case"INSTR":return String(o[0].indexOf(o[1])+1);case"LPAD":case"RPAD":{let a=o[0],s=Math.trunc(Number(o[1]));if(Number.isNaN(s)||s<=0)return"";if(a.length>=s)return Sl(a,s);let l=o[2]??" ";if(l==="")return a;let p=Lh(l,s-a.length);return e.func==="LPAD"?p+a:a+p}case"GREATEST":case"LEAST":return Gd(o,e.func==="GREATEST"?"greatest":"least");case"CONCAT":return o.join("");case"REPLACE":{let a=o[0]??"",s=o[1]??"",l=o[2]??"";return s===""?a:a.split(s).join(l)}case"REGEXP_LIKE":return Al(o[1],o[2]??"").test(o[0])?"1":"0";case"REGEXP_REPLACE":{vh(o[2]);let a=Mh(o[4]),s=Al(o[1],o[3]??"",!0);return a===0?o[0].replace(s,o[2]):kh(o[0],s,o[2],a)}case"REGEXP_SUBSTR":return Al(o[1],o[2]??"").exec(o[0])?.[0]??"";case"TRANSLATE":{let a=[...o[1]],s=[...o[2]];if(a.length!==s.length)throw new Error(`ArgumentError: TRANSLATE \u306E from \u3068 to \u306F\u540C\u3058\u6587\u5B57\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08from=${a.length}, to=${s.length}\uFF09`);let l=new Map;return a.forEach((p,c)=>{l.has(p)||l.set(p,s[c])}),[...o[0]].map(p=>l.get(p)??p).join("")}case"COALESCE":return o.find(a=>a!=="")??"";case"NULLIF":return(o[0]??"")===(o[1]??"")?"":o[0]??"";case"ISNULL":return(o[0]??"")!==""?o[0]??"":o[1]??"";case"ROUND":return Xo("round",Number(o[0]??"0"),Number(o[1]??"0"));case"FLOOR":return Xo("floor",Number(o[0]??"0"),Number(o[1]??"0"));case"CEIL":return Xo("ceil",Number(o[0]??"0"),Number(o[1]??"0"));case"TRUNCATE":return Xo("trunc",Number(o[0]),Number(o[1]??"0"));case"CAST":{let a=o[0]??"";if((o[1]??"TEXT")==="NUMBER"){let l=Number(a);return isNaN(l)?a:String(l)}return a}case"FORMAT":{let a=Number(o[0]??"0"),s=o[1]??"0";return Bh(a,s)}case"YEAR":{let a=o[0]??"";return a.length>=4?String(parseInt(a.slice(0,4),10)):""}case"MONTH":{let a=o[0]??"";return a.length>=7?String(parseInt(a.slice(5,7),10)):""}case"DAY":{let a=o[0]??"";return a.length>=10?String(parseInt(a.slice(8,10),10)):""}case"DAYOFWEEK":return Qo(o[0])?String(Tl(o[0])+1):"";case"QUARTER":return Qo(o[0])?String(Math.ceil(Number(o[0].slice(5,7))/3)):"";case"WEEK":return Qo(o[0])?String(Bd(o[0])):"";case"DATE_FORMAT":return Fh(o[0]??"",o[1]??"");case"DATEDIFF":return Gh(o[0]??"",o[1]??"");case"DATE_ADD":return Kh(o[0]??"",Number(o[1]??"0"),(o[2]??"DAY").toUpperCase());case"LAST_DAY":return $h(o[0]);case"ABS":return String(Math.abs(Number(o[0]??"0")));case"MOD":{let a=Number(o[0]??"0"),s=Number(o[1]??"0");return String(s!==0?a%s:NaN)}case"POWER":return String(Math.pow(Number(o[0]??"0"),Number(o[1]??"0")));case"SQRT":return String(Math.sqrt(Number(o[0]??"0")));case"CURRENT_DATE":{let a=i.statementInstant??new Date,s=a.getFullYear(),l=String(a.getMonth()+1).padStart(2,"0"),p=String(a.getDate()).padStart(2,"0");return`${s}-${l}-${p}`}case"CURRENT_TIMESTAMP":return(i.statementInstant??new Date).toISOString()}}function jr(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 ea(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 Qo(e){let t=e.slice(0,10);if(!/^\d{4}-\d{2}-\d{2}$/.test(t))return!1;let n=ea(t);return n.getUTCFullYear()===Number(t.slice(0,4))&&n.getUTCMonth()+1===Number(t.slice(5,7))&&n.getUTCDate()===Number(t.slice(8,10))}function Tl(e){return ea(e).getUTCDay()}function $d(e){let t=ea(e),n=t.getUTCDay()||7;return t.setUTCDate(t.getUTCDate()+4-n),t}function xh(e){return $d(e).getUTCFullYear()}function Bd(e){let t=$d(e),n=t.getUTCFullYear(),r=ea(`${String(n).padStart(4,"0")}-01-04`),i=r.getUTCDay()||7;return r.setUTCDate(r.getUTCDate()+4-i),1+Math.round((t.getTime()-r.getTime())/(7*864e5))}function Fh(e,t){if(!e||e.length<10)return"";let{y:n,mo:r,d:i,h:o,mi:a,sec:s}=jr(e),l=Qo(e);return t.replace(/%[YymcdeHiswavG]/g,p=>{switch(p){case"%Y":return n;case"%y":return n.slice(2);case"%m":return r;case"%c":return String(parseInt(r,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(Tl(e)):"";case"%a":return l?["\u65E5","\u6708","\u706B","\u6C34","\u6728","\u91D1","\u571F"][Tl(e)]:"";case"%v":return l?String(Bd(e)).padStart(2,"0"):"";case"%G":return l?String(xh(e)).padStart(4,"0"):"";default:return p}})}function Gh(e,t){if(e.length<10||t.length<10)return"0";let n=jr(e),r=jr(t),i=Date.UTC(+n.y,+n.mo-1,+n.d),o=Date.UTC(+r.y,+r.mo-1,+r.d);return String(Math.round((i-o)/864e5))}function Kh(e,t,n){if(n!=="YEAR"&&n!=="MONTH"&&n!=="DAY")throw new Error("ArgumentError: DATE_ADD unit must be YEAR, MONTH, or DAY.");if(!e||e.length<10)return e;let{y:r,mo:i,d:o}=jr(e),a=new Date(Date.UTC(+r,+i-1,+o)),s=u=>{let d=a.getUTCDate();a.setUTCDate(1),u();let f=new Date(a.getTime());f.setUTCMonth(f.getUTCMonth()+1),f.setUTCDate(0),a.setUTCDate(Math.min(d,f.getUTCDate()))};switch(n){case"YEAR":s(()=>a.setUTCFullYear(a.getUTCFullYear()+t));break;case"MONTH":s(()=>a.setUTCMonth(a.getUTCMonth()+t));break;case"DAY":a.setUTCDate(a.getUTCDate()+t);break}let l=String(a.getUTCFullYear()).padStart(4,"0"),p=String(a.getUTCMonth()+1).padStart(2,"0"),c=String(a.getUTCDate()).padStart(2,"0");return`${l}-${p}-${c}`}function $h(e){if(!e||e.length<10)return e;let{y:t,mo:n}=jr(e),r=new Date(Date.UTC(+t,+n,0)),i=String(r.getUTCFullYear()).padStart(4,"0"),o=String(r.getUTCMonth()+1).padStart(2,"0"),a=String(r.getUTCDate()).padStart(2,"0");return`${i}-${o}-${a}`}function Bh(e,t){if(/^-?\d+$/.test(t.trim()))return Vh(e,Math.max(0,Number(t)));let n=t.endsWith("%"),r=t.includes(","),i=n?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,c=i.toFixed(p),[u,d=""]=c.split(".");l>0&&(d=d.replace(/0+$/,""));let f=r?u.replace(/\B(?=(\d{3})+(?!\d))/g,","):u,R=d?`${f}.${d}`:f;return n?R+"%":R}function Vh(e,t){let n=e.toFixed(t),[r,i]=n.split("."),o=r.replace(/\B(?=(\d{3})+(?!\d))/g,",");return i?`${o}.${i}`:o}function Wh(e,t,n,r,i={}){return e.type==="AGG_REF"||e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"?String(zr(e,t)):e.type==="NUMBER"?z(e):String(be(e,t,n,r,i))}function zr(e,t){if(e.type==="NUMBER")return e.value;if(e.type==="AGG_REF")return t[de(e.func,e.distinct,e.arg)]??"";if(e.type==="AGG_GROUP_KEY"){let i=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return Number(Fe(t,i))}if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved aggregate arithmetic variable @${e.name}.`);let n=Number(zr(e.left,t)),r=Number(zr(e.right,t));switch(e.op){case"+":return n+r;case"-":return n-r;case"*":return n*r;case"/":return r!==0?n/r:NaN;case"%":return r!==0?n%r:NaN}}function Fe(e,t){let n=e[t];if(n!==void 0)return n;let r=t.indexOf(".");if(r>0){let i=e[t.slice(r+1)];if(i!==void 0)return i}return""}function se(e,t,n,r,i,o={}){switch(e.type){case"BOOLEAN":return e.value;case"BINARY":return Hh(e,t,n,r,i,o);case"NULL_CHECK":return Xh(e,t);case"LOGICAL":return Qh(e,t,n,r,i,o);case"NOT":return!se(e.expr,t,n,r,i,o);case"GROUP":return se(e.expr,t,n,r,i,o);case"EXISTS":{let a=e.resolved;return e.not?!a:a}}}function Hh(e,t,n,r,i,o={}){if(e.op==="KLIKE"||e.op==="NOT_KLIKE"){if(r?.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 a=Xd(e.left,t,n,i,o),s=e.left.type==="FIELD"?n?.(e.left):void 0,l=jh(e.left,s,i);return Yh(e.op,a,e.right,t,s,n,l,i,o)}function Yh(e,t,n,r,i,o,a=B("string"),s,l={}){if(e==="IN"||e==="NOT_IN"){let c=null;if(n.type==="IN_LIST"&&(Jh(n.values),c=new Set(n.values.map(d=>d.type==="NUMBER"?i==="NUMBER"?z(d):String(d.value):d.value))),n.type==="SUBQUERY_IN_LIST"&&(c=n.resolved),c===null)return e==="NOT_IN";let u=qh(t,c,i);return e==="IN"?u:!u}if(e==="LIKE"){let c=Il(n,r,o,void 0,l);return Jd(t,c)}if(e==="NOT_LIKE"){let c=Il(n,r,o,void 0,l);return!Jd(t,c)}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 p=Il(n,r,o,s,l);return Ot(e,t,p,a)}var Wd=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function jh(e,t,n){if(e.type==="FIELD")return n?.(e)??(t?te({fieldType:t}):B("string"));if(e.type==="ARITH_FIELD"||e.type==="AGG_FIELD")return B("number");if(e.type==="FUNC_FIELD")return B(Wd.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 B("number");if(o.type==="STRING_FUNC")return B(Wd.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 n?.(s)??B("string")}return B("string")});if(i.length>0&&i.every(o=>o.compareMode===i[0].compareMode))return i[0]}return e.type==="GROUPING_FIELD"?B("number"):B("string")}var Hd=new Set(["CHECK_BOX","MULTI_SELECT"]),Yd=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE"]),zh=new Set(["CREATOR","MODIFIER"]);function qh(e,t,n){let r=()=>t.has(e);if(n===void 0)return r();if(n==="NUMBER"){let o=B("number");return[...t].some(a=>Ot("=",e,a,o))}let i;if(Hd.has(n)||Yd.has(n)||zh.has(n))try{i=JSON.parse(e)}catch{return r()}else return r();return Hd.has(n)?!Array.isArray(i)||!i.every(o=>typeof o=="string")?r():i.length===0&&t.has("")?!0:i.some(o=>t.has(o)):Yd.has(n)?!Array.isArray(i)||!i.every(jd)?r():i.length===0&&t.has("")?!0:i.some(o=>t.has(o.code)):jd(i)?t.has(i.code):r()}function jd(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&typeof e.code=="string"}function Jh(e){let t=e.find(r=>r.type==="VARIABLE");if(t?.type==="VARIABLE")throw new Error(`ParseError: unresolved batch variable @${t.name}.`);let n=e.find(r=>r.type==="KINTONE_FUNC");if(n?.type==="KINTONE_FUNC")throw new Error(`${n.name}: ${bt}`)}function Xh(e,t){let n=Xd(e.field,t);return e.not?n!=="":n===""}function Qh(e,t,n,r,i,o={}){return e.op==="AND"?se(e.left,t,n,r,i,o)&&se(e.right,t,n,r,i,o):se(e.left,t,n,r,i,o)||se(e.right,t,n,r,i,o)}function Xd(e,t,n,r,i={}){if(e.type==="FUNC_FIELD")return ge(e.expr,t,void 0,void 0,i);if(e.type==="AGG_FIELD")return String(zr(e.expr,t));if(e.type==="ARITH_FIELD")return String(me(e.expr,t,i));if(e.type==="CASE_FIELD")return Ke(e.expr,t,n,r,i);if(e.type==="GROUPING_FIELD")return zn(e.ref,t);if(e.aggregateRef){let a=e.aggregateRef;return Fe(t,de(a.func,a.distinct,a.arg))}let o=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return Fe(t,o)}function Il(e,t,n,r,i={}){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 z(e);case"KINTONE_FUNC":return Zh(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"?Fe(t,e.expr.field):e.expr.type==="STRING_FUNC"?ge(e.expr,t,void 0,void 0,i):String(me(e.expr,t,i));case"CASE_VALUE":return Ke(e.expr,t,n,r,i);case"ARRAY":return e.elements.map(o=>o.value).join(",")}}function Ke(e,t,n,r,i={}){for(let o of e.branches)if(se(o.condition,t,n,void 0,r,i))return qd(o.result,t,n,r,i);return e.elseResult!==null?qd(e.elseResult,t,n,r,i):""}function Vd(e,t,n,r,i={}){for(let o of e.branches)if(se(o.condition,t,n,void 0,r,i))return zd(o.result,t,n,r,i);return e.elseResult===null?null:zd(e.elseResult,t,n,r,i)}function zd(e,t,n,r,i={}){return e.type==="ARRAY"?e.elements.map(o=>o.value).join(","):e.type==="AGG_REF"?t[de(e.func,e.distinct,e.arg)]??"":e.type==="AGG_ARITH"?t[dt(e)]??"":e.type==="FIELD_REF"?t[e.field]??"":e.type==="ARITH"?me(e,t,i):Lt(e,t,n,r,i)}function qd(e,t,n,r,i={}){return e.type==="ARRAY"?e.elements.map(o=>o.value).join(","):e.type==="AGG_REF"?t[de(e.func,e.distinct,e.arg)]??"":e.type==="AGG_ARITH"?t[dt(e)]??"":e.type==="FIELD_REF"?t[e.field]??"":e.type==="ARITH"?String(me(e,t,i)):String(be(e,t,n,r,i))}function Qd(e,t={}){let n=t.statementInstant??new Date;switch(e){case"TODAY":{let r=n.getFullYear(),i=String(n.getMonth()+1).padStart(2,"0"),o=String(n.getDate()).padStart(2,"0");return`${r}-${i}-${o}`}case"NOW":return n.toISOString();case"LOGINUSER":case"PRIMARY_ORGANIZATION":return""}}function Zh(e){throw ie(e)?new Error(`${e}: ${un}`):Bn(e)?new Error(`${e}: ${bt}`):new Error(`InternalError: unexpected KINTONE_FUNC name: ${e}`)}var ta=new Map,eA=200;function Jd(e,t){if(!Dp(t))return e.includes(t);let n=ta.get(t);if(!n){let r="^";for(let i=0;i<t.length;i++){let o=t[i];o==="%"?r+=".*":o==="_"?r+=".":r+=o.replace(/[.+*?^${}()|[\]\\]/g,"\\$&")}r+="$",n=new RegExp(r,"u"),ta.size>=eA&&ta.clear(),ta.set(t,n)}return n.test(e)}function rr(e){return ef(e)}function Zd(e){return ef(e.flatMap(t=>t.rules.map(n=>n.condition)))}function ef(e){let t=[],n=new Set,r=o=>{if(Array.isArray(o)){o.forEach(r);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 Ne("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))r(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 Ne("CHECK \u306B\u96C6\u7D04\u95A2\u6570\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");let s=`${o??""}\0${a}`;n.has(s)||(n.add(s),t.push({tableAlias:o,field:a}))};return r(e),t}function Ne(e){return new S(e,{kind:"EOF",value:"CHECK",pos:0})}function na(e,t,n){let r=[];return e.forEach((i,o)=>{for(let a of i.rules){if(!se(a.condition,t,n))continue;let s=be(a.message,t);r.push({groupIndex:o,message:s==null?"":String(s)});break}}),r}function wl(e){if(Ht(e))throw new ae("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 tA=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),nA=new Set(["CHECK_BOX","MULTI_SELECT"]);function oa(e,t=new Map,n={}){let r=e.values.map(i=>rA(e.fields,i,t,n));return Qr(r,100).map(i=>({app:e.appId,records:i}))}function rA(e,t,n,r){let i={};return e.forEach((o,a)=>{let s=t[a];s.type==="CASE_VALUE"?i[o]={value:nn(s.expr,{},n.get(o),r)}:i[o]={value:_t(s,n.get(o))}}),i}function Jr(e){wl(e.where);let t=Ef(e);return{app:e.appId,query:j(e.where),fields:["$id",...t],totalCount:!1}}function Xr(e,t,n=new Map){let r=iA(e.assignments,n);return Qr(t,100).map(i=>({app:e.appId,records:i.map(o=>({id:o,record:r}))}))}function iA(e,t){let n={};for(let{field:r,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"||(n[r]={value:_t(i,t.get(r))});return n}function of(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 aa(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 bl(e){wl(e.where);let t=new Set;for(let{value:n}of e.assignments)n.type==="ARITH"?af(n,t):n.type==="SCALAR_ARITH"||n.type==="CONCAT_OP"?ir(n,t):n.type==="STRING_FUNC"?Nl(n,t):n.type==="CASE_VALUE"&&sf(n.expr,t);return Ef(e).forEach(n=>t.add(n)),{app:e.appId,query:j(e.where),fields:["$id",...t],totalCount:!1}}function af(e,t){qr(e.left,t),qr(e.right,t)}function qr(e,t){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached DML field collection.`);e.type==="FIELD_REF"?t.add(e.field):e.type==="ARITH"?af(e,t):e.type==="STRING_FUNC"&&Nl(e,t)}function Nl(e,t){for(let n of e.args)oA(n,t)}function oA(e,t){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"){ia(e,t);return}ir(e,t)}function ir(e,t){if(e.type==="FIELD"){t.add(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field);return}if(e.type==="STRING_FUNC"){Nl(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){ir(e.left,t),ir(e.right,t);return}e.type==="CASE_WHEN"&&sf(e,t)}function ia(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&aA(e.arg,t);return}e.type==="AGG_ARITH"&&(ia(e.left,t),ia(e.right,t)),e.type==="AGG_GROUP_KEY"&&t.add(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field)}function aA(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?qr(e,t):ir(e,t)}function tf(e,t){if(e.type!=="ARRAY"){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"){ia(e,t);return}if(e.type==="FIELD_REF"||e.type==="ARITH"){qr(e,t);return}ir(e,t)}}function sf(e,t){for(let n of e.branches)ra(n.condition,t),tf(n.result,t);e.elseResult!==null&&tf(e.elseResult,t)}function ra(e,t){switch(e.type){case"BINARY":e.left.type==="FIELD"?t.add(e.left.field):e.left.type==="ARITH_FIELD"&&qr(e.left.expr,t);break;case"NULL_CHECK":e.field.type==="FIELD"&&t.add(e.field.field);break;case"LOGICAL":ra(e.left,t),ra(e.right,t);break;case"NOT":case"GROUP":ra(e.expr,t);break;case"EXISTS":case"BOOLEAN":break}}function Cl(e,t,n=new Map,r={}){let i=t.map(o=>{let a=Number(o.$id.value),s=lf(o),l={};for(let{field:p,value:c}of e.assignments)l[p]={value:Pl(c,s,n.get(p),o,r)};return{id:a,record:l}});return Qr(i,100).map(o=>({app:e.appId,records:o}))}function Pl(e,t,n,r,i={}){if(e.type==="ARITH")return String(r?Ll(e,r):me(e,t,i));if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP")return String(be(e,t,void 0,void 0,i));if(e.type==="STRING_FUNC")return ge(e,t,void 0,void 0,i);if(e.type==="CASE_VALUE")return nn(e.expr,t,n,i);if(e.type==="SOURCE_FIELD")throw new ae("SOURCE_FIELD \u306F UPDATE ... FROM \u5C02\u7528\u3067\u3059");return _t(e,n)}function sa(e,t,n,r={}){if(e.type==="STRING")return e.value;if(e.type==="NUMBER")return z(e);if(e.type==="ARITH")return String(me(e,t,r));if(e.type==="CASE_VALUE")return Ke(e.expr,t,n,void 0,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 sA=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);function Ol(e,t,n=new Map,r={}){let i=t.map(({target:o,source:a})=>{let s=Number(o.$id?.value);if(!Number.isSafeInteger(s)||s<=0)throw new ae("UPDATE ... FROM \u306E\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u304C\u4E0D\u6B63\u3067\u3059");let l=lf(o),p={};for(let{field:c,value:u}of e.assignments){let d=n.get(c);if(u.type==="SOURCE_FIELD"){if(sA.has(d??""))throw new ae(`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: ${c}\uFF09`);if(!Object.prototype.hasOwnProperty.call(a,u.field))throw new ae(`UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u5217 ${u.field} \u304C\u5B58\u5728\u3057\u307E\u305B\u3093`);let f=a[u.field];if(typeof f!="string")throw new ae(`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")&&f!==""&&!Number.isFinite(Number(f)))throw new ae(`\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9 ${c} \u306B\u5909\u63DB\u3067\u304D\u306A\u3044\u5024\u3067\u3059: ${f}`);p[c]={value:_t({type:"STRING",value:f},d)}}else{if(u.type==="STRING_FUNC")throw new ae("UPDATE ... FROM \u306E SET \u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u3092\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");u.type==="ARITH"?p[c]={value:String(Ll(u,o))}:u.type==="SCALAR_ARITH"||u.type==="CONCAT_OP"?p[c]={value:String(be(u,l,void 0,void 0,r))}:u.type==="CASE_VALUE"?p[c]={value:nn(u.expr,l,d,r)}:p[c]={value:_t(u,d)}}}return{id:s,record:p}});return Qr(i,100).map(o=>({app:e.appId,records:o}))}function lf(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,typeof n.value=="string"?n.value:JSON.stringify(n.value??"")]))}function Ll(e,t){let n=nf(e.left,t),r=nf(e.right,t);switch(e.op){case"+":return n+r;case"-":return n-r;case"*":return n*r;case"/":if(r===0)throw new ae("\u7B97\u8853\u5F0F\u3067\u30BC\u30ED\u9664\u7B97\u304C\u767A\u751F\u3057\u307E\u3057\u305F");return n/r;case"%":if(r===0)throw new ae("\u7B97\u8853\u5F0F\u3067\u30BC\u30ED\u9664\u7B97\u304C\u767A\u751F\u3057\u307E\u3057\u305F");return n%r}}function nf(e,t){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached DML evaluation.`);if(e.type==="NUMBER")return e.value;if(e.type==="ARITH")return Ll(e,t);if(e.type==="STRING_FUNC")throw new ae("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 n=t[e.field]?.value??"",r=Number(n);if(Number.isNaN(r))throw new ae(`\u7B97\u8853\u5F0F\u306E\u30D5\u30A3\u30FC\u30EB\u30C9 "${e.field}" \u306E\u5024 "${n}" \u306F\u6570\u5024\u3067\u306F\u3042\u308A\u307E\u305B\u3093`);return r}function uf(e){return wl(e.where),{app:e.appId,query:j(e.where),fields:["$id"],totalCount:!1}}function cf(e,t){return Qr(t,100).map(n=>({app:e,ids:n}))}function pf(e){return tA.has(e??"")}function lA(e){return nA.has(e??"")}function uA(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 n=new Date(t);return isNaN(n.getTime())?e:n.toISOString().replace(/\.\d{3}Z$/,"Z")}function cA(e){return!e||/^\d{4}-\d{2}-\d{2}$/.test(e)?e:e.replace(/\//g,"-")}function df(e,t){return pf(t)?e===""?[]:e.split(",").map(n=>({code:n.trim()})):lA(t)?e===""?[]:e.split(",").map(n=>n.trim()):t==="DATETIME"?uA(e):t==="DATE"?cA(e):e}function ff(e,t){return pf(t)?e.map(n=>({code:n})):e}function rf(e,t,n,r){if(e.type==="ARRAY")return ff(e.elements.map(i=>i.value),n);if(e.type==="AGG_REF"||e.type==="AGG_ARITH")throw new Error("InternalError: aggregate CASE result reached DML evaluation.");return e.type==="STRING"?df(e.value,n):e.type==="STRING_FUNC"?ge(e,t,void 0,void 0,r):e.type==="FIELD_REF"||e.type==="ARITH"?String(me(e,t,r)):String(be(e,t,void 0,void 0,r))}function Ef(e){if(!e.checkGroups)return[];let t=`app${e.appId}`.toLowerCase();return[...new Set(rr(e.checkGroups).filter(n=>n.tableAlias===null||n.tableAlias.toLowerCase()===t).map(n=>n.field).filter(n=>n!=="$id"))]}function nn(e,t,n,r={}){for(let i of e.branches)if(se(i.condition,t,void 0,void 0,void 0,r))return rf(i.result,t,n,r);return e.elseResult!==null?rf(e.elseResult,t,n,r):""}function _t(e,t){let n=_l(e,t);if(!n.ok)throw new ae(n.message);return n.value}function _l(e,t){try{return{ok:!0,value:pA(e,t)}}catch(n){return{ok:!1,message:n instanceof Error?n.message:String(n)}}}function pA(e,t){switch(e.type){case"VARIABLE":throw new ae(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"VARIABLE_IN_LIST":throw new ae(`\u672A\u89E3\u6C7A\u306E\u914D\u5217\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"STRING":return df(e.value,t);case"NUMBER":return z(e);case"ARRAY":return ff(e.elements.map(n=>n.value),t);case"KINTONE_FUNC":throw new ae(`${e.name}() \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`);case"IN_LIST":throw new ae("IN_LIST \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");case"ARITH_VALUE":throw new ae("\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 ae("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 ae("IN (SELECT ...) \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");case"SCALAR_SUBQUERY":throw new ae("\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 n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}var ae=class extends Error{constructor(t){super(t),this.name="DmlConvertError"}};var Dl=new Set(["CHECK_BOX","MULTI_SELECT"]),dA=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function Zr(e){throw new Error(`ArgumentError: ${e}`)}function Rf(e,t,n){let r=fA(n.fieldType,e.field),i=EA(t,r,e.field),o=new Set(i),a=[],s=new Set,l=new Set;for(let g of e.operations){let y=g.value;y!==""&&(g.kind==="ADD"?(s.has(y)||a.push(y),s.add(y)):l.add(y))}for(let g of s)l.has(g)&&Zr(`APPLY multi-value field ${e.field} has conflicting ADD and REMOVE for ${JSON.stringify(g)}.`);let p=i.filter(g=>!l.has(g)),c=a.filter(g=>!o.has(g)),u=[...p,...c],d=new Set(i.filter(g=>l.has(g))).size,f=new Set,R=new Set,E=e.operations.map(g=>{let y=g.kind==="ADD"?f:R,T=!y.has(g.value);return y.add(g.value),{kind:g.kind,value:g.value,changed:g.value!==""&&T&&(g.kind==="ADD"?!o.has(g.value):o.has(g.value))}}),m=Dl.has(r)?u:u.map(g=>({code:g}));return{field:e.field,fieldType:r,operations:E,postImageValue:m,addedValues:c.length,removedValues:d,changedValues:c.length+d}}function fA(e,t){return Dl.has(e)||dA.has(e)?e:Zr(`APPLY multi-value target ${t} has unsupported type ${e}.`)}function EA(e,t,n){if(!Array.isArray(e))return Zr(`APPLY snapshot for ${n} must be an array.`);let r=e.map((i,o)=>Dl.has(t)?typeof i!="string"?Zr(`APPLY snapshot for ${n} must contain string values (item ${o+1}).`):i:typeof i!="object"||i===null||typeof i.code!="string"?Zr(`APPLY snapshot for ${n} must contain {code: string} values (item ${o+1}).`):i.code);return[...new Set(r.filter(i=>i!==""))]}function J(e){throw new Error(`ArgumentError: ${e}`)}function Ul(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?J("APPLY parent selector must be a single positive $id."):t.right.value}function Dt(e,t){let n=e.applyBlocks;if(!n?.length)return J("APPLY block is missing.");let r=new Map(t.map(s=>[s.code,s])),i=new Map,o=new Map,a=new Map;for(let s of e.assignments)vl(s.field,null,r),RA(s.value,r);for(let s of n){(i.has(s.field)||o.has(s.field))&&J(`APPLY has more than one block for field ${s.field}.`),e.assignments.some(u=>u.field===s.field)&&J(`APPLY target ${s.field} is also assigned by parent SET.`);let l=t.find(u=>u.code===s.field&&!u.inSubtable);if(!l)return s.targetKind==="SUBTABLE"?J(`APPLY target ${s.field} is not a SUBTABLE.`):J(`APPLY target ${s.field} does not exist as a top-level field.`);if(Op(s,l.fieldType),s.targetKind==="MULTI_VALUE"){l.writable===!1&&J(`APPLY target ${s.field} is not writable (${l.fieldType}).`),o.set(s.field,l);continue}let p=l,c=new Map(t.filter(u=>u.inSubtable&&u.subtableCode===s.field).map(u=>[u.code,u]));i.set(s.field,p),a.set(s.field,c);for(let u of s.operations)if(u.kind==="PATCH"){for(let d of u.assignments)vl(d.field,s.field,r,c),Ml(d.value,s.field,r,c);u.selector.kind==="WHERE"&&Ml(u.selector.where,s.field,r,c)}else if(u.kind==="APPEND"){let d=new Set;for(let f of u.fields)d.has(f)&&J(`APPLY APPEND specifies child ${f} more than once.`),d.add(f),vl(f,s.field,r,c)}else u.kind==="REMOVE"&&u.selector.kind==="WHERE"&&Ml(u.selector.where,s.field,r,c)}return{targetTables:i,targetMultiValueFields:o,childrenByTable:a,fieldsByCode:r}}function RA(e,t){ei(e,n=>{if(n==="$id"||n==="$revision")return;let r=t.get(n);(!r||r.inSubtable)&&J(`APPLY parent reference ${n} is not a top-level field.`),r.fieldType==="FILE"&&J(`APPLY parent FILE reference ${n} is not supported.`)})}function vl(e,t,n,r){(e.startsWith("_")||e.startsWith("$"))&&J(`APPLY assignment target ${e} is a system field.`);let i=t===null?[...n.values()].find(o=>o.code===e&&!o.inSubtable):r?.get(e);if(!i){let o=n.get(e);t!==null&&o?.inSubtable&&J(`APPLY child ${e} does not belong to subtable ${t}.`),J(`APPLY ${t===null?"parent field":"child"} ${e} does not exist.`)}(i.fieldType==="SUBTABLE"||i.fieldType==="FILE"||i.writable===!1)&&J(`APPLY assignment target ${e} is not writable (${i.fieldType}).`)}function Ml(e,t,n,r){ei(e,i=>{if(i==="_rid"||i==="_idx"||r.has(i))return;n.get(i)?.inSubtable&&J(`APPLY child reference ${i} does not belong to subtable ${t}.`),J(`APPLY child reference ${i} does not exist in subtable ${t}.`)})}function la(e,t){let n=Dt(e,t),r=new Set(["$id","$revision"]);for(let i of t)i.inSubtable||i.fieldType==="FILE"||r.add(i.code);for(let i of n.targetTables.values())r.add(i.code);for(let i of e.assignments)ei(i.value,o=>{let a=n.fieldsByCode.get(o);!a?.inSubtable&&a?.fieldType!=="FILE"&&r.add(o)});return[...r]}function ua(e,t){let n={_rid:e.id??"",_idx:String(t)};for(let[r,i]of Object.entries(e.value??{}))n[r]=Sf(i?.value);return n}function gf(e){let{statement:t,snapshot:n,fieldInfos:r}=e,i=e.metadata??Dt(t,r),o=Fl(n.$id?.value,"APPLY snapshot $id"),a=Ul(t);return o!==a&&J(`APPLY snapshot $id ${o} does not match requested $id ${a}.`),hf(t,n,i,o,e.evaluationContext)}function yf(e,t,n,r=Dt(e,n),i={}){let o=new Set;return t.map(a=>{let s=Fl(a.$id?.value,"APPLY snapshot $id");return o.has(s)&&J(`APPLY snapshots contain duplicate parentId ${s}.`),o.add(s),hf(e,a,r,s,i)})}function hf(e,t,n,r,i={}){let o=Fl(t.$revision?.value,"APPLY snapshot $revision"),a=[],s=[];for(let u of e.applyBlocks){if(u.targetKind==="MULTI_VALUE"){let N=n.targetMultiValueFields.get(u.field);N||J(`APPLY multi-value metadata for ${u.field} is missing.`),s.push(Rf(u,t[u.field]?.value,N));continue}let d=n.childrenByTable.get(u.field),f=SA(t,u.field),R=new Set;for(let N of f)N.id||J(`APPLY snapshot for ${u.field} contains a row without _rid.`),R.has(N.id)&&J(`APPLY snapshot for ${u.field} contains duplicate _rid ${N.id}.`),R.add(N.id);let E=N=>N.field==="_rid"?"SINGLE_LINE_TEXT":N.field==="_idx"?"NUMBER":d.get(N.field)?.fieldType,m=[],g=[],y=[],T=new Set,h=new Set,I=new Set,C=u.operations.some(N=>N.kind==="REMOVE");for(let[N,_]of u.operations.entries()){if(_.kind==="APPEND"){let D=kl(_,d,u.field,i);y.push({kind:"APPEND",addedRows:D.length}),g.push(...D);continue}if(_.kind==="REMOVE"){let D=yA(_,f,E,u.field,i);_.expectRows&&mf(_.expectRows,D.length,r,u.field,N,_.kind),y.push({kind:"REMOVE",removedRows:D.length});for(let A of D){let w=f[A].id;h.has(A)&&J(`APPLY row ${w} is selected by both PATCH and REMOVE.`),I.has(A)&&J(`APPLY removes row ${w} more than once.`),I.add(A)}continue}if(_.kind!=="PATCH")continue;let b=gA(_,f,E,u.field,i);_.expectRows&&mf(_.expectRows,b.length,r,u.field,N,_.kind),y.push({kind:"PATCH",matchedRows:b.length,changedRows:b.length});for(let D of b){let A=f[D];I.has(D)&&J(`APPLY row ${A.id} is selected by both PATCH and REMOVE.`),h.add(D);let w=ua(A,D);for(let x of _.assignments){let O=`${A.id}\0${x.field}`;T.has(O)&&J(`APPLY patches cell ${A.id}.${x.field} more than once.`),T.add(O),m.push({rowIndex:D,field:x.field,value:sa(x.value,w,E,i)})}}}let v=new Map;for(let N of m){let _=v.get(N.rowIndex)??{};_[N.field]={value:N.value},v.set(N.rowIndex,_)}let U=[...f.flatMap((N,_)=>I.has(_)?[]:[{id:N.id,value:{...N.value,...v.get(_)??{}}}]),...g],M={table:u.field,operations:y,changedSubtableRows:v.size+I.size+g.length,deletedRows:I.size,snapshotRowIds:f.map(N=>N.id),postImageRows:U};C?a.push({...M,payloadShape:"FULL_SURVIVORS",removedRowIds:f.flatMap((N,_)=>I.has(_)?[N.id]:[]),payloadRows:U.map(N=>({...N.id===void 0?{}:{id:N.id},value:N.value}))}):a.push({...M,payloadShape:"PATCH_ONLY",payloadRows:[...f.map((N,_)=>{let b=v.get(_);return b?{id:N.id,value:b}:{id:N.id}}),...g.map(N=>({value:N.value}))]})}let l=TA(t),p={};for(let u of e.assignments){let d=n.fieldsByCode.get(u.field)?.fieldType;p[u.field]={value:Pl(u.value,l,d,t,i)}}let c={...t};Object.assign(c,p);for(let u of a)c[u.table]={value:u.postImageRows};for(let u of s)c[u.field]={value:u.postImageValue};return{app:e.appId,parentId:r,revision:o,parentRows:1,changedSubtableRows:a.reduce((u,d)=>u+d.changedSubtableRows,0),parentValues:p,postImage:c,tables:a,multiValues:s}}function mf(e,t,n,r,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}`;J(`APPLY EXPECT ROWS mismatch for parent $id ${n}, table ${r}, operation ${i+1} (${o}): expected ${s}, actual ${t}.`)}function ca(e,t){let n=e.tables.map(o=>{let a=t[o.table]?.value;if(!Array.isArray(a)||a.length!==o.postImageRows.length)return J(`APPLY normalized post-image for ${o.table} has an unexpected row count.`);let s=o.payloadRows.map((l,p)=>{let c=a[p];return c?.value?l.id===void 0?{value:c.value}:l.value===void 0?{id:l.id}:{id:l.id,value:Object.fromEntries(Object.keys(l.value).map(u=>[u,c.value[u]]))}:J(`APPLY normalized post-image for ${o.table} row ${p+1} has no value.`)});return{...o,payloadRows:s,postImageRows:a}}),r=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}:J(`APPLY normalized post-image for ${o.field} is not an array.`)});return{...e,parentValues:r,tables:n,multiValues:i,postImage:t}}function kl(e,t,n,r={}){return e.values.map(i=>({value:mA(e,i,t,n,r)}))}function mA(e,t,n,r,i){if(t.length!==e.fields.length)return J(`APPLY APPEND for ${r} has ${t.length} values for ${e.fields.length} fields.`);let o=new Map(e.fields.map((s,l)=>[s,t[l]])),a={};for(let s of n.values()){if(s.fieldType==="FILE"||s.writable===!1)continue;let l=o.get(s.code);a[s.code]={value:l===void 0?xl(s):l.type==="CASE_VALUE"?nn(l.expr,{},s.fieldType,i):_t(l,s.fieldType)}}return a}function xl(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 gA(e,t,n,r,i={}){return Af(e.selector,t,n,r,i)}function yA(e,t,n,r,i={}){return Af(e.selector,t,n,r,i)}function Af(e,t,n,r,i={}){if(e.kind==="ALL_ROWS")return t.map((p,c)=>c);let o=e.where,a=t.flatMap((p,c)=>se(o,ua(p,c),n,void 0,void 0,i)?[c]:[]),s=hA(o);s!==null&&a.length===0&&J(`APPLY _rid ${s} does not exist in snapshot table ${r}.`);let l=AA(o);return l!==null&&a.length===0&&J(`APPLY _idx ${l} does not exist in snapshot table ${r}.`),a}function hA(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 AA(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 SA(e,t){let n=e[t]?.value;return Array.isArray(n)?n.map(r=>{let i=r;return{id:typeof i.id=="string"?i.id:"",value:i.value&&typeof i.value=="object"?i.value:{}}}):J(`APPLY snapshot field ${t} is not a subtable value.`)}function Fl(e,t){let n=Number(e);return(!Number.isSafeInteger(n)||n<=0)&&J(`${t} must be a positive integer.`),n}function TA(e){let t={};for(let[n,r]of Object.entries(e))t[n]=Sf(r?.value);return t}function Sf(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 ei(e,t){if(Array.isArray(e)){e.forEach(r=>ei(r,t));return}if(e===null||typeof e!="object")return;let n=e;(n.type==="FIELD"||n.type==="FIELD_REF")&&typeof n.field=="string"&&t(n.field);for(let r of Object.values(n))ei(r,t)}function fe(e){throw new Error(`ArgumentError: ${e}`)}function da(e){let t=Number(e.$revision?.value);return!Number.isSafeInteger(t)||t<=0?fe("APPLY snapshot $revision must be a positive integer."):t}function ti(e){if(!Number.isSafeInteger(e.parentId)||e.parentId<=0)return fe("APPLY plan parentId must be a positive integer.");if(!Number.isSafeInteger(e.revision)||e.revision<=0)return fe("APPLY plan revision must be a positive integer.");let t={...e.parentValues},n=new Set(Object.keys(t));for(let i of e.multiValues)n.has(i.field)&&fe(`APPLY plan contains duplicate top-level field ${i.field}.`),n.add(i.field),t[i.field]={value:i.postImageValue};let r=new Set;for(let i of e.tables)n.has(i.table)&&fe(`APPLY plan contains duplicate top-level field ${i.table}.`),r.has(i.table)&&fe(`APPLY plan contains duplicate table ${i.table}.`),r.add(i.table),n.add(i.table),IA(i),t[i.table]={value:i.payloadRows};return{app:e.app,records:[{id:e.parentId,revision:e.revision,record:t}]}}function Tf(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 fe("prepared APPLY plans and records must have the same positive-app parent count.");let n=[];for(let r=0;r<e.records.length;r+=100)n.push({app:t,records:e.records.slice(r,r+100)});return n}function IA(e){let t=Gl(e.snapshotRowIds,`${e.table} snapshot`),n=e.payloadRows.flatMap(c=>c.id===void 0?[]:[c.id]);for(let c of e.payloadRows)c.id===void 0&&c.value===void 0&&fe(`APPLY ${e.payloadShape} table ${e.table} contains an APPEND row without value.`);if(Gl(n,`${e.table} payload`),e.payloadShape==="PATCH_ONLY"){e.operations.some(d=>d.kind==="REMOVE")&&fe(`APPLY PATCH_ONLY table ${e.table} cannot contain REMOVE.`);let c=e.payloadRows.slice(0,t.length).map(d=>d.id??"");pa(t,c,`APPLY PATCH_ONLY table ${e.table} must retain every snapshot row id in order.`),e.payloadRows.slice(t.length).some(d=>d.id!==void 0)&&fe(`APPLY PATCH_ONLY table ${e.table} must place every APPEND row after snapshot rows.`);let u=e.postImageRows.slice(0,t.length).map(d=>d.id??"");pa(t,u,`APPLY PATCH_ONLY table ${e.table} post-image must retain every snapshot row id in order.`),e.postImageRows.slice(t.length).some(d=>d.id!==void 0)&&fe(`APPLY PATCH_ONLY table ${e.table} post-image must place every APPEND row after snapshot rows.`);return}e.operations.some(c=>c.kind==="REMOVE")||fe(`APPLY FULL_SURVIVORS table ${e.table} requires a REMOVE operation.`);let r=Gl(e.removedRowIds,`${e.table} removed`);e.deletedRows!==r.length&&fe(`APPLY FULL_SURVIVORS table ${e.table} deleted row count does not match removed ids.`),e.payloadRows.length!==e.postImageRows.length&&fe(`APPLY FULL_SURVIVORS table ${e.table} payload/post-image row counts must match.`);let i=e.postImageRows.flatMap(c=>c.id===void 0?[]:[c.id]),o=new Set(r),a=new Set(i);for(let c of r)a.has(c)&&fe(`APPLY FULL_SURVIVORS table ${e.table} has intersecting survivor/removed id ${c}.`);let s=t.filter(c=>!o.has(c));pa(s,i,`APPLY FULL_SURVIVORS table ${e.table} must retain every survivor in snapshot order.`);let l=e.payloadRows.slice(0,i.length).map(c=>c.id??"");pa(i,l,`APPLY FULL_SURVIVORS table ${e.table} payload must enumerate every survivor in order.`),(e.payloadRows.slice(i.length).some(c=>c.id!==void 0)||e.postImageRows.slice(i.length).some(c=>c.id!==void 0))&&fe(`APPLY FULL_SURVIVORS table ${e.table} must place every APPEND row after survivors.`),e.payloadRows.some(c=>c.value===void 0)&&fe(`APPLY FULL_SURVIVORS table ${e.table} requires values for every survivor.`),e.payloadRows.some((c,u)=>!Kl(c.value,e.postImageRows[u]?.value))&&fe(`APPLY FULL_SURVIVORS table ${e.table} payload must contain every post-image child value.`);let p=new Set([...i,...r]);(p.size!==t.length||t.some(c=>!p.has(c)))&&fe(`APPLY FULL_SURVIVORS table ${e.table} does not partition every snapshot row.`)}function Gl(e,t){let n=[...e],r=new Set;for(let i of n)i||fe(`APPLY ${t} contains an empty row id.`),r.has(i)&&fe(`APPLY ${t} contains duplicate row id ${i}.`),r.add(i);return n}function pa(e,t,n){(e.length!==t.length||e.some((r,i)=>r!==t[i]))&&fe(n)}function Kl(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)=>Kl(a,t[s]));if(e===null||t===null||typeof e!="object"||typeof t!="object")return!1;let n=e,r=t,i=Object.keys(n),o=Object.keys(r);return i.length===o.length&&i.every(a=>Object.prototype.hasOwnProperty.call(r,a)&&Kl(n[a],r[a]))}function If(e,t,n,r){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<n||i>r)throw new Error(`SettingsError: numberPrecision.${t} must be between ${n} and ${r}.`);return i}function wf(e){let t=e.numberPrecision;if(t==null||typeof t!="object")throw new Error("SettingsError: numberPrecision is missing from app settings.");let n=If(t.digits,"digits",1,30),r=If(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:n,decimalPlaces:r,roundingMode:i}}function bf(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 wA=new Set(["CHECK_BOX","MULTI_SELECT"]),bA=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT"]);function $e(e,t,n){if(t.fieldType==="DATE"||t.fieldType==="TIME"||t.fieldType==="DATETIME"){let i=NA(e);if(i!==""&&!CA(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 r;try{r=ni(e,t.fieldType)}catch(i){let o=i instanceof Error?i.message:String(i);return{ok:!1,code:PA(t.fieldType),message:o}}if(t.required&&fa(r))return{ok:!1,code:"ERR_REQUIRED",message:`${t.code} \u306F\u5FC5\u9808\u3067\u3059`};if(!fa(r)&&t.fieldType==="NUMBER"){let i=String(r),o=Ae(i);if(o===null)return{ok:!1,code:"ERR_TYPE_NUMBER",message:`${t.code} \u306F\u6570\u5024\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`};if(t.minValue!=null&&uo(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&&uo(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(n!==void 0){let{integerDigits:a}=bf(o),s=n.digits-n.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=${n.digits}, decimalPlaces=${n.decimalPlaces})`}}}if(!fa(r)&&(t.fieldType==="DATE"||t.fieldType==="TIME"||t.fieldType==="DATETIME")&&!Rn(String(r),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 r=="string"){let i=r.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!fa(r)&&bA.has(t.fieldType)&&t.optionOrder&&(Array.isArray(r)?r.map(String):[String(r)]).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:r}}function NA(e){return e==null?"":Ea(e)&&e.type==="NUMBER"?z(e):Ea(e)&&e.type==="STRING"?e.value:typeof e=="string"||typeof e=="number"?String(e):""}function CA(e,t){if(t==="DATE")return Rn(e.replace(/\//g,"-"),"DATE");if(t==="TIME")return Rn(e,"TIME");let n=e.replace(/\//g,"-").replace(" ","T");return/T\d{2}:\d{2}$/.test(n)&&(n+=":00"),/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$/.test(n)?Rn(n.slice(0,10),"DATE")&&Rn(n.slice(11),"TIME"):Rn(n,"DATETIME")}function ni(e,t){if(Ea(e)){let r=_l(e,t);if(!r.ok)throw new Error(r.message);return r.value}if(Array.isArray(e))return e.map(r=>typeof r=="object"&&r!==null&&"code"in r?String(r.code):String(r));let n=e==null?"":String(e);if(wA.has(t)){if(n==="")return[];try{let r=JSON.parse(n);if(Array.isArray(r))return r.map(String)}catch{}return n.split(",").map(r=>r.trim())}return n}function Ea(e){return typeof e=="object"&&e!==null&&typeof e.type=="string"}function mn(e){if(e==null||e==="")return!0;if(Array.isArray(e))return e.length===0;if(Ea(e)){if(e.type==="STRING")return e.value==="";if(e.type==="ARRAY")return e.elements.length===0}return!1}function fa(e){return e===""||Array.isArray(e)&&e.length===0}function PA(e){return e==="NUMBER"?"ERR_TYPE_NUMBER":"ERR_TYPE_DATE"}function Rn(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 n=t==="DATE"?e:e.slice(0,10),r=/^(\d{4})-(\d{2})-(\d{2})$/.exec(n);if(!r)return!1;let i=Number(r[1]),o=Number(r[2]),a=Number(r[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)&&Rn(l,"TIME")}var or=["$err_statement","$err_operation","$err_row","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id"];function $l(e,t,n){let r=new Map(n.map(i=>[i.code,i]));for(let i of e)if(i.mode==="update"){i.record??={};for(let o of t){if(!i.payload.has(o))continue;let a=i.payload.get(o),s=r.get(o).fieldType,l=["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(s)&&Array.isArray(a)&&a.every(c=>typeof c=="object"&&c!==null&&"code"in c),p=a;try{p=ni(a,s)}catch{}i.record[o]={value:l?a:p}}}}function Bl(e,t,n,r,i,o,a,s=[],l=!0,p=!0,c={}){let u=new Map(i.map(m=>[m.code,m])),d=[],f=new Set,R=[];c.validateUpdateBuiltIns===!1&&$l(e,r,i);let E;for(let m of e){m.record??={};let g=p?[...m.preErrors]:[],y=[],T=[],h=m.mode==="create"||c.validateUpdateBuiltIns!==!1;for(let P of r){if(!m.payload.has(P))continue;let U=m.payload.get(P),M=u.get(P).fieldType,N=["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(M)&&Array.isArray(U)&&U.every(b=>typeof b=="object"&&b!==null&&"code"in b);if(!h)continue;let _=$e(U,u.get(P),a);_.ok?m.record[P]={value:N?U:_.value}:y.push({field:P,code:_.code,message:_.message})}if(l&&m.mode==="create")for(let P of i){if(P.inSubtable||m.payload.has(P.code))continue;if(mn(P.defaultValue)){let M=$e("",P,a);M.ok?P.required&&y.push({field:P.code,code:"ERR_REQUIRED",message:`${P.code} \u306F\u5FC5\u9808\u3067\u3059`}):y.push({field:P.code,code:M.code,message:M.message})}else{let M=$e(P.defaultValue,P,a);M.ok||y.push({field:P.code,code:M.code,message:`\u65E2\u5B9A\u5024: ${M.message}`})}}if(s.length>0){let P=m.evaluationRow??Object.fromEntries([...m.payload].map(([N,_])=>[N,Et(_)])),U=m.evaluationFieldTypes,M=N=>{let _=N.tableAlias?`${N.tableAlias}.${N.field}`:N.field;return U?.get(_)??U?.get(N.field)};try{for(let N of na(s,P,M))T.push({field:"",code:"ERR_CHECK",message:N.message})}catch(N){E??=N}}let I=P=>P.map(U=>{let M={};for(let N of n)M[N]=Et(m.payload.get(N));return M.$err_statement=String(o),M.$err_operation=t,M.$err_row=String(m.rowNumber),M.$err_field=U.field,M.$err_code=U.code,M.$err_message=U.message,M.$err_value="",M.$err_subtable="",M.$err_subrow="",M.$err_subrow_id="",M}),C={rowNumber:m.rowNumber,preErrors:I(g),builtInErrors:I(y),checkErrors:I(T)};R.push(C);let v=[...C.preErrors,...C.builtInErrors,...C.checkErrors];v.length>0&&f.add(m.rowNumber),d.push(...v)}if(E!==void 0)throw E;return{errors:d,invalidRows:f.size,invalidRowNumbers:f,candidateResults:R}}function Et(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(n=>n.value)??[])}return Array.isArray(e)?JSON.stringify(e):String(e)}var Vl=["required","length","range","choice"];function Wl(e){return[...e.required===!0?["required"]:[],...e.minLength!==void 0||e.maxLength!==void 0?["length"]:[],...e.minValue!==void 0||e.maxValue!==void 0?["range"]:[],...e.optionOrder!==void 0?["choice"]:[]]}function Hl(e){let t=e.filter(r=>!r.inSubtable),n=new Map;for(let r of e){if(!r.inSubtable||!r.subtableCode)continue;let i=n.get(r.subtableCode)??[];i.push(r),n.set(r.subtableCode,i)}return{topLevel:t,topByCode:new Map(t.map(r=>[r.code,r])),childrenByTable:n}}function OA(e){return Wl(e).length>0}function LA(e){return e.fieldType==="NUMBER"||OA(e)}function Ra(e,t,n){return{subtable:e,subrow:t+1,subrowId:String(n.id??"")}}function Yl(e,t){let{topByCode:n,childrenByTable:r}=Hl(t),i=LA;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 c=p?`${p}\0${l.code}`:l.code;if(a.has(c))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(c),!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 u=r.get(l.subtableCode);if(!u)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 d of l.children){let f=u.find(R=>R.code===d);if(!f){let R=[...r.entries()].some(([E,m])=>E!==l.subtableCode&&m.some(g=>g.code===d));throw new Error(R?`ArgumentError: VALIDATE \u306E\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${d} \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 ${d} \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 c=n.get(p);if(c?.fieldType==="SUBTABLE"){let u=(r.get(p)??[]).filter(i);if(u.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`);u.forEach(d=>s(d,p));continue}if(c){s(c);continue}throw[...r.values()].some(u=>u.some(d=>d.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 ri(e,t){return mn(e)?"":Et(ni(e,t))}var _A=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]),ii=or;function Rt(e,t=["$id"]){let n=Hl(e),r=n.topLevel.filter(o=>o.fieldType!=="SUBTABLE"&&o.fieldType!=="FILE"&&!_A.has(o.fieldType)),i=new Map;for(let[o,a]of n.childrenByTable)i.set(o,a.filter(s=>s.fieldType!=="FILE"));return{topLevel:r,subtables:i,payloadFields:["$id",...new Set(t.filter(o=>o!=="$id"))]}}function gn(e,t){if(t.topLevel.some(n=>n.fieldType==="NUMBER"&&n.code in e))return!0;for(let[n,r]of t.subtables){if(!r.some(o=>o.fieldType==="NUMBER"))continue;let i=e[n]?.value;if(Array.isArray(i))for(let o of i){let a=o?.value;if(r.some(s=>s.fieldType==="NUMBER"&&!!a&&s.code in a))return!0}}return!1}function yn(e,t,n,r,i=1,o="UPDATE"){let a=DA(e),s=[],l=new Set,p=[...t.payloadFields,...ii],c=Et(e.$id?.value),u=(d,f,R,E)=>{l.add(i);let m={};for(let g of t.payloadFields)m[g]=g==="$id"?c:Et(e[g]?.value);m.$err_statement=String(r),m.$err_operation=o,m.$err_row=String(i),m.$err_field=d.code,m.$err_code=R.code,m.$err_message=R.message,m.$err_value=ri(f,d.fieldType),m.$err_subtable=E?.subtable??"",m.$err_subrow=E?String(E.subrow):"",m.$err_subrow_id=E?.subrowId??"",s.push(m)};for(let d of t.topLevel){let f=e[d.code]?.value,R=$e(f,d,n);R.ok?a[d.code]={value:Nf(f,d.fieldType,R.value)}:u(d,f,R)}for(let[d,f]of t.subtables){let R=e[d]?.value;if(!Array.isArray(R))continue;let E=a[d]?.value;for(let m=0;m<R.length;m++){let g=R[m],y=E[m];for(let T of f){let h=g.value?.[T.code]?.value,I=$e(h,T,n);I.ok?(y.value??={},y.value[T.code]={value:Nf(h,T.fieldType,I.value)}):u(T,h,I,Ra(d,m,g))}}}return{normalizedRecord:a,errors:s,columns:p,invalidRows:l.size,invalidRowNumbers:l,errorCount:s.length}}function Nf(e,t,n){return["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(t)&&Array.isArray(e)&&e.every(r=>typeof r=="object"&&r!==null&&"code"in r)?e:n}function DA(e){let t={};for(let[n,r]of Object.entries(e)){let i=r?.value;t[n]={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 ma(e){let{statement:t,snapshots:n,fieldInfos:r,metadata:i,dmlMaxRows:o,dmlMaxSubtableRows:a,statementNumber:s=1}=e;Cf(o,"dmlMaxRows"),Cf(a,"dmlMaxSubtableRows");for(let T of n)da(T);let l=yf(t,n,r,i),p=Rt(r,t.assignments.map(T=>T.field)),c=l.some(T=>gn(T.postImage,p));if(c&&!e.loadNumberPrecision)throw new Error("InternalError: APPLY number precision loader is required for NUMBER post-images.");let u=c?await e.loadNumberPrecision():void 0,d=l.map((T,h)=>yn(T.postImage,p,u,s,e.parentRowNumbers?.[h]??h+1));if(!t.validateOnly){let T=d.flatMap(h=>h.errors);if(T.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:d[0]?.columns??[],errors:T})}`)}let f=l.length,R=l.reduce((T,h)=>T+h.changedSubtableRows,0),E=f>o||R>a;if(!t.validateOnly&&f>o)throw new Error(`ArgumentError: APPLY parent rows (${f}) exceed dmlMaxRows (${o}).`);if(!t.validateOnly&&R>a)throw new Error(`ArgumentError: APPLY changed subtable rows (${R}) exceed dmlMaxSubtableRows (${a}).`);let m=l.map((T,h)=>ca(T,d[h].normalizedRecord)),g=m.flatMap(T=>ti(T).records),y=d.map(T=>({errors:T.errors,columns:T.columns,invalidRows:T.invalidRows,errorCount:T.errorCount}));return Pf({plans:m,records:g,validations:y,guards:{revisionRequired:!0,parentRows:f,dmlMaxRows:o,subtableRows:R,dmlMaxSubtableRows:a,wouldExceed:E}})}function Cf(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function Pf(e,t=new Set){if(e===null||typeof e!="object"||t.has(e))return e;t.add(e);for(let n of Object.values(e))Pf(n,t);return Object.freeze(e)}var jl=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function ga(e,t){if(new Set(e.fields).size!==e.fields.length)return mt("DML target fields contain duplicates.");let n=new Map(t.map(o=>[o.code,o]));for(let o of e.fields)Of(o,null,n);let r=new Map,i=new Map;for(let o of e.applyBlocks??[]){if(r.has(o.field))return mt(`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 mt(`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]));r.set(o.field,a),i.set(o.field,s);for(let l of o.operations){if(l.kind!=="APPEND")return mt(`APPLY INSERT supports APPEND only (${l.kind}).`);let p=new Set;for(let c of l.fields){if(p.has(c))return mt(`APPLY APPEND specifies child ${c} more than once.`);p.add(c),Of(c,o.field,n,s)}for(let c of l.values)if(c.length!==l.fields.length)return mt(`APPLY APPEND for ${o.field} has ${c.length} values for ${l.fields.length} fields.`)}}return{targetTables:r,targetMultiValueFields:new Map,childrenByTable:i,fieldsByCode:n}}function vA(e,t,n=ga(e,t),r){let i=new Map(t.map(s=>[s.code,s.fieldType])),o=oa(e,i).flatMap(s=>s.records);if(r&&r.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=n.childrenByTable.get(s.field),p=s.operations.flatMap(c=>kl(c,l,s.field));return{table:s.field,rows:p,addedRows:p.length}});return o.map((s,l)=>{let p={};for(let u of t)u.inSubtable||u.fieldType==="SUBTABLE"||u.fieldType==="FILE"||u.writable===!1||jl.has(u.fieldType)||(p[u.code]=s[u.code]??{value:xl(u)});let c={...s};for(let u of a){let d=u.rows.map(f=>({value:f.value}));p[u.table]={value:d},c[u.table]={value:d}}return{parentRowNumber:r?.[l]??l+1,tables:a,postImage:p,record:c}})}async function oi(e){let{statement:t,fieldInfos:n,dmlMaxRows:r,dmlMaxSubtableRows:i,statementNumber:o=1}=e;Lf(r,"dmlMaxRows"),Lf(i,"dmlMaxSubtableRows");let a=e.metadata??ga(t,n),s=vA(t,n,a,e.parentRowNumbers),l=n.filter(h=>h.fieldType==="SUBTABLE"||h.fieldType!=="FILE"&&h.writable!==!1&&!jl.has(h.fieldType)),p=Rt(l,t.fields),c=s.some(h=>gn(h.postImage,p));if(c&&!e.loadNumberPrecision)throw new Error("InternalError: APPLY number precision loader is required for NUMBER post-images.");let u=c?await e.loadNumberPrecision():void 0,d=s.map(h=>yn(h.postImage,p,u,o,h.parentRowNumber,"INSERT"));if(!t.validateOnly){let h=d.flatMap(I=>I.errors);if(h.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:d[0]?.columns??[],errors:h})}`)}let f=s.length,R=s.reduce((h,I)=>h+I.tables.reduce((C,v)=>C+v.addedRows,0),0),E=f>r||R>i;if(!t.validateOnly&&f>r)throw new Error(`ArgumentError: APPLY parent rows (${f}) exceed dmlMaxRows (${r}).`);if(!t.validateOnly&&R>i)throw new Error(`ArgumentError: APPLY changed subtable rows (${R}) exceed dmlMaxSubtableRows (${i}).`);let m=s.map((h,I)=>{let C=d[I].normalizedRecord,v={};for(let P of t.fields)v[P]=C[P];for(let P of h.tables){let U=C[P.table]?.value;v[P.table]={value:P.rows.map((M,N)=>({value:Object.fromEntries(Object.keys(M.value).map(_=>[_,U[N]?.value?.[_]??M.value[_]]))}))}}return{...h,postImage:C,record:v}}),g=m.map(h=>h.record),y=[];for(let h=0;h<g.length;h+=100)y.push({app:t.appId,records:g.slice(h,h+100)});let T=d.map(h=>({errors:h.errors,columns:h.columns,invalidRows:h.invalidRows,errorCount:h.errorCount}));return _f({applyBlocks:t.applyBlocks??[],candidates:m,records:g,batches:y,validations:T,guards:{revisionRequired:!1,parentRows:f,dmlMaxRows:r,subtableRows:R,dmlMaxSubtableRows:i,wouldExceed:E}})}function Of(e,t,n,r){if(e.startsWith("_")||e.startsWith("$"))return mt(`APPLY assignment target ${e} is a system field.`);let i=t===null?[...n.values()].find(o=>o.code===e&&!o.inSubtable):r?.get(e);if(!i){let o=n.get(e);return t!==null&&o?.inSubtable?mt(`APPLY child ${e} does not belong to subtable ${t}.`):mt(`APPLY ${t===null?"parent field":"child"} ${e} does not exist.`)}if(i.fieldType==="SUBTABLE"||i.fieldType==="FILE"||i.writable===!1||jl.has(i.fieldType))return mt(`APPLY assignment target ${e} is not writable (${i.fieldType}).`)}function Lf(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function mt(e){throw new Error(`ArgumentError: ${e}`)}function _f(e,t=new Set){if(e===null||typeof e!="object"||t.has(e))return e;t.add(e);for(let n of Object.values(e))_f(n,t);return Object.freeze(e)}async function vf(e){let{statement:t,matches:n,fieldInfos:r,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a=1}=e;Df(i,"dmlMaxRows"),Df(o,"dmlMaxSubtableRows"),FA(t,n);let s=n.filter(g=>g.targetId===void 0),l=n.filter(g=>g.targetId!==void 0),p=MA(t,s.map(g=>g.sourceRowIndex)),c=await oi({statement:p,fieldInfos:r,metadata:ga(p,r),dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a,parentRowNumbers:s.map(g=>g.sourceRowIndex+1),loadNumberPrecision:e.loadNumberPrecision}),u=[],d=new Set;for(let g of l){let y=g.targetId;d.has(y)&&zl(`UPSERT APPLY resolves more than one source row to parent $id ${y}.`),d.add(y),g.snapshot||zl(`UPSERT APPLY snapshot for parent $id ${y} is missing.`);let T=Number(g.snapshot.$id?.value);T!==y&&zl(`UPSERT APPLY snapshot $id ${T} does not match target $id ${y}.`);let h=UA(t,g.sourceRowIndex,y),I=h.applyBlocks?.length?Dt(h,r):kA(r);u.push(await ma({statement:h,snapshots:[g.snapshot],fieldInfos:r,metadata:I,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a,parentRowNumbers:[g.sourceRowIndex+1],loadNumberPrecision:e.loadNumberPrecision}))}let f=xA(u,i,o),R=c.guards.parentRows+f.guards.parentRows,E=c.guards.subtableRows+f.guards.subtableRows,m=R>i||E>o;if(!t.validateOnly){let g=[...c.validations.flatMap(y=>y.errors),...f.validations.flatMap(y=>y.errors)];if(g.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:c.validations[0]?.columns??f.validations[0]?.columns??[],errors:g})}`)}if(!t.validateOnly&&R>i)throw new Error(`ArgumentError: APPLY parent rows (${R}) exceed dmlMaxRows (${i}).`);if(!t.validateOnly&&E>o)throw new Error(`ArgumentError: APPLY changed subtable rows (${E}) exceed dmlMaxSubtableRows (${o}).`);return ql({create:c,update:f,createBatches:c.batches,updateBatches:GA(f.records,t.appId),guards:{revisionRequired:f.guards.parentRows>0,parentRows:R,dmlMaxRows:i,subtableRows:E,dmlMaxSubtableRows:o,wouldExceed:m,create:c.guards,update:f.guards}})}function MA(e,t){return{type:"INSERT",appId:e.appId,fields:[...e.fields],values:t.map(n=>e.values[n]),applyBlocks:e.onInsertApplyBlocks??[],validateOnly:!0}}function UA(e,t,n){let r=e.fields.map((i,o)=>({field:i,value:e.values[t][o]}));return{type:"UPDATE",appId:e.appId,subtableCode:null,assignments:r,from:null,where:{type:"BINARY",op:"=",left:{type:"FIELD",tableAlias:null,field:"$id"},right:{type:"NUMBER",value:n,raw:String(n)}},applyBlocks:e.onUpdateApplyBlocks??[],validateOnly:!0}}function kA(e){return{targetTables:new Map,targetMultiValueFields:new Map,childrenByTable:new Map,fieldsByCode:new Map(e.map(t=>[t.code,t]))}}function xA(e,t,n){let r=e.flatMap(s=>s.plans),i=e.flatMap(s=>s.records),o=e.flatMap(s=>s.validations),a=r.reduce((s,l)=>s+l.changedSubtableRows,0);return ql({plans:r,records:i,validations:o,guards:{revisionRequired:!0,parentRows:r.length,dmlMaxRows:t,subtableRows:a,dmlMaxSubtableRows:n,wouldExceed:r.length>t||a>n}})}function FA(e,t){if(t.length!==e.values.length)throw new Error("InternalError: UPSERT APPLY match count differs from VALUES rows.");let n=new Set;for(let r of t){if(!Number.isSafeInteger(r.sourceRowIndex)||r.sourceRowIndex<0||r.sourceRowIndex>=e.values.length||n.has(r.sourceRowIndex))throw new Error("InternalError: UPSERT APPLY matches must cover each source row exactly once.");n.add(r.sourceRowIndex)}}function GA(e,t){let n=[];for(let r=0;r<e.length;r+=100)n.push({app:t,records:e.slice(r,r+100)});return n}function Df(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function zl(e){throw new Error(`ArgumentError: ${e}`)}function ql(e,t=new Set){if(e===null||typeof e!="object"||t.has(e))return e;t.add(e);for(let n of Object.values(e))ql(n,t);return Object.freeze(e)}function si(e){return ar("UPDATE",[kf(e)])}function Jl(e){return ar("INSERT",[Uf(e)])}function Xl(e){return ar("UPSERT",[Uf(e.create),kf(e.update)])}function Ye(e,t){let n=t.failedBranch?.toLowerCase(),r=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=n===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:r,partialSuccess:{possible:!0,successfulParents:t.successfulParents,successfulChunks:t.successfulChunks,...n?{failedBranch:n}:{},...t.retryAttempted!==void 0?{retryAttempted:t.retryAttempted}:{}}}}function ha(e,t,n){return e.type==="UPDATE"?ar("UPDATE",[ya("update",e.applyBlocks??[],null,!0,t,n)]):e.type==="INSERT"?ar("INSERT",[ya("insert",e.applyBlocks??[],e.values.length,!1,t,n)]):ar("UPSERT",[ya("insert",e.onInsertApplyBlocks??[],null,!1,t,n),ya("update",e.onUpdateApplyBlocks??[],null,!0,t,n)])}function ar(e,t){return{statementKind:e,branches:t,nonTransactional:!0,partialSuccess:{possible:!0}}}function Uf(e){let t=new Map;if(e.applyBlocks)for(let n of e.applyBlocks){let r=n.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(n.field,{targetKind:n.targetKind,field:n.field,operations:r,changedCount:r.reduce((i,o)=>i+(o.addedRows??0),0)})}else for(let n of e.candidates)for(let r of n.tables){let i=t.get(r.table),o=i?.operations[0]?.addedRows??0;t.set(r.table,{targetKind:"SUBTABLE",field:r.table,operations:[{kind:"APPEND",count:o+r.addedRows,addedRows:o+r.addedRows}],changedCount:(i?.changedCount??0)+r.addedRows})}return{branch:"insert",parentRows:e.guards.parentRows,targets:[...t.values()],guards:e.guards,chunk:{size:100,plannedChunks:e.batches.length},deletedParentRows:0}}function kf(e){let t=new Map,n=0;for(let r of e.plans){let i=!1;for(let o of r.tables){let a=t.get(o.table);t.set(o.table,{targetKind:"SUBTABLE",field:o.table,operations:Mf(a?.operations,o.operations.map(s=>({...s,count:s.kind==="PATCH"?s.changedRows:s.kind==="APPEND"?s.addedRows:s.removedRows}))),changedCount:(a?.changedCount??0)+o.changedSubtableRows}),i||=o.deletedRows>0}for(let o of r.multiValues){let a=t.get(o.field),s={parentId:r.parentId,value:o.postImageValue};t.set(o.field,{targetKind:"MULTI_VALUE",field:o.field,fieldType:o.fieldType,operations:Mf(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&&(n+=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:n}}function Mf(e,t){return e?t.map((n,r)=>{let i=e[r];if(!i||i.kind!==n.kind||i.value!==n.value)throw new Error("InternalError: APPLY diagnostic operation shape differs between parents.");return{...n,...i.changed!==void 0?{changed:i.changed}:{},count:ai(i.count,n.count),...n.matchedRows!==void 0?{matchedRows:ai(i.matchedRows,n.matchedRows)}:{},...n.changedRows!==void 0?{changedRows:ai(i.changedRows,n.changedRows)}:{},...n.addedRows!==void 0?{addedRows:ai(i.addedRows,n.addedRows)}:{},...n.removedRows!==void 0?{removedRows:ai(i.removedRows,n.removedRows)}:{}}}):t.map(n=>({...n}))}function ai(e,t){return e==null||t===null?null:e+t}function ya(e,t,n,r,i,o){let a=t.map(c=>{let u=c.operations.map(f=>KA(f,n)),d=u.every(f=>f.count!==null)?u.reduce((f,R)=>f+R.count,0):null;return{targetKind:c.targetKind,field:c.field,operations:u,changedCount:d}}),s=a.filter(c=>c.targetKind==="SUBTABLE"),l=s.every(c=>c.changedCount!==null)?s.reduce((c,u)=>c+u.changedCount,0):null,p=n===null||l===null?null:n>i||l>o;return{branch:e,parentRows:n,targets:a,guards:{revisionRequired:r,parentRows:n,dmlMaxRows:i,subtableRows:l,dmlMaxSubtableRows:o,wouldExceed:p},chunk:{size:100,plannedChunks:n===null?null:Math.ceil(n/100)},deletedParentRows:e==="insert"?0:null}}function KA(e,t){if(e.kind==="APPEND"){let n=t===null?null:e.values.length*t;return{kind:e.kind,count:n,addedRows:n}}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 gt=class extends Error{constructor(t,n){let r=n instanceof Error?n.message:String(n),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: ${r}`),this.name="ApplyWritePartialFailureError",this.partialSuccess=t,this.cause=n}};async function xf(e,t,n){Yn("phase10c");let r=Tf(e),i=0,o=0;for(let a=0;a<r.length;a+=1){let s=r[a];try{await t.putRecords(s)}catch(l){throw new gt({successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"PUT_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:Ye(n,{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 Ff(e,t,n){Yn("phase13c");let r=[],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]});r.push(l.ids)}catch(l){throw new gt({successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"POST_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:Ye(n,{successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"POST_CHUNK",failedBranch:"INSERT",retryAttempted:!1})}:{}},l)}i+=1,o+=s.records.length}return{type:"INSERT",createdIds:r,insertedCount:o,successfulChunks:i,successfulParents:o,nonTransactional:!0}}async function Gf(e,t,n){Yn("phase14c");let r=[],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 c=await t.postRecords({app:p.app,records:[...p.records]});r.push(c.ids)}catch(c){throw new gt({successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,failedChunkIndex:l,failedBranch:"INSERT",failedStage:"POST_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:Ye(n,{successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,successfulInsertChunks:i,successfulUpdateChunks:o,failedChunkIndex:l,failedStage:"POST_CHUNK",failedBranch:"INSERT",retryAttempted:!1})}:{}},c)}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(c){throw new gt({successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,failedChunkIndex:l,failedBranch:"UPDATE",failedStage:"PUT_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:Ye(n,{successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,successfulInsertChunks:i,successfulUpdateChunks:o,failedChunkIndex:l,failedStage:"PUT_CHUNK",failedBranch:"UPDATE",retryAttempted:!1})}:{}},c)}o+=1,s+=p.records.length}return{type:"UPSERT",createdIds:r,insertedCount:a,updatedCount:s,successfulChunks:i+o,successfulParents:a+s,successfulInsertChunks:i,successfulUpdateChunks:o,nonTransactional:!0}}var $A=/^[A-Za-z_][A-Za-z0-9_]{0,63}$/;function BA(e){if(!$A.test(e))throw new Error(`ArgumentError: invalid variable name "${e}". Use a name without @ matching [A-Za-z_][A-Za-z0-9_]{0,63}.`);return e.toLowerCase()}function VA(e){let t=Object.create(null);for(let[n,r]of Object.entries(e??{})){let i=BA(n);if(Object.prototype.hasOwnProperty.call(t,i))throw new Error(`ArgumentError: variable "${n}" is specified more than once.`);t[i]=r}return t}function Ql(e,t){let n=VA(t),r=new Set(e.filter(i=>i.type==="DECLARE_VARIABLE").map(i=>i.name));for(let i of Object.keys(n))if(!r.has(i))throw new Error(`ArgumentError: injected variable @${i} is not declared.`);return n}function WA(e){return e.type!=="SELECT"||!Array.isArray(e.joins)?!1:e.joins.some(t=>{if(t===null||typeof t!="object")return!1;let n=t.type;return n==="LEFT"||n==="RIGHT"})}function Zl(e){let t=new Set,n=r=>{if(Array.isArray(r))return r.some(n);if(r===null||typeof r!="object"||t.has(r))return!1;t.add(r);let i=r;return WA(i)?!0:Object.values(i).some(n)};return n(e)}function Kf(e,t,n){if(n)return t===e.from&&e.joins.some(r=>r.type==="RIGHT");for(let r=0;r<e.joins.length;r+=1){let i=e.joins[r];if(i.type==="LEFT"&&t===i.table||i.type==="RIGHT"&&e.joins.slice(0,r).some(o=>t===o.table))return!0}return!1}function yt(e){let t=[["recursiveCteMaxDepth",e.recursiveCteMaxDepth,100],["recursiveCteMaxRows",e.recursiveCteMaxRows,1e4],["recursiveCteMaxExpansions",e.recursiveCteMaxExpansions,1e5]];for(let[n,r]of t)if(r!==void 0&&(!Number.isSafeInteger(r)||r<=0))throw new RangeError(`${n} must be a positive safe integer`);return{depth:e.recursiveCteMaxDepth??100,rows:e.recursiveCteMaxRows??1e4,expansions:e.recursiveCteMaxExpansions??1e5}}var li=class extends Error{constructor(t,n,r,i){let o=t==="DEPTH"?"\u6DF1\u3055":t==="ROWS"?"\u7D50\u679C\u884C\u6570":"\u4E2D\u9593\u5C55\u958B\u6570",a=t==="DEPTH"?"":" \u4EF6";super(`\u518D\u5E30 CTE\u300C${i}\u300D\u306E${o}\u304C\u4E0A\u9650 ${n}${a}\u3092\u8D85\u3048\u307E\u3057\u305F\uFF08\u691C\u51FA\u5024: ${r}${a}\uFF09\u3002`),this.name="RecursiveCteLimitError",this.kind=t,this.limit=n,this.detected=r,this.cteName=i,Object.setPrototypeOf(this,new.target.prototype)}},Aa=class{constructor(t,n=yt({})){this.cteName=t;this.limits=n;this.rows=0;this.expansions=0}observeDepth(t){if(t>this.limits.depth)throw new li("DEPTH",this.limits.depth,t,this.cteName)}addRow(){if(this.rows++,this.rows>this.limits.rows)throw new li("ROWS",this.limits.rows,this.rows,this.cteName)}addExpansion(){if(this.expansions++,this.expansions>this.limits.expansions)throw new li("EXPANSIONS",this.limits.expansions,this.expansions,this.cteName)}};var Sa=50;function tu(e,t,n){if(e.kind==="RANGE")return[`${t} >= ${n(e.min)} and ${t} <= ${n(e.max)}`];if(e.kind!=="IN")return[];let r=[];for(let i=0;i<e.values.length;i+=Sa){let o=e.values.slice(i,i+Sa);r.push(`${t} in (${o.map(n).join(",")})`)}return r}var eu=new Set(["DATETIME","CREATED_TIME","UPDATED_TIME"]),HA=new Set(["SINGLE_LINE_TEXT","LINK","NUMBER","CALC","DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]);function YA(e,t){return e==="DATE"?xr(t):e==="TIME"?vo(t):eu.has(e)?Mo(t):!1}function jA(e,t){return!t||t.compareMode!=="string"?!1:e==="DATE"?t.fieldType==="DATE":e==="TIME"?t.fieldType==="TIME":eu.has(e)?eu.has(t.fieldType):!1}function nu(e){if(e.sourceRowCount===0)return{kind:"EMPTY_SOURCE"};if(!e.fieldType)return{kind:"FALLBACK",reason:"JOIN_KEY_FIELD_TYPE_UNRESOLVED"};let t=Do(e.fieldType);if(t.has("in")){if(e.values===void 0)return{kind:"FALLBACK",reason:"JOIN_KEY_VALUES_RUNTIME"};if(e.hasEmptyValue&&!HA.has(e.fieldType))return{kind:"FALLBACK",reason:"JOIN_KEY_EMPTY_VALUE"};let a=[...new Set(e.values)];return a.length===0?{kind:"EMPTY_SOURCE"}:a.length>e.maxInKeys?{kind:"FALLBACK",reason:"JOIN_KEY_LIMIT_EXCEEDED"}:{kind:"IN",values:a,relation:"exact"}}if(!t.has(">=")||!t.has("<="))return{kind:"FALLBACK",reason:"JOIN_KEY_OPERATOR_UNAVAILABLE"};if(e.values===void 0)return{kind:"RANGE_CANDIDATE",relation:"superset",reason:"JOIN_KEY_VALUES_RUNTIME"};if(!jA(e.fieldType,e.sourceSemantics))return{kind:"FALLBACK",reason:"JOIN_KEY_SEMANTICS_UNRESOLVED"};let n=e.sourceSemantics;if(e.hasEmptyValue)return{kind:"FALLBACK",reason:"JOIN_KEY_EMPTY_VALUE"};let r=[...new Set(e.values)];if(r.some(a=>!YA(e.fieldType,a)))return{kind:"FALLBACK",reason:"JOIN_KEY_NON_CANONICAL_VALUE"};if(r.length===0)return{kind:"FALLBACK",reason:"JOIN_KEY_EMPTY_VALUE"};let i=r[0],o=r[0];for(let a=1;a<r.length;a+=1){let s=r[a];rt(s,i,n)<0&&(i=s),rt(s,o,n)>0&&(o=s)}return{kind:"RANGE",min:i,max:o,relation:"superset"}}var ru=fl;function ui(e,t,n=ru){let r=e===0||t===0?0:e*t;return{leftRows:e,rightRows:t,outputRows:r,limit:n,allowed:r<=n}}function $f(e,t){let n=Z(e);return n.type!=="GROUPING_SETS"?null:{source:n.source,expandedSetCount:n.sets.length,groupingItemCount:t??n.allItems.length,setLimit:64,itemLimit:16,outputRowLimit:5e4}}function ht(e){if(e===null)return!1;switch(e.type){case"BINARY":return Ta(e.left);case"NULL_CHECK":return Ta(e.field);case"LOGICAL":return ht(e.left)||ht(e.right);case"NOT":case"GROUP":return ht(e.expr);case"EXISTS":case"BOOLEAN":return!1}}function Ta(e){if(Array.isArray(e))return e.some(Ta);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(Ta)}async function it(e,t,n,r,i){let o=await xe(e,t,n,r,{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 Ia(e,t,n,r){let{records:i,metrics:o}=await it(e,t,n,["$id"],r);return{ids:Rp(i),metrics:o}}function lr(e,t){if(e.tableAlias!==null){let r=t.filter(o=>o.alias===e.tableAlias);if(r.length>1)return Object.freeze({status:"AMBIGUOUS"});if(r.length===0)return Object.freeze({status:"UNKNOWN"});let i=r[0];return i.fieldTypes.has(e.field)?Vf(i,e.field):Object.freeze({status:"UNKNOWN"})}let n=t.filter(r=>r.fieldTypes.has(e.field));return n.length>1?Object.freeze({status:"AMBIGUOUS"}):n.length===0?Object.freeze({status:"UNKNOWN"}):Vf(n[0],e.field)}function au(e,t){if(e.left.type!=="FIELD")return ci();let n=lr(e.left,t);if(n.status!=="OWNED"||n.source.sourceKind!=="APP")return ci();let r=n.source.fieldTypes.get(n.fieldCode);if(r===void 0||r.startsWith("KSQL_")||he(e,a=>{let s=lr(a,t);if(s.status!=="OWNED"||s.source!==n.source)return;let l=s.source.fieldTypes.get(s.fieldCode);return l===void 0?void 0:te({fieldType:l})}).capability!=="EXACT_PUSHDOWN")return ci();let o=ko(e,{fieldCode:n.fieldCode,fieldType:r,fieldOptions:n.source.fieldOptions?.get(n.fieldCode)});return o==="unsafe"?ci():Object.freeze({relation:o,owner:n})}function Wf(e,t){let n=Te(e);if(n.length===0||e.left.type!=="FIELD")return Object.freeze({relation:"unsafe"});let r=lr(e.left,t);return r.status!=="OWNED"||r.source.sourceKind!=="APP"?Object.freeze({relation:"unsafe"}):he(e,o=>{let a=lr(o,t);if(a.status!=="OWNED"||a.source!==r.source)return;let s=a.source.fieldTypes.get(a.fieldCode);return s===void 0?void 0:te({fieldType:s})}).capability!=="EXACT_PUSHDOWN"?Object.freeze({relation:"unsafe"}):Object.freeze({relation:"function-leaf-exact",owner:r,functionOccurrences:Object.freeze([...n])})}function Hf(e,t){let n=new Set;hn(e,n);let i=(e===null?[]:zf(sr(e,t))).map(s=>Object.freeze({targetAlias:s.owner.alias,appId:s.owner.appId,predicate:s.predicate,relation:s.relation})),o=zA(e,t),a=new Set;if(o.serverFunctionCandidate?.variant==="WHOLE_WHERE_EXACT")for(let s of n)a.add(s);else for(let s of i)hn(s.predicate,a);return Object.freeze({items:Object.freeze(i),appliedKlikes:a,allKlikes:Object.freeze([...n]),rejections:Object.freeze(XA(e,t)),fetchQueriesByAlias:new Map,...o})}function Yf(e,t){if(e.serverFunctionCandidate?.staticContract!=="CONFIRMED"||e.serverFunctionConsumptions.length===0||e.residualServerFunctionOccurrences.length!==0||!An(e.allServerFunctionOccurrences,e.adoptedServerFunctionOccurrences)||e.allKlikes.some(a=>!e.appliedKlikes.has(a)))return e;let n=new Map,r=(a,s)=>{let l=n.get(a);l?l.push(s):n.set(a,[s])};try{if(e.serverFunctionCandidate.variant==="EXACT_LEAF")for(let a of e.items)r(a.targetAlias,ur(a,t));for(let a of e.serverFunctionConsumptions){if(!t.find(p=>p.alias===a.targetAlias&&p.appId===a.appId&&p.sourceKind==="APP"))return e;let l=ur({targetAlias:a.targetAlias,appId:a.appId,predicate:a.predicate,relation:"exact"},t);if(l!==a.serializedPredicate||!An(Oa(l),a.functionOccurrences))return e;r(a.targetAlias,l)}}catch{return e}let i=new Map;for(let[a,s]of n)i.set(a,s.length===1?s[0]:s.map(l=>`(${l})`).join(" and "));let o=e.serverFunctionConsumptions.map(a=>{let s=i.get(a.targetAlias);return s?Object.freeze({...a,fetchBinding:Object.freeze({status:"BOUND_TO_TARGET_FETCH",targetAlias:a.targetAlias,appId:a.appId,query:s})}):null});return o.some(a=>a===null)?e:Object.freeze({...e,serverFunctionCandidate:Object.freeze({...e.serverFunctionCandidate,fetchContract:"CONFIRMED"}),serverFunctionConsumptions:Object.freeze(o),fetchQueriesByAlias:i})}function cr(e){if(e.serverFunctionCandidate===null||e.serverFunctionCandidate.staticContract!=="CONFIRMED"||e.serverFunctionCandidate.fetchContract!=="CONFIRMED"||e.serverFunctionConsumptions.length===0||e.residualServerFunctionOccurrences.length!==0||!An(e.allServerFunctionOccurrences,e.adoptedServerFunctionOccurrences)||!e.serverFunctionConsumptions.every(t=>{let n=t.fetchBinding;return n!=="PENDING_STEP_2"&&n.status==="BOUND_TO_TARGET_FETCH"&&n.targetAlias===t.targetAlias&&n.appId===t.appId&&n.query===e.fetchQueriesByAlias.get(t.targetAlias)&&n.query.includes(t.serializedPredicate)}))return!1;for(let[t,n]of e.fetchQueriesByAlias){let r=e.serverFunctionConsumptions.filter(i=>i.targetAlias===t).flatMap(i=>[...i.functionOccurrences]);if(r.length>0&&!An(Oa(n),r))return!1}return!(e.serverFunctionCandidate.variant==="WHOLE_WHERE_EXACT"&&(e.serverFunctionConsumptions.length!==1||e.serverFunctionConsumptions[0].consumption!=="whole-where"||e.residualWhere!==null||e.allKlikes.some(t=>!e.appliedKlikes.has(t))||jf(JA(e))!==e.allKlikes.length))}function zA(e,t){if(e===null)return Bf(null);let n=Object.freeze([...Te(e)]);if(n.length===0)return Bf(e);let r=qA(e,t,n);if(r!==null)return r;let i=Na(e),o=[],a=new Set;for(let u of i){let d=Wf(u,t);if(d.relation!=="function-leaf-exact")continue;let f={targetAlias:d.owner.alias,appId:d.owner.appId,predicate:u,relation:"exact"},R;try{R=ur(f,t)}catch{continue}let E=Oa(R);An(E,d.functionOccurrences)&&(a.add(u),o.push(Object.freeze({targetAlias:d.owner.alias,appId:d.owner.appId,predicate:u,functionLeaves:Object.freeze([u]),functionOccurrences:d.functionOccurrences,relation:d.relation,consumption:"leaf",serializedPredicate:R,staticProof:Object.freeze({classifier:"EXACT_PUSHDOWN",ownership:"OWNED",serialization:"OCCURRENCE_MULTISET_EXACT",residualIdentityConsumption:"CONFIRMED"}),fetchBinding:"PENDING_STEP_2"})))}let s=Ca(e,a),l=Object.freeze(s===null?[]:[...Te(s)]),p=Object.freeze(o.flatMap(u=>[...u.functionOccurrences])),c=An(n,p)&&l.length===0?"CONFIRMED":"INCOMPLETE";return{serverFunctionCandidate:Object.freeze({variant:"EXACT_LEAF",staticContract:c,fetchContract:"PENDING_STEP_2"}),serverFunctionConsumptions:Object.freeze(o),allServerFunctionOccurrences:n,adoptedServerFunctionOccurrences:p,residualWhere:s,residualServerFunctionOccurrences:l}}function qA(e,t,n){let r=wa(e,t);if(r===null)return null;let i={targetAlias:r.alias,appId:r.appId,predicate:e,relation:"exact"},o;try{o=ur(i,t)}catch{return null}if(!An(Oa(o),n))return null;let a=new Set;if(hn(e,a),jf(o)!==a.size)return null;let s=Object.freeze(ba(e)),l=Object.freeze({targetAlias:r.alias,appId:r.appId,predicate:e,functionLeaves:s,functionOccurrences:Object.freeze([...n]),relation:"function-leaf-exact",consumption:"whole-where",serializedPredicate:o,staticProof:Object.freeze({classifier:"EXACT_PUSHDOWN",ownership:"OWNED",serialization:"OCCURRENCE_MULTISET_EXACT",residualIdentityConsumption:"CONFIRMED"}),fetchBinding:"PENDING_STEP_2"});return{serverFunctionCandidate:Object.freeze({variant:"WHOLE_WHERE_EXACT",staticContract:"CONFIRMED",fetchContract:"PENDING_STEP_2"}),serverFunctionConsumptions:Object.freeze([l]),allServerFunctionOccurrences:Object.freeze([...n]),adoptedServerFunctionOccurrences:Object.freeze([...n]),residualWhere:null,residualServerFunctionOccurrences:Object.freeze([])}}function wa(e,t){switch(e.type){case"BINARY":{if(Te(e).length>0){let i=Wf(e,t);return i.relation==="function-leaf-exact"?i.owner:null}let r=au(e,t);return r.relation==="exact"&&r.owner!==void 0?r.owner:null}case"LOGICAL":{let n=wa(e.left,t),r=wa(e.right,t);return n!==null&&r!==null&&La(n,r)?n:null}case"GROUP":case"NOT":return wa(e.expr,t);case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return null}}function ba(e){switch(e.type){case"BINARY":return Te(e).length>0?[e]:[];case"LOGICAL":return[...ba(e.left),...ba(e.right)];case"GROUP":case"NOT":return ba(e.expr);case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return[]}}function Bf(e){let t=e===null?[]:Te(e);return{serverFunctionCandidate:null,serverFunctionConsumptions:Object.freeze([]),allServerFunctionOccurrences:Object.freeze([...t]),adoptedServerFunctionOccurrences:Object.freeze([]),residualWhere:e,residualServerFunctionOccurrences:Object.freeze([...t])}}function Na(e){switch(e.type){case"BINARY":return Te(e).length>0?[e]:[];case"LOGICAL":return e.op==="AND"?[...Na(e.left),...Na(e.right)]:[];case"GROUP":return Na(e.expr);case"NOT":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return[]}}function Ca(e,t){if(e.type==="BINARY")return t.has(e)?null:e;if(e.type==="LOGICAL"){if(e.op!=="AND")return e;let n=Ca(e.left,t),r=Ca(e.right,t);return n===null?r:r===null?n:n===e.left&&r===e.right?e:{...e,left:n,right:r}}if(e.type==="GROUP"){let n=Ca(e.expr,t);return n===null?null:n===e.expr?e:{...e,expr:n}}return e}function Oa(e){let t=[];for(let n of wr){let r=new RegExp(`\\b${n}\\s*\\(`,"g"),i;for(;(i=r.exec(e))!==null;)t.push({name:n,index:i.index})}return t.sort((n,r)=>n.index-r.index).map(n=>n.name)}function An(e,t){if(e.length!==t.length)return!1;let n=new Map;for(let r of e)n.set(r,(n.get(r)??0)+1);for(let r of t){let i=n.get(r);if(i===void 0)return!1;i===1?n.delete(r):n.set(r,i-1)}return n.size===0}function jf(e){return[...e.matchAll(/\s(?:not\s+)?like\s/g)].length}function JA(e){let t=e.serverFunctionConsumptions[0];return t===void 0?"":e.fetchQueriesByAlias.get(t.targetAlias)??""}function XA(e,t){if(e===null)return[];let n=new Set,r=i=>{if(i.type==="BINARY"){if(i.left.type!=="FIELD"){n.add("UNSAFE_RELATION");return}let o=lr(i.left,t);if(o.status==="AMBIGUOUS"){n.add("AMBIGUOUS_FIELD");return}if(o.status==="UNKNOWN"){n.add("UNKNOWN_FIELD_OR_METADATA");return}if(Pa(i.right)){n.add("CROSS_TABLE_BINARY");return}au(i,t).relation==="unsafe"&&n.add("UNSAFE_RELATION");return}if(i.type==="LOGICAL"){if(i.op==="OR"){if(Jf(i)){n.add("KLIKE_OR");return}let o=sr(i.left,t),a=sr(i.right,t);if(o.length!==1||a.length!==1||!La(o[0].owner,a[0].owner)){n.add("CROSS_ALIAS_OR");return}}r(i.left),r(i.right);return}if(i.type==="GROUP"){r(i.expr);return}if(i.type==="NOT"){n.add("NOT");return}n.add("UNSAFE_RELATION")};return r(e),[...n].map(i=>Object.freeze({reason:i}))}function ur(e,t){return pi(e.predicate,e,t),j(e.predicate)}function pi(e,t,n){switch(e.type){case"LOGICAL":pi(e.left,t,n),pi(e.right,t,n);return;case"GROUP":pi(e.expr,t,n);return;case"NOT":pi(e.expr,t,n);return;case"BINARY":{if(e.left.type!=="FIELD"||Pa(e.right))throw ou(t,"predicate contains a non-target or RHS field reference");let r=lr(e.left,n);if(r.status!=="OWNED"||r.alias!==t.targetAlias||r.appId!==t.appId||r.source.sourceKind!=="APP")throw ou(t,`field ${e.left.field} is not uniquely owned by the target`);return}case"NULL_CHECK":case"EXISTS":case"BOOLEAN":throw ou(t,"predicate shape is outside the Phase A serializer contract")}}function ou(e,t){return new Error(`InternalError: JOIN pushdown ownership guard failed for ${e.targetAlias}/APP${e.appId}: ${t}.`)}function sr(e,t){switch(e.type){case"BINARY":{let n=au(e,t);return n.relation==="unsafe"||n.owner===void 0?[]:[{owner:n.owner,predicate:e,relation:n.relation}]}case"LOGICAL":{let n=sr(e.left,t),r=sr(e.right,t);if(e.op==="AND")return zf([...n,...r]);if(Jf(e))return[];if(n.length!==1||r.length!==1)return[];let i=n[0],o=r[0];return La(i.owner,o.owner)?[{owner:i.owner,predicate:{type:"LOGICAL",op:"OR",left:i.predicate,right:o.predicate},relation:qf(i.relation,o.relation)}]:[]}case"GROUP":return sr(e.expr,t).map(n=>({...n,predicate:{type:"GROUP",expr:n.predicate}}));case"NOT":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return[]}}function zf(e){let t=[];for(let n of e){let r=t.findIndex(o=>La(o.owner,n.owner));if(r<0){t.push(n);continue}let i=t[r];t[r]={owner:i.owner,predicate:{type:"LOGICAL",op:"AND",left:i.predicate,right:n.predicate},relation:qf(i.relation,n.relation)}}return t}function Vf(e,t){return Object.freeze({status:"OWNED",alias:e.alias,appId:e.appId,fieldCode:t,source:e})}function ci(){return Object.freeze({relation:"unsafe"})}function La(e,t){return e.alias===t.alias&&e.appId===t.appId&&e.source===t.source}function qf(e,t){return e==="exact"&&t==="exact"?"exact":"superset"}function hn(e,t){if(e!==null){if(Yt(e)){t.add(e);return}switch(e.type){case"LOGICAL":hn(e.left,t),hn(e.right,t);return;case"NOT":case"GROUP":hn(e.expr,t);return;case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}}function Jf(e){let t=new Set;return hn(e,t),t.size>0}function Pa(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(Pa);let t=e;return t.type==="FIELD"||t.type==="FIELD_REF"?!0:Object.values(t).some(Pa)}function su(e,t){let n=Gr(e,{allowUnqualifiedFields:!0,allowKlike:!0,fieldTypes:t.fieldTypes,fieldOptions:t.fieldOptions});return{prefilter:n.condition,appliedKlikes:n.appliedKlikes,unappliedKlikes:n.allKlikes.filter(r=>!n.appliedKlikes.has(r))}}function QA(e,t){return e.key.type==="FIELD_NAME"?t.get(e.key.name):void 0}function ZA(e,t){return e.columns.some(n=>"alias"in n&&n.alias===t)}function di(e){let{stmt:t}=e,n=[],r=t.columns.flatMap(a=>a.type==="WINDOW_COL"?a.orderBy:[]),i=[...t.orderBy,...r];for(let a of i){if(a.key.type!=="FIELD_NAME")continue;let s=QA(a,e.orderSemantics);if(!s){n.push("ORDER_KEY_UNRESOLVED");continue}s.fieldType==="KSQL_AMBIGUOUS"?n.push("ORDER_KEY_AMBIGUOUS"):s.compareMode==="unsupported"&&n.push("ORDER_KEY_UNSUPPORTED")}if(n.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(n.includes("ORDER_KEY_UNSUPPORTED")||n.includes("ORDER_KEY_UNRESOLVED")){let a=n.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&&r.length===0&&t.orderBy.every(a=>a.key.type==="FIELD_NAME"&&a.key.name==="$id"&&!ZA(t,a.key.name))||n.push("ORDER_KEY_NOT_REST_EQUIVALENT"),e.whereCapability!=="EXACT_PUSHDOWN"&&n.push("WHERE_NOT_EXACT"),e.staticMode!=="SIMPLE"&&n.push("QUERY_SHAPE_LOCAL"),(t.limit===null||t.limit<0||t.limit>500)&&n.push("LIMIT_NOT_REST_WINDOW"),((t.offset??0)<0||(t.offset??0)>1e4)&&n.push("OFFSET_NOT_REST_WINDOW"),t.limit!==null&&t.limit>e.maxRecords&&n.push("MAX_RECORDS_WINDOW"),e.hasKlike&&n.push("KLIKE_NOT_REST_WINDOW"),n.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(n)]}}var eS=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 tS(e,t){return e.columns.some(n=>"alias"in n&&n.alias===t)}function fi(e){let{stmt:t}=e,n=[];t.orderMode!=="KINTONE_NATIVE"&&n.push("KORDER_MODE_REQUIRED"),(t.from.cteName!==null||t.from.subtableCode||e.staticMode!=="SIMPLE")&&n.push("KORDER_QUERY_SHAPE_UNSUPPORTED"),e.whereCapability!=="EXACT_PUSHDOWN"&&(n.push(...(e.whereReasons??[]).filter(s=>s.functionName!==void 0).map(s=>s.code)),n.push("KORDER_WHERE_NOT_EXACT")),e.hasKlike&&n.push("KORDER_KLIKE_UNSUPPORTED"),t.orderBy.length===0&&n.push("KORDER_KEY_REQUIRED");for(let s of t.orderBy){if(s.key.type!=="FIELD_NAME"){n.push(`KORDER_KEY_NOT_DIRECT_FIELD(key=${s.key.type})`);continue}let l=s.key.name,p=e.orderSemantics.get(l);if(!p){n.push(`KORDER_KEY_UNRESOLVED(field=${l})`);continue}if(tS(t,l)){n.push(`KORDER_KEY_NOT_DIRECT_FIELD(field=${l})`);continue}if(l!=="$id"){if(!p.source||p.source.fieldCode!==l){n.push(`KORDER_KEY_NOT_DIRECT_FIELD(field=${l})`);continue}eS.has(p.fieldType)||n.push(`KORDER_TYPE_UNSUPPORTED(field=${l}, type=${p.fieldType})`)}}(t.limit===null||!Number.isSafeInteger(t.limit)||t.limit<0)&&n.push(`KORDER_LIMIT_INVALID(limit=${String(t.limit)})`);let r=t.offset??0;(!Number.isSafeInteger(r)||r<0)&&n.push(`KORDER_OFFSET_INVALID(offset=${r})`);let i=t.limit===null?Number.NaN:r+t.limit;t.limit!==null&&!Number.isSafeInteger(i)&&n.push(`KORDER_SCAN_ROWS_INVALID(offset=${r}, limit=${t.limit})`);let o=[...new Set(n)];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&&r<=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 _a=class extends Error{constructor(t,n,r){super(`CursorCapacityError: host=${t} \u306E active cursor \u4E0A\u9650 ${n} \u306B ${r}ms \u4EE5\u5185\u3067\u7A7A\u304D\u304C\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002`),this.name="CursorCapacityError"}},Da=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}},va=class extends Error{constructor(t){let n=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: ${n}`),this.name="CursorCleanupWarning",this.cause=t}};async function Xf(e){let t=await e.client.openCursor({app:e.app,fields:e.fields.length>0?e.fields:void 0,query:e.query,size:500}),n=[],r=0,i,o;try{if(t.totalCount>e.offset)for(;n.length<e.limit;){let a=await t.nextPage();for(let s of a.records)if(r<e.offset)r+=1;else if(n.length<e.limit)n.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 va(a).message}}return{records:n,cleanupWarning:o}}function lu(e){let t=[];e.where&&t.push(j(e.where));let n=e.orderBy.map(r=>{if(r.key.type!=="FIELD_NAME")throw new Error("ArgumentError: KORDER cursor key must be a direct field.");return`${r.key.name} ${r.direction==="ASC"?"asc":"desc"}`});return t.push(`order by ${n.join(", ")}`),t.join(" ")}var nS={CALC:"RECORD",CATEGORY:"NON_RECORD",CHECK_BOX:"RECORD",CREATED_TIME:"RECORD",CREATOR:"RECORD",DATE:"RECORD",DATETIME:"RECORD",DROP_DOWN:"RECORD",FILE:"RECORD",GROUP:"NON_RECORD",GROUP_SELECT:"RECORD",LINK:"RECORD",MODIFIER:"RECORD",MULTI_LINE_TEXT:"RECORD",MULTI_SELECT:"RECORD",NUMBER:"RECORD",ORGANIZATION_SELECT:"RECORD",RADIO_BUTTON:"RECORD",RECORD_NUMBER:"RECORD",REFERENCE_TABLE:"NON_RECORD",RICH_TEXT:"RECORD",SINGLE_LINE_TEXT:"RECORD",STATUS:"PROCESS",STATUS_ASSIGNEE:"PROCESS",SUBTABLE:"RECORD",TIME:"RECORD",UPDATED_TIME:"RECORD",USER_SELECT:"RECORD"};function Qf(e,t){let n=nS[e];if(n===void 0)throw new Error(`ArgumentError: getFields returned unknown fieldType "${e}" for field "${t}". getFields must return only the fields from /k/v1/app/form/fields.json; $id and $revision are synthesized by the engine and must not be added.`);return n}async function Zf(e,t,n){if(t!=null)return["_pid","_rid","_idx",...e.filter(s=>s.inSubtable===!0&&s.subtableCode===t).map(s=>s.code)];let r=e.filter(s=>!s.inSubtable),o=r.some(s=>Qf(s.fieldType,s.code)==="PROCESS")?(await n()).enable:!1;return[...r.filter(s=>{let l=Qf(s.fieldType,s.code);return l==="RECORD"||l==="PROCESS"&&o}).map(s=>s.code),"$revision","$id"]}var pr=new WeakMap,cu=new WeakMap,rS="\u6BD4\u8F03\u6761\u4EF6\u3067\u53C2\u7167\u3057\u305F\u96C6\u8A08\u5024\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093\u3002SELECT \u30EA\u30B9\u30C8\u306B\u540C\u3058\u96C6\u8A08\u5F0F\u3092\u542B\u3081\u3066\u304F\u3060\u3055\u3044\u3002";function Eu(e){if(cu.has(e))return e;let t;return t=new Proxy(e,{get(n,r,i){return typeof r!="string"||Object.prototype.hasOwnProperty.call(n,r)?Reflect.get(n,r,i):Ie(t,r)},has(n,r){return Reflect.has(n,r)||typeof r=="string"&&Ie(t,r)!==void 0},getOwnPropertyDescriptor(n,r){let i=Reflect.getOwnPropertyDescriptor(n,r);if(i||typeof r!="string")return i;let o=Ie(t,r);return o===void 0?void 0:{configurable:!0,enumerable:!1,writable:!1,value:o}}}),cu.set(t,e),t}function ot(e){return cu.get(e)??e}function cE(e){let t=pr.get(e);return t||(t={byColumn:new Map,byLookupKey:new Map},pr.set(e,t)),t}function At(e,t,n,r=[]){let i=cE(e);i.byColumn.set(t,n);for(let o of r)i.byLookupKey.set(o,n)}function je(e,t){return pr.get(e)?.byColumn.get(t)}function Ie(e,t){return pr.get(e)?.byLookupKey.get(t)}function vt(e,t){return pr.has(e)?void 0:e[t]}function eE(e,t,n){if(!n||t.length===0)return;let r=new Set,i=o=>{if(o===null||typeof o!="object")return;if(Array.isArray(o)){o.forEach(i);return}let a=o;if(a.type==="FIELD"&&a.aggregateRef!==void 0){let s=a.aggregateRef;r.add(de(s.func,s.distinct,s.arg));return}a.type==="SELECT"||a.type==="SCALAR_SUBQUERY"||Object.values(a).forEach(i)};i(e),[...r].some(o=>t.some(a=>Ie(a,o)===void 0&&a[o]===void 0))&&n.add(rS)}function iS(e){let t=pr.get(e)?.byLookupKey;if(!t||t.size===0)return e;let n={...e};for(let[i,o]of t)n[i]=o;let r=Ws(e);return r&&Vs(n,r.includedCanonicalIds),n}function Mt(e,t){let n={};for(let[r,i]of Object.entries(e)){let o=i.value,a=o==null?"":typeof o=="string"?o:JSON.stringify(o);t&&(n[`${t}.${r}`]=a),n[r]=a}return n}function oS(e,t,n,r={}){if(n.type==="CROSS"){let d=ui(e.length,t.length);if(!d.allowed)throw new Error(`ArgumentError: CROSS JOIN \u306E\u751F\u6210\u4EF6\u6570 ${d.outputRows} \u884C\uFF08\u5DE6 ${d.leftRows} \u884C \xD7 \u53F3 ${d.rightRows} \u884C\uFF09\u304C\u4E0A\u9650 ${d.limit} \u884C\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002`);let f=[];for(let R of e)for(let E of t)f.push({...R,...E});return f}let{on:i,type:o}=n,a=aS(i,e,t,r.leftColumns,r.rightColumns),s=pu(a.left),l=pu(a.right);if(nE(e,s,r.leftColumns),nE(t,l,r.rightColumns),o==="RIGHT"){let d=new Map;for(let E of e){let m=E[s]??"",g=d.get(m);g?g.push(E):d.set(m,[E])}let f={};for(let E of r.leftColumns??Object.keys(e[0]??{}))f[E]="";let R=[];for(let E of t){let m=E[l]??"",g=d.get(m)??[];if(g.length>0)for(let y of g)R.push({...y,...E});else R.push({...f,...E})}return R}let p=new Map;for(let d of t){let f=d[l]??"",R=p.get(f);R?R.push(d):p.set(f,[d])}let c=[],u={};for(let d of r.rightColumns??Object.keys(t[0]??{}))u[d]="";for(let d of e){let f=d[s]??"",R=p.get(f)??[];if(R.length>0)for(let E of R)c.push({...d,...E});else o==="LEFT"&&c.push({...d,...u})}return c}function pu(e){return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field}function aS(e,t,n,r,i){let o=r??Object.keys(t[0]??{}),a=i??Object.keys(n[0]??{}),s=tE(o),l=tE(a),p=d=>{if(d.tableAlias){let m=s.has(d.tableAlias),g=l.has(d.tableAlias);if(m!==g)return m?"LEFT":"RIGHT"}let f=pu(d),R=o.includes(f),E=a.includes(f);return R!==E?R?"LEFT":"RIGHT":"UNKNOWN"},c=p(e.left),u=p(e.right);return c==="RIGHT"&&u==="LEFT"?{left:e.right,right:e.left}:e}function tE(e){let t=new Set;for(let n of e){let r=n.indexOf(".");r>0&&t.add(n.slice(0,r))}return t}function nE(e,t,n){if(e.length>0?e.some(i=>!Object.prototype.hasOwnProperty.call(i,t)):n!==void 0&&!n.includes(t))throw new Error(`ArgumentError: JOIN key ${t} is not available in the materialized table.`)}function sS(e,t,n,r,i,o={}){return t===null?e:e.filter(a=>se(t,a,n,r,i,o))}function pE(e){return e.some(t=>t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"||t.type==="CASE_COL"&&Be(t.expr)||t.type==="STRFUNC_COL"&&hi(t.expr)||t.type==="SCALAR_VALUE_COL"&&rn(t.expr))}function lS(e,t,n,r,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((u,d)=>cS(u,l,i?.items[d],n,o)).join("\0"),c=a.get(p);c?c.push(l):a.set(p,[l])}a.size===0&&t.length===0&&pE(n)&&a.set("",[]);let s=[];for(let l of a.values()){let p=Eu({...l[0]});for(let c of t)c.type==="ARITH_KEY"?p[yu(c.expr)]=String(me(c.expr,l[0],o.evaluationContext)):c.type==="FUNC_KEY"&&(p[on(c.expr)]=ge(c.expr,l[0],void 0,void 0,o.evaluationContext));dE(p,l,n,r,o.evaluationContext),s.push(p)}return s}function uS(e,t,n,r,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},c=[];for(let d of e){let f=p;for(let R of l.items){let E=rE(R,d),m=f.children.get(E);m||(m={children:new Map},f.children.set(E,m)),f=m}f.rows||(s(),f.rows=[],c.push(f.rows)),f.rows.push(d)}e.length===0&&l.items.length===0&&(s(),p.rows=[],c.push(p.rows));let u=new Set(l.items.map(d=>d.canonicalId));for(let d of c){let f=Eu({...d[0]}),R=new Map;for(let E of l.items)R.has(E.canonicalId)||R.set(E.canonicalId,rE(E,d[0]));for(let E of t.allItems){let m=R.get(E.canonicalId)??"";f[E.directKey]=m,E.unqualifiedBridgeKey!==null&&(f[E.unqualifiedBridgeKey]=m)}dE(f,d,n,r,i.evaluationContext),Vs(f,u),o.push(f)}}return o}function rE(e,t){return t?t[e.directKey]??(e.unqualifiedBridgeKey===null?void 0:t[e.unqualifiedBridgeKey])??"":""}function dE(e,t,n,r,i={}){for(let[o,a]of n.entries())if(a.type==="AGGREGATE"){let s=de(a.func,a.distinct,a.arg),l=String(mi(a.func,a.distinct,a.arg,a.separator,t,r,i));At(e,o,l,a.alias?[a.alias,s]:[s])}else if(a.type==="ARITH_AGG_COL"){Ma(e,t,a.expr,r,i);let s=a.alias??gi(a.expr);At(e,o,String(Ei(a.expr,t,r,i)),[s])}else if(a.type==="STRFUNC_COL"&&hi(a.expr)){Ma(e,t,a.expr,r,i);let s=a.alias??on(a.expr),l=hu(a.expr,t,r);At(e,o,ge(l,e,void 0,void 0,i),[s])}else if(a.type==="SCALAR_VALUE_COL"&&rn(a.expr)){Ma(e,t,a.expr,r,i);let s=a.alias??St(a.expr),l=Ri(a.expr,t,r);At(e,o,String(be(l,e,void 0,void 0,i)),[s])}else if(a.type==="CASE_COL"&&Be(a.expr)){Ma(e,t,a.expr,r,i);let s=yE(a.expr,t,r),p=Ke(s,e,void 0,c=>c.aggregateRef?EE(c.aggregateRef,r):void 0,i);At(e,o,p,[du(a.alias,o)])}}function du(e,t){return e??`__ksql_case_column_${t}`}function fu(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(r=>fu(r,t));return}let n=e;if(n.type==="AGG_REF"){t.push(n);return}n.type==="SELECT"||n.type==="SCALAR_SUBQUERY"||Object.values(n).forEach(r=>fu(r,t))}function Ma(e,t,n,r,i={}){let o=[];fu(n,o);for(let a of o){let s=de(a.func,a.distinct,a.arg);if(Ie(e,s)!==void 0)continue;let l=String(mi(a.func,a.distinct,a.arg,a.separator,t,r,i));cE(e).byLookupKey.set(s,l)}}function cS(e,t,n,r,i){if(e.type==="FIELD_NAME"){if(!n)return t[e.name]??"";if(n.kind==="PHYSICAL")return t[n.runtimeKey]??"";if(n.kind==="ALIAS_SAFE"){let o=r[n.columnIndex];if(!o)throw new Error(`InternalError: GROUP BY alias column index ${n.columnIndex} is out of range.`);let a=Ua(o,t,n.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 ${n.kind} reached evaluation.`)}return e.type==="FUNC_KEY"?ge(e.expr,t,void 0,void 0,i.evaluationContext):String(me(e.expr,t,i.evaluationContext))}function mi(e,t,n,r,i,o,a={}){if(n.type==="WILDCARD")return e==="COUNT"?i.length:0;let s=fE(e,n,i,a).filter(R=>R!==null),l=e==="STDDEV_POP"||e==="STDDEV_SAMP"||e==="VAR_POP"||e==="VAR_SAMP"||e==="MEDIAN",p=l?s.map(R=>{let E=Number(R);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: ${R}`);return E}):null,c=t?l?[...new Set(p)]:[...new Set(s)]:l?p:s;if(e==="COUNT")return c.length;if(e==="GROUP_CONCAT")return c.join(r??",");let u=e==="MIN"||e==="MAX"||e==="MODE"?yi(n,o):void 0,d=typeof u=="string"?B(u):u??(n.type==="FIELD_REF"||n.type==="FIELD"||n.type==="STRING"||n.type==="CONCAT_OP"||n.type==="CASE_WHEN"?B("string"):B("number"));if(e==="MODE"){if(s.length===0)return"";let R=new Map;for(let g of s)R.set(g,(R.get(g)??0)+1);let E="",m=0;for(let[g,y]of R){if(y>m){E=g,m=y;continue}if(y!==m)continue;let T=rt(g,E,d);(T<0||T===0&&tn(g,E)<0)&&(E=g)}return E}if(e==="MIN"||e==="MAX"){let R=c;if(R.length===0)return"";let E=R[0];for(let m of R.slice(1)){let g=rt(m,E,d);(e==="MAX"&&g>0||e==="MIN"&&g<0)&&(E=m)}return E}let f=l?c:c.map(Number);switch(e){case"SUM":return f.reduce((R,E)=>R+E,0);case"AVG":return f.length===0?0:f.reduce((R,E)=>R+E,0)/f.length;case"MEDIAN":{if(f.length===0)return"";let R=[...f].sort((m,g)=>m-g),E=Math.floor(R.length/2);return R.length%2===1?R[E]:(R[E-1]+R[E])/2}case"VAR_POP":case"VAR_SAMP":case"STDDEV_POP":case"STDDEV_SAMP":{let R=e==="VAR_SAMP"||e==="STDDEV_SAMP";if(f.length===0||R&&f.length<2)return"";let E=f[0],m=0,g=0,y=0;for(let h of f){let I=h-E;m++;let C=I-g;g+=C/m,y+=C*(I-g)}let T=Math.max(0,y/(R?m-1:m));return e==="STDDEV_POP"||e==="STDDEV_SAMP"?Math.sqrt(T):T}}}function fE(e,t,n,r={}){return n.map(i=>{let o=ot(i),a;if(t.type==="FIELD_REF"){let s=o[t.field];if(s===void 0||s===""&&e!=="MIN"&&e!=="MAX")return null;a=s}else if(t.type==="ARITH"||t.type==="NUMBER"){let s=me(t,o,r);if(isNaN(s))return null;a=String(s)}else{let s=Lt(t,o,void 0,void 0,r);if(s===null||s===""&&e!=="MIN"&&e!=="MAX"||typeof s=="number"&&Number.isNaN(s))return null;a=String(s)}return a})}function pS(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 Ei(e,t,n,r={}){if(e.type==="NUMBER")return e.value;if(e.type==="AGG_REF")return Number(mi(e.func,e.distinct,e.arg,e.separator,t,n,r));if(e.type==="AGG_GROUP_KEY"){let a=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return Number(Fe(t[0]??{},a))}if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved aggregate arithmetic variable @${e.name}.`);let i=Ei(e.left,t,n,r),o=Ei(e.right,t,n,r);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 gi(e){return dt(e)}function yi(e,t){if(e.type==="FIELD_REF")return t?.(pS(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 n=[...e.branches.map(o=>o.result),...e.elseResult===null?[]:[e.elseResult]].filter(o=>o.type!=="ARRAY").map(o=>yi(o,t));if(n.length===0||n.some(o=>o===void 0))return"string";let r=n.map(o=>typeof o=="string"?o:o.compareMode==="number"||o.compareMode==="recordNumber"?"number":"string");if(!r.every(o=>o===r[0]))return"string";let i=n[0];return n.every(o=>JSON.stringify(o)===JSON.stringify(i))?i:r[0]}function EE(e,t){if(e.func==="COUNT"||e.func==="SUM"||e.func==="AVG"||e.func==="STDDEV_POP"||e.func==="STDDEV_SAMP"||e.func==="VAR_POP"||e.func==="VAR_SAMP"||e.func==="MEDIAN")return B("number");if(e.func==="GROUP_CONCAT"||e.func==="MODE")return B("string");let n=e.arg.type==="WILDCARD"?"string":yi(e.arg,t)??"string";return typeof n=="string"?B(n):n}function dS(e,t,n,r,i={}){return t===null?e:e.filter(o=>se(t,iS(o),n,void 0,r,i))}function fS(e,t,n,r,i,o={}){if(e.length===0)return e;let a=ES(e,t,{scalarCache:n,resolveFieldType:r,resolveFieldSemantics:i,evaluationContext:o}),s=new Set;return e.filter(l=>{let p=a(l);return s.has(p)?!1:(s.add(p),!0)})}function ES(e,t,n){let r=[];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);r=[...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={...n,wildcardKeys:r,parentWildcardKeys:i};return a=>JSON.stringify(TS(t,a,o))}function Ru(e,t,n,r,i,o,a={}){return t.length===0?e:RE(e,t,n,r,i,o,a).rows.map(s=>s.row)}function RE(e,t,n,r,i,o,a={}){let s=t.map(({key:c})=>{if(c.type==="ARITH_KEY")return{semantics:B("number")};if(c.type==="FUNC_KEY")return{semantics:B(mE.has(c.expr.func)?"number":"string")};if(c.type==="GROUPING_KEY")return{semantics:B("number")};let u=i?.get(c.name);if(u)return{semantics:u};let d=n?.get(c.name);return d?{semantics:{fieldType:"MULTI_SELECT",compareMode:"option",inSubtable:!1,requiresCollectionOperators:!1,optionOrder:d}}:{semantics:B(r?.get(c.name)??"string")}}),l=e.map(c=>({row:c,keys:t.map(({key:u},d)=>({s:gS(u,c,o,a)}))})),p=(c,u)=>RS(c,u,t,s);return l.sort(p),{rows:l,compare:p}}function RS(e,t,n,r){for(let i=0;i<n.length;i++){let o=mS(e.keys[i],t.keys[i],r[i]);if(o!==0)return n[i].direction==="ASC"?o:-o}return 0}function mS(e,t,n){return rt(e.s,t.s,n.semantics)}var mE=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function gS(e,t,n,r={}){let i=ot(t);switch(e.type){case"FIELD_NAME":return n?.(e.name,t)??Ie(t,e.name)??i[e.name]??"";case"ARITH_KEY":return String(me(e.expr,i,r));case"FUNC_KEY":return ge(e.expr,i,void 0,void 0,r);case"GROUPING_KEY":return zn(e.ref,t)}}function mu(e,t,n,r,i={}){let o=new Map;for(let[a,s]of e.entries()){if(!("alias"in s)||s.alias===null)continue;let l=s.alias;switch(s.type){case"FIELD":o.set(l,p=>Fe(ot(p),s.field));break;case"LITERAL_COL":o.set(l,()=>s.value);break;case"AGGREGATE":{o.set(l,p=>je(p,a)??"0");break}case"ARITH_AGG_COL":{o.set(l,p=>je(p,a)??"0");break}case"WINDOW_COL":o.set(l,p=>je(p,a)??"");break;case"ARITH_COL":o.set(l,p=>String(me(s.expr,ot(p),i)));break;case"STRFUNC_COL":{let p=on(s.expr);o.set(l,c=>hi(s.expr)?je(c,a)??Ie(c,p)??ge(s.expr,ot(c),n,r,i):ge(s.expr,ot(c),n,r,i));break}case"CASE_COL":o.set(l,p=>Be(s.expr)?je(p,a)??"":Ke(s.expr,ot(p),n,r,i));break;case"SCALAR_VALUE_COL":{let p=St(s.expr);o.set(l,c=>rn(s.expr)?je(c,a)??Ie(c,p)??"":String(be(s.expr,ot(c),n,r,i)));break}case"SCALAR_SUBQUERY_COL":o.set(l,()=>t?.get(a)??"");break;case"GROUPING_COL":o.set(l,p=>zn(s.ref,p));break;case"VARIABLE_COL":break}}return(a,s)=>o.get(a)?.(s)}function gu(e,t,n,r,i,o,a={}){let s=t.map((l,p)=>({column:l,columnIndex:p})).filter(l=>l.column.type==="WINDOW_COL");if(e.length===0||s.length===0)return e;for(let l=0;l<e.length;l++)e[l]=Eu(e[l]);for(let{column:l,columnIndex:p}of s){let c=new Map;for(let u of e){let d=JSON.stringify(l.partitionBy.map(R=>SS(u,R))),f=c.get(d);f?f.push(u):c.set(d,[u])}for(let u of c.values()){let d=RE(u,l.orderBy,n,r,i,void 0,a),f=d.rows;if(co(l)){AS(l,p,d,o,a);continue}if(Us(l)){hS(l,p,f,a);continue}if(!Ms(l))throw new Error(`InternalError: unknown window kind ${l.windowKind??"undefined"}`);let R=1,E=1;for(let m=0;m<f.length;m++){m>0&&d.compare(f[m-1],f[m])!==0&&(R=m+1,E++);let g=l.func==="ROW_NUMBER"?m+1:l.func==="RANK"?R:E;At(f[m].row,p,String(g),[l.alias])}}}return e}function yS(e,t,n={}){let r=Lt(e,ot(t),void 0,void 0,n);return r==null||typeof r=="number"&&!Number.isFinite(r)?"":String(r)}function hS(e,t,n,r={}){let i=n.map(a=>yS(e.arg,a.row,r)),o=e.valueFunc==="LAG"?-1:1;for(let a=0;a<n.length;a++){let s=a+o*e.offset;At(n[a].row,t,s>=0&&s<i.length?i[s]:"",[e.alias])}}function AS(e,t,n,r,i={}){let o=n.rows,a=e.arg.type==="WILDCARD"?null:fE(e.aggFunc,e.arg,o.map(f=>f.row),i),s=e.arg.type==="WILDCARD"?void 0:yi(e.arg,r),l=typeof s=="string"?B(s):s??B("string"),p=[],c=0,u=0,d;for(let f=0;f<o.length;f++){let R=a?.[f]??null;if(e.arg.type==="WILDCARD")c++;else if(R!==null)if(e.aggFunc==="COUNT")c++;else if(e.aggFunc==="SUM"||e.aggFunc==="AVG")u+=Number(R),c++;else if(d===void 0)d=R;else{let m=rt(R,d,l);(e.aggFunc==="MAX"&&m>0||e.aggFunc==="MIN"&&m<0)&&(d=R)}let E=e.aggFunc==="COUNT"?c:e.aggFunc==="SUM"?u:e.aggFunc==="AVG"?c===0?0:u/c:d??0;p.push(String(E))}if(e.frame===null){let f=p[p.length-1];for(let R of o)At(R.row,t,f,[e.alias]);return}if(e.frame.unit==="RANGE"){for(let f=0;f<o.length;){let R=f;for(;R+1<o.length&&n.compare(o[R],o[R+1])===0;)R++;for(let E=f;E<=R;E++)At(o[E].row,t,p[R],[e.alias]);f=R+1}return}for(let f=0;f<o.length;f++)At(o[f].row,t,p[f],[e.alias])}function SS(e,t){let n=t.tableAlias?`${t.tableAlias}.${t.field}`:t.field;return Fe(ot(e),n)}function ka(e,t,n){let r=n??0;return t===null?e.slice(r):e.slice(r,r+t)}function Ua(e,t,n,r={}){let i=ot(t);switch(e.type){case"VARIABLE_COL":throw new Error(`internal error: unresolved SELECT variable @${e.name}`);case"WILDCARD":return{kind:"EXPANDED",entries:(r.wildcardKeys??Object.keys(i)).map(a=>[a,i[a]!==void 0?i[a]:null])};case"PARENT_WILDCARD":return{kind:"EXPANDED",entries:(r.parentWildcardKeys??Object.keys(i).filter(a=>a.startsWith("_p.")).sort()).map(a=>[a,i[a]!==void 0?i[a]:null])};case"FIELD":return Fe(i,e.field);case"LITERAL_COL":return e.value;case"AGGREGATE":{let o=de(e.func,e.distinct,e.arg);return je(t,n)??Ie(t,e.alias??o)??Ie(t,o)??vt(t,e.alias??o)??vt(t,o)??"0"}case"ARITH_AGG_COL":{let o=e.alias??gi(e.expr);return je(t,n)??Ie(t,o)??vt(t,o)??"0"}case"ARITH_COL":return String(me(e.expr,i,r.evaluationContext));case"CASE_COL":return Be(e.expr)?je(t,n)??Ie(t,du(e.alias,n))??vt(t,du(e.alias,n))??"":Ke(e.expr,i,r.resolveFieldType,r.resolveFieldSemantics,r.evaluationContext);case"GROUPING_COL":return zn(e.ref,t);case"STRFUNC_COL":{let o=on(e.expr);return hi(e.expr)?je(t,n)??Ie(t,e.alias??o)??Ie(t,o)??vt(t,e.alias??o)??vt(t,o)??ge(e.expr,i,r.resolveFieldType,r.resolveFieldSemantics,r.evaluationContext):ge(e.expr,i,r.resolveFieldType,r.resolveFieldSemantics,r.evaluationContext)}case"SCALAR_VALUE_COL":{let o=St(e.expr);return rn(e.expr)?je(t,n)??Ie(t,e.alias??o)??Ie(t,o)??vt(t,e.alias??o)??vt(t,o)??"":String(be(e.expr,i,r.resolveFieldType,r.resolveFieldSemantics,r.evaluationContext))}case"SCALAR_SUBQUERY_COL":return r.scalarCache?.get(n)??"";case"WINDOW_COL":return je(t,n)??Ie(t,e.alias)??vt(t,e.alias)??""}}function TS(e,t,n={}){return e.map((r,i)=>{let o=Ua(r,t,i,n);return typeof o=="string"?o:o.entries.map(([,a])=>a)})}function Sn(e,t,n,r,i,o,a,s={}){if(t.length===1&&t[0].type==="WILDCARD"){let R=e.map(m=>{let g=lE(oE(m),a),y=Ua(t[0],m,0,{wildcardKeys:Object.keys(g)}),T={};if(typeof y!="string")for(let[h,I]of y.entries)I!==null&&(T[h]=I);return T}),E=R.length>0?Object.keys(R[0]):[...i??[]];return{rows:R,columns:E}}let l=NS(t),p=bS(t),c=t.some(R=>R.type==="WILDCARD"||R.type==="PARENT_WILDCARD"),u=c?null:IS(t,l,p),d=u??[];return c&&e.length===0?{rows:[],columns:wS(t,l,p)}:{rows:e.map((R,E)=>{let m={},g={scalarCache:n,resolveFieldType:r,resolveFieldSemantics:o,evaluationContext:s,wildcardKeys:Object.keys(lE(oE(R),a)),parentWildcardKeys:Object.keys(R).filter(y=>y.startsWith("_p.")).sort()};for(let[y,T]of t.entries()){let h=Ua(T,R,y,g);switch(T.type){case"VARIABLE_COL":break;case"WILDCARD":if(typeof h!="string")for(let[I,C]of h.entries)C!==null&&(m[I]=C);break;case"PARENT_WILDCARD":{if(typeof h!="string")for(let[I,C]of h.entries)C!==null&&(m[I]=C),E===0&&d.push(I);break}case"FIELD":{let I=u?.[y]??T.alias??l.get(y)??T.field;m[I]=h,u===null&&E===0&&d.push(I);break}case"LITERAL_COL":{let I=u?.[y]??T.alias??`'${T.value}'`;m[I]=h,u===null&&E===0&&d.push(I);break}case"AGGREGATE":{let I=de(T.func,T.distinct,T.arg),C=u?.[y]??T.alias??I;m[C]=h,u===null&&E===0&&d.push(C);break}case"ARITH_AGG_COL":{let I=u?.[y]??T.alias??gi(T.expr);m[I]=h,u===null&&E===0&&d.push(I);break}case"ARITH_COL":{let I=u?.[y]??T.alias??yu(T.expr);m[I]=h,u===null&&E===0&&d.push(I);break}case"CASE_COL":{let I=u?.[y]??T.alias??p.get(y)??"case";m[I]=h,u===null&&E===0&&d.push(I);break}case"GROUPING_COL":{let I=u?.[y]??T.alias??`GROUPING(${T.ref.field.tableAlias?`${T.ref.field.tableAlias}.`:""}${T.ref.field.field})`;m[I]=h,u===null&&E===0&&d.push(I);break}case"STRFUNC_COL":{let I=u?.[y]??T.alias??on(T.expr);m[I]=h,u===null&&E===0&&d.push(I);break}case"SCALAR_VALUE_COL":{let I=u?.[y]??T.alias??St(T.expr);m[I]=h,u===null&&E===0&&d.push(I);break}case"SCALAR_SUBQUERY_COL":{let I=u?.[y]??T.alias??"(subquery)";m[I]=h,u===null&&E===0&&d.push(I);break}case"WINDOW_COL":{let I=u?.[y]??T.alias;m[I]=h,u===null&&E===0&&d.push(I);break}}}return m}),columns:d}}function IS(e,t,n){return e.map((r,i)=>gE(r,i,t,n))}function wS(e,t,n){let r=[],i=new Set;for(let[o,a]of e.entries()){if(a.type==="WILDCARD"||a.type==="PARENT_WILDCARD")continue;let s=gE(a,o,t,n);i.has(s)||(i.add(s),r.push(s))}return r}function gE(e,t,n,r){switch(e.type){case"VARIABLE_COL":throw new Error(`internal error: unresolved SELECT variable @${e.name}`);case"FIELD":return e.alias??n.get(t)??e.field;case"LITERAL_COL":return e.alias??`'${e.value}'`;case"AGGREGATE":return e.alias??de(e.func,e.distinct,e.arg);case"ARITH_AGG_COL":return e.alias??gi(e.expr);case"ARITH_COL":return e.alias??yu(e.expr);case"CASE_COL":return e.alias??r.get(t)??"case";case"STRFUNC_COL":return e.alias??on(e.expr);case"SCALAR_VALUE_COL":return e.alias??St(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 bS(e){let t=new Set(e.flatMap(i=>"alias"in i&&i.alias!==null?[i.alias]:[])),n=new Map,r=1;for(let[i,o]of e.entries()){if(o.type!=="CASE_COL"||o.alias!==null)continue;let a;do a=r===1?"case":`case_${r}`,r++;while(t.has(a));t.add(a),n.set(i,a)}return n}function NS(e){let t=new Map;for(let r of e){if(r.type!=="FIELD"||r.alias)continue;let i=iE(r.field);t.set(i,(t.get(i)??0)+1)}let n=new Map;for(let[r,i]of e.entries()){if(i.type!=="FIELD"||i.alias)continue;let o=iE(i.field),a=(t.get(o)??0)>1,s=i.field.includes(".")&&!i.field.startsWith("_p.");n.set(r,a&&s?i.field:o)}return n}function iE(e){if(e.startsWith("_p."))return e;let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function oE(e){let t={};for(let[n,r]of Object.entries(e))n.startsWith("_p.")||(t[n]=r);return t}function yu(e){let t=n=>{if(n.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${n.name} reached arithmetic column labeling.`);return n.type==="FIELD_REF"?n.field:n.type==="NUMBER"?z(n):n.type==="STRING_FUNC"?on(n):`(${t(n.left)}${n.op}${t(n.right)})`};return e.type==="ARITH"?`${t(e.left)}${e.op}${t(e.right)}`:t(e)}function on(e){let t=e.args.map(n=>n.type==="AGG_REF"||n.type==="AGG_ARITH"||n.type==="AGG_GROUP_KEY"?gi(n):n.type==="VARIABLE"?`@${n.name}`:St(n));return`${e.func}(${t.join(",")})`}function St(e){switch(e.type){case"STRING":return`'${e.value}'`;case"NUMBER":return z(e);case"VARIABLE":return`@${e.name}`;case"FIELD":return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;case"STRING_FUNC":return on(e);case"CASE_WHEN":return"case";case"SCALAR_ARITH":return`${St(e.left)}${e.op}${St(e.right)}`;case"CONCAT_OP":return`${St(e.left)}||${St(e.right)}`}}function CS(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"?!1:rn(e)}function rn(e){return e.type==="STRING_FUNC"?hi(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?rn(e.left)||rn(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>aE(t.result))||e.elseResult!==null&&aE(e.elseResult):!1}function aE(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?!1:rn(e)}function hi(e){return e.args.some(t=>CS(t))}function PS(e,t,n){if(e.type==="AGG_REF"){let r=mi(e.func,e.distinct,e.arg,e.separator,t,n);return typeof r=="number"?{type:"NUMBER",value:r,raw:String(r)}:{type:"STRING",value:r}}if(e.type==="AGG_ARITH"){let r=Ei(e,t,n);return{type:"NUMBER",value:r,raw:String(r)}}if(e.type==="AGG_GROUP_KEY"){let r=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return{type:"NUMBER",value:Number(Fe(t[0]??{},r)),raw:Fe(t[0]??{},r)}}if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved aggregate arithmetic variable @${e.name}.`);return e.type==="STRING_FUNC"?hu(e,t,n):Ri(e,t,n)}function Ri(e,t,n){return e.type==="STRING_FUNC"?hu(e,t,n):e.type==="CASE_WHEN"?yE(e,t,n):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?{...e,left:Ri(e.left,t,n),right:Ri(e.right,t,n)}:e}function sE(e,t,n){if(e.type==="AGG_REF"){let r=mi(e.func,e.distinct,e.arg,e.separator,t,n);return typeof r=="number"?{type:"NUMBER",value:r,raw:String(r)}:{type:"STRING",value:r}}if(e.type==="AGG_ARITH"){let r=Ei(e,t,n);return{type:"NUMBER",value:r,raw:String(r)}}return e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?e:Ri(e,t,n)}function yE(e,t,n){return{...e,branches:e.branches.map(r=>({...r,result:sE(r.result,t,n)})),elseResult:e.elseResult===null?null:sE(e.elseResult,t,n)}}function hu(e,t,n){return{type:"STRING_FUNC",func:e.func,args:e.args.map(r=>PS(r,t,n))}}function lE(e,t){if(!t||t.size===0)return e;let n={};for(let[r,i]of Object.entries(e))[...t].some(o=>r.startsWith(`${o}.`))||(n[r]=i);return n}function uE(e,t){if(e!==void 0)return t?e.flatMap(n=>[`${t}.${n}`,n]):[...e]}function uu(e,t,n){if(!(e===void 0&&t===void 0&&n.length===0))return[...new Set([...e??[],...t??[],...Object.keys(n[0]??{})])]}function OS(e,t){let n=new Map;for(let r of e)if(!(!("alias"in r)||!r.alias))if(r.type==="ARITH_COL"||r.type==="ARITH_AGG_COL")n.set(r.alias,B("number"));else if(r.type==="WINDOW_COL"){if(Ms(r)||co(r)&&(r.aggFunc==="COUNT"||r.aggFunc==="SUM"||r.aggFunc==="AVG"))n.set(r.alias,B("number"));else if((co(r)||Us(r))&&r.arg.type!=="WILDCARD"){let i=yi(r.arg,t)??"string";n.set(r.alias,typeof i=="string"?B(i):i)}}else 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"?n.set(r.alias,B("number")):r.func==="GROUP_CONCAT"&&n.set(r.alias,B("string")):r.type==="LITERAL_COL"||r.type==="CASE_COL"||r.type==="SCALAR_SUBQUERY_COL"||r.type==="SCALAR_VALUE_COL"?n.set(r.alias,B("string")):r.type==="STRFUNC_COL"&&n.set(r.alias,B(mE.has(r.expr.func)?"number":"string"));return n}function Au(e){let{stmt:t,tables:n,scalarCache:r,optionOrders:i,sortKinds:o,orderSemantics:a,fieldTypeResolver:s,fieldSemanticsResolver:l,havingFieldTypeResolver:p,havingFieldSemanticsResolver:c,aggregateSortKindResolver:u,appliedKlikes:d,sourceColumns:f,tableColumns:R,hiddenQualifiedAliases:E,resolvedGroupingSpec:m,plainGroupByPlan:g,warnings:y,evaluationContext:T}=e,h=OS(t.columns,u);for(let[_,b]of a??[])h.set(_,b);let I=[],C=t.from.alias;I=(n.get(C)??n.get(null)??[]).map(_=>Mt(_,C));let P=uu(uE(R?.get(C),C),void 0,I);for(let _ of t.joins){let b=_.table.alias,A=(n.get(b)??[]).map(x=>Mt(x,b)),w=uu(uE(R?.get(b),b),void 0,A);I=oS(I,A,_,{leftColumns:P,rightColumns:w}),P=uu(P,w,I)}let U=e.residualWhere!==void 0?e.residualWhere:t.where;I=sS(I,U,s,d,l,T);let M=Z(t);if(M.type==="GROUPING_SETS"){if(!m)throw new Error("internal error: B65 grouping sets require a metadata-resolved grouping spec.");I=uS(I,m,t.columns,u,{maxGeneratedRows:5e4,evaluationContext:T})}else(M.type==="PLAIN"||pE(t.columns))&&(I=lS(I,M.type==="PLAIN"?M.allItems:[],t.columns,u,M.type==="PLAIN"?g:void 0,{scalarCache:r,resolveFieldType:s,resolveFieldSemantics:l,evaluationContext:T}));eE(t.columns,I,y);let N=_=>_.aggregateRef?EE(_.aggregateRef,u):c?.(_);return eE(t.having,I,y),I=dS(I,t.having,p,N,T),I=gu(I,t.columns,i,o,h,u,T),t.distinct&&(I=fS(I,t.columns,r,s,l,T)),I=Ru(I,t.orderBy,i,o,h,mu(t.columns,r,s,l,T),T),I=ka(I,t.limit,t.offset),Sn(I,t.columns,r,s,f,l,E,T)}function hE(e,t){let n=[];for(let r of e){let i=Su(r.$id?.value),o=LS(r[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,c]of Object.entries(r)){if(p===t)continue;let u=Su(c?.value);l[`_p.${p}`]={value:u}}for(let[p,c]of Object.entries(s.value??{}))l[p]={value:Su(c?.value)};n.push(l)}}return n}function LS(e){return Array.isArray(e)?e.filter(t=>!!t&&typeof t=="object"):[]}function Su(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)}}var Tn={HEADER_UNKNOWN_KEY:"KSQL1001",HEADER_DUPLICATE_KEY:"KSQL1002",HEADER_INVALID_NAME:"KSQL1003",HEADER_INVALID_DEPENDS_ON:"KSQL1004",HEADER_INVALID_TIMEOUT:"KSQL1005",HEADER_INVALID_DIALECT:"KSQL1006",LOGICAL_APP_UNRESOLVED:"KSQL1101",LEX_ERROR:"KSQL1201",PARSE_ERROR:"KSQL1202"};function _S(e,t){let n=Math.max(0,Math.min(t,e.length)),r=1,i=1;for(let o=0;o<n;o++){let a=e[o];a==="\r"?(e[o+1]===`
5
+ `&&o+1<n&&o++,r++,i=1):a===`
6
+ `?(r++,i=1):i++}return{line:r,column:i}}function In(e,t,n){return{...n,..._S(e,t)}}var DS=/^(\s*)--\s*@ksql\s+([^:\s]+)\s*:\s*(.*)$/i;function Tu(e){let t={name:null,dependsOn:[],timeout:null,dialect:0},n=[],r=new Set,i=!1,o=e.charCodeAt(0)===65279?1:0,a=o;for(;o<e.length;){let s=US(e,o),l=e.slice(o,s.contentEnd);if(!/^\s*--/.test(l))break;a=s.next;let p=DS.exec(l);if(p){i=!0;let c=p[2],u=c.toLowerCase(),d=p[3],f=d.indexOf("#"),R=f<0?d:d.slice(0,f),E=R.match(/^\s*/)?.[0].length??0,m=R.trim(),g=o+p.index+p[0].length-d.length+E;vS(u)?r.has(u)?n.push(In(e,g,{severity:"warning",code:Tn.HEADER_DUPLICATE_KEY,message:`Duplicate @ksql header key "${u}" was ignored; the first value is retained.`})):(r.add(u),MS(t,u,m,e,g,n)):n.push(In(e,g,{severity:"warning",code:Tn.HEADER_UNKNOWN_KEY,message:`Unknown @ksql header key "${c}" was ignored.`}))}o=s.next}return{meta:t,diagnostics:n,hasDirectives:i,headerEnd:a}}function vS(e){return e==="name"||e==="depends_on"||e==="timeout"||e==="dialect"}function MS(e,t,n,r,i,o){if(t==="name"){n?e.name=n:o.push(In(r,i,{severity:"error",code:Tn.HEADER_INVALID_NAME,message:"@ksql name must not be empty."}));return}if(t==="depends_on"){let a=n.split(",").map(s=>s.trim());!n||a.some(s=>!s)?o.push(In(r,i,{severity:"error",code:Tn.HEADER_INVALID_DEPENDS_ON,message:"@ksql depends_on must be a comma-separated list without empty items."})):e.dependsOn=a;return}if(t==="timeout"){!/^[1-9]\d*$/.test(n)||!Number.isSafeInteger(Number(n))?o.push(In(r,i,{severity:"error",code:Tn.HEADER_INVALID_TIMEOUT,message:"@ksql timeout must be a positive integer."})):e.timeout=Number(n);return}n!=="0"&&n!=="1"?o.push(In(r,i,{severity:"error",code:Tn.HEADER_INVALID_DIALECT,message:"@ksql dialect must be 0 or 1."})):e.dialect=Number(n)}function US(e,t){let n=t;for(;n<e.length&&e[n]!=="\r"&&e[n]!==`
7
+ `;)n++;let r=n;return e[n]==="\r"&&e[n+1]===`
8
+ `?n+=2:n<e.length&&n++,{contentEnd:r,next:n}}function AE(e){return["$id",...new Set([...e.topLevel.map(t=>t.code).filter(t=>t!=="$id"&&t!=="$revision"),...e.subtables.keys()])]}function SE(e,t){let n=Ai(e);for(let[r,i]of Object.entries(t))n[r]=Ai(i);return n}function TE(e){let t=[...e.preErrors.map(i=>Iu(i)),...e.postImageErrors.map(i=>Iu(i,i.$err_subtable!=="")),...e.checkErrors.map(i=>Iu(i))],n=new Set;t.length>0&&n.add(e.rowNumber);let r={};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}`);r[i]=Ai(e.normalizedPostImage[i])}return{errors:t,invalidRows:n.size,invalidRowNumbers:n,writeRecord:r}}function Iu(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 Ai(e,t=new Map){if(e===null||typeof e!="object")return e;let n=e,r=t.get(n);if(r!==void 0)return r;if(Array.isArray(e)){let o=[];t.set(n,o);for(let a of e)o.push(Ai(a,t));return o}let i={};t.set(n,i);for(let[o,a]of Object.entries(e))i[o]=Ai(a,t);return i}function wE(e,t){let n=[],r=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"&&tt(a.name)&&!r.has(a.name)){r.add(a.name),n.push(a.name);return}t&&a.type==="SELECT"||Object.values(a).forEach(i)};return i(e),n}function bu(e){return wE(e,!0)}function xa(e,t){let n=[],r=new Set,i=o=>{if(Array.isArray(o)){o.forEach(i);return}if(o===null||typeof o!="object"||r.has(o))return;r.add(o);let a=o;if(a.type==="SELECT"&&o!==t){n.push(o);return}Object.values(a).forEach(i)};return i(e),n}function at(e,t,n,r,i=!0,o=!0,a=r){let s=bu(e.where);s.length>0&&n.push({kind:r?"FORBIDDEN":"SELECT",source:e,where:e.where,functionNames:s,path:t,allowPhase2Prefilter:i,allowFullScanExact:o,relativeFunctionOccurrences:Te(e.where)}),xa(e,e).forEach((l,p)=>at(l,`${t}.select-source[${p}]`,n,a,a?!1:i,a?!1:o,a))}function Si(e,t,n,r,i=!0){e.left.type==="UNION"?Si(e.left,`${t}.left`,n,r,i):at(e.left,`${t}.left`,n,r,!0,i),at(e.right,`${t}.right`,n,r,!0,i)}function IE(e,t,n,r){if(!r&&zt(e)){at(qt(e),`${t}.inlined`,n,!1,!0,!0);return}e.ctes.forEach((i,o)=>{i.query.type==="SELECT"?at(i.query,`${t}.cte[${o}]`,n,r,!1,!r,!0):i.query.type==="UNION"&&Si(i.query,`${t}.cte[${o}]`,n,!0,!1)}),e.query.type==="SELECT"?at(e.query,`${t}.main`,n,r,!1,!r,!0):Si(e.query,`${t}.main`,n,!0,!1)}function bE(e,t,n,r=!1){switch(e.type){case"SELECT":at(e,t,n,r);return;case"UNION":Si(e,t,n,r);return;case"WITH":IE(e,t,n,r);return;case"CREATE_TEMP_TABLE":e.query.type==="WITH"?IE(e.query,`${t}.query`,n,!1):e.query.type==="UNION"?Si(e.query,`${t}.query`,n,!0,!1):at(e.query,`${t}.query`,n,!1,!1,!0,!0);return;case"EXPLAIN":bE(e.query,`${t}.query`,n,r);return;case"VALIDATE":case"REORDER":{let i=bu(e.where);i.length>0&&n.push({kind:"FORBIDDEN",source:e,where:e.where,functionNames:i,path:t,allowFullScanExact:!1,relativeFunctionOccurrences:Te(e.where)}),xa(e,e).forEach((o,a)=>at(o,`${t}.select-source[${a}]`,n,!0,!0,!1));return}case"UPDATE":case"DELETE":{let i=bu(e.where);if(i.length>0){let o=r||!!e.subtableCode||e.type==="UPDATE"&&(e.from!=null||!!e.applyBlocks?.length);n.push({kind:o?"FORBIDDEN":"DML",source:e,where:e.where,functionNames:i,path:t,allowFullScanExact:!1,relativeFunctionOccurrences:Te(e.where)})}if(e.type==="UPDATE"&&e.applyBlocks?.length){let o=wE(e.applyBlocks,!0);o.length>0&&n.push({kind:"FORBIDDEN",source:e,where:null,functionNames:o,path:`${t}.apply`,allowFullScanExact:!1,relativeFunctionOccurrences:[]})}xa(e,e).forEach((o,a)=>at(o,`${t}.select-source[${a}]`,n,r,!1,!1));return}default:xa(e,e).forEach((i,o)=>at(i,`${t}.select-source[${o}]`,n,r,!1,!1))}}function Fa(e,t){let n=new Map;for(let r of t){if(!tt(r))return!1;n.set(r,(n.get(r)??0)+1)}for(let[r,i]of n)if((e.match(new RegExp(`\\b${r}\\s*\\(`,"g"))?.length??0)<i)return!1;return!0}function Nu(e,t){return t.eligible===!0&&We(e)==="FULL_SCAN"&&e.orderMode!=="KINTONE_NATIVE"&&e.from.cteName===null&&!e.from.subtableCode&&e.joins.length===0}function kS(e,t){return e.where!==null&&e.joins.length>0&&e.joins.every(n=>n.type==="INNER"||n.type==="CROSS")&&[e.from,...e.joins.map(n=>n.table)].every(n=>n.alias!==null&&n.cteName===null&&!n.subtableCode)&&cr(t)}function xS(e){return{kind:e.kind,source:e.source,functionNames:e.functionNames,path:e.path,clientWhereEvaluation:!0,allowed:!1}}function FS(e,t){let n=(t?.reasons??[]).filter(r=>r.functionName===e).map(r=>r.code).filter(r=>r.startsWith("WHERE_RELATIVE_DATE_")||r.startsWith("WHERE_KINTONE_FUNCTION_"));return Bn(e)?(n.some(r=>r!==bt)||n.unshift("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED"),n.includes(bt)||n.push(bt)):n.includes(un)||n.push(un),[...new Set(n)]}function wu(e,t){let n=e.functionNames[0],r=Bn(n)?bt:un,i=FS(n,t);return{functionName:n,path:e.path,code:i.find(o=>o!==r)??r,reasonCodes:i}}async function NE(e,t){let n=[];bE(e,"statement",n);let r=[];for(let i of n){if(i.kind==="FORBIDDEN"){let c=xS(i);return r.push(c),{hasRelativeDate:i.functionNames.some(ie),hasServerOnlyWhereFunction:!0,nodes:r,allowed:!1,rejection:wu(i)}}if(i.kind==="SELECT"){let c=i.source,u=c.from.cteName===null&&!c.from.subtableCode&&c.joins.length===0,d=We(c),f=await t.select(c),R="";try{R=i.where===null?"":j(i.where)}catch{R=""}let E=u&&d==="SIMPLE"&&(c.orderBy.length===0||c.orderMode==="KINTONE_NATIVE")&&f.capability==="EXACT_PUSHDOWN"&&Fa(R,i.relativeFunctionOccurrences),m,g;if(!E&&i.allowPhase2Prefilter!==!1&&f.capability==="SUPERSET_PREFILTER"&&t.prefilterDecomposition){let I=await t.prefilterDecomposition(c);I?.eligible===!0&&Nu(c,I)&&(m=I.plan,g=!0,E=!0)}let y;!E&&f.capability==="EXACT_PUSHDOWN"&&(y=$o({select:c,selectMode:d,capability:f,context:{allowFullScanExact:i.allowFullScanExact},serializedWholeWhere:R||null,relativeFunctionNames:i.relativeFunctionOccurrences})??void 0,y&&(m=y.prefilterPlan,E=!0));let T;if(!E&&t.joinServerFunctionPlan){let I=await t.joinServerFunctionPlan(c);I!==null&&kS(c,I)&&(T=I,E=!0)}let h={kind:i.kind,source:i.source,functionNames:i.functionNames,path:i.path,selectMode:d,capability:f,restQuery:R,...m?{prefilterPlan:m,phase2PrefilterEligible:g}:{},...y?{fullScanExactPlan:y,allowForm:y.allowForm}:{},...T?{joinServerFunctionPlan:T,allowForm:"JOIN_SERVER_FUNCTION_EXACT",joinServerFunctionVariant:T.serverFunctionCandidate.variant}:{},clientWhereEvaluation:!E,allowed:E};if(r.push(h),!E)return{hasRelativeDate:n.some(I=>I.functionNames.some(ie)),hasServerOnlyWhereFunction:!0,nodes:r,allowed:!1,rejection:wu(i,f)};continue}let o=i.source,a=await t.dml(o),s="";try{s=i.where===null?"":j(i.where)}catch{s=""}let l=a.capability==="EXACT_PUSHDOWN"&&Fa(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(r.push(p),!l)return{hasRelativeDate:n.some(c=>c.functionNames.some(ie)),hasServerOnlyWhereFunction:!0,nodes:r,allowed:!1,rejection:wu(i,a)}}return{hasRelativeDate:n.some(i=>i.functionNames.some(ie)),hasServerOnlyWhereFunction:n.length>0,nodes:r,allowed:!0}}function Cu(e){if(!e.allowed&&e.rejection){let t=Bn(e.rejection.functionName)?bt:un,n=e.rejection.reasonCodes.filter(r=>r!==t);throw new Error(`${e.rejection.functionName}: ${t}${n.length>0?` (reason=${n.join(", ")})`:""} (path=${e.rejection.path})`)}}function Pu(e,t,n={}){let r=he(e.where,t),i=(T,h="INELIGIBLE")=>({eligible:!1,disposition:h,reasonCodes:T,capability:r.capability,reasons:r.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=Ii(e.where);if(o.length===0)return i(["NO_RELATIVE_DATE"]);let a=GS(e.where,t);if(!a.ok)return i(a.reasonCodes);if(!KS(o,a.leaves))return i(["RELATIVE_DATE_LEAF_COUNT_MISMATCH"]);if(r.capability==="EXACT_PUSHDOWN")return i(["DEFER_TO_PHASE1"],"DEFER_PHASE1");if(r.capability!=="SUPERSET_PREFILTER")return i(["CAPABILITY_NOT_SUPERSET_PREFILTER"]);let s=BS(e.where,t),l=Gr(e.where,{tableAlias:e.from.alias??void 0,allowUnqualifiedFields:!0,allowKlike:!0,fieldTypes:s.fieldTypes,fieldOptions:s.fieldOptions}),p=n.serialize??j,c=n.containsFunctions??Fa,u=[];for(let T of a.leaves){let h=Ba(T);if(h===null)return i(["RELATIVE_DATE_LEAF_COUNT_MISMATCH"]);let I;try{I=p(T)}catch{return i(["PREFILTER_SERIALIZATION_FAILED"])}if(!c(I,[h]))return i(["PREFILTER_FUNCTION_MISSING"]);u.push(T)}let d=$S(l.condition),f=new Set(u),R=Ka(e.where,f,d);if(R===null)return i(["RELATIVE_DATE_LEAF_COUNT_MISMATCH"]);let E;try{E=p(R)}catch{return i(["PREFILTER_SERIALIZATION_FAILED"])}let m=u.map(T=>Ba(T));if(!c(E,[...new Set(m)])||!VS(E,m))return i(["PREFILTER_FUNCTION_MISSING"]);let g=n.rewriteResidual?n.rewriteResidual(e.where,f):$a(e.where,f);if(g!==null&&Ii(g).length>0)return i(["RESIDUAL_RELATIVE_DATE_REMAINED"]);if(g===null)return i(["DEFER_TO_PHASE1"],"DEFER_PHASE1");let y=new Set;for(let T of m)y.add(T);return{eligible:!0,plan:{prefilterWhere:R,residualWhere:g,exactRelativeLeaves:u,relativeFunctionNames:y,appliedKlikes:l.appliedKlikes,capability:r.capability,reasons:r.reasons}}}function GS(e,t){let n=[],r=null,i=o=>{if(r===null)switch(o.type){case"GROUP":i(o.expr);return;case"LOGICAL":if(o.op==="AND"){i(o.left),i(o.right);return}Ii(o).length>0&&(r="RELATIVE_DATE_CONTEXT_UNSUPPORTED");return;case"NOT":Ii(o).length>0&&(r="RELATIVE_DATE_CONTEXT_UNSUPPORTED");return;case"BINARY":{if(Ba(o)===null)return;if(he(o,t).capability!=="EXACT_PUSHDOWN"){r="RELATIVE_DATE_LEAF_NOT_EXACT";return}n.push(o);return}case"EXISTS":Ii(o).length>0&&(r="RELATIVE_DATE_CONTEXT_UNSUPPORTED");return;case"NULL_CHECK":case"BOOLEAN":return}};return i(e),r===null?{ok:!0,leaves:n}:{ok:!1,reasonCodes:[r]}}function Ba(e){return e.right.type==="KINTONE_FUNC"&&tt(e.right.name)?e.right.name:e.right.type==="IN_LIST"&&e.right.values.length===1&&e.right.values[0].type==="KINTONE_FUNC"&&tt(e.right.values[0].name)?e.right.values[0].name:null}function Ii(e){let t=[],n=r=>{if(r.type==="BINARY"&&Ba(r)!==null){t.push(r);return}switch(r.type){case"LOGICAL":n(r.left),n(r.right);return;case"NOT":case"GROUP":n(r.expr);return;case"EXISTS":r.query.where!==null&&n(r.query.where);return;case"BINARY":case"NULL_CHECK":case"BOOLEAN":return}};return n(e),t}function KS(e,t){if(e.length!==t.length)return!1;let n=new Set(t);for(let r of e)if(!n.delete(r))return!1;return n.size===0}function $S(e){let t=new Set,n=r=>{switch(r.type){case"BINARY":t.add(r);return;case"LOGICAL":n(r.left),n(r.right);return;case"NOT":case"GROUP":n(r.expr);return;case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}};return e!==null&&n(e),t}function Ka(e,t,n){switch(e.type){case"BINARY":return t.has(e)||n.has(e)?e:null;case"LOGICAL":if(e.op!=="AND")return null;{let r=Ka(e.left,t,n),i=Ka(e.right,t,n);return r!==null&&i!==null?{...e,left:r,right:i}:r??i}case"GROUP":{let r=Ka(e.expr,t,n);return r===null?null:{...e,expr:r}}case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return null}}var Ti={type:"BOOLEAN",value:!0};function $a(e,t){if(e.type==="BINARY"&&t.has(e))return Ti;switch(e.type){case"LOGICAL":{if(e.op!=="AND")return e;let n=$a(e.left,t)??Ti,r=$a(e.right,t)??Ti;return Ga(n)?Ga(r)?null:r:Ga(r)?n:n===e.left&&r===e.right?e:{...e,left:n,right:r}}case"GROUP":{let n=$a(e.expr,t)??Ti;return Ga(n)?Ti:n===e.expr?e:{...e,expr:n}}case"BINARY":case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return e}}function Ga(e){return e.type==="BOOLEAN"&&e.value}function BS(e,t){let n=new Map,r=a=>{if(a===null||typeof a!="object")return;if(Array.isArray(a)){a.forEach(r);return}let s=a;if(s.type!=="SELECT"){if(s.type==="FIELD"&&typeof s.field=="string"&&typeof s.tableAlias<"u"){n.set(s.field,a);return}Object.values(s).forEach(r)}};r(e);let i=new Map,o=new Map;for(let[a,s]of n){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 VS(e,t){let n=new Map;for(let r of t){if(!wr.has(r))return!1;n.set(r,(n.get(r)??0)+1)}for(let[r,i]of n)if((e.match(new RegExp(`\\b${r}\\s*\\(`,"g"))?.length??0)<i)return!1;return!0}var W=class extends Error{constructor(t){super(`ImportSourceError: ${t}`),this.name="ImportSourceError"}};function CE(e,t){if(!t)throw new W("IMPORT source capability is not available.");let n=t(e);if(!n)throw new W(`source "${e}" is not supplied.`);return n}async function Va(e,t){let n=t.get(e);return n||(n=e.load().then(r=>{if(!(r.bytes instanceof Uint8Array))throw new W("loader must return Uint8Array bytes.");if(r.bytes.byteLength>10485760)throw new W("source exceeds the 10485760 byte limit.");return r}),t.set(e,n)),n}function WS(e,t){try{return new TextDecoder(t==="sjis"?"shift_jis":"utf-8",{fatal:!0}).decode(e).replace(/^\uFEFF/,"")}catch{throw new W(`invalid ${t.toUpperCase()} byte sequence.`)}}function HS(e){let t=[],n=[],r="",i=!1,o=!1,a=0,s=()=>{n.push(r),r="",o=!1},l=()=>{s(),t.push(n),n=[]};for(;a<e.length;){let p=e[a];if(i){if(p==='"'){if(e[a+1]==='"'){r+='"',a+=2;continue}i=!1,o=!0,a++;continue}r+=p,a++;continue}if(o&&p!==","&&p!=="\r"&&p!==`
9
+ `)throw new W(`unexpected character after closing quote at offset ${a}.`);if(p==='"'){if(r.length!==0)throw new W(`quote in unquoted cell at offset ${a}.`);i=!0,a++;continue}if(p===","){s(),a++;continue}if(p==="\r"||p===`
10
+ `){p==="\r"&&e[a+1]===`
11
+ `&&a++,l(),a++;continue}r+=p,a++}if(i)throw new W("unterminated quoted cell.");return(r.length>0||n.length>0||o)&&l(),t}function YS(e){let t=new Set;e.forEach((n,r)=>{if(n==="")throw new W(`CSV column ${r+1} has an empty name.`);if(t.has(n))throw new W(`CSV column name "${n}" is duplicated.`);t.add(n)})}function Wa(e,t){let n=HS(WS(e,t.encoding)),r,i;if(t.hasHeader?(r=n[0]??[],i=n.slice(1)):(i=n,r=t.columns?[...t.columns]:Array.from({length:i[0]?.length??0},(o,a)=>`c${a+1}`)),YS(r),i.length===0)throw new W("CSV has no data rows.");return i.forEach((o,a)=>{if(o.length!==r.length)throw new W(`CSV row ${a+(t.hasHeader?2:1)} has ${o.length} cells; expected ${r.length}.`)}),{columns:r,rows:i}}var jS=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),zS=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),wi=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 PE(e,t,n){if(!jS.has(t??""))return e;if(e==="")return[];let r=e.split(/\r\n|\n/);if(r.some(i=>i===""))throw new wi;return zS.has(t??"")?r.map(i=>({code:i})):r}function Ut(e,t,n,r){throw new W(`JSON ${e} (offset=${t}, line=${n}, column=${r}).`)}function OE(e){try{return new TextDecoder("utf-8",{fatal:!0}).decode(e)}catch{throw new W("JSON source is not valid UTF-8.")}}function LE(e){let t=[],n=0,r=1,i=1,o=()=>{let s=e[n++];return s===`
8
12
  `?(r++,i=1):i++,s},a=()=>({offset:n,line:r,column:i});for(;n<e.length;){let s=e[n];if(s===" "||s===" "||s==="\r"||s===`
9
- `){o();continue}let l=a();if("{}[]:,".includes(s)){o(),t.push({kind:"punct",value:s,...l});continue}if(s==='"'){o();let d="",f=!1;for(;n<e.length;){let R=o();if(R==='"'){f=!0;break}if(R.charCodeAt(0)<32&&Mt("string contains an unescaped control character",l.offset,l.line,l.column),R!=="\\"){d+=R;continue}n>=e.length&&Mt("string has an unterminated escape",l.offset,l.line,l.column);let E=o(),m={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:`
10
- `,r:"\r",t:" "};if(E in m){d+=m[E];continue}E!=="u"&&Mt(`has invalid escape \\${E}`,n-2,r,Math.max(1,i-2));let y=e.slice(n,n+4);/^[0-9a-fA-F]{4}$/.test(y)||Mt("has invalid unicode escape",n,r,i);for(let S=0;S<4;S++)o();let g=Number.parseInt(y,16);if(g>=55296&&g<=56319){(e.slice(n,n+2)!=="\\u"||!/^[0-9a-fA-F]{4}$/.test(e.slice(n+2,n+6)))&&Mt("has an unpaired high surrogate",n,r,i),o(),o();let S=e.slice(n,n+4);for(let I=0;I<4;I++)o();let h=Number.parseInt(S,16);(h<56320||h>57343)&&Mt("has an invalid surrogate pair",n-4,r,Math.max(1,i-4)),d+=String.fromCodePoint(65536+(g-55296<<10)+h-56320)}else g>=56320&&g<=57343?Mt("has an unpaired low surrogate",n-4,r,Math.max(1,i-4)):d+=String.fromCharCode(g)}f||Mt("string is unterminated",l.offset,l.line,l.column),t.push({kind:"string",value:d,...l});continue}let c=e.slice(n),p=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/.exec(c)?.[0];if(p){for(let d=0;d<p.length;d++)o();t.push({kind:"number",lexeme:p,...l});continue}let u=/^(true|false|null)/.exec(c)?.[0];if(u){for(let d=0;d<u.length;d++)o();t.push({kind:"literal",value:u==="true"?!0:u==="false"?!1:null,...l});continue}Mt(`has an unexpected token ${JSON.stringify(s)}`,l.offset,l.line,l.column)}return t.push({kind:"eof",offset:n,line:r,column:i}),t}function $a(e){return e.kind==="eof"?"end of input":e.kind==="punct"?e.value:e.kind}function Wa(e){if(e.byteLength===0)throw new V("JSON source is empty.");let t=CE(NE(e)),n=0,r=(c,p=t[n])=>{throw new V(`JSON ${c} (offset=${p.offset}, line=${p.line}, column=${p.column}).`)},i=(c,p)=>c.kind==="punct"&&c.value===p,o=c=>{let p=t[n];(p.kind!=="punct"||p.value!==c)&&r(`expected ${c}; found ${$a(p)}`,p),n++},a=()=>{let c=t[n++];if(c.kind==="string")return c.value;if(c.kind==="number")return{kind:"number",lexeme:c.lexeme};if(c.kind==="literal")return c.value;if(c.kind==="punct"&&c.value==="{"){let p=new Map;if(i(t[n],"}"))return n++,p;for(;;){let u=t[n++];if(u.kind!=="string")return r(`object key must be a string; found ${$a(u)}`,u);let d=u.value;p.has(d)&&r(`duplicate key ${JSON.stringify(d)}`,u),o(":"),p.set(d,a());let f=t[n];if(i(f,"}")){n++;break}o(",")}return p}if(c.kind==="punct"&&c.value==="["){let p=[];if(i(t[n],"]"))return n++,p;for(;;){p.push(a());let u=t[n];if(i(u,"]")){n++;break}o(",")}return p}return r(`expected a value; found ${$a(c)}`,c)},s=a();t[n].kind!=="eof"&&r(`has trailing data; found ${$a(t[n])}`);let l=s instanceof Map?[s]:Array.isArray(s)?s:r("root must be an object or array.",t[0]);if(l.length===0)throw new V("JSON source contains no records.");return l.forEach((c,p)=>{if(!(c instanceof Map))throw new V(`JSON record ${p+1} must be an object.`)}),l}var KS=new Set(["CHECK_BOX","MULTI_SELECT"]),PE=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function St(e,t,n){throw new V(`JSON field validation failed (row=${e}, field=${t}): ${n}`)}function BS(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof Map)&&e.kind==="number"}function $S(e,t,n){if(e===null)return"";if(typeof e=="string")return e;if(typeof e=="boolean"&&St(n,t.code,"boolean is not accepted."),BS(e)){t.fieldType==="NUMBER"&&St(n,t.code,"precision target requires a JSON string."),(!/^-?(?:0|[1-9]\d*)$/.test(e.lexeme)||e.lexeme==="-0")&&St(n,t.code,`JSON number ${e.lexeme} must be a non-negative-zero safe integer lexeme.`);let i=Number(e.lexeme);return Number.isSafeInteger(i)||St(n,t.code,`JSON number ${e.lexeme} is outside the safe integer range.`),String(i)}e instanceof Map&&St(n,t.code,"object is not accepted for a flat field."),Array.isArray(e)||St(n,t.code,"unsupported value type."),!KS.has(t.fieldType)&&!PE.has(t.fieldType)&&St(n,t.code,"array is accepted only for multi-value fields.");let r=e.map(i=>(typeof i!="string"&&St(n,t.code,"array elements must be strings."),i));return new Set(r).size!==r.length&&St(n,t.code,"array elements must not contain duplicates."),PE.has(t.fieldType)?JSON.stringify(r.map(i=>({code:i}))):JSON.stringify(r)}function Nu(e,t,n,r){if(t.encoding&&t.encoding!=="utf8")throw new V("JSON source is UTF-8 only.");let i=Wa(t.bytes);if(i.length>r)throw new V(`source rows (${i.length}) exceed maxRecords (${r}).`);let o=new Map(n.map(l=>[l.code,l]));if(o.size!==n.length)throw new V("JSON target fields contain duplicates.");let a=[],s=[];return i.forEach((l,c)=>{for(let d of l.keys())o.has(d)||St(c+1,d,"unknown key (not declared in INTO).");let p={},u=new Set;for(let d of n)l.has(d.code)&&(u.add(d.code),p[d.code]=$S(l.get(d.code),d,c+1));a.push(p),s.push(u)}),{rows:a,columns:n.map(l=>l.code),columnMeta:new Map(n.map(l=>[l.code,{fieldType:l.fieldType}])),importPresence:s}}function Cu(e,t,n,r,i,o){let a=Ba(t.bytes,{encoding:e.encoding??t.encoding??"utf8",hasHeader:e.hasHeader,columns:e.columns});if(a.rows.length>n)throw new V(`source rows (${a.rows.length}) exceed maxRecords (${n}).`);if(e.mappingMode==="BY_NAME"){if(!r||!i)throw new Error("InternalError: BY NAME requires destination form metadata.");if(new Set(r).size!==r.length)throw new V("ERR_IMPORT_HEADER_REUSED: a BY NAME header cannot be consumed more than once.");let l=new Map(a.columns.map((y,g)=>[y,g]));for(let y of r)if(!l.has(y))throw new V(`ERR_IMPORT_MISSING_COLUMN: required header "${y}" is missing.`);let c=new Map(i.map(y=>[y.code,y])),p=new Set(r);if(o&&p.has(o))throw new V("ERR_IMPORT_HEADER_REUSED: record-number source header is lookup-only and cannot be a write target.");if(o&&!l.has(o))throw new V(`ERR_IMPORT_MISSING_COLUMN: required header "${o}" is missing.`);let u=[],d=[],f=y=>a.rows.filter(g=>g[y]!=="").length,R=y=>y.fieldType==="FILE"?"FILE attachment is outside flat IMPORT scope":y.inSubtable||y.fieldType==="SUBTABLE"?"subtable field is not writable in Phase 3":y.writable===!1?`non-writable ${y.fieldType} field`:`known export-only ${y.fieldType} field`;for(let[y,g]of a.columns.entries()){if(p.has(g)||g===o)continue;let S=c.get(g);if(S)u.push({column:g,reason:R(S),nonEmptyCells:f(y)});else if(e.ignoreUnknownColumns)d.push({column:g,reason:"unknown column ignored by explicit policy",nonEmptyCells:f(y)});else throw new V(`ERR_IMPORT_UNKNOWN_COLUMN: unknown CSV header "${g}".`)}for(let y of r){let g=c.get(y);if(!g)throw new Error(`ArgumentError: DML target field ${y} does not exist.`);if(g.inSubtable||g.writable===!1||g.fieldType==="FILE"||g.fieldType==="SUBTABLE")throw new Error(`ArgumentError: DML target field ${y} is not writable (${g.fieldType}).`)}let E=[];return{rows:a.rows.map(y=>{let g=[],S={};for(let h of r){let I=y[l.get(h)];try{S[h]=bE(I,c.get(h)?.fieldType,{cliKintone:!0})}catch(N){if(!(N instanceof Ti))throw N;S[h]=I,g.push({field:h,code:N.code,message:N.message})}}return E.push(g),S}),columns:[...r],columnMeta:new Map(r.map(y=>[y,{fieldType:c.get(y)?.fieldType??"SINGLE_LINE_TEXT"}])),importRowErrors:E,...o?{recordNumberSourceValues:a.rows.map(y=>y[l.get(o)])}:{},importAudit:{mapping:"BY_NAME",writtenColumns:[...r],ignoredKnownColumns:u,ignoredUnknownColumns:d}}}return{rows:a.rows.map(l=>Object.fromEntries(a.columns.map((c,p)=>[c,l[p]]))),columns:a.columns,columnMeta:new Map(a.columns.map(l=>[l,{fieldType:"SINGLE_LINE_TEXT"}]))}}var Ii=(e,t,n)=>{throw new V(`JSON subtable validation failed (parentRow=${e}, field=${t}): ${n}`)};function OE(e,t,n,r,i=r){if(t.encoding&&t.encoding!=="utf8")throw new V("JSON source is UTF-8 only.");let o=Wa(t.bytes);if(o.length>r)throw new V(`source parent rows (${o.length}) exceed maxRecords (${r}).`);let a=new Map(n.map(l=>[l.kind==="FIELD"?l.field:l.subtableCode,l]));if(a.size!==n.length)throw new V("IMPORT targets contain duplicates.");let s=0;return{records:o.map((l,c)=>{let p=c+1;for(let R of l.keys())a.has(R)||Ii(p,R,"unknown key (not declared in INTO).");let u=new Map,d=new Map,f=new Set;for(let R of n){let E=R.kind==="FIELD"?R.field:R.subtableCode;if(!l.has(E))continue;let m=l.get(E);if(R.kind==="FIELD"){m instanceof Map&&Ii(p,E,"object is not accepted for a top-level field."),u.set(E,m);continue}Array.isArray(m)||Ii(p,E,"subtable value must be an array."),f.add(E);let y=new Set(R.children),g=m.map((S,h)=>{S instanceof Map||Ii(p,E,`childRow=${h+1} must be an object.`);let I=S;for(let N of I.keys())y.has(N)||Ii(p,N,`unknown child key in subtable ${E} at childRow=${h+1}.`);if(s++,s>i)throw new V(`source child rows (${s}) exceed limit (${i}).`);return{childRowNumber:h+1,values:I}});d.set(E,g)}return{rowNumber:p,top:u,subtables:d,replacementTables:f}})}}function LE(e,t,n,r,i,o){let a=Ba(t.bytes,{encoding:e.encoding??t.encoding??"utf8",hasHeader:e.hasHeader,columns:e.columns});if(!e.hasHeader||a.columns[0]!=="*")throw new V('ERR_IMPORT_MARKER: first CSV header must be "*".');let s=new Map(a.columns.map((d,f)=>[d,f]));if(o&&!s.has(o))throw new V(`ERR_IMPORT_MISSING_COLUMN: required header "${o}" is missing.`);let l=n.filter(d=>d.kind==="FIELD"),c=n.filter(d=>d.kind==="SUBTABLE");for(let d of l)if(!s.has(d.field))throw new V(`ERR_IMPORT_MISSING_COLUMN: required header "${d.field}" is missing.`);for(let d of c){if(!d.rowIdSourceHeader||!s.has(d.rowIdSourceHeader))throw new V(`ERR_IMPORT_MISSING_COLUMN: row-ID header for ${d.subtableCode} is missing.`);for(let f of d.children)if(!s.has(f))throw new V(`ERR_IMPORT_MISSING_COLUMN: required child header "${f}" is missing.`)}let p=[],u;if(a.rows.forEach((d,f)=>{let R=f+2,E=d[0];if(E!==""&&E!=="*")throw new V(`ERR_IMPORT_MARKER: invalid marker ${JSON.stringify(E)} at source row ${R}.`);if(E==="*"){if(p.length>=i)throw new V(`source parent rows exceed maxRecords (${i}).`);u={rowNumber:p.length+1,markerRowNumber:R,top:new Map(l.map(m=>[m.field,d[s.get(m.field)]])),subtables:new Map(c.map(m=>[m.subtableCode,[]])),replacementTables:new Set(r),...o?{recordNumberSourceValue:d[s.get(o)]}:{}},p.push(u)}else if(u){for(let m of l){let y=d[s.get(m.field)];if(y!==""&&y!==u.top.get(m.field))throw new V(`ERR_IMPORT_PARENT_VALUE_ON_CONTINUATION: ${m.field} at source row ${R}.`)}if(o){let m=d[s.get(o)];if(m!==""&&m!==u.recordNumberSourceValue)throw new V(`ERR_IMPORT_PARENT_VALUE_ON_CONTINUATION: ${o} at source row ${R}.`)}}else throw new V(`ERR_IMPORT_MARKER: first data row must start a parent (source row ${R}).`);for(let m of c){let y=d[s.get(m.rowIdSourceHeader)],g=new Map(m.children.map(h=>[h,d[s.get(h)]]));if(y===""&&[...g.values()].every(h=>h===""))continue;let S=u.subtables.get(m.subtableCode);S.push({childRowNumber:S.length+1,sourceRowNumber:R,...y?{rowId:y}:{},values:g})}}),p.length===0)throw new V("CSV has no parent rows.");return{records:p}}var WS=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),VS=new Set(["SUBTABLE","FILE","CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function Lu(e,t){if(t!=null&&e.invalidParentRows.size>t)throw new Error(`RejectLimitExceededError: rejected parents (${e.invalidParentRows.size}) exceed REJECT LIMIT (${t}).`)}function UE(e,t,n,r,i){let o=new Map(n.filter(d=>!d.inSubtable).map(d=>[d.code,d])),a=new Map;for(let d of n)if(d.inSubtable&&d.subtableCode){let f=a.get(d.subtableCode);f||a.set(d.subtableCode,f=new Map),f.set(d.code,d)}let s=t.filter(d=>d.kind==="FIELD"),l=t.filter(d=>d.kind==="SUBTABLE");for(let d of s)_E(d.field,o.get(d.field),void 0);for(let d of l){let f=o.get(d.subtableCode);if(!f||f.fieldType!=="SUBTABLE")throw new Error(`ArgumentError: IMPORT subtable ${d.subtableCode} does not exist.`);let R=a.get(d.subtableCode)??new Map;for(let E of d.children)_E(E,R.get(E),d.subtableCode)}let c=new Map(l.map(d=>[d.subtableCode,{parentsPresent:0,childRows:0,validChildRows:0,invalidChildRows:0}])),p=e.records.map(d=>HS(d,s,l,o,a,r,i,c)),u=p.flatMap(d=>[...d.errors]);return{parents:p,errors:u,invalidParentRows:new Set(p.filter(d=>!d.valid).map(d=>d.parentRow)),tableCounts:c}}function HS(e,t,n,r,i,o,a,s){let l=[],c={};for(let d of t)e.top.has(d.field)&&Ou(e.top.get(d.field),r.get(d.field),o,c,d.field,l,Pu(e,a,d.field));let p={};if(a==="INSERT")for(let d of r.values())d.fieldType==="SUBTABLE"||d.writable===!1||e.top.has(d.code)||DE(d,o,p,l,Pu(e,a,d.code));let u=new Map;for(let d of n){if(!e.subtables.has(d.subtableCode))continue;let f=s.get(d.subtableCode);f.parentsPresent++;let R=[];for(let E of e.subtables.get(d.subtableCode)){f.childRows++;let m=l.length,y={},g=i.get(d.subtableCode);for(let S of d.children){let h=g.get(S),I=Pu(e,a,S,d.subtableCode,E.childRowNumber,E.sourceRowNumber??e.markerRowNumber);E.values.has(S)?Ou(E.values.get(S),h,o,y,S,l,I):DE(h,o,y,l,I)}l.length===m?(f.validChildRows++,R.push(y)):f.invalidChildRows++}u.set(d.subtableCode,R)}return{parentRow:e.rowNumber,valid:l.length===0,top:c,subtables:u,replacementTables:e.replacementTables,errors:l}}function _E(e,t,n){if(!t)throw new Error(n?`ArgumentError: IMPORT child ${e} does not belong to subtable ${n}.`:`ArgumentError: IMPORT top-level field ${e} does not exist.`);if(t.writable===!1||n&&VS.has(t.fieldType))throw new Error(`ArgumentError: IMPORT ${n?`child ${n}.${e}`:`field ${e}`} is not writable (${t.fieldType}).`)}function DE(e,t,n,r,i){let o=mn(e.defaultValue)?"":e.defaultValue;Ou(o,e,t,n,e.code,r,i,!mn(e.defaultValue))}function Ou(e,t,n,r,i,o,a,s=!1){let l=YS(e),c=Be(l,t,n);c.ok?r[i]={value:jS(l,t)?l:c.value}:o.push({...a,code:c.code,message:s?`\u65E2\u5B9A\u5024: ${c.message}`:c.message})}function YS(e){return vE(e)?e.lexeme:Array.isArray(e)?e.map(t=>t instanceof Map?t:vE(t)?t.lexeme:t):e}function vE(e){return typeof e=="object"&&e!==null&&e.kind==="number"}function jS(e,t){return WS.has(t.fieldType)&&Array.isArray(e)&&e.every(n=>typeof n=="object"&&n!==null&&"code"in n)}function Pu(e,t,n,r,i,o){let a=o??e.markerRowNumber;return{operation:t,parentRow:e.rowNumber,field:n,...r?{subtable:r}:{},...i==null?{}:{subrow:i},...a==null?{}:{sourceRow:a},sourceValues:r?e.subtables.get(r)?.[i-1]?.values??new Map:e.top}}var _u=["$err_statement","$err_operation","$err_row","$err_field","$err_subtable","$err_subrow","$err_source_row","$err_code","$err_message"];function Du(e,t,n=1){return e.map(r=>{let i={};for(let o of t)i[o]=r.sourceValues.get(o)==null?"":zS(r.sourceValues.get(o));return i.$err_statement=String(n),i.$err_operation=r.operation,i.$err_row=String(r.parentRow),i.$err_field=r.field,i.$err_subtable=r.subtable??"",i.$err_subrow=r.subrow==null?"":String(r.subrow),i.$err_source_row=r.sourceRow==null?null:String(r.sourceRow),i.$err_code=r.code,i.$err_message=r.message,i})}function zS(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 vu(e,t,n){let r={};for(let[i,o]of e)r[i]={value:o};for(let[i,o]of t)r[i]={value:o.map(a=>({...n==="PRESERVE"&&a.rowId?{id:a.rowId}:{},value:Object.fromEntries([...a.values].map(([s,l])=>[s,{value:l}]))}))};return r}function ME(e,t){return vu(e,t,"DROP")}function kE(e){for(let t of e.records)for(let[n,r]of t.subtables)for(let i of r)if(i.rowId!==void 0||i.values.has("_rid")||i.values.has("id"))throw new Error(`ArgumentError: JSON IMPORT subtable ${n} does not accept _rid/id; rows are always newly numbered.`)}function xE(e,t,n){return e.map((r,i)=>{let o=t[i],a=o===void 0?void 0:n.get(o);if(o!==void 0&&!a)throw new Error(`InternalError: IMPORT UPSERT target APP record ${o} was not loaded.`);let s=[...r.subtables].map(([l,c])=>{let p=a?.record[l]?.value,u=Array.isArray(p)?p.length:0;return{table:l,existingRows:u,inputRows:c.length,addRows:c.length,deleteRows:u}});return{parentRow:r.parentRow,mode:o===void 0?"INSERT":"UPDATE",...o===void 0?{}:{targetId:o,revision:a?.revision},top:r.top,subtables:r.subtables,tables:s}})}function qS(e,t){let n=e[t]?.value;return Array.isArray(n)?n:[]}function FE(e){let t=new Map;for(let n of e)for(let[r,i]of n.subtables)for(let o of i){if(!o.rowId)continue;let a=`${r}\0${o.rowId}`;if(t.has(a))throw new Error(`ERR_SUBTABLE_ROW_ID_DUP_SOURCE: duplicate row ID ${o.rowId} in ${r}`);t.set(a,n.rowNumber)}}function GE(e,t,n,r,i){return t.map((o,a)=>{let s=e[a],l=n[a],c=l===void 0?void 0:r.get(l),p=[...o.errors];if(!c||l===void 0)return{parentRow:o.parentRow,targetId:l??0,valid:!1,top:o.top,subtables:new Map,tables:[],errors:p};let u=new Map,d=[];for(let f of o.replacementTables){let R=qS(c.record,f),E=new Set(R.map(N=>N.id).filter(N=>!!N)),m=s.subtables.get(f)??[],y=o.subtables.get(f)??[],g=0,S=0,h=0,I=m.map((N,U)=>{let P=y[U]??{};return N.rowId&&E.has(N.rowId)?(g++,{rowId:N.rowId,record:P}):(N.rowId&&((i.get(N.rowId)??[]).some(v=>v.parentId!==l||v.table!==f)&&p.push({operation:"UPDATE",parentRow:o.parentRow,field:N.rowId,subtable:f,subrow:N.childRowNumber,sourceRow:N.sourceRowNumber,code:"ERR_IMPORT_FIELD_OWNERSHIP",message:`rowIdOwnedElsewhere: ${N.rowId}`,sourceValues:N.values}),h++),S++,{record:P})});u.set(f,I),d.push({table:f,existingRows:R.length,inputRows:m.length,updateRows:g,addRows:S,deleteRows:R.length-g,rowIdNotFound:h})}return{parentRow:o.parentRow,targetId:l,...c.revision===void 0?{}:{revision:c.revision},valid:p.length===0,top:o.top,subtables:u,tables:d,errors:p}})}var Uu="#__import_source";function KE(e){return{...e,from:{appId:0,alias:null,cteName:Uu}}}function JS(e){return/^[0-9]+$/.test(e)?e.replace(/^0+(?=\d)/,""):null}function Mu(e,t){let n=e.map(JS),r=new Set;for(let i of n)if(i!==null){if(r.has(i))throw new Error("ERR_RECORD_NUMBER_DUP_SOURCE: source contains a duplicate record number");r.add(i)}return{normalized:n,errors:n.map(i=>i===null?[{field:t,code:"ERR_RECORD_NUMBER_INVALID",message:`${t} must be a non-empty ASCII decimal record number`}]:[])}}var XS="\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",Pn=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"}},ue=new WeakMap;function cR(e){return ue.get(e)}var Un=new WeakMap,ls=new WeakMap,$u=Symbol("statementEvaluationContext");function pR(e){return e[$u]?e:{...e,[$u]:{statementInstant:new Date}}}function se(e){return e[$u]??{}}var BE=new WeakMap,QS=1,ZS=1;function dR(e,t){if(t)return t;let n=BE.get(e);return n||(n=`client:${QS++}`,BE.set(e,n)),n}function Rc(e){return`${e}\0inv:${ZS++}`}async function mc(e,t,n={}){yt(n);let r=Date.now(),i=Rc(dR(t,n.cacheContext));try{let o=XI(e,n.enableImport===!0),a=fR(),s=RR(t,a),l={aborted:!1},c=gc(s,l,!tT(o)||Xl(o)),p=await Wu(o,c,n,i);a.elapsedMs=Date.now()-r;let u={...mR(p,l),metrics:a};if(p.type==="SELECT"){let d=ue.get(p);d&&ue.set(u,d)}return u}finally{Mc(i)}}function fR(){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,limitReached:!1,limitReachedApps:[],elapsedMs:0}}var ER=Symbol("limitMetricsSink");function yc(e,t){let n=e[ER];n&&(n.limitReached=!0,n.limitReachedApps.includes(t)||n.limitReachedApps.push(t))}function RR(e,t){return{[ER]:t,getRecords:async n=>{t.getCalls+=1;let r=await e.getRecords(n);return t.fetchedRows+=r.records.length,r},openCursor:async n=>{t.cursorCreateCalls+=1;let r;try{r=await e.openCursor(n)}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:r.totalCount,nextPage:async()=>{t.cursorGetCalls+=1;let a=await r.nextPage();return t.cursorRecordsScanned+=a.records.length,a.next||o(),a},close:async()=>{i||(t.cursorDeleteCalls+=1);try{await r.close(),o()}catch(a){throw t.cursorCleanupFailures+=1,t.cursorQuarantinedCurrent+=1,a}}}},postRecords:n=>(t.postCalls+=1,e.postRecords(n)),putRecords:n=>(t.putCalls+=1,e.putRecords(n)),deleteRecords:n=>(t.deleteCalls+=1,e.deleteRecords(n)),getApps:()=>(t.appsCalls+=1,e.getApps()),getFields:n=>(t.fieldCalls+=1,e.getFields(n)),getNumberPrecision:n=>(t.numberPrecisionCalls+=1,e.getNumberPrecision(n)),getProcessStatuses:n=>(t.processStatusCalls+=1,e.getProcessStatuses(n))}}var $E=Symbol("searchAbortFailClosed");function gc(e,t,n){return n&&e[$E]?e:{...e,...n?{[$E]:!0}:{},getRecords:async r=>{let i=await e.getRecords(r);if(i.searchAborted&&(t.aborted=!0,n))throw new Pn;return i}}}function eT(e){let t=new Set;return{client:{...e,openCursor:async n=>{let r=await e.openCursor(n);t.add(r);let i=()=>t.delete(r);return{totalCount:r.totalCount,async nextPage(){let o=await r.nextPage();return o.next||i(),o},async close(){try{await r.close()}finally{i()}}}}},closeActive:async()=>{await Promise.all([...t].map(n=>n.close().catch(()=>{})))}}}function tT(e){return e.type==="SELECT"||e.type==="UNION"||e.type==="WITH"}function mR(e,t){if(!t.aborted||e.type!=="SELECT")return e;let n=new Set(e.warnings??[]);return n.add(XS),{...e,warnings:[...n]}}async function WE(e,t,n){let r=await Vi(e,t,n);return wu(r),r}async function Vi(e,t,n){return IE(e,{select:async r=>{let{resolver:i}=await bn(r,t,n);return he(r.where,i)},dml:r=>CR(r,t,n),prefilterDecomposition:async r=>{if(r.where===null)return null;let{resolver:i}=await bn(r,t,n);return bu(r,i)},joinServerFunctionPlan:async r=>{await bn(r,t,n);let i=await cs(r,t,n),o=us(r,i);return o===null?null:(lr(o.joinPlan)&&Cc.set(r,o),o.joinPlan)}})}async function Wu(e,t,n,r){n=pR(n);let i=await Vi(e,t,r);e.type!=="EXPLAIN"&&wu(i);let o=Hu(e);if(o!==null&&!OI(e))throw new Error(`ParseError: variable @${o} is not defined in a batch.`);if(Wn("phase15b",e),Eo("phase15b",e),nt(e),e.type!=="EXPLAIN"&&await RT(e,t,r),e.type==="IMPORT")return JR(e,t,n,r);if(e.type==="UPDATE"&&e.applyBlocks?.length){if(e.validationErrorTable)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return lc(e,t,n,r)}if("validateOnly"in e&&e.validateOnly===!0){if(e.validationErrorTable)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return xc(e,t,{...n,onLimitReached:"error"},r,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 nT(e,t,n,r);case"SELECT":return xt(Ju(e),t,n,r,void 0,n.captureColumnMeta===!0,n.captureColumnMeta===!0);case"UNION":return GR(e,t,n,r,n.captureColumnMeta===!0,n.captureColumnMeta===!0);case"WITH":return Dc(e,t,n,r,void 0,n.captureColumnMeta===!0);case"INSERT":return II(e,t,n,r);case"INSERT_SELECT":return Bc(e,t,n,r);case"UPSERT":return $I(e,t,n,r);case"UPSERT_SELECT":return Vc(e,t,n,r);case"UPDATE":return lc(e,t,n,r);case"DELETE":return BI(e,t,n,r);case"REORDER":return zI(e,t,n,r);case"SHOW_APPS":return tm(t);case"DESCRIBE":return nm(e,t,r);case"EXPLAIN":return rw(e,t,r,n.maxRecords??1e4,n.cursorMaxActive??2,e.query.type==="UPDATE"&&e.query.applyBlocks?.length?Qe(n.dmlMaxRows,"dmlMaxRows",Gt):Gt,e.query.type==="UPDATE"&&e.query.applyBlocks?.length?Qe(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ce):Ce,i,n.recursiveCteMaxDepth,n.recursiveCteMaxRows,n.recursiveCteMaxExpansions);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 SR(e,t,n,r)}}var hc=["$id","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id","$err_count"],Ac=["$id","$err_subtable","$err_field","$err_code","$err_count"];function Sc(e){let t=[],n=new Set,r=o=>{n.has(o)||(n.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"&&r(a.field),a.type==="FIELD_REF"&&typeof a.field=="string"&&r(a.field),Object.values(a).forEach(i)};return i(e),t}function yR(e=!1){let t=e?Ac:hc;return new Map(t.map(n=>[n,{fieldType:n==="$id"||n==="$err_count"?"KSQL_NUMBER":"KSQL_STRING",sortKind:n==="$id"||n==="$err_count"?"number":"string",semantics:$(n==="$id"||n==="$err_count"?"number":"string")}]))}async function nT(e,t,n,r){if(e.errorTable)throw new Error("ArgumentError: VALIDATE INTO requires a batch.");return gR(e,t,n,r)}async function gR(e,t,n,r){let i=await ee(e.appId,t,r),o=new Map(i.filter(O=>!O.inSubtable).map(O=>[O.code,O])),a=new Set(i.filter(O=>O.inSubtable).map(O=>O.code)),s=Vl(e,i),l=new Set(s.flatMap(O=>$l(O.field))),c={present:Bl.filter(O=>l.has(O)),absent:Bl.filter(O=>!l.has(O))},p=e.checkGroups??[],u=tr(p);for(let O of u){if(O.field!=="$id"&&!o.has(O.field)&&!a.has(O.field))throw Ne(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${O.field} \u306F APP${e.appId} \u306B\u5B58\u5728\u3057\u307E\u305B\u3093`);if(O.field!=="$id"&&!o.has(O.field)&&a.has(O.field))throw new Error(`ArgumentError: VALIDATE \u306E CHECK \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${O.field} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let d=new Map([...o].map(([O,F])=>[O,F.fieldType]));d.set("$id","RECORD_NUMBER"),vn(e,d);let f=Sc(e.where),R=[...new Set(["$id",...s.map(O=>O.subtableCode??O.field.code),...f,...u.map(O=>O.field)])];for(let O of f){if(O!=="$id"&&!o.has(O)&&!a.has(O))throw new Error(`ArgumentError: WHERE field ${O} does not exist in APP${e.appId}.`);if(O!=="$id"&&!o.has(O)&&a.has(O))throw new Error(`ArgumentError: VALIDATE \u306E WHERE \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${O} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let E=s.some(O=>O.field.fieldType==="NUMBER")?await It(e.appId,t,r):void 0,m=O=>O.field==="$id"?te({fieldType:"__ID__"}):o.get(O.field)?.semantics??(o.has(O.field)?te(o.get(O.field)):void 0),y=he(e.where,m);if(y.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Nn(y)}).`);let g=new Map([...o].map(([O,F])=>[O,F.fieldType])),S=new Map([...o.values()].flatMap(O=>O.optionOrder?[[O.code,new Set(Object.keys(O.optionOrder))]]:[])),h=e.where===null?null:y.capability==="EXACT_PUSHDOWN"?e.where:rl(e.where,{allowUnqualifiedFields:!0,fieldTypes:g,fieldOptions:S,allowKlike:!1}),I=h===null?"":Y(h),U=(await xe(t.getRecords,e.appId,I,R,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"})).map(O=>({id:String(O.$id?.value??""),record:O,flat:Ut(O,null)})).filter(O=>e.where===null||le(e.where,O.flat,F=>d.get(F.field),void 0,void 0,se(n))),P=[],M=new Map,v=new Map,C=new Set,_=0,b=O=>{if(C.add(O.id),_+=1,e.summary){let K=JSON.stringify([O.id,O.subtable??"",O.field,O.code]),k=v.get(K);k?k.$err_count=String(Number(k.$err_count)+1):v.set(K,{$id:O.id,$err_subtable:O.subtable??"",$err_field:O.field,$err_code:O.code,$err_count:"1"});return}let F=JSON.stringify([O.id,O.subtable??"",O.field,O.code,O.message]),W=M.get(F);W?(W.$err_count=String(Number(W.$err_count)+1),O.subrow!==void 0&&(W.$err_subrow=`${W.$err_subrow},${O.subrow}`,W.$err_subrow_id=`${W.$err_subrow_id},${O.subrowId??""}`)):M.set(F,{$id:O.id,$err_field:O.field,$err_code:O.code,$err_message:O.message,$err_value:O.value,$err_subtable:O.subtable??"",$err_subrow:O.subrow===void 0?"":String(O.subrow),$err_subrow_id:O.subrowId??"",$err_count:"1"})},D=s.filter(O=>!O.subtableCode),A=new Map;for(let O of s){if(!O.subtableCode)continue;let F=A.get(O.subtableCode)??[];F.push(O),A.set(O.subtableCode,F)}for(let O of U){for(let F of D){let W=O.record[F.field.code]?.value,K=Be(W,F.field,E);K.ok||b({id:O.id,field:F.field.code,code:K.code,message:K.message,value:ti(W,F.field.fieldType)})}for(let[F,W]of A){let K=O.record[F]?.value;if(Array.isArray(K))for(let k=0;k<K.length;k++){let G=K[k];for(let j of W){let B=G.value?.[j.field.code]?.value,L=Be(B,j.field,E);if(!L.ok){let H=da(F,k,G);b({id:O.id,field:j.field.code,code:L.code,message:L.message,value:ti(B,j.field.fieldType),...H})}}}}for(let F of Zo(p,O.flat,W=>d.get(W.field)))b({id:O.id,field:"",code:"ERR_CHECK",message:F.message,value:""})}if(e.summary)P.push(...v.values());else for(let O of M.values()){let F=Number(O.$err_count);O.$err_subtable!==""&&F>=2&&(O.$err_message=`${O.$err_message}\uFF08${F}\u884C: ${O.$err_subrow}\uFF09`),P.push(O)}let x={type:"SELECT",columns:[...e.summary?Ac:hc],rows:P,rowCount:P.length,validateStats:{errorRecords:C.size,errorCount:_,constraintMetadata:c}};return ue.set(x,yR(e.summary===!0)),x}var Xe=1e4;function Tt(e,t,n,r,i,o){let a=e.get(t);if(a&&(a.columns.length!==n.length||a.columns.some((l,c)=>l!==n[c])||!rT(a.columnMeta,o)))throw new Error(`ArgumentError: validation error table ${t} has a different schema.`);let s=a?.rows??[];if(s.length+r.length>i)throw new Error(`ArgumentError: temp table ${t} exceeds max rows (${i}).`);e.set(t,{columns:[...n],rows:[...s,...r],columnMeta:o})}function rT(e,t){if(e===t)return!0;if(!e||!t||e.size!==t.size)return!1;for(let[n,r]of e){let i=t.get(n);if(!i||i.displayName!==r.displayName||i.sortKind!==r.sortKind||i.fieldType!==r.fieldType||!Co(i.semantics,r.semantics))return!1}return!0}var cr=class extends Error{constructor(){super("TimeoutError: batch timeout exceeded.")}};async function hR(e,t,n={}){yt(n);let r=Tc(e,n.enableImport===!0),i=El(r);if(r.forEach(f=>Eo("phase15b",f)),n.allowApplyMutation!==!0&&r.some(f=>Fs(f)||f.type==="UPSERT"&&iT(f)))throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let o=Jl(r,n.variables),a=AR(r,o),s={...n,variables:o};if(n.continueOnError&&i.containsDml)throw new Error("ArgumentError: continueOnError is not allowed for batches containing DML.");for(let f of i.statements){if(!f.isDml||f.tempTablesReferenced.length===0||f.statementType==="INSERT_SELECT"||f.statementType==="UPSERT_SELECT")continue;let R=r[f.index];if(!(R?.type==="UPDATE"&&R.from?.cteName!=null))throw new oe(`ArgumentError: temp table references in ${f.statementType} are not supported yet.`,f.index)}let l=fR(),c=RR(t,l),p=Date.now(),u=n.timeoutMs!=null?p+n.timeoutMs:null,d=Rc(dR(t,n.cacheContext));try{let f=new Map,R=new Map,E=[],m=new Set,y=null;for(let g=0;g<r.length;g++){let S=i.statements[g],h={index:g,type:S.statementType};if(y){E.push({...h,status:"skipped",skippedReason:y}),m.add(g);continue}let I=S.dependsOn.find(N=>m.has(N));if(I!==void 0){let N=i.statements[I].tempTablesCreated[0]??`statement ${I}`;E.push({...h,status:"skipped",skippedReason:`dependency: ${N}`}),m.add(g);continue}if(u!==null&&Date.now()>=u){E.push({...h,status:"skipped",skippedReason:"timeout"}),m.add(g),y="timeout";continue}try{let N=u!==null?u-Date.now():null,U=s.confirm,P=U?{...s,confirm:(b,D,A)=>U(b,D,{statementIndex:g,statementCount:r.length,statementType:S.statementType,targetAppId:S.targetAppId,...A?.importDetail?{importDetail:A.importDetail}:{},...A?.applyDetail?{applyDetail:A.applyDetail}:{},...A?.applyDiagnostic?{applyDiagnostic:A.applyDiagnostic}:{}})}:s,M={aborted:!1},v=gc(c,M,S.statementType!=="SELECT"&&S.statementType!=="UNION"&&S.statementType!=="WITH"||Xl(r[g])),C=eT(v),_=await sT(oT(r[g],S,C.client,P,d,f,R,a),N,C.closeActive);_.result&&(_.result=mR(_.result,M)),E.push({...h,status:"success",..._})}catch(N){E.push({...h,status:"error",error:lT(N),...N instanceof Gi?{result:N.diagnostic}:{}}),m.add(g),N instanceof cr?y="timeout":N instanceof dr?y="assertion":S.statementType==="SET_VARIABLE"||S.statementType==="DECLARE_VARIABLE"?y="fail-fast":n.continueOnError||(y="fail-fast")}}return l.elapsedMs=Date.now()-p,{ok:E.every(g=>g.status==="success"),statementCount:r.length,statements:E,analysis:i,metrics:l}}finally{Mc(d)}}function iT(e){return e.type==="UPDATE"||e.type==="INSERT"?e.validateOnly!==!0&&!!e.applyBlocks?.length:e.type==="UPSERT"&&e.validateOnly!==!0&&!!(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length)}async function oT(e,t,n,r,i,o,a,s){if(r=pR(r),e.type==="SET_VARIABLE"){let c=ts(e,a);if(nt(c),await WE(c,n,i),c.expr.type==="ARRAY")a.set(e.name,{type:"array",elements:c.expr.elements.map(p=>({type:"string",value:p.value}))});else if(c.expr.type==="SCALAR_SUBQUERY")try{let p=await TR(c.expr.query,n,r,i,o),u=c.expr.query.columns[0],d=u?.type==="ARITH_COL"||u?.type==="ARITH_AGG_COL"||u?.type==="WINDOW_COL"&&(u.windowKind===void 0||u.windowKind==="RANKING"||u.windowKind==="AGGREGATE"&&(u.aggFunc==="COUNT"||u.aggFunc==="SUM"||u.aggFunc==="AVG"))||u?.type==="AGGREGATE"&&(u.func==="COUNT"||u.func==="SUM"||u.func==="AVG"||u.func==="STDDEV_POP"||u.func==="STDDEV_SAMP"||u.func==="VAR_POP"||u.func==="VAR_SAMP"||u.func==="MEDIAN");if(u?.type==="AGGREGATE"&&u.func==="MODE"||u?.type==="WINDOW_COL"&&u.windowKind==="VALUE"||u?.type==="WINDOW_COL"&&u.windowKind==="AGGREGATE"&&(u.aggFunc==="MIN"||u.aggFunc==="MAX")){let R=(await ki(c.expr.query,["__scalar__"],n,i,o)).get("__scalar__");d=R?.semantics?.compareMode==="number"||R?.sortKind==="number"}let f=d?Number(p):Number.NaN;a.set(e.name,d&&Number.isFinite(f)?{type:"number",value:f,raw:p}:{type:"string",value:p})}catch(p){throw p instanceof wn?new Error(`ArgumentError: ${p.message}`):p}else a.set(e.name,VE(c.expr,se(r)));return{}}if(e.type==="DECLARE_VARIABLE"){if(e.annotation==="RELATIVE_DATE")return a.set(e.name,{type:"relative-date",value:s.get(e.name)}),{};let c=r.variables??{};if(Object.prototype.hasOwnProperty.call(c,e.name))a.set(e.name,{type:"string",value:c[e.name]});else{let p=VE(e.default,se(r));a.set(e.name,{type:"string",value:p.type==="number"?p.raw??String(p.value):p.value})}return{}}let l=ts(e,a);if(Wn("phase15b",l),Eo("phase15b",l),nt(l),await WE(l,n,i),l.type==="VALIDATE"){let c=await gR(l,n,{...r,onLimitReached:"error"},i);return l.errorTable&&Tt(o,l.errorTable,c.columns,c.rows,r.tempTableMaxRows??Xe,ue.get(c)??yR(l.summary===!0)),{result:c}}if(l.type==="IMPORT")return{result:await JR(l,n,r,i,o)};if("validateOnly"in l&&l.validateOnly===!0){let c=await xc(l,n,{...r,onLimitReached:"error"},i,o,t.index+1);return l.validationErrorTable&&Tt(o,l.validationErrorTable,c.columns,c.errors,r.tempTableMaxRows??Xe,Un.get(c)??new Map),{result:c}}if("onErrorSkip"in l&&l.onErrorSkip===!0)return{result:await ac(l,n,{...r,onLimitReached:"error"},i,o,t.index+1)};if(l.type==="CREATE_TEMP_TABLE"){let c={...r,maxRecords:r.tempTableMaxRows??Xe,onLimitReached:"error"},p=await aT(l.query,n,c,i,o);return o.set(l.name,{rows:p.rows,columns:p.columns,columnMeta:ue.get(p)}),{tempTable:l.name,rowCount:p.rows.length}}if(e.type==="DROP_TEMP_TABLE")return o.delete(e.name),{tempTable:e.name};if(e.type==="EXPLAIN"){let c=l;Ec.set(c,o);try{return{result:await Wu(c,n,r,i)}}finally{Ec.delete(c)}}if(l.type==="ASSERT")return await SR(l,n,r,i,o),{};if(t.tempTablesReferenced.length>0){if(l.type==="SELECT"||l.type==="UNION")return{result:await ct(l,n,r,o,i,r.captureColumnMeta===!0)};if(l.type==="WITH")return{result:await Dc(l,n,r,i,o)};if(l.type==="INSERT_SELECT")return{result:await Bc(l,n,r,i,o)};if(l.type==="UPSERT_SELECT")return{result:await Vc(l,n,r,i,o)};if(l.type==="UPDATE"&&l.from?.cteName!=null)return{result:await lc(l,n,r,i,o)};throw new Error(`ArgumentError: temp table references in ${e.type} are not supported yet.`)}return{result:await Wu(l,n,r,i)}}async function aT(e,t,n,r,i){return e.type==="WITH"?Dc(e,t,n,r,i,!0):ct(e,t,n,i,r,!0)}async function sT(e,t,n){if(t===null)return e;if(t<=0)throw n&&await n(),e.catch(()=>{}),new cr;let r,i=!1,o=e.then(a=>i?new Promise(()=>{}):a,a=>{if(i)return new Promise(()=>{});throw a});try{return await Promise.race([o,new Promise((a,s)=>{r=setTimeout(()=>{i=!0,(async()=>{if(n){let l;try{await Promise.race([n(),new Promise(c=>{l=setTimeout(c,5e3),l.unref?.()})])}finally{l&&clearTimeout(l)}}s(new cr)})()},t)})])}catch(a){throw a instanceof cr&&e.catch(()=>{}),a}finally{r!==void 0&&clearTimeout(r)}}function lT(e){let t;if(e instanceof mt)t={code:e.name,message:e.message,partialSuccess:e.partialSuccess};else if(e instanceof Error)t={code:(e.name!=="Error"?e.name:null)??ku(e.message),message:e.message};else if(e!==null&&typeof e=="object"){let n=e,r=typeof n.message=="string"&&n.message.length>0?n.message:uT(e);t={code:typeof n.code=="string"&&n.code.length>0?n.code:ku(r),message:r}}else{let n=String(e);t={code:ku(n),message:n}}return Object.defineProperty(t,"cause",{value:e,enumerable:!1,configurable:!1,writable:!1}),t}function ku(e){return e.match(/^([A-Za-z]+Error):/)?.[1]??"Error"}function uT(e){try{return JSON.stringify(e)??String(e)}catch{return String(e)}}function Tc(e,t=!1){let n=new Zt(e).tokenize();return new en(n,{import:t}).parseStatements()}function cT(e,t){try{let n=Tc(`DECLARE @__b111 RELATIVE_DATE = ${t}`),r=n[0];if(n.length!==1||r?.type!=="DECLARE_VARIABLE"||r.annotation!=="RELATIVE_DATE")throw new Error("token was not consumed as one RELATIVE_DATE declaration");return r.default}catch(n){let r=n instanceof Error?` ${n.message}`:"";throw new Error(`ArgumentError: RELATIVE_DATE variable @${e} requires one supported relative-date function token.${r}`)}}function AR(e,t){let n=new Map;for(let r of e)r.type!=="DECLARE_VARIABLE"||r.annotation!=="RELATIVE_DATE"||n.set(r.name,Object.prototype.hasOwnProperty.call(t,r.name)?cT(r.name,t[r.name]):r.default);return n}function VE(e,t={}){switch(e.type){case"STRING":return{type:"string",value:e.value};case"NUMBER":return{type:"number",value:e.value,raw:z(e)};case"KINTONE_FUNC":return{type:"string",value:qd(e.name,t)};case"STRING_FUNC":return{type:"string",value:ye(e,{},void 0,void 0,t)};case"ARITH":{let n=me(e,{},t);if(!Number.isFinite(n))throw new Error("ArgumentError: SET scalar arithmetic produced a non-finite number.");return{type:"number",value:n,raw:String(n)}}}}function ts(e,t){return Vu(e,t,!1)}function Vu(e,t,n){if(Array.isArray(e))return e.map(r=>Vu(r,t,!1));if(e!==null&&typeof e=="object"){let r=e;if(r.type==="VARIABLE"&&typeof r.name=="string"){let a=t.get(r.name);if(a===void 0)throw new Error(`ParseError: variable @${r.name} is not defined in this batch.`);if(a.type==="array")throw new Error(`ParseError: array variable @${r.name} can only be used as IN @${r.name}.`);if(a.type==="relative-date")return a.value;if(n&&a.type!=="number"&&!(a.type==="string"&&a.placeholder===!0))throw new Error(`ArgumentError: variable @${r.name} is not numeric and cannot be used in arithmetic.`);return n&&a.type==="string"&&a.placeholder===!0?{type:"NUMBER",value:0,raw:n==="AGG_ARITH"?`@${r.name}`:a.value}:a.type==="number"?{type:"NUMBER",value:a.value,raw:n==="AGG_ARITH"?`@${r.name}`:a.raw??String(a.value)}:{type:"STRING",value:a.value,fromVariable:!0}}if(r.type==="VARIABLE_COL"&&typeof r.name=="string"&&typeof r.alias=="string"){let a=t.get(r.name);if(a===void 0)throw new Error(`ParseError: variable @${r.name} is not defined in this batch.`);if(a.type==="array")throw new Error(`ParseError: array variable @${r.name} cannot be used as a SELECT column.`);if(a.type==="relative-date")throw new Error(`InternalError: RELATIVE_DATE variable @${r.name} reached a SELECT column.`);let s=typeof r.aliasDisplay=="string"?{aliasDisplay:r.aliasDisplay}:{};return a.type==="number"?{type:"ARITH_COL",expr:{type:"NUMBER",value:a.value,raw:a.raw??String(a.value)},alias:r.alias,...s}:{type:"LITERAL_COL",value:a.value,alias:r.alias,...s}}if(r.type==="VARIABLE_IN_LIST")return r;let i=Object.fromEntries(Object.entries(r).map(([a,s])=>[a,Vu(s,t,a==="left"||a==="right"?r.type==="AGG_ARITH"?"AGG_ARITH":r.type==="ARITH"||r.type==="SCALAR_ARITH"?"ARITH":!1:!1)]));if(typeof r.aliasDisplay=="string"&&(i.aliasDisplay=r.aliasDisplay),i.type==="BINARY"){let a=i.right;if(a?.type==="VARIABLE_IN_LIST"&&typeof a.name=="string"){let s=t.get(a.name);if(s===void 0)throw new Error(`ParseError: variable @${a.name} is not defined in this batch.`);if(s.type!=="array")throw new Error(`ParseError: scalar variable @${a.name} cannot be used as IN @${a.name}; use IN (@${a.name}) instead.`);if(s.elements.length===0)return{type:"BOOLEAN",value:i.op==="NOT_IN"};i.right={type:"IN_LIST",values:s.elements.map(l=>({type:"STRING",value:l.value}))}}}let o=pT(i);if(o.type==="SELECT"&&ze(o.where,!0)&&(o.where=null),(o.type==="UPDATE"||o.type==="DELETE"||o.type==="REORDER")&&ze(o.where,!0))throw new Error("ArgumentError: empty-array simplification makes the target WHERE always true; use an explicit safe target condition.");return o}return e}function ze(e,t){return e!==null&&typeof e=="object"&&e.type==="BOOLEAN"&&(t===void 0||e.value===t)}function pT(e){if(e.type==="NOT"&&ze(e.expr))return{type:"BOOLEAN",value:!e.expr.value};if(e.type==="GROUP"&&ze(e.expr))return e.expr;if(e.type==="LOGICAL"){let t=e.left,n=e.right;if(e.op==="AND"){if(ze(t,!1)||ze(n,!1))return{type:"BOOLEAN",value:!1};if(ze(t,!0))return n;if(ze(n,!0))return t}else if(e.op==="OR"){if(ze(t,!0)||ze(n,!0))return{type:"BOOLEAN",value:!0};if(ze(t,!1))return n;if(ze(n,!1))return t}}return e}function Hu(e){if(Array.isArray(e)){for(let t of e){let n=Hu(t);if(n!==null)return n}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 n of Object.values(t)){let r=Hu(n);if(r!==null)return r}}return null}var dr=class extends Error{constructor(t){super(`AssertError: ${t}`),this.name="AssertError"}},wn=class extends Error{constructor(t){super(t),this.name="ScalarSubqueryError"}};async function SR(e,t,n,r,i){let o=await Va(e.left,t,n,r,i),a=e.left.type==="NUMBER"||e.left.type==="ARITH"?$("number"):$("string");if(e.op==="BETWEEN"){if(e.low===null||e.high===null)throw new Error("ArgumentError: malformed ASSERT statement.");let l=await Va(e.low,t,n,r,i),c=await Va(e.high,t,n,r,i);if(!Ot(">=",o,l,a)||!Ot("<=",o,c,a))throw new dr(`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 Va(e.right,t,n,r,i);if(!Ot(e.op,o,s,a))throw new dr(`assertion failed: ${e.text} (actual: ${o}).`);return{type:"ASSERT",condition:e.text}}async function Va(e,t,n,r,i){switch(e.type){case"VARIABLE":throw new Error(`ParseError: unresolved batch variable @${e.name}.`);case"NUMBER":return z(e);case"STRING":return e.value;case"ARITH":return String(Yu(e));case"SCALAR_SUBQUERY":try{return await TR(e.query,t,n,r,i)}catch(o){throw o instanceof wn?new dr(o.message):o}}}async function TR(e,t,n,r,i){let{query:o,probed:a}=dT(e),s=await Di(o,t,n,r,i);if(s.columns.length!==1)throw new wn(`scalar subquery returned ${s.columns.length} columns (expected 1 column).`);if(s.rowCount===0)throw new wn("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 wn(`scalar subquery returned ${l} (expected 1 row).`)}return s.rows[0]?.[s.columns[0]]??""}function dT(e){return Z(e).type!=="NONE"||e.columns.some(n=>n.type==="AGGREGATE"||n.type==="ARITH_AGG_COL")||e.distinct||e.limit!==null?{query:e,probed:!1}:{query:{...e,limit:2},probed:!0}}function Yu(e){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached ASSERT evaluation.`);if(e.type==="NUMBER")return e.value;if(e.type==="ARITH"){let t=Yu(e.left),n=Yu(e.right);switch(e.op){case"+":return t+n;case"-":return t-n;case"*":return t*n;case"/":return t/n;case"%":return t%n}}throw new Error(`ArgumentError: unsupported operand in ASSERT expression: ${e.type}`)}async function Hi(e,t,n,r,i=!1){let o=[e.from,...e.joins.map(d=>d.table)],a=i||gt(e.where)?[...new Set(o.filter(d=>d.cteName===null).map(d=>d.appId))]:[],s=new Map(await Promise.all(a.map(async d=>{let f=await ee(d,t,n);return[d,new Map(f.map(R=>[R.code,R]))]}))),l=new Set,c=d=>{if(Array.isArray(d)){d.forEach(c);return}if(d===null||typeof d!="object")return;let f=d;if(f.type==="SELECT")return;let R=String(f.op),E=f.right,m=["=","!=","<>"].includes(R)&&E?.type==="STRING"&&E.value!=="";if(f.type==="BINARY"&&([">","<",">=","<="].includes(R)||m)){let y=f.left;y?.type==="FIELD"&&typeof y.field=="string"&&l.add(y.field)}Object.values(f).forEach(c)};c(e.where),c(e.having);for(let d of e.columns)d.type==="CASE_COL"&&c(d.expr);let p=new Map;await Promise.all([...s].map(async([d,f])=>{if(![...l].some(m=>f.get(m)?.fieldType==="STATUS"))return;let E=await kc(d,t,n);E&&p.set(d,E)}));let u=(d,f,R)=>{if(f==="$id")return qn(te({fieldType:"__ID__"}),d.appId,"$id");if(R&&d.subtableCode){if(f==="_rid")return $("string");if(f==="_idx"||f==="_pid")return $("number")}let E=s.get(d.appId)?.get(Ee(d,f));if(!E)return;let m=E.semantics??te(E),y=E.fieldType==="STATUS"&&p.has(d.appId)?{...m,optionOrder:p.get(d.appId)}:m;return qn(y,d.appId,E.code)};return d=>{if(d.tableAlias!==null){if(d.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null)return u(e.from,d.field,!1);let R=o.find(E=>ce(E)===d.tableAlias);return R?R.cteName!==null?r?.get(R.cteName)?.columnMeta?.get(d.field)?.semantics??$("string"):u(R,d.field,!0):void 0}if(e.joins.length===0)return e.from.cteName!==null?r?.get(e.from.cteName)?.columnMeta?.get(d.field)?.semantics??$("string"):u(e.from,d.field,!0);let f=o.flatMap(R=>{let E=R.cteName!==null?r?.get(R.cteName)?.columnMeta?.get(d.field)?.semantics:u(R,d.field,!0);return E?[E]:[]});if(f.length===1)return f[0];if(!o.some(R=>qa(R,d.field)!==void 0))return f.length>1?$("string"):void 0}}var IR=new WeakMap;async function bn(e,t,n,r,i=!1){let o=await Hi(e,t,n,r,i);if(e.where===null)return{resolver:o,rewrites:[]};let a=ud(e.where,o);return e.where=a.normalizedWhere,a.rewrites.length>0&&IR.set(e,a.rewrites),{resolver:o,rewrites:a.rewrites}}function fT(e){return e.columns.some(t=>t.type==="WINDOW_COL"&&t.windowKind==="AGGREGATE"&&t.orderBy.length>0&&t.frame?.source==="DEFAULT")}function wR(e){return fT(e)||e.columns.some(t=>t.type==="WINDOW_COL"&&t.windowKind==="VALUE")}function HE(e,t,n,r,i){return i!==void 0&&e.joins.length===0&&e.from.cteName!==null?t.some(o=>{if(o.key.type!=="FIELD_NAME")return!1;let a=Me(o.key.name);return a.field!==i?!1:a.tableAlias===null||a.tableAlias===ce(e.from)}):r!=="DIRECT"||e.joins.length>0||e.from.cteName!==null||e.from.subtableCode!=null?!1:t.some(o=>{if(o.key.type!=="FIELD_NAME")return!1;let a=Me(o.key.name);return a.field==="$id"||n(a)?.fieldType==="RECORD_NUMBER"})}function YE(e,t){return e!=="DIRECT"?"\u30A6\u30A3\u30F3\u30C9\u30A6\u306E\u5404\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u5185\u3067\u3001ORDER BY \u306E\u5024\u306E\u7D44\u304C\u5165\u529B\u884C\u3092\u4E00\u610F\u306B\u8B58\u5225\u3059\u308B\u3068\u30AF\u30A8\u30EA\u69CB\u9020\u307E\u305F\u306F\u4FDD\u8A3C\u6E08\u307F\u306E\u30C7\u30FC\u30BF\u5236\u7D04\u304B\u3089\u78BA\u8A8D\u3067\u304D\u308B\u5834\u5408\u306B\u9650\u308A\u3001\u3053\u306E\u8B66\u544A\u306F\u7121\u8996\u3067\u304D\u307E\u3059\u3002\u5143\u306E\u96C6\u7D04\u30AD\u30FC\u3092\u3059\u3079\u3066 ORDER BY \u306B\u542B\u3080\u5F62\u3084\u3001JOIN \u5F8C\u3082\u540C\u3058\u7CFB\u5217\u5024\u304C\u5404\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u5185\u3067\u9AD8\u30051\u884C\u3068\u4FDD\u8A3C\u3067\u304D\u308B\u5F62\u304C\u8A72\u5F53\u3057\u307E\u3059\u3002\u751F\u6210\u5217\u3001\u518D\u5E30\u306E\u6DF1\u3055\u5217\u3001\u307E\u305F\u306F $id \u306B\u7531\u6765\u3059\u308B\u5217\u3067\u3042\u308B\u3068\u3044\u3046\u7406\u7531\u3060\u3051\u3067\u306F\u7121\u8996\u3067\u304D\u307E\u305B\u3093\u3002":t==="RANGE"?"ORDER BY \u306B\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u306A\u3069\u306E\u30BF\u30A4\u30D6\u30EC\u30FC\u30AF\u30AD\u30FC\u3092\u8DB3\u3057\u3066\u304F\u3060\u3055\u3044\u3002":"\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u7B49\u3092 ORDER BY \u306B\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}function bR(e,t,n,r){let i=[];for(let o of e.columns)o.type!=="WINDOW_COL"||o.windowKind!=="AGGREGATE"||o.orderBy.length===0||o.frame?.source!=="DEFAULT"||HE(e,o.orderBy,t,n,r)||i.push(`${o.alias} \u306F\u65E2\u5B9A\u30D5\u30EC\u30FC\u30E0\uFF08RANGE\uFF09\u3067\u8A55\u4FA1\u3055\u308C\u307E\u3059\u3002ORDER BY \u306E\u5024\u304C\u540C\u3058\u884C\u306F\u3059\u3079\u3066\u540C\u3058\u5024\u306B\u306A\u308A\u307E\u3059\u3002\u884C\u3054\u3068\u306E\u5024\u304C\u5FC5\u8981\u306A\u3089 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW \u3092\u660E\u793A\u3059\u308B\u304B\u3001`+YE(n,"RANGE"));for(let o of e.columns)o.type!=="WINDOW_COL"||o.windowKind!=="VALUE"||HE(e,o.orderBy,t,n,r)||i.push(`${o.alias} \u306E ORDER BY \u306F\u5168\u9806\u5E8F\u3067\u306A\u3044\u305F\u3081\u3001\u540C\u9806\u5185\u306E\u524D\u5F8C\u95A2\u4FC2\u306F\u672A\u898F\u5B9A\u3067\u3059\u3002`+YE(n,"VALUE"));return i}function Ic(e,t){if(t.length===0)return e;let n={...e,warnings:[...new Set([...e.warnings??[],...t])]},r=ue.get(e);return r&&ue.set(n,r),n}function wc(e){let t=n=>{if(n===null||typeof n!="object")return!1;if(Array.isArray(n))return n.some(t);let r=n;return r.type==="CASE_WHEN"&&r.branches?.some(i=>gt(i.condition))?!0:Object.values(r).some(t)};return e.columns.some(t)}function NR(e,t){let n=new Map;for(let r of e.columns){if(!("alias"in r)||!r.alias)continue;let i;r.type==="FIELD"?i=t(Me(r.field)):r.type==="ARITH_COL"||r.type==="ARITH_AGG_COL"?i=$("number"):r.type==="WINDOW_COL"?r.windowKind===void 0||r.windowKind==="RANKING"||r.windowKind==="AGGREGATE"&&(r.aggFunc==="COUNT"||r.aggFunc==="SUM"||r.aggFunc==="AVG")?i=$("number"):(r.windowKind==="AGGREGATE"||r.windowKind==="VALUE")&&r.arg.type!=="WILDCARD"&&(i=Ln(r.arg,o=>{let a=t(o);return a?{sortKind:a.compareMode==="number"||a.compareMode==="recordNumber"?"number":"string",fieldType:a.fieldType,semantics:a}:void 0}).semantics):r.type==="AGGREGATE"?r.func==="MIN"||r.func==="MAX"||r.func==="MODE"?r.arg.type!=="WILDCARD"&&(i=Ln(r.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=r.func==="GROUP_CONCAT"?$("string"):$("number"):r.type==="STRFUNC_COL"?i=On(r.expr).semantics:(r.type==="LITERAL_COL"||r.type==="SCALAR_SUBQUERY_COL"||r.type==="CASE_COL"||r.type==="SCALAR_VALUE_COL")&&(i=$("string")),i&&n.set(r.alias,i)}return r=>r.tableAlias===null&&n.has(r.field)?n.get(r.field):t(r)}function Nn(e){let t=e.reasons.find(r=>r.code==="WHERE_FIELD_UNRESOLVED"||r.code==="WHERE_OPERATOR_UNSUPPORTED"||r.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(r=>r!==null).join(", ")||"reason=WHERE_UNSUPPORTED"}function ns(e){return e.orderBy.length>0||e.columns.some(t=>t.type==="WINDOW_COL"&&t.orderBy.length>0)}async function CR(e,t,n){if(e.subtableCode||e.type==="UPDATE"&&e.from!=null)return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]};let r=gt(e.where)?await ee(e.appId,t,n):[],i=new Map(r.map(o=>[o.code,o]));return e.where.type==="BOOLEAN"&&e.where.value===!1?he(null,()=>{}):he(e.where,o=>{if(o.field==="$id")return te({fieldType:"__ID__"});let a=i.get(o.field);return a?.semantics??(a?te(a):void 0)})}async function pr(e,t,n){if(e.subtableCode||e.type==="UPDATE"&&e.from!=null)return;let r=await CR(e,t,n);if(r.capability!=="EXACT_PUSHDOWN")throw new ae(`WHERE predicate cannot be represented by kintone REST (${Nn(r)})`)}async function xt(e,t,n,r,i,o=!1,a=!1,s="DIRECT"){let l,c=new Set;if(await Mi(e,t,r,i),gT(e))return l=ST(e,n),o&&ue.set(l,await ki(e,l.columns,t,r,i,a)),l;let{resolver:p}=await bn(e,t,r,i,wR(e)),u=bR(e,p,s),d=await fr(e,t,r,i);await rm(e,t,n,r,c,i);let f=xT(e,he(e.where,p));if(f.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Nn(f)}).`);let R=Ve(e),E,m;if(f.capability==="SUPERSET_PREFILTER"){let P=await Hi(e,t,r,i),M=bu(e,P);M.eligible&&Iu(e,M)&&(E=M.plan)}if(E===void 0&&f.capability==="EXACT_PUSHDOWN"&&e.where!==null){let P=null;try{P=Y(e.where)}catch{P=null}m=Fo({select:e,selectMode:R,capability:f,context:{allowFullScanExact:!0},serializedWholeWhere:P,relativeFunctionNames:Te(e.where)})??void 0,m&&(E=m.prefilterPlan)}let y=f.capability==="EXACT_PUSHDOWN"?R:"FULL_SCAN",g=await Fi(e,t,r,i),S=ns(e)?(e.orderMode==="KINTONE_NATIVE"?pi:ci)({stmt:e,staticMode:y,whereCapability:f.capability,whereReasons:f.reasons,orderSemantics:g.semantics,maxRecords:n.maxRecords??1e4,hasKlike:we(e.where)}):null,h=await IT(e,S?.kind==="CANONICAL_LOCAL"?"FULL_SCAN":y,t,r),I=bc(e,n,S),U=m!==void 0&&(R==="FULL_SCAN"||S?.kind==="CANONICAL_LOCAL")?gc(t,{aborted:!1},!0):t;try{y==="SIMPLE"?l=await TT(e,U,I.effectiveOptions,r,S,g):l=await KT(e,U,I.effectiveOptions,r,i,f.capability==="EXACT_PUSHDOWN"&&E===void 0,g,E,d)}catch(P){OR(I,P)}return o&&ue.set(l,await ki(e,l.columns,t,r,i,a)),Ic(l,[...c,...u,...h])}function ju(e,t){if(t.length===1){let{appId:r,owner:i}=t[0];return`ArgumentError: ${e} \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u300C${i}\u300D\uFF08APP${r}\uFF09\u306E\u4E2D\u306E\u9805\u76EE\u3067\u3059\u3002\u89AA\u30C6\u30FC\u30D6\u30EB\u306E GROUP BY \u306B\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002APP${r}$${i} \u304B\u3089\u96C6\u8A08\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u89AA\u306E\u30EC\u30B3\u30FC\u30C9 ID \u306F _pid\u3001\u89AA\u9805\u76EE\u306F _p.<\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9> \u306B\u306A\u308A\u307E\u3059\uFF09\u3002`}let n=t.map(({appId:r,owner:i})=>`APP${r}$${i}`).join(" / ");return`ArgumentError: ${e} \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306E\u4E2D\u306E\u9805\u76EE\u3067\u3059\uFF08${n}\uFF09\u3002\u89AA\u30C6\u30FC\u30D6\u30EB\u306E GROUP BY \u306B\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002\u3069\u306E\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u304B\u3089\u96C6\u8A08\u3059\u308B\u304B\u3092 FROM \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`}function PR(e){let t=new Set,n=[];for(let r of e){let i=`${r.appId}\0${r.owner}`;t.has(i)||(t.add(i),n.push(r))}return n}async function fr(e,t,n,r){let i=Z(e);if(!jn(e)||i.type==="GROUPING_SETS"||i.type==="NONE")return;let o=i.allItems,a=[e.from,...e.joins.map(u=>u.table)],s=new Map,l=await Promise.all(a.map(async u=>{if(u.cteName!==null){let E=r?.get(u.cteName);if(!E)throw new Error(`InternalError: materialized schema ${u.cteName} is not available for GROUP BY planning.`);return{kind:"MATERIALIZED",columns:E.columns}}let d=await ee(u.appId,t,n);if(!u.subtableCode){for(let E of d){if(E.inSubtable!==!0||!E.subtableCode)continue;let m=s.get(E.code)??[];m.push({appId:u.appId,owner:E.subtableCode}),s.set(E.code,PR(m))}return{kind:"APP",fieldCodes:d.filter(E=>!E.inSubtable).map(E=>E.code)}}let f=d.filter(E=>E.inSubtable&&E.subtableCode===u.subtableCode);return{kind:"SUBTABLE",childFieldCodes:(f.length>0?f:d.filter(E=>E.inSubtable&&E.subtableCode===void 0)).map(E=>E.code),parentFieldCodes:d.filter(E=>!E.inSubtable).map(E=>E.code)}})),c=Kp(e,(u,d)=>l[d]),p=Vp(o,e.columns,c);return ET(e,o,p,s),Pr(e,zp(e,p,c)),p}function ET(e,t,n,r){let i=[e.from,...e.joins.map(s=>s.table)].flatMap(s=>s.cteName===null?[s.appId]:[]),o=[...new Set(i)],a=o.length===1?o[0]:e.from.cteName===null?e.from.appId:null;n.items.forEach((s,l)=>{if(s.kind==="EXPRESSION"||s.kind==="PHYSICAL"||s.kind==="ALIAS_SAFE")return;let c=t[l],p=c?.type==="FIELD_NAME"?c.name:"(expression)";if(s.kind==="UNKNOWN"){let u=a===null?"":` (APP${a})`,d=s.name.indexOf("."),f=d>=0?s.name.slice(d+1):s.name,R=r.get(s.name)??r.get(f)??[];throw R.length>0?new Error(ju(s.name,R)):new Error(`ArgumentError: unknown field code(s): ${s.name}${u}`)}throw s.kind==="ALIAS_REJECT"?s.reason==="DUPLICATE"?new Error(`ArgumentError: GROUP BY alias ${p} is ambiguous across multiple SELECT columns (reason=GROUP_BY_ALIAS_AMBIGUOUS).`):s.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 ${s.name} reached runtime planning.`)})}var Ui=new WeakMap;async function RT(e,t,n){let r=new Set,i=async o=>{if(o===null||typeof o!="object"||r.has(o))return;if(r.add(o),Array.isArray(o)){for(let s of o)await i(s);return}let a=o;if(a.type==="SELECT"){for(let s of Object.values(a))await i(s);await Mi(o,t,n);return}for(let s of Object.values(a))await i(s)};await i(e)}async function mT(e,t,n,r){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 ee(u,t,n);return[u,new Map(d.map(f=>[f.code,f]))]}))),s=(u,d)=>{if(u.subtableCode)return null;let f=a.get(u.appId)?.get(d);return f?.inSubtable===!0?f.subtableCode??"":null},l=(u,d)=>{if(d==="$id")return"$id";let f=Ee(u,d);return s(u,f)!==null?null:a.get(u.appId)?.has(f)?f:null},c=(u,d)=>{if(u.cteName===null)return!1;let f=r?.get(u.cteName);return f?f.columns.includes(d):!0},p=(u,d,f,R)=>{let E=i.filter(g=>g.cteName===null&&l(g,f.field)!==null).length,m=i.some(g=>c(g,f.field)),y=ce(u);return{canonicalId:`source:${d}:APP${u.appId}:${R}`,directKey:f.tableAlias&&y?`${f.tableAlias}.${f.field}`:f.field,unqualifiedBridgeKey:E===1&&!m?f.field:null,physical:!0}};return u=>{if(u.tableAlias!==null){let m=i.findIndex(S=>ce(S)===u.tableAlias);if(m<0)throw new Error(`ArgumentError: field ${u.tableAlias}.${u.field} has an unknown table alias.`);let y=i[m];if(y.cteName!==null)throw new Error(`ArgumentError: field ${u.tableAlias}.${u.field} resolves to materialized source ${y.cteName}; physical APP fields are required.`);let g=l(y,u.field);if(g===null){let S=s(y,Ee(y,u.field));throw S!==null&&S!==""?new Error(ju(u.field,[{appId:y.appId,owner:S}])):new Error(`ArgumentError: field ${u.tableAlias}.${u.field} does not exist in APP${y.appId}.`)}return p(y,m,u,g)}let d=i.flatMap((m,y)=>{if(m.cteName!==null)return[];let g=l(m,u.field);return g===null?[]:[{table:m,tableIndex:y,code:g}]}),f=i.filter(m=>c(m,u.field));if(d.length+f.length>1)throw new Error(`ArgumentError: field ${u.field} is ambiguous across multiple sources.`);if(d.length===1&&f.length===0){let m=d[0];return p(m.table,m.tableIndex,u,m.code)}if(f.length===1)throw new Error(`ArgumentError: field ${u.field} resolves to a materialized CTE/temp column; physical APP fields are required.`);let R=i.flatMap(m=>{if(m.cteName!==null)return[];let y=s(m,Ee(m,u.field));return y===null||y===""?[]:[{appId:m.appId,owner:y}]}),E=PR(R);throw E.length>0?new Error(ju(u.field,E)):new Error(`ArgumentError: field ${u.field} does not exist in a physical APP source.`)}}async function Mi(e,t,n,r){Ui.delete(e);let i=Z(e),o=JSON.stringify(e.columns).includes('"GROUPING_')||JSON.stringify(e.orderBy).includes('"GROUPING_');if(i.type==="GROUPING_SETS"||o){let l=await mT(e,t,n,r),c=Xp(e,l,Jp);c&&Ui.set(e,c);return}if(!jn(e))return;if(i.type==="NONE"){ho(e);return}[e.from,...e.joins.map(l=>l.table)].some(l=>l.cteName!==null&&!r?.has(l.cteName))||await fr(e,t,n,r)}function yT(e){let t=[...e].join(", "),n=[["AGGREGATE_WINDOW","\u96C6\u8A08\u30A6\u30A3\u30F3\u30C9\u30A6\u306E\u6B63\u3057\u3044\u7D50\u679C"],["GROUPING_SETS","\u5C0F\u8A08\u30FB\u7DCF\u8A08\u306E\u6B63\u3057\u3044\u7D50\u679C"],["STATISTICAL_AGGREGATE","\u7D71\u8A08\u96C6\u7D04\u306E\u6B63\u3057\u3044\u7D50\u679C"],["AGGREGATE","\u96C6\u8A08\u306E\u6B63\u3057\u3044\u7D50\u679C"],["GROUP_BY","\u30B0\u30EB\u30FC\u30D7\u96C6\u8A08\u306E\u6B63\u3057\u3044\u7D50\u679C"],["DISTINCT","DISTINCT \u306E\u6B63\u3057\u3044\u7D50\u679C"]],r=n.some(([s])=>e.has(s)),i=e.has("LOCAL_ORDER")||e.has("WINDOW_ORDER"),o=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.size===1&&e.has("AGGREGATE")?"\u96C6\u8A08\u306E\u6B63\u3057\u3044\u7D50\u679C":e.size===1&&e.has("GROUP_BY")?"\u30B0\u30EB\u30FC\u30D7\u96C6\u8A08\u306E\u6B63\u3057\u3044\u7D50\u679C":e.size===1&&e.has("DISTINCT")?"DISTINCT \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";return`${e.size===1&&e.has("CROSS_JOIN")?"CROSS JOIN \u306E\u6B63\u3057\u3044\u7D50\u679C":e.has("DML")||e.has("VALIDATE")?o:r&&i?"\u30AF\u30A8\u30EA\u306E\u6B63\u3057\u3044\u7D50\u679C":r?n.find(([s])=>e.has(s))[1]:"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 bc(e,t,n){let r=e.type==="SELECT"&&(n?.kind==="CANONICAL_REST_TOP_N"||n?.kind==="KORDER_NATIVE"||n?.kind==="KORDER_CURSOR")?Wt({...e,orderBy:[]}):Wt(e),i=r.size>0&&t.onLimitReached==="truncate";return{reasons:r,effectiveOptions:i?{...t,onLimitReached:"error"}:t,truncateWasDisabled:i}}function OR(e,t){throw e.reasons.size>0&&t instanceof Ge&&!t.completeInputWrapped?new Ge(yT(e.reasons)+(e.truncateWasDisabled?"onLimit=truncate\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002":"")+t.message,!0):t}async function zu(e,t){try{return await t()}catch(n){OR(e,n)}}function ut(e){return e?.type==="BOOLEAN"&&e.value===!1}function gT(e){return e.from.appId===0&&e.from.cteName===_e}function rs(e){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached SELECT planning.`);return e.type==="FIELD_REF"?!0:e.type==="ARITH"?rs(e.left)||rs(e.right):e.type==="STRING_FUNC"?Nc(e):!1}function hT(e){return e.type==="AGG_GROUP_KEY"?!0:e.type==="VARIABLE"?!1:e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:Ci(e)}function Ci(e){return e.type==="FIELD"?!0:e.type==="STRING_FUNC"?Nc(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?Ci(e.left)||Ci(e.right):e.type==="CASE_WHEN"?[...e.branches.map(n=>n.result),...e.elseResult?[e.elseResult]:[]].some(n=>n.type!=="ARRAY"&&(n.type==="FIELD_REF"||n.type==="ARITH"?rs(n):n.type==="AGG_REF"||n.type==="AGG_ARITH"?!0:Ci(n))):!1}function Nc(e){return e.args.some(t=>hT(t))}function AT(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(rs(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"STRFUNC_COL":if(Nc(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"SCALAR_VALUE_COL":if(Ci(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 ST(e,t){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.");AT(e);let n=Ru([{}],e.columns,void 0,void 0,void 0,void 0,se(t)),{rows:r,columns:i}=Sn(n,e.columns,void 0,void 0,void 0,void 0,void 0,se(t)),o=va(r,e.limit,e.offset);return{type:"SELECT",rows:o,columns:i,rowCount:o.length,warnings:[]}}async function TT(e,t,n,r,i,o){let a=i?.kind==="CANONICAL_REST_TOP_N"?vR(e):e,s=wo(a),l=i?.kind==="CANONICAL_LOCAL"?dn(e,e.from):s.fields,c=await Pc(e,t,r),p=Lc(e,c),u=e.columns.some(P=>P.type==="CASE_COL")?await Hi(e,t,r,void 0,wc(e)):void 0,d=n.maxRecords??1e4,f=new Set,R=n.onLimitReached??"error",E=n.fetchParallel??1,m=e.orderBy.length>0?i?.kind==="CANONICAL_REST_TOP_N"||i?.kind==="KORDER_NATIVE"||i?.kind==="KORDER_CURSOR":e.limit!==null&&e.limit<=500,y=e.limit===null?null:(e.offset??0)+e.limit,g=e.orderBy.length===0&&y!==null&&y<=d&&!we(e.where)?y:void 0,S;if((i?.kind==="KORDER_NATIVE"||i?.kind==="KORDER_CURSOR")&&e.limit===0)S=[];else if(i?.kind==="KORDER_CURSOR"){let P=await zf({client:t,app:s.app,fields:s.fields,query:au(e),offset:e.offset??0,limit:e.limit});S=P.records,P.cleanupWarning&&f.add(P.cleanupWarning)}else if(m)S=(await t.getRecords({app:s.app,query:s.query,fields:s.fields})).records;else{let P=e.where?Y(e.where):"";S=await xe(t.getRecords,s.app,P,l,{parallel:E,maxRecords:d,stopAfter:g,onLimit:R,onTruncate:M=>{f.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`),yc(t,e.from.appId)}})}let h=S.map(P=>Ut(P,null));m||(h=fu(h,e.orderBy,o.optionOrders,o.sortKinds,o.semantics,Eu(e.columns,void 0,p.row,u,se(n)),se(n)),h=va(h,e.limit,e.offset));let{rows:I,columns:N}=Sn(h,e.columns,void 0,p.row,void 0,u,void 0,se(n)),U=await vc(e,I,N,t,r);return{type:"SELECT",rows:I,columns:U,rowCount:I.length,warnings:[...f]}}async function IT(e,t,n,r){let i=[],o=new Map,a=(c,p)=>{if(p.length===0)return;let u=o.get(c);u||(u=new Set,o.set(c,u));for(let d of p)u.add(d)},s=new Map,l=(c,p)=>{let u=s.get(c);u||(u=new Set,s.set(c,u));for(let d of p)u.add(d)};if(t==="SIMPLE"){let c=wo(e);a(c.app,c.fields),e.from.subtableCode||l(c.app,c.fields)}else{let c=[e.from,...e.joins.map(p=>p.table)].filter(p=>p.cteName===null);for(let p of c){let u=dn(e,p);a(p.appId,u),p.subtableCode||l(p.appId,u)}}for(let[c,p]of o.entries()){let u=[...p].filter(m=>!Ws(m));if(u.length===0)continue;let d=await ee(c,n,r);if(d.length===0)continue;let f=new Set(d.map(m=>m.code)),R=u.filter(m=>!f.has(m));if(R.length>0)throw new Error(`ArgumentError: unknown field code(s): ${R.join(", ")} (APP${c})`);let E=s.get(c);if(E){let m=d.filter(y=>y.inSubtable===!0&&E.has(y.code));for(let y of m){let g=y.subtableCode??"",S=g?`\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u300C${g}\u300D`:"\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB";i.push(`${y.code} \u306F${S}\u306E\u4E2D\u306E\u9805\u76EE\u3067\u3059\u3002APP${c} \u304B\u3089\u306F\u5024\u304C\u53D6\u308C\u305A\u3001\u30A8\u30E9\u30FC\u306B\u306A\u3089\u306A\u3044\u307E\u307E\u5E38\u306B\u7A7A\u306B\u306A\u308A\u307E\u3059\uFF08\u5217\u306F\u7A7A\u3001\u96C6\u8A08\u306F\u7A7A\u3001\`HAVING\` \u306A\u3069\u306E\u6761\u4EF6\u306F\u7A7A\u3068\u306E\u6BD4\u8F03\u306B\u306A\u308A\u307E\u3059\uFF09\u3002`+(g?`APP${c}$${g} \u304B\u3089\u9078\u3093\u3067\u304F\u3060\u3055\u3044\uFF08\u89AA\u306E\u30EC\u30B3\u30FC\u30C9 ID \u306F _pid\u3001\u89AA\u9805\u76EE\u306F _p.<\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9> \u306B\u306A\u308A\u307E\u3059\uFF09\u3002`:""))}}}return i}function jE(e){return e.cteName??`APP${e.appId}`}function wT(e){return e.alias?[e.alias]:e.cteName!==null?[e.cteName]:[`APP${e.appId}`,`app${e.appId}`]}function bT(e,t){return Ws(t)||e.validCodes.has(t)}function xu(e,t){return e.table.cteName!==null?e.validCodes.has(t):bT(e,t)}function NT(e){let t=[],n=r=>{if(r!==null)switch(r.type){case"BINARY":(r.right.type==="SUBQUERY_IN_LIST"||r.right.type==="SCALAR_SUBQUERY")&&t.push(r.right.query);return;case"EXISTS":t.push(r.query);return;case"LOGICAL":n(r.left),n(r.right);return;case"NOT":case"GROUP":n(r.expr);return;case"NULL_CHECK":case"BOOLEAN":return}};n(e.where),n(e.having);for(let r of e.columns)if(r.type==="SCALAR_SUBQUERY_COL")t.push(r.query);else if(r.type==="CASE_COL")for(let i of r.expr.branches)n(i.condition);return t}async function CT(e,t,n,r){let i=[e.from,...e.joins.map(p=>p.table)],o=new Map,a=new Set;for(let p of i){let u=ce(p);if(u!==null){if(a.has(u))throw new Error(`ArgumentError: effective alias ${u} is used by multiple tables.`);a.add(u)}}for(let p of i){if(p.cteName===null||p.cteName===_e)continue;let u=n.get(p.cteName);if(!u)throw new Error(`ArgumentError: materialized source ${p.cteName} is not available.`);if(u.rows.length>0&&u.columns.length===0)throw new Error(`InternalError: materialized source ${p.cteName} has rows but no column schema.`);if(e.joins.length>0&&u.rows.length===0&&u.columns.length===0)throw new Error(`ArgumentError: column schema is unavailable for materialized JOIN source ${p.cteName}.`);o.set(p,u)}let s=new Map;await Promise.all(i.map(async p=>{let u=o.get(p);if(u){s.set(p,{table:p,label:jE(p),validCodes:new Set(u.columns),authoritative:!0,schemaUnavailable:u.rows.length===0&&u.columns.length===0});return}if(p.cteName===_e)return;let d=await ee(p.appId,t,r);s.set(p,{table:p,label:jE(p),validCodes:new Set(d.map(f=>f.code)),authoritative:d.length>0,schemaUnavailable:!1})}));let l=new Map;for(let p of s.values())for(let u of wT(p.table))l.set(u,p);for(let p of e.joins)if(p.type!=="CROSS")for(let u of[p.on.left,p.on.right]){if(!u.tableAlias)continue;let d=l.get(u.tableAlias);if(d&&d.table.cteName!==null&&!d.schemaUnavailable&&!xu(d,u.field))throw new Error(`ArgumentError: JOIN key ${u.tableAlias}.${u.field} is not available in the materialized table.`)}let c=rd(e);for(let[p,u]of c.bySource){let d=s.get(p);if(!d||d.schemaUnavailable||!d.authoritative)continue;let f=[...u].filter(R=>!xu(d,R));if(f.length>0)throw new Error(`ArgumentError: unknown field code(s): ${f.join(", ")} (${d.label})`)}for(let p of c.unqualified){let u=[...s.values()].filter(f=>!f.schemaUnavailable);if(u.some(f=>xu(f,p))||[...s.values()].some(f=>f.schemaUnavailable)||u.some(f=>f.table.cteName===null&&!f.authoritative))continue;let d=u.map(f=>f.label).join(", ");throw new Error(`ArgumentError: unknown field code(s): ${p} (${d})`)}}async function za(e,t,n,r,i=new Set){if(!i.has(e)){if(i.add(e),e.type==="UNION"){await za(e.left,t,n,r,i),await za(e.right,t,n,r,i);return}await CT(e,t,n,r);for(let o of NT(e))await za(o,t,n,r,i)}}function LR(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}function Pi(e){return e.type==="BINARY"?e.right.type==="STRING"?e.right.value.startsWith("@"):e.right.type==="IN_LIST"?e.right.values.some(t=>t.type==="STRING"&&t.value.startsWith("@")):!1:e.type==="LOGICAL"?Pi(e.left)||Pi(e.right):e.type==="GROUP"||e.type==="NOT"?Pi(e.expr):!1}var Cc=new WeakMap;function us(e,t){if(e.joins.length===0||e.where===null||e.joins.some(f=>f.type!=="INNER"&&f.type!=="CROSS"))return null;let n=[e.from,...e.joins.map(f=>f.table)];if(n.some(f=>f.alias===null||f.cteName!==null||!!f.subtableCode))return null;let r=n.map(f=>({alias:f.alias,appId:f.appId,sourceKind:"APP",fieldTypes:new Map([...t.fieldTypesByApp.get(f.appId)??new Map,["$id","__ID__"]]),fieldOptions:t.fieldOptionsByApp.get(f.appId)})),i=$f(e.where,r),o=Wf(i,r),a=new Map,s=new Map;for(let[f,R]of o.fetchQueriesByAlias)s.set(f,R);for(let f of o.items)s.has(f.targetAlias)||s.set(f.targetAlias,sr(f,r)),a.set(f.targetAlias,f.predicate);let l=e.from.alias,c=a.get(l)??null,p=new Map(a);p.delete(l);let u=new Map(o.items.map(f=>[f.targetAlias,f.relation])),d=u.get(l)??null;return u.delete(l),{joinPlan:o,queriesByAlias:s,mainCondition:c,mainRelation:d,joinConditions:p,joinRelations:u,appliedKlikes:o.appliedKlikes,allKlikes:o.allKlikes}}async function cs(e,t,n){let r=new Map,i=(s,l)=>{if(l===null)return;let c=r.get(s);c?c.push(l):r.set(s,[l])};if(i(e.from.appId,LR(e)),e.joins.length>0&&e.where!==null&&e.joins.every(s=>s.type==="INNER"||s.type==="CROSS")&&[e.from,...e.joins.map(s=>s.table)].every(s=>s.alias!==null&&s.cteName===null&&!s.subtableCode)){i(e.from.appId,e.where);for(let s of e.joins)i(s.table.appId,e.where)}if(e.where!==null)for(let s of e.joins){if(!s.table.alias||s.table.subtableCode||s.table.cteName!==null)continue;let l=kr(e.where,{tableAlias:s.table.alias});i(s.table.appId,l)}let a=await Promise.all([...r.entries()].map(async([s,l])=>{let[c,p]=await Promise.all([ke(s,t,n),ZT(s,t,n)]),u=PT(l).filter(d=>c.get(d)==="STATUS");if(u.length>0){let d=await fs(s,t,n);if(d.enable&&d.states&&d.states.length>0){let f=new Set(d.states.map(R=>R.name));for(let R of u)p.set(R,f)}}return[s,c,p]}));return{fieldTypesByApp:new Map(a.map(([s,l])=>[s,l])),fieldOptionsByApp:new Map(a.map(([s,,l])=>[s,l]))}}function PT(e){let t=new Set,n=r=>{if(r.type==="BINARY"){r.left.type==="FIELD"&&t.add(r.left.field);return}if(r.type==="LOGICAL"){n(r.left),n(r.right);return}(r.type==="GROUP"||r.type==="NOT")&&n(r.expr)};for(let r of e)n(r);return[...t]}function kt(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"&&is(e.left.expr,t),e.right.type==="CASE_VALUE"&&is(e.right.expr,t);return;case"LOGICAL":kt(e.left,t),kt(e.right,t);return;case"NOT":case"GROUP":kt(e.expr,t);return;case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}function is(e,t){for(let n of e.branches)kt(n.condition,t)}function OT(e){let t=[];kt(e.where,t),kt(e.having,t);for(let n of e.columns)n.type==="CASE_COL"&&is(n.expr,t);return t}function ce(e){return e.alias??e.cteName}function _R(e,t){return[e.from,...e.joins.map(n=>n.table)].find(n=>ce(n)===t)}function ps(e){return[e.from,...e.joins.map(t=>t.table)].filter(t=>t.cteName===null)}async function Pc(e,t,n){let r=OT(e);if(r.length===0)return new Map;let i=new Set,o=ps(e);for(let s of r){if(s.tableAlias!==null){if(s.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){i.add(e.from.appId);continue}let l=_R(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 ke(s,t,n)]));return new Map(a)}function Me(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 Oc(e,t,n){e!=="MIN"&&e!=="MAX"&&e!=="MODE"||t.type==="WILDCARD"||Tn(t,n)}function Tn(e,t){if(e.type==="FIELD_REF"){t.push(Me(e.field));return}if(e.type==="FIELD"){t.push(e);return}if(e.type==="ARITH"){Tn(e.left,t),Tn(e.right,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){Tn(e.left,t),Tn(e.right,t);return}if(e.type==="STRING_FUNC"){for(let n of e.args)n.type==="AGG_GROUP_KEY"?t.push({type:"FIELD",tableAlias:n.tableAlias??null,field:n.field}):n.type!=="AGG_REF"&&n.type!=="AGG_ARITH"&&n.type!=="VARIABLE"&&Tn(n,t);return}if(e.type==="CASE_WHEN")for(let n of[...e.branches.map(r=>r.result),...e.elseResult?[e.elseResult]:[]])n.type==="AGG_REF"||n.type==="AGG_ARITH"?Er(n,t):n.type!=="ARRAY"&&Tn(n,t)}function Er(e,t){if(e.type==="AGG_REF"){Oc(e.func,e.arg,t);return}e.type==="AGG_ARITH"&&(Er(e.left,t),Er(e.right,t)),e.type==="AGG_GROUP_KEY"&&t.push({type:"FIELD",tableAlias:e.tableAlias??null,field:e.field})}function qu(e,t){for(let n of e.args)if(n.type==="AGG_REF"||n.type==="AGG_ARITH")Er(n,t);else if(n.type==="AGG_GROUP_KEY")t.push({type:"FIELD",tableAlias:n.tableAlias??null,field:n.field});else{if(n.type==="VARIABLE")continue;Oi(n,t)}}function Oi(e,t){if(e.type==="STRING_FUNC"){qu(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){Oi(e.left,t),Oi(e.right,t);return}if(e.type==="CASE_WHEN"){let n=[...e.branches.map(r=>r.result),...e.elseResult?[e.elseResult]:[]];for(let r of n)r.type==="STRING_FUNC"?qu(r,t):r.type==="AGG_REF"||r.type==="AGG_ARITH"?Er(r,t):r.type!=="ARRAY"&&r.type!=="FIELD_REF"&&r.type!=="ARITH"&&Oi(r,t)}}function LT(e,t){let n=r=>{if(r===null||typeof r!="object")return;if(Array.isArray(r)){r.forEach(n);return}let i=r;if(i.type==="AGG_REF"){let o=i;Oc(o.func,o.arg,t);return}i.type==="SELECT"||i.type==="SCALAR_SUBQUERY"||Object.values(i).forEach(n)};n(e)}function _T(e){let t=[];for(let n of e)n.type==="AGGREGATE"?Oc(n.func,n.arg,t):n.type==="ARITH_AGG_COL"?Er(n.expr,t):n.type==="STRFUNC_COL"?qu(n.expr,t):n.type==="SCALAR_VALUE_COL"?Oi(n.expr,t):n.type==="CASE_COL"&&LT(n.expr,t);return t}var DT=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DROP_DOWN","RADIO_BUTTON","STATUS","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME"]);function vT(e){return e.sortKind!==void 0?e.sortKind:e.fieldType==="NUMBER"||e.fieldType==="RECORD_NUMBER"?"number":DT.has(e.fieldType)?"string":void 0}async function DR(e,t,n,r){let i=_T(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 R=_R(e,f.tableAlias);R&&R.cteName===null&&o.add(R.appId)}else if(e.joins.length===0)e.from.cteName===null&&o.add(e.from.appId);else for(let R of a)o.add(R.appId);let s=new Map(await Promise.all([...o].map(async f=>{let R=await ee(f,t,n);return[f,new Map(R.map(E=>[E.code,E]))]}))),l=new Map,c=new Set(i.map(f=>f.field));await Promise.all([...s].map(async([f,R])=>{if(![...c].some(m=>R.get(m)?.fieldType==="STATUS"))return;let E=await kc(f,t,n);E&&l.set(f,E)}));let p=[e.from,...e.joins.map(f=>f.table)],u=(f,R)=>{let E=f.semantics??te(f);return f.fieldType==="STATUS"&&l.has(R)?{...E,optionOrder:l.get(R)}:E};return f=>{let R;if(f.tableAlias!==null)if(f.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null)R=s.get(e.from.appId)?.get(f.field);else{let m=p.find(y=>ce(y)===f.tableAlias);if(!m)return;if(m.cteName!==null)return r?.get(m.cteName)?.columnMeta?.get(f.field)?.semantics??$("string");R=s.get(m.appId)?.get(Ee(m,f.field))}else if(e.joins.length===0){if(e.from.cteName!==null)return r?.get(e.from.cteName)?.columnMeta?.get(f.field)?.semantics??$("string");R=s.get(e.from.appId)?.get(Ee(e.from,f.field))}else{let m=p.flatMap(y=>{if(y.cteName!==null){let S=r?.get(y.cteName);return S?.columns.includes(f.field)?[S.columnMeta?.get(f.field)?.semantics??$("string")]:[]}let g=s.get(y.appId)?.get(Ee(y,f.field));return g?[u(g,y.appId)]:[]});return m.length!==1?void 0:m[0]}if(!R)return;let E=f.tableAlias!==null?p.find(m=>ce(m)===f.tableAlias):e.joins.length===0?e.from:void 0;return u(R,E?.appId??e.from.appId)}}function Ee(e,t){return e.subtableCode&&t.startsWith("_p.")?t.slice(3):t}function qa(e,t){if(e.subtableCode){if(t==="_rid")return"SINGLE_LINE_TEXT";if(t==="_idx"||t==="_pid")return"NUMBER"}}function Ue(e,t){let n=e.semantics??te(e);return{sortKind:vT(e),fieldType:e.fieldType,semantics:t===void 0?n:qn(n,t,e.code)}}function vR(e){return e.orderBy.some(n=>n.key.type==="FIELD_NAME"&&n.key.name==="$id")?e:{...e,orderBy:[...e.orderBy,{key:{type:"FIELD_NAME",name:"$id"},direction:"ASC"}]}}function Q(e){return{sortKind:e,semantics:$(e)}}function qe(){return{semantics:$("string","KSQL_UNKNOWN")}}function UR(e="KSQL_ARRAY"){return{semantics:{fieldType:e,compareMode:"unsupported",inSubtable:!1,requiresCollectionOperators:!1}}}function Je(e){if(e==="$id")return{sortKind:"number",fieldType:"__ID__",semantics:te({fieldType:"__ID__"})};if(e==="_rid")return Q("string");if(e==="_pid"||e==="_idx"||e==="$revision")return Q("number")}var UT=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function On(e){if(e.func==="CAST"){let t=e.args[1];return t?.type==="STRING"&&t.value==="NUMBER"?Q("number"):Q("string")}return UT.has(e.func)?Q("number"):Q("string")}function Rr(e,t){return e.type==="STRING"?Q("string"):e.type==="ARRAY"?UR():e.type==="AGG_REF"?e.func==="MIN"||e.func==="MAX"||e.func==="MODE"?e.arg.type==="WILDCARD"?qe():Ln(e.arg,t):e.func==="GROUP_CONCAT"?Q("string"):Q("number"):e.type==="AGG_ARITH"||e.type==="NUMBER"||e.type==="ARITH"||e.type==="SCALAR_ARITH"?Q("number"):e.type==="STRING_FUNC"?On(e):e.type==="FIELD_REF"?t(Me(e.field))??qe():e.type==="FIELD"?t(e)??qe():qe()}function ds(e){if(e.length===0)return qe();let t=e[0],n=r=>{if(!r)return;let{source:i,...o}=r;return o};return e.every(r=>r.sortKind===t.sortKind&&r.fieldType===t.fieldType&&Co(n(r.semantics),n(t.semantics)))?e.every(i=>Co(i.semantics,t.semantics))?t:{...t,semantics:n(t.semantics)}:e.some(r=>r.semantics?.compareMode==="unsupported")?UR("KSQL_MIXED_UNSUPPORTED"):qe()}function Ln(e,t){if(e.type==="FIELD_REF")return t(Me(e.field))??qe();if(e.type==="FIELD")return t(e)??qe();if(e.type==="NUMBER"||e.type==="ARITH"||e.type==="SCALAR_ARITH")return Q("number");if(e.type==="STRING"||e.type==="CONCAT_OP"||e.type==="VARIABLE")return Q("string");if(e.type==="STRING_FUNC")return On(e);let n=e.branches.map(r=>Rr(r.result,t));return e.elseResult&&n.push(Rr(e.elseResult,t)),ds(n)}function MR(e,t){return e.windowKind==="VALUE"?Ln(e.arg,t):e.windowKind==="AGGREGATE"?e.aggFunc==="COUNT"||e.aggFunc==="SUM"||e.aggFunc==="AVG"?Q("number"):e.arg.type==="WILDCARD"?qe():Ln(e.arg,t):Q("number")}function Ja(e,t){return{...e??{},displayName:t}}function MT(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")||t.type==="WINDOW_COL"&&(t.windowKind==="VALUE"||t.windowKind==="AGGREGATE"&&(t.aggFunc==="MIN"||t.aggFunc==="MAX")))}async function ki(e,t,n,r,i,o=!1){let a=new Map;MT(e)&&await Promise.all(ps(e).map(async E=>{if(a.has(E.appId))return;let m=await ee(E.appId,n,r);a.set(E.appId,new Map(m.map(y=>[y.code,y])))}));let s=[e.from,...e.joins.map(E=>E.table)],l=o&&i===void 0&&s.every(E=>E.cteName===null),c=E=>{if(E.tableAlias!==null){if(E.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){let S=a.get(e.from.appId)?.get(E.field);return S?Ue(S,e.from.appId):void 0}let y=s.find(S=>ce(S)===E.tableAlias);if(!y)return;if(y.cteName!==null)return i?.get(y.cteName)?.columnMeta?.get(E.field);let g=a.get(y.appId)?.get(Ee(y,E.field));return g?Ue(g,y.appId):Je(E.field)}if(e.joins.length===0){if(e.from.cteName!==null)return i?.get(e.from.cteName)?.columnMeta?.get(E.field);let y=a.get(e.from.appId)?.get(Ee(e.from,E.field));return y?Ue(y,e.from.appId):Je(E.field)}let m=s.flatMap(y=>{if(y.cteName!==null){let h=i?.get(y.cteName);return h?.columns.includes(E.field)?[h.columnMeta?.get(E.field)]:[]}let g=a.get(y.appId)?.get(Ee(y,E.field)),S=g?Ue(g,y.appId):Je(E.field);return S?[S]:[]});return m.length===1?m[0]:void 0},p=E=>{if(!l)return;let m=s.filter(y=>{if(E.tableAlias!==null&&ce(y)!==E.tableAlias)return!1;let g=Ee(y,E.field);return a.get(y.appId)?.has(g)===!0||Je(E.field)!==void 0});return m.length===1?m[0].appId:void 0},u=(E,m)=>{let y=p(m);return E&&y!==void 0?{...E,publicSourceApp:y}:E},d=new Map,f=e.columns.some(E=>E.type==="WILDCARD"||E.type==="PARENT_WILDCARD");if(e.columns.length===1&&(e.columns[0].type==="WILDCARD"||e.columns[0].type==="PARENT_WILDCARD")){for(let E of t){let m=Me(E),y=u(c(m),m);d.set(E,Ja(y,y?.displayName??E))}return d}if(f)for(let E of t){let m=Me(E),y=u(c(m),m);d.set(E,Ja(y,y?.displayName??E))}return e.columns.filter(E=>E.type!=="WILDCARD"&&E.type!=="PARENT_WILDCARD").forEach((E,m)=>{let y=f?"alias"in E&&E.alias?E.alias:void 0:t[m];if(!y)return;let g;if(E.type==="FIELD"){let S=Me(E.field);g=u(c(S),S)}else if(E.type==="AGGREGATE")E.func==="GROUP_CONCAT"?g=Q("string"):E.func==="COUNT"||E.func==="SUM"||E.func==="AVG"||E.func==="STDDEV_POP"||E.func==="STDDEV_SAMP"||E.func==="VAR_POP"||E.func==="VAR_SAMP"||E.func==="MEDIAN"?g=Q("number"):(E.func==="MIN"||E.func==="MAX"||E.func==="MODE")&&E.arg.type!=="WILDCARD"&&(g=Ln(E.arg,c));else if(E.type==="ARITH_AGG_COL"||E.type==="ARITH_COL")g=Q("number");else if(E.type==="GROUPING_COL")g=Q("number");else if(E.type==="LITERAL_COL")g=Q("string");else if(E.type==="SCALAR_VALUE_COL"){let S=E.expr;S.type==="STRING_FUNC"?g=On(S):S.type==="NUMBER"||S.type==="SCALAR_ARITH"?g=Q("number"):S.type==="FIELD"?g=c(S):g=Q("string")}else if(E.type==="STRFUNC_COL")g=On(E.expr);else if(E.type==="WINDOW_COL")g=MR(E,c);else if(E.type==="CASE_COL"){let S=E.expr.branches.map(h=>Rr(h.result,c));E.expr.elseResult&&S.push(Rr(E.expr.elseResult,c)),g=ds(S)}else E.type==="SCALAR_SUBQUERY_COL"&&(g=qe());d.set(y,Ja(g,E.aliasDisplay??y))}),d}function kT(e,t){let n=ue.get(e),r=ue.get(t),i=new Map;return e.columns.forEach((o,a)=>{let s=n?.get(o),l=t.columns[a],c=l===void 0?void 0:r?.get(l),p;if(s&&c){let u=ds([s,c]),d=s.publicSourceApp===c.publicSourceApp?s.publicSourceApp:void 0,{publicSourceApp:f,...R}=u;p=d===void 0?R:{...R,publicSourceApp:d}}else p=qe();i.set(o,Ja(p,s?.displayName??o))}),i}function Lc(e,t){let n=[e.from,...e.joins.map(s=>s.table)],r=n.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 c=n.find(p=>ce(p)===s.tableAlias);return!c||c.cteName!==null?void 0:qa(c,s.field)??t.get(c.appId)?.get(Ee(c,s.field))}if(e.joins.length===0)return e.from.cteName!==null?void 0:qa(e.from,s.field)??t.get(e.from.appId)?.get(Ee(e.from,s.field));if(n.some(c=>c.cteName!==null))return;let l=r.flatMap(c=>{let p=qa(c,s.field)??t.get(c.appId)?.get(Ee(c,s.field));return p?[p]:[]});return l.length===1?l[0]:void 0};return{row:o,having:s=>{if(!(s.tableAlias===null&&i.has(s.field)))return o(s)}}}var kR=new WeakSet,_c=new WeakMap;function Ju(e){return kR.add(e),e}function xT(e,t){return _c.set(e,t),t}function xR(e,t){if(t.capability!=="EXACT_PUSHDOWN")return!1;let n=e.columns.filter(r=>r.type==="AGGREGATE"&&r.func==="COUNT"&&!r.distinct&&r.arg.type==="WILDCARD");return n.length!==1||e.columns.some(r=>r!==n[0]&&r.type!=="LITERAL_COL")?!1:!e.distinct&&Z(e).type==="NONE"&&e.having===null&&e.joins.length===0&&e.from.cteName===null&&!e.from.subtableCode&&e.limit===null&&e.offset===null}function FT(e){return typeof e=="string"&&/^(?:0|[1-9]\d*)$/.test(e)}async function GT(e,t){let n=e.columns.find(s=>s.type==="AGGREGATE");if(n?.type!=="AGGREGATE")return null;let r=e.where===null?"":Y(e.where),i=await t.getRecords({app:e.from.appId,query:`${r}${r?" ":""}limit 1`,fields:["$id"],totalCount:!0});if(i.searchAborted)throw new Pn;if(!FT(i.totalCount))return null;let o=n.alias??"COUNT(*)",a=Sn([{[o]:i.totalCount}],e.columns);return{type:"SELECT",rows:a.rows,columns:a.columns,rowCount:1,warnings:[]}}async function KT(e,t,n,r,i,o=!0,a,s,l){let c=_c.get(e);if(kR.has(e)&&c!==void 0&&xR(e,c)){let L=await GT(e,t);if(L!==null)return L}let p=n.maxRecords??1e4,u=new Set,d=n.fetchParallel??1;await Promise.all([$i(e.where,t,n,r,u,i),$i(e.having,t,n,r,u,i)]);let[f,R,E]=await Promise.all([cs(e,t,r),Pc(e,t,r),DR(e,t,r,i)]),m=Lc(e,R),y=await Hi(e,t,r,i,gt(e.having)||wc(e)),g=NR(e,y),S=Cc.get(e);if(S&&!lr(S.joinPlan))throw new Error("InternalError: JOIN server-function fetch binding changed before records API.");let h=S??us(e,f)??fn(e,f);al(h);let I="joinPlan"in h?h:null,N=I&&lr(I.joinPlan)?I:null,U=t,P=h.mainCondition,M=h.joinConditions;if(s&&o)throw new Error("internal error: relative-date prefilter must disable original WHERE pushdown.");let v=s?s.prefilterWhere:N?null:P,C=N?.queriesByAlias.get(e.from.alias)??"",_=await om(e.columns,t,n,r,u,i),b=ut(e.where),D=b?Promise.resolve([]):Li(e,e.from,U,p,d,!0,n.onLimitReached??"error",u,v,N?!1:o,l,C),A=[],w=[];for(let L of e.joins){if(b){A.push({join:L,promise:Promise.resolve([])});continue}let H=L.table.alias?N?.queriesByAlias.get(L.table.alias)??"":"",ne=N?null:L.table.alias?M.get(L.table.alias)??null:null;ne!==null||H!==""?A.push({join:L,promise:Li(e,L.table,U,p,d,!1,n.onLimitReached??"error",u,ne,!0,l,H)}):w.push(L)}let x=a?Promise.resolve(a):Fi(e,t,r,i);x.catch(()=>{});let O=await D,F=new Map;F.set(e.from.alias,O);for(let{join:L,promise:H}of A)F.set(L.table.alias,await H);await Promise.all(w.map(async L=>{let ne=await HR(e,L,F,U,p,d,n.onLimitReached??"error",u,r,i,null,l,"")??await Li(e,L.table,U,p,d,!1,n.onLimitReached??"error",u,null,!0,l,"");F.set(L.table.alias,ne)}));let{optionOrders:W,sortKinds:K,semantics:k}=await x,{rows:G,columns:j}=gu({tables:F,stmt:e,scalarCache:_,optionOrders:W,sortKinds:K,orderSemantics:k,fieldTypeResolver:m.row,fieldSemanticsResolver:y,havingFieldTypeResolver:m.having,havingFieldSemanticsResolver:g,aggregateSortKindResolver:E,appliedKlikes:s?.appliedKlikes??h.appliedKlikes,...s?{residualWhere:s.residualWhere}:N?{residualWhere:N.joinPlan.residualWhere}:{},resolvedGroupingSpec:Ui.get(e),plainGroupByPlan:l,warnings:u,evaluationContext:se(n)}),B=await vc(e,G,j,t,r);return{type:"SELECT",rows:G,columns:B,rowCount:G.length,warnings:[...u]}}function BT(e,t){if(e.length!==t.length)throw new Error(`ArgumentError: UNION \u306E\u5DE6\u53F3\u3067\u5217\u6570\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093\uFF08\u5DE6 ${e.length} \u5217 / \u53F3 ${t.length} \u5217\uFF09\u3002
11
- UNION \u306F\u5217\u3092\u4F4D\u7F6E\u3067\u5BFE\u5FDC\u3055\u305B\u308B\u305F\u3081\u3001\u4E21\u8FBA\u306E\u5217\u6570\u3092\u63C3\u3048\u3066\u304F\u3060\u3055\u3044`)}function Xu(e,t,n){BT(t,e.columns);let r=e.rows.map(a=>{let s={};return t.forEach((l,c)=>{s[l]=a[e.columns[c]??l]??""}),s}),i={...e,rows:r,columns:[...t],rowCount:r.length},o=ue.get(e);if(n||o){let a=new Map;t.forEach((s,l)=>{let c=e.columns[l],p=n?.get(s)??(c===void 0?void 0:o?.get(c));p&&a.set(s,{...p,displayName:s})}),ue.set(i,a)}return i}function FR(e,t,n,r){let i=Xu(t,e.columns),o=[...e.rows,...i.rows],a=n?o:$T(o,e.columns),s=[...new Set([...e.warnings??[],...t.warnings??[]])],l={type:"SELECT",rows:a,columns:[...e.columns],rowCount:a.length,warnings:s};return r&&ue.set(l,kT(e,t)),l}async function GR(e,t,n,r,i=!1,o=!1){let a=bc(e,n,null);return zu(a,async()=>{let s=a.effectiveOptions,[l,c]=await Promise.all([e.left.type==="UNION"?GR(e.left,t,s,r,i,o):xt(Ju(e.left),t,s,r,void 0,i,o,"DERIVED"),xt(Ju(e.right),t,s,r,void 0,i,o,"DERIVED")]);return FR(l,c,e.all,i)})}function $T(e,t){let n=new Set;return e.filter(r=>{let i=JSON.stringify(t.map(o=>r[o]??""));return n.has(i)?!1:(n.add(i),!0)})}function KR(e){return"alias"in e&&typeof e.alias=="string"?e.alias:e.type==="FIELD"?e.field:null}function WT(e){let t=e.recursiveSpec;if(e.columnAliases)return[...e.columnAliases];let n=t.seed.columns.map(KR);if(n.some(i=>i===null))throw new Error(`PlanningError: \u518D\u5E30 CTE\u300C${e.name}\u300D\u3067\u5217\u540D\u30EA\u30B9\u30C8\u3092\u7701\u7565\u3059\u308B\u5834\u5408\u3001seed \u306E\u5F0F\u306B\u306F AS \u5225\u540D\u304C\u5FC5\u8981\u3067\u3059`);let r=n;if(new Set(r).size!==r.length)throw new Error(`PlanningError: \u518D\u5E30 CTE\u300C${e.name}\u300D\u3067\u5217\u540D\u30EA\u30B9\u30C8\u3092\u7701\u7565\u3059\u308B\u5834\u5408\u3001seed \u306E\u51FA\u529B\u5217\u540D\u3092\u91CD\u8907\u3055\u305B\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093`);return r}function zE(e){return e.columns.map((t,n)=>KR(t)??`__b53_column_${n}`)}function qE(e,t){let n=e.semantics,r=t.semantics;if(!n||!r||n.compareMode==="unsupported"||r.compareMode==="unsupported"||n.compareMode!==r.compareMode||e.sortKind&&t.sortKind&&e.sortKind!==t.sortKind||n.inSubtable!==r.inSubtable||n.requiresCollectionOperators!==r.requiresCollectionOperators)return!1;let i=o=>o===void 0||o.startsWith("KSQL_");return!(!i(e.fieldType)&&!i(t.fieldType)&&e.fieldType!==t.fieldType)}async function BR(e,t,n,r){let i=[e.from,...e.joins.map(s=>s.table)],o=new Map;await Promise.all(i.filter(s=>s.cteName===null).map(async s=>{if(o.has(s.appId))return;let l=await ee(s.appId,t,n);o.set(s.appId,new Map(l.map(c=>[c.code,c])))}));let a=(s,l)=>{if(s.cteName!==null)return r.get(s.cteName)?.columnMeta?.get(l);let c=o.get(s.appId)?.get(Ee(s,l));return c?Ue(c,s.appId):Je(l)};return s=>{if(s.tableAlias!==null){let c=i.find(p=>ce(p)===s.tableAlias);return c?a(c,s.field):void 0}if(i.length===1)return a(i[0],s.field);let l=i.map(c=>a(c,s.field)).filter(c=>c!==void 0);return l.length===1?l[0]:void 0}}function bi(e,t,n=!1){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(i=>bi(i,t,n));return}let r=e;if(r.type==="FIELD"){let i=typeof r.tableAlias=="string"||r.tableAlias===null?r:Me(String(r.field??"")),o=t(i);if(!o?.semantics||o.semantics.compareMode==="unsupported")throw new Error(`PlanningError: \u518D\u5E30 CTE \u306E\u5C04\u5F71\u5217 ${i.tableAlias?`${i.tableAlias}.`:""}${i.field} \u306E\u578B\u3092\u8A3C\u660E\u3067\u304D\u307E\u305B\u3093`);if(n&&o.semantics.compareMode!=="number"&&o.semantics.compareMode!=="recordNumber")throw new Error(`PlanningError: \u518D\u5E30 CTE \u306E\u6570\u5024\u6F14\u7B97\u306B\u6570\u5024\u3067\u306A\u3044\u5217 ${i.field} \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`);return}if(r.type==="FIELD_REF"&&typeof r.field=="string"){let i=Me(r.field),o=t(i);if(!o?.semantics||o.semantics.compareMode==="unsupported")throw new Error(`PlanningError: \u518D\u5E30 CTE \u306E\u5C04\u5F71\u5217 ${r.field} \u306E\u578B\u3092\u8A3C\u660E\u3067\u304D\u307E\u305B\u3093`);if(n&&o.semantics.compareMode!=="number"&&o.semantics.compareMode!=="recordNumber")throw new Error(`PlanningError: \u518D\u5E30 CTE \u306E\u6570\u5024\u6F14\u7B97\u306B\u6570\u5024\u3067\u306A\u3044\u5217 ${r.field} \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`);return}if(r.type==="ARITH"||r.type==="SCALAR_ARITH"){bi(r.left,t,!0),bi(r.right,t,!0);return}for(let i of Object.values(r))bi(i,t,n)}async function JE(e,t,n,r,i){let o=await BR(e,n,r,i);e.columns.forEach(c=>bi(c,o));let a=await ki(e,zE(e),n,r,i),s=zE(e),l=new Map;return t.forEach((c,p)=>{let u=a.get(s[p]);if(!u?.semantics||u.semantics.fieldType==="KSQL_UNKNOWN"||u.semantics.compareMode==="unsupported")throw new Error(`PlanningError: \u518D\u5E30 CTE \u306E\u7B2C ${p+1} \u5217\u306E\u578B\u3092\u9759\u7684\u306B\u8A3C\u660E\u3067\u304D\u307E\u305B\u3093`);l.set(c,{...u,displayName:c})}),l}function an(e){return`${e.appId}:${e.subtableCode??""}`}function $R(...e){let t=new Map;for(let n of e)for(let r of[n.from,...n.joins.map(i=>i.table)])r.cteName===null&&!t.has(an(r))&&t.set(an(r),r);return[...t.values()]}function VT(e){let t=e.indexOf(".");return t<0?{alias:null,field:e}:{alias:e.slice(0,t),field:e.slice(t+1)}}function HT(e){let t=new Map,n=r=>{for(let i of r)t.set(an(i),null)};for(let r of e){let i=ps(r);for(let s of i){let l=an(s);t.has(l)||t.set(l,new Set)}let o=(s,l)=>{let c=s===null?i.length===1?i[0]:void 0:[r.from,...r.joins.map(u=>u.table)].find(u=>ce(u)?.toLowerCase()===s.toLowerCase());if(!c){n(i);return}if(c.cteName!==null)return;let p=t.get(an(c));p!==null&&p?.add(l)},a=s=>{if(s==null||typeof s!="object")return;if(Array.isArray(s)){s.forEach(a);return}let l=s;if(l.type==="WILDCARD"||l.type==="PARENT_WILDCARD"){n(i);return}if((l.type==="FIELD"||l.type==="FIELD_REF")&&typeof l.field=="string"){let c=VT(l.field),p=typeof l.tableAlias=="string"?l.tableAlias:l.tableAlias===null?null:c.alias;o(p,c.field);return}if((l.type==="FIELD_NAME"||l.type==="GROUPING_REF")&&typeof l.name=="string"){n(i);return}Object.values(l).forEach(a)};a(r.columns),a(r.where),a(Z(r)),a(r.having),a(r.orderBy);for(let s of r.joins){if(s.on===null){n(i);continue}o(s.on.left.tableAlias,s.on.left.field),o(s.on.right.tableAlias,s.on.right.field)}}return t}function YT(e,t){return{type:"SELECT",distinct:!1,columns:t!==null&&t.size>0?[...t].map(r=>({type:"FIELD",field:r,alias:null})):[{type:"WILDCARD"}],from:{...e,alias:null},joins:[],where:null,groupBy:[],having:null,orderMode:"CANONICAL",orderBy:[],limit:null,offset:null}}async function jT(e,t,n,r){let i=HT(e),o=await Promise.all($R(...e).map(async(a,s)=>{let l=await xt(YT(a,i.get(an(a))??null),t,{...n,onLimitReached:"error"},r,void 0,!0,!1,"DERIVED"),c=`__b53_source_${s}`;return[an(a),{name:c,warnings:l.warnings??[],table:{rows:l.rows,columns:l.columns,columnMeta:ue.get(l)}}]}));return new Map(o)}function XE(e,t){let n=r=>{if(r.cteName!==null)return r;let i=t.get(an(r));if(!i)throw new Error("PlanningError: \u518D\u5E30 CTE \u306E\u5B8C\u5168\u5B9F\u4F53\u5316 source \u3092\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093");return{appId:0,alias:r.alias,cteName:i.name,subtableCode:null}};return{...e,from:n(e.from),joins:e.joins.map(r=>({...r,table:n(r.table)}))}}function QE(e,t,n){return e.cteName===null?void 0:n.get(e.cteName)?.columnMeta?.get(t)}function Fu(e,t){if(t.compareMode!=="number"&&t.compareMode!=="recordNumber")return e;let n=Ae(e);return n===null?`invalid:${e}`:`${n.sign}:${n.coefficient}:${n.scale}`}function ZE(e,t){let n=t.joins[0];if(!n||n.type!=="INNER")throw new Error("PlanningError: \u518D\u5E30\u9805\u306E INNER JOIN \u3092\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093");let r=t.from.cteName===e?t.from:n.table,i=r===t.from?n.table:t.from,o=ce(r),a=n.on.left.tableAlias===o,s=n.on.right.tableAlias===o;if(a===s)throw new Error("PlanningError: \u518D\u5E30\u9805\u306E\u81EA\u5DF1\u53C2\u7167 JOIN \u30AD\u30FC\u3092\u4E00\u610F\u306B\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093");return{self:r,source:i,selfField:a?n.on.left.field:n.on.right.field,sourceField:a?n.on.right.field:n.on.left.field}}async function zT(e,t,n,r,i){let o=e.recursiveSpec,a=WT(e),s=await JE(o.seed,a,t,i,r),l=new Map(r);l.set(e.name,{rows:[],columns:a,columnMeta:s});let c=await JE(o.recursiveTerm,a,t,i,l);a.forEach((K,k)=>{let G=s.get(K),j=c.get(K);if(!G||!j||!qE(G,j))throw new Error(`PlanningError: \u518D\u5E30 CTE\u300C${e.name}\u300D\u306E\u7B2C ${k+1} \u5217\u3067 seed \u3068\u518D\u5E30\u9805\u306E\u578B\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093`)});let p=ZE(e.name,o.recursiveTerm),u=await BR(o.recursiveTerm,t,i,l),d=u({type:"FIELD",tableAlias:ce(p.self),field:p.selfField}),f=u({type:"FIELD",tableAlias:ce(p.source),field:p.sourceField});if(!d||!f||!qE(d,f))throw new Error(`PlanningError: \u518D\u5E30 CTE\u300C${e.name}\u300D\u306E\u81EA\u5DF1\u53C2\u7167 JOIN \u30AD\u30FC\u306E\u578B\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093`);let R=await jT([o.seed,o.recursiveTerm],t,n,i),E=new Map(r);for(let K of R.values())E.set(K.name,K.table);let m=XE(o.seed,R),y=XE(o.recursiveTerm,R),g=await ct(m,t,n,E,i,!0,!0),S=Xu(g,a,s),h=o.cycle,I=h?s.get(h.column):void 0,N=new Map(s);h&&N.set(h.markColumn,{...Q("string"),displayName:h.markColumn});let U=h?[...a,h.markColumn]:[...a],P=[],M=[],v=new Set([...S.warnings??[],...[...R.values()].flatMap(K=>K.warnings)]),C=new ya(e.name,yt(n)),_=K=>{C.addRow(),P.push(K)};for(let K of S.rows){let k=h?String(K[h.column]??""):"",G=h?{...K,[h.markColumn]:h.defaultValue}:K;_(G),M.push({row:K,path:h?[k]:[]})}let b=ZE(e.name,y),D=b.source.cteName===null?void 0:E.get(b.source.cteName);if(!D)throw new Error("PlanningError: \u518D\u5E30\u9805\u306E\u5B8C\u5168\u5B9F\u4F53\u5316 source \u304C\u3042\u308A\u307E\u305B\u3093");let A=QE(b.self,b.selfField,l)??QE(b.source,b.sourceField,E);if(!A?.semantics||A.semantics.compareMode==="unsupported")throw new Error(`PlanningError: \u518D\u5E30\u9805\u306E JOIN \u30AD\u30FC ${b.selfField} \u306E\u578B\u3092\u8A3C\u660E\u3067\u304D\u307E\u305B\u3093`);let w=new Map;for(let K of D.rows){let k=String(K[b.sourceField]??""),G=Fu(k,A.semantics),j=w.get(G);j?j.push(K):w.set(G,[K])}let x=w.has(Fu("",A.semantics)),O=0,F=!1;for(;M.length>0;){O++;let K=[];for(let k of M){let G=String(k.row[b.selfField]??"");!F&&G===""&&x&&(v.add(`\u518D\u5E30 CTE\u300C${e.name}\u300D\u306E JOIN ${b.selfField} = ${b.sourceField} \u3067\u7B2C ${O} \u53CD\u5FA9\u306B\u4E21\u5074\u306E\u7A7A\u30AD\u30FC\u3092\u691C\u51FA\u3057\u307E\u3057\u305F\u3002\u7A7A\u30AD\u30FC\u3069\u3046\u3057\u306F\u4E00\u81F4\u3057\u3001\u30EB\u30FC\u30C8\u7FA4\u3092\u518D\u5C55\u958B\u3057\u5F97\u307E\u3059\u3002`),F=!0);let j=w.get(Fu(G,A.semantics))??[];for(let ne of j){let Oe=String(ne[b.sourceField]??"");Ot("=",G,Oe,A.semantics)&&C.addExpansion()}if(j.length===0)continue;let B=new Map(E);B.set(e.name,{rows:[k.row],columns:a,columnMeta:s});let L=await ct(y,t,n,B,i,!0,!0);for(let ne of L.warnings??[])v.add(ne);let H=Xu(L,a,s);H.rows.length>0&&C.observeDepth(O);for(let ne of H.rows){if(!h){_(ne),K.push({row:ne,path:[]});continue}let Oe=String(ne[h.column]??""),Kt=k.path.some(re=>Ot("=",re,Oe,I.semantics));_({...ne,[h.markColumn]:Kt?h.markValue:h.defaultValue}),Kt||K.push({row:ne,path:[...k.path,Oe]})}}M=K}let W={type:"SELECT",rows:P,columns:U,rowCount:P.length,warnings:[...v]};return ue.set(W,N),W}async function Dc(e,t,n,r,i,o=!1){if((i==null||i.size===0)&&zt(e))return xt(qt(e),t,n,r,void 0,o,!1,"DERIVED");let a=new Map(i??[]),s=new Set;for(let c of e.ctes){let p;c.recursiveSpec?p=await zT(c,t,n,a,r):c.query.type==="SHOW_APPS"?p=await tm(t):c.query.type==="DESCRIBE"?p=await nm(c.query,t,r):c.query.type==="GENERATE_SERIES"?p=WR(c.query):p=await ct(c.query,t,n,a,r,!0);for(let u of p.warnings??[])s.add(u);a.set(c.name,{rows:p.rows,columns:p.columns,columnMeta:ue.get(p),...c.query.type==="GENERATE_SERIES"?{uniqueGeneratedColumn:c.query.columnAlias}:{}})}let l=await ct(e.query,t,n,a,r,o);return Ic(l,[...s])}function WR(e){let t=Ho(e),n={type:"SELECT",columns:[e.columnAlias],rows:t.values.map(i=>({[e.columnAlias]:i})),rowCount:t.rowCount,warnings:[]},r=t.kind==="INTEGER"?{sortKind:"number",fieldType:"NUMBER",semantics:te({fieldType:"NUMBER"})}:{sortKind:"string",fieldType:"DATE",semantics:te({fieldType:"DATE"})};return ue.set(n,new Map([[e.columnAlias,r]])),n}async function ct(e,t,n,r,i,o=!1,a=!1){if(a||await za(e,t,r,i),e.type==="UNION"){let[c,p]=await Promise.all([ct(e.left,t,n,r,i,o,!0),ct(e.right,t,n,r,i,o,!0)]);return FR(c,p,e.all,o)}if(!(e.from.cteName!=null&&e.from.cteName!==_e||e.joins.some(c=>c.table.cteName!=null)))return xt(e,t,n,i,r,o,!1,"DERIVED");let l=await qT(e,t,n,r,i);return o&&ue.set(l,await ki(e,l.columns,t,i,r)),l}async function qT(e,t,n,r,i){await Mi(e,t,i,r);let o=Ui.get(e),a=await fr(e,t,i,r),s=new Set,l=B=>{if(B.alias!==null||B.cteName===null)return B;let L=ce(B);return s.add(L),{...B,alias:L}};e={...e,from:l(e.from),joins:e.joins.map(B=>({...B,table:l(B.table)}))};let c=new Set;for(let B of[e.from,...e.joins.map(L=>L.table)]){let L=ce(B);if(L!==null){if(c.has(L))throw new Error(`ArgumentError: effective alias ${L} is used by multiple tables.`);c.add(L)}}let p=B=>{let L=r.get(B);if(!L)throw new Error(`ArgumentError: materialized source ${B} is not available.`);return L};for(let B of[e.from,...e.joins.map(L=>L.table)])B.cteName!==null&&p(B.cteName);let{resolver:u}=await bn(e,t,i,r,wR(e)),d=bR(e,u,"DERIVED",e.joins.length===0&&e.from.cteName!==null?r.get(e.from.cteName)?.uniqueGeneratedColumn:void 0),f=n.maxRecords??1e4,R=new Set,E=n.fetchParallel??1;await Promise.all([$i(e.where,t,n,i,R,r),$i(e.having,t,n,i,R,r),rm(e,t,n,i,R,r)]);let m=he(e.where,u);if(m.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Nn(m)}).`);let y=await Fi(e,t,i,r),g=ns(e)?(e.orderMode==="KINTONE_NATIVE"?pi:ci)({stmt:e,staticMode:"FULL_SCAN",whereCapability:m.capability,whereReasons:m.reasons,orderSemantics:y.semantics,maxRecords:f,hasKlike:we(e.where)}):null,S=bc(e,n,g),h=S.effectiveOptions,[I,N,U]=await Promise.all([cs(e,t,i),Pc(e,t,i),DR(e,t,i,r)]),P=Lc(e,N),M=await Hi(e,t,i,r,gt(e.having)||wc(e)),v=NR(e,M),C=us(e,I)??fn(e,I);al(C);let _=t,b=await om(e.columns,t,h,i,R,r),D=Promise.resolve(y);D.catch(()=>{});let A=new Map,w=new Map;if(e.from.cteName!=null){let B=p(e.from.cteName);A.set(e.from.alias,B.rows.map(eR)),w.set(e.from.alias,B.columns)}else{let B=await zu(S,()=>Li(e,e.from,_,f,E,!0,h.onLimitReached??"error",R,C.mainCondition,m.capability==="EXACT_PUSHDOWN",a));A.set(e.from.alias,B)}let x=e.joins.map(B=>zu(S,async()=>{if(B.table.cteName!=null){let L=p(B.table.cteName);A.set(B.table.alias,L.rows.map(eR)),w.set(B.table.alias,L.columns)}else{let L=B.table.alias?C.joinConditions.get(B.table.alias)??null:null,ne=await HR(e,B,A,_,f,E,h.onLimitReached??"error",R,i,r,L,a)??await Li(e,B.table,_,f,E,!1,h.onLimitReached??"error",R,L,!0,a);A.set(B.table.alias,ne)}}));await Promise.all(x);let{optionOrders:O,sortKinds:F,semantics:W}=await D,K=e.joins.length===0&&e.from.cteName!=null?p(e.from.cteName).columns:void 0,{rows:k,columns:G}=gu({tables:A,stmt:e,scalarCache:b,optionOrders:O,sortKinds:F,orderSemantics:W,fieldTypeResolver:P.row,fieldSemanticsResolver:M,havingFieldTypeResolver:P.having,havingFieldSemanticsResolver:v,aggregateSortKindResolver:U,appliedKlikes:C.appliedKlikes,sourceColumns:K,tableColumns:w,hiddenQualifiedAliases:s,resolvedGroupingSpec:o,plainGroupByPlan:a,evaluationContext:se(n)}),j=await vc(e,k,G,t,i);return Ic({type:"SELECT",rows:k,columns:j,rowCount:k.length,warnings:[...R]},d)}async function vc(e,t,n,r,i){if(t.length!==0||n.length!==0||e.columns.length!==1||e.columns[0].type!=="WILDCARD"||e.joins.length!==0||e.from.cteName!==null)return[...n];let o=await ee(e.from.appId,r,i);return Jf(o,e.from.subtableCode,()=>fs(e.from.appId,r,i))}function eR(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,{value:n??""}]))}async function Li(e,t,n,r,i,o,a,s,l=null,c=!0,p,u=""){let d=dn(e,t,p),f=y=>{if(s.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${y} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${y} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`),yc(n,t.appId),xf(e,t,o))throw new Ge(`\u5916\u90E8\u7D50\u5408\u306E\u6B63\u3057\u3044\u7D50\u679C\u306B\u306F\u5B8C\u5168\u306A\u5019\u88DC\u96C6\u5408\u304C\u5FC5\u8981\u3067\u3059\u3002complete input reason: OUTER_JOIN_NON_PRESERVED\uFF08APP${t.appId}\uFF09\u3002onLimit=truncate\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u53D6\u5F97\u4EF6\u6570\u304C\u4E0A\u9650\uFF08${y} \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`,!0)};if(!t.subtableCode){let y=o&&c?td(e,t.appId).query:"",g=[l!==null?Y(l):"",u].filter(N=>N!==""),S=g.length>1?g.map(N=>`(${N})`).join(" and "):g[0]??"",h=y&&S?`(${y}) and (${S})`:y||S;return(await it(n.getRecords,t.appId,h,d,{parallel:i,maxRecords:r,onLimit:a,onTruncate:f})).records}let R=o&&c&&e.joins.length===0&&e.where!==null&&_c.get(e)?.capability==="EXACT_PUSHDOWN"&&!Nt(e.where)?Y(e.where):"",m=(await it(n.getRecords,t.appId,R,d,{parallel:i,maxRecords:r,onLimit:a,onTruncate:f})).records;return mE(m,t.subtableCode)}var VR=50;function JT(e){let t=Ae(e);return t!==null?JSON.stringify(t):e}function Qu(e){return JSON.stringify(e)}function _n(e,t){return JSON.stringify(e.map((n,r)=>t[r]?JT(n):n))}function Yi(e,t){let n=e.raw.get(Qu(t));if(n!==void 0)return n;if(e.numericKey.some(Boolean))return e.normalized.get(_n(t,e.numericKey))}async function ji(e,t,n,r,i,o){let a=i.maxRecords??1e4,s=i.fetchParallel??1,l=t.map(m=>o.get(m)==="NUMBER"),c={raw:new Map,normalized:new Map,numericKey:l},p=(m,y,g)=>{let S=m.get(y);(S===void 0||g>S)&&m.set(y,g)},u=(m,y)=>{p(c.raw,Qu(m),y),l.some(Boolean)&&p(c.normalized,_n(m,l),y)},d=new Set,f=[],R=new Set;for(let m of n){let y=Qu(m);R.has(y)||(R.add(y),m.some(g=>g==="")?f.push(m):d.add(m[0]))}let E=["$id",...t];for(let m of zi([...d],VR)){let y=`${t[0]} in (${m.map(xi).join(",")})`,g=await xe(r.getRecords,e,y,E,{maxRecords:a,parallel:s});for(let S of g){let h=Number(S.$id?.value);Number.isFinite(h)&&u(t.map(I=>Uc(S[I]?.value)),h)}}for(let m of f){let y=t.map((S,h)=>`${S} = ${xi(m[h])}`).join(" and "),g=await xe(r.getRecords,e,y,["$id"],{maxRecords:a,parallel:s});g.length!==0&&u(m,XT(g))}return c}function XT(e){let t=Number.NEGATIVE_INFINITY;for(let n of e){let r=Number(n.$id?.value);Number.isFinite(r)&&r>t&&(t=r)}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 Uc(e){return typeof e=="string"?e:e==null?"":String(e)}function xi(e){return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function zi(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}var QT=6,Xa=ga*QT;async function HR(e,t,n,r,i,o,a,s,l,c,p=null,u,d=""){if(t.type!=="INNER"||!t.table.alias||t.table.subtableCode)return null;let f=t.on.left.tableAlias,R=t.on.right.tableAlias;if(!f||!R)return null;let E,m,y;if(f===t.table.alias&&R!==t.table.alias)E=R,m=t.on.right.field,y=t.on.left.field;else if(R===t.table.alias&&f!==t.table.alias)E=f,m=t.on.left.field,y=t.on.right.field;else return null;let g=n.get(E);if(!g)return null;let S=[e.from,...e.joins.map(A=>A.table)].find(A=>ce(A)===E),h=(await ee(t.table.appId,r,l)).find(A=>A.code===Ee(t.table,y)),I=h?Ue(h,t.table.appId):Je(y),N;if(S?.cteName!==null&&S?.cteName!==void 0)N=c?.get(S.cteName)?.columnMeta?.get(m);else if(S){let A=(await ee(S.appId,r,l)).find(w=>w.code===Ee(S,m));N=A?Ue(A,S.appId):Je(m)}let U=[],P=!1;for(let A of g){let w=A[m]?.value,x=Uc(w);(w==null||x.length===0)&&(P=!0),U.push(x)}let M=eu({fieldType:I?.fieldType,sourceSemantics:N?.semantics,sourceRowCount:g.length,values:U,hasEmptyValue:P,maxInKeys:Xa});if(M.kind==="EMPTY_SOURCE")return[];if(M.kind==="FALLBACK"){if(M.reason==="JOIN_KEY_LIMIT_EXCEEDED"){let A=new Set(U).size;s.add(`JOIN\u30AD\u30FC\u304C ${A} \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 ${Xa} \u4EF6\uFF09\u3002`)}return null}if(M.kind==="RANGE_CANDIDATE")return null;let v=Zl(M,y,xi);if(v.length===0)return s.add(`JOIN\u30AD\u30FC\u304C 0 \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 ${Xa} \u4EF6\uFF09\u3002`),null;let C=dn(e,t.table,u),_=A=>{s.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${A} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${A} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`),yc(r,t.table.appId)},b=[],D=new Set;for(let A of v){let x=[p!==null?Y(p):"",d].filter(F=>F!=="").reduce((F,W)=>`(${F}) and (${W})`,A),O=await it(r.getRecords,t.table.appId,x,C,{parallel:o,maxRecords:i,onLimit:a,onTruncate:_});for(let F of O.records){let W=`${F.$id?.value??""}:${JSON.stringify(F)}`;D.has(W)||(D.add(W),b.push(F))}}return b}var Zu=new Map,ec=new Map,tc=new Map,nc=new Map,rc=new Map,ic=new Map;function Mc(e){Zu.delete(e),ec.delete(e),tc.delete(e),nc.delete(e),rc.delete(e),ic.delete(e)}function mr(e,t,n){return e.get(t)?.get(n)}function yr(e,t,n,r){let i=e.get(t);i||(i=new Map,e.set(t,i)),i.set(n,r)}async function ee(e,t,n){let r=mr(nc,n,e);if(r)return r;let i=t.getFields(e);return yr(nc,n,e,i),i}async function It(e,t,n){let r=mr(ic,n,e);if(r)return r;let i=t.getNumberPrecision(e);return yr(ic,n,e,i),i}async function fs(e,t,n){let r=mr(rc,n,e);if(r)return r;let i=t.getProcessStatuses(e);return yr(rc,n,e,i),i}async function kc(e,t,n){let r=await fs(e,t,n);return r.enable&&r.states!==null?new Map(r.states.map(i=>[i.name,i.index])):void 0}async function ke(e,t,n){let r=mr(Zu,n,e);if(r)return r;let i=await ee(e,t,n),o=new Map(i.map(a=>[a.code,a.fieldType]));return yr(Zu,n,e,o),o}async function oc(e,t,n){let r=mr(ec,n,e);if(r)return r;let i=await ee(e,t,n),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 yr(ec,n,e,o),o}async function ZT(e,t,n){let r=await oc(e,t,n);return new Map([...r.entries()].map(([i,o])=>[i,new Set(o.keys())]))}async function tR(e,t,n){let r=mr(tc,n,e);if(r)return r;let i=await ee(e,t,n),o=new Map;for(let a of i)a.sortKind&&o.set(a.code,a.sortKind);return yr(tc,n,e,o),o}function eI(e){let t=[...e.orderBy,...e.columns.flatMap(n=>n.type==="WINDOW_COL"?n.orderBy:[])];return[...new Set(t.flatMap(n=>n.key.type==="FIELD_NAME"?[n.key.name]:[]))]}async function tI(e,t,n,r){let i=eI(e);if(i.length===0)return new Map;let o=[e.from,...e.joins.map(u=>u.table)],a=new Set,s=new Map(await Promise.all([...new Set(o.filter(u=>u.cteName===null).map(u=>u.appId))].map(async u=>{let d=await ee(u,t,n);return[u,new Map(d.map(f=>[f.code,f]))]}))),l=u=>{if(u.tableAlias!==null){if(u.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){let E=s.get(e.from.appId)?.get(u.field);return E?Ue(E,e.from.appId):void 0}let f=o.find(E=>ce(E)===u.tableAlias);if(!f)return;if(f.cteName!==null)return r?.get(f.cteName)?.columnMeta?.get(u.field);let R=s.get(f.appId)?.get(Ee(f,u.field));return R?Ue(R,f.appId):Je(u.field)}if(e.joins.length===0){if(e.from.cteName!==null)return r?.get(e.from.cteName)?.columnMeta?.get(u.field);let f=s.get(e.from.appId)?.get(Ee(e.from,u.field));return f?Ue(f,e.from.appId):Je(u.field)}let d=o.flatMap(f=>{if(f.cteName!==null){let m=r?.get(f.cteName),y=m?.columns.includes(u.field)?m.columnMeta?.get(u.field):void 0;return y?[y]:[]}let R=s.get(f.appId)?.get(Ee(f,u.field)),E=R?Ue(R,f.appId):Je(u.field);return E?[E]:[]});return d.length>1&&a.add(u.field),d.length===1?d[0]:void 0},c=new Map;for(let u of e.columns){if(!("alias"in u)||!u.alias)continue;let d;if(u.type==="FIELD")d=l(Me(u.field));else if(u.type==="ARITH_COL"||u.type==="ARITH_AGG_COL")d=Q("number");else if(u.type==="WINDOW_COL")d=MR(u,l);else if(u.type==="GROUPING_COL")d=Q("number");else if(u.type==="LITERAL_COL"||u.type==="SCALAR_VALUE_COL")d=Q("string");else if(u.type==="STRFUNC_COL")d=On(u.expr);else if(u.type==="SCALAR_SUBQUERY_COL")d=qe();else if(u.type==="CASE_COL"){let f=u.expr.branches.map(R=>Rr(R.result,l));u.expr.elseResult&&f.push(Rr(u.expr.elseResult,l)),d=ds(f)}else u.type==="AGGREGATE"&&(u.func==="MIN"||u.func==="MAX"||u.func==="MODE"?u.arg.type!=="WILDCARD"&&(d=Ln(u.arg,l)):d=u.func==="GROUP_CONCAT"?Q("string"):Q("number"));d?.semantics&&c.set(u.alias,d.semantics)}let p=new Map;for(let u of i){let d=c.get(u)??l(Me(u))?.semantics;if(!d){let R=Me(u);R.tableAlias===null&&a.has(R.field)&&p.set(u,te({fieldType:"KSQL_AMBIGUOUS"}));continue}let f=d;if(d.fieldType==="STATUS"&&d.source&&e.orderMode!=="KINTONE_NATIVE"){let R=await fs(d.source.appId,t,n);R.enable&&R.states!==null&&(f={...d,optionOrder:new Map(R.states.map(E=>[E.name,E.index]))})}p.set(u,f)}return p}async function Fi(e,t,n,r){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([nI(e,t,n),rI(e,t,n),tI(e,t,n,r)]);return{optionOrders:o,sortKinds:a,semantics:s}}async function nI(e,t,n){let r=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,n);for(let[l,c]of s.entries())r.has(l)||r.set(l,c)}for(let a of i){if(a.cteName!=null||!a.alias)continue;let s=await oc(a.appId,t,n);for(let[l,c]of s.entries())r.set(`${a.alias}.${l}`,c)}return r}async function rI(e,t,n){let r=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 tR(a.appId,t,n);for(let[l,c]of s.entries())r.has(l)||r.set(l,c)}for(let a of i){if(a.cteName!=null||!a.alias)continue;let s=await tR(a.appId,t,n);for(let[l,c]of s.entries())r.set(`${a.alias}.${l}`,c)}return r}function YR(e,t){if(typeof e!="string")return e;let n=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),r=new Set(["CHECK_BOX","MULTI_SELECT"]);if(n.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(r.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 iI=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function oI(e,t,n){let r=new Map(n.map(i=>[i.code,i]));for(let i of t){let o=r.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||iI.has(o.fieldType))throw new Error(`ArgumentError: DML target field ${i} is not writable (${o.fieldType}).`)}}async function pt(e,t,n,r){let i=await ee(e,n,r);return oI(e,t,i),i}async function Ft(e,t,n,r,i){let o=new Map(n.map(a=>[a.code,a]));return t.some(a=>o.get(a)?.fieldType==="NUMBER")?It(e,r,i):void 0}function Dn(e,t,n,r){let i=new Map(n.map(o=>[o.code,o]));e.forEach((o,a)=>{for(let s of t){let l=i.get(s),c=o[s]?.value??"",p=Be(c,l,r);if(!p.ok)throw new Error(`DmlValidationError: ${p.code} ${p.message} (row=${a+1}, field=${s})`);let u=["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(l.fieldType)&&Array.isArray(c)&&c.every(d=>typeof d=="object"&&d!==null&&"code"in d);o[s]={value:u?c:p.value}}})}async function aI(e,t,n,r,i){let o=await pt(e.appId,e.fields,t,r),a=await ri({statement:e,fieldInfos:o,dmlMaxRows:Qe(n.dmlMaxRows,"dmlMaxRows",Gt),dmlMaxSubtableRows:Qe(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ce),statementNumber:i,loadNumberPrecision:()=>It(e.appId,t,r)});return kI(e,a,o)}async function sI(e,t,n,r,i){let{fieldInfos:o,prepared:a}=await jR(e,t,n,r,i);return FI(e,a,o)}async function jR(e,t,n,r,i){let o=await pt(e.appId,e.fields,t,r),a=new Map(o.map(m=>[m.code,m.fieldType])),s=ZR(e),l=new Set;for(let m of s){let y=_n(m,e.keyFields.map(g=>a.get(g)==="NUMBER"));if(l.has(y))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");l.add(y)}let c=await ji(e.appId,e.keyFields,s,t,n,a),p=s.map(m=>Yi(c,m)),u=new Map,d=[...new Set(p.filter(m=>m!==void 0))],f=["$id","$revision",...o.filter(m=>!m.inSubtable&&m.fieldType!=="FILE").map(m=>m.code)];for(let m of zi(d,100)){let y=await t.getRecords({app:e.appId,query:`$id in (${m.join(",")}) limit 500`,fields:[...new Set(f)]});for(let g of y.records){let S=Number(g.$id?.value);Number.isSafeInteger(S)&&S>0&&u.set(S,g)}}let R=p.map((m,y)=>({sourceRowIndex:y,...m===void 0?{}:{targetId:m,snapshot:u.get(m)}})),E=await Lf({statement:e,matches:R,fieldInfos:o,dmlMaxRows:Qe(n.dmlMaxRows,"dmlMaxRows",Gt),dmlMaxSubtableRows:Qe(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ce),statementNumber:i,loadNumberPrecision:()=>It(e.appId,t,r)});return{fieldInfos:o,prepared:E}}async function lI(e,t,n,r){if(n.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let i=await pt(e.appId,e.fields,t,r),o=await ri({statement:e,fieldInfos:i,dmlMaxRows:Qe(n.dmlMaxRows,"dmlMaxRows",Gt),dmlMaxSubtableRows:Qe(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ce),loadNumberPrecision:()=>It(e.appId,t,r)}),a=zl(o);if(n.confirm&&!await n.confirm(o.guards.parentRows,"INSERT",{statementIndex:0,statementCount:1,statementType:"INSERT",targetAppId:e.appId,applyDetail:Es(a),applyDiagnostic:a}))throw new ge("INSERT",o.guards.parentRows);let s=await Mf(o,t,a);return{...s,diagnostic:Ye(a,s)}}async function uI(e,t,n,r){if(n.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let{prepared:i}=await jR(e,t,n,r,1),o=ql(i);if(n.confirm){let s=Es(o);if(!await n.confirm(i.guards.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPSERT",targetAppId:e.appId,applyDetail:s,applyDiagnostic:o}))throw new ge("UPDATE",i.guards.parentRows)}let a=await kf(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:Ye(o,a)}}function cI(e,t){let n=new Map;for(let r of[...e,...t]){let i=n.get(r.table);n.set(r.table,i?{table:r.table,patchRows:i.patchRows+r.patchRows,appendRows:i.appendRows+r.appendRows,removeRows:i.removeRows+r.removeRows}:{...r})}return[...n.values()]}function Es(e,t=!0){let n=e.branches.find(d=>d.branch==="insert"),r=e.branches.find(d=>d.branch==="update"),i=e.branches.flatMap(d=>d.targets),o=cI(n?Ha(n):[],r?Ha(r):[]),a=pI(i),s=e.branches.reduce((d,f)=>d+(f.parentRows??0),0),l=i.filter(d=>d.targetKind==="SUBTABLE").reduce((d,f)=>d+(f.changedCount??0),0),c=o.reduce((d,f)=>d+f.appendRows,0),p=o.reduce((d,f)=>d+f.removeRows,0),u={kind:e.statementKind==="UPDATE"?"APPLY_PATCH":e.statementKind==="INSERT"?"APPLY_INSERT":"APPLY_UPSERT",parentRows:s,changedSubtableRows:l,addedSubtableRows:c,tables:o,...a.length>0?{multiValues:a}:{},deletedRows:p,deletedParentRows:e.branches.reduce((d,f)=>d+(f.deletedParentRows??0),0),revisionRequired:e.branches.some(d=>d.guards.revisionRequired),irreversible:!0,retryOnRevisionConflict:!1,...t?{nonTransactional:!0,partialSuccessPossible:!0}:{}};if(e.statementKind==="INSERT"&&n)return{...u,insertedParentRows:n.parentRows??0,initialSubtableRows:n.targets.filter(d=>d.targetKind==="SUBTABLE").reduce((d,f)=>d+(f.changedCount??0),0)};if(e.statementKind==="UPSERT"&&n&&r){let d=Ha(n),f=Ha(r);return{...u,insertedParentRows:n.parentRows??0,initialSubtableRows:n.targets.filter(R=>R.targetKind==="SUBTABLE").reduce((R,E)=>R+(E.changedCount??0),0),updatedParentRows:r.parentRows??0,applyBranches:{insert:{parentRows:n.parentRows??0,initialSubtableRows:d.reduce((R,E)=>R+E.appendRows,0),tables:d},update:{parentRows:r.parentRows??0,changedSubtableRows:r.targets.filter(R=>R.targetKind==="SUBTABLE").reduce((R,E)=>R+(E.changedCount??0),0),addedSubtableRows:f.reduce((R,E)=>R+E.appendRows,0),tables:f,deletedRows:f.reduce((R,E)=>R+E.removeRows,0),deletedParentRows:r.deletedParentRows??0}}}}return u}function Ha(e){return e.targets.filter(t=>t.targetKind==="SUBTABLE").map(t=>{let n=Cn(t,"APPEND"),r=Cn(t,"REMOVE");return{table:t.field,patchRows:(t.changedCount??0)-n-r,appendRows:n,removeRows:r}})}function Cn(e,t){return e.operations.filter(n=>n.kind===t).reduce((n,r)=>n+(r.count??0),0)}function pI(e){let t=new Map;for(let n of e.filter(r=>r.targetKind==="MULTI_VALUE")){let r={field:n.field,fieldType:n.fieldType??"UNKNOWN",addedValues:Cn(n,"ADD"),removedValues:Cn(n,"REMOVE_VALUE"),changedValues:n.changedCount??0,parents:(n.postImages??[]).map(o=>({parentId:o.parentId,postImage:o.value}))},i=t.get(n.field);t.set(n.field,i?{...i,addedValues:i.addedValues+r.addedValues,removedValues:i.removedValues+r.removedValues,changedValues:i.changedValues+r.changedValues,parents:[...i.parents,...r.parents]}:r)}return[...t.values()]}async function xc(e,t,n,r,i,o){if(e.type==="INSERT"&&e.applyBlocks?.length)return aI(e,t,n,r,o);if(e.type==="UPSERT"&&(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length))return sI(e,t,n,r,o);if(e.type==="UPDATE"&&e.applyBlocks?.length){let a=await QR(e,t,n,r,o);if(a.type!=="VALIDATION")throw new Error("InternalError: APPLY VALIDATE ONLY returned a mutation result.");return a}return(await Fc(e,t,n,r,i,o)).result}var Gi=class extends Error{constructor(n,r){super(`RejectLimitExceededError: ${n}`);this.diagnostic=r;this.name="RejectLimitExceededError"}};async function Fc(e,t,n,r,i,o,a=!0,s=!0){let l=e.type==="UPDATE"?"UPDATE":e.type.startsWith("UPSERT")?"UPSERT":"INSERT",c=e.type==="UPDATE"?["$id",...e.assignments.map(D=>D.field)]:[...e.fields];if(new Set(c).size!==c.length)throw new Error("ArgumentError: DML target fields contain duplicates.");let p=e.type==="UPDATE"?e.assignments.map(D=>D.field):e.fields,u=await pt(e.appId,p,t,r);e.type==="UPDATE"&&await pr(e,t,r);let d=new Map(u.map(D=>[D.code,D])),f=await Ft(e.appId,p,u,t,r),R=Et(u,c),E=yE(R),m=(await dI(e,l,t,n,r,i,d,e.type==="UPDATE"?E:void 0)).sort((D,A)=>D.rowNumber-A.rowNumber),y=m.filter(D=>D.mode==="update"),g=e.type==="UPDATE"?RI:e.type.startsWith("UPSERT")?D=>mI(D,t,n.maxRecords??1e4):void 0,S=n.loadUpdateModeSnapshots??g,h=y.length>0&&S!==void 0,I=new Map;if(h){Gl(y,p,u);let D=await S({appId:e.appId,candidates:y,fields:E}),A=new Map;for(let w of y){if(w.targetId===void 0)throw new Error(`InternalError: update-mode validation candidate has no targetId (row=${w.rowNumber}).`);let x=D.get(w.targetId);if(!x)throw new Error(`InternalError: update-mode snapshot is missing for record ${w.targetId}.`);let O=gE(x,w.record??{});A.set(w.rowNumber,O)}f===void 0&&[...A.values()].some(w=>yn(w,R))&&(f=await It(e.appId,t,r));for(let w of y){let x=A.get(w.rowNumber);if(!x)throw new Error(`InternalError: validation post-image is missing for row ${w.rowNumber}.`);I.set(w.rowNumber,gn(x,R,f,o,w.rowNumber,l))}}let N=Kl(m,l,c,p,u,o,f,e.checkGroups??[],a,s,{validateUpdateBuiltIns:!h}),{errors:U,invalidRows:P,invalidRowNumbers:M}=N;if(h){let D=new Map(N.candidateResults.map(A=>[A.rowNumber,A]));U=[],M=new Set;for(let A of m){let w=D.get(A.rowNumber);if(!w)throw new Error(`InternalError: validation detail is missing for row ${A.rowNumber}.`);if(A.mode==="create"){let F=[...w.preErrors,...w.builtInErrors,...w.checkErrors];U.push(...F),F.length>0&&M.add(A.rowNumber);continue}let x=I.get(A.rowNumber);if(!x)throw new Error(`InternalError: prepared post-image validation is missing for row ${A.rowNumber}.`);let O=hE({rowNumber:A.rowNumber,setFields:p,normalizedPostImage:x.normalizedRecord,preErrors:w.preErrors,postImageErrors:x.errors,checkErrors:w.checkErrors});A.record=O.writeRecord,U.push(...O.errors);for(let F of O.invalidRowNumbers)M.add(F)}P=M.size}let v=[...c,...rr],C={type:"VALIDATION",operation:l,validatedRows:m.length,validRows:m.length-P,invalidRows:P,errorCount:U.length,columns:v,errors:U,...e.validationErrorTable?{errTable:e.validationErrorTable}:e.onErrorSkip&&e.errorTable?{errTable:e.errorTable}:{}},_=new Map;for(let D of c){if(D==="$id"){_.set(D,{sortKind:"number",fieldType:"RECORD_NUMBER",semantics:te({fieldType:"RECORD_NUMBER"})});continue}let A=d.get(D);A&&_.set(D,Ue(A,e.appId))}let b=new Set(["$err_statement","$err_row"]);for(let D of rr)_.set(D,Q(b.has(D)?"number":"string"));return Un.set(C,_),{result:C,candidates:m,invalidRowNumbers:M,columnMeta:_}}async function ac(e,t,n,r,i,o){let a=await Fc(e,t,n,r,i,o),s=e.errorTable;if(!s)throw new Error("ArgumentError: ON ERROR SKIP requires INTO #error_table.");Tt(i,s,a.result.columns,a.result.errors,n.tempTableMaxRows??Xe,a.columnMeta);let l=e.rejectLimit??null;if(l!==null&&a.result.invalidRows>l)throw new Gi(`rejected rows (${a.result.invalidRows}) exceed REJECT LIMIT (${l}).`,a.result);let c=a.candidates.filter(R=>!a.invalidRowNumbers.has(R.rowNumber));if(n.confirm){let R=e.type.startsWith("INSERT")?"INSERT":"UPDATE";if(!await n.confirm(c.length,R))throw new ge(R,c.length)}let p={affectedRows:c.length,skippedRows:a.result.invalidRows,rejectLimit:l,errTable:s};if(e.type==="INSERT"||e.type==="INSERT_SELECT"){let R=[];for(let E=0;E<c.length;E+=100){let m=await t.postRecords({app:e.appId,records:c.slice(E,E+100).map(y=>y.record)});R.push(m.ids)}return{type:"INSERT",createdIds:R,insertedCount:R.flat().length,...p}}if(e.type==="UPDATE"){let R=c.map(E=>{if(E.targetId===void 0)throw new Error("InternalError: prepared UPDATE candidate has no targetId.");return{id:E.targetId,record:E.record}});for(let E=0;E<R.length;E+=100)await t.putRecords({app:e.appId,records:R.slice(E,E+100)});return{type:"UPDATE",updatedCount:R.length,...p}}let u=c.filter(R=>R.mode==="create"),d=c.filter(R=>R.mode==="update").map(R=>{if(R.targetId===void 0)throw new Error("InternalError: prepared UPSERT candidate has no targetId.");return{id:R.targetId,record:R.record}}),f=0;for(let R=0;R<u.length;R+=100){let E=await t.postRecords({app:e.appId,records:u.slice(R,R+100).map(m=>m.record)});f+=E.ids.length}for(let R=0;R<d.length;R+=100)await t.putRecords({app:e.appId,records:d.slice(R,R+100)});return{type:"UPSERT",insertedCount:f,updatedCount:d.length,...p}}async function dI(e,t,n,r,i,o,a,s){if(e.type==="UPDATE")return EI(e,n,r,i,o,s);let l,c,p,u,d;if(e.type==="INSERT"||e.type==="UPSERT")nR(e,e.fields),d=new Map(e.fields.map(h=>[h,a.get(h)?.fieldType??""])),vn(e,d),l=e.values.map(h=>h.map((I,N)=>I.type==="CASE_VALUE"?nn(I.expr,{},a.get(e.fields[N])?.fieldType,se(r)):I));else{let h=await Kc.materialize(e,n,r,i,o,[...a.values()]),I=(e.checkGroups?.length??0)>0;if(h.columns.length<e.fields.length||!I&&h.columns.length!==e.fields.length)throw new Error(`SELECT \u306E\u5217\u6570\uFF08${h.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(I&&new Set(h.columns).size!==h.columns.length)throw Ne("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");nR(e,h.columns),c=h.rows,p=h.importPresence,u=h.importRowErrors;let N=h.columnMeta;d=new Map(h.columns.map(U=>{let P=N?.get(U),M=P?.fieldType??(P?.semantics?.compareMode==="number"||P?.sortKind==="number"?"NUMBER":"SINGLE_LINE_TEXT");return[U,M]})),vn(e,d),l=h.rows.map(U=>h.columns.map(P=>U[P]??""))}let f=l.map((h,I)=>({rowNumber:I+1,operation:t,mode:"create",payload:new Map(e.fields.flatMap((N,U)=>p&&!p[I]?.has(N)?[]:[[N,h[U]]])),preErrors:[...u?.[I]??[]],record:{},evaluationRow:c?.[I]??Object.fromEntries(e.fields.map((N,U)=>[N,ft(h[U])])),evaluationFieldTypes:d}));if(e.type!=="UPSERT"&&e.type!=="UPSERT_SELECT")return f;for(let h of e.keyFields)if(!e.fields.includes(h))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${h}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let R=new Map([...a].map(([h,I])=>[h,I.fieldType])),E=f.map(h=>e.keyFields.map(I=>ft(h.payload.get(I)))),m=e.keyFields.map(h=>R.get(h)==="NUMBER"),y=new Map;for(let h of E){let I=_n(h,m);y.set(I,(y.get(I)??0)+1)}let g=ls.has(e);if(g&&[...y.values()].some(h=>h>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 S=await ji(e.appId,e.keyFields,E,n,r,R);return f.forEach((h,I)=>{let N=E[I],U=Yi(S,N);h.mode=U===void 0?"create":"update",U!==void 0&&(h.targetId=U),e.keyFields.forEach((P,M)=>{N[M]===""&&h.preErrors.push({field:P,code:"ERR_KEY_EMPTY",message:`UPSERT \u30AD\u30FC ${P} \u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093`})}),!g&&(y.get(_n(N,m))??0)>1&&h.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 Gc(e){return e.checkGroups?tr(e.checkGroups):[]}function nR(e,t){let n=new Set(t);for(let r of Gc(e)){if(r.tableAlias!==null)throw Ne(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${r.tableAlias}.${r.field} \u306F\u3053\u306E\u8A55\u4FA1\u884C\u3067\u306F\u4FEE\u98FE\u3067\u304D\u307E\u305B\u3093`);if(!n.has(r.field))throw Ne(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${r.field} \u306F\u8A55\u4FA1\u884C\u306B\u5B58\u5728\u3057\u307E\u305B\u3093`)}}var fI=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE","KSQL_ARRAY"]);function vn(e,t){if(e.checkGroups)for(let n of Jd(e.checkGroups)){let r=n.tableAlias?`${n.tableAlias}.${n.field}`:n.field,i=t.get(r)??t.get(n.field);if(fI.has(i??""))throw Ne(`CHECK \u306E\u6BD4\u8F03\u3067\u306F ${i} \u30D5\u30A3\u30FC\u30EB\u30C9 ${r} \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`)}}async function EI(e,t,n,r,i,o){if(e.from)return gI(e,e.from,t,n,r,i,o);await im(e.assignments,t,n,r);let a=await ke(e.appId,t,r),s=zR(e,a);vn(e,sc(a,e.appId));let l,c=new Map,p=new Map;if(ra(e)){let u=Il(e),d=[...new Set([...u.fields,...s,...o??[]])],f=await it(t.getRecords,u.app,u.query,d,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"});p=Qa(f.records),c=p,l=bl(e,f.records,a,se(n)).flatMap(R=>R.records)}else{let u=zr(e);if(s.length>0){let d=[...new Set(["$id",...s,...o??[]])],f=await it(t.getRecords,u.app,u.query,d,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"});p=Qa(f.records),c=p,l=qr(e,[...c.keys()],a).flatMap(R=>R.records)}else if(o){let d=await it(t.getRecords,u.app,u.query,[...o],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"});p=Qa(d.records),l=qr(e,[...p.keys()],a).flatMap(f=>f.records)}else{let d=await Aa(t.getRecords,u.app,u.query,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1});l=qr(e,d.ids,a).flatMap(f=>f.records)}}return l.sort((u,d)=>u.id-d.id).map((u,d)=>({rowNumber:d+1,operation:"UPDATE",mode:"update",payload:new Map([["$id",String(u.id)],...e.assignments.map(f=>[f.field,u.record[f.field]?.value??""])]),preErrors:[],record:u.record,targetId:u.id,validationSnapshot:p.get(u.id),evaluationRow:yI(c.get(u.id),e.appId),evaluationFieldTypes:sc(a,e.appId)}))}function Qa(e){let t=new Map;for(let n of e){let r=n.$id?.value,i=Number(r);if(!Number.isSafeInteger(i)||i<=0)throw new Error(`InternalError: invalid $id in UPDATE validation snapshot: ${String(r)}.`);if(t.has(i))throw new Error(`InternalError: duplicate $id in UPDATE validation snapshot: ${i}.`);t.set(i,n)}return t}async function RI(e){let t=new Map;for(let n of e.candidates){if(n.targetId===void 0||!n.validationSnapshot)throw new Error(`InternalError: update-mode snapshot is missing for record ${String(n.targetId)}.`);if(t.has(n.targetId))throw new Error(`InternalError: duplicate UPDATE validation candidate target: ${n.targetId}.`);t.set(n.targetId,n.validationSnapshot)}return t}async function mI(e,t,n){let r=[...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(r.length>n)throw new Ge(`\u53D6\u5F97\u4EF6\u6570\u304C\u4E0A\u9650\uFF08${n} \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(r),o=new Map;for(let a of zi(r,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 c=l.$id?.value,p=Number(c);if(!Number.isSafeInteger(p)||p<=0)throw new Error(`InternalError: invalid $id in UPSERT validation snapshot: ${String(c)}.`);if(!i.has(p))throw new Error(`InternalError: unexpected $id in UPSERT validation snapshot: ${p}.`);if(o.has(p))throw new Error(`InternalError: duplicate $id in UPSERT validation snapshot: ${p}.`);o.set(p,l)}}for(let a of r)if(!o.has(a))throw new Error(`InternalError: update-mode snapshot is missing for record ${a}.`);return o}function zR(e,t){if(e.from)return[];let n=new Set;for(let r of Gc(e)){if(r.tableAlias!==null&&r.tableAlias.toLowerCase()!==`app${e.appId}`.toLowerCase())throw Ne(`CHECK \u306E\u4FEE\u98FE\u5B50 ${r.tableAlias} \u306F\u66F4\u65B0\u5148 APP${e.appId} \u3067\u306F\u3042\u308A\u307E\u305B\u3093`);if(r.field!=="$id"&&!t.has(r.field))throw Ne(`CHECK \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u30D5\u30A3\u30FC\u30EB\u30C9 ${r.field} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093`);n.add(r.field)}return[...n]}function yI(e,t){if(!e)return{};let n=Ut(e,null);return Object.fromEntries([...Object.entries(n),...Object.entries(n).map(([r,i])=>[`APP${t}.${r}`,i])])}function sc(e,t){return new Map([...e,...[...e].map(([n,r])=>[`APP${t}.${n}`,r]),["$id","RECORD_NUMBER"],[`APP${t}.$id`,"RECORD_NUMBER"]])}async function gI(e,t,n,r,i,o,a){let s=await Am(e,t,n,i,o);vn(e,s.evaluationTypes);let l=await qR(e,t,n,r,i,o,a),c=await ke(e.appId,n,i),p=Cl(e,l,c,se(r)).flatMap(f=>f.records),u=new Map(l.map(f=>[Number(f.target.$id?.value),f])),d=a?Qa(l.map(f=>f.target)):new Map;return p.sort((f,R)=>f.id-R.id).map((f,R)=>({rowNumber:R+1,operation:"UPDATE",mode:"update",payload:new Map([["$id",String(f.id)],...e.assignments.map(E=>[E.field,f.record[E.field]?.value??""])]),preErrors:[],record:f.record,targetId:f.id,validationSnapshot:d.get(f.id),evaluationRow:Tw(u.get(f.id),e.appId,t.alias),evaluationFieldTypes:s.evaluationTypes}))}var hI=VR,AI=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);async function qR(e,t,n,r,i,o,a){let s=await SI(e,t,n,i),l=await Am(e,t,n,i,o),c=[...new Set(e.assignments.filter(I=>I.value.type==="SOURCE_FIELD").map(I=>I.value.type==="SOURCE_FIELD"?I.value.field:"").concat(l.sourceFields))],p=[...new Set([t.joinKeyField,...c])],u=await TI(t,p,c,n,r,i,o),d=new Map,f=new Map;for(let I of u){if(!Object.prototype.hasOwnProperty.call(I,t.joinKeyField))throw new Error(`ArgumentError: UPDATE ... FROM source column ${t.joinKeyField} does not exist.`);let N=rR(I[t.joinKeyField],s,"source");if(d.has(N))throw new Error(`ArgumentError: UPDATE ... FROM source has multiple rows for normalized key ${N}.`);d.set(N,I),f.set(N,String(I[t.joinKeyField]).trim())}if(d.size===0)return[];let R=r.maxRecords??1e4,E=[...new Set([...KI(e),...l.targetFields,...a??[]])],m=t.targetFilter===null?"":zr({...e,from:null,where:t.targetFilter,checkGroups:void 0}).query,y=[],g=new Set,S=0;for(let I of zi([...f.values()],hI)){let N=`${t.targetJoinField} in (${I.map(xi).join(",")})`,U=m?`(${N}) and (${m})`:N,P=await it(n.getRecords,e.appId,U,E,{maxRecords:R,parallel:r.fetchParallel??1,onLimit:"error"});if(S+=P.records.length,S>R)throw new Ge(`\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`);for(let M of P.records){let v=M.$id?.value;if(typeof v!="string"||v==="")throw new Error("ArgumentError: UPDATE ... FROM target record does not contain a valid $id.");g.has(v)||(g.add(v),y.push(M))}}let h=[];for(let I of y){let N=I[t.targetJoinField]?.value,U=rR(N,s,"target");if(U===null)continue;let P=d.get(U);P!==void 0&&h.push({target:I,source:P})}return h}async function SI(e,t,n,r){if(t.targetJoinField==="$id")return"id";let i=(await ee(e.appId,n,r)).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 TI(e,t,n,r,i,o,a){if(e.cteName!==null){let p=a?.get(e.cteName);if(!p)throw new Error(`ArgumentError: temp table ${e.cteName} is not available.`);for(let u of t)if(!p.columns.includes(u))throw new Error(`ArgumentError: UPDATE ... FROM source column ${u} does not exist.`);return p.rows}let s=await ke(e.appId,r,o),l=e.joinKeyField==="$id"?"RECORD_NUMBER":s.get(e.joinKeyField);if(l===void 0)throw new Error(`ArgumentError: UPDATE ... FROM source column ${e.joinKeyField} does not exist.`);if(e.joinKeyField!=="$id"&&l!=="SINGLE_LINE_TEXT"&&l!=="NUMBER")throw new Error(`ArgumentError: UPDATE ... FROM does not support source join field type ${l} (${e.joinKeyField}).`);for(let p of n){if(p!=="$id"&&!s.has(p))throw new Error(`ArgumentError: UPDATE ... FROM source column ${p} does not exist.`);let u=p==="$id"?"RECORD_NUMBER":s.get(p);if(AI.has(u??""))throw new Error(`ArgumentError: UPDATE ... FROM does not support source field type ${u} (${p}).`)}return(await it(r.getRecords,e.appId,"",t,{maxRecords:i.maxRecords??1e4,parallel:i.fetchParallel??1,onLimit:"error"})).records.map(p=>Ut(p,null))}function rR(e,t,n){if(typeof e!="string")throw new Error(`ArgumentError: UPDATE ... FROM ${n} key must be a scalar string: ${String(e)}`);if(t==="string"){if(e===""){if(n==="target")return null;throw new Error("ArgumentError: UPDATE ... FROM source key must not be empty.")}return e}if(t==="number"&&n==="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 ${n} key must be a positive safe integer: ${e}`);return String(o)}let r=Ae(e);if(r===null)throw new Error(`ArgumentError: UPDATE ... FROM ${n} key must be a finite decimal: ${e}`);return JSON.stringify(r)}async function qi(e,t,n,r,i){let o=await Fc(e,t,n,r,i,1,!1,!1);if(o.result.errors.length>0){let u=o.result.errors[0];throw new Error(`DmlValidationError: ${u.$err_code} ${u.$err_message} (row=${u.$err_row}, field=${u.$err_field})`)}let a=o.candidates,s=e.type.startsWith("INSERT")?"INSERT":"UPDATE";if(n.confirm&&a.length>0&&!await n.confirm(a.length,s))throw new ge(s,a.length);if(e.type==="INSERT"||e.type==="INSERT_SELECT"){let u=[];for(let d=0;d<a.length;d+=100){let f=await t.postRecords({app:e.appId,records:a.slice(d,d+100).map(R=>R.record)});u.push(f.ids)}return{type:"INSERT",createdIds:u,insertedCount:u.flat().length}}if(e.type==="UPDATE"){let u=a.map(d=>({id:d.targetId,record:d.record}));for(let d=0;d<u.length;d+=100)await t.putRecords({app:e.appId,records:u.slice(d,d+100)});return{type:"UPDATE",updatedCount:u.length}}let l=a.filter(u=>u.mode==="create"),c=a.filter(u=>u.mode==="update").map(u=>({id:u.targetId,record:u.record})),p=0;for(let u=0;u<l.length;u+=100){let d=await t.postRecords({app:e.appId,records:l.slice(u,u+100).map(f=>f.record)});p+=d.ids.length}for(let u=0;u<c.length;u+=100)await t.putRecords({app:e.appId,records:c.slice(u,u+100)});return{type:"UPSERT",insertedCount:p,updatedCount:c.length}}async function II(e,t,n,r){if(e.applyBlocks?.length)return lI(e,t,n,r);if(e.checkGroups?.length)return qi(e,t,n,r);if(e.subtableCode)return WI(e,t,n,r);let i=await pt(e.appId,e.fields,t,r),o=await Ft(e.appId,e.fields,i,t,r),a=await ke(e.appId,t,r),s=na(e,a,se(n));Dn(s.flatMap(c=>c.records),e.fields,i,o);let l=[];for(let c of s){let p=await t.postRecords(c);l.push(p.ids)}return{type:"INSERT",createdIds:l,insertedCount:l.flat().length}}function wI(){return{type:"SELECT",distinct:!1,columns:[],from:{appId:0,alias:null,cteName:_e},joins:[],where:null,groupBy:[],having:null,orderMode:"CANONICAL",orderBy:[],limit:null,offset:null}}async function JR(e,t,n,r,i){if(!n.enableImport)throw new Error("UnsupportedError: IMPORT capability is disabled.");let o=wE(e.source.sourceName,n.importSource);if(e.targets?.some(u=>u.kind==="SUBTABLE")){if(!e.validateOnly&&!n.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 k=new Set(e.targets.filter(G=>G.kind==="SUBTABLE").map(G=>G.subtableCode));if(e.replaceSubtables.some(G=>!k.has(G)))throw new Error("ArgumentError: REPLACE SUBTABLES contains a table not declared in INTO.");for(let G of e.targets.filter(j=>j.kind==="SUBTABLE"))if(!G.rowIdSourceHeader||!e.replaceSubtables.includes(G.subtableCode))throw new Error(`ArgumentError: CSV subtable ${G.subtableCode} requires ROW ID SOURCE and REPLACE SUBTABLES declaration.`)}if(e.validationErrorTable&&!i)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");let u=e.targets,d=await ee(e.appId,t,r),f=u.flatMap(k=>k.kind==="FIELD"?[k.field]:k.children),R=d.some(k=>f.includes(k.code)&&k.fieldType==="NUMBER")?await It(e.appId,t,r):void 0,E=await Ka(o,new Map),m=e.source.kind==="JSON"?OE(e.source,E,u,n.maxRecords??1e4):LE(e.source,E,u,e.replaceSubtables??[],n.maxRecords??1e4,e.recordNumberSourceHeader),y=e.source.kind==="CSV"?"UPDATE":e.keyFields?"UPSERT":"INSERT",g=UE(m,u,d,R,y);if(e.source.kind==="CSV")return bI(e,m,g,d,t,n,i);Lu(g,e.rejectLimit);let S=[...new Set(u.flatMap(k=>k.kind==="FIELD"?[k.field]:k.children))],h=Du(g.errors,S),I=[...S,..._u],N=g.invalidParentRows.size,U={preflight:"ACTUAL_DATA",parents:{total:g.parents.length,valid:g.parents.length-N,invalid:N,mutationCandidates:g.parents.filter(k=>k.valid).length},tables:Object.fromEntries(g.tableCounts),writesKintone:!1},P={type:"VALIDATION",operation:y,validatedRows:g.parents.length,validRows:g.parents.length-N,invalidRows:N,errorCount:h.length,columns:I,errors:h,importDetail:U,...e.validationErrorTable?{errTable:e.validationErrorTable}:{}};if(e.validationErrorTable&&i&&Tt(i,e.validationErrorTable,I,h,n.tempTableMaxRows??Xe,new Map),e.validateOnly)return P;if(kE(m),g.errors.length>0&&!e.onErrorSkip){let k=g.errors[0];throw new Error(`DmlValidationError: ${k.code} ${k.message} (row=${k.parentRow}, field=${k.field})`)}if(e.onErrorSkip){if(!i||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch and INTO error table.");Tt(i,e.errorTable,I,h,n.tempTableMaxRows??Xe,new Map)}let M=g.parents.filter(k=>k.valid),v=new Map(d.map(k=>[k.code,k.fieldType])),C=M.map(()=>{});if(e.keyFields){for(let L of e.keyFields)if(!e.fields.includes(L))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${L}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let k=e.keyFields.map(L=>v.get(L)==="NUMBER"),G=new Set,j=M.map(L=>e.keyFields.map(H=>String(L.top[H]?.value??"")));for(let L of j){let H=_n(L,k);if(G.has(H))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");G.add(H)}let B=await ji(e.appId,e.keyFields,j,t,n,v);j.forEach((L,H)=>{C[H]=Yi(B,L)})}let _=u.filter(k=>k.kind==="SUBTABLE").map(k=>k.subtableCode),b=new Map,D=C.filter(k=>k!==void 0);for(let k of zi([...new Set(D)],100)){let G=await t.getRecords({app:e.appId,query:`$id in (${k.join(",")}) limit 500`,fields:["$id","$revision",..._]});for(let j of G.records){let B=Number(j.$id?.value),L=Number(j.$revision?.value);Number.isFinite(B)&&b.set(B,{id:B,...Number.isFinite(L)?{revision:L}:{},record:j})}}let A=xE(M,C,b),w={kind:"IMPORT_JSON_SUBTABLE",rowIdPolicy:"DROP_AND_RENUMBER_ALL",parentsToWrite:A.length,insertedParents:A.filter(k=>k.mode==="INSERT").length,updatedParents:A.filter(k=>k.mode==="UPDATE").length,hasDeletes:A.some(k=>k.tables.some(G=>G.deleteRows>0)),parents:A.map(k=>({parentRow:k.parentRow,mode:k.mode,...k.targetId===void 0?{}:{targetId:k.targetId},tables:k.tables}))};if(A.length>0){if(!n.confirm)throw new Error("UnsupportedError: JSON IMPORT subtable mutation requires explicit confirmation detail approval.");if(!await n.confirm(A.length,e.keyFields?"UPDATE":"INSERT",{statementIndex:0,statementCount:1,statementType:"IMPORT",targetAppId:e.appId,importDetail:w}))throw new ge(e.keyFields?"UPDATE":"INSERT",A.length)}let x=k=>new Map(Object.entries(k).map(([G,j])=>[G,j.value])),O=k=>ME(x(k.top),new Map([...k.subtables].map(([G,j])=>[G,j.map(B=>({values:x(B)}))]))),F=A.filter(k=>k.mode==="INSERT"),W=A.filter(k=>k.mode==="UPDATE"),K=[];for(let k=0;k<F.length;k+=100){let G=await t.postRecords({app:e.appId,records:F.slice(k,k+100).map(O)});K.push(G.ids)}for(let k=0;k<W.length;k+=100)await t.putRecords({app:e.appId,records:W.slice(k,k+100).map(G=>({id:G.targetId,...G.revision===void 0?{}:{revision:G.revision},record:O(G)}))});return e.keyFields?{type:"UPSERT",insertedCount:K.flat().length,updatedCount:W.length,affectedRows:A.length,skippedRows:g.invalidParentRows.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:w}:{type:"INSERT",createdIds:K,insertedCount:K.flat().length,affectedRows:A.length,skippedRows:g.invalidParentRows.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:w}}if(e.writeMode==="UPDATE_RECORD_NUMBER")return NI(e,o,t,n,r,i);let a={appId:e.appId,fields:e.fields,select:wI(),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};ls.set(s,l);let c=u=>(l.audit&&Object.assign(u,{importAudit:l.audit}),u);if(s.validateOnly){if(s.validationErrorTable&&!i)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");let u=await xc(s,t,{...n,onLimitReached:"error"},r,i,1);return s.validationErrorTable&&i&&Tt(i,s.validationErrorTable,u.columns,u.errors,n.tempTableMaxRows??Xe,Un.get(u)??new Map),c(u)}if(s.onErrorSkip){if(!i)throw new Error("ArgumentError: ON ERROR SKIP requires a batch.");let u=await(s.type==="UPSERT_SELECT",ac(s,t,n,r,i,1));return c(u)}let p=await(s.type==="UPSERT_SELECT"?Vc(s,t,n,r,i):Bc(s,t,n,r,i));return c(p)}async function bI(e,t,n,r,i,o,a){if(!e.recordNumberSourceHeader||!e.replaceSubtables?.length)throw new Error("InternalError: incomplete CSV subtable replacement AST.");FE(t.records);let s=t.records.map(b=>b.recordNumberSourceValue??""),l=Mu(s,e.recordNumberSourceHeader),c=[...e.replaceSubtables],p=[...new Set(r.filter(b=>!b.inSubtable&&b.fieldType==="SUBTABLE").map(b=>b.code))],u=await xe(i.getRecords,e.appId,"",["$id","$revision",...p],{maxRecords:o.maxRecords??1e4,parallel:o.fetchParallel??1,onLimit:"error"}),d=new Map,f=new Map;for(let b of u){let D=Number(b.$id?.value),A=Number(b.$revision?.value);if(Number.isFinite(D)){d.set(D,{id:D,...Number.isFinite(A)?{revision:A}:{},record:b});for(let w of p){let x=b[w]?.value;if(Array.isArray(x)){for(let O of x)if(O.id){let F=f.get(O.id)??[];F.push({parentId:D,table:w}),f.set(O.id,F)}}}}}let R=l.normalized.map(b=>b===null?void 0:Number(b)),E=n.parents.map((b,D)=>{let A=[...b.errors];for(let x of l.errors[D])A.push({operation:"UPDATE",parentRow:b.parentRow,field:x.field,code:x.code,message:x.message,sourceValues:t.records[D].top});let w=R[D];return w!==void 0&&!d.has(w)&&A.push({operation:"UPDATE",parentRow:b.parentRow,field:e.recordNumberSourceHeader,code:"ERR_RECORD_NUMBER_NOT_FOUND",message:`record number ${w} does not exist in APP${e.appId}`,sourceValues:t.records[D].top}),{...b,valid:A.length===0,errors:A}}),m=GE(t.records,E,R,d,f),y=m.flatMap(b=>[...b.errors]),g=new Set(m.filter(b=>!b.valid).map(b=>b.parentRow)),S={...n,parents:E,errors:y,invalidParentRows:g};Lu(S,e.rejectLimit);let h=m.filter(b=>b.valid),I=m.flatMap(b=>b.tables),N=(b,D)=>I.filter(A=>A.table===b).reduce((A,w)=>A+Number(w[D]),0),U=Object.fromEntries(c.map(b=>[b,{existingRows:N(b,"existingRows"),inputRows:N(b,"inputRows"),updateRows:N(b,"updateRows"),addRows:N(b,"addRows"),deleteRows:N(b,"deleteRows"),rowIdNotFound:N(b,"rowIdNotFound")}])),P={kind:"IMPORT_CSV_SUBTABLE_REPLACE",rowIdPolicy:"PRESERVE_EXISTING",parentsToWrite:h.length,insertedParents:0,updatedParents:h.length,hasDeletes:h.some(b=>b.tables.some(D=>D.deleteRows>0)),totalDeleteRows:h.flatMap(b=>b.tables).reduce((b,D)=>b+D.deleteRows,0),rowIdNotFound:h.flatMap(b=>b.tables).reduce((b,D)=>b+D.rowIdNotFound,0),invalidParents:g.size,parents:h.map(b=>({parentRow:b.parentRow,mode:"UPDATE",targetId:b.targetId,tables:b.tables}))},M=[...new Set(e.targets.flatMap(b=>b.kind==="FIELD"?[b.field]:b.children))],v=Du(y,M),C=[...M,..._u];if(e.validateOnly){if(e.validationErrorTable&&!a)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return e.validationErrorTable&&a&&Tt(a,e.validationErrorTable,C,v,o.tempTableMaxRows??Xe,new Map),{type:"VALIDATION",operation:"UPDATE",validatedRows:E.length,validRows:E.length-g.size,invalidRows:g.size,errorCount:v.length,columns:C,errors:v,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},importDetail:{preflight:"ACTUAL_DATA",parents:{total:E.length,valid:h.length,invalid:g.size,mutationCandidates:h.length},tables:U,rowIdPolicy:"PRESERVE_EXISTING",rowIdNotFound:P.rowIdNotFound,writesKintone:!1}}}if(y.length&&!e.onErrorSkip){let b=y[0];throw new Error(`DmlValidationError: ${b.code} ${b.message} (row=${b.parentRow}, field=${b.field})`)}if(e.onErrorSkip){if(!a||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch and INTO error table.");Tt(a,e.errorTable,C,v,o.tempTableMaxRows??Xe,new Map)}if(h.length){if(!o.supportsImportConfirmDetail||!o.confirm)throw new Error("UnsupportedError: CSV subtable replacement requires explicit rendered detail approval.");if(!await o.confirm(h.length,"UPDATE",{statementIndex:0,statementCount:1,statementType:"IMPORT",targetAppId:e.appId,importDetail:P}))throw new ge("UPDATE",h.length)}let _=b=>new Map(Object.entries(b).map(([D,A])=>[D,A.value]));for(let b of h){let D=vu(_(b.top),new Map([...b.subtables].map(([A,w])=>[A,w.map(x=>({...x.rowId?{rowId:x.rowId}:{},values:_(x.record)}))])),"PRESERVE");await i.putRecords({app:e.appId,records:[{id:b.targetId,...b.revision===void 0?{}:{revision:b.revision},record:D}]})}return{type:"UPDATE",updatedCount:h.length,affectedRows:h.length,skippedRows:g.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:P}}async function NI(e,t,n,r,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 pt(e.appId,e.fields,n,i),s=await Ft(e.appId,e.fields,a,n,i),l=await Ka(t,new Map),c=Cu(e.source,l,r.maxRecords??1e4,e.fields,a,e.recordNumberSourceHeader),p=c.recordNumberSourceValues;if(!p)throw new Error("InternalError: record-number source values were not materialized.");let u=Mu(p,e.recordNumberSourceHeader),d=new Set,f=[...new Set(u.normalized.filter(P=>P!==null))];for(let P=0;P<f.length;P+=100){let M=f.slice(P,P+100),v=await n.getRecords({app:e.appId,query:`$id in (${M.join(",")}) limit 500`,fields:["$id"]});for(let C of v.records){let _=C.$id?.value;typeof _=="string"&&_!==""&&d.add(_.replace(/^0+(?=\d)/,""))}}let R=new Map(a.map(P=>[P.code,P])),E=new Map(e.fields.map(P=>[P,R.get(P)?.fieldType??"SINGLE_LINE_TEXT"])),m=c.rows.map((P,M)=>{let v=u.normalized[M],C=[...c.importRowErrors?.[M]??[],...u.errors[M]];return v!==null&&!d.has(v)&&C.push({field:e.recordNumberSourceHeader,code:"ERR_RECORD_NUMBER_NOT_FOUND",message:`record number ${v} does not exist in APP${e.appId}`}),{rowNumber:M+1,operation:"UPDATE",mode:"update",...v!==null&&d.has(v)?{targetId:Number(v)}:{},payload:new Map([[e.recordNumberSourceHeader,p[M]],...e.fields.map(_=>[_,P[_]??""])]),preErrors:C,record:{},evaluationRow:P,evaluationFieldTypes:E}}),y=[e.recordNumberSourceHeader,...e.fields],g=Kl(m,"UPDATE",y,e.fields,a,1,s,e.checkGroups??[],!1),S=[...y,...rr],h={type:"VALIDATION",operation:"UPDATE",validatedRows:m.length,validRows:m.length-g.invalidRows,invalidRows:g.invalidRows,errorCount:g.errors.length,columns:S,errors:g.errors,...e.validationErrorTable??e.errorTable?{errTable:e.validationErrorTable??e.errorTable}:{}};if(Object.assign(h,{importAudit:c.importAudit}),e.validateOnly){if(e.validationErrorTable&&!o)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return e.validationErrorTable&&o&&Tt(o,e.validationErrorTable,S,g.errors,r.tempTableMaxRows??Xe,new Map),h}if(!e.onErrorSkip&&g.invalidRows>0){let P=g.errors[0];throw new Error(`DmlValidationError: ${P.$err_code} ${P.$err_message} (row=${P.$err_row}, field=${P.$err_field})`)}if(e.onErrorSkip){if(!o||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch.");if(Tt(o,e.errorTable,S,g.errors,r.tempTableMaxRows??Xe,new Map),e.rejectLimit!=null&&g.invalidRows>e.rejectLimit)throw new Gi(`rejected rows (${g.invalidRows}) exceed REJECT LIMIT (${e.rejectLimit}).`,h)}let I=m.filter(P=>!g.invalidRowNumbers.has(P.rowNumber));if(r.confirm&&!await r.confirm(I.length,"UPDATE"))throw new ge("UPDATE",I.length);let N=I.map(P=>({id:P.targetId,record:P.record}));for(let P=0;P<N.length;P+=100)await n.putRecords({app:e.appId,records:N.slice(P,P+100)});let U={type:"UPDATE",updatedCount:N.length,...e.onErrorSkip?{affectedRows:N.length,skippedRows:g.invalidRows,rejectLimit:e.rejectLimit??null,errTable:e.errorTable}:{}};return Object.assign(U,{insertedCount:0,importAudit:c.importAudit}),U}async function CI(e,t,n,r,i,o){let a=ls.get(e);if(!a){let E=i&&i.size>0?await ct(e.select,t,n,i,r,!0):await xt(e.select,t,n,r,void 0,!0);return{rows:E.rows,columns:E.columns,columnMeta:ue.get(E)}}let s=await Ka(a.handle,a.cache),l=n.maxRecords??1e4,c=new Map((o??[]).map(E=>[E.code,E])),p=e.fields.map(E=>({code:E,fieldType:c.get(E)?.fieldType??"SINGLE_LINE_TEXT"})),u=a.source.kind==="JSON"?Nu(a.source,s,p,l):Cu(a.source,s,l,e.fields,o);if(a.audit=u.importAudit,a.source.kind==="JSON"||!a.source.projection)return u;let d=KE(a.source.projection),f=new Map(i??[]);f.set(Uu,u);let R=await ct(d,t,{...n,onLimitReached:"error"},f,r,!0);return{rows:R.rows,columns:R.columns,columnMeta:ue.get(R)}}var Kc={materialize:CI};function XR(e){for(let t=0;t<(e.importRowErrors?.length??0);t++){let n=e.importRowErrors?.[t]?.[0];if(n)throw new Error(`DmlValidationError: ${n.code} ${n.message} (row=${t+1}, field=${n.field})`)}}async function Bc(e,t,n,r,i){if(e.checkGroups?.length)return qi(e,t,n,r,i);let o=await pt(e.appId,e.fields,t,r),a=await Ft(e.appId,e.fields,o,t,r),s=await Kc.materialize(e,t,n,r,i,o),{rows:l,columns:c}=s;if(XR(s),c.length!==e.fields.length){let f=c.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${c.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(n.confirm&&!await n.confirm(l.length,"INSERT"))throw new ge("INSERT",l.length);let p=await ke(e.appId,t,r),u=l.map((f,R)=>{let E={};return e.fields.forEach((m,y)=>{if(s.importPresence&&!s.importPresence[R]?.has(m))return;let g=f[c[y]]??"";E[m]={value:YR(g,p.get(m))}}),E});u.forEach(f=>Dn([f],e.fields.filter(R=>R in f),o,a));let d=[];for(let f=0;f<u.length;f+=100){let R=u.slice(f,f+100),E=await t.postRecords({app:e.appId,records:R});d.push(E.ids)}return{type:"INSERT",createdIds:d,insertedCount:d.flat().length}}async function lc(e,t,n,r,i){if(e.applyBlocks?.length)return QR(e,t,n,r);if(e.checkGroups?.length&&ut(e.where)){let R=await pt(e.appId,e.assignments.map(m=>m.field),t,r);await Ft(e.appId,e.assignments.map(m=>m.field),R,t,r);let E=await ke(e.appId,t,r);return zR(e,E),vn(e,sc(E,e.appId)),await pr(e,t,r),{type:"UPDATE",updatedCount:0}}if(e.checkGroups?.length)return qi(e,t,n,r,i);if(e.subtableCode)return await pr(e,t,r),VI(e,t,n,r);let o=await pt(e.appId,e.assignments.map(R=>R.field),t,r),a=e.assignments.map(R=>R.field),s=await Ft(e.appId,a,o,t,r);if(await pr(e,t,r),ut(e.where))return{type:"UPDATE",updatedCount:0};if(e.from!=null)return GI(e,e.from,t,n,r,i);let l=n.maxRecords??1e4;await im(e.assignments,t,n,r);let c=await ke(e.appId,t,r);if(ra(e)){let R=Il(e),m=(await it(t.getRecords,R.app,R.query,[...R.fields],{maxRecords:l,parallel:n.fetchParallel??1})).records,y=bl(e,m,c,se(n));if(Dn(y.flatMap(g=>g.records.map(S=>S.record)),a,o,s),n.confirm&&!await n.confirm(m.length,"UPDATE"))throw new ge("UPDATE",m.length);for(let g of y)await t.putRecords(g);return{type:"UPDATE",updatedCount:m.length}}let p=zr(e),d=(await Aa(t.getRecords,p.app,p.query,{maxRecords:l,parallel:n.fetchParallel??1})).ids,f=qr(e,d,c);if(Dn(f.flatMap(R=>R.records.map(E=>E.record)),a,o,s),n.confirm&&!await n.confirm(d.length,"UPDATE"))throw new ge("UPDATE",d.length);for(let R of f)await t.putRecords(R);return{type:"UPDATE",updatedCount:d.length}}async function QR(e,t,n,r,i=1){if(!e.validateOnly&&n.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");if(!bt(e.where))return PI(e,t,n,r,i);let o=await ee(e.appId,t,r),a=Dt(e,o),s=oa(e,o),l=vl(e),c=await t.getRecords({app:e.appId,query:`$id = ${l} limit 2`,fields:[...s]});if(c.records.length===0)throw new Error(`ArgumentError: APPLY parent $id ${l} does not exist.`);if(c.records.length!==1)throw new Error(`ArgumentError: APPLY parent $id ${l} returned multiple records.`);let p=Number(c.records[0].$id?.value);if(p!==l)throw new Error(`ArgumentError: APPLY snapshot $id ${p} does not match requested $id ${l}.`);ua(c.records[0]);let u=Ef({statement:e,snapshot:c.records[0],fieldInfos:o,metadata:a,evaluationContext:se(n)}),d=Et(o,e.assignments.map(I=>I.field)),f=yn(u.postImage,d)?await It(e.appId,t,r):void 0,R=gn(u.postImage,d,f,i);if(!e.validateOnly&&R.errorCount>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:R.columns,errors:R.errors})}`);let E=Qe(n.dmlMaxRows,"dmlMaxRows",Gt),m=Qe(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ce),y=u.parentRows>E||u.changedSubtableRows>m;if(e.validateOnly){let I=oi({plans:[u],records:Zr(u).records,validations:[],guards:{revisionRequired:!0,parentRows:u.parentRows,dmlMaxRows:E,subtableRows:u.changedSubtableRows,dmlMaxSubtableRows:m,wouldExceed:y}}),N={type:"VALIDATION",operation:"UPDATE",validatedRows:1,validRows:R.invalidRows===0?1:0,invalidRows:R.invalidRows===0?0:1,errorCount:R.errorCount,columns:[...R.columns],errors:R.errors,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},apply:Ki(I.branches[0]),guards:Bi(I.branches[0]),deletedRows:{total:u.tables.reduce((U,P)=>U+P.deletedRows,0),parentRows:u.tables.some(U=>U.deletedRows>0)?1:0},diagnostic:I};return Un.set(N,Rs(R.columns,o,e.appId)),N}if(u.parentRows>E)throw new Error(`ArgumentError: APPLY parent rows (${u.parentRows}) exceed dmlMaxRows (${E}).`);if(u.changedSubtableRows>m)throw new Error(`ArgumentError: APPLY changed subtable rows (${u.changedSubtableRows}) exceed dmlMaxSubtableRows (${m}).`);let g=sa(u,R.normalizedRecord),S=Zr(g),h=oi({plans:[g],records:S.records,validations:[],guards:{revisionRequired:!0,parentRows:u.parentRows,dmlMaxRows:E,subtableRows:u.changedSubtableRows,dmlMaxSubtableRows:m,wouldExceed:y}});if(n.confirm){let I=Es(h,!1);if(!await n.confirm(u.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPDATE",targetAppId:e.appId,applyDetail:I,applyDiagnostic:h}))throw new ge("UPDATE",u.parentRows)}return await t.putRecords(S),{type:"UPDATE",updatedCount:u.parentRows,diagnostic:Ye(h,{successfulChunks:1,successfulParents:u.parentRows})}}async function PI(e,t,n,r,i){let o=Qe(n.dmlMaxRows,"dmlMaxRows",Gt),a=Qe(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ce),s=await ee(e.appId,t,r),l=Dt(e,s),c;if(os(e))c=await DI(e,t,n,s,r);else{let f=oa(e,s),R=zr(e).query,E=o+1;c=await xe(t.getRecords,e.appId,R,[...f],{pageSize:Math.min(500,E),parallel:n.fetchParallel??1,maxRecords:E,stopAfter:E,onLimit:"error"})}if(!e.validateOnly&&c.length>o)throw new Error(`ArgumentError: APPLY parent rows (${c.length}) exceed dmlMaxRows (${o}).`);let p=await fa({statement:e,snapshots:c,fieldInfos:s,metadata:l,dmlMaxRows:o,dmlMaxSubtableRows:a,statementNumber:i,loadNumberPrecision:()=>It(e.appId,t,r)});if(e.validateOnly)return xI(e,p,s);Pp("phase15b",e);let u=oi(p);if(n.confirm){let f=Es(u);if(!await n.confirm(p.guards.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPDATE",targetAppId:e.appId,applyDetail:f,applyDiagnostic:u}))throw new ge("UPDATE",p.guards.parentRows)}let d=await Uf(p,t,u);return{...d,diagnostic:Ye(u,d)}}function os(e){return(e.applyBlocks?.length??0)>0&&!bt(e.where)&&(Ht(e.where)||we(e.where))}function OI(e){let t=e.type==="EXPLAIN"?e.query:e;return t.type==="UPDATE"&&os(t)&&we(t.where)}var LI=`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
13
+ `){o();continue}let l=a();if("{}[]:,".includes(s)){o(),t.push({kind:"punct",value:s,...l});continue}if(s==='"'){o();let d="",f=!1;for(;n<e.length;){let R=o();if(R==='"'){f=!0;break}if(R.charCodeAt(0)<32&&Ut("string contains an unescaped control character",l.offset,l.line,l.column),R!=="\\"){d+=R;continue}n>=e.length&&Ut("string has an unterminated escape",l.offset,l.line,l.column);let E=o(),m={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:`
14
+ `,r:"\r",t:" "};if(E in m){d+=m[E];continue}E!=="u"&&Ut(`has invalid escape \\${E}`,n-2,r,Math.max(1,i-2));let g=e.slice(n,n+4);/^[0-9a-fA-F]{4}$/.test(g)||Ut("has invalid unicode escape",n,r,i);for(let T=0;T<4;T++)o();let y=Number.parseInt(g,16);if(y>=55296&&y<=56319){(e.slice(n,n+2)!=="\\u"||!/^[0-9a-fA-F]{4}$/.test(e.slice(n+2,n+6)))&&Ut("has an unpaired high surrogate",n,r,i),o(),o();let T=e.slice(n,n+4);for(let I=0;I<4;I++)o();let h=Number.parseInt(T,16);(h<56320||h>57343)&&Ut("has an invalid surrogate pair",n-4,r,Math.max(1,i-4)),d+=String.fromCodePoint(65536+(y-55296<<10)+h-56320)}else y>=56320&&y<=57343?Ut("has an unpaired low surrogate",n-4,r,Math.max(1,i-4)):d+=String.fromCharCode(y)}f||Ut("string is unterminated",l.offset,l.line,l.column),t.push({kind:"string",value:d,...l});continue}let p=e.slice(n),c=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/.exec(p)?.[0];if(c){for(let d=0;d<c.length;d++)o();t.push({kind:"number",lexeme:c,...l});continue}let u=/^(true|false|null)/.exec(p)?.[0];if(u){for(let d=0;d<u.length;d++)o();t.push({kind:"literal",value:u==="true"?!0:u==="false"?!1:null,...l});continue}Ut(`has an unexpected token ${JSON.stringify(s)}`,l.offset,l.line,l.column)}return t.push({kind:"eof",offset:n,line:r,column:i}),t}function Ha(e){return e.kind==="eof"?"end of input":e.kind==="punct"?e.value:e.kind}function Ya(e){if(e.byteLength===0)throw new W("JSON source is empty.");let t=LE(OE(e)),n=0,r=(p,c=t[n])=>{throw new W(`JSON ${p} (offset=${c.offset}, line=${c.line}, column=${c.column}).`)},i=(p,c)=>p.kind==="punct"&&p.value===c,o=p=>{let c=t[n];(c.kind!=="punct"||c.value!==p)&&r(`expected ${p}; found ${Ha(c)}`,c),n++},a=()=>{let p=t[n++];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 c=new Map;if(i(t[n],"}"))return n++,c;for(;;){let u=t[n++];if(u.kind!=="string")return r(`object key must be a string; found ${Ha(u)}`,u);let d=u.value;c.has(d)&&r(`duplicate key ${JSON.stringify(d)}`,u),o(":"),c.set(d,a());let f=t[n];if(i(f,"}")){n++;break}o(",")}return c}if(p.kind==="punct"&&p.value==="["){let c=[];if(i(t[n],"]"))return n++,c;for(;;){c.push(a());let u=t[n];if(i(u,"]")){n++;break}o(",")}return c}return r(`expected a value; found ${Ha(p)}`,p)},s=a();t[n].kind!=="eof"&&r(`has trailing data; found ${Ha(t[n])}`);let l=s instanceof Map?[s]:Array.isArray(s)?s:r("root must be an object or array.",t[0]);if(l.length===0)throw new W("JSON source contains no records.");return l.forEach((p,c)=>{if(!(p instanceof Map))throw new W(`JSON record ${c+1} must be an object.`)}),l}var qS=new Set(["CHECK_BOX","MULTI_SELECT"]),_E=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function Tt(e,t,n){throw new W(`JSON field validation failed (row=${e}, field=${t}): ${n}`)}function JS(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof Map)&&e.kind==="number"}function XS(e,t,n){if(e===null)return"";if(typeof e=="string")return e;if(typeof e=="boolean"&&Tt(n,t.code,"boolean is not accepted."),JS(e)){t.fieldType==="NUMBER"&&Tt(n,t.code,"precision target requires a JSON string."),(!/^-?(?:0|[1-9]\d*)$/.test(e.lexeme)||e.lexeme==="-0")&&Tt(n,t.code,`JSON number ${e.lexeme} must be a non-negative-zero safe integer lexeme.`);let i=Number(e.lexeme);return Number.isSafeInteger(i)||Tt(n,t.code,`JSON number ${e.lexeme} is outside the safe integer range.`),String(i)}e instanceof Map&&Tt(n,t.code,"object is not accepted for a flat field."),Array.isArray(e)||Tt(n,t.code,"unsupported value type."),!qS.has(t.fieldType)&&!_E.has(t.fieldType)&&Tt(n,t.code,"array is accepted only for multi-value fields.");let r=e.map(i=>(typeof i!="string"&&Tt(n,t.code,"array elements must be strings."),i));return new Set(r).size!==r.length&&Tt(n,t.code,"array elements must not contain duplicates."),_E.has(t.fieldType)?JSON.stringify(r.map(i=>({code:i}))):JSON.stringify(r)}function Ou(e,t,n,r){if(t.encoding&&t.encoding!=="utf8")throw new W("JSON source is UTF-8 only.");let i=Ya(t.bytes);if(i.length>r)throw new W(`source rows (${i.length}) exceed maxRecords (${r}).`);let o=new Map(n.map(l=>[l.code,l]));if(o.size!==n.length)throw new W("JSON target fields contain duplicates.");let a=[],s=[];return i.forEach((l,p)=>{for(let d of l.keys())o.has(d)||Tt(p+1,d,"unknown key (not declared in INTO).");let c={},u=new Set;for(let d of n)l.has(d.code)&&(u.add(d.code),c[d.code]=XS(l.get(d.code),d,p+1));a.push(c),s.push(u)}),{rows:a,columns:n.map(l=>l.code),columnMeta:new Map(n.map(l=>[l.code,{fieldType:l.fieldType}])),importPresence:s}}function Lu(e,t,n,r,i,o){let a=Wa(t.bytes,{encoding:e.encoding??t.encoding??"utf8",hasHeader:e.hasHeader,columns:e.columns});if(a.rows.length>n)throw new W(`source rows (${a.rows.length}) exceed maxRecords (${n}).`);if(e.mappingMode==="BY_NAME"){if(!r||!i)throw new Error("InternalError: BY NAME requires destination form metadata.");if(new Set(r).size!==r.length)throw new W("ERR_IMPORT_HEADER_REUSED: a BY NAME header cannot be consumed more than once.");let l=new Map(a.columns.map((g,y)=>[g,y]));for(let g of r)if(!l.has(g))throw new W(`ERR_IMPORT_MISSING_COLUMN: required header "${g}" is missing.`);let p=new Map(i.map(g=>[g.code,g])),c=new Set(r);if(o&&c.has(o))throw new W("ERR_IMPORT_HEADER_REUSED: record-number source header is lookup-only and cannot be a write target.");if(o&&!l.has(o))throw new W(`ERR_IMPORT_MISSING_COLUMN: required header "${o}" is missing.`);let u=[],d=[],f=g=>a.rows.filter(y=>y[g]!=="").length,R=g=>g.fieldType==="FILE"?"FILE attachment is outside flat IMPORT scope":g.inSubtable||g.fieldType==="SUBTABLE"?"subtable field is not writable in Phase 3":g.writable===!1?`non-writable ${g.fieldType} field`:`known export-only ${g.fieldType} field`;for(let[g,y]of a.columns.entries()){if(c.has(y)||y===o)continue;let T=p.get(y);if(T)u.push({column:y,reason:R(T),nonEmptyCells:f(g)});else if(e.ignoreUnknownColumns)d.push({column:y,reason:"unknown column ignored by explicit policy",nonEmptyCells:f(g)});else throw new W(`ERR_IMPORT_UNKNOWN_COLUMN: unknown CSV header "${y}".`)}for(let g of r){let y=p.get(g);if(!y)throw new Error(`ArgumentError: DML target field ${g} does not exist.`);if(y.inSubtable||y.writable===!1||y.fieldType==="FILE"||y.fieldType==="SUBTABLE")throw new Error(`ArgumentError: DML target field ${g} is not writable (${y.fieldType}).`)}let E=[];return{rows:a.rows.map(g=>{let y=[],T={};for(let h of r){let I=g[l.get(h)];try{T[h]=PE(I,p.get(h)?.fieldType,{cliKintone:!0})}catch(C){if(!(C instanceof wi))throw C;T[h]=I,y.push({field:h,code:C.code,message:C.message})}}return E.push(y),T}),columns:[...r],columnMeta:new Map(r.map(g=>[g,{fieldType:p.get(g)?.fieldType??"SINGLE_LINE_TEXT"}])),importRowErrors:E,...o?{recordNumberSourceValues:a.rows.map(g=>g[l.get(o)])}:{},importAudit:{mapping:"BY_NAME",writtenColumns:[...r],ignoredKnownColumns:u,ignoredUnknownColumns:d}}}return{rows:a.rows.map(l=>Object.fromEntries(a.columns.map((p,c)=>[p,l[c]]))),columns:a.columns,columnMeta:new Map(a.columns.map(l=>[l,{fieldType:"SINGLE_LINE_TEXT"}]))}}var bi=(e,t,n)=>{throw new W(`JSON subtable validation failed (parentRow=${e}, field=${t}): ${n}`)};function DE(e,t,n,r,i=r){if(t.encoding&&t.encoding!=="utf8")throw new W("JSON source is UTF-8 only.");let o=Ya(t.bytes);if(o.length>r)throw new W(`source parent rows (${o.length}) exceed maxRecords (${r}).`);let a=new Map(n.map(l=>[l.kind==="FIELD"?l.field:l.subtableCode,l]));if(a.size!==n.length)throw new W("IMPORT targets contain duplicates.");let s=0;return{records:o.map((l,p)=>{let c=p+1;for(let R of l.keys())a.has(R)||bi(c,R,"unknown key (not declared in INTO).");let u=new Map,d=new Map,f=new Set;for(let R of n){let E=R.kind==="FIELD"?R.field:R.subtableCode;if(!l.has(E))continue;let m=l.get(E);if(R.kind==="FIELD"){m instanceof Map&&bi(c,E,"object is not accepted for a top-level field."),u.set(E,m);continue}Array.isArray(m)||bi(c,E,"subtable value must be an array."),f.add(E);let g=new Set(R.children),y=m.map((T,h)=>{T instanceof Map||bi(c,E,`childRow=${h+1} must be an object.`);let I=T;for(let C of I.keys())g.has(C)||bi(c,C,`unknown child key in subtable ${E} at childRow=${h+1}.`);if(s++,s>i)throw new W(`source child rows (${s}) exceed limit (${i}).`);return{childRowNumber:h+1,values:I}});d.set(E,y)}return{rowNumber:c,top:u,subtables:d,replacementTables:f}})}}function vE(e,t,n,r,i,o){let a=Wa(t.bytes,{encoding:e.encoding??t.encoding??"utf8",hasHeader:e.hasHeader,columns:e.columns});if(!e.hasHeader||a.columns[0]!=="*")throw new W('ERR_IMPORT_MARKER: first CSV header must be "*".');let s=new Map(a.columns.map((d,f)=>[d,f]));if(o&&!s.has(o))throw new W(`ERR_IMPORT_MISSING_COLUMN: required header "${o}" is missing.`);let l=n.filter(d=>d.kind==="FIELD"),p=n.filter(d=>d.kind==="SUBTABLE");for(let d of l)if(!s.has(d.field))throw new W(`ERR_IMPORT_MISSING_COLUMN: required header "${d.field}" is missing.`);for(let d of p){if(!d.rowIdSourceHeader||!s.has(d.rowIdSourceHeader))throw new W(`ERR_IMPORT_MISSING_COLUMN: row-ID header for ${d.subtableCode} is missing.`);for(let f of d.children)if(!s.has(f))throw new W(`ERR_IMPORT_MISSING_COLUMN: required child header "${f}" is missing.`)}let c=[],u;if(a.rows.forEach((d,f)=>{let R=f+2,E=d[0];if(E!==""&&E!=="*")throw new W(`ERR_IMPORT_MARKER: invalid marker ${JSON.stringify(E)} at source row ${R}.`);if(E==="*"){if(c.length>=i)throw new W(`source parent rows exceed maxRecords (${i}).`);u={rowNumber:c.length+1,markerRowNumber:R,top:new Map(l.map(m=>[m.field,d[s.get(m.field)]])),subtables:new Map(p.map(m=>[m.subtableCode,[]])),replacementTables:new Set(r),...o?{recordNumberSourceValue:d[s.get(o)]}:{}},c.push(u)}else if(u){for(let m of l){let g=d[s.get(m.field)];if(g!==""&&g!==u.top.get(m.field))throw new W(`ERR_IMPORT_PARENT_VALUE_ON_CONTINUATION: ${m.field} at source row ${R}.`)}if(o){let m=d[s.get(o)];if(m!==""&&m!==u.recordNumberSourceValue)throw new W(`ERR_IMPORT_PARENT_VALUE_ON_CONTINUATION: ${o} at source row ${R}.`)}}else throw new W(`ERR_IMPORT_MARKER: first data row must start a parent (source row ${R}).`);for(let m of p){let g=d[s.get(m.rowIdSourceHeader)],y=new Map(m.children.map(h=>[h,d[s.get(h)]]));if(g===""&&[...y.values()].every(h=>h===""))continue;let T=u.subtables.get(m.subtableCode);T.push({childRowNumber:T.length+1,sourceRowNumber:R,...g?{rowId:g}:{},values:y})}}),c.length===0)throw new W("CSV has no parent rows.");return{records:c}}var QS=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),ZS=new Set(["SUBTABLE","FILE","CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function vu(e,t){if(t!=null&&e.invalidParentRows.size>t)throw new Error(`RejectLimitExceededError: rejected parents (${e.invalidParentRows.size}) exceed REJECT LIMIT (${t}).`)}function xE(e,t,n,r,i){let o=new Map(n.filter(d=>!d.inSubtable).map(d=>[d.code,d])),a=new Map;for(let d of n)if(d.inSubtable&&d.subtableCode){let f=a.get(d.subtableCode);f||a.set(d.subtableCode,f=new Map),f.set(d.code,d)}let s=t.filter(d=>d.kind==="FIELD"),l=t.filter(d=>d.kind==="SUBTABLE");for(let d of s)ME(d.field,o.get(d.field),void 0);for(let d of l){let f=o.get(d.subtableCode);if(!f||f.fieldType!=="SUBTABLE")throw new Error(`ArgumentError: IMPORT subtable ${d.subtableCode} does not exist.`);let R=a.get(d.subtableCode)??new Map;for(let E of d.children)ME(E,R.get(E),d.subtableCode)}let p=new Map(l.map(d=>[d.subtableCode,{parentsPresent:0,childRows:0,validChildRows:0,invalidChildRows:0}])),c=e.records.map(d=>eT(d,s,l,o,a,r,i,p)),u=c.flatMap(d=>[...d.errors]);return{parents:c,errors:u,invalidParentRows:new Set(c.filter(d=>!d.valid).map(d=>d.parentRow)),tableCounts:p}}function eT(e,t,n,r,i,o,a,s){let l=[],p={};for(let d of t)e.top.has(d.field)&&Du(e.top.get(d.field),r.get(d.field),o,p,d.field,l,_u(e,a,d.field));let c={};if(a==="INSERT")for(let d of r.values())d.fieldType==="SUBTABLE"||d.writable===!1||e.top.has(d.code)||UE(d,o,c,l,_u(e,a,d.code));let u=new Map;for(let d of n){if(!e.subtables.has(d.subtableCode))continue;let f=s.get(d.subtableCode);f.parentsPresent++;let R=[];for(let E of e.subtables.get(d.subtableCode)){f.childRows++;let m=l.length,g={},y=i.get(d.subtableCode);for(let T of d.children){let h=y.get(T),I=_u(e,a,T,d.subtableCode,E.childRowNumber,E.sourceRowNumber??e.markerRowNumber);E.values.has(T)?Du(E.values.get(T),h,o,g,T,l,I):UE(h,o,g,l,I)}l.length===m?(f.validChildRows++,R.push(g)):f.invalidChildRows++}u.set(d.subtableCode,R)}return{parentRow:e.rowNumber,valid:l.length===0,top:p,subtables:u,replacementTables:e.replacementTables,errors:l}}function ME(e,t,n){if(!t)throw new Error(n?`ArgumentError: IMPORT child ${e} does not belong to subtable ${n}.`:`ArgumentError: IMPORT top-level field ${e} does not exist.`);if(t.writable===!1||n&&ZS.has(t.fieldType))throw new Error(`ArgumentError: IMPORT ${n?`child ${n}.${e}`:`field ${e}`} is not writable (${t.fieldType}).`)}function UE(e,t,n,r,i){let o=mn(e.defaultValue)?"":e.defaultValue;Du(o,e,t,n,e.code,r,i,!mn(e.defaultValue))}function Du(e,t,n,r,i,o,a,s=!1){let l=tT(e),p=$e(l,t,n);p.ok?r[i]={value:nT(l,t)?l:p.value}:o.push({...a,code:p.code,message:s?`\u65E2\u5B9A\u5024: ${p.message}`:p.message})}function tT(e){return kE(e)?e.lexeme:Array.isArray(e)?e.map(t=>t instanceof Map?t:kE(t)?t.lexeme:t):e}function kE(e){return typeof e=="object"&&e!==null&&e.kind==="number"}function nT(e,t){return QS.has(t.fieldType)&&Array.isArray(e)&&e.every(n=>typeof n=="object"&&n!==null&&"code"in n)}function _u(e,t,n,r,i,o){let a=o??e.markerRowNumber;return{operation:t,parentRow:e.rowNumber,field:n,...r?{subtable:r}:{},...i==null?{}:{subrow:i},...a==null?{}:{sourceRow:a},sourceValues:r?e.subtables.get(r)?.[i-1]?.values??new Map:e.top}}var Mu=["$err_statement","$err_operation","$err_row","$err_field","$err_subtable","$err_subrow","$err_source_row","$err_code","$err_message"];function Uu(e,t,n=1){return e.map(r=>{let i={};for(let o of t)i[o]=r.sourceValues.get(o)==null?"":rT(r.sourceValues.get(o));return i.$err_statement=String(n),i.$err_operation=r.operation,i.$err_row=String(r.parentRow),i.$err_field=r.field,i.$err_subtable=r.subtable??"",i.$err_subrow=r.subrow==null?"":String(r.subrow),i.$err_source_row=r.sourceRow==null?null:String(r.sourceRow),i.$err_code=r.code,i.$err_message=r.message,i})}function rT(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 ku(e,t,n){let r={};for(let[i,o]of e)r[i]={value:o};for(let[i,o]of t)r[i]={value:o.map(a=>({...n==="PRESERVE"&&a.rowId?{id:a.rowId}:{},value:Object.fromEntries([...a.values].map(([s,l])=>[s,{value:l}]))}))};return r}function FE(e,t){return ku(e,t,"DROP")}function GE(e){for(let t of e.records)for(let[n,r]of t.subtables)for(let i of r)if(i.rowId!==void 0||i.values.has("_rid")||i.values.has("id"))throw new Error(`ArgumentError: JSON IMPORT subtable ${n} does not accept _rid/id; rows are always newly numbered.`)}function KE(e,t,n){return e.map((r,i)=>{let o=t[i],a=o===void 0?void 0:n.get(o);if(o!==void 0&&!a)throw new Error(`InternalError: IMPORT UPSERT target APP record ${o} was not loaded.`);let s=[...r.subtables].map(([l,p])=>{let c=a?.record[l]?.value,u=Array.isArray(c)?c.length:0;return{table:l,existingRows:u,inputRows:p.length,addRows:p.length,deleteRows:u}});return{parentRow:r.parentRow,mode:o===void 0?"INSERT":"UPDATE",...o===void 0?{}:{targetId:o,revision:a?.revision},top:r.top,subtables:r.subtables,tables:s}})}function iT(e,t){let n=e[t]?.value;return Array.isArray(n)?n:[]}function $E(e){let t=new Map;for(let n of e)for(let[r,i]of n.subtables)for(let o of i){if(!o.rowId)continue;let a=`${r}\0${o.rowId}`;if(t.has(a))throw new Error(`ERR_SUBTABLE_ROW_ID_DUP_SOURCE: duplicate row ID ${o.rowId} in ${r}`);t.set(a,n.rowNumber)}}function BE(e,t,n,r,i){return t.map((o,a)=>{let s=e[a],l=n[a],p=l===void 0?void 0:r.get(l),c=[...o.errors];if(!p||l===void 0)return{parentRow:o.parentRow,targetId:l??0,valid:!1,top:o.top,subtables:new Map,tables:[],errors:c};let u=new Map,d=[];for(let f of o.replacementTables){let R=iT(p.record,f),E=new Set(R.map(C=>C.id).filter(C=>!!C)),m=s.subtables.get(f)??[],g=o.subtables.get(f)??[],y=0,T=0,h=0,I=m.map((C,v)=>{let P=g[v]??{};return C.rowId&&E.has(C.rowId)?(y++,{rowId:C.rowId,record:P}):(C.rowId&&((i.get(C.rowId)??[]).some(M=>M.parentId!==l||M.table!==f)&&c.push({operation:"UPDATE",parentRow:o.parentRow,field:C.rowId,subtable:f,subrow:C.childRowNumber,sourceRow:C.sourceRowNumber,code:"ERR_IMPORT_FIELD_OWNERSHIP",message:`rowIdOwnedElsewhere: ${C.rowId}`,sourceValues:C.values}),h++),T++,{record:P})});u.set(f,I),d.push({table:f,existingRows:R.length,inputRows:m.length,updateRows:y,addRows:T,deleteRows:R.length-y,rowIdNotFound:h})}return{parentRow:o.parentRow,targetId:l,...p.revision===void 0?{}:{revision:p.revision},valid:c.length===0,top:o.top,subtables:u,tables:d,errors:c}})}var xu="#__import_source";function VE(e){return{...e,from:{appId:0,alias:null,cteName:xu}}}function oT(e){return/^[0-9]+$/.test(e)?e.replace(/^0+(?=\d)/,""):null}function Fu(e,t){let n=e.map(oT),r=new Set;for(let i of n)if(i!==null){if(r.has(i))throw new Error("ERR_RECORD_NUMBER_DUP_SOURCE: source contains a duplicate record number");r.add(i)}return{normalized:n,errors:n.map(i=>i===null?[{field:t,code:"ERR_RECORD_NUMBER_INVALID",message:`${t} must be a non-empty ASCII decimal record number`}]:[])}}var aT="\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",Ln=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"}},ue=new WeakMap;function fR(e){return ue.get(e)}var kn=new WeakMap,cs=new WeakMap,Hu=Symbol("statementEvaluationContext");function ER(e){return e[Hu]?e:{...e,[Hu]:{statementInstant:new Date}}}function le(e){return e[Hu]??{}}var WE=new WeakMap,sT=1,lT=1;function RR(e,t){if(t)return t;let n=WE.get(e);return n||(n=`client:${sT++}`,WE.set(e,n)),n}function yc(e){return`${e}\0inv:${lT++}`}async function hc(e,t,n={}){yt(n);let r=Date.now(),i=yc(RR(t,n.cacheContext));try{let o=sw(e,n.enableImport===!0),a=mR(),s=yR(t,a),l={aborted:!1},p=Sc(s,l,!cT(o)||Zl(o)),c=await Yu(o,p,n,i);a.elapsedMs=Date.now()-r;let u={...hR(c,l),metrics:a};if(c.type==="SELECT"){let d=ue.get(c);d&&ue.set(u,d)}return u}finally{Fc(i)}}function mR(){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,limitReached:!1,limitReachedApps:[],elapsedMs:0}}var gR=Symbol("limitMetricsSink");function Ac(e,t){let n=e[gR];n&&(n.limitReached=!0,n.limitReachedApps.includes(t)||n.limitReachedApps.push(t))}function yR(e,t){return{[gR]:t,getRecords:async n=>{t.getCalls+=1;let r=await e.getRecords(n);return t.fetchedRows+=r.records.length,r},openCursor:async n=>{t.cursorCreateCalls+=1;let r;try{r=await e.openCursor(n)}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:r.totalCount,nextPage:async()=>{t.cursorGetCalls+=1;let a=await r.nextPage();return t.cursorRecordsScanned+=a.records.length,a.next||o(),a},close:async()=>{i||(t.cursorDeleteCalls+=1);try{await r.close(),o()}catch(a){throw t.cursorCleanupFailures+=1,t.cursorQuarantinedCurrent+=1,a}}}},postRecords:n=>(t.postCalls+=1,e.postRecords(n)),putRecords:n=>(t.putCalls+=1,e.putRecords(n)),deleteRecords:n=>(t.deleteCalls+=1,e.deleteRecords(n)),getApps:()=>(t.appsCalls+=1,e.getApps()),getFields:n=>(t.fieldCalls+=1,e.getFields(n)),getNumberPrecision:n=>(t.numberPrecisionCalls+=1,e.getNumberPrecision(n)),getProcessStatuses:n=>(t.processStatusCalls+=1,e.getProcessStatuses(n))}}var HE=Symbol("searchAbortFailClosed");function Sc(e,t,n){return n&&e[HE]?e:{...e,...n?{[HE]:!0}:{},getRecords:async r=>{let i=await e.getRecords(r);if(i.searchAborted&&(t.aborted=!0,n))throw new Ln;return i}}}function uT(e){let t=new Set;return{client:{...e,openCursor:async n=>{let r=await e.openCursor(n);t.add(r);let i=()=>t.delete(r);return{totalCount:r.totalCount,async nextPage(){let o=await r.nextPage();return o.next||i(),o},async close(){try{await r.close()}finally{i()}}}}},closeActive:async()=>{await Promise.all([...t].map(n=>n.close().catch(()=>{})))}}}function cT(e){return e.type==="SELECT"||e.type==="UNION"||e.type==="WITH"}function hR(e,t){if(!t.aborted||e.type!=="SELECT")return e;let n=new Set(e.warnings??[]);return n.add(aT),{...e,warnings:[...n]}}async function YE(e,t,n){let r=await ji(e,t,n);return Cu(r),r}async function ji(e,t,n){return NE(e,{select:async r=>{let{resolver:i}=await Cn(r,t,n);return he(r.where,i)},dml:r=>_R(r,t,n),prefilterDecomposition:async r=>{if(r.where===null)return null;let{resolver:i}=await Cn(r,t,n);return Pu(r,i)},joinServerFunctionPlan:async r=>{await Cn(r,t,n);let i=await ds(r,t,n),o=ps(r,i);return o===null?null:(cr(o.joinPlan)&&Lc.set(r,o),o.joinPlan)}})}async function Yu(e,t,n,r){n=ER(n);let i=await ji(e,t,r);e.type!=="EXPLAIN"&&Cu(i);let o=zu(e);if(o!==null&&!GI(e))throw new Error(`ParseError: variable @${o} is not defined in a batch.`);if(Hn("phase15b",e),go("phase15b",e),nt(e),e.type!=="EXPLAIN"&&await bT(e,t,r),e.type==="IMPORT")return em(e,t,n,r);if(e.type==="UPDATE"&&e.applyBlocks?.length){if(e.validationErrorTable)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return pc(e,t,n,r)}if("validateOnly"in e&&e.validateOnly===!0){if(e.validationErrorTable)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return Kc(e,t,{...n,onLimitReached:"error"},r,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 pT(e,t,n,r);case"SELECT":return xt(Zu(e),t,n,r,void 0,n.captureColumnMeta===!0,n.captureColumnMeta===!0);case"UNION":return VR(e,t,n,r,n.captureColumnMeta===!0,n.captureColumnMeta===!0);case"WITH":return Uc(e,t,n,r,void 0,n.captureColumnMeta===!0);case"INSERT":return vI(e,t,n,r);case"INSERT_SELECT":return Wc(e,t,n,r);case"UPSERT":return QI(e,t,n,r);case"UPSERT_SELECT":return jc(e,t,n,r);case"UPDATE":return pc(e,t,n,r);case"DELETE":return XI(e,t,n,r);case"REORDER":return iw(e,t,n,r);case"SHOW_APPS":return om(t);case"DESCRIBE":return am(e,t,r);case"EXPLAIN":return fw(e,t,r,n.maxRecords??1e4,n.cursorMaxActive??2,e.query.type==="UPDATE"&&e.query.applyBlocks?.length?Qe(n.dmlMaxRows,"dmlMaxRows",Gt):Gt,e.query.type==="UPDATE"&&e.query.applyBlocks?.length?Qe(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ce):Ce,i,n.recursiveCteMaxDepth,n.recursiveCteMaxRows,n.recursiveCteMaxExpansions);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 wR(e,t,n,r);case"EXIT":throw new Error("ArgumentError: EXIT SUCCESS IF \u306F\u30D0\u30C3\u30C1\u5C02\u7528\u3067\u3059")}}var Tc=["$id","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id","$err_count"],Ic=["$id","$err_subtable","$err_field","$err_code","$err_count"];function wc(e){let t=[],n=new Set,r=o=>{n.has(o)||(n.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"&&r(a.field),a.type==="FIELD_REF"&&typeof a.field=="string"&&r(a.field),Object.values(a).forEach(i)};return i(e),t}function AR(e=!1){let t=e?Ic:Tc;return new Map(t.map(n=>[n,{fieldType:n==="$id"||n==="$err_count"?"KSQL_NUMBER":"KSQL_STRING",sortKind:n==="$id"||n==="$err_count"?"number":"string",semantics:B(n==="$id"||n==="$err_count"?"number":"string")}]))}async function pT(e,t,n,r){if(e.errorTable)throw new Error("ArgumentError: VALIDATE INTO requires a batch.");return SR(e,t,n,r)}async function SR(e,t,n,r){let i=await ee(e.appId,t,r),o=new Map(i.filter(O=>!O.inSubtable).map(O=>[O.code,O])),a=new Set(i.filter(O=>O.inSubtable).map(O=>O.code)),s=Yl(e,i),l=new Set(s.flatMap(O=>Wl(O.field))),p={present:Vl.filter(O=>l.has(O)),absent:Vl.filter(O=>!l.has(O))},c=e.checkGroups??[],u=rr(c);for(let O of u){if(O.field!=="$id"&&!o.has(O.field)&&!a.has(O.field))throw Ne(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${O.field} \u306F APP${e.appId} \u306B\u5B58\u5728\u3057\u307E\u305B\u3093`);if(O.field!=="$id"&&!o.has(O.field)&&a.has(O.field))throw new Error(`ArgumentError: VALIDATE \u306E CHECK \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${O.field} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let d=new Map([...o].map(([O,F])=>[O,F.fieldType]));d.set("$id","RECORD_NUMBER"),Un(e,d);let f=wc(e.where),R=[...new Set(["$id",...s.map(O=>O.subtableCode??O.field.code),...f,...u.map(O=>O.field)])];for(let O of f){if(O!=="$id"&&!o.has(O)&&!a.has(O))throw new Error(`ArgumentError: WHERE field ${O} does not exist in APP${e.appId}.`);if(O!=="$id"&&!o.has(O)&&a.has(O))throw new Error(`ArgumentError: VALIDATE \u306E WHERE \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${O} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let E=s.some(O=>O.field.fieldType==="NUMBER")?await wt(e.appId,t,r):void 0,m=O=>O.field==="$id"?te({fieldType:"__ID__"}):o.get(O.field)?.semantics??(o.has(O.field)?te(o.get(O.field)):void 0),g=he(e.where,m);if(g.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Pn(g)}).`);let y=new Map([...o].map(([O,F])=>[O,F.fieldType])),T=new Map([...o.values()].flatMap(O=>O.optionOrder?[[O.code,new Set(Object.keys(O.optionOrder))]]:[])),h=e.where===null?null:g.capability==="EXACT_PUSHDOWN"?e.where:ol(e.where,{allowUnqualifiedFields:!0,fieldTypes:y,fieldOptions:T,allowKlike:!1}),I=h===null?"":j(h),v=(await xe(t.getRecords,e.appId,I,R,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"})).map(O=>({id:String(O.$id?.value??""),record:O,flat:Mt(O,null)})).filter(O=>e.where===null||se(e.where,O.flat,F=>d.get(F.field),void 0,void 0,le(n))),P=[],U=new Map,M=new Map,N=new Set,_=0,b=O=>{if(N.add(O.id),_+=1,e.summary){let K=JSON.stringify([O.id,O.subtable??"",O.field,O.code]),k=M.get(K);k?k.$err_count=String(Number(k.$err_count)+1):M.set(K,{$id:O.id,$err_subtable:O.subtable??"",$err_field:O.field,$err_code:O.code,$err_count:"1"});return}let F=JSON.stringify([O.id,O.subtable??"",O.field,O.code,O.message]),V=U.get(F);V?(V.$err_count=String(Number(V.$err_count)+1),O.subrow!==void 0&&(V.$err_subrow=`${V.$err_subrow},${O.subrow}`,V.$err_subrow_id=`${V.$err_subrow_id},${O.subrowId??""}`)):U.set(F,{$id:O.id,$err_field:O.field,$err_code:O.code,$err_message:O.message,$err_value:O.value,$err_subtable:O.subtable??"",$err_subrow:O.subrow===void 0?"":String(O.subrow),$err_subrow_id:O.subrowId??"",$err_count:"1"})},D=s.filter(O=>!O.subtableCode),A=new Map;for(let O of s){if(!O.subtableCode)continue;let F=A.get(O.subtableCode)??[];F.push(O),A.set(O.subtableCode,F)}for(let O of v){for(let F of D){let V=O.record[F.field.code]?.value,K=$e(V,F.field,E);K.ok||b({id:O.id,field:F.field.code,code:K.code,message:K.message,value:ri(V,F.field.fieldType)})}for(let[F,V]of A){let K=O.record[F]?.value;if(Array.isArray(K))for(let k=0;k<K.length;k++){let G=K[k];for(let Y of V){let $=G.value?.[Y.field.code]?.value,L=$e($,Y.field,E);if(!L.ok){let H=Ra(F,k,G);b({id:O.id,field:Y.field.code,code:L.code,message:L.message,value:ri($,Y.field.fieldType),...H})}}}}for(let F of na(c,O.flat,V=>d.get(V.field)))b({id:O.id,field:"",code:"ERR_CHECK",message:F.message,value:""})}if(e.summary)P.push(...M.values());else for(let O of U.values()){let F=Number(O.$err_count);O.$err_subtable!==""&&F>=2&&(O.$err_message=`${O.$err_message}\uFF08${F}\u884C: ${O.$err_subrow}\uFF09`),P.push(O)}let x={type:"SELECT",columns:[...e.summary?Ic:Tc],rows:P,rowCount:P.length,validateStats:{errorRecords:N.size,errorCount:_,constraintMetadata:p}};return ue.set(x,AR(e.summary===!0)),x}var Xe=1e4;function It(e,t,n,r,i,o){let a=e.get(t);if(a&&(a.columns.length!==n.length||a.columns.some((l,p)=>l!==n[p])||!dT(a.columnMeta,o)))throw new Error(`ArgumentError: validation error table ${t} has a different schema.`);let s=a?.rows??[];if(s.length+r.length>i)throw new Error(`ArgumentError: temp table ${t} exceeds max rows (${i}).`);e.set(t,{columns:[...n],rows:[...s,...r],columnMeta:o})}function dT(e,t){if(e===t)return!0;if(!e||!t||e.size!==t.size)return!1;for(let[n,r]of e){let i=t.get(n);if(!i||i.displayName!==r.displayName||i.sortKind!==r.sortKind||i.fieldType!==r.fieldType||!Lo(i.semantics,r.semantics))return!1}return!0}var fr=class extends Error{constructor(){super("TimeoutError: batch timeout exceeded.")}};async function TR(e,t,n={}){yt(n);let r=Tu(e),i=r.diagnostics.find(E=>E.severity==="error");if(r.hasDirectives&&i)throw new Error(`${i.code}: ${i.message} (${i.line}:${i.column})`);let o=bc(r.hasDirectives?e.slice(r.headerEnd):e,n.enableImport===!0,r.hasDirectives&&r.meta.dialect===1),a=ml(o);if(o.forEach(E=>go("phase15b",E)),n.allowApplyMutation!==!0&&o.some(E=>Ks(E)||E.type==="UPSERT"&&fT(E)))throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let s=Ql(o,n.variables),l=IR(o,s),p={...n,variables:s};if(n.continueOnError&&a.containsDml)throw new Error("ArgumentError: continueOnError is not allowed for batches containing DML.");for(let E of a.statements){if(!E.isDml||E.tempTablesReferenced.length===0||E.statementType==="INSERT_SELECT"||E.statementType==="UPSERT_SELECT")continue;let m=o[E.index];if(!(m?.type==="UPDATE"&&m.from?.cteName!=null))throw new oe(`ArgumentError: temp table references in ${E.statementType} are not supported yet.`,E.index)}let c=mR(),u=yR(t,c),d=Date.now(),f=n.timeoutMs!=null?d+n.timeoutMs:null,R=yc(RR(t,n.cacheContext));try{let E=new Map,m=new Map,g=[],y=new Set,T=null;for(let h=0;h<o.length;h++){let I=a.statements[h],C={index:h,type:I.statementType};if(T){g.push({...C,status:"skipped",skippedReason:T}),T!=="exit"&&y.add(h);continue}let v=I.dependsOn.find(P=>y.has(P));if(v!==void 0){let P=a.statements[v].tempTablesCreated[0]??`statement ${v}`;g.push({...C,status:"skipped",skippedReason:`dependency: ${P}`}),y.add(h);continue}if(f!==null&&Date.now()>=f){g.push({...C,status:"skipped",skippedReason:"timeout"}),y.add(h),T="timeout";continue}try{let P=f!==null?f-Date.now():null,U=p.confirm,M=U?{...p,confirm:(F,V,K)=>U(F,V,{statementIndex:h,statementCount:o.length,statementType:I.statementType,targetAppId:I.targetAppId,...K?.importDetail?{importDetail:K.importDetail}:{},...K?.applyDetail?{applyDetail:K.applyDetail}:{},...K?.applyDiagnostic?{applyDiagnostic:K.applyDiagnostic}:{}})}:p,N={aborted:!1},_=Sc(u,N,I.statementType!=="SELECT"&&I.statementType!=="UNION"&&I.statementType!=="WITH"||Zl(o[h])),b=uT(_),D=ER(M),A={stmt:o[h],info:I,client:b.client,options:D,cacheContext:R,tempTables:E,variables:m,relativeDateVariables:l,clock:le(D)},w=await mT(ET(A),P,b.closeActive);w.result&&(w.result=hR(w.result,N));let{exitTriggered:x,...O}=w;g.push({...C,status:"success",...O}),x&&(T="exit")}catch(P){g.push({...C,status:"error",error:gT(P),...P instanceof Bi?{result:P.diagnostic}:{}}),y.add(h),P instanceof fr?T="timeout":P instanceof ki?T="assertion":I.statementType==="SET_VARIABLE"||I.statementType==="DECLARE_VARIABLE"?T="fail-fast":n.continueOnError||(T="fail-fast")}}return c.elapsedMs=Date.now()-d,{ok:g.every(h=>h.status==="success"||h.skippedReason==="exit"),statementCount:o.length,statements:g,analysis:a,metrics:c}}finally{Fc(R)}}function fT(e){return e.type==="UPDATE"||e.type==="INSERT"?e.validateOnly!==!0&&!!e.applyBlocks?.length:e.type==="UPSERT"&&e.validateOnly!==!0&&!!(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length)}async function ET(e){let{stmt:t,info:n,client:r,options:i,cacheContext:o,tempTables:a,variables:s,relativeDateVariables:l,clock:p}=e;if(t.type==="SET_VARIABLE"){let u=is(t,s);if(nt(u),await YE(u,r,o),u.expr.type==="ARRAY")s.set(t.name,{type:"array",elements:u.expr.elements.map(d=>({type:"string",value:d.value}))});else if(u.expr.type==="SCALAR_SUBQUERY")try{let d=await NR(u.expr.query,r,i,o,a),f=u.expr.query.columns[0],R=f?.type==="ARITH_COL"||f?.type==="ARITH_AGG_COL"||f?.type==="WINDOW_COL"&&(f.windowKind===void 0||f.windowKind==="RANKING"||f.windowKind==="AGGREGATE"&&(f.aggFunc==="COUNT"||f.aggFunc==="SUM"||f.aggFunc==="AVG"))||f?.type==="AGGREGATE"&&(f.func==="COUNT"||f.func==="SUM"||f.func==="AVG"||f.func==="STDDEV_POP"||f.func==="STDDEV_SAMP"||f.func==="VAR_POP"||f.func==="VAR_SAMP"||f.func==="MEDIAN");if(f?.type==="AGGREGATE"&&f.func==="MODE"||f?.type==="WINDOW_COL"&&f.windowKind==="VALUE"||f?.type==="WINDOW_COL"&&f.windowKind==="AGGREGATE"&&(f.aggFunc==="MIN"||f.aggFunc==="MAX")){let m=(await Gi(u.expr.query,["__scalar__"],r,o,a)).get("__scalar__");R=m?.semantics?.compareMode==="number"||m?.sortKind==="number"}let E=R?Number(d):Number.NaN;s.set(t.name,R&&Number.isFinite(E)?{type:"number",value:E,raw:d}:{type:"string",value:d})}catch(d){throw d instanceof Nn?new Error(`ArgumentError: ${d.message}`):d}else s.set(t.name,jE(u.expr,p));return{}}if(t.type==="DECLARE_VARIABLE"){if(t.annotation==="RELATIVE_DATE")return s.set(t.name,{type:"relative-date",value:l.get(t.name)}),{};let u=i.variables??{};if(Object.prototype.hasOwnProperty.call(u,t.name))s.set(t.name,{type:"string",value:u[t.name]});else{let d=jE(t.default,p);s.set(t.name,{type:"string",value:d.type==="number"?d.raw??String(d.value):d.value})}return{}}let c=is(t,s);if(Hn("phase15b",c),go("phase15b",c),nt(c),await YE(c,r,o),c.type==="VALIDATE"){let u=await SR(c,r,{...i,onLimitReached:"error"},o);return c.errorTable&&It(a,c.errorTable,u.columns,u.rows,i.tempTableMaxRows??Xe,ue.get(u)??AR(c.summary===!0)),{result:u}}if(c.type==="IMPORT")return{result:await em(c,r,i,o,a)};if("validateOnly"in c&&c.validateOnly===!0){let u=await Kc(c,r,{...i,onLimitReached:"error"},o,a,n.index+1);return c.validationErrorTable&&It(a,c.validationErrorTable,u.columns,u.errors,i.tempTableMaxRows??Xe,kn.get(u)??new Map),{result:u}}if("onErrorSkip"in c&&c.onErrorSkip===!0)return{result:await uc(c,r,{...i,onLimitReached:"error"},o,a,n.index+1)};if(c.type==="CREATE_TEMP_TABLE"){let u={...i,maxRecords:i.tempTableMaxRows??Xe,onLimitReached:"error"},d=await RT(c.query,r,u,o,a);return a.set(c.name,{rows:d.rows,columns:d.columns,columnMeta:ue.get(d)}),{tempTable:c.name,rowCount:d.rows.length}}if(t.type==="DROP_TEMP_TABLE")return a.delete(t.name),{tempTable:t.name};if(t.type==="EXPLAIN"){let u=c;gc.set(u,a);try{return{result:await Yu(u,r,i,o)}}finally{gc.delete(u)}}if(c.type==="ASSERT"){let u=await wR(c,r,i,o,a);return u.warning!==void 0?{result:u}:{}}if(c.type==="EXIT"){let u=await ST(c,r,i,o,a);return{result:u,...u.exited?{exitTriggered:!0}:{}}}if(n.tempTablesReferenced.length>0){if(c.type==="SELECT"||c.type==="UNION")return{result:await ct(c,r,i,a,o,i.captureColumnMeta===!0)};if(c.type==="WITH")return{result:await Uc(c,r,i,o,a)};if(c.type==="INSERT_SELECT")return{result:await Wc(c,r,i,o,a)};if(c.type==="UPSERT_SELECT")return{result:await jc(c,r,i,o,a)};if(c.type==="UPDATE"&&c.from?.cteName!=null)return{result:await pc(c,r,i,o,a)};throw new Error(`ArgumentError: temp table references in ${t.type} are not supported yet.`)}return{result:await Yu(c,r,i,o)}}async function RT(e,t,n,r,i){return e.type==="WITH"?Uc(e,t,n,r,i,!0):ct(e,t,n,i,r,!0)}async function mT(e,t,n){if(t===null)return e;if(t<=0)throw n&&await n(),e.catch(()=>{}),new fr;let r,i=!1,o=e.then(a=>i?new Promise(()=>{}):a,a=>{if(i)return new Promise(()=>{});throw a});try{return await Promise.race([o,new Promise((a,s)=>{r=setTimeout(()=>{i=!0,(async()=>{if(n){let l;try{await Promise.race([n(),new Promise(p=>{l=setTimeout(p,5e3),l.unref?.()})])}finally{l&&clearTimeout(l)}}s(new fr)})()},t)})])}catch(a){throw a instanceof fr&&e.catch(()=>{}),a}finally{r!==void 0&&clearTimeout(r)}}function gT(e){let t;if(e instanceof gt)t={code:e.name,message:e.message,partialSuccess:e.partialSuccess};else if(e instanceof Error)t={code:(e.name!=="Error"?e.name:null)??Gu(e.message),message:e.message};else if(e!==null&&typeof e=="object"){let n=e,r=typeof n.message=="string"&&n.message.length>0?n.message:yT(e);t={code:typeof n.code=="string"&&n.code.length>0?n.code:Gu(r),message:r}}else{let n=String(e);t={code:Gu(n),message:n}}return Object.defineProperty(t,"cause",{value:e,enumerable:!1,configurable:!1,writable:!1}),t}function Gu(e){return e.match(/^([A-Za-z]+Error):/)?.[1]??"Error"}function yT(e){try{return JSON.stringify(e)??String(e)}catch{return String(e)}}function bc(e,t=!1,n=!1){let r=new Zt(e).tokenize();return new en(r,{import:t,dialect1:n}).parseStatements()}function hT(e,t){try{let n=bc(`DECLARE @__b111 RELATIVE_DATE = ${t}`),r=n[0];if(n.length!==1||r?.type!=="DECLARE_VARIABLE"||r.annotation!=="RELATIVE_DATE")throw new Error("token was not consumed as one RELATIVE_DATE declaration");return r.default}catch(n){let r=n instanceof Error?` ${n.message}`:"";throw new Error(`ArgumentError: RELATIVE_DATE variable @${e} requires one supported relative-date function token.${r}`)}}function IR(e,t){let n=new Map;for(let r of e)r.type!=="DECLARE_VARIABLE"||r.annotation!=="RELATIVE_DATE"||n.set(r.name,Object.prototype.hasOwnProperty.call(t,r.name)?hT(r.name,t[r.name]):r.default);return n}function jE(e,t={}){switch(e.type){case"STRING":return{type:"string",value:e.value};case"NUMBER":return{type:"number",value:e.value,raw:z(e)};case"KINTONE_FUNC":return{type:"string",value:Qd(e.name,t)};case"STRING_FUNC":return{type:"string",value:ge(e,{},void 0,void 0,t)};case"ARITH":{let n=me(e,{},t);if(!Number.isFinite(n))throw new Error("ArgumentError: SET scalar arithmetic produced a non-finite number.");return{type:"number",value:n,raw:String(n)}}}}function is(e,t){return ju(e,t,!1)}function ju(e,t,n){if(Array.isArray(e))return e.map(r=>ju(r,t,!1));if(e!==null&&typeof e=="object"){let r=e;if(r.type==="VARIABLE"&&typeof r.name=="string"){let a=t.get(r.name);if(a===void 0)throw new Error(`ParseError: variable @${r.name} is not defined in this batch.`);if(a.type==="array")throw new Error(`ParseError: array variable @${r.name} can only be used as IN @${r.name}.`);if(a.type==="relative-date")return a.value;if(n&&a.type!=="number"&&!(a.type==="string"&&a.placeholder===!0))throw new Error(`ArgumentError: variable @${r.name} is not numeric and cannot be used in arithmetic.`);return n&&a.type==="string"&&a.placeholder===!0?{type:"NUMBER",value:0,raw:n==="AGG_ARITH"?`@${r.name}`:a.value}:a.type==="number"?{type:"NUMBER",value:a.value,raw:n==="AGG_ARITH"?`@${r.name}`:a.raw??String(a.value)}:{type:"STRING",value:a.value,fromVariable:!0}}if(r.type==="VARIABLE_COL"&&typeof r.name=="string"&&typeof r.alias=="string"){let a=t.get(r.name);if(a===void 0)throw new Error(`ParseError: variable @${r.name} is not defined in this batch.`);if(a.type==="array")throw new Error(`ParseError: array variable @${r.name} cannot be used as a SELECT column.`);if(a.type==="relative-date")throw new Error(`InternalError: RELATIVE_DATE variable @${r.name} reached a SELECT column.`);let s=typeof r.aliasDisplay=="string"?{aliasDisplay:r.aliasDisplay}:{};return a.type==="number"?{type:"ARITH_COL",expr:{type:"NUMBER",value:a.value,raw:a.raw??String(a.value)},alias:r.alias,...s}:{type:"LITERAL_COL",value:a.value,alias:r.alias,...s}}if(r.type==="VARIABLE_IN_LIST")return r;let i=Object.fromEntries(Object.entries(r).map(([a,s])=>[a,ju(s,t,a==="left"||a==="right"?r.type==="AGG_ARITH"?"AGG_ARITH":r.type==="ARITH"||r.type==="SCALAR_ARITH"?"ARITH":!1:!1)]));if(typeof r.aliasDisplay=="string"&&(i.aliasDisplay=r.aliasDisplay),i.type==="BINARY"){let a=i.right;if(a?.type==="VARIABLE_IN_LIST"&&typeof a.name=="string"){let s=t.get(a.name);if(s===void 0)throw new Error(`ParseError: variable @${a.name} is not defined in this batch.`);if(s.type!=="array")throw new Error(`ParseError: scalar variable @${a.name} cannot be used as IN @${a.name}; use IN (@${a.name}) instead.`);if(s.elements.length===0)return{type:"BOOLEAN",value:i.op==="NOT_IN"};i.right={type:"IN_LIST",values:s.elements.map(l=>({type:"STRING",value:l.value}))}}}let o=AT(i);if(o.type==="SELECT"&&ze(o.where,!0)&&(o.where=null),(o.type==="UPDATE"||o.type==="DELETE"||o.type==="REORDER")&&ze(o.where,!0))throw new Error("ArgumentError: empty-array simplification makes the target WHERE always true; use an explicit safe target condition.");return o}return e}function ze(e,t){return e!==null&&typeof e=="object"&&e.type==="BOOLEAN"&&(t===void 0||e.value===t)}function AT(e){if(e.type==="NOT"&&ze(e.expr))return{type:"BOOLEAN",value:!e.expr.value};if(e.type==="GROUP"&&ze(e.expr))return e.expr;if(e.type==="LOGICAL"){let t=e.left,n=e.right;if(e.op==="AND"){if(ze(t,!1)||ze(n,!1))return{type:"BOOLEAN",value:!1};if(ze(t,!0))return n;if(ze(n,!0))return t}else if(e.op==="OR"){if(ze(t,!0)||ze(n,!0))return{type:"BOOLEAN",value:!0};if(ze(t,!1))return n;if(ze(n,!1))return t}}return e}function zu(e){if(Array.isArray(e)){for(let t of e){let n=zu(t);if(n!==null)return n}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 n of Object.values(t)){let r=zu(n);if(r!==null)return r}}return null}var ki=class extends Error{constructor(t){super(`AssertError: ${t}`),this.name="AssertError"}},Nn=class extends Error{constructor(t){super(t),this.name="ScalarSubqueryError"}};async function wR(e,t,n,r,i){let o=await bR(e,t,n,r,i);if(!o.passed){if(e.warn===!0)return{type:"ASSERT",condition:e.text,passed:!1,warning:e.message??`assertion failed: ${e.text} (actual: ${o.actual}).`};let a=e.message!==void 0?` ${e.message}`:"";throw new ki(`assertion failed: ${e.text} (actual: ${o.actual}).${a}`)}return{type:"ASSERT",condition:e.text}}async function ST(e,t,n,r,i){let o=await bR(e,t,n,r,i);return{type:"EXIT",condition:e.text,exited:o.passed,message:e.message}}async function bR(e,t,n,r,i){let o=await ja(e.left,t,n,r,i),a=e.left.type==="NUMBER"||e.left.type==="ARITH"?B("number"):B("string");if(e.op==="BETWEEN"){if(e.low===null||e.high===null)throw new Error("ArgumentError: malformed ASSERT statement.");let l=await ja(e.low,t,n,r,i),p=await ja(e.high,t,n,r,i);return{passed:Ot(">=",o,l,a)&&Ot("<=",o,p,a),actual:o}}if(e.right===null)throw new Error("ArgumentError: malformed ASSERT statement.");let s=await ja(e.right,t,n,r,i);return{passed:Ot(e.op,o,s,a),actual:o}}async function ja(e,t,n,r,i){switch(e.type){case"VARIABLE":throw new Error(`ParseError: unresolved batch variable @${e.name}.`);case"NUMBER":return z(e);case"STRING":return e.value;case"ARITH":return String(qu(e));case"SCALAR_SUBQUERY":try{return await NR(e.query,t,n,r,i)}catch(o){throw o instanceof Nn?new ki(o.message):o}}}async function NR(e,t,n,r,i){let{query:o,probed:a}=TT(e),s=await vi(o,t,n,r,i);if(s.columns.length!==1)throw new Nn(`scalar subquery returned ${s.columns.length} columns (expected 1 column).`);if(s.rowCount===0)throw new Nn("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 Nn(`scalar subquery returned ${l} (expected 1 row).`)}return s.rows[0]?.[s.columns[0]]??""}function TT(e){return Z(e).type!=="NONE"||e.columns.some(n=>n.type==="AGGREGATE"||n.type==="ARITH_AGG_COL")||e.distinct||e.limit!==null?{query:e,probed:!1}:{query:{...e,limit:2},probed:!0}}function qu(e){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached ASSERT evaluation.`);if(e.type==="NUMBER")return e.value;if(e.type==="ARITH"){let t=qu(e.left),n=qu(e.right);switch(e.op){case"+":return t+n;case"-":return t-n;case"*":return t*n;case"/":return t/n;case"%":return t%n}}throw new Error(`ArgumentError: unsupported operand in ASSERT expression: ${e.type}`)}async function zi(e,t,n,r,i=!1){let o=[e.from,...e.joins.map(d=>d.table)],a=i||ht(e.where)?[...new Set(o.filter(d=>d.cteName===null).map(d=>d.appId))]:[],s=new Map(await Promise.all(a.map(async d=>{let f=await ee(d,t,n);return[d,new Map(f.map(R=>[R.code,R]))]}))),l=new Set,p=d=>{if(Array.isArray(d)){d.forEach(p);return}if(d===null||typeof d!="object")return;let f=d;if(f.type==="SELECT")return;let R=String(f.op),E=f.right,m=["=","!=","<>"].includes(R)&&E?.type==="STRING"&&E.value!=="";if(f.type==="BINARY"&&([">","<",">=","<="].includes(R)||m)){let g=f.left;g?.type==="FIELD"&&typeof g.field=="string"&&l.add(g.field)}Object.values(f).forEach(p)};p(e.where),p(e.having);for(let d of e.columns)d.type==="CASE_COL"&&p(d.expr);let c=new Map;await Promise.all([...s].map(async([d,f])=>{if(![...l].some(m=>f.get(m)?.fieldType==="STATUS"))return;let E=await Gc(d,t,n);E&&c.set(d,E)}));let u=(d,f,R)=>{if(f==="$id")return Xn(te({fieldType:"__ID__"}),d.appId,"$id");if(R&&d.subtableCode){if(f==="_rid")return B("string");if(f==="_idx"||f==="_pid")return B("number")}let E=s.get(d.appId)?.get(Ee(d,f));if(!E)return;let m=E.semantics??te(E),g=E.fieldType==="STATUS"&&c.has(d.appId)?{...m,optionOrder:c.get(d.appId)}:m;return Xn(g,d.appId,E.code)};return d=>{if(d.tableAlias!==null){if(d.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null)return u(e.from,d.field,!1);let R=o.find(E=>ce(E)===d.tableAlias);return R?R.cteName!==null?r?.get(R.cteName)?.columnMeta?.get(d.field)?.semantics??B("string"):u(R,d.field,!0):void 0}if(e.joins.length===0)return e.from.cteName!==null?r?.get(e.from.cteName)?.columnMeta?.get(d.field)?.semantics??B("string"):u(e.from,d.field,!0);let f=o.flatMap(R=>{let E=R.cteName!==null?r?.get(R.cteName)?.columnMeta?.get(d.field)?.semantics:u(R,d.field,!0);return E?[E]:[]});if(f.length===1)return f[0];if(!o.some(R=>Qa(R,d.field)!==void 0))return f.length>1?B("string"):void 0}}var CR=new WeakMap;async function Cn(e,t,n,r,i=!1){let o=await zi(e,t,n,r,i);if(e.where===null)return{resolver:o,rewrites:[]};let a=dd(e.where,o);return e.where=a.normalizedWhere,a.rewrites.length>0&&CR.set(e,a.rewrites),{resolver:o,rewrites:a.rewrites}}function IT(e){return e.columns.some(t=>t.type==="WINDOW_COL"&&t.windowKind==="AGGREGATE"&&t.orderBy.length>0&&t.frame?.source==="DEFAULT")}function PR(e){return IT(e)||e.columns.some(t=>t.type==="WINDOW_COL"&&t.windowKind==="VALUE")}function zE(e,t,n,r,i){return i!==void 0&&e.joins.length===0&&e.from.cteName!==null?t.some(o=>{if(o.key.type!=="FIELD_NAME")return!1;let a=Ue(o.key.name);return a.field!==i?!1:a.tableAlias===null||a.tableAlias===ce(e.from)}):r!=="DIRECT"||e.joins.length>0||e.from.cteName!==null||e.from.subtableCode!=null?!1:t.some(o=>{if(o.key.type!=="FIELD_NAME")return!1;let a=Ue(o.key.name);return a.field==="$id"||n(a)?.fieldType==="RECORD_NUMBER"})}function qE(e,t){return e!=="DIRECT"?"\u30A6\u30A3\u30F3\u30C9\u30A6\u306E\u5404\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u5185\u3067\u3001ORDER BY \u306E\u5024\u306E\u7D44\u304C\u5165\u529B\u884C\u3092\u4E00\u610F\u306B\u8B58\u5225\u3059\u308B\u3068\u30AF\u30A8\u30EA\u69CB\u9020\u307E\u305F\u306F\u4FDD\u8A3C\u6E08\u307F\u306E\u30C7\u30FC\u30BF\u5236\u7D04\u304B\u3089\u78BA\u8A8D\u3067\u304D\u308B\u5834\u5408\u306B\u9650\u308A\u3001\u3053\u306E\u8B66\u544A\u306F\u7121\u8996\u3067\u304D\u307E\u3059\u3002\u5143\u306E\u96C6\u7D04\u30AD\u30FC\u3092\u3059\u3079\u3066 ORDER BY \u306B\u542B\u3080\u5F62\u3084\u3001JOIN \u5F8C\u3082\u540C\u3058\u7CFB\u5217\u5024\u304C\u5404\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u5185\u3067\u9AD8\u30051\u884C\u3068\u4FDD\u8A3C\u3067\u304D\u308B\u5F62\u304C\u8A72\u5F53\u3057\u307E\u3059\u3002\u751F\u6210\u5217\u3001\u518D\u5E30\u306E\u6DF1\u3055\u5217\u3001\u307E\u305F\u306F $id \u306B\u7531\u6765\u3059\u308B\u5217\u3067\u3042\u308B\u3068\u3044\u3046\u7406\u7531\u3060\u3051\u3067\u306F\u7121\u8996\u3067\u304D\u307E\u305B\u3093\u3002":t==="RANGE"?"ORDER BY \u306B\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u306A\u3069\u306E\u30BF\u30A4\u30D6\u30EC\u30FC\u30AF\u30AD\u30FC\u3092\u8DB3\u3057\u3066\u304F\u3060\u3055\u3044\u3002":"\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u7B49\u3092 ORDER BY \u306B\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044\u3002"}function OR(e,t,n,r){let i=[];for(let o of e.columns)o.type!=="WINDOW_COL"||o.windowKind!=="AGGREGATE"||o.orderBy.length===0||o.frame?.source!=="DEFAULT"||zE(e,o.orderBy,t,n,r)||i.push(`${o.alias} \u306F\u65E2\u5B9A\u30D5\u30EC\u30FC\u30E0\uFF08RANGE\uFF09\u3067\u8A55\u4FA1\u3055\u308C\u307E\u3059\u3002ORDER BY \u306E\u5024\u304C\u540C\u3058\u884C\u306F\u3059\u3079\u3066\u540C\u3058\u5024\u306B\u306A\u308A\u307E\u3059\u3002\u884C\u3054\u3068\u306E\u5024\u304C\u5FC5\u8981\u306A\u3089 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW \u3092\u660E\u793A\u3059\u308B\u304B\u3001`+qE(n,"RANGE"));for(let o of e.columns)o.type!=="WINDOW_COL"||o.windowKind!=="VALUE"||zE(e,o.orderBy,t,n,r)||i.push(`${o.alias} \u306E ORDER BY \u306F\u5168\u9806\u5E8F\u3067\u306A\u3044\u305F\u3081\u3001\u540C\u9806\u5185\u306E\u524D\u5F8C\u95A2\u4FC2\u306F\u672A\u898F\u5B9A\u3067\u3059\u3002`+qE(n,"VALUE"));return i}function Nc(e,t){if(t.length===0)return e;let n={...e,warnings:[...new Set([...e.warnings??[],...t])]},r=ue.get(e);return r&&ue.set(n,r),n}function Cc(e){let t=n=>{if(n===null||typeof n!="object")return!1;if(Array.isArray(n))return n.some(t);let r=n;return r.type==="CASE_WHEN"&&r.branches?.some(i=>ht(i.condition))?!0:Object.values(r).some(t)};return e.columns.some(t)}function LR(e,t){let n=new Map;for(let r of e.columns){if(!("alias"in r)||!r.alias)continue;let i;r.type==="FIELD"?i=t(Ue(r.field)):r.type==="ARITH_COL"||r.type==="ARITH_AGG_COL"?i=B("number"):r.type==="WINDOW_COL"?r.windowKind===void 0||r.windowKind==="RANKING"||r.windowKind==="AGGREGATE"&&(r.aggFunc==="COUNT"||r.aggFunc==="SUM"||r.aggFunc==="AVG")?i=B("number"):(r.windowKind==="AGGREGATE"||r.windowKind==="VALUE")&&r.arg.type!=="WILDCARD"&&(i=Dn(r.arg,o=>{let a=t(o);return a?{sortKind:a.compareMode==="number"||a.compareMode==="recordNumber"?"number":"string",fieldType:a.fieldType,semantics:a}:void 0}).semantics):r.type==="AGGREGATE"?r.func==="MIN"||r.func==="MAX"||r.func==="MODE"?r.arg.type!=="WILDCARD"&&(i=Dn(r.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=r.func==="GROUP_CONCAT"?B("string"):B("number"):r.type==="STRFUNC_COL"?i=_n(r.expr).semantics:(r.type==="LITERAL_COL"||r.type==="SCALAR_SUBQUERY_COL"||r.type==="CASE_COL"||r.type==="SCALAR_VALUE_COL")&&(i=B("string")),i&&n.set(r.alias,i)}return r=>r.tableAlias===null&&n.has(r.field)?n.get(r.field):t(r)}function Pn(e){let t=e.reasons.find(r=>r.code==="WHERE_FIELD_UNRESOLVED"||r.code==="WHERE_OPERATOR_UNSUPPORTED"||r.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(r=>r!==null).join(", ")||"reason=WHERE_UNSUPPORTED"}function os(e){return e.orderBy.length>0||e.columns.some(t=>t.type==="WINDOW_COL"&&t.orderBy.length>0)}async function _R(e,t,n){if(e.subtableCode||e.type==="UPDATE"&&e.from!=null)return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]};let r=ht(e.where)?await ee(e.appId,t,n):[],i=new Map(r.map(o=>[o.code,o]));return e.where.type==="BOOLEAN"&&e.where.value===!1?he(null,()=>{}):he(e.where,o=>{if(o.field==="$id")return te({fieldType:"__ID__"});let a=i.get(o.field);return a?.semantics??(a?te(a):void 0)})}async function Er(e,t,n){if(e.subtableCode||e.type==="UPDATE"&&e.from!=null)return;let r=await _R(e,t,n);if(r.capability!=="EXACT_PUSHDOWN")throw new ae(`WHERE predicate cannot be represented by kintone REST (${Pn(r)})`)}async function xt(e,t,n,r,i,o=!1,a=!1,s="DIRECT"){let l,p=new Set;if(await Fi(e,t,r,i),PT(e))return l=_T(e,n),o&&ue.set(l,await Gi(e,l.columns,t,r,i,a)),l;let{resolver:c}=await Cn(e,t,r,i,PR(e)),u=OR(e,c,s),d=await Rr(e,t,r,i);await sm(e,t,n,r,p,i);let f=jT(e,he(e.where,c));if(f.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Pn(f)}).`);let R=We(e),E,m;if(f.capability==="SUPERSET_PREFILTER"){let P=await zi(e,t,r,i),U=Pu(e,P);U.eligible&&Nu(e,U)&&(E=U.plan)}if(E===void 0&&f.capability==="EXACT_PUSHDOWN"&&e.where!==null){let P=null;try{P=j(e.where)}catch{P=null}m=$o({select:e,selectMode:R,capability:f,context:{allowFullScanExact:!0},serializedWholeWhere:P,relativeFunctionNames:Te(e.where)})??void 0,m&&(E=m.prefilterPlan)}let g=f.capability==="EXACT_PUSHDOWN"?R:"FULL_SCAN",y=await $i(e,t,r,i),T=os(e)?(e.orderMode==="KINTONE_NATIVE"?fi:di)({stmt:e,staticMode:g,whereCapability:f.capability,whereReasons:f.reasons,orderSemantics:y.semantics,maxRecords:n.maxRecords??1e4,hasKlike:we(e.where)}):null,h=await vT(e,T?.kind==="CANONICAL_LOCAL"?"FULL_SCAN":g,t,r),I=Pc(e,n,T),v=m!==void 0&&(R==="FULL_SCAN"||T?.kind==="CANONICAL_LOCAL")?Sc(t,{aborted:!1},!0):t;try{g==="SIMPLE"?l=await DT(e,v,I.effectiveOptions,r,T,y):l=await JT(e,v,I.effectiveOptions,r,i,f.capability==="EXACT_PUSHDOWN"&&E===void 0,y,E,d)}catch(P){vR(I,P)}return o&&ue.set(l,await Gi(e,l.columns,t,r,i,a)),Nc(l,[...p,...u,...h])}function Ju(e,t){if(t.length===1){let{appId:r,owner:i}=t[0];return`ArgumentError: ${e} \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u300C${i}\u300D\uFF08APP${r}\uFF09\u306E\u4E2D\u306E\u9805\u76EE\u3067\u3059\u3002\u89AA\u30C6\u30FC\u30D6\u30EB\u306E GROUP BY \u306B\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002APP${r}$${i} \u304B\u3089\u96C6\u8A08\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u89AA\u306E\u30EC\u30B3\u30FC\u30C9 ID \u306F _pid\u3001\u89AA\u9805\u76EE\u306F _p.<\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9> \u306B\u306A\u308A\u307E\u3059\uFF09\u3002`}let n=t.map(({appId:r,owner:i})=>`APP${r}$${i}`).join(" / ");return`ArgumentError: ${e} \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u306E\u4E2D\u306E\u9805\u76EE\u3067\u3059\uFF08${n}\uFF09\u3002\u89AA\u30C6\u30FC\u30D6\u30EB\u306E GROUP BY \u306B\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002\u3069\u306E\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u304B\u3089\u96C6\u8A08\u3059\u308B\u304B\u3092 FROM \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`}function DR(e){let t=new Set,n=[];for(let r of e){let i=`${r.appId}\0${r.owner}`;t.has(i)||(t.add(i),n.push(r))}return n}async function Rr(e,t,n,r){let i=Z(e);if(!qn(e)||i.type==="GROUPING_SETS"||i.type==="NONE")return;let o=i.allItems,a=[e.from,...e.joins.map(u=>u.table)],s=new Map,l=await Promise.all(a.map(async u=>{if(u.cteName!==null){let E=r?.get(u.cteName);if(!E)throw new Error(`InternalError: materialized schema ${u.cteName} is not available for GROUP BY planning.`);return{kind:"MATERIALIZED",columns:E.columns}}let d=await ee(u.appId,t,n);if(!u.subtableCode){for(let E of d){if(E.inSubtable!==!0||!E.subtableCode)continue;let m=s.get(E.code)??[];m.push({appId:u.appId,owner:E.subtableCode}),s.set(E.code,DR(m))}return{kind:"APP",fieldCodes:d.filter(E=>!E.inSubtable).map(E=>E.code)}}let f=d.filter(E=>E.inSubtable&&E.subtableCode===u.subtableCode);return{kind:"SUBTABLE",childFieldCodes:(f.length>0?f:d.filter(E=>E.inSubtable&&E.subtableCode===void 0)).map(E=>E.code),parentFieldCodes:d.filter(E=>!E.inSubtable).map(E=>E.code)}})),p=Vp(e,(u,d)=>l[d]),c=jp(o,e.columns,p);return wT(e,o,c,s),Lr(e,Xp(e,c,p)),c}function wT(e,t,n,r){let i=[e.from,...e.joins.map(s=>s.table)].flatMap(s=>s.cteName===null?[s.appId]:[]),o=[...new Set(i)],a=o.length===1?o[0]:e.from.cteName===null?e.from.appId:null;n.items.forEach((s,l)=>{if(s.kind==="EXPRESSION"||s.kind==="PHYSICAL"||s.kind==="ALIAS_SAFE")return;let p=t[l],c=p?.type==="FIELD_NAME"?p.name:"(expression)";if(s.kind==="UNKNOWN"){let u=a===null?"":` (APP${a})`,d=s.name.indexOf("."),f=d>=0?s.name.slice(d+1):s.name,R=r.get(s.name)??r.get(f)??[];throw R.length>0?new Error(Ju(s.name,R)):new Error(`ArgumentError: unknown field code(s): ${s.name}${u}`)}throw s.kind==="ALIAS_REJECT"?s.reason==="DUPLICATE"?new Error(`ArgumentError: GROUP BY alias ${c} is ambiguous across multiple SELECT columns (reason=GROUP_BY_ALIAS_AMBIGUOUS).`):s.reason==="POST_GROUP_ONLY"?new Error(`ArgumentError: GROUP BY alias ${c} requires post-group evaluation (reason=GROUP_BY_ALIAS_POST_GROUP_ONLY).`):new Error(`ArgumentError: GROUP BY alias ${c} depends on aggregate evaluation (reason=GROUP_BY_ALIAS_AGGREGATE).`):new Error(`InternalError: deferred GROUP BY field ${s.name} reached runtime planning.`)})}var xi=new WeakMap;async function bT(e,t,n){let r=new Set,i=async o=>{if(o===null||typeof o!="object"||r.has(o))return;if(r.add(o),Array.isArray(o)){for(let s of o)await i(s);return}let a=o;if(a.type==="SELECT"){for(let s of Object.values(a))await i(s);await Fi(o,t,n);return}for(let s of Object.values(a))await i(s)};await i(e)}async function NT(e,t,n,r){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 ee(u,t,n);return[u,new Map(d.map(f=>[f.code,f]))]}))),s=(u,d)=>{if(u.subtableCode)return null;let f=a.get(u.appId)?.get(d);return f?.inSubtable===!0?f.subtableCode??"":null},l=(u,d)=>{if(d==="$id")return"$id";let f=Ee(u,d);return s(u,f)!==null?null:a.get(u.appId)?.has(f)?f:null},p=(u,d)=>{if(u.cteName===null)return!1;let f=r?.get(u.cteName);return f?f.columns.includes(d):!0},c=(u,d,f,R)=>{let E=i.filter(y=>y.cteName===null&&l(y,f.field)!==null).length,m=i.some(y=>p(y,f.field)),g=ce(u);return{canonicalId:`source:${d}:APP${u.appId}:${R}`,directKey:f.tableAlias&&g?`${f.tableAlias}.${f.field}`:f.field,unqualifiedBridgeKey:E===1&&!m?f.field:null,physical:!0}};return u=>{if(u.tableAlias!==null){let m=i.findIndex(T=>ce(T)===u.tableAlias);if(m<0)throw new Error(`ArgumentError: field ${u.tableAlias}.${u.field} has an unknown table alias.`);let g=i[m];if(g.cteName!==null)throw new Error(`ArgumentError: field ${u.tableAlias}.${u.field} resolves to materialized source ${g.cteName}; physical APP fields are required.`);let y=l(g,u.field);if(y===null){let T=s(g,Ee(g,u.field));throw T!==null&&T!==""?new Error(Ju(u.field,[{appId:g.appId,owner:T}])):new Error(`ArgumentError: field ${u.tableAlias}.${u.field} does not exist in APP${g.appId}.`)}return c(g,m,u,y)}let d=i.flatMap((m,g)=>{if(m.cteName!==null)return[];let y=l(m,u.field);return y===null?[]:[{table:m,tableIndex:g,code:y}]}),f=i.filter(m=>p(m,u.field));if(d.length+f.length>1)throw new Error(`ArgumentError: field ${u.field} is ambiguous across multiple sources.`);if(d.length===1&&f.length===0){let m=d[0];return c(m.table,m.tableIndex,u,m.code)}if(f.length===1)throw new Error(`ArgumentError: field ${u.field} resolves to a materialized CTE/temp column; physical APP fields are required.`);let R=i.flatMap(m=>{if(m.cteName!==null)return[];let g=s(m,Ee(m,u.field));return g===null||g===""?[]:[{appId:m.appId,owner:g}]}),E=DR(R);throw E.length>0?new Error(Ju(u.field,E)):new Error(`ArgumentError: field ${u.field} does not exist in a physical APP source.`)}}async function Fi(e,t,n,r){xi.delete(e);let i=Z(e),o=JSON.stringify(e.columns).includes('"GROUPING_')||JSON.stringify(e.orderBy).includes('"GROUPING_');if(i.type==="GROUPING_SETS"||o){let l=await NT(e,t,n,r),p=ed(e,l,Zp);p&&xi.set(e,p);return}if(!qn(e))return;if(i.type==="NONE"){To(e);return}[e.from,...e.joins.map(l=>l.table)].some(l=>l.cteName!==null&&!r?.has(l.cteName))||await Rr(e,t,n,r)}function CT(e){let t=[...e].join(", "),n=[["AGGREGATE_WINDOW","\u96C6\u8A08\u30A6\u30A3\u30F3\u30C9\u30A6\u306E\u6B63\u3057\u3044\u7D50\u679C"],["GROUPING_SETS","\u5C0F\u8A08\u30FB\u7DCF\u8A08\u306E\u6B63\u3057\u3044\u7D50\u679C"],["STATISTICAL_AGGREGATE","\u7D71\u8A08\u96C6\u7D04\u306E\u6B63\u3057\u3044\u7D50\u679C"],["AGGREGATE","\u96C6\u8A08\u306E\u6B63\u3057\u3044\u7D50\u679C"],["GROUP_BY","\u30B0\u30EB\u30FC\u30D7\u96C6\u8A08\u306E\u6B63\u3057\u3044\u7D50\u679C"],["DISTINCT","DISTINCT \u306E\u6B63\u3057\u3044\u7D50\u679C"]],r=n.some(([s])=>e.has(s)),i=e.has("LOCAL_ORDER")||e.has("WINDOW_ORDER"),o=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.size===1&&e.has("AGGREGATE")?"\u96C6\u8A08\u306E\u6B63\u3057\u3044\u7D50\u679C":e.size===1&&e.has("GROUP_BY")?"\u30B0\u30EB\u30FC\u30D7\u96C6\u8A08\u306E\u6B63\u3057\u3044\u7D50\u679C":e.size===1&&e.has("DISTINCT")?"DISTINCT \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";return`${e.size===1&&e.has("CROSS_JOIN")?"CROSS JOIN \u306E\u6B63\u3057\u3044\u7D50\u679C":e.has("DML")||e.has("VALIDATE")?o:r&&i?"\u30AF\u30A8\u30EA\u306E\u6B63\u3057\u3044\u7D50\u679C":r?n.find(([s])=>e.has(s))[1]:"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 Pc(e,t,n){let r=e.type==="SELECT"&&(n?.kind==="CANONICAL_REST_TOP_N"||n?.kind==="KORDER_NATIVE"||n?.kind==="KORDER_CURSOR")?Vt({...e,orderBy:[]}):Vt(e),i=r.size>0&&t.onLimitReached==="truncate";return{reasons:r,effectiveOptions:i?{...t,onLimitReached:"error"}:t,truncateWasDisabled:i}}function vR(e,t){throw e.reasons.size>0&&t instanceof Ge&&!t.completeInputWrapped?new Ge(CT(e.reasons)+(e.truncateWasDisabled?"onLimit=truncate\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002":"")+t.message,!0):t}async function Xu(e,t){try{return await t()}catch(n){vR(e,n)}}function ut(e){return e?.type==="BOOLEAN"&&e.value===!1}function PT(e){return e.from.appId===0&&e.from.cteName===_e}function as(e){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached SELECT planning.`);return e.type==="FIELD_REF"?!0:e.type==="ARITH"?as(e.left)||as(e.right):e.type==="STRING_FUNC"?Oc(e):!1}function OT(e){return e.type==="AGG_GROUP_KEY"?!0:e.type==="VARIABLE"?!1:e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:Pi(e)}function Pi(e){return e.type==="FIELD"?!0:e.type==="STRING_FUNC"?Oc(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?Pi(e.left)||Pi(e.right):e.type==="CASE_WHEN"?[...e.branches.map(n=>n.result),...e.elseResult?[e.elseResult]:[]].some(n=>n.type!=="ARRAY"&&(n.type==="FIELD_REF"||n.type==="ARITH"?as(n):n.type==="AGG_REF"||n.type==="AGG_ARITH"?!0:Pi(n))):!1}function Oc(e){return e.args.some(t=>OT(t))}function LT(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(as(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"STRFUNC_COL":if(Oc(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"SCALAR_VALUE_COL":if(Pi(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 _T(e,t){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.");LT(e);let n=gu([{}],e.columns,void 0,void 0,void 0,void 0,le(t)),{rows:r,columns:i}=Sn(n,e.columns,void 0,void 0,void 0,void 0,void 0,le(t)),o=ka(r,e.limit,e.offset);return{type:"SELECT",rows:o,columns:i,rowCount:o.length,warnings:[]}}async function DT(e,t,n,r,i,o){let a=i?.kind==="CANONICAL_REST_TOP_N"?xR(e):e,s=Co(a),l=i?.kind==="CANONICAL_LOCAL"?dn(e,e.from):s.fields,p=await _c(e,t,r),c=vc(e,p),u=e.columns.some(P=>P.type==="CASE_COL")?await zi(e,t,r,void 0,Cc(e)):void 0,d=n.maxRecords??1e4,f=new Set,R=n.onLimitReached??"error",E=n.fetchParallel??1,m=e.orderBy.length>0?i?.kind==="CANONICAL_REST_TOP_N"||i?.kind==="KORDER_NATIVE"||i?.kind==="KORDER_CURSOR":e.limit!==null&&e.limit<=500,g=e.limit===null?null:(e.offset??0)+e.limit,y=e.orderBy.length===0&&g!==null&&g<=d&&!we(e.where)?g:void 0,T;if((i?.kind==="KORDER_NATIVE"||i?.kind==="KORDER_CURSOR")&&e.limit===0)T=[];else if(i?.kind==="KORDER_CURSOR"){let P=await Xf({client:t,app:s.app,fields:s.fields,query:lu(e),offset:e.offset??0,limit:e.limit});T=P.records,P.cleanupWarning&&f.add(P.cleanupWarning)}else if(m)T=(await t.getRecords({app:s.app,query:s.query,fields:s.fields})).records;else{let P=e.where?j(e.where):"";T=await xe(t.getRecords,s.app,P,l,{parallel:E,maxRecords:d,stopAfter:y,onLimit:R,onTruncate:U=>{f.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${U} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${U} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`),Ac(t,e.from.appId)}})}let h=T.map(P=>Mt(P,null));m||(h=Ru(h,e.orderBy,o.optionOrders,o.sortKinds,o.semantics,mu(e.columns,void 0,c.row,u,le(n)),le(n)),h=ka(h,e.limit,e.offset));let{rows:I,columns:C}=Sn(h,e.columns,void 0,c.row,void 0,u,void 0,le(n)),v=await kc(e,I,C,t,r);return{type:"SELECT",rows:I,columns:v,rowCount:I.length,warnings:[...f]}}async function vT(e,t,n,r){let i=[],o=new Map,a=(p,c)=>{if(c.length===0)return;let u=o.get(p);u||(u=new Set,o.set(p,u));for(let d of c)u.add(d)},s=new Map,l=(p,c)=>{let u=s.get(p);u||(u=new Set,s.set(p,u));for(let d of c)u.add(d)};if(t==="SIMPLE"){let p=Co(e);a(p.app,p.fields),e.from.subtableCode||l(p.app,p.fields)}else{let p=[e.from,...e.joins.map(c=>c.table)].filter(c=>c.cteName===null);for(let c of p){let u=dn(e,c);a(c.appId,u),c.subtableCode||l(c.appId,u)}}for(let[p,c]of o.entries()){let u=[...c].filter(m=>!Hs(m));if(u.length===0)continue;let d=await ee(p,n,r);if(d.length===0)continue;let f=new Set(d.map(m=>m.code)),R=u.filter(m=>!f.has(m));if(R.length>0)throw new Error(`ArgumentError: unknown field code(s): ${R.join(", ")} (APP${p})`);let E=s.get(p);if(E){let m=d.filter(g=>g.inSubtable===!0&&E.has(g.code));for(let g of m){let y=g.subtableCode??"",T=y?`\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u300C${y}\u300D`:"\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB";i.push(`${g.code} \u306F${T}\u306E\u4E2D\u306E\u9805\u76EE\u3067\u3059\u3002APP${p} \u304B\u3089\u306F\u5024\u304C\u53D6\u308C\u305A\u3001\u30A8\u30E9\u30FC\u306B\u306A\u3089\u306A\u3044\u307E\u307E\u5E38\u306B\u7A7A\u306B\u306A\u308A\u307E\u3059\uFF08\u5217\u306F\u7A7A\u3001\u96C6\u8A08\u306F\u7A7A\u3001\`HAVING\` \u306A\u3069\u306E\u6761\u4EF6\u306F\u7A7A\u3068\u306E\u6BD4\u8F03\u306B\u306A\u308A\u307E\u3059\uFF09\u3002`+(y?`APP${p}$${y} \u304B\u3089\u9078\u3093\u3067\u304F\u3060\u3055\u3044\uFF08\u89AA\u306E\u30EC\u30B3\u30FC\u30C9 ID \u306F _pid\u3001\u89AA\u9805\u76EE\u306F _p.<\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9> \u306B\u306A\u308A\u307E\u3059\uFF09\u3002`:""))}}}return i}function JE(e){return e.cteName??`APP${e.appId}`}function MT(e){return e.alias?[e.alias]:e.cteName!==null?[e.cteName]:[`APP${e.appId}`,`app${e.appId}`]}function UT(e,t){return Hs(t)||e.validCodes.has(t)}function Ku(e,t){return e.table.cteName!==null?e.validCodes.has(t):UT(e,t)}function kT(e){let t=[],n=r=>{if(r!==null)switch(r.type){case"BINARY":(r.right.type==="SUBQUERY_IN_LIST"||r.right.type==="SCALAR_SUBQUERY")&&t.push(r.right.query);return;case"EXISTS":t.push(r.query);return;case"LOGICAL":n(r.left),n(r.right);return;case"NOT":case"GROUP":n(r.expr);return;case"NULL_CHECK":case"BOOLEAN":return}};n(e.where),n(e.having);for(let r of e.columns)if(r.type==="SCALAR_SUBQUERY_COL")t.push(r.query);else if(r.type==="CASE_COL")for(let i of r.expr.branches)n(i.condition);return t}async function xT(e,t,n,r){let i=[e.from,...e.joins.map(c=>c.table)],o=new Map,a=new Set;for(let c of i){let u=ce(c);if(u!==null){if(a.has(u))throw new Error(`ArgumentError: effective alias ${u} is used by multiple tables.`);a.add(u)}}for(let c of i){if(c.cteName===null||c.cteName===_e)continue;let u=n.get(c.cteName);if(!u)throw new Error(`ArgumentError: materialized source ${c.cteName} is not available.`);if(u.rows.length>0&&u.columns.length===0)throw new Error(`InternalError: materialized source ${c.cteName} has rows but no column schema.`);if(e.joins.length>0&&u.rows.length===0&&u.columns.length===0)throw new Error(`ArgumentError: column schema is unavailable for materialized JOIN source ${c.cteName}.`);o.set(c,u)}let s=new Map;await Promise.all(i.map(async c=>{let u=o.get(c);if(u){s.set(c,{table:c,label:JE(c),validCodes:new Set(u.columns),authoritative:!0,schemaUnavailable:u.rows.length===0&&u.columns.length===0});return}if(c.cteName===_e)return;let d=await ee(c.appId,t,r);s.set(c,{table:c,label:JE(c),validCodes:new Set(d.map(f=>f.code)),authoritative:d.length>0,schemaUnavailable:!1})}));let l=new Map;for(let c of s.values())for(let u of MT(c.table))l.set(u,c);for(let c of e.joins)if(c.type!=="CROSS")for(let u of[c.on.left,c.on.right]){if(!u.tableAlias)continue;let d=l.get(u.tableAlias);if(d&&d.table.cteName!==null&&!d.schemaUnavailable&&!Ku(d,u.field))throw new Error(`ArgumentError: JOIN key ${u.tableAlias}.${u.field} is not available in the materialized table.`)}let p=ad(e);for(let[c,u]of p.bySource){let d=s.get(c);if(!d||d.schemaUnavailable||!d.authoritative)continue;let f=[...u].filter(R=>!Ku(d,R));if(f.length>0)throw new Error(`ArgumentError: unknown field code(s): ${f.join(", ")} (${d.label})`)}for(let c of p.unqualified){let u=[...s.values()].filter(f=>!f.schemaUnavailable);if(u.some(f=>Ku(f,c))||[...s.values()].some(f=>f.schemaUnavailable)||u.some(f=>f.table.cteName===null&&!f.authoritative))continue;let d=u.map(f=>f.label).join(", ");throw new Error(`ArgumentError: unknown field code(s): ${c} (${d})`)}}async function Xa(e,t,n,r,i=new Set){if(!i.has(e)){if(i.add(e),e.type==="UNION"){await Xa(e.left,t,n,r,i),await Xa(e.right,t,n,r,i);return}await xT(e,t,n,r);for(let o of kT(e))await Xa(o,t,n,r,i)}}function MR(e){return e.where===null||e.from.subtableCode||e.from.cteName!==null?null:e.joins.length===0?Fr(e.where,{tableAlias:e.from.alias??void 0,allowUnqualifiedFields:!0}):e.from.alias?Fr(e.where,{tableAlias:e.from.alias}):null}function Oi(e){return e.type==="BINARY"?e.right.type==="STRING"?e.right.value.startsWith("@"):e.right.type==="IN_LIST"?e.right.values.some(t=>t.type==="STRING"&&t.value.startsWith("@")):!1:e.type==="LOGICAL"?Oi(e.left)||Oi(e.right):e.type==="GROUP"||e.type==="NOT"?Oi(e.expr):!1}var Lc=new WeakMap;function ps(e,t){if(e.joins.length===0||e.where===null||e.joins.some(f=>f.type!=="INNER"&&f.type!=="CROSS"))return null;let n=[e.from,...e.joins.map(f=>f.table)];if(n.some(f=>f.alias===null||f.cteName!==null||!!f.subtableCode))return null;let r=n.map(f=>({alias:f.alias,appId:f.appId,sourceKind:"APP",fieldTypes:new Map([...t.fieldTypesByApp.get(f.appId)??new Map,["$id","__ID__"]]),fieldOptions:t.fieldOptionsByApp.get(f.appId)})),i=Hf(e.where,r),o=Yf(i,r),a=new Map,s=new Map;for(let[f,R]of o.fetchQueriesByAlias)s.set(f,R);for(let f of o.items)s.has(f.targetAlias)||s.set(f.targetAlias,ur(f,r)),a.set(f.targetAlias,f.predicate);let l=e.from.alias,p=a.get(l)??null,c=new Map(a);c.delete(l);let u=new Map(o.items.map(f=>[f.targetAlias,f.relation])),d=u.get(l)??null;return u.delete(l),{joinPlan:o,queriesByAlias:s,mainCondition:p,mainRelation:d,joinConditions:c,joinRelations:u,appliedKlikes:o.appliedKlikes,allKlikes:o.allKlikes}}async function ds(e,t,n){let r=new Map,i=(s,l)=>{if(l===null)return;let p=r.get(s);p?p.push(l):r.set(s,[l])};if(i(e.from.appId,MR(e)),e.joins.length>0&&e.where!==null&&e.joins.every(s=>s.type==="INNER"||s.type==="CROSS")&&[e.from,...e.joins.map(s=>s.table)].every(s=>s.alias!==null&&s.cteName===null&&!s.subtableCode)){i(e.from.appId,e.where);for(let s of e.joins)i(s.table.appId,e.where)}if(e.where!==null)for(let s of e.joins){if(!s.table.alias||s.table.subtableCode||s.table.cteName!==null)continue;let l=Fr(e.where,{tableAlias:s.table.alias});i(s.table.appId,l)}let a=await Promise.all([...r.entries()].map(async([s,l])=>{let[p,c]=await Promise.all([ke(s,t,n),uI(s,t,n)]),u=FT(l).filter(d=>p.get(d)==="STATUS");if(u.length>0){let d=await Rs(s,t,n);if(d.enable&&d.states&&d.states.length>0){let f=new Set(d.states.map(R=>R.name));for(let R of u)c.set(R,f)}}return[s,p,c]}));return{fieldTypesByApp:new Map(a.map(([s,l])=>[s,l])),fieldOptionsByApp:new Map(a.map(([s,,l])=>[s,l]))}}function FT(e){let t=new Set,n=r=>{if(r.type==="BINARY"){r.left.type==="FIELD"&&t.add(r.left.field);return}if(r.type==="LOGICAL"){n(r.left),n(r.right);return}(r.type==="GROUP"||r.type==="NOT")&&n(r.expr)};for(let r of e)n(r);return[...t]}function kt(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"&&ss(e.left.expr,t),e.right.type==="CASE_VALUE"&&ss(e.right.expr,t);return;case"LOGICAL":kt(e.left,t),kt(e.right,t);return;case"NOT":case"GROUP":kt(e.expr,t);return;case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}function ss(e,t){for(let n of e.branches)kt(n.condition,t)}function GT(e){let t=[];kt(e.where,t),kt(e.having,t);for(let n of e.columns)n.type==="CASE_COL"&&ss(n.expr,t);return t}function ce(e){return e.alias??e.cteName}function UR(e,t){return[e.from,...e.joins.map(n=>n.table)].find(n=>ce(n)===t)}function fs(e){return[e.from,...e.joins.map(t=>t.table)].filter(t=>t.cteName===null)}async function _c(e,t,n){let r=GT(e);if(r.length===0)return new Map;let i=new Set,o=fs(e);for(let s of r){if(s.tableAlias!==null){if(s.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){i.add(e.from.appId);continue}let l=UR(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 ke(s,t,n)]));return new Map(a)}function Ue(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 Dc(e,t,n){e!=="MIN"&&e!=="MAX"&&e!=="MODE"||t.type==="WILDCARD"||wn(t,n)}function wn(e,t){if(e.type==="FIELD_REF"){t.push(Ue(e.field));return}if(e.type==="FIELD"){t.push(e);return}if(e.type==="ARITH"){wn(e.left,t),wn(e.right,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){wn(e.left,t),wn(e.right,t);return}if(e.type==="STRING_FUNC"){for(let n of e.args)n.type==="AGG_GROUP_KEY"?t.push({type:"FIELD",tableAlias:n.tableAlias??null,field:n.field}):n.type!=="AGG_REF"&&n.type!=="AGG_ARITH"&&n.type!=="VARIABLE"&&wn(n,t);return}if(e.type==="CASE_WHEN")for(let n of[...e.branches.map(r=>r.result),...e.elseResult?[e.elseResult]:[]])n.type==="AGG_REF"||n.type==="AGG_ARITH"?mr(n,t):n.type!=="ARRAY"&&wn(n,t)}function mr(e,t){if(e.type==="AGG_REF"){Dc(e.func,e.arg,t);return}e.type==="AGG_ARITH"&&(mr(e.left,t),mr(e.right,t)),e.type==="AGG_GROUP_KEY"&&t.push({type:"FIELD",tableAlias:e.tableAlias??null,field:e.field})}function Qu(e,t){for(let n of e.args)if(n.type==="AGG_REF"||n.type==="AGG_ARITH")mr(n,t);else if(n.type==="AGG_GROUP_KEY")t.push({type:"FIELD",tableAlias:n.tableAlias??null,field:n.field});else{if(n.type==="VARIABLE")continue;Li(n,t)}}function Li(e,t){if(e.type==="STRING_FUNC"){Qu(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){Li(e.left,t),Li(e.right,t);return}if(e.type==="CASE_WHEN"){let n=[...e.branches.map(r=>r.result),...e.elseResult?[e.elseResult]:[]];for(let r of n)r.type==="STRING_FUNC"?Qu(r,t):r.type==="AGG_REF"||r.type==="AGG_ARITH"?mr(r,t):r.type!=="ARRAY"&&r.type!=="FIELD_REF"&&r.type!=="ARITH"&&Li(r,t)}}function KT(e,t){let n=r=>{if(r===null||typeof r!="object")return;if(Array.isArray(r)){r.forEach(n);return}let i=r;if(i.type==="AGG_REF"){let o=i;Dc(o.func,o.arg,t);return}i.type==="SELECT"||i.type==="SCALAR_SUBQUERY"||Object.values(i).forEach(n)};n(e)}function $T(e){let t=[];for(let n of e)n.type==="AGGREGATE"?Dc(n.func,n.arg,t):n.type==="ARITH_AGG_COL"?mr(n.expr,t):n.type==="STRFUNC_COL"?Qu(n.expr,t):n.type==="SCALAR_VALUE_COL"?Li(n.expr,t):n.type==="CASE_COL"&&KT(n.expr,t);return t}var BT=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DROP_DOWN","RADIO_BUTTON","STATUS","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME"]);function VT(e){return e.sortKind!==void 0?e.sortKind:e.fieldType==="NUMBER"||e.fieldType==="RECORD_NUMBER"?"number":BT.has(e.fieldType)?"string":void 0}async function kR(e,t,n,r){let i=$T(e.columns);if(i.length===0)return;let o=new Set,a=fs(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 R=UR(e,f.tableAlias);R&&R.cteName===null&&o.add(R.appId)}else if(e.joins.length===0)e.from.cteName===null&&o.add(e.from.appId);else for(let R of a)o.add(R.appId);let s=new Map(await Promise.all([...o].map(async f=>{let R=await ee(f,t,n);return[f,new Map(R.map(E=>[E.code,E]))]}))),l=new Map,p=new Set(i.map(f=>f.field));await Promise.all([...s].map(async([f,R])=>{if(![...p].some(m=>R.get(m)?.fieldType==="STATUS"))return;let E=await Gc(f,t,n);E&&l.set(f,E)}));let c=[e.from,...e.joins.map(f=>f.table)],u=(f,R)=>{let E=f.semantics??te(f);return f.fieldType==="STATUS"&&l.has(R)?{...E,optionOrder:l.get(R)}:E};return f=>{let R;if(f.tableAlias!==null)if(f.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null)R=s.get(e.from.appId)?.get(f.field);else{let m=c.find(g=>ce(g)===f.tableAlias);if(!m)return;if(m.cteName!==null)return r?.get(m.cteName)?.columnMeta?.get(f.field)?.semantics??B("string");R=s.get(m.appId)?.get(Ee(m,f.field))}else if(e.joins.length===0){if(e.from.cteName!==null)return r?.get(e.from.cteName)?.columnMeta?.get(f.field)?.semantics??B("string");R=s.get(e.from.appId)?.get(Ee(e.from,f.field))}else{let m=c.flatMap(g=>{if(g.cteName!==null){let T=r?.get(g.cteName);return T?.columns.includes(f.field)?[T.columnMeta?.get(f.field)?.semantics??B("string")]:[]}let y=s.get(g.appId)?.get(Ee(g,f.field));return y?[u(y,g.appId)]:[]});return m.length!==1?void 0:m[0]}if(!R)return;let E=f.tableAlias!==null?c.find(m=>ce(m)===f.tableAlias):e.joins.length===0?e.from:void 0;return u(R,E?.appId??e.from.appId)}}function Ee(e,t){return e.subtableCode&&t.startsWith("_p.")?t.slice(3):t}function Qa(e,t){if(e.subtableCode){if(t==="_rid")return"SINGLE_LINE_TEXT";if(t==="_idx"||t==="_pid")return"NUMBER"}}function Me(e,t){let n=e.semantics??te(e);return{sortKind:VT(e),fieldType:e.fieldType,semantics:t===void 0?n:Xn(n,t,e.code)}}function xR(e){return e.orderBy.some(n=>n.key.type==="FIELD_NAME"&&n.key.name==="$id")?e:{...e,orderBy:[...e.orderBy,{key:{type:"FIELD_NAME",name:"$id"},direction:"ASC"}]}}function Q(e){return{sortKind:e,semantics:B(e)}}function qe(){return{semantics:B("string","KSQL_UNKNOWN")}}function FR(e="KSQL_ARRAY"){return{semantics:{fieldType:e,compareMode:"unsupported",inSubtable:!1,requiresCollectionOperators:!1}}}function Je(e){if(e==="$id")return{sortKind:"number",fieldType:"__ID__",semantics:te({fieldType:"__ID__"})};if(e==="_rid")return Q("string");if(e==="_pid"||e==="_idx"||e==="$revision")return Q("number")}var WT=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function _n(e){if(e.func==="CAST"){let t=e.args[1];return t?.type==="STRING"&&t.value==="NUMBER"?Q("number"):Q("string")}return WT.has(e.func)?Q("number"):Q("string")}function gr(e,t){return e.type==="STRING"?Q("string"):e.type==="ARRAY"?FR():e.type==="AGG_REF"?e.func==="MIN"||e.func==="MAX"||e.func==="MODE"?e.arg.type==="WILDCARD"?qe():Dn(e.arg,t):e.func==="GROUP_CONCAT"?Q("string"):Q("number"):e.type==="AGG_ARITH"||e.type==="NUMBER"||e.type==="ARITH"||e.type==="SCALAR_ARITH"?Q("number"):e.type==="STRING_FUNC"?_n(e):e.type==="FIELD_REF"?t(Ue(e.field))??qe():e.type==="FIELD"?t(e)??qe():qe()}function Es(e){if(e.length===0)return qe();let t=e[0],n=r=>{if(!r)return;let{source:i,...o}=r;return o};return e.every(r=>r.sortKind===t.sortKind&&r.fieldType===t.fieldType&&Lo(n(r.semantics),n(t.semantics)))?e.every(i=>Lo(i.semantics,t.semantics))?t:{...t,semantics:n(t.semantics)}:e.some(r=>r.semantics?.compareMode==="unsupported")?FR("KSQL_MIXED_UNSUPPORTED"):qe()}function Dn(e,t){if(e.type==="FIELD_REF")return t(Ue(e.field))??qe();if(e.type==="FIELD")return t(e)??qe();if(e.type==="NUMBER"||e.type==="ARITH"||e.type==="SCALAR_ARITH")return Q("number");if(e.type==="STRING"||e.type==="CONCAT_OP"||e.type==="VARIABLE")return Q("string");if(e.type==="STRING_FUNC")return _n(e);let n=e.branches.map(r=>gr(r.result,t));return e.elseResult&&n.push(gr(e.elseResult,t)),Es(n)}function GR(e,t){return e.windowKind==="VALUE"?Dn(e.arg,t):e.windowKind==="AGGREGATE"?e.aggFunc==="COUNT"||e.aggFunc==="SUM"||e.aggFunc==="AVG"?Q("number"):e.arg.type==="WILDCARD"?qe():Dn(e.arg,t):Q("number")}function Za(e,t){return{...e??{},displayName:t}}function HT(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")||t.type==="WINDOW_COL"&&(t.windowKind==="VALUE"||t.windowKind==="AGGREGATE"&&(t.aggFunc==="MIN"||t.aggFunc==="MAX")))}async function Gi(e,t,n,r,i,o=!1){let a=new Map;HT(e)&&await Promise.all(fs(e).map(async E=>{if(a.has(E.appId))return;let m=await ee(E.appId,n,r);a.set(E.appId,new Map(m.map(g=>[g.code,g])))}));let s=[e.from,...e.joins.map(E=>E.table)],l=o&&i===void 0&&s.every(E=>E.cteName===null),p=E=>{if(E.tableAlias!==null){if(E.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){let T=a.get(e.from.appId)?.get(E.field);return T?Me(T,e.from.appId):void 0}let g=s.find(T=>ce(T)===E.tableAlias);if(!g)return;if(g.cteName!==null)return i?.get(g.cteName)?.columnMeta?.get(E.field);let y=a.get(g.appId)?.get(Ee(g,E.field));return y?Me(y,g.appId):Je(E.field)}if(e.joins.length===0){if(e.from.cteName!==null)return i?.get(e.from.cteName)?.columnMeta?.get(E.field);let g=a.get(e.from.appId)?.get(Ee(e.from,E.field));return g?Me(g,e.from.appId):Je(E.field)}let m=s.flatMap(g=>{if(g.cteName!==null){let h=i?.get(g.cteName);return h?.columns.includes(E.field)?[h.columnMeta?.get(E.field)]:[]}let y=a.get(g.appId)?.get(Ee(g,E.field)),T=y?Me(y,g.appId):Je(E.field);return T?[T]:[]});return m.length===1?m[0]:void 0},c=E=>{if(!l)return;let m=s.filter(g=>{if(E.tableAlias!==null&&ce(g)!==E.tableAlias)return!1;let y=Ee(g,E.field);return a.get(g.appId)?.has(y)===!0||Je(E.field)!==void 0});return m.length===1?m[0].appId:void 0},u=(E,m)=>{let g=c(m);return E&&g!==void 0?{...E,publicSourceApp:g}:E},d=new Map,f=e.columns.some(E=>E.type==="WILDCARD"||E.type==="PARENT_WILDCARD");if(e.columns.length===1&&(e.columns[0].type==="WILDCARD"||e.columns[0].type==="PARENT_WILDCARD")){for(let E of t){let m=Ue(E),g=u(p(m),m);d.set(E,Za(g,g?.displayName??E))}return d}if(f)for(let E of t){let m=Ue(E),g=u(p(m),m);d.set(E,Za(g,g?.displayName??E))}return e.columns.filter(E=>E.type!=="WILDCARD"&&E.type!=="PARENT_WILDCARD").forEach((E,m)=>{let g=f?"alias"in E&&E.alias?E.alias:void 0:t[m];if(!g)return;let y;if(E.type==="FIELD"){let T=Ue(E.field);y=u(p(T),T)}else if(E.type==="AGGREGATE")E.func==="GROUP_CONCAT"?y=Q("string"):E.func==="COUNT"||E.func==="SUM"||E.func==="AVG"||E.func==="STDDEV_POP"||E.func==="STDDEV_SAMP"||E.func==="VAR_POP"||E.func==="VAR_SAMP"||E.func==="MEDIAN"?y=Q("number"):(E.func==="MIN"||E.func==="MAX"||E.func==="MODE")&&E.arg.type!=="WILDCARD"&&(y=Dn(E.arg,p));else if(E.type==="ARITH_AGG_COL"||E.type==="ARITH_COL")y=Q("number");else if(E.type==="GROUPING_COL")y=Q("number");else if(E.type==="LITERAL_COL")y=Q("string");else if(E.type==="SCALAR_VALUE_COL"){let T=E.expr;T.type==="STRING_FUNC"?y=_n(T):T.type==="NUMBER"||T.type==="SCALAR_ARITH"?y=Q("number"):T.type==="FIELD"?y=p(T):y=Q("string")}else if(E.type==="STRFUNC_COL")y=_n(E.expr);else if(E.type==="WINDOW_COL")y=GR(E,p);else if(E.type==="CASE_COL"){let T=E.expr.branches.map(h=>gr(h.result,p));E.expr.elseResult&&T.push(gr(E.expr.elseResult,p)),y=Es(T)}else E.type==="SCALAR_SUBQUERY_COL"&&(y=qe());d.set(g,Za(y,E.aliasDisplay??g))}),d}function YT(e,t){let n=ue.get(e),r=ue.get(t),i=new Map;return e.columns.forEach((o,a)=>{let s=n?.get(o),l=t.columns[a],p=l===void 0?void 0:r?.get(l),c;if(s&&p){let u=Es([s,p]),d=s.publicSourceApp===p.publicSourceApp?s.publicSourceApp:void 0,{publicSourceApp:f,...R}=u;c=d===void 0?R:{...R,publicSourceApp:d}}else c=qe();i.set(o,Za(c,s?.displayName??o))}),i}function vc(e,t){let n=[e.from,...e.joins.map(s=>s.table)],r=n.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=n.find(c=>ce(c)===s.tableAlias);return!p||p.cteName!==null?void 0:Qa(p,s.field)??t.get(p.appId)?.get(Ee(p,s.field))}if(e.joins.length===0)return e.from.cteName!==null?void 0:Qa(e.from,s.field)??t.get(e.from.appId)?.get(Ee(e.from,s.field));if(n.some(p=>p.cteName!==null))return;let l=r.flatMap(p=>{let c=Qa(p,s.field)??t.get(p.appId)?.get(Ee(p,s.field));return c?[c]:[]});return l.length===1?l[0]:void 0};return{row:o,having:s=>{if(!(s.tableAlias===null&&i.has(s.field)))return o(s)}}}var KR=new WeakSet,Mc=new WeakMap;function Zu(e){return KR.add(e),e}function jT(e,t){return Mc.set(e,t),t}function $R(e,t){if(t.capability!=="EXACT_PUSHDOWN")return!1;let n=e.columns.filter(r=>r.type==="AGGREGATE"&&r.func==="COUNT"&&!r.distinct&&r.arg.type==="WILDCARD");return n.length!==1||e.columns.some(r=>r!==n[0]&&r.type!=="LITERAL_COL")?!1:!e.distinct&&Z(e).type==="NONE"&&e.having===null&&e.joins.length===0&&e.from.cteName===null&&!e.from.subtableCode&&e.limit===null&&e.offset===null}function zT(e){return typeof e=="string"&&/^(?:0|[1-9]\d*)$/.test(e)}async function qT(e,t){let n=e.columns.find(s=>s.type==="AGGREGATE");if(n?.type!=="AGGREGATE")return null;let r=e.where===null?"":j(e.where),i=await t.getRecords({app:e.from.appId,query:`${r}${r?" ":""}limit 1`,fields:["$id"],totalCount:!0});if(i.searchAborted)throw new Ln;if(!zT(i.totalCount))return null;let o=n.alias??"COUNT(*)",a=Sn([{[o]:i.totalCount}],e.columns);return{type:"SELECT",rows:a.rows,columns:a.columns,rowCount:1,warnings:[]}}async function JT(e,t,n,r,i,o=!0,a,s,l){let p=Mc.get(e);if(KR.has(e)&&p!==void 0&&$R(e,p)){let L=await qT(e,t);if(L!==null)return L}let c=n.maxRecords??1e4,u=new Set,d=n.fetchParallel??1;await Promise.all([Hi(e.where,t,n,r,u,i),Hi(e.having,t,n,r,u,i)]);let[f,R,E]=await Promise.all([ds(e,t,r),_c(e,t,r),kR(e,t,r,i)]),m=vc(e,R),g=await zi(e,t,r,i,ht(e.having)||Cc(e)),y=LR(e,g),T=Lc.get(e);if(T&&!cr(T.joinPlan))throw new Error("InternalError: JOIN server-function fetch binding changed before records API.");let h=T??ps(e,f)??fn(e,f);ll(h);let I="joinPlan"in h?h:null,C=I&&cr(I.joinPlan)?I:null,v=t,P=h.mainCondition,U=h.joinConditions;if(s&&o)throw new Error("internal error: relative-date prefilter must disable original WHERE pushdown.");let M=s?s.prefilterWhere:C?null:P,N=C?.queriesByAlias.get(e.from.alias)??"",_=await um(e.columns,t,n,r,u,i),b=ut(e.where),D=b?Promise.resolve([]):_i(e,e.from,v,c,d,!0,n.onLimitReached??"error",u,M,C?!1:o,l,N),A=[],w=[];for(let L of e.joins){if(b){A.push({join:L,promise:Promise.resolve([])});continue}let H=L.table.alias?C?.queriesByAlias.get(L.table.alias)??"":"",ne=C?null:L.table.alias?U.get(L.table.alias)??null:null;ne!==null||H!==""?A.push({join:L,promise:_i(e,L.table,v,c,d,!1,n.onLimitReached??"error",u,ne,!0,l,H)}):w.push(L)}let x=a?Promise.resolve(a):$i(e,t,r,i);x.catch(()=>{});let O=await D,F=new Map;F.set(e.from.alias,O);for(let{join:L,promise:H}of A)F.set(L.table.alias,await H);await Promise.all(w.map(async L=>{let ne=await qR(e,L,F,v,c,d,n.onLimitReached??"error",u,r,i,null,l,"")??await _i(e,L.table,v,c,d,!1,n.onLimitReached??"error",u,null,!0,l,"");F.set(L.table.alias,ne)}));let{optionOrders:V,sortKinds:K,semantics:k}=await x,{rows:G,columns:Y}=Au({tables:F,stmt:e,scalarCache:_,optionOrders:V,sortKinds:K,orderSemantics:k,fieldTypeResolver:m.row,fieldSemanticsResolver:g,havingFieldTypeResolver:m.having,havingFieldSemanticsResolver:y,aggregateSortKindResolver:E,appliedKlikes:s?.appliedKlikes??h.appliedKlikes,...s?{residualWhere:s.residualWhere}:C?{residualWhere:C.joinPlan.residualWhere}:{},resolvedGroupingSpec:xi.get(e),plainGroupByPlan:l,warnings:u,evaluationContext:le(n)}),$=await kc(e,G,Y,t,r);return{type:"SELECT",rows:G,columns:$,rowCount:G.length,warnings:[...u]}}function XT(e,t){if(e.length!==t.length)throw new Error(`ArgumentError: UNION \u306E\u5DE6\u53F3\u3067\u5217\u6570\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093\uFF08\u5DE6 ${e.length} \u5217 / \u53F3 ${t.length} \u5217\uFF09\u3002
15
+ UNION \u306F\u5217\u3092\u4F4D\u7F6E\u3067\u5BFE\u5FDC\u3055\u305B\u308B\u305F\u3081\u3001\u4E21\u8FBA\u306E\u5217\u6570\u3092\u63C3\u3048\u3066\u304F\u3060\u3055\u3044`)}function ec(e,t,n){XT(t,e.columns);let r=e.rows.map(a=>{let s={};return t.forEach((l,p)=>{s[l]=a[e.columns[p]??l]??""}),s}),i={...e,rows:r,columns:[...t],rowCount:r.length},o=ue.get(e);if(n||o){let a=new Map;t.forEach((s,l)=>{let p=e.columns[l],c=n?.get(s)??(p===void 0?void 0:o?.get(p));c&&a.set(s,{...c,displayName:s})}),ue.set(i,a)}return i}function BR(e,t,n,r){let i=ec(t,e.columns),o=[...e.rows,...i.rows],a=n?o:QT(o,e.columns),s=[...new Set([...e.warnings??[],...t.warnings??[]])],l={type:"SELECT",rows:a,columns:[...e.columns],rowCount:a.length,warnings:s};return r&&ue.set(l,YT(e,t)),l}async function VR(e,t,n,r,i=!1,o=!1){let a=Pc(e,n,null);return Xu(a,async()=>{let s=a.effectiveOptions,[l,p]=await Promise.all([e.left.type==="UNION"?VR(e.left,t,s,r,i,o):xt(Zu(e.left),t,s,r,void 0,i,o,"DERIVED"),xt(Zu(e.right),t,s,r,void 0,i,o,"DERIVED")]);return BR(l,p,e.all,i)})}function QT(e,t){let n=new Set;return e.filter(r=>{let i=JSON.stringify(t.map(o=>r[o]??""));return n.has(i)?!1:(n.add(i),!0)})}function WR(e){return"alias"in e&&typeof e.alias=="string"?e.alias:e.type==="FIELD"?e.field:null}function ZT(e){let t=e.recursiveSpec;if(e.columnAliases)return[...e.columnAliases];let n=t.seed.columns.map(WR);if(n.some(i=>i===null))throw new Error(`PlanningError: \u518D\u5E30 CTE\u300C${e.name}\u300D\u3067\u5217\u540D\u30EA\u30B9\u30C8\u3092\u7701\u7565\u3059\u308B\u5834\u5408\u3001seed \u306E\u5F0F\u306B\u306F AS \u5225\u540D\u304C\u5FC5\u8981\u3067\u3059`);let r=n;if(new Set(r).size!==r.length)throw new Error(`PlanningError: \u518D\u5E30 CTE\u300C${e.name}\u300D\u3067\u5217\u540D\u30EA\u30B9\u30C8\u3092\u7701\u7565\u3059\u308B\u5834\u5408\u3001seed \u306E\u51FA\u529B\u5217\u540D\u3092\u91CD\u8907\u3055\u305B\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093`);return r}function XE(e){return e.columns.map((t,n)=>WR(t)??`__b53_column_${n}`)}function QE(e,t){let n=e.semantics,r=t.semantics;if(!n||!r||n.compareMode==="unsupported"||r.compareMode==="unsupported"||n.compareMode!==r.compareMode||e.sortKind&&t.sortKind&&e.sortKind!==t.sortKind||n.inSubtable!==r.inSubtable||n.requiresCollectionOperators!==r.requiresCollectionOperators)return!1;let i=o=>o===void 0||o.startsWith("KSQL_");return!(!i(e.fieldType)&&!i(t.fieldType)&&e.fieldType!==t.fieldType)}async function HR(e,t,n,r){let i=[e.from,...e.joins.map(s=>s.table)],o=new Map;await Promise.all(i.filter(s=>s.cteName===null).map(async s=>{if(o.has(s.appId))return;let l=await ee(s.appId,t,n);o.set(s.appId,new Map(l.map(p=>[p.code,p])))}));let a=(s,l)=>{if(s.cteName!==null)return r.get(s.cteName)?.columnMeta?.get(l);let p=o.get(s.appId)?.get(Ee(s,l));return p?Me(p,s.appId):Je(l)};return s=>{if(s.tableAlias!==null){let p=i.find(c=>ce(c)===s.tableAlias);return p?a(p,s.field):void 0}if(i.length===1)return a(i[0],s.field);let l=i.map(p=>a(p,s.field)).filter(p=>p!==void 0);return l.length===1?l[0]:void 0}}function Ni(e,t,n=!1){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(i=>Ni(i,t,n));return}let r=e;if(r.type==="FIELD"){let i=typeof r.tableAlias=="string"||r.tableAlias===null?r:Ue(String(r.field??"")),o=t(i);if(!o?.semantics||o.semantics.compareMode==="unsupported")throw new Error(`PlanningError: \u518D\u5E30 CTE \u306E\u5C04\u5F71\u5217 ${i.tableAlias?`${i.tableAlias}.`:""}${i.field} \u306E\u578B\u3092\u8A3C\u660E\u3067\u304D\u307E\u305B\u3093`);if(n&&o.semantics.compareMode!=="number"&&o.semantics.compareMode!=="recordNumber")throw new Error(`PlanningError: \u518D\u5E30 CTE \u306E\u6570\u5024\u6F14\u7B97\u306B\u6570\u5024\u3067\u306A\u3044\u5217 ${i.field} \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`);return}if(r.type==="FIELD_REF"&&typeof r.field=="string"){let i=Ue(r.field),o=t(i);if(!o?.semantics||o.semantics.compareMode==="unsupported")throw new Error(`PlanningError: \u518D\u5E30 CTE \u306E\u5C04\u5F71\u5217 ${r.field} \u306E\u578B\u3092\u8A3C\u660E\u3067\u304D\u307E\u305B\u3093`);if(n&&o.semantics.compareMode!=="number"&&o.semantics.compareMode!=="recordNumber")throw new Error(`PlanningError: \u518D\u5E30 CTE \u306E\u6570\u5024\u6F14\u7B97\u306B\u6570\u5024\u3067\u306A\u3044\u5217 ${r.field} \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`);return}if(r.type==="ARITH"||r.type==="SCALAR_ARITH"){Ni(r.left,t,!0),Ni(r.right,t,!0);return}for(let i of Object.values(r))Ni(i,t,n)}async function ZE(e,t,n,r,i){let o=await HR(e,n,r,i);e.columns.forEach(p=>Ni(p,o));let a=await Gi(e,XE(e),n,r,i),s=XE(e),l=new Map;return t.forEach((p,c)=>{let u=a.get(s[c]);if(!u?.semantics||u.semantics.fieldType==="KSQL_UNKNOWN"||u.semantics.compareMode==="unsupported")throw new Error(`PlanningError: \u518D\u5E30 CTE \u306E\u7B2C ${c+1} \u5217\u306E\u578B\u3092\u9759\u7684\u306B\u8A3C\u660E\u3067\u304D\u307E\u305B\u3093`);l.set(p,{...u,displayName:p})}),l}function an(e){return`${e.appId}:${e.subtableCode??""}`}function YR(...e){let t=new Map;for(let n of e)for(let r of[n.from,...n.joins.map(i=>i.table)])r.cteName===null&&!t.has(an(r))&&t.set(an(r),r);return[...t.values()]}function eI(e){let t=e.indexOf(".");return t<0?{alias:null,field:e}:{alias:e.slice(0,t),field:e.slice(t+1)}}function tI(e){let t=new Map,n=r=>{for(let i of r)t.set(an(i),null)};for(let r of e){let i=fs(r);for(let s of i){let l=an(s);t.has(l)||t.set(l,new Set)}let o=(s,l)=>{let p=s===null?i.length===1?i[0]:void 0:[r.from,...r.joins.map(u=>u.table)].find(u=>ce(u)?.toLowerCase()===s.toLowerCase());if(!p){n(i);return}if(p.cteName!==null)return;let c=t.get(an(p));c!==null&&c?.add(l)},a=s=>{if(s==null||typeof s!="object")return;if(Array.isArray(s)){s.forEach(a);return}let l=s;if(l.type==="WILDCARD"||l.type==="PARENT_WILDCARD"){n(i);return}if((l.type==="FIELD"||l.type==="FIELD_REF")&&typeof l.field=="string"){let p=eI(l.field),c=typeof l.tableAlias=="string"?l.tableAlias:l.tableAlias===null?null:p.alias;o(c,p.field);return}if((l.type==="FIELD_NAME"||l.type==="GROUPING_REF")&&typeof l.name=="string"){n(i);return}Object.values(l).forEach(a)};a(r.columns),a(r.where),a(Z(r)),a(r.having),a(r.orderBy);for(let s of r.joins){if(s.on===null){n(i);continue}o(s.on.left.tableAlias,s.on.left.field),o(s.on.right.tableAlias,s.on.right.field)}}return t}function nI(e,t){return{type:"SELECT",distinct:!1,columns:t!==null&&t.size>0?[...t].map(r=>({type:"FIELD",field:r,alias:null})):[{type:"WILDCARD"}],from:{...e,alias:null},joins:[],where:null,groupBy:[],having:null,orderMode:"CANONICAL",orderBy:[],limit:null,offset:null}}async function rI(e,t,n,r){let i=tI(e),o=await Promise.all(YR(...e).map(async(a,s)=>{let l=await xt(nI(a,i.get(an(a))??null),t,{...n,onLimitReached:"error"},r,void 0,!0,!1,"DERIVED"),p=`__b53_source_${s}`;return[an(a),{name:p,warnings:l.warnings??[],table:{rows:l.rows,columns:l.columns,columnMeta:ue.get(l)}}]}));return new Map(o)}function eR(e,t){let n=r=>{if(r.cteName!==null)return r;let i=t.get(an(r));if(!i)throw new Error("PlanningError: \u518D\u5E30 CTE \u306E\u5B8C\u5168\u5B9F\u4F53\u5316 source \u3092\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093");return{appId:0,alias:r.alias,cteName:i.name,subtableCode:null}};return{...e,from:n(e.from),joins:e.joins.map(r=>({...r,table:n(r.table)}))}}function tR(e,t,n){return e.cteName===null?void 0:n.get(e.cteName)?.columnMeta?.get(t)}function $u(e,t){if(t.compareMode!=="number"&&t.compareMode!=="recordNumber")return e;let n=Ae(e);return n===null?`invalid:${e}`:`${n.sign}:${n.coefficient}:${n.scale}`}function nR(e,t){let n=t.joins[0];if(!n||n.type!=="INNER")throw new Error("PlanningError: \u518D\u5E30\u9805\u306E INNER JOIN \u3092\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093");let r=t.from.cteName===e?t.from:n.table,i=r===t.from?n.table:t.from,o=ce(r),a=n.on.left.tableAlias===o,s=n.on.right.tableAlias===o;if(a===s)throw new Error("PlanningError: \u518D\u5E30\u9805\u306E\u81EA\u5DF1\u53C2\u7167 JOIN \u30AD\u30FC\u3092\u4E00\u610F\u306B\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093");return{self:r,source:i,selfField:a?n.on.left.field:n.on.right.field,sourceField:a?n.on.right.field:n.on.left.field}}async function iI(e,t,n,r,i){let o=e.recursiveSpec,a=ZT(e),s=await ZE(o.seed,a,t,i,r),l=new Map(r);l.set(e.name,{rows:[],columns:a,columnMeta:s});let p=await ZE(o.recursiveTerm,a,t,i,l);a.forEach((K,k)=>{let G=s.get(K),Y=p.get(K);if(!G||!Y||!QE(G,Y))throw new Error(`PlanningError: \u518D\u5E30 CTE\u300C${e.name}\u300D\u306E\u7B2C ${k+1} \u5217\u3067 seed \u3068\u518D\u5E30\u9805\u306E\u578B\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093`)});let c=nR(e.name,o.recursiveTerm),u=await HR(o.recursiveTerm,t,i,l),d=u({type:"FIELD",tableAlias:ce(c.self),field:c.selfField}),f=u({type:"FIELD",tableAlias:ce(c.source),field:c.sourceField});if(!d||!f||!QE(d,f))throw new Error(`PlanningError: \u518D\u5E30 CTE\u300C${e.name}\u300D\u306E\u81EA\u5DF1\u53C2\u7167 JOIN \u30AD\u30FC\u306E\u578B\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093`);let R=await rI([o.seed,o.recursiveTerm],t,n,i),E=new Map(r);for(let K of R.values())E.set(K.name,K.table);let m=eR(o.seed,R),g=eR(o.recursiveTerm,R),y=await ct(m,t,n,E,i,!0,!0),T=ec(y,a,s),h=o.cycle,I=h?s.get(h.column):void 0,C=new Map(s);h&&C.set(h.markColumn,{...Q("string"),displayName:h.markColumn});let v=h?[...a,h.markColumn]:[...a],P=[],U=[],M=new Set([...T.warnings??[],...[...R.values()].flatMap(K=>K.warnings)]),N=new Aa(e.name,yt(n)),_=K=>{N.addRow(),P.push(K)};for(let K of T.rows){let k=h?String(K[h.column]??""):"",G=h?{...K,[h.markColumn]:h.defaultValue}:K;_(G),U.push({row:K,path:h?[k]:[]})}let b=nR(e.name,g),D=b.source.cteName===null?void 0:E.get(b.source.cteName);if(!D)throw new Error("PlanningError: \u518D\u5E30\u9805\u306E\u5B8C\u5168\u5B9F\u4F53\u5316 source \u304C\u3042\u308A\u307E\u305B\u3093");let A=tR(b.self,b.selfField,l)??tR(b.source,b.sourceField,E);if(!A?.semantics||A.semantics.compareMode==="unsupported")throw new Error(`PlanningError: \u518D\u5E30\u9805\u306E JOIN \u30AD\u30FC ${b.selfField} \u306E\u578B\u3092\u8A3C\u660E\u3067\u304D\u307E\u305B\u3093`);let w=new Map;for(let K of D.rows){let k=String(K[b.sourceField]??""),G=$u(k,A.semantics),Y=w.get(G);Y?Y.push(K):w.set(G,[K])}let x=w.has($u("",A.semantics)),O=0,F=!1;for(;U.length>0;){O++;let K=[];for(let k of U){let G=String(k.row[b.selfField]??"");!F&&G===""&&x&&(M.add(`\u518D\u5E30 CTE\u300C${e.name}\u300D\u306E JOIN ${b.selfField} = ${b.sourceField} \u3067\u7B2C ${O} \u53CD\u5FA9\u306B\u4E21\u5074\u306E\u7A7A\u30AD\u30FC\u3092\u691C\u51FA\u3057\u307E\u3057\u305F\u3002\u7A7A\u30AD\u30FC\u3069\u3046\u3057\u306F\u4E00\u81F4\u3057\u3001\u30EB\u30FC\u30C8\u7FA4\u3092\u518D\u5C55\u958B\u3057\u5F97\u307E\u3059\u3002`),F=!0);let Y=w.get($u(G,A.semantics))??[];for(let ne of Y){let Oe=String(ne[b.sourceField]??"");Ot("=",G,Oe,A.semantics)&&N.addExpansion()}if(Y.length===0)continue;let $=new Map(E);$.set(e.name,{rows:[k.row],columns:a,columnMeta:s});let L=await ct(g,t,n,$,i,!0,!0);for(let ne of L.warnings??[])M.add(ne);let H=ec(L,a,s);H.rows.length>0&&N.observeDepth(O);for(let ne of H.rows){if(!h){_(ne),K.push({row:ne,path:[]});continue}let Oe=String(ne[h.column]??""),Kt=k.path.some(re=>Ot("=",re,Oe,I.semantics));_({...ne,[h.markColumn]:Kt?h.markValue:h.defaultValue}),Kt||K.push({row:ne,path:[...k.path,Oe]})}}U=K}let V={type:"SELECT",rows:P,columns:v,rowCount:P.length,warnings:[...M]};return ue.set(V,C),V}async function Uc(e,t,n,r,i,o=!1){if((i==null||i.size===0)&&zt(e))return xt(qt(e),t,n,r,void 0,o,!1,"DERIVED");let a=new Map(i??[]),s=new Set;for(let p of e.ctes){let c;p.recursiveSpec?c=await iI(p,t,n,a,r):p.query.type==="SHOW_APPS"?c=await om(t):p.query.type==="DESCRIBE"?c=await am(p.query,t,r):p.query.type==="GENERATE_SERIES"?c=jR(p.query):c=await ct(p.query,t,n,a,r,!0);for(let u of c.warnings??[])s.add(u);a.set(p.name,{rows:c.rows,columns:c.columns,columnMeta:ue.get(c),...p.query.type==="GENERATE_SERIES"?{uniqueGeneratedColumn:p.query.columnAlias}:{}})}let l=await ct(e.query,t,n,a,r,o);return Nc(l,[...s])}function jR(e){let t=zo(e),n={type:"SELECT",columns:[e.columnAlias],rows:t.values.map(i=>({[e.columnAlias]:i})),rowCount:t.rowCount,warnings:[]},r=t.kind==="INTEGER"?{sortKind:"number",fieldType:"NUMBER",semantics:te({fieldType:"NUMBER"})}:{sortKind:"string",fieldType:"DATE",semantics:te({fieldType:"DATE"})};return ue.set(n,new Map([[e.columnAlias,r]])),n}async function ct(e,t,n,r,i,o=!1,a=!1){if(a||await Xa(e,t,r,i),e.type==="UNION"){let[p,c]=await Promise.all([ct(e.left,t,n,r,i,o,!0),ct(e.right,t,n,r,i,o,!0)]);return BR(p,c,e.all,o)}if(!(e.from.cteName!=null&&e.from.cteName!==_e||e.joins.some(p=>p.table.cteName!=null)))return xt(e,t,n,i,r,o,!1,"DERIVED");let l=await oI(e,t,n,r,i);return o&&ue.set(l,await Gi(e,l.columns,t,i,r)),l}async function oI(e,t,n,r,i){await Fi(e,t,i,r);let o=xi.get(e),a=await Rr(e,t,i,r),s=new Set,l=$=>{if($.alias!==null||$.cteName===null)return $;let L=ce($);return s.add(L),{...$,alias:L}};e={...e,from:l(e.from),joins:e.joins.map($=>({...$,table:l($.table)}))};let p=new Set;for(let $ of[e.from,...e.joins.map(L=>L.table)]){let L=ce($);if(L!==null){if(p.has(L))throw new Error(`ArgumentError: effective alias ${L} is used by multiple tables.`);p.add(L)}}let c=$=>{let L=r.get($);if(!L)throw new Error(`ArgumentError: materialized source ${$} is not available.`);return L};for(let $ of[e.from,...e.joins.map(L=>L.table)])$.cteName!==null&&c($.cteName);let{resolver:u}=await Cn(e,t,i,r,PR(e)),d=OR(e,u,"DERIVED",e.joins.length===0&&e.from.cteName!==null?r.get(e.from.cteName)?.uniqueGeneratedColumn:void 0),f=n.maxRecords??1e4,R=new Set,E=n.fetchParallel??1;await Promise.all([Hi(e.where,t,n,i,R,r),Hi(e.having,t,n,i,R,r),sm(e,t,n,i,R,r)]);let m=he(e.where,u);if(m.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Pn(m)}).`);let g=await $i(e,t,i,r),y=os(e)?(e.orderMode==="KINTONE_NATIVE"?fi:di)({stmt:e,staticMode:"FULL_SCAN",whereCapability:m.capability,whereReasons:m.reasons,orderSemantics:g.semantics,maxRecords:f,hasKlike:we(e.where)}):null,T=Pc(e,n,y),h=T.effectiveOptions,[I,C,v]=await Promise.all([ds(e,t,i),_c(e,t,i),kR(e,t,i,r)]),P=vc(e,C),U=await zi(e,t,i,r,ht(e.having)||Cc(e)),M=LR(e,U),N=ps(e,I)??fn(e,I);ll(N);let _=t,b=await um(e.columns,t,h,i,R,r),D=Promise.resolve(g);D.catch(()=>{});let A=new Map,w=new Map;if(e.from.cteName!=null){let $=c(e.from.cteName);A.set(e.from.alias,$.rows.map(rR)),w.set(e.from.alias,$.columns)}else{let $=await Xu(T,()=>_i(e,e.from,_,f,E,!0,h.onLimitReached??"error",R,N.mainCondition,m.capability==="EXACT_PUSHDOWN",a));A.set(e.from.alias,$)}let x=e.joins.map($=>Xu(T,async()=>{if($.table.cteName!=null){let L=c($.table.cteName);A.set($.table.alias,L.rows.map(rR)),w.set($.table.alias,L.columns)}else{let L=$.table.alias?N.joinConditions.get($.table.alias)??null:null,ne=await qR(e,$,A,_,f,E,h.onLimitReached??"error",R,i,r,L,a)??await _i(e,$.table,_,f,E,!1,h.onLimitReached??"error",R,L,!0,a);A.set($.table.alias,ne)}}));await Promise.all(x);let{optionOrders:O,sortKinds:F,semantics:V}=await D,K=e.joins.length===0&&e.from.cteName!=null?c(e.from.cteName).columns:void 0,{rows:k,columns:G}=Au({tables:A,stmt:e,scalarCache:b,optionOrders:O,sortKinds:F,orderSemantics:V,fieldTypeResolver:P.row,fieldSemanticsResolver:U,havingFieldTypeResolver:P.having,havingFieldSemanticsResolver:M,aggregateSortKindResolver:v,appliedKlikes:N.appliedKlikes,sourceColumns:K,tableColumns:w,hiddenQualifiedAliases:s,resolvedGroupingSpec:o,plainGroupByPlan:a,evaluationContext:le(n)}),Y=await kc(e,k,G,t,i);return Nc({type:"SELECT",rows:k,columns:Y,rowCount:k.length,warnings:[...R]},d)}async function kc(e,t,n,r,i){if(t.length!==0||n.length!==0||e.columns.length!==1||e.columns[0].type!=="WILDCARD"||e.joins.length!==0||e.from.cteName!==null)return[...n];let o=await ee(e.from.appId,r,i);return Zf(o,e.from.subtableCode,()=>Rs(e.from.appId,r,i))}function rR(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,{value:n??""}]))}async function _i(e,t,n,r,i,o,a,s,l=null,p=!0,c,u=""){let d=dn(e,t,c),f=g=>{if(s.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${g} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${g} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`),Ac(n,t.appId),Kf(e,t,o))throw new Ge(`\u5916\u90E8\u7D50\u5408\u306E\u6B63\u3057\u3044\u7D50\u679C\u306B\u306F\u5B8C\u5168\u306A\u5019\u88DC\u96C6\u5408\u304C\u5FC5\u8981\u3067\u3059\u3002complete input reason: OUTER_JOIN_NON_PRESERVED\uFF08APP${t.appId}\uFF09\u3002onLimit=truncate\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u53D6\u5F97\u4EF6\u6570\u304C\u4E0A\u9650\uFF08${g} \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`,!0)};if(!t.subtableCode){let g=o&&p?id(e,t.appId).query:"",y=[l!==null?j(l):"",u].filter(C=>C!==""),T=y.length>1?y.map(C=>`(${C})`).join(" and "):y[0]??"",h=g&&T?`(${g}) and (${T})`:g||T;return(await it(n.getRecords,t.appId,h,d,{parallel:i,maxRecords:r,onLimit:a,onTruncate:f})).records}let R=o&&p&&e.joins.length===0&&e.where!==null&&Mc.get(e)?.capability==="EXACT_PUSHDOWN"&&!Ct(e.where)?j(e.where):"",m=(await it(n.getRecords,t.appId,R,d,{parallel:i,maxRecords:r,onLimit:a,onTruncate:f})).records;return hE(m,t.subtableCode)}var zR=50;function aI(e){let t=Ae(e);return t!==null?JSON.stringify(t):e}function tc(e){return JSON.stringify(e)}function vn(e,t){return JSON.stringify(e.map((n,r)=>t[r]?aI(n):n))}function qi(e,t){let n=e.raw.get(tc(t));if(n!==void 0)return n;if(e.numericKey.some(Boolean))return e.normalized.get(vn(t,e.numericKey))}async function Ji(e,t,n,r,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},c=(m,g,y)=>{let T=m.get(g);(T===void 0||y>T)&&m.set(g,y)},u=(m,g)=>{c(p.raw,tc(m),g),l.some(Boolean)&&c(p.normalized,vn(m,l),g)},d=new Set,f=[],R=new Set;for(let m of n){let g=tc(m);R.has(g)||(R.add(g),m.some(y=>y==="")?f.push(m):d.add(m[0]))}let E=["$id",...t];for(let m of Xi([...d],zR)){let g=`${t[0]} in (${m.map(Ki).join(",")})`,y=await xe(r.getRecords,e,g,E,{maxRecords:a,parallel:s});for(let T of y){let h=Number(T.$id?.value);Number.isFinite(h)&&u(t.map(I=>xc(T[I]?.value)),h)}}for(let m of f){let g=t.map((T,h)=>`${T} = ${Ki(m[h])}`).join(" and "),y=await xe(r.getRecords,e,g,["$id"],{maxRecords:a,parallel:s});y.length!==0&&u(m,sI(y))}return p}function sI(e){let t=Number.NEGATIVE_INFINITY;for(let n of e){let r=Number(n.$id?.value);Number.isFinite(r)&&r>t&&(t=r)}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 xc(e){return typeof e=="string"?e:e==null?"":String(e)}function Ki(e){return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Xi(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}var lI=6,es=Sa*lI;async function qR(e,t,n,r,i,o,a,s,l,p,c=null,u,d=""){if(t.type!=="INNER"||!t.table.alias||t.table.subtableCode)return null;let f=t.on.left.tableAlias,R=t.on.right.tableAlias;if(!f||!R)return null;let E,m,g;if(f===t.table.alias&&R!==t.table.alias)E=R,m=t.on.right.field,g=t.on.left.field;else if(R===t.table.alias&&f!==t.table.alias)E=f,m=t.on.left.field,g=t.on.right.field;else return null;let y=n.get(E);if(!y)return null;let T=[e.from,...e.joins.map(A=>A.table)].find(A=>ce(A)===E),h=(await ee(t.table.appId,r,l)).find(A=>A.code===Ee(t.table,g)),I=h?Me(h,t.table.appId):Je(g),C;if(T?.cteName!==null&&T?.cteName!==void 0)C=p?.get(T.cteName)?.columnMeta?.get(m);else if(T){let A=(await ee(T.appId,r,l)).find(w=>w.code===Ee(T,m));C=A?Me(A,T.appId):Je(m)}let v=[],P=!1;for(let A of y){let w=A[m]?.value,x=xc(w);(w==null||x.length===0)&&(P=!0),v.push(x)}let U=nu({fieldType:I?.fieldType,sourceSemantics:C?.semantics,sourceRowCount:y.length,values:v,hasEmptyValue:P,maxInKeys:es});if(U.kind==="EMPTY_SOURCE")return[];if(U.kind==="FALLBACK"){if(U.reason==="JOIN_KEY_LIMIT_EXCEEDED"){let A=new Set(v).size;s.add(`JOIN\u30AD\u30FC\u304C ${A} \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 ${es} \u4EF6\uFF09\u3002`)}return null}if(U.kind==="RANGE_CANDIDATE")return null;let M=tu(U,g,Ki);if(M.length===0)return s.add(`JOIN\u30AD\u30FC\u304C 0 \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 ${es} \u4EF6\uFF09\u3002`),null;let N=dn(e,t.table,u),_=A=>{s.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${A} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${A} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`),Ac(r,t.table.appId)},b=[],D=new Set;for(let A of M){let x=[c!==null?j(c):"",d].filter(F=>F!=="").reduce((F,V)=>`(${F}) and (${V})`,A),O=await it(r.getRecords,t.table.appId,x,N,{parallel:o,maxRecords:i,onLimit:a,onTruncate:_});for(let F of O.records){let V=`${F.$id?.value??""}:${JSON.stringify(F)}`;D.has(V)||(D.add(V),b.push(F))}}return b}var nc=new Map,rc=new Map,ic=new Map,oc=new Map,ac=new Map,sc=new Map;function Fc(e){nc.delete(e),rc.delete(e),ic.delete(e),oc.delete(e),ac.delete(e),sc.delete(e)}function yr(e,t,n){return e.get(t)?.get(n)}function hr(e,t,n,r){let i=e.get(t);i||(i=new Map,e.set(t,i)),i.set(n,r)}async function ee(e,t,n){let r=yr(oc,n,e);if(r)return r;let i=t.getFields(e);return hr(oc,n,e,i),i}async function wt(e,t,n){let r=yr(sc,n,e);if(r)return r;let i=t.getNumberPrecision(e);return hr(sc,n,e,i),i}async function Rs(e,t,n){let r=yr(ac,n,e);if(r)return r;let i=t.getProcessStatuses(e);return hr(ac,n,e,i),i}async function Gc(e,t,n){let r=await Rs(e,t,n);return r.enable&&r.states!==null?new Map(r.states.map(i=>[i.name,i.index])):void 0}async function ke(e,t,n){let r=yr(nc,n,e);if(r)return r;let i=await ee(e,t,n),o=new Map(i.map(a=>[a.code,a.fieldType]));return hr(nc,n,e,o),o}async function lc(e,t,n){let r=yr(rc,n,e);if(r)return r;let i=await ee(e,t,n),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 hr(rc,n,e,o),o}async function uI(e,t,n){let r=await lc(e,t,n);return new Map([...r.entries()].map(([i,o])=>[i,new Set(o.keys())]))}async function iR(e,t,n){let r=yr(ic,n,e);if(r)return r;let i=await ee(e,t,n),o=new Map;for(let a of i)a.sortKind&&o.set(a.code,a.sortKind);return hr(ic,n,e,o),o}function cI(e){let t=[...e.orderBy,...e.columns.flatMap(n=>n.type==="WINDOW_COL"?n.orderBy:[])];return[...new Set(t.flatMap(n=>n.key.type==="FIELD_NAME"?[n.key.name]:[]))]}async function pI(e,t,n,r){let i=cI(e);if(i.length===0)return new Map;let o=[e.from,...e.joins.map(u=>u.table)],a=new Set,s=new Map(await Promise.all([...new Set(o.filter(u=>u.cteName===null).map(u=>u.appId))].map(async u=>{let d=await ee(u,t,n);return[u,new Map(d.map(f=>[f.code,f]))]}))),l=u=>{if(u.tableAlias!==null){if(u.tableAlias==="_p"&&e.from.subtableCode&&e.from.cteName===null){let E=s.get(e.from.appId)?.get(u.field);return E?Me(E,e.from.appId):void 0}let f=o.find(E=>ce(E)===u.tableAlias);if(!f)return;if(f.cteName!==null)return r?.get(f.cteName)?.columnMeta?.get(u.field);let R=s.get(f.appId)?.get(Ee(f,u.field));return R?Me(R,f.appId):Je(u.field)}if(e.joins.length===0){if(e.from.cteName!==null)return r?.get(e.from.cteName)?.columnMeta?.get(u.field);let f=s.get(e.from.appId)?.get(Ee(e.from,u.field));return f?Me(f,e.from.appId):Je(u.field)}let d=o.flatMap(f=>{if(f.cteName!==null){let m=r?.get(f.cteName),g=m?.columns.includes(u.field)?m.columnMeta?.get(u.field):void 0;return g?[g]:[]}let R=s.get(f.appId)?.get(Ee(f,u.field)),E=R?Me(R,f.appId):Je(u.field);return E?[E]:[]});return d.length>1&&a.add(u.field),d.length===1?d[0]:void 0},p=new Map;for(let u of e.columns){if(!("alias"in u)||!u.alias)continue;let d;if(u.type==="FIELD")d=l(Ue(u.field));else if(u.type==="ARITH_COL"||u.type==="ARITH_AGG_COL")d=Q("number");else if(u.type==="WINDOW_COL")d=GR(u,l);else if(u.type==="GROUPING_COL")d=Q("number");else if(u.type==="LITERAL_COL"||u.type==="SCALAR_VALUE_COL")d=Q("string");else if(u.type==="STRFUNC_COL")d=_n(u.expr);else if(u.type==="SCALAR_SUBQUERY_COL")d=qe();else if(u.type==="CASE_COL"){let f=u.expr.branches.map(R=>gr(R.result,l));u.expr.elseResult&&f.push(gr(u.expr.elseResult,l)),d=Es(f)}else u.type==="AGGREGATE"&&(u.func==="MIN"||u.func==="MAX"||u.func==="MODE"?u.arg.type!=="WILDCARD"&&(d=Dn(u.arg,l)):d=u.func==="GROUP_CONCAT"?Q("string"):Q("number"));d?.semantics&&p.set(u.alias,d.semantics)}let c=new Map;for(let u of i){let d=p.get(u)??l(Ue(u))?.semantics;if(!d){let R=Ue(u);R.tableAlias===null&&a.has(R.field)&&c.set(u,te({fieldType:"KSQL_AMBIGUOUS"}));continue}let f=d;if(d.fieldType==="STATUS"&&d.source&&e.orderMode!=="KINTONE_NATIVE"){let R=await Rs(d.source.appId,t,n);R.enable&&R.states!==null&&(f={...d,optionOrder:new Map(R.states.map(E=>[E.name,E.index]))})}c.set(u,f)}return c}async function $i(e,t,n,r){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([dI(e,t,n),fI(e,t,n),pI(e,t,n,r)]);return{optionOrders:o,sortKinds:a,semantics:s}}async function dI(e,t,n){let r=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 lc(a.appId,t,n);for(let[l,p]of s.entries())r.has(l)||r.set(l,p)}for(let a of i){if(a.cteName!=null||!a.alias)continue;let s=await lc(a.appId,t,n);for(let[l,p]of s.entries())r.set(`${a.alias}.${l}`,p)}return r}async function fI(e,t,n){let r=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 iR(a.appId,t,n);for(let[l,p]of s.entries())r.has(l)||r.set(l,p)}for(let a of i){if(a.cteName!=null||!a.alias)continue;let s=await iR(a.appId,t,n);for(let[l,p]of s.entries())r.set(`${a.alias}.${l}`,p)}return r}function JR(e,t){if(typeof e!="string")return e;let n=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),r=new Set(["CHECK_BOX","MULTI_SELECT"]);if(n.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(r.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 EI=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function RI(e,t,n){let r=new Map(n.map(i=>[i.code,i]));for(let i of t){let o=r.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||EI.has(o.fieldType))throw new Error(`ArgumentError: DML target field ${i} is not writable (${o.fieldType}).`)}}async function pt(e,t,n,r){let i=await ee(e,n,r);return RI(e,t,i),i}async function Ft(e,t,n,r,i){let o=new Map(n.map(a=>[a.code,a]));return t.some(a=>o.get(a)?.fieldType==="NUMBER")?wt(e,r,i):void 0}function Mn(e,t,n,r){let i=new Map(n.map(o=>[o.code,o]));e.forEach((o,a)=>{for(let s of t){let l=i.get(s),p=o[s]?.value??"",c=$e(p,l,r);if(!c.ok)throw new Error(`DmlValidationError: ${c.code} ${c.message} (row=${a+1}, field=${s})`);let u=["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(l.fieldType)&&Array.isArray(p)&&p.every(d=>typeof d=="object"&&d!==null&&"code"in d);o[s]={value:u?p:c.value}}})}async function mI(e,t,n,r,i){let o=await pt(e.appId,e.fields,t,r),a=await oi({statement:e,fieldInfos:o,dmlMaxRows:Qe(n.dmlMaxRows,"dmlMaxRows",Gt),dmlMaxSubtableRows:Qe(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ce),statementNumber:i,loadNumberPrecision:()=>wt(e.appId,t,r)});return YI(e,a,o)}async function gI(e,t,n,r,i){let{fieldInfos:o,prepared:a}=await XR(e,t,n,r,i);return zI(e,a,o)}async function XR(e,t,n,r,i){let o=await pt(e.appId,e.fields,t,r),a=new Map(o.map(m=>[m.code,m.fieldType])),s=rm(e),l=new Set;for(let m of s){let g=vn(m,e.keyFields.map(y=>a.get(y)==="NUMBER"));if(l.has(g))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");l.add(g)}let p=await Ji(e.appId,e.keyFields,s,t,n,a),c=s.map(m=>qi(p,m)),u=new Map,d=[...new Set(c.filter(m=>m!==void 0))],f=["$id","$revision",...o.filter(m=>!m.inSubtable&&m.fieldType!=="FILE").map(m=>m.code)];for(let m of Xi(d,100)){let g=await t.getRecords({app:e.appId,query:`$id in (${m.join(",")}) limit 500`,fields:[...new Set(f)]});for(let y of g.records){let T=Number(y.$id?.value);Number.isSafeInteger(T)&&T>0&&u.set(T,y)}}let R=c.map((m,g)=>({sourceRowIndex:g,...m===void 0?{}:{targetId:m,snapshot:u.get(m)}})),E=await vf({statement:e,matches:R,fieldInfos:o,dmlMaxRows:Qe(n.dmlMaxRows,"dmlMaxRows",Gt),dmlMaxSubtableRows:Qe(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ce),statementNumber:i,loadNumberPrecision:()=>wt(e.appId,t,r)});return{fieldInfos:o,prepared:E}}async function yI(e,t,n,r){if(n.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let i=await pt(e.appId,e.fields,t,r),o=await oi({statement:e,fieldInfos:i,dmlMaxRows:Qe(n.dmlMaxRows,"dmlMaxRows",Gt),dmlMaxSubtableRows:Qe(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ce),loadNumberPrecision:()=>wt(e.appId,t,r)}),a=Jl(o);if(n.confirm&&!await n.confirm(o.guards.parentRows,"INSERT",{statementIndex:0,statementCount:1,statementType:"INSERT",targetAppId:e.appId,applyDetail:ms(a),applyDiagnostic:a}))throw new ye("INSERT",o.guards.parentRows);let s=await Ff(o,t,a);return{...s,diagnostic:Ye(a,s)}}async function hI(e,t,n,r){if(n.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let{prepared:i}=await XR(e,t,n,r,1),o=Xl(i);if(n.confirm){let s=ms(o);if(!await n.confirm(i.guards.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPSERT",targetAppId:e.appId,applyDetail:s,applyDiagnostic:o}))throw new ye("UPDATE",i.guards.parentRows)}let a=await Gf(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:Ye(o,a)}}function AI(e,t){let n=new Map;for(let r of[...e,...t]){let i=n.get(r.table);n.set(r.table,i?{table:r.table,patchRows:i.patchRows+r.patchRows,appendRows:i.appendRows+r.appendRows,removeRows:i.removeRows+r.removeRows}:{...r})}return[...n.values()]}function ms(e,t=!0){let n=e.branches.find(d=>d.branch==="insert"),r=e.branches.find(d=>d.branch==="update"),i=e.branches.flatMap(d=>d.targets),o=AI(n?za(n):[],r?za(r):[]),a=SI(i),s=e.branches.reduce((d,f)=>d+(f.parentRows??0),0),l=i.filter(d=>d.targetKind==="SUBTABLE").reduce((d,f)=>d+(f.changedCount??0),0),p=o.reduce((d,f)=>d+f.appendRows,0),c=o.reduce((d,f)=>d+f.removeRows,0),u={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:c,deletedParentRows:e.branches.reduce((d,f)=>d+(f.deletedParentRows??0),0),revisionRequired:e.branches.some(d=>d.guards.revisionRequired),irreversible:!0,retryOnRevisionConflict:!1,...t?{nonTransactional:!0,partialSuccessPossible:!0}:{}};if(e.statementKind==="INSERT"&&n)return{...u,insertedParentRows:n.parentRows??0,initialSubtableRows:n.targets.filter(d=>d.targetKind==="SUBTABLE").reduce((d,f)=>d+(f.changedCount??0),0)};if(e.statementKind==="UPSERT"&&n&&r){let d=za(n),f=za(r);return{...u,insertedParentRows:n.parentRows??0,initialSubtableRows:n.targets.filter(R=>R.targetKind==="SUBTABLE").reduce((R,E)=>R+(E.changedCount??0),0),updatedParentRows:r.parentRows??0,applyBranches:{insert:{parentRows:n.parentRows??0,initialSubtableRows:d.reduce((R,E)=>R+E.appendRows,0),tables:d},update:{parentRows:r.parentRows??0,changedSubtableRows:r.targets.filter(R=>R.targetKind==="SUBTABLE").reduce((R,E)=>R+(E.changedCount??0),0),addedSubtableRows:f.reduce((R,E)=>R+E.appendRows,0),tables:f,deletedRows:f.reduce((R,E)=>R+E.removeRows,0),deletedParentRows:r.deletedParentRows??0}}}}return u}function za(e){return e.targets.filter(t=>t.targetKind==="SUBTABLE").map(t=>{let n=On(t,"APPEND"),r=On(t,"REMOVE");return{table:t.field,patchRows:(t.changedCount??0)-n-r,appendRows:n,removeRows:r}})}function On(e,t){return e.operations.filter(n=>n.kind===t).reduce((n,r)=>n+(r.count??0),0)}function SI(e){let t=new Map;for(let n of e.filter(r=>r.targetKind==="MULTI_VALUE")){let r={field:n.field,fieldType:n.fieldType??"UNKNOWN",addedValues:On(n,"ADD"),removedValues:On(n,"REMOVE_VALUE"),changedValues:n.changedCount??0,parents:(n.postImages??[]).map(o=>({parentId:o.parentId,postImage:o.value}))},i=t.get(n.field);t.set(n.field,i?{...i,addedValues:i.addedValues+r.addedValues,removedValues:i.removedValues+r.removedValues,changedValues:i.changedValues+r.changedValues,parents:[...i.parents,...r.parents]}:r)}return[...t.values()]}async function Kc(e,t,n,r,i,o){if(e.type==="INSERT"&&e.applyBlocks?.length)return mI(e,t,n,r,o);if(e.type==="UPSERT"&&(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length))return gI(e,t,n,r,o);if(e.type==="UPDATE"&&e.applyBlocks?.length){let a=await nm(e,t,n,r,o);if(a.type!=="VALIDATION")throw new Error("InternalError: APPLY VALIDATE ONLY returned a mutation result.");return a}return(await $c(e,t,n,r,i,o)).result}var Bi=class extends Error{constructor(n,r){super(`RejectLimitExceededError: ${n}`);this.diagnostic=r;this.name="RejectLimitExceededError"}};async function $c(e,t,n,r,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(D=>D.field)]:[...e.fields];if(new Set(p).size!==p.length)throw new Error("ArgumentError: DML target fields contain duplicates.");let c=e.type==="UPDATE"?e.assignments.map(D=>D.field):e.fields,u=await pt(e.appId,c,t,r);e.type==="UPDATE"&&await Er(e,t,r);let d=new Map(u.map(D=>[D.code,D])),f=await Ft(e.appId,c,u,t,r),R=Rt(u,p),E=AE(R),m=(await TI(e,l,t,n,r,i,d,e.type==="UPDATE"?E:void 0)).sort((D,A)=>D.rowNumber-A.rowNumber),g=m.filter(D=>D.mode==="update"),y=e.type==="UPDATE"?bI:e.type.startsWith("UPSERT")?D=>NI(D,t,n.maxRecords??1e4):void 0,T=n.loadUpdateModeSnapshots??y,h=g.length>0&&T!==void 0,I=new Map;if(h){$l(g,c,u);let D=await T({appId:e.appId,candidates:g,fields:E}),A=new Map;for(let w of g){if(w.targetId===void 0)throw new Error(`InternalError: update-mode validation candidate has no targetId (row=${w.rowNumber}).`);let x=D.get(w.targetId);if(!x)throw new Error(`InternalError: update-mode snapshot is missing for record ${w.targetId}.`);let O=SE(x,w.record??{});A.set(w.rowNumber,O)}f===void 0&&[...A.values()].some(w=>gn(w,R))&&(f=await wt(e.appId,t,r));for(let w of g){let x=A.get(w.rowNumber);if(!x)throw new Error(`InternalError: validation post-image is missing for row ${w.rowNumber}.`);I.set(w.rowNumber,yn(x,R,f,o,w.rowNumber,l))}}let C=Bl(m,l,p,c,u,o,f,e.checkGroups??[],a,s,{validateUpdateBuiltIns:!h}),{errors:v,invalidRows:P,invalidRowNumbers:U}=C;if(h){let D=new Map(C.candidateResults.map(A=>[A.rowNumber,A]));v=[],U=new Set;for(let A of m){let w=D.get(A.rowNumber);if(!w)throw new Error(`InternalError: validation detail is missing for row ${A.rowNumber}.`);if(A.mode==="create"){let F=[...w.preErrors,...w.builtInErrors,...w.checkErrors];v.push(...F),F.length>0&&U.add(A.rowNumber);continue}let x=I.get(A.rowNumber);if(!x)throw new Error(`InternalError: prepared post-image validation is missing for row ${A.rowNumber}.`);let O=TE({rowNumber:A.rowNumber,setFields:c,normalizedPostImage:x.normalizedRecord,preErrors:w.preErrors,postImageErrors:x.errors,checkErrors:w.checkErrors});A.record=O.writeRecord,v.push(...O.errors);for(let F of O.invalidRowNumbers)U.add(F)}P=U.size}let M=[...p,...or],N={type:"VALIDATION",operation:l,validatedRows:m.length,validRows:m.length-P,invalidRows:P,errorCount:v.length,columns:M,errors:v,...e.validationErrorTable?{errTable:e.validationErrorTable}:e.onErrorSkip&&e.errorTable?{errTable:e.errorTable}:{}},_=new Map;for(let D of p){if(D==="$id"){_.set(D,{sortKind:"number",fieldType:"RECORD_NUMBER",semantics:te({fieldType:"RECORD_NUMBER"})});continue}let A=d.get(D);A&&_.set(D,Me(A,e.appId))}let b=new Set(["$err_statement","$err_row"]);for(let D of or)_.set(D,Q(b.has(D)?"number":"string"));return kn.set(N,_),{result:N,candidates:m,invalidRowNumbers:U,columnMeta:_}}async function uc(e,t,n,r,i,o){let a=await $c(e,t,n,r,i,o),s=e.errorTable;if(!s)throw new Error("ArgumentError: ON ERROR SKIP requires INTO #error_table.");It(i,s,a.result.columns,a.result.errors,n.tempTableMaxRows??Xe,a.columnMeta);let l=e.rejectLimit??null;if(l!==null&&a.result.invalidRows>l)throw new Bi(`rejected rows (${a.result.invalidRows}) exceed REJECT LIMIT (${l}).`,a.result);let p=a.candidates.filter(R=>!a.invalidRowNumbers.has(R.rowNumber));if(n.confirm){let R=e.type.startsWith("INSERT")?"INSERT":"UPDATE";if(!await n.confirm(p.length,R))throw new ye(R,p.length)}let c={affectedRows:p.length,skippedRows:a.result.invalidRows,rejectLimit:l,errTable:s};if(e.type==="INSERT"||e.type==="INSERT_SELECT"){let R=[];for(let E=0;E<p.length;E+=100){let m=await t.postRecords({app:e.appId,records:p.slice(E,E+100).map(g=>g.record)});R.push(m.ids)}return{type:"INSERT",createdIds:R,insertedCount:R.flat().length,...c}}if(e.type==="UPDATE"){let R=p.map(E=>{if(E.targetId===void 0)throw new Error("InternalError: prepared UPDATE candidate has no targetId.");return{id:E.targetId,record:E.record}});for(let E=0;E<R.length;E+=100)await t.putRecords({app:e.appId,records:R.slice(E,E+100)});return{type:"UPDATE",updatedCount:R.length,...c}}let u=p.filter(R=>R.mode==="create"),d=p.filter(R=>R.mode==="update").map(R=>{if(R.targetId===void 0)throw new Error("InternalError: prepared UPSERT candidate has no targetId.");return{id:R.targetId,record:R.record}}),f=0;for(let R=0;R<u.length;R+=100){let E=await t.postRecords({app:e.appId,records:u.slice(R,R+100).map(m=>m.record)});f+=E.ids.length}for(let R=0;R<d.length;R+=100)await t.putRecords({app:e.appId,records:d.slice(R,R+100)});return{type:"UPSERT",insertedCount:f,updatedCount:d.length,...c}}async function TI(e,t,n,r,i,o,a,s){if(e.type==="UPDATE")return wI(e,n,r,i,o,s);let l,p,c,u,d;if(e.type==="INSERT"||e.type==="UPSERT")oR(e,e.fields),d=new Map(e.fields.map(h=>[h,a.get(h)?.fieldType??""])),Un(e,d),l=e.values.map(h=>h.map((I,C)=>I.type==="CASE_VALUE"?nn(I.expr,{},a.get(e.fields[C])?.fieldType,le(r)):I));else{let h=await Vc.materialize(e,n,r,i,o,[...a.values()]),I=(e.checkGroups?.length??0)>0;if(h.columns.length<e.fields.length||!I&&h.columns.length!==e.fields.length)throw new Error(`SELECT \u306E\u5217\u6570\uFF08${h.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(I&&new Set(h.columns).size!==h.columns.length)throw Ne("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");oR(e,h.columns),p=h.rows,c=h.importPresence,u=h.importRowErrors;let C=h.columnMeta;d=new Map(h.columns.map(v=>{let P=C?.get(v),U=P?.fieldType??(P?.semantics?.compareMode==="number"||P?.sortKind==="number"?"NUMBER":"SINGLE_LINE_TEXT");return[v,U]})),Un(e,d),l=h.rows.map(v=>h.columns.map(P=>v[P]??""))}let f=l.map((h,I)=>({rowNumber:I+1,operation:t,mode:"create",payload:new Map(e.fields.flatMap((C,v)=>c&&!c[I]?.has(C)?[]:[[C,h[v]]])),preErrors:[...u?.[I]??[]],record:{},evaluationRow:p?.[I]??Object.fromEntries(e.fields.map((C,v)=>[C,Et(h[v])])),evaluationFieldTypes:d}));if(e.type!=="UPSERT"&&e.type!=="UPSERT_SELECT")return f;for(let h of e.keyFields)if(!e.fields.includes(h))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${h}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let R=new Map([...a].map(([h,I])=>[h,I.fieldType])),E=f.map(h=>e.keyFields.map(I=>Et(h.payload.get(I)))),m=e.keyFields.map(h=>R.get(h)==="NUMBER"),g=new Map;for(let h of E){let I=vn(h,m);g.set(I,(g.get(I)??0)+1)}let y=cs.has(e);if(y&&[...g.values()].some(h=>h>1))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");let T=await Ji(e.appId,e.keyFields,E,n,r,R);return f.forEach((h,I)=>{let C=E[I],v=qi(T,C);h.mode=v===void 0?"create":"update",v!==void 0&&(h.targetId=v),e.keyFields.forEach((P,U)=>{C[U]===""&&h.preErrors.push({field:P,code:"ERR_KEY_EMPTY",message:`UPSERT \u30AD\u30FC ${P} \u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093`})}),!y&&(g.get(vn(C,m))??0)>1&&h.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 Bc(e){return e.checkGroups?rr(e.checkGroups):[]}function oR(e,t){let n=new Set(t);for(let r of Bc(e)){if(r.tableAlias!==null)throw Ne(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${r.tableAlias}.${r.field} \u306F\u3053\u306E\u8A55\u4FA1\u884C\u3067\u306F\u4FEE\u98FE\u3067\u304D\u307E\u305B\u3093`);if(!n.has(r.field))throw Ne(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${r.field} \u306F\u8A55\u4FA1\u884C\u306B\u5B58\u5728\u3057\u307E\u305B\u3093`)}}var II=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE","KSQL_ARRAY"]);function Un(e,t){if(e.checkGroups)for(let n of Zd(e.checkGroups)){let r=n.tableAlias?`${n.tableAlias}.${n.field}`:n.field,i=t.get(r)??t.get(n.field);if(II.has(i??""))throw Ne(`CHECK \u306E\u6BD4\u8F03\u3067\u306F ${i} \u30D5\u30A3\u30FC\u30EB\u30C9 ${r} \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`)}}async function wI(e,t,n,r,i,o){if(e.from)return PI(e,e.from,t,n,r,i,o);await lm(e.assignments,t,n,r);let a=await ke(e.appId,t,r),s=QR(e,a);Un(e,cc(a,e.appId));let l,p=new Map,c=new Map;if(aa(e)){let u=bl(e),d=[...new Set([...u.fields,...s,...o??[]])],f=await it(t.getRecords,u.app,u.query,d,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"});c=ts(f.records),p=c,l=Cl(e,f.records,a,le(n)).flatMap(R=>R.records)}else{let u=Jr(e);if(s.length>0){let d=[...new Set(["$id",...s,...o??[]])],f=await it(t.getRecords,u.app,u.query,d,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"});c=ts(f.records),p=c,l=Xr(e,[...p.keys()],a).flatMap(R=>R.records)}else if(o){let d=await it(t.getRecords,u.app,u.query,[...o],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"});c=ts(d.records),l=Xr(e,[...c.keys()],a).flatMap(f=>f.records)}else{let d=await Ia(t.getRecords,u.app,u.query,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1});l=Xr(e,d.ids,a).flatMap(f=>f.records)}}return l.sort((u,d)=>u.id-d.id).map((u,d)=>({rowNumber:d+1,operation:"UPDATE",mode:"update",payload:new Map([["$id",String(u.id)],...e.assignments.map(f=>[f.field,u.record[f.field]?.value??""])]),preErrors:[],record:u.record,targetId:u.id,validationSnapshot:c.get(u.id),evaluationRow:CI(p.get(u.id),e.appId),evaluationFieldTypes:cc(a,e.appId)}))}function ts(e){let t=new Map;for(let n of e){let r=n.$id?.value,i=Number(r);if(!Number.isSafeInteger(i)||i<=0)throw new Error(`InternalError: invalid $id in UPDATE validation snapshot: ${String(r)}.`);if(t.has(i))throw new Error(`InternalError: duplicate $id in UPDATE validation snapshot: ${i}.`);t.set(i,n)}return t}async function bI(e){let t=new Map;for(let n of e.candidates){if(n.targetId===void 0||!n.validationSnapshot)throw new Error(`InternalError: update-mode snapshot is missing for record ${String(n.targetId)}.`);if(t.has(n.targetId))throw new Error(`InternalError: duplicate UPDATE validation candidate target: ${n.targetId}.`);t.set(n.targetId,n.validationSnapshot)}return t}async function NI(e,t,n){let r=[...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(r.length>n)throw new Ge(`\u53D6\u5F97\u4EF6\u6570\u304C\u4E0A\u9650\uFF08${n} \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(r),o=new Map;for(let a of Xi(r,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,c=Number(p);if(!Number.isSafeInteger(c)||c<=0)throw new Error(`InternalError: invalid $id in UPSERT validation snapshot: ${String(p)}.`);if(!i.has(c))throw new Error(`InternalError: unexpected $id in UPSERT validation snapshot: ${c}.`);if(o.has(c))throw new Error(`InternalError: duplicate $id in UPSERT validation snapshot: ${c}.`);o.set(c,l)}}for(let a of r)if(!o.has(a))throw new Error(`InternalError: update-mode snapshot is missing for record ${a}.`);return o}function QR(e,t){if(e.from)return[];let n=new Set;for(let r of Bc(e)){if(r.tableAlias!==null&&r.tableAlias.toLowerCase()!==`app${e.appId}`.toLowerCase())throw Ne(`CHECK \u306E\u4FEE\u98FE\u5B50 ${r.tableAlias} \u306F\u66F4\u65B0\u5148 APP${e.appId} \u3067\u306F\u3042\u308A\u307E\u305B\u3093`);if(r.field!=="$id"&&!t.has(r.field))throw Ne(`CHECK \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u30D5\u30A3\u30FC\u30EB\u30C9 ${r.field} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093`);n.add(r.field)}return[...n]}function CI(e,t){if(!e)return{};let n=Mt(e,null);return Object.fromEntries([...Object.entries(n),...Object.entries(n).map(([r,i])=>[`APP${t}.${r}`,i])])}function cc(e,t){return new Map([...e,...[...e].map(([n,r])=>[`APP${t}.${n}`,r]),["$id","RECORD_NUMBER"],[`APP${t}.$id`,"RECORD_NUMBER"]])}async function PI(e,t,n,r,i,o,a){let s=await wm(e,t,n,i,o);Un(e,s.evaluationTypes);let l=await ZR(e,t,n,r,i,o,a),p=await ke(e.appId,n,i),c=Ol(e,l,p,le(r)).flatMap(f=>f.records),u=new Map(l.map(f=>[Number(f.target.$id?.value),f])),d=a?ts(l.map(f=>f.target)):new Map;return c.sort((f,R)=>f.id-R.id).map((f,R)=>({rowNumber:R+1,operation:"UPDATE",mode:"update",payload:new Map([["$id",String(f.id)],...e.assignments.map(E=>[E.field,f.record[E.field]?.value??""])]),preErrors:[],record:f.record,targetId:f.id,validationSnapshot:d.get(f.id),evaluationRow:Dw(u.get(f.id),e.appId,t.alias),evaluationFieldTypes:s.evaluationTypes}))}var OI=zR,LI=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);async function ZR(e,t,n,r,i,o,a){let s=await _I(e,t,n,i),l=await wm(e,t,n,i,o),p=[...new Set(e.assignments.filter(I=>I.value.type==="SOURCE_FIELD").map(I=>I.value.type==="SOURCE_FIELD"?I.value.field:"").concat(l.sourceFields))],c=[...new Set([t.joinKeyField,...p])],u=await DI(t,c,p,n,r,i,o),d=new Map,f=new Map;for(let I of u){if(!Object.prototype.hasOwnProperty.call(I,t.joinKeyField))throw new Error(`ArgumentError: UPDATE ... FROM source column ${t.joinKeyField} does not exist.`);let C=aR(I[t.joinKeyField],s,"source");if(d.has(C))throw new Error(`ArgumentError: UPDATE ... FROM source has multiple rows for normalized key ${C}.`);d.set(C,I),f.set(C,String(I[t.joinKeyField]).trim())}if(d.size===0)return[];let R=r.maxRecords??1e4,E=[...new Set([...JI(e),...l.targetFields,...a??[]])],m=t.targetFilter===null?"":Jr({...e,from:null,where:t.targetFilter,checkGroups:void 0}).query,g=[],y=new Set,T=0;for(let I of Xi([...f.values()],OI)){let C=`${t.targetJoinField} in (${I.map(Ki).join(",")})`,v=m?`(${C}) and (${m})`:C,P=await it(n.getRecords,e.appId,v,E,{maxRecords:R,parallel:r.fetchParallel??1,onLimit:"error"});if(T+=P.records.length,T>R)throw new Ge(`\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`);for(let U of P.records){let M=U.$id?.value;if(typeof M!="string"||M==="")throw new Error("ArgumentError: UPDATE ... FROM target record does not contain a valid $id.");y.has(M)||(y.add(M),g.push(U))}}let h=[];for(let I of g){let C=I[t.targetJoinField]?.value,v=aR(C,s,"target");if(v===null)continue;let P=d.get(v);P!==void 0&&h.push({target:I,source:P})}return h}async function _I(e,t,n,r){if(t.targetJoinField==="$id")return"id";let i=(await ee(e.appId,n,r)).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 DI(e,t,n,r,i,o,a){if(e.cteName!==null){let c=a?.get(e.cteName);if(!c)throw new Error(`ArgumentError: temp table ${e.cteName} is not available.`);for(let u of t)if(!c.columns.includes(u))throw new Error(`ArgumentError: UPDATE ... FROM source column ${u} does not exist.`);return c.rows}let s=await ke(e.appId,r,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 c of n){if(c!=="$id"&&!s.has(c))throw new Error(`ArgumentError: UPDATE ... FROM source column ${c} does not exist.`);let u=c==="$id"?"RECORD_NUMBER":s.get(c);if(LI.has(u??""))throw new Error(`ArgumentError: UPDATE ... FROM does not support source field type ${u} (${c}).`)}return(await it(r.getRecords,e.appId,"",t,{maxRecords:i.maxRecords??1e4,parallel:i.fetchParallel??1,onLimit:"error"})).records.map(c=>Mt(c,null))}function aR(e,t,n){if(typeof e!="string")throw new Error(`ArgumentError: UPDATE ... FROM ${n} key must be a scalar string: ${String(e)}`);if(t==="string"){if(e===""){if(n==="target")return null;throw new Error("ArgumentError: UPDATE ... FROM source key must not be empty.")}return e}if(t==="number"&&n==="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 ${n} key must be a positive safe integer: ${e}`);return String(o)}let r=Ae(e);if(r===null)throw new Error(`ArgumentError: UPDATE ... FROM ${n} key must be a finite decimal: ${e}`);return JSON.stringify(r)}async function Qi(e,t,n,r,i){let o=await $c(e,t,n,r,i,1,!1,!1);if(o.result.errors.length>0){let u=o.result.errors[0];throw new Error(`DmlValidationError: ${u.$err_code} ${u.$err_message} (row=${u.$err_row}, field=${u.$err_field})`)}let a=o.candidates,s=e.type.startsWith("INSERT")?"INSERT":"UPDATE";if(n.confirm&&a.length>0&&!await n.confirm(a.length,s))throw new ye(s,a.length);if(e.type==="INSERT"||e.type==="INSERT_SELECT"){let u=[];for(let d=0;d<a.length;d+=100){let f=await t.postRecords({app:e.appId,records:a.slice(d,d+100).map(R=>R.record)});u.push(f.ids)}return{type:"INSERT",createdIds:u,insertedCount:u.flat().length}}if(e.type==="UPDATE"){let u=a.map(d=>({id:d.targetId,record:d.record}));for(let d=0;d<u.length;d+=100)await t.putRecords({app:e.appId,records:u.slice(d,d+100)});return{type:"UPDATE",updatedCount:u.length}}let l=a.filter(u=>u.mode==="create"),p=a.filter(u=>u.mode==="update").map(u=>({id:u.targetId,record:u.record})),c=0;for(let u=0;u<l.length;u+=100){let d=await t.postRecords({app:e.appId,records:l.slice(u,u+100).map(f=>f.record)});c+=d.ids.length}for(let u=0;u<p.length;u+=100)await t.putRecords({app:e.appId,records:p.slice(u,u+100)});return{type:"UPSERT",insertedCount:c,updatedCount:p.length}}async function vI(e,t,n,r){if(e.applyBlocks?.length)return yI(e,t,n,r);if(e.checkGroups?.length)return Qi(e,t,n,r);if(e.subtableCode)return ZI(e,t,n,r);let i=await pt(e.appId,e.fields,t,r),o=await Ft(e.appId,e.fields,i,t,r),a=await ke(e.appId,t,r),s=oa(e,a,le(n));Mn(s.flatMap(p=>p.records),e.fields,i,o);let l=[];for(let p of s){let c=await t.postRecords(p);l.push(c.ids)}return{type:"INSERT",createdIds:l,insertedCount:l.flat().length}}function MI(){return{type:"SELECT",distinct:!1,columns:[],from:{appId:0,alias:null,cteName:_e},joins:[],where:null,groupBy:[],having:null,orderMode:"CANONICAL",orderBy:[],limit:null,offset:null}}async function em(e,t,n,r,i){if(!n.enableImport)throw new Error("UnsupportedError: IMPORT capability is disabled.");let o=CE(e.source.sourceName,n.importSource);if(e.targets?.some(u=>u.kind==="SUBTABLE")){if(!e.validateOnly&&!n.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 k=new Set(e.targets.filter(G=>G.kind==="SUBTABLE").map(G=>G.subtableCode));if(e.replaceSubtables.some(G=>!k.has(G)))throw new Error("ArgumentError: REPLACE SUBTABLES contains a table not declared in INTO.");for(let G of e.targets.filter(Y=>Y.kind==="SUBTABLE"))if(!G.rowIdSourceHeader||!e.replaceSubtables.includes(G.subtableCode))throw new Error(`ArgumentError: CSV subtable ${G.subtableCode} requires ROW ID SOURCE and REPLACE SUBTABLES declaration.`)}if(e.validationErrorTable&&!i)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");let u=e.targets,d=await ee(e.appId,t,r),f=u.flatMap(k=>k.kind==="FIELD"?[k.field]:k.children),R=d.some(k=>f.includes(k.code)&&k.fieldType==="NUMBER")?await wt(e.appId,t,r):void 0,E=await Va(o,new Map),m=e.source.kind==="JSON"?DE(e.source,E,u,n.maxRecords??1e4):vE(e.source,E,u,e.replaceSubtables??[],n.maxRecords??1e4,e.recordNumberSourceHeader),g=e.source.kind==="CSV"?"UPDATE":e.keyFields?"UPSERT":"INSERT",y=xE(m,u,d,R,g);if(e.source.kind==="CSV")return UI(e,m,y,d,t,n,i);vu(y,e.rejectLimit);let T=[...new Set(u.flatMap(k=>k.kind==="FIELD"?[k.field]:k.children))],h=Uu(y.errors,T),I=[...T,...Mu],C=y.invalidParentRows.size,v={preflight:"ACTUAL_DATA",parents:{total:y.parents.length,valid:y.parents.length-C,invalid:C,mutationCandidates:y.parents.filter(k=>k.valid).length},tables:Object.fromEntries(y.tableCounts),writesKintone:!1},P={type:"VALIDATION",operation:g,validatedRows:y.parents.length,validRows:y.parents.length-C,invalidRows:C,errorCount:h.length,columns:I,errors:h,importDetail:v,...e.validationErrorTable?{errTable:e.validationErrorTable}:{}};if(e.validationErrorTable&&i&&It(i,e.validationErrorTable,I,h,n.tempTableMaxRows??Xe,new Map),e.validateOnly)return P;if(GE(m),y.errors.length>0&&!e.onErrorSkip){let k=y.errors[0];throw new Error(`DmlValidationError: ${k.code} ${k.message} (row=${k.parentRow}, field=${k.field})`)}if(e.onErrorSkip){if(!i||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch and INTO error table.");It(i,e.errorTable,I,h,n.tempTableMaxRows??Xe,new Map)}let U=y.parents.filter(k=>k.valid),M=new Map(d.map(k=>[k.code,k.fieldType])),N=U.map(()=>{});if(e.keyFields){for(let L of e.keyFields)if(!e.fields.includes(L))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${L}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let k=e.keyFields.map(L=>M.get(L)==="NUMBER"),G=new Set,Y=U.map(L=>e.keyFields.map(H=>String(L.top[H]?.value??"")));for(let L of Y){let H=vn(L,k);if(G.has(H))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");G.add(H)}let $=await Ji(e.appId,e.keyFields,Y,t,n,M);Y.forEach((L,H)=>{N[H]=qi($,L)})}let _=u.filter(k=>k.kind==="SUBTABLE").map(k=>k.subtableCode),b=new Map,D=N.filter(k=>k!==void 0);for(let k of Xi([...new Set(D)],100)){let G=await t.getRecords({app:e.appId,query:`$id in (${k.join(",")}) limit 500`,fields:["$id","$revision",..._]});for(let Y of G.records){let $=Number(Y.$id?.value),L=Number(Y.$revision?.value);Number.isFinite($)&&b.set($,{id:$,...Number.isFinite(L)?{revision:L}:{},record:Y})}}let A=KE(U,N,b),w={kind:"IMPORT_JSON_SUBTABLE",rowIdPolicy:"DROP_AND_RENUMBER_ALL",parentsToWrite:A.length,insertedParents:A.filter(k=>k.mode==="INSERT").length,updatedParents:A.filter(k=>k.mode==="UPDATE").length,hasDeletes:A.some(k=>k.tables.some(G=>G.deleteRows>0)),parents:A.map(k=>({parentRow:k.parentRow,mode:k.mode,...k.targetId===void 0?{}:{targetId:k.targetId},tables:k.tables}))};if(A.length>0){if(!n.confirm)throw new Error("UnsupportedError: JSON IMPORT subtable mutation requires explicit confirmation detail approval.");if(!await n.confirm(A.length,e.keyFields?"UPDATE":"INSERT",{statementIndex:0,statementCount:1,statementType:"IMPORT",targetAppId:e.appId,importDetail:w}))throw new ye(e.keyFields?"UPDATE":"INSERT",A.length)}let x=k=>new Map(Object.entries(k).map(([G,Y])=>[G,Y.value])),O=k=>FE(x(k.top),new Map([...k.subtables].map(([G,Y])=>[G,Y.map($=>({values:x($)}))]))),F=A.filter(k=>k.mode==="INSERT"),V=A.filter(k=>k.mode==="UPDATE"),K=[];for(let k=0;k<F.length;k+=100){let G=await t.postRecords({app:e.appId,records:F.slice(k,k+100).map(O)});K.push(G.ids)}for(let k=0;k<V.length;k+=100)await t.putRecords({app:e.appId,records:V.slice(k,k+100).map(G=>({id:G.targetId,...G.revision===void 0?{}:{revision:G.revision},record:O(G)}))});return e.keyFields?{type:"UPSERT",insertedCount:K.flat().length,updatedCount:V.length,affectedRows:A.length,skippedRows:y.invalidParentRows.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:w}:{type:"INSERT",createdIds:K,insertedCount:K.flat().length,affectedRows:A.length,skippedRows:y.invalidParentRows.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:w}}if(e.writeMode==="UPDATE_RECORD_NUMBER")return kI(e,o,t,n,r,i);let a={appId:e.appId,fields:e.fields,select:MI(),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};cs.set(s,l);let p=u=>(l.audit&&Object.assign(u,{importAudit:l.audit}),u);if(s.validateOnly){if(s.validationErrorTable&&!i)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");let u=await Kc(s,t,{...n,onLimitReached:"error"},r,i,1);return s.validationErrorTable&&i&&It(i,s.validationErrorTable,u.columns,u.errors,n.tempTableMaxRows??Xe,kn.get(u)??new Map),p(u)}if(s.onErrorSkip){if(!i)throw new Error("ArgumentError: ON ERROR SKIP requires a batch.");let u=await(s.type==="UPSERT_SELECT",uc(s,t,n,r,i,1));return p(u)}let c=await(s.type==="UPSERT_SELECT"?jc(s,t,n,r,i):Wc(s,t,n,r,i));return p(c)}async function UI(e,t,n,r,i,o,a){if(!e.recordNumberSourceHeader||!e.replaceSubtables?.length)throw new Error("InternalError: incomplete CSV subtable replacement AST.");$E(t.records);let s=t.records.map(b=>b.recordNumberSourceValue??""),l=Fu(s,e.recordNumberSourceHeader),p=[...e.replaceSubtables],c=[...new Set(r.filter(b=>!b.inSubtable&&b.fieldType==="SUBTABLE").map(b=>b.code))],u=await xe(i.getRecords,e.appId,"",["$id","$revision",...c],{maxRecords:o.maxRecords??1e4,parallel:o.fetchParallel??1,onLimit:"error"}),d=new Map,f=new Map;for(let b of u){let D=Number(b.$id?.value),A=Number(b.$revision?.value);if(Number.isFinite(D)){d.set(D,{id:D,...Number.isFinite(A)?{revision:A}:{},record:b});for(let w of c){let x=b[w]?.value;if(Array.isArray(x)){for(let O of x)if(O.id){let F=f.get(O.id)??[];F.push({parentId:D,table:w}),f.set(O.id,F)}}}}}let R=l.normalized.map(b=>b===null?void 0:Number(b)),E=n.parents.map((b,D)=>{let A=[...b.errors];for(let x of l.errors[D])A.push({operation:"UPDATE",parentRow:b.parentRow,field:x.field,code:x.code,message:x.message,sourceValues:t.records[D].top});let w=R[D];return w!==void 0&&!d.has(w)&&A.push({operation:"UPDATE",parentRow:b.parentRow,field:e.recordNumberSourceHeader,code:"ERR_RECORD_NUMBER_NOT_FOUND",message:`record number ${w} does not exist in APP${e.appId}`,sourceValues:t.records[D].top}),{...b,valid:A.length===0,errors:A}}),m=BE(t.records,E,R,d,f),g=m.flatMap(b=>[...b.errors]),y=new Set(m.filter(b=>!b.valid).map(b=>b.parentRow)),T={...n,parents:E,errors:g,invalidParentRows:y};vu(T,e.rejectLimit);let h=m.filter(b=>b.valid),I=m.flatMap(b=>b.tables),C=(b,D)=>I.filter(A=>A.table===b).reduce((A,w)=>A+Number(w[D]),0),v=Object.fromEntries(p.map(b=>[b,{existingRows:C(b,"existingRows"),inputRows:C(b,"inputRows"),updateRows:C(b,"updateRows"),addRows:C(b,"addRows"),deleteRows:C(b,"deleteRows"),rowIdNotFound:C(b,"rowIdNotFound")}])),P={kind:"IMPORT_CSV_SUBTABLE_REPLACE",rowIdPolicy:"PRESERVE_EXISTING",parentsToWrite:h.length,insertedParents:0,updatedParents:h.length,hasDeletes:h.some(b=>b.tables.some(D=>D.deleteRows>0)),totalDeleteRows:h.flatMap(b=>b.tables).reduce((b,D)=>b+D.deleteRows,0),rowIdNotFound:h.flatMap(b=>b.tables).reduce((b,D)=>b+D.rowIdNotFound,0),invalidParents:y.size,parents:h.map(b=>({parentRow:b.parentRow,mode:"UPDATE",targetId:b.targetId,tables:b.tables}))},U=[...new Set(e.targets.flatMap(b=>b.kind==="FIELD"?[b.field]:b.children))],M=Uu(g,U),N=[...U,...Mu];if(e.validateOnly){if(e.validationErrorTable&&!a)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return e.validationErrorTable&&a&&It(a,e.validationErrorTable,N,M,o.tempTableMaxRows??Xe,new Map),{type:"VALIDATION",operation:"UPDATE",validatedRows:E.length,validRows:E.length-y.size,invalidRows:y.size,errorCount:M.length,columns:N,errors:M,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},importDetail:{preflight:"ACTUAL_DATA",parents:{total:E.length,valid:h.length,invalid:y.size,mutationCandidates:h.length},tables:v,rowIdPolicy:"PRESERVE_EXISTING",rowIdNotFound:P.rowIdNotFound,writesKintone:!1}}}if(g.length&&!e.onErrorSkip){let b=g[0];throw new Error(`DmlValidationError: ${b.code} ${b.message} (row=${b.parentRow}, field=${b.field})`)}if(e.onErrorSkip){if(!a||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch and INTO error table.");It(a,e.errorTable,N,M,o.tempTableMaxRows??Xe,new Map)}if(h.length){if(!o.supportsImportConfirmDetail||!o.confirm)throw new Error("UnsupportedError: CSV subtable replacement requires explicit rendered detail approval.");if(!await o.confirm(h.length,"UPDATE",{statementIndex:0,statementCount:1,statementType:"IMPORT",targetAppId:e.appId,importDetail:P}))throw new ye("UPDATE",h.length)}let _=b=>new Map(Object.entries(b).map(([D,A])=>[D,A.value]));for(let b of h){let D=ku(_(b.top),new Map([...b.subtables].map(([A,w])=>[A,w.map(x=>({...x.rowId?{rowId:x.rowId}:{},values:_(x.record)}))])),"PRESERVE");await i.putRecords({app:e.appId,records:[{id:b.targetId,...b.revision===void 0?{}:{revision:b.revision},record:D}]})}return{type:"UPDATE",updatedCount:h.length,affectedRows:h.length,skippedRows:y.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:P}}async function kI(e,t,n,r,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 pt(e.appId,e.fields,n,i),s=await Ft(e.appId,e.fields,a,n,i),l=await Va(t,new Map),p=Lu(e.source,l,r.maxRecords??1e4,e.fields,a,e.recordNumberSourceHeader),c=p.recordNumberSourceValues;if(!c)throw new Error("InternalError: record-number source values were not materialized.");let u=Fu(c,e.recordNumberSourceHeader),d=new Set,f=[...new Set(u.normalized.filter(P=>P!==null))];for(let P=0;P<f.length;P+=100){let U=f.slice(P,P+100),M=await n.getRecords({app:e.appId,query:`$id in (${U.join(",")}) limit 500`,fields:["$id"]});for(let N of M.records){let _=N.$id?.value;typeof _=="string"&&_!==""&&d.add(_.replace(/^0+(?=\d)/,""))}}let R=new Map(a.map(P=>[P.code,P])),E=new Map(e.fields.map(P=>[P,R.get(P)?.fieldType??"SINGLE_LINE_TEXT"])),m=p.rows.map((P,U)=>{let M=u.normalized[U],N=[...p.importRowErrors?.[U]??[],...u.errors[U]];return M!==null&&!d.has(M)&&N.push({field:e.recordNumberSourceHeader,code:"ERR_RECORD_NUMBER_NOT_FOUND",message:`record number ${M} does not exist in APP${e.appId}`}),{rowNumber:U+1,operation:"UPDATE",mode:"update",...M!==null&&d.has(M)?{targetId:Number(M)}:{},payload:new Map([[e.recordNumberSourceHeader,c[U]],...e.fields.map(_=>[_,P[_]??""])]),preErrors:N,record:{},evaluationRow:P,evaluationFieldTypes:E}}),g=[e.recordNumberSourceHeader,...e.fields],y=Bl(m,"UPDATE",g,e.fields,a,1,s,e.checkGroups??[],!1),T=[...g,...or],h={type:"VALIDATION",operation:"UPDATE",validatedRows:m.length,validRows:m.length-y.invalidRows,invalidRows:y.invalidRows,errorCount:y.errors.length,columns:T,errors:y.errors,...e.validationErrorTable??e.errorTable?{errTable:e.validationErrorTable??e.errorTable}:{}};if(Object.assign(h,{importAudit:p.importAudit}),e.validateOnly){if(e.validationErrorTable&&!o)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return e.validationErrorTable&&o&&It(o,e.validationErrorTable,T,y.errors,r.tempTableMaxRows??Xe,new Map),h}if(!e.onErrorSkip&&y.invalidRows>0){let P=y.errors[0];throw new Error(`DmlValidationError: ${P.$err_code} ${P.$err_message} (row=${P.$err_row}, field=${P.$err_field})`)}if(e.onErrorSkip){if(!o||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch.");if(It(o,e.errorTable,T,y.errors,r.tempTableMaxRows??Xe,new Map),e.rejectLimit!=null&&y.invalidRows>e.rejectLimit)throw new Bi(`rejected rows (${y.invalidRows}) exceed REJECT LIMIT (${e.rejectLimit}).`,h)}let I=m.filter(P=>!y.invalidRowNumbers.has(P.rowNumber));if(r.confirm&&!await r.confirm(I.length,"UPDATE"))throw new ye("UPDATE",I.length);let C=I.map(P=>({id:P.targetId,record:P.record}));for(let P=0;P<C.length;P+=100)await n.putRecords({app:e.appId,records:C.slice(P,P+100)});let v={type:"UPDATE",updatedCount:C.length,...e.onErrorSkip?{affectedRows:C.length,skippedRows:y.invalidRows,rejectLimit:e.rejectLimit??null,errTable:e.errorTable}:{}};return Object.assign(v,{insertedCount:0,importAudit:p.importAudit}),v}async function xI(e,t,n,r,i,o){let a=cs.get(e);if(!a){let E=i&&i.size>0?await ct(e.select,t,n,i,r,!0):await xt(e.select,t,n,r,void 0,!0);return{rows:E.rows,columns:E.columns,columnMeta:ue.get(E)}}let s=await Va(a.handle,a.cache),l=n.maxRecords??1e4,p=new Map((o??[]).map(E=>[E.code,E])),c=e.fields.map(E=>({code:E,fieldType:p.get(E)?.fieldType??"SINGLE_LINE_TEXT"})),u=a.source.kind==="JSON"?Ou(a.source,s,c,l):Lu(a.source,s,l,e.fields,o);if(a.audit=u.importAudit,a.source.kind==="JSON"||!a.source.projection)return u;let d=VE(a.source.projection),f=new Map(i??[]);f.set(xu,u);let R=await ct(d,t,{...n,onLimitReached:"error"},f,r,!0);return{rows:R.rows,columns:R.columns,columnMeta:ue.get(R)}}var Vc={materialize:xI};function tm(e){for(let t=0;t<(e.importRowErrors?.length??0);t++){let n=e.importRowErrors?.[t]?.[0];if(n)throw new Error(`DmlValidationError: ${n.code} ${n.message} (row=${t+1}, field=${n.field})`)}}async function Wc(e,t,n,r,i){if(e.checkGroups?.length)return Qi(e,t,n,r,i);let o=await pt(e.appId,e.fields,t,r),a=await Ft(e.appId,e.fields,o,t,r),s=await Vc.materialize(e,t,n,r,i,o),{rows:l,columns:p}=s;if(tm(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(n.confirm&&!await n.confirm(l.length,"INSERT"))throw new ye("INSERT",l.length);let c=await ke(e.appId,t,r),u=l.map((f,R)=>{let E={};return e.fields.forEach((m,g)=>{if(s.importPresence&&!s.importPresence[R]?.has(m))return;let y=f[p[g]]??"";E[m]={value:JR(y,c.get(m))}}),E});u.forEach(f=>Mn([f],e.fields.filter(R=>R in f),o,a));let d=[];for(let f=0;f<u.length;f+=100){let R=u.slice(f,f+100),E=await t.postRecords({app:e.appId,records:R});d.push(E.ids)}return{type:"INSERT",createdIds:d,insertedCount:d.flat().length}}async function pc(e,t,n,r,i){if(e.applyBlocks?.length)return nm(e,t,n,r);if(e.checkGroups?.length&&ut(e.where)){let R=await pt(e.appId,e.assignments.map(m=>m.field),t,r);await Ft(e.appId,e.assignments.map(m=>m.field),R,t,r);let E=await ke(e.appId,t,r);return QR(e,E),Un(e,cc(E,e.appId)),await Er(e,t,r),{type:"UPDATE",updatedCount:0}}if(e.checkGroups?.length)return Qi(e,t,n,r,i);if(e.subtableCode)return await Er(e,t,r),ew(e,t,n,r);let o=await pt(e.appId,e.assignments.map(R=>R.field),t,r),a=e.assignments.map(R=>R.field),s=await Ft(e.appId,a,o,t,r);if(await Er(e,t,r),ut(e.where))return{type:"UPDATE",updatedCount:0};if(e.from!=null)return qI(e,e.from,t,n,r,i);let l=n.maxRecords??1e4;await lm(e.assignments,t,n,r);let p=await ke(e.appId,t,r);if(aa(e)){let R=bl(e),m=(await it(t.getRecords,R.app,R.query,[...R.fields],{maxRecords:l,parallel:n.fetchParallel??1})).records,g=Cl(e,m,p,le(n));if(Mn(g.flatMap(y=>y.records.map(T=>T.record)),a,o,s),n.confirm&&!await n.confirm(m.length,"UPDATE"))throw new ye("UPDATE",m.length);for(let y of g)await t.putRecords(y);return{type:"UPDATE",updatedCount:m.length}}let c=Jr(e),d=(await Ia(t.getRecords,c.app,c.query,{maxRecords:l,parallel:n.fetchParallel??1})).ids,f=Xr(e,d,p);if(Mn(f.flatMap(R=>R.records.map(E=>E.record)),a,o,s),n.confirm&&!await n.confirm(d.length,"UPDATE"))throw new ye("UPDATE",d.length);for(let R of f)await t.putRecords(R);return{type:"UPDATE",updatedCount:d.length}}async function nm(e,t,n,r,i=1){if(!e.validateOnly&&n.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");if(!Nt(e.where))return FI(e,t,n,r,i);let o=await ee(e.appId,t,r),a=Dt(e,o),s=la(e,o),l=Ul(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 c=Number(p.records[0].$id?.value);if(c!==l)throw new Error(`ArgumentError: APPLY snapshot $id ${c} does not match requested $id ${l}.`);da(p.records[0]);let u=gf({statement:e,snapshot:p.records[0],fieldInfos:o,metadata:a,evaluationContext:le(n)}),d=Rt(o,e.assignments.map(I=>I.field)),f=gn(u.postImage,d)?await wt(e.appId,t,r):void 0,R=yn(u.postImage,d,f,i);if(!e.validateOnly&&R.errorCount>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:R.columns,errors:R.errors})}`);let E=Qe(n.dmlMaxRows,"dmlMaxRows",Gt),m=Qe(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ce),g=u.parentRows>E||u.changedSubtableRows>m;if(e.validateOnly){let I=si({plans:[u],records:ti(u).records,validations:[],guards:{revisionRequired:!0,parentRows:u.parentRows,dmlMaxRows:E,subtableRows:u.changedSubtableRows,dmlMaxSubtableRows:m,wouldExceed:g}}),C={type:"VALIDATION",operation:"UPDATE",validatedRows:1,validRows:R.invalidRows===0?1:0,invalidRows:R.invalidRows===0?0:1,errorCount:R.errorCount,columns:[...R.columns],errors:R.errors,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},apply:Vi(I.branches[0]),guards:Wi(I.branches[0]),deletedRows:{total:u.tables.reduce((v,P)=>v+P.deletedRows,0),parentRows:u.tables.some(v=>v.deletedRows>0)?1:0},diagnostic:I};return kn.set(C,gs(R.columns,o,e.appId)),C}if(u.parentRows>E)throw new Error(`ArgumentError: APPLY parent rows (${u.parentRows}) exceed dmlMaxRows (${E}).`);if(u.changedSubtableRows>m)throw new Error(`ArgumentError: APPLY changed subtable rows (${u.changedSubtableRows}) exceed dmlMaxSubtableRows (${m}).`);let y=ca(u,R.normalizedRecord),T=ti(y),h=si({plans:[y],records:T.records,validations:[],guards:{revisionRequired:!0,parentRows:u.parentRows,dmlMaxRows:E,subtableRows:u.changedSubtableRows,dmlMaxSubtableRows:m,wouldExceed:g}});if(n.confirm){let I=ms(h,!1);if(!await n.confirm(u.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPDATE",targetAppId:e.appId,applyDetail:I,applyDiagnostic:h}))throw new ye("UPDATE",u.parentRows)}return await t.putRecords(T),{type:"UPDATE",updatedCount:u.parentRows,diagnostic:Ye(h,{successfulChunks:1,successfulParents:u.parentRows})}}async function FI(e,t,n,r,i){let o=Qe(n.dmlMaxRows,"dmlMaxRows",Gt),a=Qe(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ce),s=await ee(e.appId,t,r),l=Dt(e,s),p;if(ls(e))p=await BI(e,t,n,s,r);else{let f=la(e,s),R=Jr(e).query,E=o+1;p=await xe(t.getRecords,e.appId,R,[...f],{pageSize:Math.min(500,E),parallel:n.fetchParallel??1,maxRecords:E,stopAfter:E,onLimit:"error"})}if(!e.validateOnly&&p.length>o)throw new Error(`ArgumentError: APPLY parent rows (${p.length}) exceed dmlMaxRows (${o}).`);let c=await ma({statement:e,snapshots:p,fieldInfos:s,metadata:l,dmlMaxRows:o,dmlMaxSubtableRows:a,statementNumber:i,loadNumberPrecision:()=>wt(e.appId,t,r)});if(e.validateOnly)return jI(e,c,s);_p("phase15b",e);let u=si(c);if(n.confirm){let f=ms(u);if(!await n.confirm(c.guards.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPDATE",targetAppId:e.appId,applyDetail:f,applyDiagnostic:u}))throw new ye("UPDATE",c.guards.parentRows)}let d=await xf(c,t,u);return{...d,diagnostic:Ye(u,d)}}function ls(e){return(e.applyBlocks?.length??0)>0&&!Nt(e.where)&&(Ht(e.where)||we(e.where))}function GI(e){let t=e.type==="EXPLAIN"?e.query:e;return t.type==="UPDATE"&&ls(t)&&we(t.where)}var KI=`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
12
16
  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
13
- 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 _I(e){if(e.unappliedKlikes.length>0)throw new Error(`UnsupportedError: ${LI}`)}async function DI(e,t,n,r,i){let o=r.filter(R=>!R.inSubtable),a=new Map(o.map(R=>[R.code,R])),s=new Map(o.map(R=>[R.code,R.fieldType])),l=new Map(o.flatMap(R=>R.optionOrder?[[R.code,new Set(Object.keys(R.optionOrder))]]:[])),c=ou(e.where,{fieldTypes:s,fieldOptions:l});_I(c);let p=c.prefilter===null?"":Y(c.prefilter),u=new Set(oa(e,r));for(let R of vI(e.where))u.add(R);let d=await UI(e.appId,e.where,a,t,i);return(await xe(t.getRecords,e.appId,p,[...u],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"})).map(R=>({snapshot:R,row:Ut(R,null)})).filter(({row:R})=>le(e.where,R,d.fieldTypeResolver,c.appliedKlikes,d.fieldSemanticsResolver,se(n))).map(({snapshot:R})=>R)}function vI(e){return Sc(e)}async function UI(e,t,n,r,i){let s=[...MI(t)].some(p=>n.get(p)?.fieldType==="STATUS")?await kc(e,r,i):void 0;return{fieldTypeResolver:p=>p.field==="$id"?"NUMBER":n.get(p.field)?.fieldType,fieldSemanticsResolver:p=>{if(p.field==="$id")return qn(te({fieldType:"__ID__"}),e,"$id");let u=n.get(p.field);if(!u)return;let d=u.semantics??te(u),f=u.fieldType==="STATUS"&&s?{...d,optionOrder:s}:d;return qn(f,e,u.code)}}}function MI(e){let t=new Set,n=r=>{if(Array.isArray(r)){r.forEach(n);return}if(r===null||typeof r!="object")return;let i=r;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(n)}};return n(e),t}function kI(e,t,n){let r=t.validations.flatMap(p=>p.errors),i=t.validations.reduce((p,u)=>p+(u.invalidRows>0?1:0),0),o=t.validations[0]?.columns?[...t.validations[0].columns]:[...Et(n,e.fields).payloadFields,...ni],a=t.guards.parentRows,s=zl(t),l=s.branches[0],c={type:"VALIDATION",operation:"INSERT",validatedRows:a,validRows:a-i,invalidRows:i,errorCount:r.length,columns:o,errors:r,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},apply:Ki(l),guards:Bi(l),deletedRows:{total:0,parentRows:0},diagnostic:s};return Un.set(c,Rs(o,n,e.appId)),c}function xI(e,t,n){let r=t.validations,i=r.flatMap(c=>c.errors),o=r.reduce((c,p)=>c+(p.invalidRows>0?1:0),0),a=r[0]?.columns?[...r[0].columns]:[...Et(n,e.assignments.map(c=>c.field)).payloadFields,...ni],s=oi(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:Ki(s.branches[0]),guards:Bi(s.branches[0]),deletedRows:{total:t.plans.reduce((c,p)=>c+p.tables.reduce((u,d)=>u+d.deletedRows,0),0),parentRows:t.plans.filter(c=>c.tables.some(p=>p.deletedRows>0)).length},diagnostic:s};return Un.set(l,Rs(a,n,e.appId)),l}function FI(e,t,n){let r=t.create.validations.flatMap(R=>R.errors),i=t.update.validations.flatMap(R=>R.errors),o=[...r,...i].map(R=>({...R,$err_operation:"UPSERT"})),a=new Set(o.map(R=>R.$err_row)).size,s=t.create.validations[0]?.columns??t.update.validations[0]?.columns??[...Et(n,e.fields).payloadFields,...ni],l=ql(t),c=l.branches.find(R=>R.branch==="insert"),p=l.branches.find(R=>R.branch==="update"),u=Ki(c),d=Ki(p),f={type:"VALIDATION",operation:"UPSERT",validatedRows:t.guards.parentRows,validRows:t.guards.parentRows-a,invalidRows:a,errorCount:o.length,columns:[...s],errors:o,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},apply:[...u,...d],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:u,guards:Bi(c)},update:{apply:d,guards:Bi(p)}},deletedRows:{total:t.update.plans.reduce((R,E)=>R+E.tables.reduce((m,y)=>m+y.deletedRows,0),0),parentRows:t.update.plans.filter(R=>R.tables.some(E=>E.deletedRows>0)).length},diagnostic:l};return Un.set(f,Rs([...s],n,e.appId)),f}function Ki(e){return e.targets.map(t=>{let n=t.operations.map(r=>({kind:r.kind,...r.matchedRows!==void 0?{matchedRows:r.matchedRows??void 0}:{},...r.changedRows!==void 0?{changedRows:r.changedRows??void 0}:{},...r.addedRows!==void 0?{addedRows:r.addedRows??void 0}:{},...r.removedRows!==void 0?{removedRows:r.removedRows??void 0}:{},...r.value!==void 0?{value:r.value}:{},...r.changed!==void 0?{changed:r.changed}:{}}));return t.targetKind==="SUBTABLE"?{field:t.field,operations:n,changedSubtableRows:t.changedCount??0,deletedRows:Cn(t,"REMOVE")}:{field:t.field,operations:n,changedSubtableRows:0,deletedRows:0,multiValue:{fieldType:t.fieldType??"UNKNOWN",addedValues:Cn(t,"ADD"),removedValues:Cn(t,"REMOVE_VALUE"),changedValues:t.changedCount??0,postImages:t.postImages??[]}}})}function Bi(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 Gt=100,Ce=500;function Qe(e,t,n){let r=e??n;if(!Number.isSafeInteger(r)||r<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`);return r}function Rs(e,t,n){let r=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:te({fieldType:"RECORD_NUMBER"})});continue}let s=r.get(a);if(s){o.set(a,Ue(s,n));continue}o.set(a,Q(i.has(a)?"number":"string"))}return o}async function GI(e,t,n,r,i,o){let a=await qR(e,t,n,r,i,o),s=await ke(e.appId,n,i),l=Cl(e,a,s,se(r)),c=e.assignments.map(d=>d.field),p=await ee(e.appId,n,i),u=await Ft(e.appId,c,p,n,i);if(Dn(l.flatMap(d=>d.records.map(f=>f.record)),c,p,u),r.confirm&&!await r.confirm(a.length,"UPDATE"))throw new ge("UPDATE",a.length);for(let d of l)await n.putRecords(d);return{type:"UPDATE",updatedCount:a.length}}function KI(e){let t=new Set(["$id"]);e.from&&t.add(e.from.targetJoinField);let n=r=>{if(Array.isArray(r)){r.forEach(n);return}if(r===null||typeof r!="object")return;let i=r;i.type==="FIELD_REF"&&typeof i.field=="string"&&t.add(i.field);for(let o of Object.values(i))n(o)};for(let r of e.assignments)r.value.type!=="SOURCE_FIELD"&&n(r.value);return[...t]}async function BI(e,t,n,r){if(await pr(e,t,r),ut(e.where))return{type:"DELETE",deletedCount:0};if(e.subtableCode)return HI(e,t,n,r);let i=af(e),a=(await Aa(t.getRecords,i.app,i.query,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1})).ids;if(n.confirm&&!await n.confirm(a.length,"DELETE"))throw new ge("DELETE",a.length);let s=sf(e.appId,a);for(let l of s)await t.deleteRecords(l);return{type:"DELETE",deletedCount:a.length}}async function $I(e,t,n,r){if(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length)return uI(e,t,n,r);if(e.checkGroups?.length)return qi(e,t,n,r);let i=await pt(e.appId,e.fields,t,r),o=await Ft(e.appId,e.fields,i,t,r),a=[],s=[],l=await ke(e.appId,t,r),c=ZR(e),p=await ji(e.appId,e.keyFields,c,t,n,l);if(e.values.forEach((d,f)=>{let R={};e.fields.forEach((m,y)=>{let g=d[y];g.type==="CASE_VALUE"?R[m]={value:nn(g.expr,{},l.get(m),se(n))}:R[m]={value:_t(g,l.get(m))}});let E=Yi(p,c[f]);E!==void 0?s.push({id:E,record:R}):a.push(R)}),Dn([...a,...s.map(d=>d.record)],e.fields,i,o),n.confirm&&a.length+s.length>0){let d=a.length+s.length;if(!await n.confirm(d,"UPDATE"))throw new ge("UPDATE",d)}let u=[];for(let d=0;d<a.length;d+=100){let f=await t.postRecords({app:e.appId,records:a.slice(d,d+100)});u.push(f.ids)}for(let d=0;d<s.length;d+=100)await t.putRecords({app:e.appId,records:s.slice(d,d+100)});return{type:"UPSERT",insertedCount:u.flat().length,updatedCount:s.length}}function ZR(e){return e.values.map(t=>e.keyFields.map(n=>{let r=e.fields.indexOf(n);if(r===-1)throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${n}\u300D\u304C INSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let i=t[r];return i.type==="STRING"?i.value:i.type==="NUMBER"?z(i):i.type==="CASE_VALUE"?Ke(i.expr,{}):i.elements.map(o=>o.value).join(",")}))}async function $c(e,t,n,r){if(t.length===0)return;let i=await ke(e,n,r);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 WI(e,t,n,r){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 xe(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),s=ms(a),l=new Map;for(let p of e.values){let u=iR(p[o]);if(!s.get(u))throw new Error(`_pid=${u} \u306E\u89AA\u30EC\u30B3\u30FC\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093`);let f={value:{}};e.fields.forEach((E,m)=>{if(E!=="_pid"){if(E.startsWith("_"))throw new Error(`\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB INSERT \u3067\u30B7\u30B9\u30C6\u30E0\u5217\u300C${E}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`);f.value[E]={value:iR(p[m])}}});let R=l.get(u);R?R.push(f):l.set(u,[f])}let c=[];for(let[p,u]of l.entries()){let d=s.get(p),R=[...Ji(d,i),...u];c.push(em(e.appId,p,Xi(d),i,R))}for(let p of c)await t.putRecords(p);return{type:"INSERT",createdIds:[],insertedCount:e.values.length}}async function VI(e,t,n,r){let i=e.subtableCode;if(!_i(e.where))throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u306F _rid \u6761\u4EF6\u304C\u5FC5\u9808\u3067\u3059");let o=[];kt(e.where,o);for(let d of e.assignments)d.value.type==="CASE_VALUE"&&is(d.value.expr,o);let a=await $c(e.appId,o,t,r),s=await xe(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),c=Wc(s,i).filter(d=>le(e.where,d.flat,a,void 0,void 0,se(n)));if(n.confirm&&!await n.confirm(c.length,"UPDATE"))throw new ge("UPDATE",c.length);let p=new Map;for(let d of c){if(!d.rowId)throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u5BFE\u8C61\u306B id \u672A\u63A1\u756A\u306E\u884C\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059");let f=p.get(d.parentId);f||(f=new Map,p.set(d.parentId,f));let R={};for(let E of e.assignments){if(E.field.startsWith("_"))throw new Error(`\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u3067\u30B7\u30B9\u30C6\u30E0\u5217\u300C${E.field}\u300D\u306F\u66F4\u65B0\u3067\u304D\u307E\u305B\u3093`);R[E.field]={value:ia(E.value,d.flat,a,se(n))}}f.set(d.rowId,R)}let u=ms(s);for(let[d,f]of p.entries()){let R=u.get(d);if(!R)continue;let m=Ji(R,i).map(y=>{let g=y.id??"";if(!g)return y;let S=f.get(g);return S?{id:g,value:S}:{id:g}});await t.putRecords(YI(e.appId,d,Xi(R),i,m))}return{type:"UPDATE",updatedCount:c.length}}async function HI(e,t,n,r){let i=e.subtableCode;if(!_i(e.where))throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB DELETE \u306B\u306F _rid \u6761\u4EF6\u304C\u5FC5\u9808\u3067\u3059");let o=[];kt(e.where,o);let a=await $c(e.appId,o,t,r),s=await xe(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),c=Wc(s,i).filter(d=>le(e.where,d.flat,a,void 0,void 0,se(n)));if(n.confirm&&!await n.confirm(c.length,"DELETE"))throw new ge("DELETE",c.length);let p=new Map;for(let d of c){let f=p.get(d.parentId);f?f.push(d.rowIndex):p.set(d.parentId,[d.rowIndex])}let u=ms(s);for(let[d,f]of p.entries()){let R=u.get(d);if(!R)continue;let E=Ji(R,i),m=new Set(f),y=E.filter((g,S)=>!m.has(S));await t.putRecords(em(e.appId,d,Xi(R),i,y))}return{type:"DELETE",deletedCount:c.length}}function ms(e){let t=new Map;for(let n of e){let r=String(n.$id?.value??"");r&&t.set(r,n)}return t}function Wc(e,t){let n=[];for(let r of e){let i=String(r.$id?.value??""),o=Xi(r),a=Ji(r,t);for(let s=0;s<a.length;s++){let l=a[s],c={...aa(l,s),_pid:i};for(let[p,u]of Object.entries(r))p!==t&&(c[`_p.${p}`]=uc(u?.value));n.push({parent:r,parentId:i,parentRevision:o,rowIndex:s,rowId:l.id??"",row:l,flat:c})}}return n}function Ji(e,t){let n=e[t]?.value;return Array.isArray(n)?n:[]}function Xi(e){let t=Number(e.$revision?.value??0);return Number.isFinite(t)?t:0}function em(e,t,n,r,i){return{app:e,records:[{id:Number(t),revision:n,record:{[r]:{value:i}}}]}}function YI(e,t,n,r,i){return{app:e,records:[{id:Number(t),revision:n,record:{[r]:{value:i}}}]}}function jI(e,t,n,r,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:n,record:{[r]:{value:i.map(o=>({id:o}))}}}]}}function iR(e){return e.type==="STRING"?e.value:e.type==="NUMBER"?z(e):e.type==="CASE_VALUE"?Ke(e.expr,{}):e.elements.map(t=>t.value).join(",")}function uc(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 _i(e){switch(e.type){case"BINARY":return e.left.type==="FIELD"&&e.left.tableAlias===null&&e.left.field==="_rid";case"LOGICAL":return _i(e.left)||_i(e.right);case"NOT":case"GROUP":return _i(e.expr);default:return!1}}async function zI(e,t,n,r){let i=[];kt(e.where,i);let o=await $c(e.appId,i,t,r),a=await ee(e.appId,t,r);if(ut(e.where))return{type:"REORDER",reorderedParentCount:0};let s=new Map(a.map(f=>[f.code,f.semantics??te(f)])),l=f=>{if(f.field==="_idx"||f.field==="_pid"||f.field==="_rid")return $("number");let R=f.field.startsWith("_p.")?f.field.slice(3):f.field;return s.get(R)??$("string")},c=await xe(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),p=Wc(c,e.subtableCode),u=e.all?new Set(c.map(f=>String(f.$id?.value??"")).filter(f=>f!=="")):new Set(p.filter(f=>e.where&&le(e.where,f.flat,o,void 0,l,se(n))).map(f=>f.parentId));if(n.confirm&&!await n.confirm(u.size,"UPDATE"))throw new ge("UPDATE",u.size);let d=ms(c);for(let f of u){let R=d.get(f);if(!R)continue;let m=Ji(R,e.subtableCode).map((g,S)=>({row:g,i:S,flat:qI(R,e.subtableCode,g,S)}));m.sort((g,S)=>JI(g.flat,S.flat,e.by,l,se(n)));let y=m.map(g=>g.row.id??"");await t.putRecords(jI(e.appId,f,Xi(R),e.subtableCode,y))}return{type:"REORDER",reorderedParentCount:u.size}}function qI(e,t,n,r){let i={_pid:String(e.$id?.value??""),_rid:n.id??"",_idx:String(r)};for(let[o,a]of Object.entries(e))o!==t&&(i[`_p.${o}`]=uc(a?.value));for(let[o,a]of Object.entries(n.value??{}))i[o]=uc(a?.value);return i}function JI(e,t,n,r,i={}){for(let o of n){let a=oR(o.key,e,i),s=oR(o.key,t,i),l=o.key.type==="FIELD_NAME"?r(Me(o.key.name)):o.key.type==="ARITH_KEY"?$("number"):o.key.type==="FUNC_KEY"?On(o.key.expr).semantics??$("string"):$("number"),c=rt(a,s,l??$("string"));if(c!==0)return o.direction==="ASC"?c:-c}return 0}function oR(e,t,n={}){switch(e.type){case"FIELD_NAME":return t[e.name]??"";case"ARITH_KEY":return String(me(e.expr,t,n));case"FUNC_KEY":return ye(e.expr,t,void 0,void 0,n);case"GROUPING_KEY":throw new Error("ArgumentError: GROUPING() is not supported in REORDER BY.")}}async function Vc(e,t,n,r,i){if(e.checkGroups?.length)return qi(e,t,n,r,i);let o=await pt(e.appId,e.fields,t,r),a=await Ft(e.appId,e.fields,o,t,r),s=await Kc.materialize(e,t,n,r,i,o),{rows:l,columns:c}=s;if(XR(s),c.length!==e.fields.length){let y=c.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${c.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 p=[],u=[],d=await ke(e.appId,t,r),f=l.map((y,g)=>{let S={};return e.fields.forEach((h,I)=>{if(s.importPresence&&!s.importPresence[g]?.has(h))return;let N=y[c[I]]??"";S[h]={value:YR(N,d.get(h))}}),S});f.forEach(y=>Dn([y],e.fields.filter(g=>g in y),o,a));let R=f.map(y=>e.keyFields.map(g=>String(y[g]?.value??"")));if(ls.has(e)){let y=e.keyFields.map(S=>d.get(S)==="NUMBER"),g=new Set;for(let S of R){let h=_n(S,y);if(g.has(h))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");g.add(h)}}let E=await ji(e.appId,e.keyFields,R,t,n,d);if(f.forEach((y,g)=>{let S=Yi(E,R[g]);S!==void 0?u.push({id:S,record:y}):p.push(y)}),n.confirm&&p.length+u.length>0){let y=p.length+u.length;if(!await n.confirm(y,"UPDATE"))throw new ge("UPDATE",y)}let m=[];for(let y=0;y<p.length;y+=100){let g=await t.postRecords({app:e.appId,records:p.slice(y,y+100)});m.push(g.ids)}for(let y=0;y<u.length;y+=100)await t.putRecords({app:e.appId,records:u.slice(y,y+100)});return{type:"UPSERT",insertedCount:m.flat().length,updatedCount:u.length}}var Hc=Object.freeze(["\u30A2\u30D7\u30EAID","\u30A2\u30D7\u30EA\u540D","\u8AAC\u660E"]),Yc=Object.freeze(["\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9","\u30E9\u30D9\u30EB","\u30BF\u30A4\u30D7","\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB","\u30EB\u30C3\u30AF\u30A2\u30C3\u30D7","\u30B3\u30D4\u30FC\u5143","\u91CD\u8907\u7981\u6B62","\u8A08\u7B97\u5F0F"]);async function tm(e){let t=await e.getApps(),n=[...Hc],r=t.map(i=>({\u30A2\u30D7\u30EAID:String(i.appId),\u30A2\u30D7\u30EA\u540D:i.name,\u8AAC\u660E:i.description}));return{type:"SELECT",rows:r,columns:n,rowCount:r.length}}async function nm(e,t,n){let r=await ee(e.appId,t,n),i=[...Yc],o=r.map(a=>({\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9:a.code,\u30E9\u30D9\u30EB:a.label,\u30BF\u30A4\u30D7:a.fieldType,\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB:a.inSubtable===!0?a.subtableCode??"":"",\u30EB\u30C3\u30AF\u30A2\u30C3\u30D7:a.hasLookup===!0?"YES":"",\u30B3\u30D4\u30FC\u5143:a.isLookupCopyTarget===!0?"YES":"",\u91CD\u8907\u7981\u6B62:a.isUnique===!0?"YES":"",\u8A08\u7B97\u5F0F:a.isCalculated===!0?"YES":""}));return{type:"SELECT",rows:o,columns:i,rowCount:o.length}}function XI(e,t=!1){try{let n=new Zt(e).tokenize(),r=new en(n,{import:t}).parse();return Wn("phase15b",r),nt(r),r}catch(n){throw n instanceof ve||n instanceof T,n}}async function $i(e,t,n,r,i,o){let a=[];Za(e,t,n,r,a,i,o),await Promise.all(a)}async function rm(e,t,n,r,i,o){let a=[];for(let s of e.columns)if(s.type==="CASE_COL")for(let l of s.expr.branches)a.push($i(l.condition,t,n,r,i,o));await Promise.all(a)}function Di(e,t,n,r,i){return i!==void 0&&i.size>0?ct(e,t,n,i,r):xt(e,t,n,r)}function Za(e,t,n,r,i,o,a){if(e!==null)switch(e.type){case"BINARY":{let s=e.right;s.type==="SUBQUERY_IN_LIST"&&i.push(Di(s.query,t,n,r,a).then(l=>{for(let p of l.warnings??[])o.add(p);let c=s.column??l.columns[0]??"";s.resolved=new Set(l.rows.map(p=>p[c]??""))})),s.type==="SCALAR_SUBQUERY"&&i.push(Di(s.query,t,n,r,a).then(l=>{for(let p of l.warnings??[])o.add(p);if(l.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(l.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 c=l.columns[0]??"";s.resolved=l.rows[0]?.[c]??""}));break}case"LOGICAL":Za(e.left,t,n,r,i,o,a),Za(e.right,t,n,r,i,o,a);break;case"NOT":case"GROUP":Za(e.expr,t,n,r,i,o,a);break;case"EXISTS":{let s=e;i.push(Di(s.query,t,n,r,a).then(l=>{for(let c of l.warnings??[])o.add(c);s.resolved=l.rowCount>0}));break}case"BOOLEAN":break}}async function im(e,t,n,r){for(let i of e){if(i.value.type!=="SCALAR_SUBQUERY")continue;let o=await xt(i.value.query,t,n,r);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 om(e,t,n,r,i,o){let a=new Map,s=[];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),f=a.get(d);f||(f=Di(u.query,t,n,r,o).then(R=>{for(let m of R.warnings??[])i.add(m);if(R.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(R.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=R.columns[0]??"";return R.rows[0]?.[E]??""}),a.set(d,f)),s.push([p,f])}let l=await Promise.all(s.map(([,p])=>p)),c=new Map;return s.forEach(([p],u)=>c.set(p,l[u])),c}var am=new WeakMap,sm=new WeakMap,lm=new WeakMap,cc=new WeakMap,jc=new WeakMap,um=new WeakMap,cm=new WeakMap;async function pm(e,t,n,r=1e4,i,o){let a=new Set,s=new Set,l=new Set,c={...t,getFields:async C=>(a.add(C),t.getFields(C)),getProcessStatuses:async C=>(s.add(C),t.getProcessStatuses(C)),getNumberPrecision:async C=>(l.add(C),t.getNumberPrecision(C))},p=new Map,u=new Map,d=new Map,f=new Set,R=i??await Vi(e,c,n),E=C=>R.nodes.find(_=>_.source===C||JSON.stringify(_.source)===JSON.stringify(C)),m=new Map(o??[]),y=new Set(o?.keys()??[]),g=new Map([...o??new Map].map(([C,_])=>[C,_.rows.length])),S=new WeakMap,h=C=>ce(C)??(C.appId>0?`APP${C.appId}`:"source"),I=C=>C.cteName===_e?1:C.cteName!==null?g.get(C.cteName)??null:null,N=C=>{let _=I(C.from),b=h(C.from),D=[];for(let w of C.joins){let x=I(w.table),O=h(w.table);if(w.type==="CROSS"){let F=_!==null&&x!==null?si(_,x):null;D.push({leftLabel:b,rightLabel:O,leftRows:_,rightRows:x,plan:F,rightRuntimeLabel:w.table.cteName===null?`APP${w.table.appId} fetched rows`:`${O} materialized rows`}),_=F?.outputRows??null,b=`${b} \xD7 ${O}`}else _=null,b=`${b} ${w.type} JOIN ${O}`}if(D.length>0&&jc.set(C,D),ut(C.where)?_=0:C.where!==null&&(_=null),(Z(C).type!=="NONE"||C.distinct||C.having!==null||jn(C)||C.columns.some(w=>w.type==="WINDOW_COL"))&&(_=null),_!==null){let w=C.offset??0;_=Math.max(0,_-w),C.limit!==null&&(_=Math.min(_,C.limit)),S.set(C,_)}},U=async C=>{let _=[C.from,...C.joins.map(D=>D.table)];if(_.length>1&&C.columns.some(D=>D.type==="WILDCARD"||D.type==="PARENT_WILDCARD"))throw new Error("ArgumentError: EXPLAIN could not determine the relation output schema for a multi-source wildcard SELECT.");let b=[];for(let D of _){if(D.cteName!==null){if(D.cteName===_e)continue;let w=m.get(D.cteName);if(!w)throw new Error(`ArgumentError: EXPLAIN could not determine the relation output schema for ${D.cteName}.`);b.push(...w.columns);continue}let A=await ee(D.appId,c,n);D.subtableCode?(b.push(...A.filter(w=>w.inSubtable&&(w.subtableCode===D.subtableCode||w.subtableCode===void 0)).map(w=>w.code)),b.push("_pid","_rid","_idx"),b.push(...A.filter(w=>!w.inSubtable).map(w=>`_p.${w.code}`))):(b.push(...A.filter(w=>!w.inSubtable).map(w=>w.code)),b.push(...mo))}return[...new Set(b)]},P=async C=>{if(C===null||typeof C!="object")throw new Error("ArgumentError: EXPLAIN could not determine the relation output schema.");let _=C;if(_.type==="SELECT"){let b=C,D=await U(b);if(b.columns.length===1&&b.columns[0].type==="WILDCARD")return D;let A=[];for(let w of b.columns)w.type==="WILDCARD"?A.push(...D):w.type==="PARENT_WILDCARD"?A.push(...D.filter(x=>x.startsWith("_p."))):A.push(...Sn([],[w]).columns);return A}if(_.type==="UNION")return P(_.left);if(_.type==="SHOW_APPS")return[...Hc];if(_.type==="DESCRIBE")return[...Yc];if(_.type==="GENERATE_SERIES")return[C.columnAlias];throw new Error("ArgumentError: EXPLAIN could not determine the relation output schema.")},M=async C=>{if(C===null||typeof C!="object")return;if(Array.isArray(C)){for(let b of C)await M(b);return}let _=C;if(_.type==="WITH"){let b=C;for(let D of b.ctes){if(await M(D.query),D.query.type==="GENERATE_SERIES"){if(D.query.args.some(x=>x.type==="VARIABLE")){m.set(D.name,{rows:[],columns:[D.query.columnAlias]});continue}let w=WR(D.query);m.set(D.name,{rows:w.rows,columns:w.columns,columnMeta:ue.get(w),uniqueGeneratedColumn:D.query.columnAlias}),y.add(D.name),g.set(D.name,w.rows.length);continue}let A=await P(D.query);if(m.set(D.name,{rows:[],columns:A}),D.query.type==="SELECT"){let w=S.get(D.query);w!==void 0&&g.set(D.name,w)}}await M(b.query);return}if(_.type==="UNION"){await M(_.left),await M(_.right);return}if(_.type==="SELECT"){let b=C;N(b);for(let w of b.columns)w.type==="SCALAR_SUBQUERY_COL"&&await M(w.query);if(await M(b.where),await M(b.having),await Mi(b,c,n,m),![b.from,...b.joins.map(w=>w.table)].some(w=>w.cteName!==null&&!m.has(w.cteName))){let w=await fr(b,c,n,m);w&&d.set(b,w)}return}for(let b of Object.values(_))await M(b)};await M(e);let v=async C=>{if(C===null||typeof C!="object"||f.has(C))return;if(f.add(C),Array.isArray(C)){await Promise.all(C.map(v));return}let _=C;if(_.type==="SELECT"){let b=C;await Mi(b,c,n);let D=[b.from,...b.joins.map(L=>L.table)].some(L=>L.cteName!==null);if(Z(b).type==="PLAIN"&&!D){let L=await fr(b,c,n);L&&d.set(b,L)}let A=[b.from,...b.joins.map(L=>L.table)].filter(L=>L.cteName===null).map(L=>L.appId);(gt(b.where)||b.orderBy.length>0||b.columns.some(L=>L.type==="WINDOW_COL"&&L.orderBy.length>0))&&A.forEach(L=>a.add(L));let{resolver:x,rewrites:O}=await bn(b,c,n);O.length>0&&cc.set(b,O);let F=he(b.where,x),W=E(b);if(F.capability==="UNSUPPORTED"&&!W)throw new Error(`ArgumentError: WHERE predicate is unsupported (${Nn(F)}).`);p.set(b,F);let K=await cs(b,c,n),G=Cc.get(b)??us(b,K);G&&am.set(b,G);let j=G??fn(b,K);sm.set(b,j);let B=new Map;for(let L of b.joins){let H=L.table.alias;if(L.type!=="INNER"||!H||L.table.subtableCode)continue;let ne=L.on.left.tableAlias,Oe=L.on.right.tableAlias;if(!ne||!Oe)continue;let Kt=ne===H&&Oe!==H?Oe:Oe===H&&ne!==H?ne:void 0,re=ne===H?L.on.right.field:L.on.left.field,Bt=ne===H?L.on.left.field:L.on.right.field;if(!Kt)continue;let $t=[b.from,...b.joins.map(Le=>Le.table)].find(Le=>ce(Le)===Kt),Ns;if(L.table.cteName!==null)Ns=m.get(L.table.cteName)?.columnMeta?.get(Bt);else{let Le=(await ee(L.table.appId,c,n)).find(et=>et.code===Ee(L.table,Bt));Ns=Le?Ue(Le,L.table.appId):Je(Bt)}let Cs,Ps,op,ap;if($t?.cteName!==null&&$t?.cteName!==void 0){let Le=m.get($t.cteName);Cs=Le?.columnMeta?.get(re),y.has($t.cteName)&&Le&&(op=Le.rows.length,Ps=Le.rows.map(et=>Uc(et[re])),ap=Ps.some(et=>et.length===0))}else if($t){let Le=(await ee($t.appId,c,n)).find(et=>et.code===Ee($t,re));Cs=Le?Ue(Le,$t.appId):Je(re)}let io=eu({fieldType:Ns?.fieldType,sourceSemantics:Cs?.semantics,sourceRowCount:op,values:Ps,hasEmptyValue:ap,maxInKeys:Xa});if(io.kind==="FALLBACK"&&io.reason==="JOIN_KEY_VALUES_RUNTIME"&&(G?.joinPlan.items.some(et=>et.targetAlias===H)||G?.joinPlan.serverFunctionConsumptions.some(et=>et.targetAlias===H)))continue;let ey=Zl(io,Bt,xi),sp=j.joinConditions.get(H),ty=sp?Y(sp):void 0,ny=j.joinRelations.get(H);B.set(H,{plan:io,queries:ey,additionalQuery:ty,additionalRelation:ny})}if(B.size>0&&lm.set(b,B),b.orderBy.length>0||b.columns.some(L=>L.type==="WINDOW_COL"&&L.orderBy.length>0)){let L=await Fi(b,c,n);if(b.orderMode!=="KINTONE_NATIVE")for(let H of L.semantics.values())H.fieldType==="STATUS"&&H.source&&s.add(H.source.appId);if(ns(b)&&!D&&W?.allowed!==!1){let H=F.capability==="EXACT_PUSHDOWN"?Ve(b):"FULL_SCAN";u.set(b,(b.orderMode==="KINTONE_NATIVE"?pi:ci)({stmt:b,staticMode:H,whereCapability:F.capability,whereReasons:F.reasons,orderSemantics:L.semantics,maxRecords:r,hasKlike:we(b.where)}))}}}else if(_.type==="VALIDATE"){let b=C;a.add(b.appId);let D=await ee(b.appId,c,n),A=new Map(D.filter(L=>!L.inSubtable).map(L=>[L.code,L])),w=new Set(D.filter(L=>L.inSubtable).map(L=>L.code)),x=Vl(b,D),O=tr(b.checkGroups??[]),F=Sc(b.where);for(let L of O){if(L.field!=="$id"&&!A.has(L.field)&&!w.has(L.field))throw Ne(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${L.field} \u306F APP${b.appId} \u306B\u5B58\u5728\u3057\u307E\u305B\u3093`);if(L.field!=="$id"&&!A.has(L.field)&&w.has(L.field))throw new Error(`ArgumentError: VALIDATE \u306E CHECK \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${L.field} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}for(let L of F){if(L!=="$id"&&!A.has(L)&&!w.has(L))throw new Error(`ArgumentError: WHERE field ${L} does not exist in APP${b.appId}.`);if(L!=="$id"&&!A.has(L)&&w.has(L))throw new Error(`ArgumentError: VALIDATE \u306E WHERE \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${L} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let W=new Map([...A].map(([L,H])=>[L,H.fieldType]));W.set("$id","RECORD_NUMBER"),vn(b,W);let K=he(b.where,L=>L.field==="$id"?te({fieldType:"__ID__"}):A.get(L.field)?.semantics??(A.has(L.field)?te(A.get(L.field)):void 0));if(K.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Nn(K)}).`);let k=new Map([...A].map(([L,H])=>[L,H.fieldType])),G=new Map([...A.values()].flatMap(L=>L.optionOrder?[[L.code,new Set(Object.keys(L.optionOrder))]]:[])),j=b.where===null?null:K.capability==="EXACT_PUSHDOWN"?b.where:rl(b.where,{allowUnqualifiedFields:!0,fieldTypes:k,fieldOptions:G,allowKlike:!1}),B=x.some(L=>L.field.fieldType==="NUMBER");B&&(l.add(b.appId),await It(b.appId,c,n)),um.set(b,{targetFields:x.map(L=>L.subtableCode?`${L.subtableCode}(${L.field.code})`:L.field.code),fetchFields:[...new Set(["$id",...x.map(L=>L.subtableCode??L.field.code),...F,...O.map(L=>L.field)])],subtables:new Map([...new Set(x.flatMap(L=>L.subtableCode?[L.subtableCode]:[]))].map(L=>[L,x.filter(H=>H.subtableCode===L).length])),capability:K,prefilter:j,numberPrecision:B})}else if(_.type==="UPDATE"||_.type==="DELETE"){if(a.add(C.appId),_.type==="UPDATE"&&C.applyBlocks?.length){let D=C,A=await ee(D.appId,c,n);if(Dt(D,A),os(D)){let w=A.filter(O=>!O.inSubtable),x=ou(D.where,{fieldTypes:new Map(w.map(O=>[O.code,O.fieldType])),fieldOptions:new Map(w.flatMap(O=>O.optionOrder?[[O.code,new Set(Object.keys(O.optionOrder))]]:[]))});cm.set(D,x)}}let b=C;(b.type!=="UPDATE"||!os(b))&&E(b)?.allowed!==!1&&await pr(b,c,n)}await Promise.all(Object.values(_).map(v))};if(await v(e),typeof e=="object"&&e!==null&&e.type==="WITH"&&zt(e)){let C=qt(e),{resolver:_,rewrites:b}=await bn(C,c,n);b.length>0&&cc.set(C,b);let D=he(C.where,_),A=E(C);if(D.capability==="UNSUPPORTED"&&!A)throw new Error(`ArgumentError: WHERE predicate is unsupported (${Nn(D)}).`);if(p.set(C,D),ns(C)&&A?.allowed!==!1){let w=await Fi(C,c,n);u.set(C,(C.orderMode==="KINTONE_NATIVE"?pi:ci)({stmt:C,staticMode:D.capability==="EXACT_PUSHDOWN"?Ve(C):"FULL_SCAN",whereCapability:D.capability,whereReasons:D.reasons,orderSemantics:w.semantics,maxRecords:r,hasKlike:we(C.where)}))}}return{capabilities:p,orderPlans:u,plainGroupByPlans:d,fieldApps:a,processStatusApps:s,numberPrecisionApps:l,relativeDatePlan:R}}function pc(e){return[...[...e.fieldApps].sort((t,n)=>t-n).map(t=>` metadata API: form definition APP${t}`),...[...e.processStatusApps].sort((t,n)=>t-n).map(t=>` metadata API: process status APP${t}`),...[...e.numberPrecisionApps].sort((t,n)=>t-n).map(t=>` metadata API: number precision APP${t}`)]}function QI(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 aR(e){return e==="<>"?"!=":e}function st(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(st).join(", ")})`;case"FUNC_FIELD":case"ARITH_FIELD":case"CASE_FIELD":case"ARITH_VALUE":case"CASE_VALUE":return st(t.expr);case"GROUPING_FIELD":return`GROUPING(${st(t.ref)})`;case"GROUPING_REF":return st(t.field);case"ARITH":case"SCALAR_ARITH":case"CONCAT_OP":return`(${st(t.left)} ${typeof t.op=="string"?t.op:t.type==="CONCAT_OP"?"||":"<op>"} ${st(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(st).join(", ")})`:"<expr>";case"ARRAY":return Array.isArray(t.elements)?`[${t.elements.map(st).join(", ")}]`:"<expr>";case"CASE":case"CASE_WHEN":return"CASE ... END";default:return"<expr>"}}function In(e){try{let t=e;switch(t.type){case"BINARY":return`${st(t.left)} ${QI(t.op)} ${st(t.right)}`;case"NULL_CHECK":return`${st(t.field)} IS ${t.not===!0?"NOT ":""}NULL`;case"LOGICAL":return`(${In(t.left)} ${t.op==="AND"||t.op==="OR"?t.op:"<op>"} ${In(t.right)})`;case"NOT":return`NOT (${In(t.expr)})`;case"GROUP":return`(${In(t.expr)})`;case"BOOLEAN":return t.value===!0?"TRUE":t.value===!1?"FALSE":"<expr>";default:return"<expr>"}}catch{return"<expr>"}}function dc(e){if(!e.hasServerOnlyWhereFunction)return[];if(!e.allowed&&e.rejection){let n=ie(e.rejection.functionName)?"relative date function":"kintone function",r=e.nodes[e.nodes.length-1],i=r?.capability?.reasons.find(a=>a.functionName===e.rejection.functionName),o=r?ZI(r.source,e.rejection.functionName):null;return[` ${n}: ${e.rejection.functionName}`," plan status: rejected",` target alias / field: ${o?.alias??"(unknown)"} / ${i?.field??o?.field??"(unknown)"}`,` reason: ${e.rejection.reasonCodes.join(", ")}`," client evaluation: forbidden"," records/cursor/mutation API during EXPLAIN: none"]}let t=[];for(let n of e.nodes){let r=n.joinServerFunctionPlan;if(n.allowed&&n.allowForm==="JOIN_SERVER_FUNCTION_EXACT"&&r){let a=n.joinServerFunctionVariant==="WHOLE_WHERE_EXACT"?"whole-WHERE":"leaf";t.push(` allow form: JOIN_SERVER_FUNCTION_EXACT (${a})`);for(let s of r.serverFunctionConsumptions)for(let l of s.functionLeaves){let c=Ku(l),p=l.left.type==="FIELD"?l.left.field:"(unknown)";t.push(` ${Gu(c)}: ${c}`,` ${Bu(c)}: kintone server exact JOIN prefilter`,` target alias / APP: ${s.targetAlias} / APP${s.appId}`,` field: ${p}`,` function leaf relation: ${s.relation}`,` consumption: ${s.consumption}`)}t.push(` client residual: ${r.residualWhere===null?"(none)":In(r.residualWhere)}`),r.adoptedServerFunctionOccurrences.some(ie)&&t.push(" relative date client evaluations: 0"),r.adoptedServerFunctionOccurrences.some(s=>!ie(s))&&t.push(" kintone function client evaluations: 0");continue}let i=n.fullScanExactPlan;if(n.allowed&&n.allowForm==="FULL_SCAN_EXACT"&&i){for(let s of i.prefilterPlan.exactRelativeLeaves){let l=Ku(s),c=s.left.type==="FIELD"?s.left.field:void 0,p=aR(s.op),u=n.capability?.reasons.find(d=>d.functionName===l&&(c===void 0||d.field===c)&&d.operator===p);t.push(` ${Gu(l)}: ${l}`,` ${Bu(l)}: kintone server whole-WHERE exact`,` field: ${u?.field??c??"(unknown)"} (${u?.fieldType??"unknown"})`,` operator: ${u?.operator??p}`)}let a=i.serializedWholeWhere;t.push(" where capability: EXACT_PUSHDOWN",` server predicate: ${a}`," client residual: (none)",` ${sR(i.prefilterPlan.exactRelativeLeaves)}: 0`,` kintone query: ${a}`);continue}let o=n.prefilterPlan;if(n.allowed&&o?.prefilterWhere&&o.residualWhere){for(let s of o.exactRelativeLeaves){let l=Ku(s),c=s.left.type==="FIELD"?s.left.field:void 0,p=aR(s.op),u=n.capability?.reasons.find(d=>d.functionName===l&&(c===void 0||d.field===c)&&d.operator===p);t.push(` ${Gu(l)}: ${l}`,` ${Bu(l)}: kintone server exact prefilter`,` field: ${u?.field??c??"(unknown)"} (${u?.fieldType??"unknown"})`,` operator: ${u?.operator??p}`)}let a=Y(o.prefilterWhere);t.push(" where capability: SUPERSET_PREFILTER",` server prefilter: ${a}`,` client residual: ${In(o.residualWhere)}`,` ${sR(o.exactRelativeLeaves)}: 0`,` kintone query: ${a}`);continue}for(let a of n.functionNames){let s=n.capability?.reasons.find(l=>l.functionName===a);if(!ie(a)){t.push(` kintone function: ${a}`," kintone function evaluation: kintone server",` field: ${s?.field??"(unknown)"} (${s?.fieldType??"unknown"})`,` operator: ${s?.operator??"(unknown)"}`,` where capability: ${n.capability?.capability??"(unknown)"}`," client residual: (none)"," kintone function client evaluations: 0",` kintone query: ${n.restQuery||"(\u306A\u3057)"}`);continue}t.push(` relative date function: ${a}`," evaluation: kintone server",` field: ${s?.field??"(unknown)"} (${s?.fieldType??"unknown"})`,` operator: ${s?.operator??"(unknown)"}`,` where capability: ${n.capability?.capability??"(unknown)"}`," client evaluation: forbidden",` kintone query: ${n.restQuery||"(\u306A\u3057)"}`)}}return t}function ZI(e,t){let n="where"in e?e.where:null,r=null,i=o=>{if(r||o===null||typeof o!="object")return;if(Array.isArray(o)){o.forEach(i);return}let a=o;if(a.type==="BINARY"){let s=a.left,l=a.right,c=l?.type==="KINTONE_FUNC"&&l.name===t,p=l?.type==="IN_LIST"&&Array.isArray(l.values)&&l.values.some(u=>u!==null&&typeof u=="object"&&u.type==="KINTONE_FUNC"&&u.name===t);if((c||p)&&s?.type==="FIELD"&&typeof s.field=="string"){r={alias:typeof s.tableAlias=="string"?s.tableAlias:null,field:s.field};return}}Object.values(a).forEach(i)};return i(n),r}function Gu(e){return ie(e)?"relative date function":"kintone function"}function Ku(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 Bu(e){return ie(e)?"relative date evaluation":"kintone function evaluation"}function sR(e){return e.every(t=>t.right.type==="KINTONE_FUNC"&&ie(t.right.name))?"relative date client evaluations":"kintone function client evaluations"}var dm=new WeakMap;function fc(e,t){if(Array.isArray(e))return e.map(r=>fc(r,t));if(e===null||typeof e!="object")return e;let n=e;if(n.type==="GENERATE_SERIES"){let r=new Map,i=new Set,o=n.args.map((s,l)=>{if(s.type!=="STRING"||s.fromVariable!==!0||!s.value.startsWith("@"))return s;let c=s.value.slice(1);r.set(l,c);let p=t.get(c);return p===void 0?{type:"VARIABLE",name:c}:(i.add(l),{type:"STRING",value:p,fromVariable:!0})}),a={...n,args:o};return dm.set(a,{variableNames:r,defaultBoundIndexes:i}),a}return Object.fromEntries(Object.entries(n).map(([r,i])=>[r,fc(i,t)]))}function Ni(e,t){if(e.type==="SHOW_APPS")return{status:"STATIC",columns:[...Hc]};if(e.type==="DESCRIBE")return{status:"STATIC",columns:[...Yc]};if(e.type==="GENERATE_SERIES")return{status:"STATIC",columns:[e.columnAlias]};if(e.type==="WITH"){let s=new Map(t);for(let l of e.ctes){let c=Ni(l.query,s);s.set(l.name,c)}return Ni(e.query,s)}if(e.type==="UNION"){let s=Ni(e.left,t),l=Ni(e.right,t);return s.status==="STATIC"&&l.status==="STATIC"?{status:"STATIC",columns:s.columns}:{status:"DEFERRED"}}let n=[e.from,...e.joins.map(s=>s.table)],r=n.filter(s=>s.cteName!==null&&s.cteName!==_e);if(r.some(s=>t.get(s.cteName)?.status!=="STATIC"))return{status:"DEFERRED"};if(e.columns.some(s=>s.type==="WILDCARD"||s.type==="PARENT_WILDCARD")&&(n.length!==1||n[0].cteName===null))return{status:"DEFERRED"};let o=r.flatMap(s=>{let l=t.get(s.cteName);return l?.status==="STATIC"?[...l.columns]:[]}),a=[];for(let s of e.columns)s.type==="WILDCARD"?a.push(...o):s.type==="PARENT_WILDCARD"?a.push(...o.filter(l=>l.startsWith("_p."))):a.push(...Sn([],[s]).columns);return{status:"STATIC",columns:a}}function ew(e){return new Map([...e].flatMap(([t,n])=>n.status==="STATIC"?[[t,n.relation]]:[]))}async function tw(e,t,n,r){let i=new Map,o=async a=>{if(a===null||typeof a!="object")return;if(Array.isArray(a)){for(let l of a)await o(l);return}let s=a;if(s.type==="SELECT"){let l=a,c=[l.from,...l.joins.map(p=>p.table)];if(c.some(p=>p.cteName!==null)&&c.every(p=>p.cteName===_e||p.cteName!==null&&r.has(p.cteName))){let p=await fr(l,t,n,r);p&&i.set(l,p)}}for(let l of Object.values(s))await o(l)};return await o(e),i}var fm=Symbol("ksql.explainFetchPlan");function zc(e){return e[fm]}function Em(e,t){e[fm]=t}async function Rm(e,t,n,r="batch-explain",i=1e4,o=2,a=!1,s=100,l=Ce,c=!0,p,u,d){let f=yt({recursiveCteMaxDepth:p,recursiveCteMaxRows:u,recursiveCteMaxExpansions:d}),R=Rc(r);try{let E=Tc(e,a),m=El(E),y=Jl(E,n),g=AR(E,y),S=new Map,h=new Map,I=new Map,N=[],U=[];for(let M=0;M<E.length;M++){let v=E[M],C=v.type==="SET_VARIABLE"?v.expr.type==="SCALAR_SUBQUERY"?{...v,expr:ts(v.expr,S)}:v:ts(v,S),_=fc(C,h);nt(_);let b=await Vi(_,t,R),D=ew(I),A=c?await pm(_,t,R,i,b,D):{capabilities:new Map,orderPlans:new Map,plainGroupByPlans:new Map,fieldApps:new Set,processStatusApps:new Set,numberPrecisionApps:new Set,relativeDatePlan:b};if(!c){let W=await tw(_,t,R,D);for(let[K,k]of W)A.plainGroupByPlans.set(K,k)}let w;if(_.type==="CREATE_TEMP_TABLE"){let W=new Map([...I].map(([k,G])=>[k,G.status==="STATIC"?{status:"STATIC",columns:G.columns}:{status:"DEFERRED"}])),K=Ni(_.query,W);w=K.status==="STATIC"?{status:"STATIC",columns:K.columns,relation:{rows:[],columns:[...K.columns]},producerStatement:M+1}:{status:"DEFERRED",producerStatement:M+1,reason:"EXPLAIN_TEMP_SCHEMA_UNAVAILABLE"},I.set(_.name,w)}let x={sources:[]},O=b.hasServerOnlyWhereFunction&&!b.allowed?dc(b):[...dc(b),...ym(nw(_,m.statements[M],A.capabilities,A.orderPlans,A.plainGroupByPlans,s,l,x,I,w,{maxRecords:i,recursiveLimits:f}),o)],F=pc(A);N.push({index:M,type:m.statements[M].statementType,plan:O.length===0?F:[O[0],...F,...O.slice(1)]}),U.push({index:M,fetch:qc(x.sources),sources:x.sources}),_.type==="DROP_TEMP_TABLE"&&I.delete(_.name),(v.type==="SET_VARIABLE"||v.type==="DECLARE_VARIABLE")&&(S.set(v.name,v.type==="DECLARE_VARIABLE"&&v.annotation==="RELATIVE_DATE"?{type:"relative-date",value:g.get(v.name)}:v.type==="SET_VARIABLE"&&v.expr.type==="ARRAY"?{type:"array",elements:v.expr.elements.map(W=>({type:"string",value:W.value}))}:{type:"string",value:`@${v.name}`,placeholder:!0}),v.type==="DECLARE_VARIABLE"&&v.annotation===void 0&&(v.default.type==="STRING"||v.default.type==="NUMBER")&&h.set(v.name,v.default.type==="STRING"?v.default.value:z(v.default)))}let P={statementCount:E.length,statements:N};return Em(P,{statements:U}),P}finally{Mc(R)}}function nw(e,t,n,r,i,o=100,a=Ce,s={sources:[]},l=new Map,c,p=mm()){if(e.type==="CREATE_TEMP_TABLE")return[`CREATE TEMP TABLE ${e.name}`," scope: batch\uFF08\u30D0\u30C3\u30C1\u7D42\u4E86\u6642\u306B\u81EA\u52D5\u7834\u68C4\uFF09",...c?.status==="STATIC"?[` schema: ${c.columns.join(", ")}`,` schema source: SELECT output of statement ${c.producerStatement}`]:c?[" schema: deferred (could not be derived statically)",` plan status: deferred (temp table schema; reason=${c.reason})`]:[],` rows: \u5B9F\u4F53\u5316\u524D\u306E\u305F\u3081\u4E0D\u660E\uFF08\u65E2\u5B9A\u4E0A\u9650 ${Xe} \u884C\u3001tempTableMaxRows \u3067\u5909\u66F4\u53EF\u3001\u8D85\u904E\u306F\u30A8\u30E9\u30FC\uFF09`,...wi(e.query,t,n,r,i,s,"main",l,p).map(u=>` ${u}`)];if(e.type==="DROP_TEMP_TABLE")return[`DROP TEMP TABLE ${e.name}`," \u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30B9\u30C8\u30A2\u306E\u89E3\u653E\u306E\u307F\uFF08kintone \u30A2\u30AF\u30BB\u30B9\u306A\u3057\uFF09"];if(e.type==="SET_VARIABLE"){if(e.expr.type==="SCALAR_SUBQUERY"){let u=as(e.expr.query)?t:{...t,tempTablesReferenced:[]};return[`SET @${e.name} = (SELECT ...)`," value: \u30B5\u30D6\u30AF\u30A8\u30EA\u3092\u5B9F\u884C\u6642\u306B1\u56DE\u8A55\u4FA1\uFF081\u884C1\u5217\u30FB\u30D0\u30C3\u30C1\u5185\u5B9A\u6570\u30FB\u7D50\u679C\u30E1\u30BF\u30C7\u30FC\u30BF\u306B\u306F\u975E\u516C\u958B\uFF09"," subquery:",...wi(e.expr.query,u,n,r,i,s,"main",l,p).map(d=>` ${d}`)]}return[`SET @${e.name} = <scalar expression>`," value: \u5B9F\u884C\u6642\u306B1\u56DE\u8A55\u4FA1\uFF08\u30D0\u30C3\u30C1\u5185\u5B9A\u6570\u30FB\u7D50\u679C\u30E1\u30BF\u30C7\u30FC\u30BF\u306B\u306F\u975E\u516C\u958B\uFF09"]}if(e.type==="DECLARE_VARIABLE")return e.annotation==="RELATIVE_DATE"?[`DECLARE @${e.name} RELATIVE_DATE = <relative-date token>`," value: \u5916\u90E8\u6CE8\u5165\u304C\u3042\u308C\u3070\u63A1\u7528\u3001\u306A\u3051\u308C\u3070\u65E2\u5B9A\u30C8\u30FC\u30AF\u30F3\u3092\u4F7F\u7528\uFF08\u5024\u306F\u975E\u516C\u958B\uFF09"]:[`DECLARE @${e.name} = <default scalar expression>`," value: \u5916\u90E8\u6CE8\u5165\u304C\u3042\u308C\u3070\u63A1\u7528\u3001\u306A\u3051\u308C\u3070\u65E2\u5B9A\u5024\u3092\u5B9F\u884C\u6642\u306B1\u56DE\u8A55\u4FA1\uFF08\u5024\u306F\u975E\u516C\u958B\uFF09"];if(e.type==="SHOW_APPS")return["SHOW APPS\uFF08\u30A2\u30D7\u30EA\u4E00\u89A7\u306E\u53D6\u5F97\uFF09"];if(e.type==="DESCRIBE")return[`DESCRIBE APP${e.appId}\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9\u5B9A\u7FA9\u306E\u53D6\u5F97\uFF09`];if(e.type==="EXPLAIN")return wi(e.query,t,n,r,i,s,"main",l,p);if(e.type==="ASSERT"){let u=[`ASSERT ${e.text}`," check: \u5B9F\u884C\u6642\u306B\u6761\u4EF6\u8A55\u4FA1\uFF08\u4E0D\u6210\u7ACB\u306F AssertError \u3067\u30D0\u30C3\u30C1\u505C\u6B62\u3001\u4EE5\u964D\u306E\u6587\u306F skipped\uFF09"],d=[e.left,e.right,e.low,e.high].filter(f=>f!==null&&f.type==="SCALAR_SUBQUERY");return d.forEach((f,R)=>{u.push(d.length>1?` subquery[${R+1}]:`:" subquery:");let E=as(f.query)?t:{...t,tempTablesReferenced:[]};u.push(...wi(f.query,E,n,r,i,s,"main",l,p).map(m=>` ${m}`))}),u}return e.type==="UPDATE"&&(e.applyBlocks?.length??0)>0?ys(e,void 0,n,r,o,a,1e4,i):wi(e,t,n,r,i,s,"main",l,p)}function as(e){if(Array.isArray(e))return e.some(as);if(e!==null&&typeof e=="object"){let t=e,n=t.cteName;return typeof n=="string"&&n.startsWith("#")?!0:Object.values(t).some(as)}return!1}function wi(e,t,n,r,i,o={sources:[]},a="main",s=new Map,l=mm()){if(t.tempTablesReferenced.length===0)return ys(e,void 0,n,r,100,Ce,l.maxRecords,i,!0,o,a,l.recursiveLimits);let c=[];e.type==="INSERT_SELECT"?c.push(`INSERT INTO APP${e.appId} ... SELECT\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30BD\u30FC\u30B9\u3002\u5B9F\u884C\u6642\u306B\u4EF6\u6570\u78BA\u5B9A \u2192 dmlMaxRows \u9069\u7528\uFF09`):e.type==="UPSERT_SELECT"&&c.push(`UPSERT INTO APP${e.appId} ... SELECT\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30BD\u30FC\u30B9\u3002\u7167\u5408\u5F8C\u306B insert + update \u5408\u8A08\u78BA\u5B9A \u2192 dmlMaxRows \u9069\u7528\uFF09`),c.push(" mode: FULL_SCAN\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u53C2\u7167\uFF09"),c.push(` temp: ${t.tempTablesReferenced.join(", ")}\uFF08\u30A4\u30F3\u30E1\u30E2\u30EA\u8D70\u67FB\u3002\u5B9F\u4F53\u5316\u524D\u306E\u305F\u3081\u884C\u6570\u4E0D\u660E\uFF09`);let p=t.tempTablesReferenced.map(f=>[f,s.get(f)]);for(let[f,R]of p)R?.status==="STATIC"?c.push(` source: temp table ${f} (schema from statement ${R.producerStatement})`):(c.push(` source: temp table ${f}`),c.push(" schema: deferred (could not be derived statically)"));c.push(" rows: runtime (not materialized by EXPLAIN)");let u=e.type==="SELECT"?e:e.type==="EXPLAIN"&&e.query.type==="SELECT"?e.query:void 0;u&&c.push(...gm(u,i?.get(u),p.some(([,f])=>f?.status!=="STATIC"))),c.push(p.every(([,f])=>f?.status==="STATIC")?" plan status: static schema / runtime rows":" plan status: deferred (temp table schema)"),c.push(" records API: none");let d=t.appIds.filter(f=>e.type!=="INSERT_SELECT"&&e.type!=="UPSERT_SELECT"||f!==e.appId);return d.length>0&&c.push(` app: ${d.map(f=>`APP${f}`).join(", ")}`),c.push(" note: \u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3078\u306E WHERE \u30D7\u30C3\u30B7\u30E5\u30C0\u30A6\u30F3\u306F\u884C\u308F\u308C\u306A\u3044"),c}var Ec=new WeakMap;function mm(){return{maxRecords:1e4,recursiveLimits:yt({})}}async function rw(e,t,n,r,i,o=100,a=Ce,s,l,c,p){let u=yt({recursiveCteMaxDepth:l,recursiveCteMaxRows:c,recursiveCteMaxExpansions:p}),d=s??await Vi(e.query,t,n),f=await pm(e.query,t,n,r,d,Ec.get(e)),R={sources:[]},E=dc(d),m=d.hasServerOnlyWhereFunction&&!d.allowed?[...pc(f),...E]:[...pc(f),...E,...ym(ys(e.query,void 0,f.capabilities,f.orderPlans,o,a,r,f.plainGroupByPlans,!0,R,"main",u),i)],y=es(m,R.sources),g={type:"SELECT",columns:["plan"],rows:y.map(S=>({plan:S})),rowCount:y.length};return Em(g,{statements:[{index:0,fetch:qc(R.sources),sources:R.sources}]}),g}function ym(e,t){let n=[];for(let r of e)if(n.push(r),r.trim()==="cursor page size: 500"){let i=r.match(/^\s*/)?.[0]??"";n.push(`${i}cursor concurrency: ${t} per domain (process-local)`)}return n}function ys(e,t,n,r,i=100,o=Ce,a=1e4,s,l=!0,c,p="main",u=yt({})){let d=c??{sources:[]};if(e.type==="UNION"){let R=lw(e,n,r,s,d);return l?es(R,d.sources):R}if(e.type==="WITH"){let R=cw(e,n,r,s,d,a,u);return l?es(R,d.sources):R}if(e.type==="INSERT")return fw(e,t,i,o);if(e.type==="INSERT_SELECT")return Ew(e,t,n,r,s);if(e.type==="UPSERT")return gw(e,t,i,o);if(e.type==="UPSERT_SELECT")return hw(e,t,n,r,s);if(e.type==="UPDATE")return Rw(e,t,n,r,i,o,a);if(e.type==="DELETE")return yw(e,t);if(e.type==="REORDER")return Aw(e,t);if(e.type==="VALIDATE")return aw(e,t);if(e.type==="IMPORT"){if(e.writeMode==="UPDATE_RECORD_NUMBER"){let m=e.targets?.filter(y=>y.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",...m.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 R=e.keyFields?"UPSERT":"INSERT",E=e.targets?.some(m=>m.kind==="SUBTABLE")===!0;return[...t?[t]:[],`IMPORT ${R} 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",...E?[" 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&&E?"requires actual source load at execution; this EXPLAIN is static":"requires load"}`,...E?[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)"]}let f=lt(e,t,n,r,s,!0,!0,d,p);return l?es(f,d.sources):f}var lR={none:0,count_only:1,exact:2,prefiltered:3,all:4};function qc(e){return e.reduce((t,n)=>lR[t]>=lR[n.fetch]?t:n.fetch,"none")}function es(e,t){let n=e.filter(r=>!r.startsWith("fetch summary:"));return t.length===0?n:[`fetch summary: ${qc(t).toUpperCase()}`,...n]}function iw(e){let t=/(?:^|\s)limit\s+(\d+)(?:\s|$)/i.exec(e);return t?Number(t[1]):null}function Ya(e,t,n,r,i,o,a=!1){let s={app:t,alias:n,role:r,fetch:i.toLowerCase(),pending:a,kintoneQuery:o==="(\u5168\u4EF6\u53D6\u5F97)"||o==="(\u306A\u3057)"||o===""?null:o,limit:iw(o)};return e.sources.push(s),s}function ow(e){return[e.fetch.toUpperCase(),...e.limit===null?[]:[`(limit ${e.limit})`],...e.pending?["(\u672A\u78BA\u5B9A)"]:[]].join(" ")}function ja(e){return` fetch: ${ow(e)}`}function aw(e,t){let n=um.get(e),r=[];return t&&r.push(t),r.push(`VALIDATE APP${e.appId}`),r.push(" operation: read-only existing-record constraint audit (writesKintone=false)"),r.push(" fetch API: GET records via offset + $id keyset paging (Cursor API unused)"),r.push(" complete input: required (onLimit=truncate disabled)"),n?(r.push(` WHERE capability: ${n.capability.capability}`),r.push(` kintone query: ${n.prefilter===null?"(\u5168\u4EF6\u53D6\u5F97)":Y(n.prefilter)}`),r.push(` audit fields: ${n.targetFields.length===0?"(\u306A\u3057)":n.targetFields.join(", ")}`),r.push(` fetch fields: ${n.fetchFields.join(", ")}`),r.push(` mode: ${e.summary?"SUMMARY":"DETAIL"}`),n.subtables.size>0&&r.push(` subtable audit: ${[...n.subtables].map(([i,o])=>`${i}(${o} fields)`).join(", ")}`),r.push(` output schema: ${(e.summary?Ac:hc).join(", ")}`),r.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)"),r.push(` number precision: ${n.numberPrecision?"required":"not required"}`),r.push(" local checks: original WHERE re-evaluation + built-in constraints + CHECK groups"),r.push(" records/mutation API during EXPLAIN: none; violation count unavailable"),r):(r.push(" metadata: form definition required; number precision required for NUMBER targets"),r)}function sw(e){let t=e.field.tableAlias?`${e.field.tableAlias}.${e.field.field}`:e.field.field,n=e.value.replace(/'/g,"''"),r=e.value.replace(/\\/g,"\\\\").replace(/"/g,'\\"'),i=e.normalizedOperator==="IN"?"in":"not in";return` pushdown normalized: ${t} ${e.originalOperator} '${n}' -> ${t} ${i} ("${r}")`}function gm(e,t,n){let r=Z(e);if(r.type!=="PLAIN")return[];let i=[];if(t)t.items.forEach((o,a)=>{let s=r.allItems[a];s?.type==="FIELD_NAME"&&(o.kind==="PHYSICAL"?i.push(` group key ${s.name}: PHYSICAL (source=${o.sourceIndex}, field=${o.fieldCode})`):o.kind==="ALIAS_SAFE"?i.push(` group key ${s.name}: ALIAS_SAFE (column=${o.columnIndex})`):o.kind==="EXPRESSION"&&i.push(` group key ${s.name}: EXPRESSION`))});else if(n)for(let o of r.allItems)o.type==="FIELD_NAME"&&i.push(` group key ${o.name}: DEFERRED (temp table schema unavailable)`);return i}function lt(e,t,n,r,i,o=!0,a=!0,s={sources:[]},l="main"){let c=n?.get(e)??(n?[...n].find(([h])=>JSON.stringify(h)===JSON.stringify(e))?.[1]:void 0),p=r?.get(e)??(r?[...r].find(([h])=>JSON.stringify(h)===JSON.stringify(e))?.[1]:void 0),u=i?.get(e)??(i?[...i].find(([h])=>JSON.stringify(h)===JSON.stringify(e))?.[1]:void 0),d=o&&c!==void 0&&xR(e,c),f=d?"COUNT_TOTAL_COUNT":p?.kind==="CANONICAL_LOCAL"||c&&c.capability!=="EXACT_PUSHDOWN"?"FULL_SCAN":Ve(e),R=pw(e);c&&c.capability!=="EXACT_PUSHDOWN"&&R.push(...c.reasons.map(h=>h.code));let E=[],m=Ff(e,Ui.get(e)?.allItems.length);t&&E.push(t),E.push(` mode: ${f}`);for(let h of jc.get(e)??[]){if(E.push(` cross join: ${h.leftLabel} \xD7 ${h.rightLabel}`),E.push(` left rows: ${h.leftRows??"runtime (left intermediate rows)"}`),E.push(` right rows: ${h.rightRows??`runtime (${h.rightRuntimeLabel})`}`),h.plan)E.push(` rows: ${h.plan.outputRows}`),E.push(` row guard: ${h.plan.outputRows} / ${h.plan.limit}`),E.push(" guard timing: before row materialization");else{let I=h.leftRows===null?"left rows":String(h.leftRows),N=h.rightRows===null?"right rows":String(h.rightRows);E.push(` rows: runtime (${I} \xD7 ${N})`),E.push(` row guard: runtime checked / ${tu}`),E.push(" guard timing: after complete source fetch, before row materialization")}E.push(" records API: none")}for(let h of cc.get(e)??IR.get(e)??[])E.push(sw(h));m&&(E.push(` grouping source: ${m.source}`),E.push(` grouping sets: ${m.expandedSetCount} (limit: ${m.setLimit})`),E.push(` grouping items: ${m.groupingItemCount} (limit: ${m.itemLimit})`),E.push(` grouping output rows: runtime checked (limit: ${m.outputRowLimit}, before HAVING/DISTINCT/LIMIT)`)),E.push(...gm(e,u,[e.from,...e.joins.map(h=>h.table)].some(h=>h.cteName!==null)));for(let h of e.columns){if(h.type!=="WINDOW_COL"||h.windowKind===void 0||h.windowKind==="RANKING")continue;let I=[];h.partitionBy.length>0&&I.push(`PARTITION BY ${h.partitionBy.map(N=>N.tableAlias?`${N.tableAlias}.${N.field}`:N.field).join(", ")}`),h.orderBy.length>0&&I.push(`ORDER BY ${h.orderBy.map(hm).join(", ")}`),h.windowKind==="VALUE"?E.push(` window ${h.alias}: ${h.valueFunc}(offset=${h.offset}) OVER (${I.join(" ")})`):h.windowKind==="AGGREGATE"&&(E.push(` window ${h.alias}: ${h.aggFunc} OVER (${I.join(" ")})`),E.push(h.frame===null?" frame: PARTITION ENTIRE":` frame: ${h.frame.unit} UNBOUNDED PRECEDING AND CURRENT ROW${h.frame.source==="DEFAULT"?" (\u65E2\u5B9A)":""}`))}if(d){let h=e.where===null?"":Y(e.where);if(E.push(` app: APP${e.from.appId} (${e.from.appId})`),E.push(` kintone query: ${h}${h?" ":""}limit 1`),a){let I=Ya(s,e.from.appId,e.from.alias,l,"COUNT_ONLY",`${h}${h?" ":""}limit 1`);E.push(ja(I))}return E.push(" fields: $id"),E.push(" fetch API: GET records.json (totalCount=true)"),E.push(" REST execution: single GET"),E.push(" record limit: maxRecords/onLimitReached not applied"),E.push(" fallback: full record scan when totalCount is missing or invalid"),E.push(" search abort: fail-closed (SearchAbortedError)"),E}p?(E.push(` order plan: ${p.kind}`),p.reasonCodes.length>0&&E.push(` order reason: ${p.reasonCodes.join(", ")}`),p.kind==="KORDER_NATIVE"?(E.push(" order semantics: kintone native (not kSQL canonical)"),E.push(" REST execution: single GET")):p.kind==="KORDER_CURSOR"&&(E.push(" order semantics: kintone native (not kSQL canonical)"),E.push(" fetch API: POST/GET/DELETE records/cursor.json"),E.push(" cursor page size: 500"),E.push(` scan rows: ${p.scanRows}`))):m&&E.push(" order plan: CANONICAL_LOCAL");let y=p&&!p.requiresCompleteInput?{...e,orderBy:[]}:e,g=Wt(y);p?.requiresCompleteInput&&g.add("LOCAL_ORDER");let S=ut(e.where);if(g.size>0&&(!S||m!==null)&&(E.push(" complete input: required (onLimit=truncate disabled)"),E.push(` complete input reason: ${[...g].join(", ")}`),E.push(" onLimit=truncate: disabled")),S)return E.push(" predicate: constant false"),E.push(" records API access: none"),E.push(` app: APP${e.from.appId} (${e.from.appId})`),E;if(f==="FULL_SCAN"&&R.length>0&&E.push(` reason: ${R.join(", ")}`),f==="SIMPLE"){let h=wo(p?.kind==="CANONICAL_REST_TOP_N"?vR(e):e);E.push(` app: APP${e.from.appId} (${e.from.appId})`);let I=p?.kind==="KORDER_CURSOR"?au(e):h.query;if(E.push(` kintone query: ${I||"(\u306A\u3057)"}`),a&&e.from.cteName===null){let N=I?"EXACT":"ALL";E.push(ja(Ya(s,e.from.appId,e.from.alias,l,N,I)))}E.push(` fields: ${h.fields.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":h.fields.join(", ")}`)}else{let h=am.get(e),I=sm.get(e),N=I??fn(e);if(e.joins.length>0)if(h){if(E.push(" join pushdown plan: applied (runtime metadata resolved)"),E.push(" runtime plan timing: variables/subqueries resolved -> metadata resolved -> immutable plan"),E.push(" EXPLAIN unresolved subqueries: not applied (records API is not called)"),h.joinPlan.serverFunctionCandidate&&E.push(` allow form: JOIN_SERVER_FUNCTION_EXACT (${h.joinPlan.serverFunctionCandidate.variant==="WHOLE_WHERE_EXACT"?"whole-WHERE":"leaf"})`),E.push(` client residual: ${h.joinPlan.residualWhere===null?"(none)":In(h.joinPlan.residualWhere)}`),E.push(` KLIKE applied nodes: ${h.joinPlan.appliedKlikes.size}`),E.push(` KLIKE unapplied nodes: ${h.joinPlan.allKlikes.length-h.joinPlan.appliedKlikes.size}`),h.joinPlan.residualWhere!==null)for(let w of h.joinPlan.rejections)E.push(` join pushdown not applied: ${w.reason}`)}else{let w=e.joins.some(x=>x.type!=="INNER"&&x.type!=="CROSS")?"OUTER_JOIN":[e.from,...e.joins.map(x=>x.table)].some(x=>x.cteName!==null||!!x.subtableCode)?"SOURCE_KIND":"PLAN_NOT_APPLICABLE";E.push(" join pushdown plan: not applied (join key/WHERE prefilters are reported per source below)"),E.push(` join pushdown not applied: ${w}`)}let U=dn(e,e.from,u),P=e.from.alias?` AS ${e.from.alias}`:"",M=N.mainCondition,v=LR(e),C=e.joins.length===0&&c?.capability==="EXACT_PUSHDOWN"&&e.where!==null&&!Nt(e.where)?Y(e.where):"",_=e.from.alias?h?.queriesByAlias.get(e.from.alias):void 0,b=_||(M!==null?Y(M):C||"(\u5168\u4EF6\u53D6\u5F97)");E.push(` app: APP${e.from.appId}${P} (${e.from.appId})`),E.push(` kintone query: ${b}`);let D=h?.joinPlan.items.find(w=>w.targetAlias===e.from.alias),A=h?.joinPlan.serverFunctionConsumptions.find(w=>w.targetAlias===e.from.alias);if(a&&e.from.cteName===null){let w=!I&&v!==null,x=b==="(\u5168\u4EF6\u53D6\u5F97)"?"ALL":w?"PREFILTERED":D?.relation==="exact"||A||C!==""?"EXACT":"PREFILTERED";E.push(ja(Ya(s,e.from.appId,e.from.alias,l,x,b,w)))}D||A?(E.push(` pushdown applied: ${_}`),E.push(` relation: ${D?.relation??"exact"}`)):I&&M!==null?(E.push(` pushdown applied: ${b}`),E.push(` relation: ${N.mainRelation??"exact"}`)):v!==null&&(!I||Pi(v))&&E.push(` pushdown candidate: ${Y(v)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`),E.push(` fields: ${U.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":U.join(", ")}`);for(let w of e.joins){let x=dn(e,w.table,u),O=w.table.alias?` AS ${w.table.alias}`:"",F=w.type==="INNER"?"JOIN":`${w.type} JOIN`,W=w.table.alias?N.joinConditions.get(w.table.alias)??null:null,K=w.table.alias&&!w.table.subtableCode&&w.table.cteName===null&&e.where?kr(e.where,{tableAlias:w.table.alias}):null,k=w.table.alias?h?.queriesByAlias.get(w.table.alias):void 0,G=w.table.alias?lm.get(e)?.get(w.table.alias):void 0,j=!I&&w.type==="INNER"&&w.table.cteName===null&&!w.table.subtableCode&&[e.from,...e.joins.map(re=>re.table)].some(re=>re.cteName!==null),B=k||(W!==null?Y(W):G?.additionalQuery?G.additionalQuery:"(\u5168\u4EF6\u53D6\u5F97)"),L=j||G?.plan.kind==="RANGE_CANDIDATE"||G?.plan.kind==="FALLBACK"&&G.plan.reason==="JOIN_KEY_VALUES_RUNTIME",H=G&&G.queries.length>0?G.queries.map(re=>B!=="(\u5168\u4EF6\u53D6\u5F97)"?`(${re}) and (${B})`:re):[L?"(runtime source keys)":B],ne=H.join(" | ");E.push(` ${F}: APP${w.table.appId}${O} (${w.table.appId})`);for(let re of H)E.push(` kintone query: ${re}`);let Oe=h?.joinPlan.items.find(re=>re.targetAlias===w.table.alias),Kt=h?.joinPlan.serverFunctionConsumptions.find(re=>re.targetAlias===w.table.alias);if(a&&w.table.cteName===null){let re=L||!G&&!I&&K!==null,Bt=ne==="(\u5168\u4EF6\u53D6\u5F97)"?"ALL":re?"PREFILTERED":G?.plan.kind==="IN"&&Oe?.relation!=="superset"&&G.additionalRelation!=="superset"||Oe?.relation==="exact"||Kt?"EXACT":"PREFILTERED";E.push(ja(Ya(s,w.table.appId,w.table.alias,"join",Bt,ne,re)))}if(G)if(G.plan.kind==="RANGE"){E.push(" join key prefilter: range");for(let re of H)E.push(` pushdown applied: ${re}`);E.push(" relation: superset")}else if(G.plan.kind==="IN"){let re=Oe?.relation==="superset"||G.additionalRelation==="superset"?"superset":"exact";E.push(" join key prefilter: in");for(let Bt of H)E.push(` pushdown applied: ${Bt}`);E.push(` relation: ${re}`)}else G.plan.kind==="RANGE_CANDIDATE"?(E.push(" join key prefilter: range candidate"),E.push(" relation: superset"),E.push(` join key prefilter reason: ${G.plan.reason}`)):G.plan.kind==="FALLBACK"&&(E.push(G.plan.reason==="JOIN_KEY_VALUES_RUNTIME"?" join key prefilter: runtime candidate":" join key prefilter: not applied"),E.push(` join key prefilter reason: ${G.plan.reason}`));else j?(E.push(" join key prefilter: runtime candidate"),E.push(" join key prefilter reason: JOIN_KEY_VALUES_RUNTIME"),K!==null&&E.push(` pushdown candidate: ${Y(K)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`)):Oe||Kt?(E.push(` pushdown applied: ${k}`),E.push(` relation: ${Oe?.relation??"exact"}`)):I&&W!==null?(E.push(` pushdown applied: ${B}`),E.push(` relation: ${N.joinRelations.get(w.table.alias)??"exact"}`)):K!==null&&(!I||Pi(K))&&E.push(` pushdown candidate: ${Y(K)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`);E.push(` fields: ${x.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":x.join(", ")}`)}}return E.push(...dw(e,n,r,i,s)),E}function lw(e,t,n,r,i={sources:[]}){let o=[],a=l=>{if(l.type==="SELECT"){o.push(l);return}a(l.left),o.push(l.right)};a(e);let s=[];return o.forEach((l,c)=>{c>0&&s.push(""),s.push(...lt(l,`[union:${c+1}]`,t,n,r,!0,!0,i,"union"))}),s}function uw(e){let t=new Map,n=a=>ce(a)??(a.appId>0?`APP${a.appId}`:"source"),r=a=>a.cteName===_e?1:a.cteName===null?null:t.get(a.cteName)??null,i=a=>{let s=r(a.from),l=n(a.from),c=[];for(let p of a.joins){let u=r(p.table),d=n(p.table);if(p.type==="CROSS"){let f=s!==null&&u!==null?si(s,u):null;c.push({leftLabel:l,rightLabel:d,leftRows:s,rightRows:u,plan:f,rightRuntimeLabel:p.table.cteName===null?`APP${p.table.appId} fetched rows`:`${d} materialized rows`}),s=f?.outputRows??null,l=`${l} \xD7 ${d}`}else s=null,l=`${l} ${p.type} JOIN ${d}`}return c.length>0&&jc.set(a,c),ut(a.where)?s=0:a.where!==null&&(s=null),Z(a).type!=="NONE"||a.distinct||a.having!==null||jn(a)||a.columns.some(p=>p.type==="WINDOW_COL")||s===null?null:(s=Math.max(0,s-(a.offset??0)),a.limit===null?s:Math.min(s,a.limit))},o=a=>{if(a.type==="SELECT"){i(a);return}o(a.left),i(a.right)};for(let a of e.ctes)if(a.query.type==="GENERATE_SERIES")a.query.args.some(s=>s.type==="VARIABLE")||t.set(a.name,Ho(a.query).rowCount);else if(a.query.type==="SELECT"){let s=i(a.query);s!==null&&t.set(a.name,s)}else a.query.type==="UNION"&&o(a.query);o(e.query)}function cw(e,t,n,r,i={sources:[]},o=1e4,a=yt({})){uw(e);let s=[];for(let l of e.ctes)if(l.recursiveSpec){let c=l.recursiveSpec.cycle;s.push(`recursive cte: ${l.name}`," strategy: B (materialize each source once, iterate in memory)"," union: UNION ALL"," self reference: once",c?` cycle: path-scoped on ${c.column}, mark ${c.markColumn} ('${c.markValue}'/'${c.defaultValue}'), cycle row emitted, expansion stopped`:" cycle: none (absolute limits still enforced)",` limits: depth=${a.depth}, rows=${a.rows}, expansions=${a.expansions} (always fail-closed)`," complete input: required (onLimit=truncate disabled)"," empty-key recursive join: runtime checked");for(let p of $R(l.recursiveSpec.seed,l.recursiveSpec.recursiveTerm)){let u=`APP${p.appId}${p.subtableCode?`$${p.subtableCode}`:""}`;s.push(` source ${u}: R unknown, pageSize=500, estimated calls=ceil(R/500), maxRecords=${o}`)}s.push(" iteration rows: unknown until execution"," records API: none","")}else if(l.query.type==="SELECT")s.push(...lt(l.query,`[cte: ${l.name}]`,t,n,r,!1,!0,i,"cte")),s.push("");else if(l.query.type==="GENERATE_SERIES"){let c=l.query,p=dm.get(c);if(c.args.some(R=>R.type==="VARIABLE")){let R=E=>{let m=c.args[E];return m?m.type==="VARIABLE"?`@${m.name} (runtime)`:E<2?"literal":m.type==="NUMBER"?z(m):m.value:E===2?"runtime":"deferred"};s.push(`[cte: ${l.name}]`," source: GENERATE_SERIES",` column: ${c.columnAlias}`," series type: deferred (variable)",` start: ${R(0)}`,` stop: ${R(1)}`,` step: ${R(2)}`," rows: runtime",` row guard: runtime / ${Ct}`," records API: none","");continue}let d=Ho(c),f=d.kind==="DATE"?`${d.step} ${String(d.dateUnit??"DAY").toLowerCase()}${Math.abs(d.step)===1?"":"s"}`:String(d.step);s.push(`[cte: ${l.name}]`," source: GENERATE_SERIES",` column: ${c.columnAlias}`,` series type: ${d.kind}${p?.defaultBoundIndexes.size?" (DECLARE default)":""}`,` start: ${p?.variableNames.has(0)?`@${p.variableNames.get(0)} (DECLARE default; value hidden)`:d.start}`,` stop: ${p?.variableNames.has(1)?`@${p.variableNames.get(1)} (DECLARE default; value hidden)`:d.stop}`,` step: ${f}`,` rows: ${d.rowCount}${p?.defaultBoundIndexes.size?" (DECLARE default estimate)":""}`,` row guard: ${d.rowCount} / ${Ct}`,...p?.defaultBoundIndexes.size?[" binding: DECLARE defaults; runtime injection may change this plan"]:[]," records API: none","")}if((e.query.type==="SELECT"||e.query.type==="UNION")&&s.push(...ys(e.query,"[main]",t,n,100,Ce,o,r,!1,i,"main",a)),zt(e)){s.push("");let l=qt(e);s.push(...lt(l,"[effective: inlined CTE]",t,n,r,!1,!0,i,"cte"))}return s}function pw(e){let t=[];(e.from.subtableCode||e.joins.some(r=>r.table.subtableCode))&&t.push("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB"),e.joins.some(r=>r.type==="CROSS")&&t.push("CROSS JOIN \u3042\u308A"),e.joins.some(r=>r.type!=="CROSS")&&t.push("JOIN \u3042\u308A");let n=Z(e);return n.type==="PLAIN"?t.push("GROUP BY \u3042\u308A"):n.type==="GROUPING_SETS"&&t.push(n.source==="ROLLUP"?"ROLLUP \u3042\u308A":n.source==="CUBE"?"CUBE \u3042\u308A":"GROUPING SETS \u3042\u308A"),e.distinct&&t.push("DISTINCT \u3042\u308A"),e.columns.some(r=>r.type==="AGGREGATE"||r.type==="ARITH_AGG_COL")&&t.push("\u96C6\u8A08\u95A2\u6570\uFF08COUNT / SUM \u7B49\uFF09\u3042\u308A"),e.columns.some(r=>r.type==="WINDOW_COL")&&t.push("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u3042\u308A"),e.columns.some(r=>r.type==="SCALAR_SUBQUERY_COL")&&t.push("SELECT \u5217\u306B\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA"),Nt(e.where)&&t.push("WHERE \u53E5\u306B JS \u8A55\u4FA1\u304C\u5FC5\u8981\u306A\u5F0F"),Ht(e.where)&&t.push("LIKE \u306F\u5E38\u306B JS \u8A55\u4FA1\u306E\u305F\u3081\u5168\u4EF6\u53D6\u5F97"),e.orderBy.some(r=>r.key.type!=="FIELD_NAME")&&t.push("ORDER BY \u306B\u5F0F"),t}function dw(e,t,n,r,i={sources:[]}){let o=[],a=1,s=l=>{if(l)switch(l.type){case"BINARY":l.right.type==="SCALAR_SUBQUERY"&&(o.push(""),o.push(...lt(l.right.query,`[subquery:${a++}]`,t,n,r,!1,!0,i,"subquery"))),l.right.type==="SUBQUERY_IN_LIST"&&(o.push(""),o.push(...lt(l.right.query,`[subquery:${a++}]`,t,n,r,!1,!0,i,"subquery")));break;case"EXISTS":o.push(""),o.push(...lt(l.query,`[subquery:${a++}]`,t,n,r,!1,!0,i,"subquery"));break;case"LOGICAL":s(l.left),s(l.right);break;case"NOT":case"GROUP":s(l.expr);break;case"NULL_CHECK":break;case"BOOLEAN":break}};s(e.where);for(let l of e.columns)l.type==="SCALAR_SUBQUERY_COL"&&(o.push(""),o.push(...lt(l.query,`[subquery:${a++}]`,t,n,r,!1,!0,i,"subquery")));return e.having&&s(e.having),o}function fw(e,t,n=Gt,r=Ce){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,...Jc(ma(e,n,r))]:a}function Ew(e,t,n,r,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(...lt(e.select,"[source SELECT]",n,r,i,!1,!1)),o}function Rw(e,t,n,r,i=100,o=Ce,a=1e4){if(e.applyBlocks?.length)return mw(e,t,i,o,a);let s=tf(e),l=e.assignments.some(f=>f.value.type==="STRING_FUNC"),c=ra(e),p=e.assignments.some(f=>f.value.type==="SCALAR_SUBQUERY"),u=[];if(t&&u.push(t),u.push(e.from?" [UPDATE FROM]":" [UPDATE]"),u.push(` target: APP${e.appId} (${e.appId})`),e.from){let f=e.from.cteName??`APP${e.from.appId}`;u.push(` source: ${f} AS ${e.from.alias}`),u.push(` join: APP${e.appId}.${e.from.targetJoinField} = ${e.from.alias}.${e.from.joinKeyField}`),u.push(` target filter: ${e.from.targetFilter?Wi(e.from.targetFilter):"(none)"}`)}else u.push(` kintone query: ${Wi(e.where)}`);e.subtableCode||(u.push(" selection: exact native pushdown; JS residual none"),u.push(" search abort: DML fail-closed (SearchAbortedError; mutation 0)")),u.push(ut(e.where)?" api: metadata validation only (records API access: none)":" api: GET /k/v1/records.json \u2192 PUT /k/v1/records.json");let d=[];if(s&&d.push("\u7B97\u8853 SET\uFF08\u73FE\u5728\u5024\u3092\u53D6\u5F97\u3057\u3066\u8A08\u7B97\uFF09"),l&&d.push("\u6587\u5B57\u5217\u95A2\u6570 SET\uFF08\u73FE\u5728\u5024\u3092\u53D6\u5F97\u3057\u3066\u8A55\u4FA1\uFF09"),p&&d.push("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA SET"),!c&&!p&&d.push("\u5358\u7D14 SET"),u.push(` set type: ${d.join(", ")}`),c){let f=Sw(e);f.length>0&&u.push(` ref fields: ${f.join(", ")}\uFF08GET \u306B\u542B\u3081\u308B\uFF09`)}u.push(" set fields:");for(let f of e.assignments)u.push(` ${Iw(f)}`);for(let f of e.assignments)f.value.type==="SCALAR_SUBQUERY"&&(u.push(""),u.push(...lt(f.value.query,`[subquery: ${f.field}]`,n,r,void 0,!1,!1)));return u}function mw(e,t,n,r,i){let o=ma(e,n,r),a=o.branches[0],c=e.applyBlocks.flatMap(R=>[...R.operations]).map(R=>{if(R.kind==="APPEND")return"APPEND";if(R.kind==="ADD"||R.kind==="REMOVE_VALUE")return"VALUE_LITERAL";if(R.selector.kind==="ALL_ROWS")return"ALL_ROWS";let E=R.selector.where;return E.type==="BINARY"&&E.op==="="&&E.left.type==="FIELD"&&E.left.tableAlias===null&&E.left.field==="_rid"?"_rid":"SAFE_PREDICATE"}),p=[...new Set(a.targets.flatMap(R=>R.operations.map(E=>E.kind)))],u=p.includes("REMOVE"),d=cm.get(e),f=d?["parent selection: safe prefilter + JS residual evaluation",`kintone prefilter: ${d.prefilter===null?"(none; empty query)":Y(d.prefilter)}`,"JS residual: original parent WHERE",`applied KLIKE: ${d.appliedKlikes.size}`,`unapplied KLIKE: ${d.unappliedKlikes.length}${d.unappliedKlikes.length>0?" (unsupported: cannot be fully applied to native query)":""}`,`candidate limit: maxRecords=${i}, onLimit=error, stopAfter=none`,`target guard: dmlMaxRows=${n} 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: ${Wi(e.where)}`,`parent cardinality: ${bt(e.where)?"single":"multiple"}`,...f,`apply target: ${a.targets.map(R=>`${R.field} (${R.targetKind})`).join(" | ")}`,`operations: ${p.join(" | ")}`,`selector: ${c.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=${u?"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: ${u?"unknown (records API not called)":"0 (static without REMOVE)"}`,`dmlMaxRows: ${n}`,`dmlMaxSubtableRows: ${r}`,"MCP mutation: disabled in v1",...Jc(o)]}function yw(e,t){let n=[];return t&&n.push(t),n.push(" [DELETE]"),n.push(` target: APP${e.appId} (${e.appId})`),n.push(` kintone query: ${Wi(e.where)}`),e.subtableCode||(n.push(" selection: exact native pushdown; JS residual none"),n.push(" search abort: DML fail-closed (SearchAbortedError; mutation 0)")),n.push(ut(e.where)?" api: metadata validation only (records API access: none)":" api: GET /k/v1/records.json \u2192 DELETE /k/v1/records.json"),n}function gw(e,t,n=Gt,r=Ce){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,...Jc(ma(e,n,r))]:a}function Jc(e){let t=[`apply diagnostic: ${e.statementKind}`,`non-transactional: ${e.nonTransactional}`,`partial success: ${e.partialSuccess.possible?"possible":"none"}`];for(let n of e.branches){t.push(`apply branch: ${n.branch}`,` parent rows: ${n.parentRows===null?"unknown (records API not called)":n.parentRows}`,` chunks: ${n.chunk.plannedChunks===null?"unknown":n.chunk.plannedChunks} \xD7 max ${n.chunk.size}`,` revision guard: ${n.guards.revisionRequired?"required":"not required"}`);for(let r of n.targets)t.push(` target: ${r.field} (${r.targetKind})`,` operations: ${r.operations.map(i=>`${i.kind}=${i.count===null?"unknown":i.count}`).join(" | ")}`,` changed count: ${r.changedCount===null?"unknown":r.changedCount}`)}return t.push("records API: 0","mutation API: 0"),t}function hw(e,t,n,r,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(...lt(e.select,"[source SELECT]",n,r,i,!1,!1)),o}function Aw(e,t){let n=`APP${e.appId}$${e.subtableCode}`,r=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(hm).join(", "),o=[...t?[t]:[]," [REORDER]",` target: APP${e.appId} (${e.appId})`,` table: ${n}`,` scope: ${r}`,` by: ${i}`,ut(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: ${Wi(e.where)}`),o}function hm(e){return`${e.key.type==="FIELD_NAME"?e.key.name:"(\u5F0F)"} ${e.direction}`}function Wi(e){if(e.type==="BOOLEAN")return e.value?"TRUE":"FALSE (constant)";try{return Y(e)}catch{return"(JS \u8A55\u4FA1\u304C\u5FC5\u8981\u306A\u305F\u3081 kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u4E0D\u53EF)"}}function Sw(e){let t=new Set;for(let{value:n}of e.assignments)n.type==="ARITH"&&ss(n,t),n.type==="STRING_FUNC"&&ss(n,t),(n.type==="SCALAR_ARITH"||n.type==="CONCAT_OP")&&vi(n,t);return[...t]}function ss(e,t){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached CHECK field collection.`);if(e.type==="FIELD_REF"){t.add(e.field);return}if(e.type==="ARITH"&&(ss(e.left,t),ss(e.right,t)),e.type==="STRING_FUNC")for(let n of e.args)n.type==="AGG_GROUP_KEY"?t.add(n.tableAlias?`${n.tableAlias}.${n.field}`:n.field):n.type!=="AGG_REF"&&n.type!=="AGG_ARITH"&&n.type!=="VARIABLE"&&vi(n,t)}async function Am(e,t,n,r,i){let o=Gc(e),a=await ke(e.appId,n,r),s=t.cteName,l=s!==null?new Map((i?.get(s)?.columns??[]).map(d=>[d,i?.get(s)?.columnMeta?.get(d)?.fieldType??(i?.get(s)?.columnMeta?.get(d)?.semantics?.compareMode==="number"?"NUMBER":"SINGLE_LINE_TEXT")])):await ke(t.appId,n,r),c=new Set,p=new Set;for(let d of o){if(d.tableAlias!==null){if(d.tableAlias.toLowerCase()===`app${e.appId}`.toLowerCase()){if(d.field!=="$id"&&!a.has(d.field))throw Ne(`CHECK \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u30D5\u30A3\u30FC\u30EB\u30C9 ${d.field} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093`);c.add(d.field)}else if(d.tableAlias.toLowerCase()===t.alias.toLowerCase()){if(d.field!=="$id"&&!l.has(d.field))throw Ne(`CHECK \u306E\u30BD\u30FC\u30B9\u30D5\u30A3\u30FC\u30EB\u30C9 ${d.field} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093`);p.add(d.field)}else throw Ne(`CHECK \u306E\u4FEE\u98FE\u5B50 ${d.tableAlias} \u306F\u66F4\u65B0\u5148\u307E\u305F\u306F FROM alias \u3067\u306F\u3042\u308A\u307E\u305B\u3093`);continue}let f=d.field==="$id"||a.has(d.field),R=d.field==="$id"||l.has(d.field);if(!f)throw Ne(`UPDATE FROM \u306E CHECK \u3067\u306F\u30BD\u30FC\u30B9\u5217 ${d.field} \u3092\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044`);if(R)throw Ne(`UPDATE FROM \u306E CHECK \u306E\u975E\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9 ${d.field} \u306F\u66D6\u6627\u3067\u3059`);c.add(d.field)}let u=new Map;for(let[d,f]of a)u.set(d,f),u.set(`APP${e.appId}.${d}`,f);u.set("$id","RECORD_NUMBER"),u.set(`APP${e.appId}.$id`,"RECORD_NUMBER");for(let[d,f]of l)u.set(`${t.alias}.${d}`,f);return{targetFields:[...c],sourceFields:[...p],evaluationTypes:u}}function Tw(e,t,n){if(!e)return{};let r=Ut(e.target,null);return Object.fromEntries([...Object.entries(r),...Object.entries(r).map(([i,o])=>[`APP${t}.${i}`,o]),...Object.entries(e.source).map(([i,o])=>[`${n}.${i}`,o])])}function vi(e,t){if(e.type==="FIELD"){t.add(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field);return}if(e.type==="STRING_FUNC"){for(let n of e.args)n.type==="AGG_GROUP_KEY"?t.add(n.tableAlias?`${n.tableAlias}.${n.field}`:n.field):n.type!=="AGG_REF"&&n.type!=="AGG_ARITH"&&n.type!=="VARIABLE"&&vi(n,t);return}(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP")&&(vi(e.left,t),vi(e.right,t))}function Iw(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} = ${Sm(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 Sm(e){return`${uR(e.left)} ${e.op} ${uR(e.right)}`}function uR(e){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached arithmetic formatting.`);return e.type==="FIELD_REF"?e.field:e.type==="NUMBER"?z(e):e.type==="ARITH"?`(${Sm(e)})`:"..."}var ge=class extends Error{constructor(n,r){super(`${n} \u3092\u30AD\u30E3\u30F3\u30BB\u30EB\u3057\u307E\u3057\u305F\uFF08\u5BFE\u8C61: ${r} \u4EF6\uFF09`);this.operation=n;this.affectedCount=r;this.name="OperationCancelledError"}};var Pe=class extends Error{constructor(t,n,r){super(n),this.name="KsqlEngineError",this.code=t,r!==void 0&&(this.cause=r),Object.setPrototypeOf(this,new.target.prototype)}};function Xc(e,t,n){return Object.defineProperties(e,{statementIndex:{value:t,enumerable:!0,configurable:!1,writable:!1},statementType:{value:n,enumerable:!0,configurable:!1,writable:!1}}),e}function Ze(e){return new Pe("READ_ONLY_VIOLATION",e)}function gr(e,t){return new Pe("PARSE_ERROR",e,t)}function Tm(){let e=new Pn;return new Pe("SEARCH_ABORTED",e.message,e)}function Qi(e){return e instanceof Error&&e.message.trim()!==""||e!==null&&typeof e=="object"&&typeof e.message=="string"?e.message:String(e)}function ww(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 Mn(e){return e instanceof Pe?e:e instanceof ve||e instanceof T?new Pe("PARSE_ERROR",Qi(e),e):e instanceof Pn||e?.name==="SearchAbortedError"?new Pe("SEARCH_ABORTED",Qi(e),e):e instanceof Ge||e?.name==="FetchAllLimitError"?new Pe("FETCH_LIMIT_EXCEEDED",Qi(e),e):e instanceof Error&&e.name==="ClientOperationError"&&"cause"in e?new Pe("CLIENT_ERROR",e.message,e.cause):ww(e)?new Pe("CLIENT_ERROR",Qi(e),e):new Pe("EXECUTION_ERROR",Qi(e),e)}function gs(e,t){let n=Mn(e);if(e instanceof oe){let r=t[e.statementIndex];if(r!==void 0)return Xc(n,e.statementIndex,r.type)}return n}var bw=2,hs=5,Nw=3e4,Cw=10*6e4+3e4,As=class{constructor(t,n={}){this.host=t;this.active=0;this.peak=0;this.quarantined=0;this.waiters=[];this.createTail=Promise.resolve();let r=n.maxActive??bw;if(!Number.isSafeInteger(r)||r<1||r>hs)throw new Error(`ArgumentError: cursorMaxActive must be an integer from 1 to ${hs}.`);this.maxActive=r,this.waitTimeoutMs=n.waitTimeoutMs??Nw,this.quarantineMs=n.quarantineMs??Cw}acquire(){return this.active<this.maxActive?(this.active+=1,this.peak=Math.max(this.peak,this.active),Promise.resolve(this.makeLease())):new Promise((t,n)=>{let r={};r.resolve=t,r.reject=n,r.timer=setTimeout(()=>{let i=this.waiters.indexOf(r);i>=0&&this.waiters.splice(i,1),n(new Pa(this.host,this.maxActive,this.waitTimeoutMs))},this.waitTimeoutMs),r.timer.unref?.(),this.waiters.push(r)})}setMaxActive(t){this.validateMaxActive(t),this.maxActive!==t&&(this.maxActive=t,this.dispatchWaiters())}async runCreate(t){let n=this.createTail,r;this.createTail=new Promise(i=>{r=i}),await n;try{return await t()}finally{r()}}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:(n=this.quarantineMs)=>{if(t)return;t=!0,this.quarantined+=1,setTimeout(()=>{this.quarantined-=1,this.returnPermit()},n).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>hs)throw new Error(`ArgumentError: cursorMaxActive must be an integer from 1 to ${hs}.`)}};function Pw(e){let t=e;return t?.status===404&&t.code==="GAIA_CN01"}async function Ow(e,t=r=>new Promise(i=>setTimeout(i,r)),n=Pw){try{await e();return}catch(r){if(n(r))return}await t(250);try{await e()}catch(r){if(n(r))return;throw r}}async function Lw(e,t){let n,r=new Promise((i,o)=>{n=setTimeout(()=>o(new Error(`CursorCleanupTimeoutError: cleanup exceeded ${t}ms.`)),t),n.unref?.()});try{return await Promise.race([e,r])}finally{n&&clearTimeout(n)}}function Im(e,t){let n=!1,r=!1,i=Promise.resolve(),o=null;return{totalCount:e,nextPage:()=>{if(r||n)return Promise.resolve({records:[],next:!1});let l=i.then(async()=>{if(r||n)return{records:[],next:!1};let c=await t.get();return c.next||(n=!0,t.onReleased?.()),c});return i=l.then(()=>{},()=>{}),l},close:()=>n?Promise.resolve():o||(r=!0,o=i.then(async()=>{if(!n)try{await Lw(Ow(t.delete,t.sleep,t.isAlreadyReleasedError),t.cleanupTimeoutMs??5e3),n=!0,t.onReleased?.()}catch(l){throw t.onReleaseUnknown?.(),l}}),o)}}function wm(e){return bm(e,Dw(e))}function bm(e,t,n=!1,r){let i=[];for(let o of Object.values(e)){let a=vw(o.options),s=Uw(o.type,o.format),l={code:o.code,label:o.label,fieldType:o.type,optionOrder:a,sortKind:s,required:o.required,minValue:Ss(o.minValue),maxValue:Ss(o.maxValue),minLength:Ss(o.minLength),maxLength:Ss(o.maxLength),defaultValue:o.defaultValue,hasLookup:Object.prototype.hasOwnProperty.call(o,"lookup"),isLookupCopyTarget:t.has(o.code),isUnique:o.unique===!0,isCalculated:o.type==="CALC"||typeof o.expression=="string"&&o.expression.length>0,inSubtable:n,...r?{subtableCode:r}:{},writable:!t.has(o.code)&&!_w.has(o.type)};l.semantics=te(l),i.push(l),o.fields&&i.push(...bm(o.fields,t,!0,o.type==="SUBTABLE"?o.code:r))}return i}var _w=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE","SUBTABLE"]);function Dw(e){let t=new Set,n=r=>{for(let i of Object.values(r)){for(let o of i.lookup?.fieldMappings??[])o.field&&t.add(o.field);i.fields&&n(i.fields)}};return n(e),t}function Ss(e){return e==null||e===""?void 0:e}function vw(e){if(!e||typeof e!="object")return;let t={},n=!1;for(let[r,i]of Object.entries(e)){let o=Number(i?.index);Number.isFinite(o)&&(t[r]=o,n=!0)}return n?t:void 0}function Uw(e,t){if(e==="NUMBER"||e==="RECORD_NUMBER")return"number";if(e==="CALC")return t==="NUMBER"||t==="NUMBER_DIGIT"?"number":"string"}function Nm(e){return e===null?null:Object.values(e).map(t=>{let n=Number(t.index);if(!Number.isSafeInteger(n)||n<0)throw new Error(`ArgumentError: invalid process status index: ${String(t.index)}`);return{name:t.name,index:n}})}var Mw="Filter aborted because of too many search results";function Cm(e){return e?.includes(Mw)===!0}var Pm="/k/v1/records.json",Ts="/k/v1/records/cursor.json",kw=4096,xw=2,Qc=e=>kintone.api.url(e,!0);function Fw(e){let t={app:e.app,query:e.query,...e.fields.length>0?{fields:e.fields}:{},...e.totalCount===!0?{totalCount:!0}:{}},r=kintone.api.urlForGet(Pm,t,!0),i={"X-Requested-With":"XMLHttpRequest"};return new TextEncoder().encode(r).byteLength<=kw?{url:r,init:{method:"GET",credentials:"include",headers:i}}:{url:Qc(Pm),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 Zi(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 n=t,r=[typeof n.code=="string"&&n.code!==""?`${n.message}\uFF08${n.code}\uFF09`:n.message];if(n.errors!==null&&typeof n.errors=="object")for(let[o,a]of Object.entries(n.errors)){let s=Array.isArray(a?.messages)?a.messages.filter(l=>typeof l=="string"):[];s.length>0&&r.push(`${o}: ${s.join(" / ")}`)}let i=new Error(r.join(`
14
- `));return typeof n.code=="string"&&n.code!==""&&(i.name=n.code),typeof n.code=="string"&&Object.assign(i,{code:n.code}),typeof n.status=="number"&&Object.assign(i,{status:n.status}),Object.assign(i,{cause:e}),i}async function Gw(e){try{let t=await e.json();if(t!==null&&typeof t=="object"){let r=t;return Zi({code:r.code,message:r.message,errors:r.errors,status:e.status})}let n=new Error(`kintone API error: HTTP ${e.status}`);return Object.assign(n,{status:e.status,cause:t}),Zi(n)}catch(t){let n=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(n,{status:e.status,cause:t}),Zi(n)}}function Kw(e){let t=e;return t?.code==="GAIA_CN01"&&(t.status===404||t.status===void 0)}async function kn(e,t,n){try{return await kintone.api(Qc(e),t,n)}catch(r){throw Zi(r)}}function Bw(e){if(!Number.isSafeInteger(e)||e<1||e>5)throw new Error("ArgumentError: cursorMaxActive must be an integer from 1 to 5.")}function Om(e={}){let t=e.cursorMaxActive??xw;Bw(t);let n=null,r=null,i=new Set;return{async getRecords(a){try{let s=Fw(a),l=await fetch(s.url,s.init);if(!l.ok)throw await Gw(l);let c=await l.json();return Cm(l.headers.get("X-Cybozu-Warning"))?{...c,searchAborted:!0}:c}catch(s){throw Zi(s)}},async openCursor(a){let s=Qc(Ts),l=new URL(s,globalThis.location?.href).host.toLowerCase();if(r!==null&&r!==l)throw new Error(`CursorRouteError: factory route changed from ${r} to ${l}.`);if(r=l,n??=new As(l,{maxActive:t}),n.snapshot().active>=t){let E=new Error(`CursorCapacityError: host=${l} \u306E active cursor \u4E0A\u9650 ${t} \u306B\u9054\u3057\u3066\u3044\u307E\u3059\u3002`);throw E.name="CursorCapacityError",E}let c=await n.acquire(),p;try{p=await n.runCreate(()=>kn(Ts,"POST",{app:a.app,query:a.query,size:a.size,fields:a.fields&&a.fields.length>0?a.fields:void 0}))}catch(E){throw typeof E?.code=="string"?(c.release(),E):(c.quarantine(),new Oa(E))}let u=p.id,d=Im(Number(p.totalCount),{get:()=>kn(Ts,"GET",{id:u}),delete:()=>kn(Ts,"DELETE",{id:u}),isAlreadyReleasedError:Kw,onReleased:()=>c.release(),onReleaseUnknown:()=>c.quarantine()}),f=null,R={totalCount:d.totalCount,async nextPage(){let E=await d.nextPage();return E.next||i.delete(R),E},close(){return f||(f=d.close().finally(()=>{i.delete(R)}),f)}};return i.add(R),R},async getApps(){let s=[],l=0;for(;;){let c=await kn("/k/v1/apps.json","GET",{limit:100,offset:l});for(let p of c.apps)s.push({appId:Number(p.appId),name:p.name,description:p.description});if(c.apps.length<100)break;l+=100}return s},async getFields(a){let s=await kn("/k/v1/app/form/fields.json","GET",{app:a});return wm(s.properties)},async getNumberPrecision(a){let s=await kn("/k/v1/app/settings.json","GET",{app:a});return Sf(s)},async getProcessStatuses(a){let s=await kn("/k/v1/app/status.json","GET",{app:a,lang:"user"});return{enable:s.enable,states:Nm(s.states)}}}}var Lm=new Set(["postRecords","putRecords","deleteRecords"]),eo=class extends Error{constructor(t){let n=t instanceof Error?t.message:String(t);super(n),this.name="ClientOperationError",this.cause=t,Object.setPrototypeOf(this,new.target.prototype)}};async function sn(e){try{return await e()}catch(t){throw new eo(t)}}function $w(e){return()=>{throw Ze(`${String(e)} is blocked by the readonly client`)}}function hr(e){let t=e.getRecords.bind(e),n=e.openCursor.bind(e),r=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 c=await sn(()=>t(l));if(c.searchAborted===!0)throw Tm();return c},openCursor:async l=>{let c=await sn(()=>n(l)),p=c.nextPage.bind(c),u=c.close.bind(c);return{totalCount:c.totalCount,nextPage:()=>sn(()=>p()),close:()=>sn(()=>u())}},getApps:()=>sn(()=>r()),getFields:l=>sn(()=>i(l)),getNumberPrecision:l=>sn(()=>o(l)),getProcessStatuses:l=>sn(()=>a(l))});return new Proxy(s,{get(l,c,p){return Lm.has(c)?$w(c):Reflect.get(l,c,p)},has(l,c){return Lm.has(c)?!1:Reflect.has(l,c)}})}function Ww(e){let t=new Set,n=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 n||(n=(async()=>{let o=(await Promise.allSettled([...t].map(a=>a.close()))).find(a=>a.status==="rejected");if(o)throw new eo(o.reason)})(),n)}}}async function Ar(e,t){let n=Ww(e),r=!1;try{return await t(n.client)}catch(i){throw r=!0,i}finally{try{await n.close()}catch(i){if(!r)throw i}}}var Vw="A-Za-z",Hw="\\u3040-\\u30FF\\u3400-\\u9FFF\\uF900-\\uFAFF\\uFF01-\\uFF60",ep=`${Vw}${Hw}`,Dm=`${ep}0-9_`,Yw=new RegExp(`^[${ep}]$`,"u"),jw=new RegExp(`^[${Dm}]$`,"u"),zw=new RegExp(`^[${ep}][${Dm}]{0,63}$`,"u");function qw(e){return Yw.test(e)}function Jw(e){return jw.test(e)}function tp(e){let t=e.normalize("NFC").toUpperCase();if(!zw.test(t))throw new Error(`ArgumentError: logical app name "${e}" is invalid; expected 1-64 UTF-16 units starting with an ASCII letter or supported Japanese character.`);return t}function Zc(e){if(!e)return!1;let t=e.codePointAt(0);return t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===95||t===36||t>=12352&&t<=12543||t>=13312&&t<=40959||t>=63744&&t<=64255||t>=65281&&t<=65376}function Xw(e){if(!e)return!1;let t=e.codePointAt(0);return t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||e==="_"||e==="-"||e==="."||e==="$"}function Qw(e,t){let n=t>0?e[t-1]:"";if(Zc(n))return null;let r,i,o,a,s,l;if(e.slice(t,t+5).toUpperCase()==="LAPP_"){if(r="logical",l=t+5,a=l,!qw(e[l]??""))return null;for(l++;l<e.length&&Jw(e[l]);)l++;s=l;try{o=tp(e.slice(a,s))}catch{return null}}else if(e.slice(t,t+3).toUpperCase()==="APP"){for(r="physical",l=t+3,a=l;l<e.length&&/[0-9]/.test(e[l]);)l++;if(s=l,s===a)return null;i=Number(e.slice(a,s))}else return null;if(e[l]==="$"){l++;let f=l;for(;l<e.length&&Zc(e[l]);)l++;if(l===f)return null}let c=l,p=null;if(e[l]==="@"){l++;let f=l;for(;l<e.length&&Xw(e[l]);)l++;if(l===f)return null;p=e.slice(f,l)}let u=l<e.length?e[l]:"";if(Zc(u))return null;let d={profile:p,start:t,referenceValueStart:a,referenceValueEnd:s,appEnd:c,fullEnd:l};return r==="physical"?{...d,source:r,appId:i}:{...d,source:r,logicalName:o}}function np(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(r==="'"){for(n++;n<e.length;){if(e[n]==="'"){if(n++,n<e.length&&e[n]==="'"){n++;continue}break}n++}continue}if(r==="`"){for(n++;n<e.length&&e[n]!=="`";)n++;n<e.length&&n++;continue}if(r==="-"&&e[n+1]==="-"){for(n+=2;n<e.length&&e[n]!==`
15
- `;)n++;continue}if(r==="/"&&e[n+1]==="*"){for(n+=2;n<e.length;){if(e[n]==="*"&&e[n+1]==="/"){n+=2;break}n++}continue}let i=Qw(e,n);if(!i){n++;continue}t.push(i),n=i.fullEnd}return t}function _m(e){let t=9e8;for(;e.has(t);)t++;return e.add(t),t}function vm(e,t="dev",n){let r=np(e),i=r.some(m=>m.profile!==null),o=new Map,a=m=>m??t;for(let m of r){if(m.source!=="physical")continue;let y=a(m.profile),g=o.get(m.appId);g||(g=new Set,o.set(m.appId,g)),g.add(y.toLowerCase())}let s=new Set(r.filter(m=>m.source==="physical").map(m=>m.appId)),l=new Map;for(let m of r){if(m.source!=="logical")continue;let y=a(m.profile).toLowerCase(),g=`logical:${m.logicalName}@${y}`;if(l.has(g))continue;if(!n)throw new Error(`ArgumentError: logical app LAPP_${m.logicalName}@${y} requires logicalApps configuration.`);let S=n.resolveLogicalApp(m.logicalName,y);l.set(g,S),s.add(S)}let c=new Map,p=new Map;for(let[m,y]of o.entries()){let g=[...y].sort();if(!(g.length<=1))for(let S of g){let h=_m(s);c.set(`physical:${m}@${S}`,h),p.set(h,{source:"physical",mappedAppId:h,appId:m,profile:S})}}let u=[],d=[],f=0,R=0,E=(m,y,g,S)=>{if(!m&&y===g)return;let h=f;u.push(m),f+=m.length,d.push({normalizedStart:h,normalizedEnd:f,sourceStart:y,sourceEnd:g,...S===void 0?{}:{bindingMappedAppId:S}})};for(let m of r){let y=a(m.profile).toLowerCase(),g;if(m.source==="physical")g={source:"physical",mappedAppId:c.get(`physical:${m.appId}@${y}`)??m.appId,appId:m.appId,profile:y};else{let I=`logical:${m.logicalName}@${y}`,N=c.get(I);N===void 0&&(N=_m(s),c.set(I,N)),g={source:"logical",logicalName:m.logicalName,mappedAppId:N,appId:l.get(I),profile:y}}p.set(g.mappedAppId,g),E(e.slice(R,m.start),R,m.start);let S=e.slice(m.referenceValueEnd,m.appEnd),h=m.source==="physical"?`${e.slice(m.start,m.referenceValueStart)}${g.mappedAppId}${S}`:`APP${g.mappedAppId}${S}`;E(h,m.start,m.fullEnd,g.mappedAppId),R=m.fullEnd}return E(e.slice(R),R,e.length),{normalizedSql:u.join(""),hasProfileSyntax:i,appBindingByMappedApp:p,rewriteSegments:d}}var Um=new Set(["client","logicalApps","maxRecords","recursiveCteMaxDepth","recursiveCteMaxRows","recursiveCteMaxExpansions","fetchParallel","cursorMaxActive"]),Mm=new Set([...Um,"onLimitReached"]),Zw=new Set([...Mm,"variables","tempTableMaxRows"]);function km(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new TypeError("options must be an object")}function Sr(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new RangeError(`${t} must be a positive safe integer`)}function xm(e){if(e===null||typeof e!="object")throw new TypeError("client is required");let t=e;for(let n of["getRecords","openCursor","getApps","getFields","getNumberPrecision","getProcessStatuses"])if(typeof t[n]!="function")throw new TypeError(`client.${n} must be a function`)}function eb(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new TypeError("variables must be an object");for(let[t,n]of Object.entries(e))if(typeof n!="string")throw new TypeError(`variables.${t} must be a string`)}function Fm(e){if(e===void 0)return;if(e===null||typeof e!="object"||Array.isArray(e))throw new TypeError("logicalApps must be an object");let t={};for(let[n,r]of Object.entries(e)){let i;try{i=tp(n)}catch{throw new TypeError(`logicalApps key "${n}" is invalid`)}if(Object.prototype.hasOwnProperty.call(t,i))throw new TypeError(`logicalApps key "${n}" duplicates "${i}" after canonical normalization`);Sr(r,`logicalApps.${n}`),t[i]=r}return t}function Gm(e,t,n){for(let r of Reflect.ownKeys(e))if(typeof r!="string"||!t.has(r))throw new TypeError(`Unknown ${n} option: ${String(r)}`);e.maxRecords!==void 0&&Sr(e.maxRecords,"maxRecords");for(let r of["recursiveCteMaxDepth","recursiveCteMaxRows","recursiveCteMaxExpansions"])e[r]!==void 0&&Sr(e[r],r);if(e.fetchParallel!==void 0&&Sr(e.fetchParallel,"fetchParallel"),e.cursorMaxActive!==void 0&&(Sr(e.cursorMaxActive,"cursorMaxActive"),e.cursorMaxActive>5))throw new RangeError("cursorMaxActive must be between 1 and 5");if(e.onLimitReached!==void 0&&e.onLimitReached!=="error"&&e.onLimitReached!=="truncate")throw new TypeError('onLimitReached must be "error" or "truncate"');return{...e.maxRecords!==void 0?{maxRecords:e.maxRecords}:{},...e.recursiveCteMaxDepth!==void 0?{recursiveCteMaxDepth:e.recursiveCteMaxDepth}:{},...e.recursiveCteMaxRows!==void 0?{recursiveCteMaxRows:e.recursiveCteMaxRows}:{},...e.recursiveCteMaxExpansions!==void 0?{recursiveCteMaxExpansions:e.recursiveCteMaxExpansions}:{},...e.fetchParallel!==void 0?{fetchParallel:e.fetchParallel}:{},...e.cursorMaxActive!==void 0?{cursorMaxActive:e.cursorMaxActive}:{},...e.onLimitReached!==void 0?{onLimitReached:e.onLimitReached}:{}}}function rp(e,t){km(e);let n=t==="run"?Mm:Um;xm(e.client);let r=Gm(e,n,t==="run"?"runQuery":"explainQuery"),i=Fm(e.logicalApps);return{client:e.client,...i===void 0?{}:{logicalApps:i},executeOptions:r}}function Km(e){km(e),xm(e.client),e.variables!==void 0&&eb(e.variables),e.tempTableMaxRows!==void 0&&Sr(e.tempTableMaxRows,"tempTableMaxRows");let t=Gm(e,Zw,"runBatch"),n=Fm(e.logicalApps);return{client:e.client,...n===void 0?{}:{logicalApps:n},executeOptions:{...t,...e.variables!==void 0?{variables:e.variables}:{},...e.tempTableMaxRows!==void 0?{tempTableMaxRows:e.tempTableMaxRows}:{}}}}function Is(e,t,n={}){let r=n.logicalAppDisplay??"profile";if(typeof e=="string"){let i=e.match(/^(\s*target:\s*)APP(\d+) \((\d+)\)\s*$/);if(i&&i[2]===i[3]){let s=t.get(Number(i[2]));if(s){let l=s.source==="logical"?r==="physical"?`LAPP_${s.logicalName} -> APP${s.appId}`:`LAPP_${s.logicalName} -> APP${s.appId}@${s.profile}`:r==="physical"?`APP${s.appId}`:`APP${s.appId}@${s.profile}`;return`${i[1]}${l}`}}if(t.size===0)return e;let o=[...t.keys()].sort((s,l)=>String(l).length-String(s).length),a=new RegExp(`APP(${o.join("|")})(?!\\d)(\\s+AS\\s+[^\\s()]+)?(?:\\s+\\(\\1\\))?`,"g");return e.replace(a,(s,l,c)=>{let p=t.get(Number(l));return`${p.source==="logical"?r==="physical"?`LAPP_${p.logicalName} -> APP${p.appId}`:`LAPP_${p.logicalName}@${p.profile}`:r==="physical"?`APP${p.appId}`:`APP${p.appId}@${p.profile}`}${c??""}`})}return Array.isArray(e)?e.map(i=>Is(i,t,n)):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([i,o])=>[i,Is(o,t,n)])):e}function tb(e,t,n){return e.slice(t,n)}function to(e,t,n){let r=np(e),i=r.find(c=>c.profile!==null);if(i!==void 0)throw new Error(`ArgumentError: browser engine library does not support @profile suffixes (${tb(e,i.start,i.fullEnd)}).`);if(!r.some(c=>c.source==="logical"))return{sql:e,client:t,logicalBindings:[]};let o=vm(e,"browser",{resolveLogicalApp(c){let p=n?.[c];if(p===void 0)throw new Error(`ArgumentError: logical app LAPP_${c} is not defined.`);return p}}),a=[...o.appBindingByMappedApp.values()].filter(c=>c.source==="logical"),s=c=>o.appBindingByMappedApp.get(c)?.appId??c,l={getRecords:c=>t.getRecords({...c,app:s(c.app)}),openCursor:c=>t.openCursor({...c,app:s(c.app)}),getApps:()=>t.getApps(),getFields:c=>t.getFields(s(c)),getNumberPrecision:c=>t.getNumberPrecision(s(c)),getProcessStatuses:c=>t.getProcessStatuses(s(c))};return{sql:o.normalizedSql,client:l,logicalBindings:a}}function no(e,t){if(t.length===0)return e;let n=t.map(r=>`LAPP_${r.logicalName} -> APP${r.appId}`).filter((r,i,o)=>o.indexOf(r)===i);return e.message=`${e.message} [logical apps: ${n.join(", ")}]`,e}function ro(e,t){if(t.length===0)return e;let n=new Map(t.map(r=>[r.mappedAppId,r]));return Is(e,n,{logicalAppDisplay:"physical"})}function ws(e){return{recordGetCalls:e?.getCalls??0,fetchedRows:e?.fetchedRows??0,elapsedMs:e?.elapsedMs??0,cursorRecordsScanned:e?.cursorRecordsScanned??0,limitReached:e?.limitReached??!1,limitReachedApps:e?[...e.limitReachedApps].sort((t,n)=>t-n):[]}}function nb(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,String(n)]))}function rb(e,t){let n=t?.get(e),r=n?.fieldType??n?.semantics?.fieldType,i=n?.semantics?.compareMode,o=n?.sortKind??(i==="number"||i==="string"?i:void 0),a=n?.publicSourceApp;return{name:e,displayName:n?.displayName??e,valueType:"string",...r!==void 0?{fieldType:r}:{},...o!==void 0?{sortKind:o}:{},...a!==void 0?{sourceApp:a}:{}}}function bs(e,t=e.metrics){let n=cR(e);return{type:"query",rows:e.rows.map(nb),columns:e.columns.map(r=>rb(r,n)),rowCount:e.rowCount,warnings:[...e.warnings??[]],...e.validateStats?{validateStats:e.validateStats}:{},metrics:ws(t)}}function Bm(e,t={}){let n=new Zt(e).tokenize(),r=new en(n,t).parse();return nt(r),r}function $m(e,t={}){let n=new Zt(e).tokenize(),r=new en(n,t).parseStatements();return r.forEach(nt),r}function ip(e){let t=e.type==="EXPLAIN"?e.query:e;if(t.type!=="UPDATE"&&t.type!=="INSERT"&&t.type!=="UPSERT")return!1;let n=t;return["applyBlocks","onInsertApplyBlocks","onUpdateApplyBlocks"].some(r=>Array.isArray(n[r])&&n[r].length>0)}function Wm(e){if(e instanceof Re)return gr(e.message,e);let t=Mn(e);return t.code==="PARSE_ERROR"?t:gr("SQL statement could not be parsed",e)}function ib(e){if(e.trim()==="")throw gr("SQL statement is empty");try{return Bm(e,{import:!0})}catch(t){let n=Wm(t);throw n.message.includes("\u8907\u6587\u306F\u30D0\u30C3\u30C1\u5B9F\u884C API \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044")?gr("This API accepts one statement; use runBatch for multiple statements",t):n}}function Vm(e){if(co(e)==="UNKNOWN")throw Ze("Unclassifiable statement is not allowed");return e}function Hm(e){if(e.trim()==="")throw gr("SQL statement is empty");try{return $m(e,{import:!0})}catch(t){throw Wm(t)}}function ob(e){let t=Vm(e),n=t.type;if(n==="IMPORT")throw Ze("IMPORT is disabled by default in engine library queries");if(!Gn(t))throw Ze(`${n} statements are not read-only`);if(ip(t))throw Ze("APPLY statements are not allowed in engine library queries");if(!yp(t))throw Ze(`${n} does not return rows; use runBatch for batch-scoped or non-row-returning read-only statements`)}function Ym(e){let t=Vm(e),n=t.type==="EXPLAIN"?t.query:t;if(n.type==="IMPORT")throw Ze("IMPORT is disabled by default in engine library batches");if(!Gn(n))throw Ze(`${n.type} statements are not read-only`);if(ip(n))throw Ze("APPLY statements are not allowed in engine library batches");if(Vt(n.type))throw Ze("DML VALIDATE ONLY statements are not supported by runBatch")}function jm(e){let t=ib(e);return ob(t),t}function zm(e){let t=Hm(e);return t.forEach(Ym),t}function qm(e){let t=e.trim(),n=Hm(t);n.forEach(Ym);let r=n[0],i=r.type==="EXPLAIN"?r.query:r;return n.length===1&&(i.type==="SELECT"||i.type==="WITH"||i.type==="UNION")?{statements:n,legacySql:r.type==="EXPLAIN"?t:`EXPLAIN ${t}`}:{statements:n}}function ab(e){let t=e.error,n=t?.cause!==void 0?Mn(t.cause):new Pe("EXECUTION_ERROR",t?.message??`Statement ${e.index} failed`);return Xc(n,e.index,e.type)}async function Jm(e,t){let n=[],r=[];try{let i=Km(t),o=to(e,i.client,i.logicalApps);r=o.logicalBindings,n=zm(o.sql);let a=await Ar(o.client,p=>hR(o.sql,hr(p),{...i.executeOptions,captureColumnMeta:!0})),s=a.statements.find(p=>p.status==="error");if(s!==void 0)throw ab(s);let l=[],c=a.statements.map(p=>{let u={index:p.index,type:p.type,status:p.status};if(p.tempTable!==void 0&&(u.tempTable=p.tempTable),p.rowCount!==void 0&&(u.rowCount=p.rowCount),p.error!==void 0&&(u.error={code:p.error.code,message:p.error.message}),p.skippedReason!==void 0&&(u.skippedReason=p.skippedReason),p.status==="success"&&p.result?.type==="SELECT"){u.resultIndex=l.length;let d=bs(p.result,a.metrics);l.push(n[p.index]?.type==="EXPLAIN"?ro(d,r):d)}return u});return{type:"batch",batch:!0,statementCount:a.statementCount,statements:c,results:l,warnings:[]}}catch(i){throw no(gs(i,n),r)}}function Xm(e){if(e===null||typeof e!="object"||e.type!=="SELECT")throw new Error("Engine returned a non-SELECT result")}async function Qm(e,t){let n=[];try{let r=rp(t,"run"),i=to(e,r.client,r.logicalApps);n=i.logicalBindings;let a=jm(i.sql).type==="VALIDATE"?{...r.executeOptions,onLimitReached:"error"}:r.executeOptions,s=await Ar(i.client,l=>mc(i.sql,hr(l),{...a,captureColumnMeta:!0}));return Xm(s),bs(s)}catch(r){throw no(Mn(r),n)}}async function Zm(e,t){let n=[],r=[];try{let i=rp(t,"explain"),o=to(e,i.client,i.logicalApps);r=o.logicalBindings;let a=qm(o.sql);if(n=a.statements,a.legacySql!==void 0){let p=await Ar(o.client,f=>mc(a.legacySql,hr(f),i.executeOptions));Xm(p);let u=ro(p.rows.map(f=>String(f.plan??"")),r),d=zc(p)??{statements:[{index:0,fetch:"none",sources:[]}]};return{type:"explain",lines:u,text:u.join(`
16
- `),plan:d,metrics:ws(p.metrics)}}let s=await Ar(o.client,p=>Rm(o.sql,hr(p),void 0,"batch-explain",i.executeOptions.maxRecords,i.executeOptions.cursorMaxActive,!1,100,void 0,!0,i.executeOptions.recursiveCteMaxDepth,i.executeOptions.recursiveCteMaxRows,i.executeOptions.recursiveCteMaxExpansions)),l=ro(s.statements.flatMap(p=>[...s.statementCount>1?[`[${p.index+1}] ${p.type}`]:[],...p.plan]),r),c=zc(s)??{statements:s.statements.map(p=>({index:p.index,fetch:"none",sources:[]}))};return{type:"explain",lines:l,text:l.join(`
17
- `),plan:c,metrics:ws()}}catch(i){throw no(gs(i,n),r)}}var sb="3.67.0";0&&(module.exports={KsqlEngineError,createReadonlyKintoneClient,explainQuery,runBatch,runQuery,version});
17
+ 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 $I(e){if(e.unappliedKlikes.length>0)throw new Error(`UnsupportedError: ${KI}`)}async function BI(e,t,n,r,i){let o=r.filter(R=>!R.inSubtable),a=new Map(o.map(R=>[R.code,R])),s=new Map(o.map(R=>[R.code,R.fieldType])),l=new Map(o.flatMap(R=>R.optionOrder?[[R.code,new Set(Object.keys(R.optionOrder))]]:[])),p=su(e.where,{fieldTypes:s,fieldOptions:l});$I(p);let c=p.prefilter===null?"":j(p.prefilter),u=new Set(la(e,r));for(let R of VI(e.where))u.add(R);let d=await WI(e.appId,e.where,a,t,i);return(await xe(t.getRecords,e.appId,c,[...u],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"})).map(R=>({snapshot:R,row:Mt(R,null)})).filter(({row:R})=>se(e.where,R,d.fieldTypeResolver,p.appliedKlikes,d.fieldSemanticsResolver,le(n))).map(({snapshot:R})=>R)}function VI(e){return wc(e)}async function WI(e,t,n,r,i){let s=[...HI(t)].some(c=>n.get(c)?.fieldType==="STATUS")?await Gc(e,r,i):void 0;return{fieldTypeResolver:c=>c.field==="$id"?"NUMBER":n.get(c.field)?.fieldType,fieldSemanticsResolver:c=>{if(c.field==="$id")return Xn(te({fieldType:"__ID__"}),e,"$id");let u=n.get(c.field);if(!u)return;let d=u.semantics??te(u),f=u.fieldType==="STATUS"&&s?{...d,optionOrder:s}:d;return Xn(f,e,u.code)}}}function HI(e){let t=new Set,n=r=>{if(Array.isArray(r)){r.forEach(n);return}if(r===null||typeof r!="object")return;let i=r;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(n)}};return n(e),t}function YI(e,t,n){let r=t.validations.flatMap(c=>c.errors),i=t.validations.reduce((c,u)=>c+(u.invalidRows>0?1:0),0),o=t.validations[0]?.columns?[...t.validations[0].columns]:[...Rt(n,e.fields).payloadFields,...ii],a=t.guards.parentRows,s=Jl(t),l=s.branches[0],p={type:"VALIDATION",operation:"INSERT",validatedRows:a,validRows:a-i,invalidRows:i,errorCount:r.length,columns:o,errors:r,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},apply:Vi(l),guards:Wi(l),deletedRows:{total:0,parentRows:0},diagnostic:s};return kn.set(p,gs(o,n,e.appId)),p}function jI(e,t,n){let r=t.validations,i=r.flatMap(p=>p.errors),o=r.reduce((p,c)=>p+(c.invalidRows>0?1:0),0),a=r[0]?.columns?[...r[0].columns]:[...Rt(n,e.assignments.map(p=>p.field)).payloadFields,...ii],s=si(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:Vi(s.branches[0]),guards:Wi(s.branches[0]),deletedRows:{total:t.plans.reduce((p,c)=>p+c.tables.reduce((u,d)=>u+d.deletedRows,0),0),parentRows:t.plans.filter(p=>p.tables.some(c=>c.deletedRows>0)).length},diagnostic:s};return kn.set(l,gs(a,n,e.appId)),l}function zI(e,t,n){let r=t.create.validations.flatMap(R=>R.errors),i=t.update.validations.flatMap(R=>R.errors),o=[...r,...i].map(R=>({...R,$err_operation:"UPSERT"})),a=new Set(o.map(R=>R.$err_row)).size,s=t.create.validations[0]?.columns??t.update.validations[0]?.columns??[...Rt(n,e.fields).payloadFields,...ii],l=Xl(t),p=l.branches.find(R=>R.branch==="insert"),c=l.branches.find(R=>R.branch==="update"),u=Vi(p),d=Vi(c),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:[...u,...d],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:u,guards:Wi(p)},update:{apply:d,guards:Wi(c)}},deletedRows:{total:t.update.plans.reduce((R,E)=>R+E.tables.reduce((m,g)=>m+g.deletedRows,0),0),parentRows:t.update.plans.filter(R=>R.tables.some(E=>E.deletedRows>0)).length},diagnostic:l};return kn.set(f,gs([...s],n,e.appId)),f}function Vi(e){return e.targets.map(t=>{let n=t.operations.map(r=>({kind:r.kind,...r.matchedRows!==void 0?{matchedRows:r.matchedRows??void 0}:{},...r.changedRows!==void 0?{changedRows:r.changedRows??void 0}:{},...r.addedRows!==void 0?{addedRows:r.addedRows??void 0}:{},...r.removedRows!==void 0?{removedRows:r.removedRows??void 0}:{},...r.value!==void 0?{value:r.value}:{},...r.changed!==void 0?{changed:r.changed}:{}}));return t.targetKind==="SUBTABLE"?{field:t.field,operations:n,changedSubtableRows:t.changedCount??0,deletedRows:On(t,"REMOVE")}:{field:t.field,operations:n,changedSubtableRows:0,deletedRows:0,multiValue:{fieldType:t.fieldType??"UNKNOWN",addedValues:On(t,"ADD"),removedValues:On(t,"REMOVE_VALUE"),changedValues:t.changedCount??0,postImages:t.postImages??[]}}})}function Wi(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 Gt=100,Ce=500;function Qe(e,t,n){let r=e??n;if(!Number.isSafeInteger(r)||r<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`);return r}function gs(e,t,n){let r=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:te({fieldType:"RECORD_NUMBER"})});continue}let s=r.get(a);if(s){o.set(a,Me(s,n));continue}o.set(a,Q(i.has(a)?"number":"string"))}return o}async function qI(e,t,n,r,i,o){let a=await ZR(e,t,n,r,i,o),s=await ke(e.appId,n,i),l=Ol(e,a,s,le(r)),p=e.assignments.map(d=>d.field),c=await ee(e.appId,n,i),u=await Ft(e.appId,p,c,n,i);if(Mn(l.flatMap(d=>d.records.map(f=>f.record)),p,c,u),r.confirm&&!await r.confirm(a.length,"UPDATE"))throw new ye("UPDATE",a.length);for(let d of l)await n.putRecords(d);return{type:"UPDATE",updatedCount:a.length}}function JI(e){let t=new Set(["$id"]);e.from&&t.add(e.from.targetJoinField);let n=r=>{if(Array.isArray(r)){r.forEach(n);return}if(r===null||typeof r!="object")return;let i=r;i.type==="FIELD_REF"&&typeof i.field=="string"&&t.add(i.field);for(let o of Object.values(i))n(o)};for(let r of e.assignments)r.value.type!=="SOURCE_FIELD"&&n(r.value);return[...t]}async function XI(e,t,n,r){if(await Er(e,t,r),ut(e.where))return{type:"DELETE",deletedCount:0};if(e.subtableCode)return tw(e,t,n,r);let i=uf(e),a=(await Ia(t.getRecords,i.app,i.query,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1})).ids;if(n.confirm&&!await n.confirm(a.length,"DELETE"))throw new ye("DELETE",a.length);let s=cf(e.appId,a);for(let l of s)await t.deleteRecords(l);return{type:"DELETE",deletedCount:a.length}}async function QI(e,t,n,r){if(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length)return hI(e,t,n,r);if(e.checkGroups?.length)return Qi(e,t,n,r);let i=await pt(e.appId,e.fields,t,r),o=await Ft(e.appId,e.fields,i,t,r),a=[],s=[],l=await ke(e.appId,t,r),p=rm(e),c=await Ji(e.appId,e.keyFields,p,t,n,l);if(e.values.forEach((d,f)=>{let R={};e.fields.forEach((m,g)=>{let y=d[g];y.type==="CASE_VALUE"?R[m]={value:nn(y.expr,{},l.get(m),le(n))}:R[m]={value:_t(y,l.get(m))}});let E=qi(c,p[f]);E!==void 0?s.push({id:E,record:R}):a.push(R)}),Mn([...a,...s.map(d=>d.record)],e.fields,i,o),n.confirm&&a.length+s.length>0){let d=a.length+s.length;if(!await n.confirm(d,"UPDATE"))throw new ye("UPDATE",d)}let u=[];for(let d=0;d<a.length;d+=100){let f=await t.postRecords({app:e.appId,records:a.slice(d,d+100)});u.push(f.ids)}for(let d=0;d<s.length;d+=100)await t.putRecords({app:e.appId,records:s.slice(d,d+100)});return{type:"UPSERT",insertedCount:u.flat().length,updatedCount:s.length}}function rm(e){return e.values.map(t=>e.keyFields.map(n=>{let r=e.fields.indexOf(n);if(r===-1)throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${n}\u300D\u304C INSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let i=t[r];return i.type==="STRING"?i.value:i.type==="NUMBER"?z(i):i.type==="CASE_VALUE"?Ke(i.expr,{}):i.elements.map(o=>o.value).join(",")}))}async function Hc(e,t,n,r){if(t.length===0)return;let i=await ke(e,n,r);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 ZI(e,t,n,r){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 xe(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),s=ys(a),l=new Map;for(let c of e.values){let u=sR(c[o]);if(!s.get(u))throw new Error(`_pid=${u} \u306E\u89AA\u30EC\u30B3\u30FC\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093`);let f={value:{}};e.fields.forEach((E,m)=>{if(E!=="_pid"){if(E.startsWith("_"))throw new Error(`\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB INSERT \u3067\u30B7\u30B9\u30C6\u30E0\u5217\u300C${E}\u300D\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`);f.value[E]={value:sR(c[m])}}});let R=l.get(u);R?R.push(f):l.set(u,[f])}let p=[];for(let[c,u]of l.entries()){let d=s.get(c),R=[...Zi(d,i),...u];p.push(im(e.appId,c,eo(d),i,R))}for(let c of p)await t.putRecords(c);return{type:"INSERT",createdIds:[],insertedCount:e.values.length}}async function ew(e,t,n,r){let i=e.subtableCode;if(!Di(e.where))throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u306F _rid \u6761\u4EF6\u304C\u5FC5\u9808\u3067\u3059");let o=[];kt(e.where,o);for(let d of e.assignments)d.value.type==="CASE_VALUE"&&ss(d.value.expr,o);let a=await Hc(e.appId,o,t,r),s=await xe(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),p=Yc(s,i).filter(d=>se(e.where,d.flat,a,void 0,void 0,le(n)));if(n.confirm&&!await n.confirm(p.length,"UPDATE"))throw new ye("UPDATE",p.length);let c=new Map;for(let d of p){if(!d.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=c.get(d.parentId);f||(f=new Map,c.set(d.parentId,f));let R={};for(let E of e.assignments){if(E.field.startsWith("_"))throw new Error(`\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u3067\u30B7\u30B9\u30C6\u30E0\u5217\u300C${E.field}\u300D\u306F\u66F4\u65B0\u3067\u304D\u307E\u305B\u3093`);R[E.field]={value:sa(E.value,d.flat,a,le(n))}}f.set(d.rowId,R)}let u=ys(s);for(let[d,f]of c.entries()){let R=u.get(d);if(!R)continue;let m=Zi(R,i).map(g=>{let y=g.id??"";if(!y)return g;let T=f.get(y);return T?{id:y,value:T}:{id:y}});await t.putRecords(nw(e.appId,d,eo(R),i,m))}return{type:"UPDATE",updatedCount:p.length}}async function tw(e,t,n,r){let i=e.subtableCode;if(!Di(e.where))throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB DELETE \u306B\u306F _rid \u6761\u4EF6\u304C\u5FC5\u9808\u3067\u3059");let o=[];kt(e.where,o);let a=await Hc(e.appId,o,t,r),s=await xe(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),p=Yc(s,i).filter(d=>se(e.where,d.flat,a,void 0,void 0,le(n)));if(n.confirm&&!await n.confirm(p.length,"DELETE"))throw new ye("DELETE",p.length);let c=new Map;for(let d of p){let f=c.get(d.parentId);f?f.push(d.rowIndex):c.set(d.parentId,[d.rowIndex])}let u=ys(s);for(let[d,f]of c.entries()){let R=u.get(d);if(!R)continue;let E=Zi(R,i),m=new Set(f),g=E.filter((y,T)=>!m.has(T));await t.putRecords(im(e.appId,d,eo(R),i,g))}return{type:"DELETE",deletedCount:p.length}}function ys(e){let t=new Map;for(let n of e){let r=String(n.$id?.value??"");r&&t.set(r,n)}return t}function Yc(e,t){let n=[];for(let r of e){let i=String(r.$id?.value??""),o=eo(r),a=Zi(r,t);for(let s=0;s<a.length;s++){let l=a[s],p={...ua(l,s),_pid:i};for(let[c,u]of Object.entries(r))c!==t&&(p[`_p.${c}`]=dc(u?.value));n.push({parent:r,parentId:i,parentRevision:o,rowIndex:s,rowId:l.id??"",row:l,flat:p})}}return n}function Zi(e,t){let n=e[t]?.value;return Array.isArray(n)?n:[]}function eo(e){let t=Number(e.$revision?.value??0);return Number.isFinite(t)?t:0}function im(e,t,n,r,i){return{app:e,records:[{id:Number(t),revision:n,record:{[r]:{value:i}}}]}}function nw(e,t,n,r,i){return{app:e,records:[{id:Number(t),revision:n,record:{[r]:{value:i}}}]}}function rw(e,t,n,r,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:n,record:{[r]:{value:i.map(o=>({id:o}))}}}]}}function sR(e){return e.type==="STRING"?e.value:e.type==="NUMBER"?z(e):e.type==="CASE_VALUE"?Ke(e.expr,{}):e.elements.map(t=>t.value).join(",")}function dc(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 Di(e){switch(e.type){case"BINARY":return e.left.type==="FIELD"&&e.left.tableAlias===null&&e.left.field==="_rid";case"LOGICAL":return Di(e.left)||Di(e.right);case"NOT":case"GROUP":return Di(e.expr);default:return!1}}async function iw(e,t,n,r){let i=[];kt(e.where,i);let o=await Hc(e.appId,i,t,r),a=await ee(e.appId,t,r);if(ut(e.where))return{type:"REORDER",reorderedParentCount:0};let s=new Map(a.map(f=>[f.code,f.semantics??te(f)])),l=f=>{if(f.field==="_idx"||f.field==="_pid"||f.field==="_rid")return B("number");let R=f.field.startsWith("_p.")?f.field.slice(3):f.field;return s.get(R)??B("string")},p=await xe(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),c=Yc(p,e.subtableCode),u=e.all?new Set(p.map(f=>String(f.$id?.value??"")).filter(f=>f!=="")):new Set(c.filter(f=>e.where&&se(e.where,f.flat,o,void 0,l,le(n))).map(f=>f.parentId));if(n.confirm&&!await n.confirm(u.size,"UPDATE"))throw new ye("UPDATE",u.size);let d=ys(p);for(let f of u){let R=d.get(f);if(!R)continue;let m=Zi(R,e.subtableCode).map((y,T)=>({row:y,i:T,flat:ow(R,e.subtableCode,y,T)}));m.sort((y,T)=>aw(y.flat,T.flat,e.by,l,le(n)));let g=m.map(y=>y.row.id??"");await t.putRecords(rw(e.appId,f,eo(R),e.subtableCode,g))}return{type:"REORDER",reorderedParentCount:u.size}}function ow(e,t,n,r){let i={_pid:String(e.$id?.value??""),_rid:n.id??"",_idx:String(r)};for(let[o,a]of Object.entries(e))o!==t&&(i[`_p.${o}`]=dc(a?.value));for(let[o,a]of Object.entries(n.value??{}))i[o]=dc(a?.value);return i}function aw(e,t,n,r,i={}){for(let o of n){let a=lR(o.key,e,i),s=lR(o.key,t,i),l=o.key.type==="FIELD_NAME"?r(Ue(o.key.name)):o.key.type==="ARITH_KEY"?B("number"):o.key.type==="FUNC_KEY"?_n(o.key.expr).semantics??B("string"):B("number"),p=rt(a,s,l??B("string"));if(p!==0)return o.direction==="ASC"?p:-p}return 0}function lR(e,t,n={}){switch(e.type){case"FIELD_NAME":return t[e.name]??"";case"ARITH_KEY":return String(me(e.expr,t,n));case"FUNC_KEY":return ge(e.expr,t,void 0,void 0,n);case"GROUPING_KEY":throw new Error("ArgumentError: GROUPING() is not supported in REORDER BY.")}}async function jc(e,t,n,r,i){if(e.checkGroups?.length)return Qi(e,t,n,r,i);let o=await pt(e.appId,e.fields,t,r),a=await Ft(e.appId,e.fields,o,t,r),s=await Vc.materialize(e,t,n,r,i,o),{rows:l,columns:p}=s;if(tm(s),p.length!==e.fields.length){let g=p.length===0&&l.length===0?"\u3002\u7D50\u679C\u304C 0 \u884C\u306E\u305F\u3081\u5217\u3092\u7279\u5B9A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08SELECT * \u3092\u7A7A\u30BD\u30FC\u30B9\u306B\u4F7F\u3046\u3068\u5217\u3092\u6C7A\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002\u660E\u793A\u5217\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF09":"";throw new Error(`SELECT \u306E\u5217\u6570\uFF08${p.length}\uFF09\u3068 UPSERT \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u6570\uFF08${e.fields.length}\uFF09\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093${g}`)}for(let g of e.keyFields)if(!e.fields.includes(g))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${g}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let c=[],u=[],d=await ke(e.appId,t,r),f=l.map((g,y)=>{let T={};return e.fields.forEach((h,I)=>{if(s.importPresence&&!s.importPresence[y]?.has(h))return;let C=g[p[I]]??"";T[h]={value:JR(C,d.get(h))}}),T});f.forEach(g=>Mn([g],e.fields.filter(y=>y in g),o,a));let R=f.map(g=>e.keyFields.map(y=>String(g[y]?.value??"")));if(cs.has(e)){let g=e.keyFields.map(T=>d.get(T)==="NUMBER"),y=new Set;for(let T of R){let h=vn(T,g);if(y.has(h))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");y.add(h)}}let E=await Ji(e.appId,e.keyFields,R,t,n,d);if(f.forEach((g,y)=>{let T=qi(E,R[y]);T!==void 0?u.push({id:T,record:g}):c.push(g)}),n.confirm&&c.length+u.length>0){let g=c.length+u.length;if(!await n.confirm(g,"UPDATE"))throw new ye("UPDATE",g)}let m=[];for(let g=0;g<c.length;g+=100){let y=await t.postRecords({app:e.appId,records:c.slice(g,g+100)});m.push(y.ids)}for(let g=0;g<u.length;g+=100)await t.putRecords({app:e.appId,records:u.slice(g,g+100)});return{type:"UPSERT",insertedCount:m.flat().length,updatedCount:u.length}}var zc=Object.freeze(["\u30A2\u30D7\u30EAID","\u30A2\u30D7\u30EA\u540D","\u8AAC\u660E"]),qc=Object.freeze(["\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9","\u30E9\u30D9\u30EB","\u30BF\u30A4\u30D7","\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB","\u30EB\u30C3\u30AF\u30A2\u30C3\u30D7","\u30B3\u30D4\u30FC\u5143","\u91CD\u8907\u7981\u6B62","\u8A08\u7B97\u5F0F"]);async function om(e){let t=await e.getApps(),n=[...zc],r=t.map(i=>({\u30A2\u30D7\u30EAID:String(i.appId),\u30A2\u30D7\u30EA\u540D:i.name,\u8AAC\u660E:i.description}));return{type:"SELECT",rows:r,columns:n,rowCount:r.length}}async function am(e,t,n){let r=await ee(e.appId,t,n),i=[...qc],o=r.map(a=>({\u30D5\u30A3\u30FC\u30EB\u30C9\u30B3\u30FC\u30C9:a.code,\u30E9\u30D9\u30EB:a.label,\u30BF\u30A4\u30D7:a.fieldType,\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB:a.inSubtable===!0?a.subtableCode??"":"",\u30EB\u30C3\u30AF\u30A2\u30C3\u30D7:a.hasLookup===!0?"YES":"",\u30B3\u30D4\u30FC\u5143:a.isLookupCopyTarget===!0?"YES":"",\u91CD\u8907\u7981\u6B62:a.isUnique===!0?"YES":"",\u8A08\u7B97\u5F0F:a.isCalculated===!0?"YES":""}));return{type:"SELECT",rows:o,columns:i,rowCount:o.length}}function sw(e,t=!1){try{let n=new Zt(e).tokenize(),r=new en(n,{import:t}).parse();return Hn("phase15b",r),nt(r),r}catch(n){throw n instanceof ve||n instanceof S,n}}async function Hi(e,t,n,r,i,o){let a=[];ns(e,t,n,r,a,i,o),await Promise.all(a)}async function sm(e,t,n,r,i,o){let a=[];for(let s of e.columns)if(s.type==="CASE_COL")for(let l of s.expr.branches)a.push(Hi(l.condition,t,n,r,i,o));await Promise.all(a)}function vi(e,t,n,r,i){return i!==void 0&&i.size>0?ct(e,t,n,i,r):xt(e,t,n,r)}function ns(e,t,n,r,i,o,a){if(e!==null)switch(e.type){case"BINARY":{let s=e.right;s.type==="SUBQUERY_IN_LIST"&&i.push(vi(s.query,t,n,r,a).then(l=>{for(let c of l.warnings??[])o.add(c);let p=s.column??l.columns[0]??"";s.resolved=new Set(l.rows.map(c=>c[p]??""))})),s.type==="SCALAR_SUBQUERY"&&i.push(vi(s.query,t,n,r,a).then(l=>{for(let c of l.warnings??[])o.add(c);if(l.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(l.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 p=l.columns[0]??"";s.resolved=l.rows[0]?.[p]??""}));break}case"LOGICAL":ns(e.left,t,n,r,i,o,a),ns(e.right,t,n,r,i,o,a);break;case"NOT":case"GROUP":ns(e.expr,t,n,r,i,o,a);break;case"EXISTS":{let s=e;i.push(vi(s.query,t,n,r,a).then(l=>{for(let p of l.warnings??[])o.add(p);s.resolved=l.rowCount>0}));break}case"BOOLEAN":break}}async function lm(e,t,n,r){for(let i of e){if(i.value.type!=="SCALAR_SUBQUERY")continue;let o=await xt(i.value.query,t,n,r);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 um(e,t,n,r,i,o){let a=new Map,s=[];for(let c=0;c<e.length;c++){let u=e[c];if(u.type!=="SCALAR_SUBQUERY_COL")continue;let d=JSON.stringify(u.query),f=a.get(d);f||(f=vi(u.query,t,n,r,o).then(R=>{for(let m of R.warnings??[])i.add(m);if(R.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(R.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=R.columns[0]??"";return R.rows[0]?.[E]??""}),a.set(d,f)),s.push([c,f])}let l=await Promise.all(s.map(([,c])=>c)),p=new Map;return s.forEach(([c],u)=>p.set(c,l[u])),p}var cm=new WeakMap,pm=new WeakMap,dm=new WeakMap,fc=new WeakMap,Jc=new WeakMap,fm=new WeakMap,Em=new WeakMap;async function Rm(e,t,n,r=1e4,i,o){let a=new Set,s=new Set,l=new Set,p={...t,getFields:async N=>(a.add(N),t.getFields(N)),getProcessStatuses:async N=>(s.add(N),t.getProcessStatuses(N)),getNumberPrecision:async N=>(l.add(N),t.getNumberPrecision(N))},c=new Map,u=new Map,d=new Map,f=new Set,R=i??await ji(e,p,n),E=N=>R.nodes.find(_=>_.source===N||JSON.stringify(_.source)===JSON.stringify(N)),m=new Map(o??[]),g=new Set(o?.keys()??[]),y=new Map([...o??new Map].map(([N,_])=>[N,_.rows.length])),T=new WeakMap,h=N=>ce(N)??(N.appId>0?`APP${N.appId}`:"source"),I=N=>N.cteName===_e?1:N.cteName!==null?y.get(N.cteName)??null:null,C=N=>{let _=I(N.from),b=h(N.from),D=[];for(let w of N.joins){let x=I(w.table),O=h(w.table);if(w.type==="CROSS"){let F=_!==null&&x!==null?ui(_,x):null;D.push({leftLabel:b,rightLabel:O,leftRows:_,rightRows:x,plan:F,rightRuntimeLabel:w.table.cteName===null?`APP${w.table.appId} fetched rows`:`${O} materialized rows`}),_=F?.outputRows??null,b=`${b} \xD7 ${O}`}else _=null,b=`${b} ${w.type} JOIN ${O}`}if(D.length>0&&Jc.set(N,D),ut(N.where)?_=0:N.where!==null&&(_=null),(Z(N).type!=="NONE"||N.distinct||N.having!==null||qn(N)||N.columns.some(w=>w.type==="WINDOW_COL"))&&(_=null),_!==null){let w=N.offset??0;_=Math.max(0,_-w),N.limit!==null&&(_=Math.min(_,N.limit)),T.set(N,_)}},v=async N=>{let _=[N.from,...N.joins.map(D=>D.table)];if(_.length>1&&N.columns.some(D=>D.type==="WILDCARD"||D.type==="PARENT_WILDCARD"))throw new Error("ArgumentError: EXPLAIN could not determine the relation output schema for a multi-source wildcard SELECT.");let b=[];for(let D of _){if(D.cteName!==null){if(D.cteName===_e)continue;let w=m.get(D.cteName);if(!w)throw new Error(`ArgumentError: EXPLAIN could not determine the relation output schema for ${D.cteName}.`);b.push(...w.columns);continue}let A=await ee(D.appId,p,n);D.subtableCode?(b.push(...A.filter(w=>w.inSubtable&&(w.subtableCode===D.subtableCode||w.subtableCode===void 0)).map(w=>w.code)),b.push("_pid","_rid","_idx"),b.push(...A.filter(w=>!w.inSubtable).map(w=>`_p.${w.code}`))):(b.push(...A.filter(w=>!w.inSubtable).map(w=>w.code)),b.push(...ho))}return[...new Set(b)]},P=async N=>{if(N===null||typeof N!="object")throw new Error("ArgumentError: EXPLAIN could not determine the relation output schema.");let _=N;if(_.type==="SELECT"){let b=N,D=await v(b);if(b.columns.length===1&&b.columns[0].type==="WILDCARD")return D;let A=[];for(let w of b.columns)w.type==="WILDCARD"?A.push(...D):w.type==="PARENT_WILDCARD"?A.push(...D.filter(x=>x.startsWith("_p."))):A.push(...Sn([],[w]).columns);return A}if(_.type==="UNION")return P(_.left);if(_.type==="SHOW_APPS")return[...zc];if(_.type==="DESCRIBE")return[...qc];if(_.type==="GENERATE_SERIES")return[N.columnAlias];throw new Error("ArgumentError: EXPLAIN could not determine the relation output schema.")},U=async N=>{if(N===null||typeof N!="object")return;if(Array.isArray(N)){for(let b of N)await U(b);return}let _=N;if(_.type==="WITH"){let b=N;for(let D of b.ctes){if(await U(D.query),D.query.type==="GENERATE_SERIES"){if(D.query.args.some(x=>x.type==="VARIABLE")){m.set(D.name,{rows:[],columns:[D.query.columnAlias]});continue}let w=jR(D.query);m.set(D.name,{rows:w.rows,columns:w.columns,columnMeta:ue.get(w),uniqueGeneratedColumn:D.query.columnAlias}),g.add(D.name),y.set(D.name,w.rows.length);continue}let A=await P(D.query);if(m.set(D.name,{rows:[],columns:A}),D.query.type==="SELECT"){let w=T.get(D.query);w!==void 0&&y.set(D.name,w)}}await U(b.query);return}if(_.type==="UNION"){await U(_.left),await U(_.right);return}if(_.type==="SELECT"){let b=N;C(b);for(let w of b.columns)w.type==="SCALAR_SUBQUERY_COL"&&await U(w.query);if(await U(b.where),await U(b.having),await Fi(b,p,n,m),![b.from,...b.joins.map(w=>w.table)].some(w=>w.cteName!==null&&!m.has(w.cteName))){let w=await Rr(b,p,n,m);w&&d.set(b,w)}return}for(let b of Object.values(_))await U(b)};await U(e);let M=async N=>{if(N===null||typeof N!="object"||f.has(N))return;if(f.add(N),Array.isArray(N)){await Promise.all(N.map(M));return}let _=N;if(_.type==="SELECT"){let b=N;await Fi(b,p,n);let D=[b.from,...b.joins.map(L=>L.table)].some(L=>L.cteName!==null);if(Z(b).type==="PLAIN"&&!D){let L=await Rr(b,p,n);L&&d.set(b,L)}let A=[b.from,...b.joins.map(L=>L.table)].filter(L=>L.cteName===null).map(L=>L.appId);(ht(b.where)||b.orderBy.length>0||b.columns.some(L=>L.type==="WINDOW_COL"&&L.orderBy.length>0))&&A.forEach(L=>a.add(L));let{resolver:x,rewrites:O}=await Cn(b,p,n);O.length>0&&fc.set(b,O);let F=he(b.where,x),V=E(b);if(F.capability==="UNSUPPORTED"&&!V)throw new Error(`ArgumentError: WHERE predicate is unsupported (${Pn(F)}).`);c.set(b,F);let K=await ds(b,p,n),G=Lc.get(b)??ps(b,K);G&&cm.set(b,G);let Y=G??fn(b,K);pm.set(b,Y);let $=new Map;for(let L of b.joins){let H=L.table.alias;if(L.type!=="INNER"||!H||L.table.subtableCode)continue;let ne=L.on.left.tableAlias,Oe=L.on.right.tableAlias;if(!ne||!Oe)continue;let Kt=ne===H&&Oe!==H?Oe:Oe===H&&ne!==H?ne:void 0,re=ne===H?L.on.right.field:L.on.left.field,$t=ne===H?L.on.left.field:L.on.right.field;if(!Kt)continue;let Bt=[b.from,...b.joins.map(Le=>Le.table)].find(Le=>ce(Le)===Kt),Ps;if(L.table.cteName!==null)Ps=m.get(L.table.cteName)?.columnMeta?.get($t);else{let Le=(await ee(L.table.appId,p,n)).find(et=>et.code===Ee(L.table,$t));Ps=Le?Me(Le,L.table.appId):Je($t)}let Os,Ls,lp,up;if(Bt?.cteName!==null&&Bt?.cteName!==void 0){let Le=m.get(Bt.cteName);Os=Le?.columnMeta?.get(re),g.has(Bt.cteName)&&Le&&(lp=Le.rows.length,Ls=Le.rows.map(et=>xc(et[re])),up=Ls.some(et=>et.length===0))}else if(Bt){let Le=(await ee(Bt.appId,p,n)).find(et=>et.code===Ee(Bt,re));Os=Le?Me(Le,Bt.appId):Je(re)}let so=nu({fieldType:Ps?.fieldType,sourceSemantics:Os?.semantics,sourceRowCount:lp,values:Ls,hasEmptyValue:up,maxInKeys:es});if(so.kind==="FALLBACK"&&so.reason==="JOIN_KEY_VALUES_RUNTIME"&&(G?.joinPlan.items.some(et=>et.targetAlias===H)||G?.joinPlan.serverFunctionConsumptions.some(et=>et.targetAlias===H)))continue;let ig=tu(so,$t,Ki),cp=Y.joinConditions.get(H),og=cp?j(cp):void 0,ag=Y.joinRelations.get(H);$.set(H,{plan:so,queries:ig,additionalQuery:og,additionalRelation:ag})}if($.size>0&&dm.set(b,$),b.orderBy.length>0||b.columns.some(L=>L.type==="WINDOW_COL"&&L.orderBy.length>0)){let L=await $i(b,p,n);if(b.orderMode!=="KINTONE_NATIVE")for(let H of L.semantics.values())H.fieldType==="STATUS"&&H.source&&s.add(H.source.appId);if(os(b)&&!D&&V?.allowed!==!1){let H=F.capability==="EXACT_PUSHDOWN"?We(b):"FULL_SCAN";u.set(b,(b.orderMode==="KINTONE_NATIVE"?fi:di)({stmt:b,staticMode:H,whereCapability:F.capability,whereReasons:F.reasons,orderSemantics:L.semantics,maxRecords:r,hasKlike:we(b.where)}))}}}else if(_.type==="VALIDATE"){let b=N;a.add(b.appId);let D=await ee(b.appId,p,n),A=new Map(D.filter(L=>!L.inSubtable).map(L=>[L.code,L])),w=new Set(D.filter(L=>L.inSubtable).map(L=>L.code)),x=Yl(b,D),O=rr(b.checkGroups??[]),F=wc(b.where);for(let L of O){if(L.field!=="$id"&&!A.has(L.field)&&!w.has(L.field))throw Ne(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${L.field} \u306F APP${b.appId} \u306B\u5B58\u5728\u3057\u307E\u305B\u3093`);if(L.field!=="$id"&&!A.has(L.field)&&w.has(L.field))throw new Error(`ArgumentError: VALIDATE \u306E CHECK \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${L.field} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}for(let L of F){if(L!=="$id"&&!A.has(L)&&!w.has(L))throw new Error(`ArgumentError: WHERE field ${L} does not exist in APP${b.appId}.`);if(L!=="$id"&&!A.has(L)&&w.has(L))throw new Error(`ArgumentError: VALIDATE \u306E WHERE \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${L} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let V=new Map([...A].map(([L,H])=>[L,H.fieldType]));V.set("$id","RECORD_NUMBER"),Un(b,V);let K=he(b.where,L=>L.field==="$id"?te({fieldType:"__ID__"}):A.get(L.field)?.semantics??(A.has(L.field)?te(A.get(L.field)):void 0));if(K.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${Pn(K)}).`);let k=new Map([...A].map(([L,H])=>[L,H.fieldType])),G=new Map([...A.values()].flatMap(L=>L.optionOrder?[[L.code,new Set(Object.keys(L.optionOrder))]]:[])),Y=b.where===null?null:K.capability==="EXACT_PUSHDOWN"?b.where:ol(b.where,{allowUnqualifiedFields:!0,fieldTypes:k,fieldOptions:G,allowKlike:!1}),$=x.some(L=>L.field.fieldType==="NUMBER");$&&(l.add(b.appId),await wt(b.appId,p,n)),fm.set(b,{targetFields:x.map(L=>L.subtableCode?`${L.subtableCode}(${L.field.code})`:L.field.code),fetchFields:[...new Set(["$id",...x.map(L=>L.subtableCode??L.field.code),...F,...O.map(L=>L.field)])],subtables:new Map([...new Set(x.flatMap(L=>L.subtableCode?[L.subtableCode]:[]))].map(L=>[L,x.filter(H=>H.subtableCode===L).length])),capability:K,prefilter:Y,numberPrecision:$})}else if(_.type==="UPDATE"||_.type==="DELETE"){if(a.add(N.appId),_.type==="UPDATE"&&N.applyBlocks?.length){let D=N,A=await ee(D.appId,p,n);if(Dt(D,A),ls(D)){let w=A.filter(O=>!O.inSubtable),x=su(D.where,{fieldTypes:new Map(w.map(O=>[O.code,O.fieldType])),fieldOptions:new Map(w.flatMap(O=>O.optionOrder?[[O.code,new Set(Object.keys(O.optionOrder))]]:[]))});Em.set(D,x)}}let b=N;(b.type!=="UPDATE"||!ls(b))&&E(b)?.allowed!==!1&&await Er(b,p,n)}await Promise.all(Object.values(_).map(M))};if(await M(e),typeof e=="object"&&e!==null&&e.type==="WITH"&&zt(e)){let N=qt(e),{resolver:_,rewrites:b}=await Cn(N,p,n);b.length>0&&fc.set(N,b);let D=he(N.where,_),A=E(N);if(D.capability==="UNSUPPORTED"&&!A)throw new Error(`ArgumentError: WHERE predicate is unsupported (${Pn(D)}).`);if(c.set(N,D),os(N)&&A?.allowed!==!1){let w=await $i(N,p,n);u.set(N,(N.orderMode==="KINTONE_NATIVE"?fi:di)({stmt:N,staticMode:D.capability==="EXACT_PUSHDOWN"?We(N):"FULL_SCAN",whereCapability:D.capability,whereReasons:D.reasons,orderSemantics:w.semantics,maxRecords:r,hasKlike:we(N.where)}))}}return{capabilities:c,orderPlans:u,plainGroupByPlans:d,fieldApps:a,processStatusApps:s,numberPrecisionApps:l,relativeDatePlan:R}}function Ec(e){return[...[...e.fieldApps].sort((t,n)=>t-n).map(t=>` metadata API: form definition APP${t}`),...[...e.processStatusApps].sort((t,n)=>t-n).map(t=>` metadata API: process status APP${t}`),...[...e.numberPrecisionApps].sort((t,n)=>t-n).map(t=>` metadata API: number precision APP${t}`)]}function lw(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 uR(e){return e==="<>"?"!=":e}function st(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(st).join(", ")})`;case"FUNC_FIELD":case"ARITH_FIELD":case"CASE_FIELD":case"ARITH_VALUE":case"CASE_VALUE":return st(t.expr);case"GROUPING_FIELD":return`GROUPING(${st(t.ref)})`;case"GROUPING_REF":return st(t.field);case"ARITH":case"SCALAR_ARITH":case"CONCAT_OP":return`(${st(t.left)} ${typeof t.op=="string"?t.op:t.type==="CONCAT_OP"?"||":"<op>"} ${st(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(st).join(", ")})`:"<expr>";case"ARRAY":return Array.isArray(t.elements)?`[${t.elements.map(st).join(", ")}]`:"<expr>";case"CASE":case"CASE_WHEN":return"CASE ... END";default:return"<expr>"}}function bn(e){try{let t=e;switch(t.type){case"BINARY":return`${st(t.left)} ${lw(t.op)} ${st(t.right)}`;case"NULL_CHECK":return`${st(t.field)} IS ${t.not===!0?"NOT ":""}NULL`;case"LOGICAL":return`(${bn(t.left)} ${t.op==="AND"||t.op==="OR"?t.op:"<op>"} ${bn(t.right)})`;case"NOT":return`NOT (${bn(t.expr)})`;case"GROUP":return`(${bn(t.expr)})`;case"BOOLEAN":return t.value===!0?"TRUE":t.value===!1?"FALSE":"<expr>";default:return"<expr>"}}catch{return"<expr>"}}function Rc(e){if(!e.hasServerOnlyWhereFunction)return[];if(!e.allowed&&e.rejection){let n=ie(e.rejection.functionName)?"relative date function":"kintone function",r=e.nodes[e.nodes.length-1],i=r?.capability?.reasons.find(a=>a.functionName===e.rejection.functionName),o=r?uw(r.source,e.rejection.functionName):null;return[` ${n}: ${e.rejection.functionName}`," plan status: rejected",` target alias / field: ${o?.alias??"(unknown)"} / ${i?.field??o?.field??"(unknown)"}`,` reason: ${e.rejection.reasonCodes.join(", ")}`," client evaluation: forbidden"," records/cursor/mutation API during EXPLAIN: none"]}let t=[];for(let n of e.nodes){let r=n.joinServerFunctionPlan;if(n.allowed&&n.allowForm==="JOIN_SERVER_FUNCTION_EXACT"&&r){let a=n.joinServerFunctionVariant==="WHOLE_WHERE_EXACT"?"whole-WHERE":"leaf";t.push(` allow form: JOIN_SERVER_FUNCTION_EXACT (${a})`);for(let s of r.serverFunctionConsumptions)for(let l of s.functionLeaves){let p=Vu(l),c=l.left.type==="FIELD"?l.left.field:"(unknown)";t.push(` ${Bu(p)}: ${p}`,` ${Wu(p)}: kintone server exact JOIN prefilter`,` target alias / APP: ${s.targetAlias} / APP${s.appId}`,` field: ${c}`,` function leaf relation: ${s.relation}`,` consumption: ${s.consumption}`)}t.push(` client residual: ${r.residualWhere===null?"(none)":bn(r.residualWhere)}`),r.adoptedServerFunctionOccurrences.some(ie)&&t.push(" relative date client evaluations: 0"),r.adoptedServerFunctionOccurrences.some(s=>!ie(s))&&t.push(" kintone function client evaluations: 0");continue}let i=n.fullScanExactPlan;if(n.allowed&&n.allowForm==="FULL_SCAN_EXACT"&&i){for(let s of i.prefilterPlan.exactRelativeLeaves){let l=Vu(s),p=s.left.type==="FIELD"?s.left.field:void 0,c=uR(s.op),u=n.capability?.reasons.find(d=>d.functionName===l&&(p===void 0||d.field===p)&&d.operator===c);t.push(` ${Bu(l)}: ${l}`,` ${Wu(l)}: kintone server whole-WHERE exact`,` field: ${u?.field??p??"(unknown)"} (${u?.fieldType??"unknown"})`,` operator: ${u?.operator??c}`)}let a=i.serializedWholeWhere;t.push(" where capability: EXACT_PUSHDOWN",` server predicate: ${a}`," client residual: (none)",` ${cR(i.prefilterPlan.exactRelativeLeaves)}: 0`,` kintone query: ${a}`);continue}let o=n.prefilterPlan;if(n.allowed&&o?.prefilterWhere&&o.residualWhere){for(let s of o.exactRelativeLeaves){let l=Vu(s),p=s.left.type==="FIELD"?s.left.field:void 0,c=uR(s.op),u=n.capability?.reasons.find(d=>d.functionName===l&&(p===void 0||d.field===p)&&d.operator===c);t.push(` ${Bu(l)}: ${l}`,` ${Wu(l)}: kintone server exact prefilter`,` field: ${u?.field??p??"(unknown)"} (${u?.fieldType??"unknown"})`,` operator: ${u?.operator??c}`)}let a=j(o.prefilterWhere);t.push(" where capability: SUPERSET_PREFILTER",` server prefilter: ${a}`,` client residual: ${bn(o.residualWhere)}`,` ${cR(o.exactRelativeLeaves)}: 0`,` kintone query: ${a}`);continue}for(let a of n.functionNames){let s=n.capability?.reasons.find(l=>l.functionName===a);if(!ie(a)){t.push(` kintone function: ${a}`," kintone function evaluation: kintone server",` field: ${s?.field??"(unknown)"} (${s?.fieldType??"unknown"})`,` operator: ${s?.operator??"(unknown)"}`,` where capability: ${n.capability?.capability??"(unknown)"}`," client residual: (none)"," kintone function client evaluations: 0",` kintone query: ${n.restQuery||"(\u306A\u3057)"}`);continue}t.push(` relative date function: ${a}`," evaluation: kintone server",` field: ${s?.field??"(unknown)"} (${s?.fieldType??"unknown"})`,` operator: ${s?.operator??"(unknown)"}`,` where capability: ${n.capability?.capability??"(unknown)"}`," client evaluation: forbidden",` kintone query: ${n.restQuery||"(\u306A\u3057)"}`)}}return t}function uw(e,t){let n="where"in e?e.where:null,r=null,i=o=>{if(r||o===null||typeof o!="object")return;if(Array.isArray(o)){o.forEach(i);return}let a=o;if(a.type==="BINARY"){let s=a.left,l=a.right,p=l?.type==="KINTONE_FUNC"&&l.name===t,c=l?.type==="IN_LIST"&&Array.isArray(l.values)&&l.values.some(u=>u!==null&&typeof u=="object"&&u.type==="KINTONE_FUNC"&&u.name===t);if((p||c)&&s?.type==="FIELD"&&typeof s.field=="string"){r={alias:typeof s.tableAlias=="string"?s.tableAlias:null,field:s.field};return}}Object.values(a).forEach(i)};return i(n),r}function Bu(e){return ie(e)?"relative date function":"kintone function"}function Vu(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 Wu(e){return ie(e)?"relative date evaluation":"kintone function evaluation"}function cR(e){return e.every(t=>t.right.type==="KINTONE_FUNC"&&ie(t.right.name))?"relative date client evaluations":"kintone function client evaluations"}var mm=new WeakMap;function mc(e,t){if(Array.isArray(e))return e.map(r=>mc(r,t));if(e===null||typeof e!="object")return e;let n=e;if(n.type==="GENERATE_SERIES"){let r=new Map,i=new Set,o=n.args.map((s,l)=>{if(s.type!=="STRING"||s.fromVariable!==!0||!s.value.startsWith("@"))return s;let p=s.value.slice(1);r.set(l,p);let c=t.get(p);return c===void 0?{type:"VARIABLE",name:p}:(i.add(l),{type:"STRING",value:c,fromVariable:!0})}),a={...n,args:o};return mm.set(a,{variableNames:r,defaultBoundIndexes:i}),a}return Object.fromEntries(Object.entries(n).map(([r,i])=>[r,mc(i,t)]))}function Ci(e,t){if(e.type==="SHOW_APPS")return{status:"STATIC",columns:[...zc]};if(e.type==="DESCRIBE")return{status:"STATIC",columns:[...qc]};if(e.type==="GENERATE_SERIES")return{status:"STATIC",columns:[e.columnAlias]};if(e.type==="WITH"){let s=new Map(t);for(let l of e.ctes){let p=Ci(l.query,s);s.set(l.name,p)}return Ci(e.query,s)}if(e.type==="UNION"){let s=Ci(e.left,t),l=Ci(e.right,t);return s.status==="STATIC"&&l.status==="STATIC"?{status:"STATIC",columns:s.columns}:{status:"DEFERRED"}}let n=[e.from,...e.joins.map(s=>s.table)],r=n.filter(s=>s.cteName!==null&&s.cteName!==_e);if(r.some(s=>t.get(s.cteName)?.status!=="STATIC"))return{status:"DEFERRED"};if(e.columns.some(s=>s.type==="WILDCARD"||s.type==="PARENT_WILDCARD")&&(n.length!==1||n[0].cteName===null))return{status:"DEFERRED"};let o=r.flatMap(s=>{let l=t.get(s.cteName);return l?.status==="STATIC"?[...l.columns]:[]}),a=[];for(let s of e.columns)s.type==="WILDCARD"?a.push(...o):s.type==="PARENT_WILDCARD"?a.push(...o.filter(l=>l.startsWith("_p."))):a.push(...Sn([],[s]).columns);return{status:"STATIC",columns:a}}function cw(e){return new Map([...e].flatMap(([t,n])=>n.status==="STATIC"?[[t,n.relation]]:[]))}async function pw(e,t,n,r){let i=new Map,o=async a=>{if(a===null||typeof a!="object")return;if(Array.isArray(a)){for(let l of a)await o(l);return}let s=a;if(s.type==="SELECT"){let l=a,p=[l.from,...l.joins.map(c=>c.table)];if(p.some(c=>c.cteName!==null)&&p.every(c=>c.cteName===_e||c.cteName!==null&&r.has(c.cteName))){let c=await Rr(l,t,n,r);c&&i.set(l,c)}}for(let l of Object.values(s))await o(l)};return await o(e),i}var gm=Symbol("ksql.explainFetchPlan");function Xc(e){return e[gm]}function ym(e,t){e[gm]=t}async function hm(e,t,n,r="batch-explain",i=1e4,o=2,a=!1,s=100,l=Ce,p=!0,c,u,d){let f=yt({recursiveCteMaxDepth:c,recursiveCteMaxRows:u,recursiveCteMaxExpansions:d}),R=yc(r);try{let E=Tu(e),m=E.diagnostics.find(N=>N.severity==="error");if(E.hasDirectives&&m)throw new Error(`${m.code}: ${m.message} (${m.line}:${m.column})`);let g=bc(E.hasDirectives?e.slice(E.headerEnd):e,a,E.hasDirectives&&E.meta.dialect===1),y=ml(g),T=Ql(g,n),h=IR(g,T),I=new Map,C=new Map,v=new Map,P=[],U=[];for(let N=0;N<g.length;N++){let _=g[N],b=_.type==="SET_VARIABLE"?_.expr.type==="SCALAR_SUBQUERY"?{..._,expr:is(_.expr,I)}:_:is(_,I),D=mc(b,C);nt(D);let A=await ji(D,t,R),w=cw(v),x=p?await Rm(D,t,R,i,A,w):{capabilities:new Map,orderPlans:new Map,plainGroupByPlans:new Map,fieldApps:new Set,processStatusApps:new Set,numberPrecisionApps:new Set,relativeDatePlan:A};if(!p){let k=await pw(D,t,R,w);for(let[G,Y]of k)x.plainGroupByPlans.set(G,Y)}let O;if(D.type==="CREATE_TEMP_TABLE"){let k=new Map([...v].map(([Y,$])=>[Y,$.status==="STATIC"?{status:"STATIC",columns:$.columns}:{status:"DEFERRED"}])),G=Ci(D.query,k);O=G.status==="STATIC"?{status:"STATIC",columns:G.columns,relation:{rows:[],columns:[...G.columns]},producerStatement:N+1}:{status:"DEFERRED",producerStatement:N+1,reason:"EXPLAIN_TEMP_SCHEMA_UNAVAILABLE"},v.set(D.name,O)}let F={sources:[]},V=A.hasServerOnlyWhereFunction&&!A.allowed?Rc(A):[...Rc(A),...Sm(dw(D,y.statements[N],x.capabilities,x.orderPlans,x.plainGroupByPlans,s,l,F,v,O,{maxRecords:i,recursiveLimits:f}),o)],K=Ec(x);P.push({index:N,type:y.statements[N].statementType,plan:V.length===0?K:[V[0],...K,...V.slice(1)]}),U.push({index:N,fetch:Qc(F.sources),sources:F.sources}),D.type==="DROP_TEMP_TABLE"&&v.delete(D.name),(_.type==="SET_VARIABLE"||_.type==="DECLARE_VARIABLE")&&(I.set(_.name,_.type==="DECLARE_VARIABLE"&&_.annotation==="RELATIVE_DATE"?{type:"relative-date",value:h.get(_.name)}:_.type==="SET_VARIABLE"&&_.expr.type==="ARRAY"?{type:"array",elements:_.expr.elements.map(k=>({type:"string",value:k.value}))}:{type:"string",value:`@${_.name}`,placeholder:!0}),_.type==="DECLARE_VARIABLE"&&_.annotation===void 0&&(_.default.type==="STRING"||_.default.type==="NUMBER")&&C.set(_.name,_.default.type==="STRING"?_.default.value:z(_.default)))}let M={statementCount:g.length,statements:P};return ym(M,{statements:U}),M}finally{Fc(R)}}function dw(e,t,n,r,i,o=100,a=Ce,s={sources:[]},l=new Map,p,c=Am()){if(e.type==="CREATE_TEMP_TABLE")return[`CREATE TEMP TABLE ${e.name}`," scope: batch\uFF08\u30D0\u30C3\u30C1\u7D42\u4E86\u6642\u306B\u81EA\u52D5\u7834\u68C4\uFF09",...p?.status==="STATIC"?[` schema: ${p.columns.join(", ")}`,` schema source: SELECT output of statement ${p.producerStatement}`]:p?[" schema: deferred (could not be derived statically)",` plan status: deferred (temp table schema; reason=${p.reason})`]:[],` rows: \u5B9F\u4F53\u5316\u524D\u306E\u305F\u3081\u4E0D\u660E\uFF08\u65E2\u5B9A\u4E0A\u9650 ${Xe} \u884C\u3001tempTableMaxRows \u3067\u5909\u66F4\u53EF\u3001\u8D85\u904E\u306F\u30A8\u30E9\u30FC\uFF09`,...dr(e.query,t,n,r,i,s,"main",l,c).map(u=>` ${u}`)];if(e.type==="DROP_TEMP_TABLE")return[`DROP TEMP TABLE ${e.name}`," \u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30B9\u30C8\u30A2\u306E\u89E3\u653E\u306E\u307F\uFF08kintone \u30A2\u30AF\u30BB\u30B9\u306A\u3057\uFF09"];if(e.type==="SET_VARIABLE"){if(e.expr.type==="SCALAR_SUBQUERY"){let u=Mi(e.expr.query)?t:{...t,tempTablesReferenced:[]};return[`SET @${e.name} = (SELECT ...)`," value: \u30B5\u30D6\u30AF\u30A8\u30EA\u3092\u5B9F\u884C\u6642\u306B1\u56DE\u8A55\u4FA1\uFF081\u884C1\u5217\u30FB\u30D0\u30C3\u30C1\u5185\u5B9A\u6570\u30FB\u7D50\u679C\u30E1\u30BF\u30C7\u30FC\u30BF\u306B\u306F\u975E\u516C\u958B\uFF09"," subquery:",...dr(e.expr.query,u,n,r,i,s,"main",l,c).map(d=>` ${d}`)]}return[`SET @${e.name} = <scalar expression>`," value: \u5B9F\u884C\u6642\u306B1\u56DE\u8A55\u4FA1\uFF08\u30D0\u30C3\u30C1\u5185\u5B9A\u6570\u30FB\u7D50\u679C\u30E1\u30BF\u30C7\u30FC\u30BF\u306B\u306F\u975E\u516C\u958B\uFF09"]}if(e.type==="DECLARE_VARIABLE")return e.annotation==="RELATIVE_DATE"?[`DECLARE @${e.name} RELATIVE_DATE = <relative-date token>`," value: \u5916\u90E8\u6CE8\u5165\u304C\u3042\u308C\u3070\u63A1\u7528\u3001\u306A\u3051\u308C\u3070\u65E2\u5B9A\u30C8\u30FC\u30AF\u30F3\u3092\u4F7F\u7528\uFF08\u5024\u306F\u975E\u516C\u958B\uFF09"]:[`DECLARE @${e.name} = <default scalar expression>`," value: \u5916\u90E8\u6CE8\u5165\u304C\u3042\u308C\u3070\u63A1\u7528\u3001\u306A\u3051\u308C\u3070\u65E2\u5B9A\u5024\u3092\u5B9F\u884C\u6642\u306B1\u56DE\u8A55\u4FA1\uFF08\u5024\u306F\u975E\u516C\u958B\uFF09"];if(e.type==="SHOW_APPS")return["SHOW APPS\uFF08\u30A2\u30D7\u30EA\u4E00\u89A7\u306E\u53D6\u5F97\uFF09"];if(e.type==="DESCRIBE")return[`DESCRIBE APP${e.appId}\uFF08\u30D5\u30A3\u30FC\u30EB\u30C9\u5B9A\u7FA9\u306E\u53D6\u5F97\uFF09`];if(e.type==="EXPLAIN")return dr(e.query,t,n,r,i,s,"main",l,c);if(e.type==="ASSERT"){let u=[`ASSERT${e.warn===!0?" WARN":""} ${e.text}${e.message!==void 0?`, '${e.message.replace(/'/g,"''")}'`:""}`,e.warn===!0?" check: \u5B9F\u884C\u6642\u306B\u6761\u4EF6\u8A55\u4FA1\uFF08\u4E0D\u6210\u7ACB\u306F\u8B66\u544A\u3068\u3057\u3066\u8A18\u9332\u3057\u3001\u5F8C\u7D9A\u6587\u3092\u7D9A\u884C\uFF09":" check: \u5B9F\u884C\u6642\u306B\u6761\u4EF6\u8A55\u4FA1\uFF08\u4E0D\u6210\u7ACB\u306F AssertError \u3067\u30D0\u30C3\u30C1\u505C\u6B62\u3001\u4EE5\u964D\u306E\u6587\u306F skipped\uFF09"],d=[e.left,e.right,e.low,e.high].filter(f=>f!==null&&f.type==="SCALAR_SUBQUERY");return d.forEach((f,R)=>{u.push(d.length>1?` subquery[${R+1}]:`:" subquery:");let E=Mi(f.query)?t:{...t,tempTablesReferenced:[]};u.push(...dr(f.query,E,n,r,i,s,"main",l,c).map(m=>` ${m}`))}),u}if(e.type==="EXIT"){let u=[`EXIT SUCCESS IF ${e.text}, '${e.message.replace(/'/g,"''")}'`," check: \u5B9F\u884C\u6642\u306B\u6761\u4EF6\u8A55\u4FA1\uFF08\u6210\u7ACB\u6642\u306F\u6B63\u5E38\u7D42\u4E86\u3057\u3001\u4EE5\u964D\u306E\u6587\u306F skippedReason: exit\uFF09"],d=[e.left,e.right,e.low,e.high].filter(f=>f!==null&&f.type==="SCALAR_SUBQUERY");return d.forEach((f,R)=>{u.push(d.length>1?` subquery[${R+1}]:`:" subquery:");let E=Mi(f.query)?t:{...t,tempTablesReferenced:[]};u.push(...dr(f.query,E,n,r,i,s,"main",l,c).map(m=>` ${m}`))}),u}return e.type==="UPDATE"&&(e.applyBlocks?.length??0)>0?hs(e,void 0,n,r,o,a,1e4,i):dr(e,t,n,r,i,s,"main",l,c)}function Mi(e){if(Array.isArray(e))return e.some(Mi);if(e!==null&&typeof e=="object"){let t=e,n=t.cteName;return typeof n=="string"&&n.startsWith("#")?!0:Object.values(t).some(Mi)}return!1}function dr(e,t,n,r,i,o={sources:[]},a="main",s=new Map,l=Am()){if(t.tempTablesReferenced.length===0)return hs(e,void 0,n,r,100,Ce,l.maxRecords,i,!0,o,a,l.recursiveLimits);let p=[];e.type==="INSERT_SELECT"?p.push(`INSERT INTO APP${e.appId} ... SELECT\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30BD\u30FC\u30B9\u3002\u5B9F\u884C\u6642\u306B\u4EF6\u6570\u78BA\u5B9A \u2192 dmlMaxRows \u9069\u7528\uFF09`):e.type==="UPSERT_SELECT"&&p.push(`UPSERT INTO APP${e.appId} ... SELECT\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u30BD\u30FC\u30B9\u3002\u7167\u5408\u5F8C\u306B insert + update \u5408\u8A08\u78BA\u5B9A \u2192 dmlMaxRows \u9069\u7528\uFF09`),p.push(" mode: FULL_SCAN\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u53C2\u7167\uFF09"),p.push(` temp: ${t.tempTablesReferenced.join(", ")}\uFF08\u30A4\u30F3\u30E1\u30E2\u30EA\u8D70\u67FB\u3002\u5B9F\u4F53\u5316\u524D\u306E\u305F\u3081\u884C\u6570\u4E0D\u660E\uFF09`);let c=t.tempTablesReferenced.map(f=>[f,s.get(f)]);for(let[f,R]of c)R?.status==="STATIC"?p.push(` source: temp table ${f} (schema from statement ${R.producerStatement})`):(p.push(` source: temp table ${f}`),p.push(" schema: deferred (could not be derived statically)"));p.push(" rows: runtime (not materialized by EXPLAIN)");let u=e.type==="SELECT"?e:e.type==="EXPLAIN"&&e.query.type==="SELECT"?e.query:void 0;u&&p.push(...Tm(u,i?.get(u),c.some(([,f])=>f?.status!=="STATIC"))),p.push(c.every(([,f])=>f?.status==="STATIC")?" plan status: static schema / runtime rows":" plan status: deferred (temp table schema)"),p.push(" records API: none");let d=t.appIds.filter(f=>e.type!=="INSERT_SELECT"&&e.type!=="UPSERT_SELECT"||f!==e.appId);return d.length>0&&p.push(` app: ${d.map(f=>`APP${f}`).join(", ")}`),p.push(" note: \u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3078\u306E WHERE \u30D7\u30C3\u30B7\u30E5\u30C0\u30A6\u30F3\u306F\u884C\u308F\u308C\u306A\u3044"),p}var gc=new WeakMap;function Am(){return{maxRecords:1e4,recursiveLimits:yt({})}}async function fw(e,t,n,r,i,o=100,a=Ce,s,l,p,c){let u=yt({recursiveCteMaxDepth:l,recursiveCteMaxRows:p,recursiveCteMaxExpansions:c}),d=s??await ji(e.query,t,n),f=await Rm(e.query,t,n,r,d,gc.get(e)),R={sources:[]},E=Rc(d),m=d.hasServerOnlyWhereFunction&&!d.allowed?[...Ec(f),...E]:[...Ec(f),...E,...Sm(hs(e.query,void 0,f.capabilities,f.orderPlans,o,a,r,f.plainGroupByPlans,!0,R,"main",u),i)],g=rs(m,R.sources),y={type:"SELECT",columns:["plan"],rows:g.map(T=>({plan:T})),rowCount:g.length};return ym(y,{statements:[{index:0,fetch:Qc(R.sources),sources:R.sources}]}),y}function Sm(e,t){let n=[];for(let r of e)if(n.push(r),r.trim()==="cursor page size: 500"){let i=r.match(/^\s*/)?.[0]??"";n.push(`${i}cursor concurrency: ${t} per domain (process-local)`)}return n}function hs(e,t,n,r,i=100,o=Ce,a=1e4,s,l=!0,p,c="main",u=yt({})){let d=p??{sources:[]};if(e.type==="UNION"){let R=yw(e,n,r,s,d);return l?rs(R,d.sources):R}if(e.type==="WITH"){let R=Aw(e,n,r,s,d,a,u);return l?rs(R,d.sources):R}if(e.type==="INSERT")return Iw(e,t,i,o);if(e.type==="INSERT_SELECT")return ww(e,t,n,r,s);if(e.type==="UPSERT")return Pw(e,t,i,o);if(e.type==="UPSERT_SELECT")return Ow(e,t,n,r,s);if(e.type==="UPDATE")return bw(e,t,n,r,i,o,a);if(e.type==="DELETE")return Cw(e,t);if(e.type==="REORDER")return Lw(e,t);if(e.type==="VALIDATE")return mw(e,t);if(e.type==="IMPORT"){if(e.writeMode==="UPDATE_RECORD_NUMBER"){let m=e.targets?.filter(g=>g.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",...m.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 R=e.keyFields?"UPSERT":"INSERT",E=e.targets?.some(m=>m.kind==="SUBTABLE")===!0;return[...t?[t]:[],`IMPORT ${R} 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",...E?[" 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&&E?"requires actual source load at execution; this EXPLAIN is static":"requires load"}`,...E?[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)"]}let f=lt(e,t,n,r,s,!0,!0,d,c);return l?rs(f,d.sources):f}var pR={none:0,count_only:1,exact:2,prefiltered:3,all:4};function Qc(e){return e.reduce((t,n)=>pR[t]>=pR[n.fetch]?t:n.fetch,"none")}function rs(e,t){let n=e.filter(r=>!r.startsWith("fetch summary:"));return t.length===0?n:[`fetch summary: ${Qc(t).toUpperCase()}`,...n]}function Ew(e){let t=/(?:^|\s)limit\s+(\d+)(?:\s|$)/i.exec(e);return t?Number(t[1]):null}function qa(e,t,n,r,i,o,a=!1){let s={app:t,alias:n,role:r,fetch:i.toLowerCase(),pending:a,kintoneQuery:o==="(\u5168\u4EF6\u53D6\u5F97)"||o==="(\u306A\u3057)"||o===""?null:o,limit:Ew(o)};return e.sources.push(s),s}function Rw(e){return[e.fetch.toUpperCase(),...e.limit===null?[]:[`(limit ${e.limit})`],...e.pending?["(\u672A\u78BA\u5B9A)"]:[]].join(" ")}function Ja(e){return` fetch: ${Rw(e)}`}function mw(e,t){let n=fm.get(e),r=[];return t&&r.push(t),r.push(`VALIDATE APP${e.appId}`),r.push(" operation: read-only existing-record constraint audit (writesKintone=false)"),r.push(" fetch API: GET records via offset + $id keyset paging (Cursor API unused)"),r.push(" complete input: required (onLimit=truncate disabled)"),n?(r.push(` WHERE capability: ${n.capability.capability}`),r.push(` kintone query: ${n.prefilter===null?"(\u5168\u4EF6\u53D6\u5F97)":j(n.prefilter)}`),r.push(` audit fields: ${n.targetFields.length===0?"(\u306A\u3057)":n.targetFields.join(", ")}`),r.push(` fetch fields: ${n.fetchFields.join(", ")}`),r.push(` mode: ${e.summary?"SUMMARY":"DETAIL"}`),n.subtables.size>0&&r.push(` subtable audit: ${[...n.subtables].map(([i,o])=>`${i}(${o} fields)`).join(", ")}`),r.push(` output schema: ${(e.summary?Ic:Tc).join(", ")}`),r.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)"),r.push(` number precision: ${n.numberPrecision?"required":"not required"}`),r.push(" local checks: original WHERE re-evaluation + built-in constraints + CHECK groups"),r.push(" records/mutation API during EXPLAIN: none; violation count unavailable"),r):(r.push(" metadata: form definition required; number precision required for NUMBER targets"),r)}function gw(e){let t=e.field.tableAlias?`${e.field.tableAlias}.${e.field.field}`:e.field.field,n=e.value.replace(/'/g,"''"),r=e.value.replace(/\\/g,"\\\\").replace(/"/g,'\\"'),i=e.normalizedOperator==="IN"?"in":"not in";return` pushdown normalized: ${t} ${e.originalOperator} '${n}' -> ${t} ${i} ("${r}")`}function Tm(e,t,n){let r=Z(e);if(r.type!=="PLAIN")return[];let i=[];if(t)t.items.forEach((o,a)=>{let s=r.allItems[a];s?.type==="FIELD_NAME"&&(o.kind==="PHYSICAL"?i.push(` group key ${s.name}: PHYSICAL (source=${o.sourceIndex}, field=${o.fieldCode})`):o.kind==="ALIAS_SAFE"?i.push(` group key ${s.name}: ALIAS_SAFE (column=${o.columnIndex})`):o.kind==="EXPRESSION"&&i.push(` group key ${s.name}: EXPRESSION`))});else if(n)for(let o of r.allItems)o.type==="FIELD_NAME"&&i.push(` group key ${o.name}: DEFERRED (temp table schema unavailable)`);return i}function lt(e,t,n,r,i,o=!0,a=!0,s={sources:[]},l="main"){let p=n?.get(e)??(n?[...n].find(([h])=>JSON.stringify(h)===JSON.stringify(e))?.[1]:void 0),c=r?.get(e)??(r?[...r].find(([h])=>JSON.stringify(h)===JSON.stringify(e))?.[1]:void 0),u=i?.get(e)??(i?[...i].find(([h])=>JSON.stringify(h)===JSON.stringify(e))?.[1]:void 0),d=o&&p!==void 0&&$R(e,p),f=d?"COUNT_TOTAL_COUNT":c?.kind==="CANONICAL_LOCAL"||p&&p.capability!=="EXACT_PUSHDOWN"?"FULL_SCAN":We(e),R=Sw(e);p&&p.capability!=="EXACT_PUSHDOWN"&&R.push(...p.reasons.map(h=>h.code));let E=[],m=$f(e,xi.get(e)?.allItems.length);t&&E.push(t),E.push(` mode: ${f}`);for(let h of Jc.get(e)??[]){if(E.push(` cross join: ${h.leftLabel} \xD7 ${h.rightLabel}`),E.push(` left rows: ${h.leftRows??"runtime (left intermediate rows)"}`),E.push(` right rows: ${h.rightRows??`runtime (${h.rightRuntimeLabel})`}`),h.plan)E.push(` rows: ${h.plan.outputRows}`),E.push(` row guard: ${h.plan.outputRows} / ${h.plan.limit}`),E.push(" guard timing: before row materialization");else{let I=h.leftRows===null?"left rows":String(h.leftRows),C=h.rightRows===null?"right rows":String(h.rightRows);E.push(` rows: runtime (${I} \xD7 ${C})`),E.push(` row guard: runtime checked / ${ru}`),E.push(" guard timing: after complete source fetch, before row materialization")}E.push(" records API: none")}for(let h of fc.get(e)??CR.get(e)??[])E.push(gw(h));m&&(E.push(` grouping source: ${m.source}`),E.push(` grouping sets: ${m.expandedSetCount} (limit: ${m.setLimit})`),E.push(` grouping items: ${m.groupingItemCount} (limit: ${m.itemLimit})`),E.push(` grouping output rows: runtime checked (limit: ${m.outputRowLimit}, before HAVING/DISTINCT/LIMIT)`)),E.push(...Tm(e,u,[e.from,...e.joins.map(h=>h.table)].some(h=>h.cteName!==null)));for(let h of e.columns){if(h.type!=="WINDOW_COL"||h.windowKind===void 0||h.windowKind==="RANKING")continue;let I=[];h.partitionBy.length>0&&I.push(`PARTITION BY ${h.partitionBy.map(C=>C.tableAlias?`${C.tableAlias}.${C.field}`:C.field).join(", ")}`),h.orderBy.length>0&&I.push(`ORDER BY ${h.orderBy.map(Im).join(", ")}`),h.windowKind==="VALUE"?E.push(` window ${h.alias}: ${h.valueFunc}(offset=${h.offset}) OVER (${I.join(" ")})`):h.windowKind==="AGGREGATE"&&(E.push(` window ${h.alias}: ${h.aggFunc} OVER (${I.join(" ")})`),E.push(h.frame===null?" frame: PARTITION ENTIRE":` frame: ${h.frame.unit} UNBOUNDED PRECEDING AND CURRENT ROW${h.frame.source==="DEFAULT"?" (\u65E2\u5B9A)":""}`))}if(d){let h=e.where===null?"":j(e.where);if(E.push(` app: APP${e.from.appId} (${e.from.appId})`),E.push(` kintone query: ${h}${h?" ":""}limit 1`),a){let I=qa(s,e.from.appId,e.from.alias,l,"COUNT_ONLY",`${h}${h?" ":""}limit 1`);E.push(Ja(I))}return E.push(" fields: $id"),E.push(" fetch API: GET records.json (totalCount=true)"),E.push(" REST execution: single GET"),E.push(" record limit: maxRecords/onLimitReached not applied"),E.push(" fallback: full record scan when totalCount is missing or invalid"),E.push(" search abort: fail-closed (SearchAbortedError)"),E}c?(E.push(` order plan: ${c.kind}`),c.reasonCodes.length>0&&E.push(` order reason: ${c.reasonCodes.join(", ")}`),c.kind==="KORDER_NATIVE"?(E.push(" order semantics: kintone native (not kSQL canonical)"),E.push(" REST execution: single GET")):c.kind==="KORDER_CURSOR"&&(E.push(" order semantics: kintone native (not kSQL canonical)"),E.push(" fetch API: POST/GET/DELETE records/cursor.json"),E.push(" cursor page size: 500"),E.push(` scan rows: ${c.scanRows}`))):m&&E.push(" order plan: CANONICAL_LOCAL");let g=c&&!c.requiresCompleteInput?{...e,orderBy:[]}:e,y=Vt(g);c?.requiresCompleteInput&&y.add("LOCAL_ORDER");let T=ut(e.where);if(y.size>0&&(!T||m!==null)&&(E.push(" complete input: required (onLimit=truncate disabled)"),E.push(` complete input reason: ${[...y].join(", ")}`),E.push(" onLimit=truncate: disabled")),T)return E.push(" predicate: constant false"),E.push(" records API access: none"),E.push(` app: APP${e.from.appId} (${e.from.appId})`),E;if(f==="FULL_SCAN"&&R.length>0&&E.push(` reason: ${R.join(", ")}`),f==="SIMPLE"){let h=Co(c?.kind==="CANONICAL_REST_TOP_N"?xR(e):e);E.push(` app: APP${e.from.appId} (${e.from.appId})`);let I=c?.kind==="KORDER_CURSOR"?lu(e):h.query;if(E.push(` kintone query: ${I||"(\u306A\u3057)"}`),a&&e.from.cteName===null){let C=I?"EXACT":"ALL";E.push(Ja(qa(s,e.from.appId,e.from.alias,l,C,I)))}E.push(` fields: ${h.fields.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":h.fields.join(", ")}`)}else{let h=cm.get(e),I=pm.get(e),C=I??fn(e);if(e.joins.length>0)if(h){if(E.push(" join pushdown plan: applied (runtime metadata resolved)"),E.push(" runtime plan timing: variables/subqueries resolved -> metadata resolved -> immutable plan"),E.push(" EXPLAIN unresolved subqueries: not applied (records API is not called)"),h.joinPlan.serverFunctionCandidate&&E.push(` allow form: JOIN_SERVER_FUNCTION_EXACT (${h.joinPlan.serverFunctionCandidate.variant==="WHOLE_WHERE_EXACT"?"whole-WHERE":"leaf"})`),E.push(` client residual: ${h.joinPlan.residualWhere===null?"(none)":bn(h.joinPlan.residualWhere)}`),E.push(` KLIKE applied nodes: ${h.joinPlan.appliedKlikes.size}`),E.push(` KLIKE unapplied nodes: ${h.joinPlan.allKlikes.length-h.joinPlan.appliedKlikes.size}`),h.joinPlan.residualWhere!==null)for(let w of h.joinPlan.rejections)E.push(` join pushdown not applied: ${w.reason}`)}else{let w=e.joins.some(x=>x.type!=="INNER"&&x.type!=="CROSS")?"OUTER_JOIN":[e.from,...e.joins.map(x=>x.table)].some(x=>x.cteName!==null||!!x.subtableCode)?"SOURCE_KIND":"PLAN_NOT_APPLICABLE";E.push(" join pushdown plan: not applied (join key/WHERE prefilters are reported per source below)"),E.push(` join pushdown not applied: ${w}`)}let v=dn(e,e.from,u),P=e.from.alias?` AS ${e.from.alias}`:"",U=C.mainCondition,M=MR(e),N=e.joins.length===0&&p?.capability==="EXACT_PUSHDOWN"&&e.where!==null&&!Ct(e.where)?j(e.where):"",_=e.from.alias?h?.queriesByAlias.get(e.from.alias):void 0,b=_||(U!==null?j(U):N||"(\u5168\u4EF6\u53D6\u5F97)");E.push(` app: APP${e.from.appId}${P} (${e.from.appId})`),E.push(` kintone query: ${b}`);let D=h?.joinPlan.items.find(w=>w.targetAlias===e.from.alias),A=h?.joinPlan.serverFunctionConsumptions.find(w=>w.targetAlias===e.from.alias);if(a&&e.from.cteName===null){let w=!I&&M!==null,x=b==="(\u5168\u4EF6\u53D6\u5F97)"?"ALL":w?"PREFILTERED":D?.relation==="exact"||A||N!==""?"EXACT":"PREFILTERED";E.push(Ja(qa(s,e.from.appId,e.from.alias,l,x,b,w)))}D||A?(E.push(` pushdown applied: ${_}`),E.push(` relation: ${D?.relation??"exact"}`)):I&&U!==null?(E.push(` pushdown applied: ${b}`),E.push(` relation: ${C.mainRelation??"exact"}`)):M!==null&&(!I||Oi(M))&&E.push(` pushdown candidate: ${j(M)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`),E.push(` fields: ${v.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":v.join(", ")}`);for(let w of e.joins){let x=dn(e,w.table,u),O=w.table.alias?` AS ${w.table.alias}`:"",F=w.type==="INNER"?"JOIN":`${w.type} JOIN`,V=w.table.alias?C.joinConditions.get(w.table.alias)??null:null,K=w.table.alias&&!w.table.subtableCode&&w.table.cteName===null&&e.where?Fr(e.where,{tableAlias:w.table.alias}):null,k=w.table.alias?h?.queriesByAlias.get(w.table.alias):void 0,G=w.table.alias?dm.get(e)?.get(w.table.alias):void 0,Y=!I&&w.type==="INNER"&&w.table.cteName===null&&!w.table.subtableCode&&[e.from,...e.joins.map(re=>re.table)].some(re=>re.cteName!==null),$=k||(V!==null?j(V):G?.additionalQuery?G.additionalQuery:"(\u5168\u4EF6\u53D6\u5F97)"),L=Y||G?.plan.kind==="RANGE_CANDIDATE"||G?.plan.kind==="FALLBACK"&&G.plan.reason==="JOIN_KEY_VALUES_RUNTIME",H=G&&G.queries.length>0?G.queries.map(re=>$!=="(\u5168\u4EF6\u53D6\u5F97)"?`(${re}) and (${$})`:re):[L?"(runtime source keys)":$],ne=H.join(" | ");E.push(` ${F}: APP${w.table.appId}${O} (${w.table.appId})`);for(let re of H)E.push(` kintone query: ${re}`);let Oe=h?.joinPlan.items.find(re=>re.targetAlias===w.table.alias),Kt=h?.joinPlan.serverFunctionConsumptions.find(re=>re.targetAlias===w.table.alias);if(a&&w.table.cteName===null){let re=L||!G&&!I&&K!==null,$t=ne==="(\u5168\u4EF6\u53D6\u5F97)"?"ALL":re?"PREFILTERED":G?.plan.kind==="IN"&&Oe?.relation!=="superset"&&G.additionalRelation!=="superset"||Oe?.relation==="exact"||Kt?"EXACT":"PREFILTERED";E.push(Ja(qa(s,w.table.appId,w.table.alias,"join",$t,ne,re)))}if(G)if(G.plan.kind==="RANGE"){E.push(" join key prefilter: range");for(let re of H)E.push(` pushdown applied: ${re}`);E.push(" relation: superset")}else if(G.plan.kind==="IN"){let re=Oe?.relation==="superset"||G.additionalRelation==="superset"?"superset":"exact";E.push(" join key prefilter: in");for(let $t of H)E.push(` pushdown applied: ${$t}`);E.push(` relation: ${re}`)}else G.plan.kind==="RANGE_CANDIDATE"?(E.push(" join key prefilter: range candidate"),E.push(" relation: superset"),E.push(` join key prefilter reason: ${G.plan.reason}`)):G.plan.kind==="FALLBACK"&&(E.push(G.plan.reason==="JOIN_KEY_VALUES_RUNTIME"?" join key prefilter: runtime candidate":" join key prefilter: not applied"),E.push(` join key prefilter reason: ${G.plan.reason}`));else Y?(E.push(" join key prefilter: runtime candidate"),E.push(" join key prefilter reason: JOIN_KEY_VALUES_RUNTIME"),K!==null&&E.push(` pushdown candidate: ${j(K)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`)):Oe||Kt?(E.push(` pushdown applied: ${k}`),E.push(` relation: ${Oe?.relation??"exact"}`)):I&&V!==null?(E.push(` pushdown applied: ${$}`),E.push(` relation: ${C.joinRelations.get(w.table.alias)??"exact"}`)):K!==null&&(!I||Oi(K))&&E.push(` pushdown candidate: ${j(K)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`);E.push(` fields: ${x.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":x.join(", ")}`)}}return E.push(...Tw(e,n,r,i,s)),E}function yw(e,t,n,r,i={sources:[]}){let o=[],a=l=>{if(l.type==="SELECT"){o.push(l);return}a(l.left),o.push(l.right)};a(e);let s=[];return o.forEach((l,p)=>{p>0&&s.push(""),s.push(...lt(l,`[union:${p+1}]`,t,n,r,!0,!0,i,"union"))}),s}function hw(e){let t=new Map,n=a=>ce(a)??(a.appId>0?`APP${a.appId}`:"source"),r=a=>a.cteName===_e?1:a.cteName===null?null:t.get(a.cteName)??null,i=a=>{let s=r(a.from),l=n(a.from),p=[];for(let c of a.joins){let u=r(c.table),d=n(c.table);if(c.type==="CROSS"){let f=s!==null&&u!==null?ui(s,u):null;p.push({leftLabel:l,rightLabel:d,leftRows:s,rightRows:u,plan:f,rightRuntimeLabel:c.table.cteName===null?`APP${c.table.appId} fetched rows`:`${d} materialized rows`}),s=f?.outputRows??null,l=`${l} \xD7 ${d}`}else s=null,l=`${l} ${c.type} JOIN ${d}`}return p.length>0&&Jc.set(a,p),ut(a.where)?s=0:a.where!==null&&(s=null),Z(a).type!=="NONE"||a.distinct||a.having!==null||qn(a)||a.columns.some(c=>c.type==="WINDOW_COL")||s===null?null:(s=Math.max(0,s-(a.offset??0)),a.limit===null?s:Math.min(s,a.limit))},o=a=>{if(a.type==="SELECT"){i(a);return}o(a.left),i(a.right)};for(let a of e.ctes)if(a.query.type==="GENERATE_SERIES")a.query.args.some(s=>s.type==="VARIABLE")||t.set(a.name,zo(a.query).rowCount);else if(a.query.type==="SELECT"){let s=i(a.query);s!==null&&t.set(a.name,s)}else a.query.type==="UNION"&&o(a.query);o(e.query)}function Aw(e,t,n,r,i={sources:[]},o=1e4,a=yt({})){hw(e);let s=[];for(let l of e.ctes)if(l.recursiveSpec){let p=l.recursiveSpec.cycle;s.push(`recursive cte: ${l.name}`," strategy: B (materialize each source once, iterate in memory)"," union: UNION ALL"," self reference: once",p?` cycle: path-scoped on ${p.column}, mark ${p.markColumn} ('${p.markValue}'/'${p.defaultValue}'), cycle row emitted, expansion stopped`:" cycle: none (absolute limits still enforced)",` limits: depth=${a.depth}, rows=${a.rows}, expansions=${a.expansions} (always fail-closed)`," complete input: required (onLimit=truncate disabled)"," empty-key recursive join: runtime checked");for(let c of YR(l.recursiveSpec.seed,l.recursiveSpec.recursiveTerm)){let u=`APP${c.appId}${c.subtableCode?`$${c.subtableCode}`:""}`;s.push(` source ${u}: R unknown, pageSize=500, estimated calls=ceil(R/500), maxRecords=${o}`)}s.push(" iteration rows: unknown until execution"," records API: none","")}else if(l.query.type==="SELECT")s.push(...lt(l.query,`[cte: ${l.name}]`,t,n,r,!1,!0,i,"cte")),s.push("");else if(l.query.type==="GENERATE_SERIES"){let p=l.query,c=mm.get(p);if(p.args.some(R=>R.type==="VARIABLE")){let R=E=>{let m=p.args[E];return m?m.type==="VARIABLE"?`@${m.name} (runtime)`:E<2?"literal":m.type==="NUMBER"?z(m):m.value:E===2?"runtime":"deferred"};s.push(`[cte: ${l.name}]`," source: GENERATE_SERIES",` column: ${p.columnAlias}`," series type: deferred (variable)",` start: ${R(0)}`,` stop: ${R(1)}`,` step: ${R(2)}`," rows: runtime",` row guard: runtime / ${Pt}`," records API: none","");continue}let d=zo(p),f=d.kind==="DATE"?`${d.step} ${String(d.dateUnit??"DAY").toLowerCase()}${Math.abs(d.step)===1?"":"s"}`:String(d.step);s.push(`[cte: ${l.name}]`," source: GENERATE_SERIES",` column: ${p.columnAlias}`,` series type: ${d.kind}${c?.defaultBoundIndexes.size?" (DECLARE default)":""}`,` start: ${c?.variableNames.has(0)?`@${c.variableNames.get(0)} (DECLARE default; value hidden)`:d.start}`,` stop: ${c?.variableNames.has(1)?`@${c.variableNames.get(1)} (DECLARE default; value hidden)`:d.stop}`,` step: ${f}`,` rows: ${d.rowCount}${c?.defaultBoundIndexes.size?" (DECLARE default estimate)":""}`,` row guard: ${d.rowCount} / ${Pt}`,...c?.defaultBoundIndexes.size?[" binding: DECLARE defaults; runtime injection may change this plan"]:[]," records API: none","")}if((e.query.type==="SELECT"||e.query.type==="UNION")&&s.push(...hs(e.query,"[main]",t,n,100,Ce,o,r,!1,i,"main",a)),zt(e)){s.push("");let l=qt(e);s.push(...lt(l,"[effective: inlined CTE]",t,n,r,!1,!0,i,"cte"))}return s}function Sw(e){let t=[];(e.from.subtableCode||e.joins.some(r=>r.table.subtableCode))&&t.push("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u4EEE\u60F3\u30C6\u30FC\u30D6\u30EB"),e.joins.some(r=>r.type==="CROSS")&&t.push("CROSS JOIN \u3042\u308A"),e.joins.some(r=>r.type!=="CROSS")&&t.push("JOIN \u3042\u308A");let n=Z(e);return n.type==="PLAIN"?t.push("GROUP BY \u3042\u308A"):n.type==="GROUPING_SETS"&&t.push(n.source==="ROLLUP"?"ROLLUP \u3042\u308A":n.source==="CUBE"?"CUBE \u3042\u308A":"GROUPING SETS \u3042\u308A"),e.distinct&&t.push("DISTINCT \u3042\u308A"),e.columns.some(r=>r.type==="AGGREGATE"||r.type==="ARITH_AGG_COL")&&t.push("\u96C6\u8A08\u95A2\u6570\uFF08COUNT / SUM \u7B49\uFF09\u3042\u308A"),e.columns.some(r=>r.type==="WINDOW_COL")&&t.push("\u30A6\u30A3\u30F3\u30C9\u30A6\u95A2\u6570\u3042\u308A"),e.columns.some(r=>r.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"),Ht(e.where)&&t.push("LIKE \u306F\u5E38\u306B JS \u8A55\u4FA1\u306E\u305F\u3081\u5168\u4EF6\u53D6\u5F97"),e.orderBy.some(r=>r.key.type!=="FIELD_NAME")&&t.push("ORDER BY \u306B\u5F0F"),t}function Tw(e,t,n,r,i={sources:[]}){let o=[],a=1,s=l=>{if(l)switch(l.type){case"BINARY":l.right.type==="SCALAR_SUBQUERY"&&(o.push(""),o.push(...lt(l.right.query,`[subquery:${a++}]`,t,n,r,!1,!0,i,"subquery"))),l.right.type==="SUBQUERY_IN_LIST"&&(o.push(""),o.push(...lt(l.right.query,`[subquery:${a++}]`,t,n,r,!1,!0,i,"subquery")));break;case"EXISTS":o.push(""),o.push(...lt(l.query,`[subquery:${a++}]`,t,n,r,!1,!0,i,"subquery"));break;case"LOGICAL":s(l.left),s(l.right);break;case"NOT":case"GROUP":s(l.expr);break;case"NULL_CHECK":break;case"BOOLEAN":break}};s(e.where);for(let l of e.columns)l.type==="SCALAR_SUBQUERY_COL"&&(o.push(""),o.push(...lt(l.query,`[subquery:${a++}]`,t,n,r,!1,!0,i,"subquery")));return e.having&&s(e.having),o}function Iw(e,t,n=Gt,r=Ce){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,...Zc(ha(e,n,r))]:a}function ww(e,t,n,r,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(...lt(e.select,"[source SELECT]",n,r,i,!1,!1)),o}function bw(e,t,n,r,i=100,o=Ce,a=1e4){if(e.applyBlocks?.length)return Nw(e,t,i,o,a);let s=of(e),l=e.assignments.some(f=>f.value.type==="STRING_FUNC"),p=aa(e),c=e.assignments.some(f=>f.value.type==="SCALAR_SUBQUERY"),u=[];if(t&&u.push(t),u.push(e.from?" [UPDATE FROM]":" [UPDATE]"),u.push(` target: APP${e.appId} (${e.appId})`),e.from){let f=e.from.cteName??`APP${e.from.appId}`;u.push(` source: ${f} AS ${e.from.alias}`),u.push(` join: APP${e.appId}.${e.from.targetJoinField} = ${e.from.alias}.${e.from.joinKeyField}`),u.push(` target filter: ${e.from.targetFilter?Yi(e.from.targetFilter):"(none)"}`)}else u.push(` kintone query: ${Yi(e.where)}`);e.subtableCode||(u.push(" selection: exact native pushdown; JS residual none"),u.push(" search abort: DML fail-closed (SearchAbortedError; mutation 0)")),u.push(ut(e.where)?" api: metadata validation only (records API access: none)":" api: GET /k/v1/records.json \u2192 PUT /k/v1/records.json");let d=[];if(s&&d.push("\u7B97\u8853 SET\uFF08\u73FE\u5728\u5024\u3092\u53D6\u5F97\u3057\u3066\u8A08\u7B97\uFF09"),l&&d.push("\u6587\u5B57\u5217\u95A2\u6570 SET\uFF08\u73FE\u5728\u5024\u3092\u53D6\u5F97\u3057\u3066\u8A55\u4FA1\uFF09"),c&&d.push("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA SET"),!p&&!c&&d.push("\u5358\u7D14 SET"),u.push(` set type: ${d.join(", ")}`),p){let f=_w(e);f.length>0&&u.push(` ref fields: ${f.join(", ")}\uFF08GET \u306B\u542B\u3081\u308B\uFF09`)}u.push(" set fields:");for(let f of e.assignments)u.push(` ${vw(f)}`);for(let f of e.assignments)f.value.type==="SCALAR_SUBQUERY"&&(u.push(""),u.push(...lt(f.value.query,`[subquery: ${f.field}]`,n,r,void 0,!1,!1)));return u}function Nw(e,t,n,r,i){let o=ha(e,n,r),a=o.branches[0],p=e.applyBlocks.flatMap(R=>[...R.operations]).map(R=>{if(R.kind==="APPEND")return"APPEND";if(R.kind==="ADD"||R.kind==="REMOVE_VALUE")return"VALUE_LITERAL";if(R.selector.kind==="ALL_ROWS")return"ALL_ROWS";let E=R.selector.where;return E.type==="BINARY"&&E.op==="="&&E.left.type==="FIELD"&&E.left.tableAlias===null&&E.left.field==="_rid"?"_rid":"SAFE_PREDICATE"}),c=[...new Set(a.targets.flatMap(R=>R.operations.map(E=>E.kind)))],u=c.includes("REMOVE"),d=Em.get(e),f=d?["parent selection: safe prefilter + JS residual evaluation",`kintone prefilter: ${d.prefilter===null?"(none; empty query)":j(d.prefilter)}`,"JS residual: original parent WHERE",`applied KLIKE: ${d.appliedKlikes.size}`,`unapplied KLIKE: ${d.unappliedKlikes.length}${d.unappliedKlikes.length>0?" (unsupported: cannot be fully applied to native query)":""}`,`candidate limit: maxRecords=${i}, onLimit=error, stopAfter=none`,`target guard: dmlMaxRows=${n} 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: ${Yi(e.where)}`,`parent cardinality: ${Nt(e.where)?"single":"multiple"}`,...f,`apply target: ${a.targets.map(R=>`${R.field} (${R.targetKind})`).join(" | ")}`,`operations: ${c.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=${u?"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: ${u?"unknown (records API not called)":"0 (static without REMOVE)"}`,`dmlMaxRows: ${n}`,`dmlMaxSubtableRows: ${r}`,"MCP mutation: disabled in v1",...Zc(o)]}function Cw(e,t){let n=[];return t&&n.push(t),n.push(" [DELETE]"),n.push(` target: APP${e.appId} (${e.appId})`),n.push(` kintone query: ${Yi(e.where)}`),e.subtableCode||(n.push(" selection: exact native pushdown; JS residual none"),n.push(" search abort: DML fail-closed (SearchAbortedError; mutation 0)")),n.push(ut(e.where)?" api: metadata validation only (records API access: none)":" api: GET /k/v1/records.json \u2192 DELETE /k/v1/records.json"),n}function Pw(e,t,n=Gt,r=Ce){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,...Zc(ha(e,n,r))]:a}function Zc(e){let t=[`apply diagnostic: ${e.statementKind}`,`non-transactional: ${e.nonTransactional}`,`partial success: ${e.partialSuccess.possible?"possible":"none"}`];for(let n of e.branches){t.push(`apply branch: ${n.branch}`,` parent rows: ${n.parentRows===null?"unknown (records API not called)":n.parentRows}`,` chunks: ${n.chunk.plannedChunks===null?"unknown":n.chunk.plannedChunks} \xD7 max ${n.chunk.size}`,` revision guard: ${n.guards.revisionRequired?"required":"not required"}`);for(let r of n.targets)t.push(` target: ${r.field} (${r.targetKind})`,` operations: ${r.operations.map(i=>`${i.kind}=${i.count===null?"unknown":i.count}`).join(" | ")}`,` changed count: ${r.changedCount===null?"unknown":r.changedCount}`)}return t.push("records API: 0","mutation API: 0"),t}function Ow(e,t,n,r,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(...lt(e.select,"[source SELECT]",n,r,i,!1,!1)),o}function Lw(e,t){let n=`APP${e.appId}$${e.subtableCode}`,r=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(Im).join(", "),o=[...t?[t]:[]," [REORDER]",` target: APP${e.appId} (${e.appId})`,` table: ${n}`,` scope: ${r}`,` by: ${i}`,ut(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: ${Yi(e.where)}`),o}function Im(e){return`${e.key.type==="FIELD_NAME"?e.key.name:"(\u5F0F)"} ${e.direction}`}function Yi(e){if(e.type==="BOOLEAN")return e.value?"TRUE":"FALSE (constant)";try{return j(e)}catch{return"(JS \u8A55\u4FA1\u304C\u5FC5\u8981\u306A\u305F\u3081 kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u4E0D\u53EF)"}}function _w(e){let t=new Set;for(let{value:n}of e.assignments)n.type==="ARITH"&&us(n,t),n.type==="STRING_FUNC"&&us(n,t),(n.type==="SCALAR_ARITH"||n.type==="CONCAT_OP")&&Ui(n,t);return[...t]}function us(e,t){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached CHECK field collection.`);if(e.type==="FIELD_REF"){t.add(e.field);return}if(e.type==="ARITH"&&(us(e.left,t),us(e.right,t)),e.type==="STRING_FUNC")for(let n of e.args)n.type==="AGG_GROUP_KEY"?t.add(n.tableAlias?`${n.tableAlias}.${n.field}`:n.field):n.type!=="AGG_REF"&&n.type!=="AGG_ARITH"&&n.type!=="VARIABLE"&&Ui(n,t)}async function wm(e,t,n,r,i){let o=Bc(e),a=await ke(e.appId,n,r),s=t.cteName,l=s!==null?new Map((i?.get(s)?.columns??[]).map(d=>[d,i?.get(s)?.columnMeta?.get(d)?.fieldType??(i?.get(s)?.columnMeta?.get(d)?.semantics?.compareMode==="number"?"NUMBER":"SINGLE_LINE_TEXT")])):await ke(t.appId,n,r),p=new Set,c=new Set;for(let d of o){if(d.tableAlias!==null){if(d.tableAlias.toLowerCase()===`app${e.appId}`.toLowerCase()){if(d.field!=="$id"&&!a.has(d.field))throw Ne(`CHECK \u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u30D5\u30A3\u30FC\u30EB\u30C9 ${d.field} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093`);p.add(d.field)}else if(d.tableAlias.toLowerCase()===t.alias.toLowerCase()){if(d.field!=="$id"&&!l.has(d.field))throw Ne(`CHECK \u306E\u30BD\u30FC\u30B9\u30D5\u30A3\u30FC\u30EB\u30C9 ${d.field} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093`);c.add(d.field)}else throw Ne(`CHECK \u306E\u4FEE\u98FE\u5B50 ${d.tableAlias} \u306F\u66F4\u65B0\u5148\u307E\u305F\u306F FROM alias \u3067\u306F\u3042\u308A\u307E\u305B\u3093`);continue}let f=d.field==="$id"||a.has(d.field),R=d.field==="$id"||l.has(d.field);if(!f)throw Ne(`UPDATE FROM \u306E CHECK \u3067\u306F\u30BD\u30FC\u30B9\u5217 ${d.field} \u3092\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044`);if(R)throw Ne(`UPDATE FROM \u306E CHECK \u306E\u975E\u4FEE\u98FE\u30D5\u30A3\u30FC\u30EB\u30C9 ${d.field} \u306F\u66D6\u6627\u3067\u3059`);p.add(d.field)}let u=new Map;for(let[d,f]of a)u.set(d,f),u.set(`APP${e.appId}.${d}`,f);u.set("$id","RECORD_NUMBER"),u.set(`APP${e.appId}.$id`,"RECORD_NUMBER");for(let[d,f]of l)u.set(`${t.alias}.${d}`,f);return{targetFields:[...p],sourceFields:[...c],evaluationTypes:u}}function Dw(e,t,n){if(!e)return{};let r=Mt(e.target,null);return Object.fromEntries([...Object.entries(r),...Object.entries(r).map(([i,o])=>[`APP${t}.${i}`,o]),...Object.entries(e.source).map(([i,o])=>[`${n}.${i}`,o])])}function Ui(e,t){if(e.type==="FIELD"){t.add(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field);return}if(e.type==="STRING_FUNC"){for(let n of e.args)n.type==="AGG_GROUP_KEY"?t.add(n.tableAlias?`${n.tableAlias}.${n.field}`:n.field):n.type!=="AGG_REF"&&n.type!=="AGG_ARITH"&&n.type!=="VARIABLE"&&Ui(n,t);return}(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP")&&(Ui(e.left,t),Ui(e.right,t))}function vw(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} = ${bm(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 bm(e){return`${dR(e.left)} ${e.op} ${dR(e.right)}`}function dR(e){if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${e.name} reached arithmetic formatting.`);return e.type==="FIELD_REF"?e.field:e.type==="NUMBER"?z(e):e.type==="ARITH"?`(${bm(e)})`:"..."}var ye=class extends Error{constructor(n,r){super(`${n} \u3092\u30AD\u30E3\u30F3\u30BB\u30EB\u3057\u307E\u3057\u305F\uFF08\u5BFE\u8C61: ${r} \u4EF6\uFF09`);this.operation=n;this.affectedCount=r;this.name="OperationCancelledError"}};var Pe=class extends Error{constructor(t,n,r){super(n),this.name="KsqlEngineError",this.code=t,r!==void 0&&(this.cause=r),Object.setPrototypeOf(this,new.target.prototype)}};function ep(e,t,n){return Object.defineProperties(e,{statementIndex:{value:t,enumerable:!0,configurable:!1,writable:!1},statementType:{value:n,enumerable:!0,configurable:!1,writable:!1}}),e}function Ze(e){return new Pe("READ_ONLY_VIOLATION",e)}function Ar(e,t){return new Pe("PARSE_ERROR",e,t)}function Nm(){let e=new Ln;return new Pe("SEARCH_ABORTED",e.message,e)}function to(e){return e instanceof Error&&e.message.trim()!==""||e!==null&&typeof e=="object"&&typeof e.message=="string"?e.message:String(e)}function Mw(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 xn(e){return e instanceof Pe?e:e instanceof ve||e instanceof S?new Pe("PARSE_ERROR",to(e),e):e instanceof Ln||e?.name==="SearchAbortedError"?new Pe("SEARCH_ABORTED",to(e),e):e instanceof Ge||e?.name==="FetchAllLimitError"?new Pe("FETCH_LIMIT_EXCEEDED",to(e),e):e instanceof Error&&e.name==="ClientOperationError"&&"cause"in e?new Pe("CLIENT_ERROR",e.message,e.cause):Mw(e)?new Pe("CLIENT_ERROR",to(e),e):new Pe("EXECUTION_ERROR",to(e),e)}function As(e,t){let n=xn(e);if(e instanceof oe){let r=t[e.statementIndex];if(r!==void 0)return ep(n,e.statementIndex,r.type)}return n}var Uw=2,Ss=5,kw=3e4,xw=10*6e4+3e4,Ts=class{constructor(t,n={}){this.host=t;this.active=0;this.peak=0;this.quarantined=0;this.waiters=[];this.createTail=Promise.resolve();let r=n.maxActive??Uw;if(!Number.isSafeInteger(r)||r<1||r>Ss)throw new Error(`ArgumentError: cursorMaxActive must be an integer from 1 to ${Ss}.`);this.maxActive=r,this.waitTimeoutMs=n.waitTimeoutMs??kw,this.quarantineMs=n.quarantineMs??xw}acquire(){return this.active<this.maxActive?(this.active+=1,this.peak=Math.max(this.peak,this.active),Promise.resolve(this.makeLease())):new Promise((t,n)=>{let r={};r.resolve=t,r.reject=n,r.timer=setTimeout(()=>{let i=this.waiters.indexOf(r);i>=0&&this.waiters.splice(i,1),n(new _a(this.host,this.maxActive,this.waitTimeoutMs))},this.waitTimeoutMs),r.timer.unref?.(),this.waiters.push(r)})}setMaxActive(t){this.validateMaxActive(t),this.maxActive!==t&&(this.maxActive=t,this.dispatchWaiters())}async runCreate(t){let n=this.createTail,r;this.createTail=new Promise(i=>{r=i}),await n;try{return await t()}finally{r()}}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:(n=this.quarantineMs)=>{if(t)return;t=!0,this.quarantined+=1,setTimeout(()=>{this.quarantined-=1,this.returnPermit()},n).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>Ss)throw new Error(`ArgumentError: cursorMaxActive must be an integer from 1 to ${Ss}.`)}};function Fw(e){let t=e;return t?.status===404&&t.code==="GAIA_CN01"}async function Gw(e,t=r=>new Promise(i=>setTimeout(i,r)),n=Fw){try{await e();return}catch(r){if(n(r))return}await t(250);try{await e()}catch(r){if(n(r))return;throw r}}async function Kw(e,t){let n,r=new Promise((i,o)=>{n=setTimeout(()=>o(new Error(`CursorCleanupTimeoutError: cleanup exceeded ${t}ms.`)),t),n.unref?.()});try{return await Promise.race([e,r])}finally{n&&clearTimeout(n)}}function Cm(e,t){let n=!1,r=!1,i=Promise.resolve(),o=null;return{totalCount:e,nextPage:()=>{if(r||n)return Promise.resolve({records:[],next:!1});let l=i.then(async()=>{if(r||n)return{records:[],next:!1};let p=await t.get();return p.next||(n=!0,t.onReleased?.()),p});return i=l.then(()=>{},()=>{}),l},close:()=>n?Promise.resolve():o||(r=!0,o=i.then(async()=>{if(!n)try{await Kw(Gw(t.delete,t.sleep,t.isAlreadyReleasedError),t.cleanupTimeoutMs??5e3),n=!0,t.onReleased?.()}catch(l){throw t.onReleaseUnknown?.(),l}}),o)}}function Pm(e){return Om(e,Bw(e))}function Om(e,t,n=!1,r){let i=[];for(let o of Object.values(e)){let a=Vw(o.options),s=Ww(o.type,o.format),l={code:o.code,label:o.label,fieldType:o.type,optionOrder:a,sortKind:s,required:o.required,minValue:Is(o.minValue),maxValue:Is(o.maxValue),minLength:Is(o.minLength),maxLength:Is(o.maxLength),defaultValue:o.defaultValue,hasLookup:Object.prototype.hasOwnProperty.call(o,"lookup"),isLookupCopyTarget:t.has(o.code),isUnique:o.unique===!0,isCalculated:o.type==="CALC"||typeof o.expression=="string"&&o.expression.length>0,inSubtable:n,...r?{subtableCode:r}:{},writable:!t.has(o.code)&&!$w.has(o.type)};l.semantics=te(l),i.push(l),o.fields&&i.push(...Om(o.fields,t,!0,o.type==="SUBTABLE"?o.code:r))}return i}var $w=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE","SUBTABLE"]);function Bw(e){let t=new Set,n=r=>{for(let i of Object.values(r)){for(let o of i.lookup?.fieldMappings??[])o.field&&t.add(o.field);i.fields&&n(i.fields)}};return n(e),t}function Is(e){return e==null||e===""?void 0:e}function Vw(e){if(!e||typeof e!="object")return;let t={},n=!1;for(let[r,i]of Object.entries(e)){let o=Number(i?.index);Number.isFinite(o)&&(t[r]=o,n=!0)}return n?t:void 0}function Ww(e,t){if(e==="NUMBER"||e==="RECORD_NUMBER")return"number";if(e==="CALC")return t==="NUMBER"||t==="NUMBER_DIGIT"?"number":"string"}function Lm(e){return e===null?null:Object.values(e).map(t=>{let n=Number(t.index);if(!Number.isSafeInteger(n)||n<0)throw new Error(`ArgumentError: invalid process status index: ${String(t.index)}`);return{name:t.name,index:n}})}var Hw="Filter aborted because of too many search results";function _m(e){return e?.includes(Hw)===!0}var Dm="/k/v1/records.json",ws="/k/v1/records/cursor.json",Yw=4096,jw=2,tp=e=>kintone.api.url(e,!0);function zw(e){let t={app:e.app,query:e.query,...e.fields.length>0?{fields:e.fields}:{},...e.totalCount===!0?{totalCount:!0}:{}},r=kintone.api.urlForGet(Dm,t,!0),i={"X-Requested-With":"XMLHttpRequest"};return new TextEncoder().encode(r).byteLength<=Yw?{url:r,init:{method:"GET",credentials:"include",headers:i}}:{url:tp(Dm),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 no(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 n=t,r=[typeof n.code=="string"&&n.code!==""?`${n.message}\uFF08${n.code}\uFF09`:n.message];if(n.errors!==null&&typeof n.errors=="object")for(let[o,a]of Object.entries(n.errors)){let s=Array.isArray(a?.messages)?a.messages.filter(l=>typeof l=="string"):[];s.length>0&&r.push(`${o}: ${s.join(" / ")}`)}let i=new Error(r.join(`
18
+ `));return typeof n.code=="string"&&n.code!==""&&(i.name=n.code),typeof n.code=="string"&&Object.assign(i,{code:n.code}),typeof n.status=="number"&&Object.assign(i,{status:n.status}),Object.assign(i,{cause:e}),i}async function qw(e){try{let t=await e.json();if(t!==null&&typeof t=="object"){let r=t;return no({code:r.code,message:r.message,errors:r.errors,status:e.status})}let n=new Error(`kintone API error: HTTP ${e.status}`);return Object.assign(n,{status:e.status,cause:t}),no(n)}catch(t){let n=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(n,{status:e.status,cause:t}),no(n)}}function Jw(e){let t=e;return t?.code==="GAIA_CN01"&&(t.status===404||t.status===void 0)}async function Fn(e,t,n){try{return await kintone.api(tp(e),t,n)}catch(r){throw no(r)}}function Xw(e){if(!Number.isSafeInteger(e)||e<1||e>5)throw new Error("ArgumentError: cursorMaxActive must be an integer from 1 to 5.")}function vm(e={}){let t=e.cursorMaxActive??jw;Xw(t);let n=null,r=null,i=new Set;return{async getRecords(a){try{let s=zw(a),l=await fetch(s.url,s.init);if(!l.ok)throw await qw(l);let p=await l.json();return _m(l.headers.get("X-Cybozu-Warning"))?{...p,searchAborted:!0}:p}catch(s){throw no(s)}},async openCursor(a){let s=tp(ws),l=new URL(s,globalThis.location?.href).host.toLowerCase();if(r!==null&&r!==l)throw new Error(`CursorRouteError: factory route changed from ${r} to ${l}.`);if(r=l,n??=new Ts(l,{maxActive:t}),n.snapshot().active>=t){let E=new Error(`CursorCapacityError: host=${l} \u306E active cursor \u4E0A\u9650 ${t} \u306B\u9054\u3057\u3066\u3044\u307E\u3059\u3002`);throw E.name="CursorCapacityError",E}let p=await n.acquire(),c;try{c=await n.runCreate(()=>Fn(ws,"POST",{app:a.app,query:a.query,size:a.size,fields:a.fields&&a.fields.length>0?a.fields:void 0}))}catch(E){throw typeof E?.code=="string"?(p.release(),E):(p.quarantine(),new Da(E))}let u=c.id,d=Cm(Number(c.totalCount),{get:()=>Fn(ws,"GET",{id:u}),delete:()=>Fn(ws,"DELETE",{id:u}),isAlreadyReleasedError:Jw,onReleased:()=>p.release(),onReleaseUnknown:()=>p.quarantine()}),f=null,R={totalCount:d.totalCount,async nextPage(){let E=await d.nextPage();return E.next||i.delete(R),E},close(){return f||(f=d.close().finally(()=>{i.delete(R)}),f)}};return i.add(R),R},async getApps(){let s=[],l=0;for(;;){let p=await Fn("/k/v1/apps.json","GET",{limit:100,offset:l});for(let c of p.apps)s.push({appId:Number(c.appId),name:c.name,description:c.description});if(p.apps.length<100)break;l+=100}return s},async getFields(a){let s=await Fn("/k/v1/app/form/fields.json","GET",{app:a});return Pm(s.properties)},async getNumberPrecision(a){let s=await Fn("/k/v1/app/settings.json","GET",{app:a});return wf(s)},async getProcessStatuses(a){let s=await Fn("/k/v1/app/status.json","GET",{app:a,lang:"user"});return{enable:s.enable,states:Lm(s.states)}}}}var Mm=new Set(["postRecords","putRecords","deleteRecords"]),ro=class extends Error{constructor(t){let n=t instanceof Error?t.message:String(t);super(n),this.name="ClientOperationError",this.cause=t,Object.setPrototypeOf(this,new.target.prototype)}};async function sn(e){try{return await e()}catch(t){throw new ro(t)}}function Qw(e){return()=>{throw Ze(`${String(e)} is blocked by the readonly client`)}}function Sr(e){let t=e.getRecords.bind(e),n=e.openCursor.bind(e),r=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 sn(()=>t(l));if(p.searchAborted===!0)throw Nm();return p},openCursor:async l=>{let p=await sn(()=>n(l)),c=p.nextPage.bind(p),u=p.close.bind(p);return{totalCount:p.totalCount,nextPage:()=>sn(()=>c()),close:()=>sn(()=>u())}},getApps:()=>sn(()=>r()),getFields:l=>sn(()=>i(l)),getNumberPrecision:l=>sn(()=>o(l)),getProcessStatuses:l=>sn(()=>a(l))});return new Proxy(s,{get(l,p,c){return Mm.has(p)?Qw(p):Reflect.get(l,p,c)},has(l,p){return Mm.has(p)?!1:Reflect.has(l,p)}})}function Zw(e){let t=new Set,n=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 n||(n=(async()=>{let o=(await Promise.allSettled([...t].map(a=>a.close()))).find(a=>a.status==="rejected");if(o)throw new ro(o.reason)})(),n)}}}async function Tr(e,t){let n=Zw(e),r=!1;try{return await t(n.client)}catch(i){throw r=!0,i}finally{try{await n.close()}catch(i){if(!r)throw i}}}var eb="A-Za-z",tb="\\u3040-\\u30FF\\u3400-\\u9FFF\\uF900-\\uFAFF\\uFF01-\\uFF60",rp=`${eb}${tb}`,km=`${rp}0-9_`,nb=new RegExp(`^[${rp}]$`,"u"),rb=new RegExp(`^[${km}]$`,"u"),ib=new RegExp(`^[${rp}][${km}]{0,63}$`,"u");function ob(e){return nb.test(e)}function ab(e){return rb.test(e)}function ip(e){let t=e.normalize("NFC").toUpperCase();if(!ib.test(t))throw new Error(`ArgumentError: logical app name "${e}" is invalid; expected 1-64 UTF-16 units starting with an ASCII letter or supported Japanese character.`);return t}function np(e){if(!e)return!1;let t=e.codePointAt(0);return t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===95||t===36||t>=12352&&t<=12543||t>=13312&&t<=40959||t>=63744&&t<=64255||t>=65281&&t<=65376}function sb(e){if(!e)return!1;let t=e.codePointAt(0);return t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||e==="_"||e==="-"||e==="."||e==="$"}function lb(e,t){let n=t>0?e[t-1]:"";if(np(n))return null;let r,i,o,a,s,l;if(e.slice(t,t+5).toUpperCase()==="LAPP_"){if(r="logical",l=t+5,a=l,!ob(e[l]??""))return null;for(l++;l<e.length&&ab(e[l]);)l++;s=l;try{o=ip(e.slice(a,s))}catch{return null}}else if(e.slice(t,t+3).toUpperCase()==="APP"){for(r="physical",l=t+3,a=l;l<e.length&&/[0-9]/.test(e[l]);)l++;if(s=l,s===a)return null;i=Number(e.slice(a,s))}else return null;if(e[l]==="$"){l++;let f=l;for(;l<e.length&&np(e[l]);)l++;if(l===f)return null}let p=l,c=null;if(e[l]==="@"){l++;let f=l;for(;l<e.length&&sb(e[l]);)l++;if(l===f)return null;c=e.slice(f,l)}let u=l<e.length?e[l]:"";if(np(u))return null;let d={profile:c,start:t,referenceValueStart:a,referenceValueEnd:s,appEnd:p,fullEnd:l};return r==="physical"?{...d,source:r,appId:i}:{...d,source:r,logicalName:o}}function op(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(r==="'"){for(n++;n<e.length;){if(e[n]==="'"){if(n++,n<e.length&&e[n]==="'"){n++;continue}break}n++}continue}if(r==="`"){for(n++;n<e.length&&e[n]!=="`";)n++;n<e.length&&n++;continue}if(r==="-"&&e[n+1]==="-"){for(n+=2;n<e.length&&e[n]!==`
19
+ `;)n++;continue}if(r==="/"&&e[n+1]==="*"){for(n+=2;n<e.length;){if(e[n]==="*"&&e[n+1]==="/"){n+=2;break}n++}continue}let i=lb(e,n);if(!i){n++;continue}t.push(i),n=i.fullEnd}return t}function Um(e){let t=9e8;for(;e.has(t);)t++;return e.add(t),t}function xm(e,t="dev",n){let r=op(e),i=r.some(m=>m.profile!==null),o=new Map,a=m=>m??t;for(let m of r){if(m.source!=="physical")continue;let g=a(m.profile),y=o.get(m.appId);y||(y=new Set,o.set(m.appId,y)),y.add(g.toLowerCase())}let s=new Set(r.filter(m=>m.source==="physical").map(m=>m.appId)),l=new Map;for(let m of r){if(m.source!=="logical")continue;let g=a(m.profile).toLowerCase(),y=`logical:${m.logicalName}@${g}`;if(l.has(y))continue;if(!n)throw new Error(`ArgumentError: logical app LAPP_${m.logicalName}@${g} requires logicalApps configuration.`);let T=n.resolveLogicalApp(m.logicalName,g);l.set(y,T),s.add(T)}let p=new Map,c=new Map;for(let[m,g]of o.entries()){let y=[...g].sort();if(!(y.length<=1))for(let T of y){let h=Um(s);p.set(`physical:${m}@${T}`,h),c.set(h,{source:"physical",mappedAppId:h,appId:m,profile:T})}}let u=[],d=[],f=0,R=0,E=(m,g,y,T)=>{if(!m&&g===y)return;let h=f;u.push(m),f+=m.length,d.push({normalizedStart:h,normalizedEnd:f,sourceStart:g,sourceEnd:y,...T===void 0?{}:{bindingMappedAppId:T}})};for(let m of r){let g=a(m.profile).toLowerCase(),y;if(m.source==="physical")y={source:"physical",mappedAppId:p.get(`physical:${m.appId}@${g}`)??m.appId,appId:m.appId,profile:g};else{let I=`logical:${m.logicalName}@${g}`,C=p.get(I);C===void 0&&(C=Um(s),p.set(I,C)),y={source:"logical",logicalName:m.logicalName,mappedAppId:C,appId:l.get(I),profile:g}}c.set(y.mappedAppId,y),E(e.slice(R,m.start),R,m.start);let T=e.slice(m.referenceValueEnd,m.appEnd),h=m.source==="physical"?`${e.slice(m.start,m.referenceValueStart)}${y.mappedAppId}${T}`:`APP${y.mappedAppId}${T}`;E(h,m.start,m.fullEnd,y.mappedAppId),R=m.fullEnd}return E(e.slice(R),R,e.length),{normalizedSql:u.join(""),hasProfileSyntax:i,appBindingByMappedApp:c,rewriteSegments:d}}var Fm=new Set(["client","logicalApps","maxRecords","recursiveCteMaxDepth","recursiveCteMaxRows","recursiveCteMaxExpansions","fetchParallel","cursorMaxActive"]),Gm=new Set([...Fm,"onLimitReached"]),ub=new Set([...Gm,"variables","tempTableMaxRows"]);function Km(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new TypeError("options must be an object")}function Ir(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new RangeError(`${t} must be a positive safe integer`)}function $m(e){if(e===null||typeof e!="object")throw new TypeError("client is required");let t=e;for(let n of["getRecords","openCursor","getApps","getFields","getNumberPrecision","getProcessStatuses"])if(typeof t[n]!="function")throw new TypeError(`client.${n} must be a function`)}function cb(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new TypeError("variables must be an object");for(let[t,n]of Object.entries(e))if(typeof n!="string")throw new TypeError(`variables.${t} must be a string`)}function Bm(e){if(e===void 0)return;if(e===null||typeof e!="object"||Array.isArray(e))throw new TypeError("logicalApps must be an object");let t={};for(let[n,r]of Object.entries(e)){let i;try{i=ip(n)}catch{throw new TypeError(`logicalApps key "${n}" is invalid`)}if(Object.prototype.hasOwnProperty.call(t,i))throw new TypeError(`logicalApps key "${n}" duplicates "${i}" after canonical normalization`);Ir(r,`logicalApps.${n}`),t[i]=r}return t}function Vm(e,t,n){for(let r of Reflect.ownKeys(e))if(typeof r!="string"||!t.has(r))throw new TypeError(`Unknown ${n} option: ${String(r)}`);e.maxRecords!==void 0&&Ir(e.maxRecords,"maxRecords");for(let r of["recursiveCteMaxDepth","recursiveCteMaxRows","recursiveCteMaxExpansions"])e[r]!==void 0&&Ir(e[r],r);if(e.fetchParallel!==void 0&&Ir(e.fetchParallel,"fetchParallel"),e.cursorMaxActive!==void 0&&(Ir(e.cursorMaxActive,"cursorMaxActive"),e.cursorMaxActive>5))throw new RangeError("cursorMaxActive must be between 1 and 5");if(e.onLimitReached!==void 0&&e.onLimitReached!=="error"&&e.onLimitReached!=="truncate")throw new TypeError('onLimitReached must be "error" or "truncate"');return{...e.maxRecords!==void 0?{maxRecords:e.maxRecords}:{},...e.recursiveCteMaxDepth!==void 0?{recursiveCteMaxDepth:e.recursiveCteMaxDepth}:{},...e.recursiveCteMaxRows!==void 0?{recursiveCteMaxRows:e.recursiveCteMaxRows}:{},...e.recursiveCteMaxExpansions!==void 0?{recursiveCteMaxExpansions:e.recursiveCteMaxExpansions}:{},...e.fetchParallel!==void 0?{fetchParallel:e.fetchParallel}:{},...e.cursorMaxActive!==void 0?{cursorMaxActive:e.cursorMaxActive}:{},...e.onLimitReached!==void 0?{onLimitReached:e.onLimitReached}:{}}}function ap(e,t){Km(e);let n=t==="run"?Gm:Fm;$m(e.client);let r=Vm(e,n,t==="run"?"runQuery":"explainQuery"),i=Bm(e.logicalApps);return{client:e.client,...i===void 0?{}:{logicalApps:i},executeOptions:r}}function Wm(e){Km(e),$m(e.client),e.variables!==void 0&&cb(e.variables),e.tempTableMaxRows!==void 0&&Ir(e.tempTableMaxRows,"tempTableMaxRows");let t=Vm(e,ub,"runBatch"),n=Bm(e.logicalApps);return{client:e.client,...n===void 0?{}:{logicalApps:n},executeOptions:{...t,...e.variables!==void 0?{variables:e.variables}:{},...e.tempTableMaxRows!==void 0?{tempTableMaxRows:e.tempTableMaxRows}:{}}}}function bs(e,t,n={}){let r=n.logicalAppDisplay??"profile";if(typeof e=="string"){let i=e.match(/^(\s*target:\s*)APP(\d+) \((\d+)\)\s*$/);if(i&&i[2]===i[3]){let s=t.get(Number(i[2]));if(s){let l=s.source==="logical"?r==="physical"?`LAPP_${s.logicalName} -> APP${s.appId}`:`LAPP_${s.logicalName} -> APP${s.appId}@${s.profile}`:r==="physical"?`APP${s.appId}`:`APP${s.appId}@${s.profile}`;return`${i[1]}${l}`}}if(t.size===0)return e;let o=[...t.keys()].sort((s,l)=>String(l).length-String(s).length),a=new RegExp(`APP(${o.join("|")})(?!\\d)(\\s+AS\\s+[^\\s()]+)?(?:\\s+\\(\\1\\))?`,"g");return e.replace(a,(s,l,p)=>{let c=t.get(Number(l));return`${c.source==="logical"?r==="physical"?`LAPP_${c.logicalName} -> APP${c.appId}`:`LAPP_${c.logicalName}@${c.profile}`:r==="physical"?`APP${c.appId}`:`APP${c.appId}@${c.profile}`}${p??""}`})}return Array.isArray(e)?e.map(i=>bs(i,t,n)):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([i,o])=>[i,bs(o,t,n)])):e}function pb(e,t,n){return e.slice(t,n)}function io(e,t,n){let r=op(e),i=r.find(p=>p.profile!==null);if(i!==void 0)throw new Error(`ArgumentError: browser engine library does not support @profile suffixes (${pb(e,i.start,i.fullEnd)}).`);if(!r.some(p=>p.source==="logical"))return{sql:e,client:t,logicalBindings:[]};let o=xm(e,"browser",{resolveLogicalApp(p){let c=n?.[p];if(c===void 0)throw new Error(`ArgumentError: logical app LAPP_${p} is not defined.`);return c}}),a=[...o.appBindingByMappedApp.values()].filter(p=>p.source==="logical"),s=p=>o.appBindingByMappedApp.get(p)?.appId??p,l={getRecords:p=>t.getRecords({...p,app:s(p.app)}),openCursor:p=>t.openCursor({...p,app:s(p.app)}),getApps:()=>t.getApps(),getFields:p=>t.getFields(s(p)),getNumberPrecision:p=>t.getNumberPrecision(s(p)),getProcessStatuses:p=>t.getProcessStatuses(s(p))};return{sql:o.normalizedSql,client:l,logicalBindings:a}}function oo(e,t){if(t.length===0)return e;let n=t.map(r=>`LAPP_${r.logicalName} -> APP${r.appId}`).filter((r,i,o)=>o.indexOf(r)===i);return e.message=`${e.message} [logical apps: ${n.join(", ")}]`,e}function ao(e,t){if(t.length===0)return e;let n=new Map(t.map(r=>[r.mappedAppId,r]));return bs(e,n,{logicalAppDisplay:"physical"})}function Ns(e){return{recordGetCalls:e?.getCalls??0,fetchedRows:e?.fetchedRows??0,elapsedMs:e?.elapsedMs??0,cursorRecordsScanned:e?.cursorRecordsScanned??0,limitReached:e?.limitReached??!1,limitReachedApps:e?[...e.limitReachedApps].sort((t,n)=>t-n):[]}}function db(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,String(n)]))}function fb(e,t){let n=t?.get(e),r=n?.fieldType??n?.semantics?.fieldType,i=n?.semantics?.compareMode,o=n?.sortKind??(i==="number"||i==="string"?i:void 0),a=n?.publicSourceApp;return{name:e,displayName:n?.displayName??e,valueType:"string",...r!==void 0?{fieldType:r}:{},...o!==void 0?{sortKind:o}:{},...a!==void 0?{sourceApp:a}:{}}}function Cs(e,t=e.metrics){let n=fR(e);return{type:"query",rows:e.rows.map(db),columns:e.columns.map(r=>fb(r,n)),rowCount:e.rowCount,warnings:[...e.warnings??[]],...e.validateStats?{validateStats:e.validateStats}:{},metrics:Ns(t)}}function Hm(e,t={}){let n=new Zt(e).tokenize(),r=new en(n,t).parse();return nt(r),r}function Ym(e,t={}){let n=new Zt(e).tokenize(),r=new en(n,t).parseStatements();return r.forEach(nt),r}function sp(e){let t=e.type==="EXPLAIN"?e.query:e;if(t.type!=="UPDATE"&&t.type!=="INSERT"&&t.type!=="UPSERT")return!1;let n=t;return["applyBlocks","onInsertApplyBlocks","onUpdateApplyBlocks"].some(r=>Array.isArray(n[r])&&n[r].length>0)}function jm(e){if(e instanceof Re)return Ar(e.message,e);let t=xn(e);return t.code==="PARSE_ERROR"?t:Ar("SQL statement could not be parsed",e)}function Eb(e){if(e.trim()==="")throw Ar("SQL statement is empty");try{return Hm(e,{import:!0})}catch(t){let n=jm(t);throw n.message.includes("\u8907\u6587\u306F\u30D0\u30C3\u30C1\u5B9F\u884C API \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044")?Ar("This API accepts one statement; use runBatch for multiple statements",t):n}}function zm(e){if(Eo(e)==="UNKNOWN")throw Ze("Unclassifiable statement is not allowed");return e}function qm(e){if(e.trim()==="")throw Ar("SQL statement is empty");try{return Ym(e,{import:!0})}catch(t){throw jm(t)}}function Rb(e){let t=zm(e),n=t.type;if(n==="IMPORT")throw Ze("IMPORT is disabled by default in engine library queries");if(!$n(t))throw Ze(`${n} statements are not read-only`);if(sp(t))throw Ze("APPLY statements are not allowed in engine library queries");if(!Ap(t))throw Ze(`${n} does not return rows; use runBatch for batch-scoped or non-row-returning read-only statements`)}function Jm(e){let t=zm(e),n=t.type==="EXPLAIN"?t.query:t;if(n.type==="IMPORT")throw Ze("IMPORT is disabled by default in engine library batches");if(!$n(n))throw Ze(`${n.type} statements are not read-only`);if(sp(n))throw Ze("APPLY statements are not allowed in engine library batches");if(Wt(n.type))throw Ze("DML VALIDATE ONLY statements are not supported by runBatch")}function Xm(e){let t=Eb(e);return Rb(t),t}function Qm(e){let t=qm(e);return t.forEach(Jm),t}function Zm(e){let t=e.trim(),n=qm(t);n.forEach(Jm);let r=n[0],i=r.type==="EXPLAIN"?r.query:r;return n.length===1&&(i.type==="SELECT"||i.type==="WITH"||i.type==="UNION")?{statements:n,legacySql:r.type==="EXPLAIN"?t:`EXPLAIN ${t}`}:{statements:n}}function mb(e){let t=e.error,n=t?.cause!==void 0?xn(t.cause):new Pe("EXECUTION_ERROR",t?.message??`Statement ${e.index} failed`);return ep(n,e.index,e.type)}async function eg(e,t){let n=[],r=[];try{let i=Wm(t),o=io(e,i.client,i.logicalApps);r=o.logicalBindings,n=Qm(o.sql);let a=await Tr(o.client,c=>TR(o.sql,Sr(c),{...i.executeOptions,captureColumnMeta:!0})),s=a.statements.find(c=>c.status==="error");if(s!==void 0)throw mb(s);let l=[],p=a.statements.map(c=>{let u={index:c.index,type:c.type,status:c.status};if(c.tempTable!==void 0&&(u.tempTable=c.tempTable),c.rowCount!==void 0&&(u.rowCount=c.rowCount),c.error!==void 0&&(u.error={code:c.error.code,message:c.error.message}),c.skippedReason!==void 0&&(u.skippedReason=c.skippedReason),c.status==="success"&&c.result?.type==="SELECT"){u.resultIndex=l.length;let d=Cs(c.result,a.metrics);l.push(n[c.index]?.type==="EXPLAIN"?ao(d,r):d)}return u});return{type:"batch",batch:!0,statementCount:a.statementCount,statements:p,results:l,warnings:[]}}catch(i){throw oo(As(i,n),r)}}function tg(e){if(e===null||typeof e!="object"||e.type!=="SELECT")throw new Error("Engine returned a non-SELECT result")}async function ng(e,t){let n=[];try{let r=ap(t,"run"),i=io(e,r.client,r.logicalApps);n=i.logicalBindings;let a=Xm(i.sql).type==="VALIDATE"?{...r.executeOptions,onLimitReached:"error"}:r.executeOptions,s=await Tr(i.client,l=>hc(i.sql,Sr(l),{...a,captureColumnMeta:!0}));return tg(s),Cs(s)}catch(r){throw oo(xn(r),n)}}async function rg(e,t){let n=[],r=[];try{let i=ap(t,"explain"),o=io(e,i.client,i.logicalApps);r=o.logicalBindings;let a=Zm(o.sql);if(n=a.statements,a.legacySql!==void 0){let c=await Tr(o.client,f=>hc(a.legacySql,Sr(f),i.executeOptions));tg(c);let u=ao(c.rows.map(f=>String(f.plan??"")),r),d=Xc(c)??{statements:[{index:0,fetch:"none",sources:[]}]};return{type:"explain",lines:u,text:u.join(`
20
+ `),plan:d,metrics:Ns(c.metrics)}}let s=await Tr(o.client,c=>hm(o.sql,Sr(c),void 0,"batch-explain",i.executeOptions.maxRecords,i.executeOptions.cursorMaxActive,!1,100,void 0,!0,i.executeOptions.recursiveCteMaxDepth,i.executeOptions.recursiveCteMaxRows,i.executeOptions.recursiveCteMaxExpansions)),l=ao(s.statements.flatMap(c=>[...s.statementCount>1?[`[${c.index+1}] ${c.type}`]:[],...c.plan]),r),p=Xc(s)??{statements:s.statements.map(c=>({index:c.index,fetch:"none",sources:[]}))};return{type:"explain",lines:l,text:l.join(`
21
+ `),plan:p,metrics:Ns()}}catch(i){throw oo(As(i,n),r)}}var gb="3.68.0";0&&(module.exports={KsqlEngineError,createReadonlyKintoneClient,explainQuery,runBatch,runQuery,version});