@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
- async function xe(e,t,n,r,i={}){let o=i.pageSize??Qm,a=Math.max(1,i.parallel??Zm),s=i.maxRecords??ey,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=up(n,E),g=await lp(e,t,y,u,o,m);if(sp(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>=Os&&(E=cp(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>=Os)break;N.push(C)}let U=up(n,E),P=await Promise.all(N.map(v=>lp(e,t,U,u,o,v)));for(let v of P)sp(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>=Os){let v=P[P.length-1];E=cp(v.records),m=0}}return d}function sp(e,t){e.searchAborted&&t.onSearchAborted?.()}function pp(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 Qm=500,Zm=1,ey=1e4,Os=1e4;async function lp(e,t,n,r,i,o){let a=ty(n,i,o);return e({app:t,query:a,fields:r})}function up(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 ty(e,t,n){let r=e.trimEnd(),i=`limit ${t} offset ${n}`;return r?`${r} ${i}`:i}function cp(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 ny=/^([+-]?)(?:(\d+)(?:\.(\d*))?|\.(\d+))(?:[eE]([+-]?)(\d+))?$/;function ry(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=ny.exec(e.trim());if(t===null)return null;let n=ry(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 Ls(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 dp(e){let t=Ae(e);return t===null?null:Ls(t)}function iy(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=iy(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 Le="__NO_FROM__";function _s(e){return e.windowKind===void 0||e.windowKind==="RANKING"}function so(e){return e.windowKind==="AGGREGATE"}function Ds(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 dp(t)??t}function fp(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 oy(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=oy(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 Ep(e){return Z(e).type!=="NONE"}function Rp(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 ay(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 vs(e){return Vt(e.type)&&!("validateOnly"in e&&e.validateOnly===!0)}function Gn(e){return!vs(e)&&(ay(e.type)||Vt(e.type))}function mp(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 yp=new Set(["STDDEV_POP","STDDEV_SAMP","VAR_POP","VAR_SAMP","MEDIAN","MODE"]);function _e(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"&&yp.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"&&!yp.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":_e(t,Fn(e));break;case"UNION":_e(t,hp(e));break;case"WITH":for(let n of e.ctes)n.query.type!=="GENERATE_SERIES"&&_e(t,Wt(n.query));_e(t,Wt(e.query));break;case"CREATE_TEMP_TABLE":_e(t,Wt(e.query));break;default:break}return lo(e)&&t.add("STATISTICAL_AGGREGATE"),uo(e)&&t.add("AGGREGATE"),t}function gp(e){return Wt(e).size>0}function hp(e){let t=e.left.type==="SELECT"?Fn(e.left):hp(e.left);return _e(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"&&_e(t,Fn(r.query)),r.type==="CASE_COL")for(let i of r.expr.branches)_e(t,xn(i.condition));return _e(t,xn(e.where)),_e(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")&&_e(t,Fn(e.right.query));break;case"LOGICAL":_e(t,xn(e.left)),_e(t,xn(e.right));break;case"NOT":case"GROUP":_e(t,xn(e.expr));break;case"EXISTS":_e(t,Fn(e.query));break;case"NULL_CHECK":case"BOOLEAN":break}return t}function Ap(e){if(!e||typeof e!="object")return!1;let t=e;return t.where!==null&&t.where!==void 0}function Sp(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 sy=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})}),ks=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 ly(e,t){let n=Ir;Ir=e;try{return t()}finally{Ir=n}}function uy(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 ly(e,()=>cy(t,sy[e]))}function cy(e,t){let n=uy(e);if(n===null)return;if(n.type==="UPSERT"){dy(n,t);return}let r=n.applyBlocks;if(Us(r),!t.multipleBlocks&&r.length!==1&&q("multiple APPLY blocks in this phase"),n.type==="INSERT"){fy(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"),Ey(i.where,t.multipleParents),Ip(r,t)}function Ip(e,t){for(let n of e){for(let r of n.operations)t.operations.has(r.kind)||q(`${r.kind} in this phase`);wp(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"&&Tp(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"&&Tp(r.selector.where,t.idxSelectors)}}}}function wp(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 py=new Set(["MULTI_SELECT","CHECK_BOX","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function bp(e,t){if(wp(e),e.targetKind==="MULTI_VALUE"){if(!py.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 Us(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 dy(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??[];Us(n),Us(r),!t.multipleBlocks&&(n.length>1||r.length>1)&&q("multiple APPLY blocks in this phase"),Np(n,"UPSERT ON INSERT"),Ip(r,{...t,idxSelectors:!1,expectRows:!1})}function Np(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 fy(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"),Np(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=ks[e],r="validateOnly"in t&&t.validateOnly===!0;if(t.type!=="EXPLAIN"&&!r&&xs(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 xs(e){let t=e.type==="EXPLAIN"?e.query:e;return(t.type==="UPDATE"||t.type==="INSERT"?t.applyBlocks??[]:t.type==="UPSERT"?[...t.onInsertApplyBlocks??[],...t.onUpdateApplyBlocks??[]]:[]).some(r=>r.targetKind==="MULTI_VALUE"||r.operations.some(i=>i.kind==="ADD"||i.kind==="REMOVE_VALUE"))}function Cp(e,t){if(!(t.type!=="UPDATE"||!t.applyBlocks?.length||bt(t.where))&&!ks[e].publicMultipleParentWrite)throw new Error(`UnsupportedError: APPLY ${Bn(e)} public multiple-parent write is not connected`)}function Vn(e){if(!ks[e].internalPreparedWrite)throw new Error(`UnsupportedError: APPLY ${Bn(e)} internal prepared write is not available`)}function Bn(e){return`Phase ${e.slice(5)}`}function Ey(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"),Ms(e,t))}function Ms(e,t){if(Array.isArray(e)){for(let o of e)Ms(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))Ms(o,t)}function Tp(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=Ry(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 Ry(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 Pp(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 my(e);case"NULL_CHECK":return gy(e);case"LOGICAL":return hy(e);case"NOT":return Ay(e);case"GROUP":return Sy(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 my(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=Lp(e.left),n=yy(e.op),r=Ty(e.right,e.op);return`${t} ${n} ${r}`}function yy(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 gy(e){let t=Lp(e.field);return e.not?`${t} != ""`:`${t} = ""`}function hy(e){let t=Y(e.left),n=Y(e.right),r=e.op==="AND"?"and":"or",i=Op(e.left)?`(${t})`:t,o=Op(e.right)?`(${n})`:n;return`${i} ${r} ${o}`}function Ay(e){return Y(wr(e.expr))}function Sy(e){return`(${Y(e.expr)})`}function Lp(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 Ly(e.field)}function Ty(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 _p(e);case"NUMBER":return z(e);case"KINTONE_FUNC":return Dp(e);case"IN_LIST":return Py(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 _p(e){return`"${e.value.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Dp(e){switch(e.name){case"TODAY":case"NOW":case"LOGINUSER":case"PRIMARY_ORGANIZATION":return`${e.name}()`}return Iy(e)}function Iy(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"||!Ny(e.args.offset,e.args.offsetText)||!wy.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&&!by.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"||!Cy(e.args.day)?Nr():e.args.day===null?`${e.name}()`:`${e.name}(${e.args.day})`}return Nr()}var wy=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),by=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function Ny(e,t){return!Number.isSafeInteger(e)||!/^(?:0|[1-9]\d*|-[1-9]\d*)$/.test(t)?!1:Number(t)===e}function Cy(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 Py(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 Oy(e.values),`(${e.values.map(r=>r.type==="STRING"?_p(r):r.type==="NUMBER"?z(r):Dp(r)).join(",")})`}function Oy(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 Ly(e){return/^[\w$\u3000-\u9FFF]+$/u.test(e)?e:`"${e.replace(/"/g,'\\"')}"`}function Op(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 Gs(e);let n=`${Hn(e.left)}${e.op}${Hn(e.right)}`;return t?n:`(${n})`}function vp(e){if(e.type==="FIELD")return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;if(e.type==="FUNC_FIELD")return Gs(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 Fs(e.expr)}function Mp(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(Mp).join(",")})`;case"ARITH_VALUE":return Hn(e.expr);case"CASE_VALUE":return Fs(e.expr);case"SUBQUERY_IN_LIST":return"(SUBQUERY)";case"SCALAR_SUBQUERY":return"(SUBQUERY)"}}function Cr(e){switch(e.type){case"BINARY":return`${vp(e.left)} ${e.op.replace("_"," ")} ${Mp(e.right)}`;case"NULL_CHECK":return`${vp(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 Up(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 Fs(e){let t=e.branches.map(r=>`WHEN ${Cr(r.condition)} THEN ${Up(r.result)}`).join(" "),n=e.elseResult===null?"":` ELSE ${Up(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 Gs(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 Gs(e);case"CASE_WHEN":return Fs(e);case"SCALAR_ARITH":return`(${cn(e.left)}${e.op}${cn(e.right)})`;case"CONCAT_OP":return`(${cn(e.left)}||${cn(e.right)})`}}function Dy(e){return e.type==="WILDCARD"?"*":e.type==="FIELD_REF"||e.type==="ARITH"?Hn(e,!0):cn(e)}function de(e,t,n){let r=Dy(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"),xp=new WeakMap;function Ks(e,t){return Object.defineProperty(e,kp,{value:{includedCanonicalIds:t},enumerable:!1,configurable:!1,writable:!1}),e}function Bs(e){return e[kp]}function vy(e){return Bs(e)?.includedCanonicalIds}function Fp(e,t){xp.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=xp.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 $s(e){return e.startsWith("_")||e.startsWith("$")}var Uy=/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/;function Vs(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(Vs);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"?Uy.test(t.field):Object.values(t).some(Vs)}function My(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)||Vs(e)?"AGGREGATE_DEPENDENT":"SAFE"}}var ky=["_pid","_rid","_idx"];function Ws(e){return[...new Set(e)]}function xy(e){switch(e.kind){case"APP":return Ws([...e.fieldCodes,...mo]);case"SUBTABLE":return Ws([...e.childFieldCodes,...ky,...e.parentFieldCodes.map(t=>`_p.${t}`)]);case"MATERIALIZED":return Ws(e.columns)}}function Gp(e,t){return[e.from,...e.joins.map(r=>r.table)].map((r,i)=>({sourceIndex:i,qualifier:r.alias??r.cteName,columns:xy(t(r,i))}))}function Kp(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 Bp(e,t){return e.qualifier===null?t:`${e.qualifier}.${t}`}function $p(e,t){let n=e.tableAlias===null?e.field:`${e.tableAlias}.${e.field}`,r=e.tableAlias===null?Kp(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:Bp(a,r.fieldCode)}}function Fy(e){return"alias"in e&&typeof e.alias=="string"?e.alias:null}function Gy(e,t,n){let r=Kp(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:Bp(l,r.fieldCode)}}if(r.qualifier!==null)return{kind:"UNKNOWN",name:e};let a=t.flatMap((l,c)=>Fy(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=My(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 Wp(e,t,n){return{items:e.map(r=>r.type==="FIELD_NAME"?Gy(r.name,t,n):{kind:"EXPRESSION"})}}var Ky="B65_NON_GROUPED_DEPENDENCY",Ys=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 js(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 zs(e){return e.type==="SELECT"||e.type==="SCALAR_SUBQUERY"||e.type==="SCALAR_SUBQUERY_COL"||e.type==="SUBQUERY_IN_LIST"||e.type==="EXISTS"}function Hp(e){return e.type==="AGGREGATE"||e.type==="AGG_REF"}function Yp(e){return e.type==="WINDOW_COL"}function By(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"||zs(n))return null;if(r==="GROUP"&&n.expr!==void 0)return jt(n.expr,t);let i=typeof r=="string"?Ys.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:${By(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 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 $y(e){return"alias"in e&&typeof e.alias=="string"?e.alias:null}function Wy(e){let t=new Map;for(let n of e){let r=$y(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 Vy=/^(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=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"?Ys.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 Vp(e,t,n,r){let i=n==="WILDCARD"?"wildcard":qs(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=${Ky})`)}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(zs(n)||Hp(n)||Yp(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 Vp(t.clause,t.expression,"WILDCARD",t.policy);let r=js(n);if(r!==null){if(t.clause!=="SELECT"&&r.tableAlias===null&&Vy.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 Vp(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"?Ys.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=Wy(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 Hs(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(Hs);let t=e;return zs(t)||Yp(t)?!1:Hp(t)||t.type==="ARITH_AGG_COL"?!0:Object.values(t).some(Hs)}function jn(e){return Z(e).type!=="NONE"||e.columns.some(t=>t.type!=="WINDOW_COL"&&Hs(t))}function Hy(e){return e.type==="FIELD_NAME"?yo(e.name):e.expr}function jp(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=$p(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(Hy(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:${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};Pr(e,t)}function zp(e){return`FIELD:${e}`}var qp=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 Js(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 Yy(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 jy(e,t,n){let r=t(e.field);if(!r.physical)throw new Error(`ArgumentError: grouping reference ${Js(e.field)} must resolve to a physical APP field.`);if(!n.has(r.canonicalId))throw new Error(`ArgumentError: GROUPING argument ${Js(e.field)} is not present in grouping allItems (reason=B65_GROUPING_ARG_NOT_ITEM).`);Fp(e,r.canonicalId)}function Xs(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 Jp(e,t,n=()=>{}){Xs(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=Rp(e,t),a=new Set,s=[];for(let c of o.allItems){let p=c;if(!p.physical)throw new Error(`ArgumentError: grouping item ${Js(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)jy(c,t,a);Pr(e,{identities:new Set([...a].map(zp)),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(!Yy(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 zy(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||zy(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"&&td(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 Xp(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 Xp(e.field);case"LOGICAL":return Nt(e.left)||Nt(e.right);case"NOT":case"GROUP":return Nt(e.expr);case"EXISTS":return!0}}function Xp(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(qy).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:Jy(e.columns),totalCount:!1}}function ed(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=rd(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 qy(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 Jy(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"?Qs(r.expr,n):r.type==="SCALAR_VALUE_COL"&&zn(r.expr,n);return[...new Set(n)]}function Xy(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"?Xy(e,t):e.type==="STRING_FUNC"&&Qs(e,t)}function bo(e){let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function Qs(e,t){for(let n of e.args)Qy(n,t)}function Qy(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"){Qs(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)Qp(n.result,t);e.elseResult&&Qp(e.elseResult,t)}}function Qp(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"&&Zy(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 Zy(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?Or(e,t):zn(e,t)}function td(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"?td(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?Lr(e.left)||Lr(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>Zp(t.result))||e.elseResult!==null&&Zp(e.elseResult):!1}function Zp(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 nd(e,t){let n=new Set,r=rd(e,t,{includeMaterialized:!0,unqualified:n});return{bySource:new Map([...r.entries()].map(([i,o])=>[i,new Set(o.fields)])),unqualified:n}}function rd(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=eg(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")&&tg(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 eg(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 tg(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||Ep(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:id(e.left,t)};case"NULL_CHECK":return{...e,field:id(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 id(e,t){return e.type==="FIELD"&&e.tableAlias===t?{...e,tableAlias:null}:e}var ng=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME","CREATOR","MODIFIER"]),rg=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":rg.has(e.fieldType)?t="option":ng.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=["=","!=",">","<",">=","<="],ig=new Set(["DATE","DATETIME","CREATED_TIME","UPDATED_TIME"]),og=new Set(He),ag=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"])]]),sg=new Map([["TODAY",new Set(He)],["NOW",new Set(He)],["LOGINUSER",new Set(["in","not in"])],["PRIMARY_ORGANIZATION",new Set(["in","not in"])]]),lg=["=","!=","in","not in"],ug=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(lg)],["STATUS_ASSIGNEE",new Set(["in","not in"])]]),cg=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"])]]),el=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"]),sd=new Set(["CHECK_BOX","MULTI_SELECT","FILE","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE","CATEGORY"]);function Oo(e){return ug.get(e)??new Set}function ld(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"&&el.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 pg(e.op,e.left,e.right,t);case"NULL_CHECK":return e.field.type!=="FIELD"?Zs():Eg(e.field,e.not?"IS NOT NULL":"IS NULL",t);case"EXISTS":return Zs();case"GROUP":return Dr(e.expr,t);case"NOT":{let n=Dr(e.expr,t);return n.capability!=="SUPERSET_PREFILTER"?n:cd(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 mg(e.op,n,r)}}}function pg(e,t,n,r){if(n.type==="KINTONE_FUNC"&&ie(n.name))return dg(e,t,n,r);if(n.type==="KINTONE_FUNC"&&od(n))return ad(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?ad(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 Zs();let i=r(t);if(!i)return Jn("WHERE_FIELD_UNRESOLVED",t.field,void 0,vr(e));let o=vr(e);if(!ud(i.fieldType,o))return Jn("WHERE_OPERATOR_INVALID_FOR_FIELD_TYPE",t.field,i.fieldType,o);if(!Rg(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"||od(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 od(e){return e.type==="KINTONE_FUNC"&&ln.has(e.name)}function ad(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=ag.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):sg.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 dg(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?fg(n)?og.has(i)?!ig.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 fg(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 Eg(e,t,n){let r=n(e);return r?ud(r.fieldType,t)?!el.has(r.fieldType)&&!sd.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 ud(e,t){let n=cg.get(e);return n===void 0||n.has(t)}function Rg(e,t){return el.has(e)?!0:sd.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 mg(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 Zs(){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 pd({capability:"UNSUPPORTED",reasons:[{code:e,functionName:t,field:n,fieldType:r,operator:i}]})}function cd(e){return e.some(t=>t.code.startsWith("WHERE_RELATIVE_DATE_")||t.functionName!==void 0&&ie(t.functionName))}function yg(e){return e.some(t=>t.code.startsWith("WHERE_KINTONE_FUNCTION_")||t.functionName!==void 0&&ln.has(t.functionName))}function pd(e){if(e.capability==="EXACT_PUSHDOWN"||!cd(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 gg(e){if(e.capability==="EXACT_PUSHDOWN"||!yg(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 gg(pd(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=Ls(n);return z(e)===o}var hg=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]),Ag=new Set(["CREATOR","MODIFIER","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE"]),Sg=new Set(["SINGLE_LINE_TEXT","LINK","MULTI_LINE_TEXT","RICH_TEXT","FILE"]),Tg=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"?Sg.has(r)&&e.right.type==="STRING"&&e.right.value!==""?"exact":"unsafe":r==="__ID__"||n==="$id"?wg(e.right)&&(e.op==="="||e.op==="<"||e.op===">"||e.op==="<="||e.op===">=")?"exact":"unsafe":r==="RECORD_NUMBER"||r==="CALC"?Ig(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":Ag.has(r)?tl(e)?"exact":"unsafe":r==="SINGLE_LINE_TEXT"||r==="LINK"?tl(e)||(e.op==="="||e.op==="!="||e.op==="<>")&&e.right.type==="STRING"&&e.right.value!==""?"exact":"unsafe":r==="DATE"||r==="TIME"||Tg.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":hg.has(r)?!tl(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 dd(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 tl(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 Ig(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 wg(e){return e.type==="NUMBER"&&Number.isSafeInteger(e.value)&&e.value>0}function nl(e,t={}){return xo(e,t).condition}function xo(e,t={}){return Uo(e,n=>bg(n,t))}function kr(e,t={}){return Mo(e,n=>dd(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 bg(e,t){if(Ng(e,t)||Cg(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 Ng(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 Cg(e,t){return!Pg(e.left,t)||e.right.type!=="NUMBER"?!1:e.op==="="||e.op===">"||e.op==="<"||e.op===">="||e.op==="<="}function Pg(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 rl(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||!fd(o,l))return null;let c={prefilterWhere:t.where,residualWhere:null,exactRelativeLeaves:Lg(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 Og(p,e,l),p}function Og(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(!fd(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 Lg(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 fd(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 Ed(e){Rd(e)}function ol(e){if(rl(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 Rd(e){switch(e.type){case"SELECT":Qn(e);return;case"UNION":sl(e);return;case"WITH":md(e);return;case"EXPLAIN":Rd(e.query);return;case"CREATE_TEMP_TABLE":al(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)){il(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)&&!Ug(e,e.where)){il(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)){il(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 il(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 al(e){e.type==="SELECT"?Qn(e):e.type==="UNION"?sl(e):md(e)}function sl(e){al(e.left),Qn(e.right)}function md(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"&&sl(t.query);al(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(rl(n).length===0){En(e);return}if(Dg(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 Dg(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 Ug(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&&Mg(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 Mg(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 yd(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(kg(t))throw new Fr;return;default:return}}function kg(e){let t=!1;return $o(e,n=>{t||!Object.prototype.hasOwnProperty.call(n,"where")||xg(n.where)&&(t=!0)}),t}function xg(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 cl=1e4,Ct=cl,X=e=>new Error(`ArgumentError: ${e}`),Fg=e=>e.type==="VARIABLE",Qt=e=>e?.type==="STRING"&&e.fromVariable===!0;function Gg(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 ll(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 Kg(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 gd(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 hd(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 ul(e){return e.year*12+e.month-1}function Ad(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 Bg(e,t,n){let r=ll(`${String(e.year).padStart(4,"0")}-${String(e.month).padStart(2,"0")}-${String(e.day).padStart(2,"0")}`),i=ll(`${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=ul(t)+(n.coefficient<0&&t.day!==1?1:0);return Vo(ul(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 Sd(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 $g(e){let t=Math.floor(e/12),n=e-t*12+1;return Sd(t,n,1)}function Td(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=>Gg(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(hd))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"}:gd(i);return Ad(l,g.unit),{kind:"DATE",start:n,stop:r,step:g.coefficient,dateUnit:g.unit,rowCount:Bg(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 Wg(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(Fg)){["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(hd(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=gd(n.value),i=e.args[0];if(i?.type==="STRING"){let o=Zn(i.value);o&&Ad(o,r.unit)}}return null}let t=Td(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 Id(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=Wg(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=Td(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=ul(r);for(let o=0;o<t.rowCount;o++)n.push($g(i+o*t.step))}else if(t.dateUnit==="YEAR")for(let i=0;i<t.rowCount;i++)n.push(Sd(r.year+i*t.step,1,1));else{let i=ll(t.start);for(let o=0;o<t.rowCount;o++)n.push(Kg(i+o*t.step))}}return{...t,values:n}}function nt(e){Vg(e),yd(e),Ed(e),Id(e)}function Vg(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,wd=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 Hg=new Set(["=","!=","<>",">","<",">=","<="]);function pl(e,t,n=!1){if(Array.isArray(e)){for(let r of e)pl(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&&Hg.has(String(r.op));pl(s,t,a==="where"?!0:i==="BINARY"&&a==="right"&&l?c:o?n:!1)}}}function Yg(e){let t=e.type==="EXPLAIN"?e.query:e;return Vt(t.type)||t.type==="VALIDATE"}function dl(e){if(Array.isArray(e)){for(let t of e)dl(t);return}if(e!==null&&typeof e=="object"){let t=e;t.type==="SELECT"&&Xs(e);for(let n of Object.values(t))dl(n)}}function fl(e){if(e.length===0)throw new oe("ArgumentError: SQL is empty.",0);if(e.forEach((u,d)=>{try{dl(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=[];pl(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&&Yg(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>wd)throw new oe(`ParseError: batch exceeds ${wd} 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:vs(u),isReadOnly:Gn(u),hasWhere:Ap(u),insertValuesCount:Sp(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:gp(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 De=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(El(n))return this.readIdentOrKeyword(t);if(n==="#")return this.readHashIdent(t);if(n==="@")return this.readVariable(t);throw new De(`\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 De("\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 De("\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 De("\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&&bd(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(!El(n))throw new De("\u300C#\u300D \u306E\u76F4\u5F8C\u306B\u306F\u8B58\u5225\u5B50\u304C\u5FC5\u8981\u3067\u3059",t,this.input);for(;this.pos<this.input.length&&bd(this.input[this.pos]);)this.pos++;let r=this.input.slice(t,this.pos);if(this.input[this.pos]==="@")throw new De(`@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 De("\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 De("\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
+ async function xe(e,t,n,r,i={}){let o=i.pageSize??ng,a=Math.max(1,i.parallel??rg),s=i.maxRecords??ig,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=dp(n,E),y=await pp(e,t,g,u,o,m);if(cp(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>=_s&&(E=fp(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>=_s)break;C.push(N)}let v=dp(n,E),P=await Promise.all(C.map(M=>pp(e,t,v,u,o,M)));for(let M of P)cp(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>=_s){let M=P[P.length-1];E=fp(M.records),m=0}}return d}function cp(e,t){e.searchAborted&&t.onSearchAborted?.()}function Ep(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 ng=500,rg=1,ig=1e4,_s=1e4;async function pp(e,t,n,r,i,o){let a=og(n,i,o);return e({app:t,query:a,fields:r})}function dp(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 og(e,t,n){let r=e.trimEnd(),i=`limit ${t} offset ${n}`;return r?`${r} ${i}`:i}function fp(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 ag=/^([+-]?)(?:(\d+)(?:\.(\d*))?|\.(\d+))(?:[eE]([+-]?)(\d+))?$/;function sg(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=ag.exec(e.trim());if(t===null)return null;let n=sg(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 Ds(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 Rp(e){let t=Ae(e);return t===null?null:Ds(t)}function lg(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=lg(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 Le="__NO_FROM__";function vs(e){return e.windowKind===void 0||e.windowKind==="RANKING"}function co(e){return e.windowKind==="AGGREGATE"}function Ms(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 Rp(t)??t}function mp(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 ug(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=ug(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 gp(e){return Z(e).type!=="NONE"}function yp(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 cg(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 Us(e){return Wt(e.type)&&!("validateOnly"in e&&e.validateOnly===!0)}function $n(e){return!Us(e)&&(cg(e.type)||Wt(e.type))}function hp(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 Ap=new Set(["STDDEV_POP","STDDEV_SAMP","VAR_POP","VAR_SAMP","MEDIAN","MODE"]);function _e(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"&&Ap.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"&&!Ap.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":_e(t,Kn(e));break;case"UNION":_e(t,Tp(e));break;case"WITH":for(let n of e.ctes)n.query.type!=="GENERATE_SERIES"&&_e(t,Vt(n.query));_e(t,Vt(e.query));break;case"CREATE_TEMP_TABLE":_e(t,Vt(e.query));break;default:break}return po(e)&&t.add("STATISTICAL_AGGREGATE"),fo(e)&&t.add("AGGREGATE"),t}function Sp(e){return Vt(e).size>0}function Tp(e){let t=e.left.type==="SELECT"?Kn(e.left):Tp(e.left);return _e(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"&&_e(t,Kn(r.query)),r.type==="CASE_COL")for(let i of r.expr.branches)_e(t,Gn(i.condition));return _e(t,Gn(e.where)),_e(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")&&_e(t,Kn(e.right.query));break;case"LOGICAL":_e(t,Gn(e.left)),_e(t,Gn(e.right));break;case"NOT":case"GROUP":_e(t,Gn(e.expr));break;case"EXISTS":_e(t,Kn(e.query));break;case"NULL_CHECK":case"BOOLEAN":break}return t}function Ip(e){if(!e||typeof e!="object")return!1;let t=e;return t.where!==null&&t.where!==void 0}function wp(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 pg=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})}),Fs=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 dg(e,t){let n=br;br=e;try{return t()}finally{br=n}}function fg(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 dg(e,()=>Eg(t,pg[e]))}function Eg(e,t){let n=fg(e);if(n===null)return;if(n.type==="UPSERT"){mg(n,t);return}let r=n.applyBlocks;if(ks(r),!t.multipleBlocks&&r.length!==1&&q("multiple APPLY blocks in this phase"),n.type==="INSERT"){gg(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"),yg(i.where,t.multipleParents),Np(r,t)}function Np(e,t){for(let n of e){for(let r of n.operations)t.operations.has(r.kind)||q(`${r.kind} in this phase`);Cp(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"&&bp(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"&&bp(r.selector.where,t.idxSelectors)}}}}function Cp(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 Rg=new Set(["MULTI_SELECT","CHECK_BOX","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function Pp(e,t){if(Cp(e),e.targetKind==="MULTI_VALUE"){if(!Rg.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 ks(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 mg(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??[];ks(n),ks(r),!t.multipleBlocks&&(n.length>1||r.length>1)&&q("multiple APPLY blocks in this phase"),Op(n,"UPSERT ON INSERT"),Np(r,{...t,idxSelectors:!1,expectRows:!1})}function Op(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 gg(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"),Op(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=Fs[e],r="validateOnly"in t&&t.validateOnly===!0;if(t.type!=="EXPLAIN"&&!r&&Gs(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 Gs(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 Lp(e,t){if(!(t.type!=="UPDATE"||!t.applyBlocks?.length||Nt(t.where))&&!Fs[e].publicMultipleParentWrite)throw new Error(`UnsupportedError: APPLY ${Vn(e)} public multiple-parent write is not connected`)}function Yn(e){if(!Fs[e].internalPreparedWrite)throw new Error(`UnsupportedError: APPLY ${Vn(e)} internal prepared write is not available`)}function Vn(e){return`Phase ${e.slice(5)}`}function yg(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"),xs(e,t))}function xs(e,t){if(Array.isArray(e)){for(let o of e)xs(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))xs(o,t)}function bp(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=hg(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 hg(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 _p(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 Ag(e);case"NULL_CHECK":return Tg(e);case"LOGICAL":return Ig(e);case"NOT":return wg(e);case"GROUP":return bg(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 Ag(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=vp(e.left),n=Sg(e.op),r=Ng(e.right,e.op);return`${t} ${n} ${r}`}function Sg(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 Tg(e){let t=vp(e.field);return e.not?`${t} != ""`:`${t} = ""`}function Ig(e){let t=j(e.left),n=j(e.right),r=e.op==="AND"?"and":"or",i=Dp(e.left)?`(${t})`:t,o=Dp(e.right)?`(${n})`:n;return`${i} ${r} ${o}`}function wg(e){return j(Nr(e.expr))}function bg(e){return`(${j(e.expr)})`}function vp(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 Mg(e.field)}function Ng(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 Mp(e);case"NUMBER":return z(e);case"KINTONE_FUNC":return Up(e);case"IN_LIST":return Dg(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 Mp(e){return`"${e.value.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Up(e){switch(e.name){case"TODAY":case"NOW":case"LOGINUSER":case"PRIMARY_ORGANIZATION":return`${e.name}()`}return Cg(e)}function Cg(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"||!Lg(e.args.offset,e.args.offsetText)||!Pg.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&&!Og.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"||!_g(e.args.day)?Pr():e.args.day===null?`${e.name}()`:`${e.name}(${e.args.day})`}return Pr()}var Pg=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),Og=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function Lg(e,t){return!Number.isSafeInteger(e)||!/^(?:0|[1-9]\d*|-[1-9]\d*)$/.test(t)?!1:Number(t)===e}function _g(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 Dg(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 vg(e.values),`(${e.values.map(r=>r.type==="STRING"?Mp(r):r.type==="NUMBER"?z(r):Up(r)).join(",")})`}function vg(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 Mg(e){return/^[\w$\u3000-\u9FFF]+$/u.test(e)?e:`"${e.replace(/"/g,'\\"')}"`}function Dp(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 $s(e);let n=`${jn(e.left)}${e.op}${jn(e.right)}`;return t?n:`(${n})`}function kp(e){if(e.type==="FIELD")return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;if(e.type==="FUNC_FIELD")return $s(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 Ks(e.expr)}function Fp(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(Fp).join(",")})`;case"ARITH_VALUE":return jn(e.expr);case"CASE_VALUE":return Ks(e.expr);case"SUBQUERY_IN_LIST":return"(SUBQUERY)";case"SCALAR_SUBQUERY":return"(SUBQUERY)"}}function Or(e){switch(e.type){case"BINARY":return`${kp(e.left)} ${e.op.replace("_"," ")} ${Fp(e.right)}`;case"NULL_CHECK":return`${kp(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 xp(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 Ks(e){let t=e.branches.map(r=>`WHEN ${Or(r.condition)} THEN ${xp(r.result)}`).join(" "),n=e.elseResult===null?"":` ELSE ${xp(e.elseResult)}`;return`CASE ${t}${n} END`}function Ug(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 $s(e){return`${e.func}(${e.args.map(Ug).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 $s(e);case"CASE_WHEN":return Ks(e);case"SCALAR_ARITH":return`(${cn(e.left)}${e.op}${cn(e.right)})`;case"CONCAT_OP":return`(${cn(e.left)}||${cn(e.right)})`}}function kg(e){return e.type==="WILDCARD"?"*":e.type==="FIELD_REF"||e.type==="ARITH"?jn(e,!0):cn(e)}function de(e,t,n){let r=kg(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 Gp=Symbol("ksql.groupingRowMeta"),Kp=new WeakMap;function Bs(e,t){return Object.defineProperty(e,Gp,{value:{includedCanonicalIds:t},enumerable:!1,configurable:!1,writable:!1}),e}function Vs(e){return e[Gp]}function xg(e){return Vs(e)?.includedCanonicalIds}function $p(e,t){Kp.set(e,t)}function zn(e,t){let n=xg(t);if(!n)throw new Error("internal error: GROUPING() evaluation requires B65 grouping row membership.");let r=Kp.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 Ws(e){return e.startsWith("_")||e.startsWith("$")}var Fg=/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/;function Ys(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(Ys);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"?Fg.test(t.field):Object.values(t).some(Ys)}function Gg(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)||Ys(e)?"AGGREGATE_DEPENDENT":"SAFE"}}var Kg=["_pid","_rid","_idx"];function Hs(e){return[...new Set(e)]}function $g(e){switch(e.kind){case"APP":return Hs([...e.fieldCodes,...ho]);case"SUBTABLE":return Hs([...e.childFieldCodes,...Kg,...e.parentFieldCodes.map(t=>`_p.${t}`)]);case"MATERIALIZED":return Hs(e.columns)}}function Bp(e,t){return[e.from,...e.joins.map(r=>r.table)].map((r,i)=>({sourceIndex:i,qualifier:r.alias??r.cteName,columns:$g(t(r,i))}))}function Vp(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 Wp(e,t){return e.qualifier===null?t:`${e.qualifier}.${t}`}function Hp(e,t){let n=e.tableAlias===null?e.field:`${e.tableAlias}.${e.field}`,r=e.tableAlias===null?Vp(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:Wp(a,r.fieldCode)}}function Bg(e){return"alias"in e&&typeof e.alias=="string"?e.alias:null}function Vg(e,t,n){let r=Vp(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:Wp(l,r.fieldCode)}}if(r.qualifier!==null)return{kind:"UNKNOWN",name:e};let a=t.flatMap((l,p)=>Bg(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=Gg(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 Yp(e,t,n){return{items:e.map(r=>r.type==="FIELD_NAME"?Vg(r.name,t,n):{kind:"EXPRESSION"})}}var Wg="B65_NON_GROUPED_DEPENDENCY",zs=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 qs(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 Js(e){return e.type==="SELECT"||e.type==="SCALAR_SUBQUERY"||e.type==="SCALAR_SUBQUERY_COL"||e.type==="SUBQUERY_IN_LIST"||e.type==="EXISTS"}function zp(e){return e.type==="AGGREGATE"||e.type==="AGG_REF"}function qp(e){return e.type==="WINDOW_COL"}function Hg(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"||Js(n))return null;if(r==="GROUP"&&n.expr!==void 0)return jt(n.expr,t);let i=typeof r=="string"?zs.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:${Hg(n)}`;if(r==="BOOLEAN")return`BOOLEAN:${String(n.value)}`;let o=qs(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 Yg(e){return"alias"in e&&typeof e.alias=="string"?e.alias:null}function jg(e){let t=new Map;for(let n of e){let r=Yg(n);r!==null&&t.set(r,[...t.get(r)??[],n])}return t}function Xs(e){return e.tableAlias===null?e.field:`${e.tableAlias}.${e.field}`}var zg=/^(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=qs(t);if(n!==null)return Xs(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"?zs.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 jp(e,t,n,r){let i=n==="WILDCARD"?"wildcard":Xs(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=${Wg})`)}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(Js(n)||zp(n)||qp(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 jp(t.clause,t.expression,"WILDCARD",t.policy);let r=qs(n);if(r!==null){if(t.clause!=="SELECT"&&r.tableAlias===null&&zg.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 jp(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"?zs.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=jg(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 js(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(js);let t=e;return Js(t)||qp(t)?!1:zp(t)||t.type==="ARITH_AGG_COL"?!0:Object.values(t).some(js)}function qn(e){return Z(e).type!=="NONE"||e.columns.some(t=>t.type!=="WINDOW_COL"&&js(t))}function qg(e){return e.type==="FIELD_NAME"?Ao(e.name):e.expr}function Jp(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=Hp(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(qg(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:${Xs(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 Xp(e){return`FIELD:${e}`}var Qp=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 Qs(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 Jg(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 Xg(e,t,n){let r=t(e.field);if(!r.physical)throw new Error(`ArgumentError: grouping reference ${Qs(e.field)} must resolve to a physical APP field.`);if(!n.has(r.canonicalId))throw new Error(`ArgumentError: GROUPING argument ${Qs(e.field)} is not present in grouping allItems (reason=B65_GROUPING_ARG_NOT_ITEM).`);$p(e,r.canonicalId)}function Zs(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 Zp(e,t,n=()=>{}){Zs(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=yp(e,t),a=new Set,s=[];for(let p of o.allItems){let c=p;if(!c.physical)throw new Error(`ArgumentError: grouping item ${Qs(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)Xg(p,t,a);Lr(e,{identities:new Set([...a].map(Xp)),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(!Jg(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 Qg(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||Qg(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"&&id(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 ed(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 ed(e.field);case"LOGICAL":return Ct(e.left)||Ct(e.right);case"NOT":case"GROUP":return Ct(e.expr);case"EXISTS":return!0}}function ed(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(Zg).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:ey(e.columns),totalCount:!1}}function rd(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=ad(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 Zg(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 ey(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"?el(r.expr,n):r.type==="SCALAR_VALUE_COL"&&Jn(r.expr,n);return[...new Set(n)]}function ty(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"?ty(e,t):e.type==="STRING_FUNC"&&el(e,t)}function Po(e){let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function el(e,t){for(let n of e.args)ny(n,t)}function ny(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"){el(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)td(n.result,t);e.elseResult&&td(e.elseResult,t)}}function td(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"&&ry(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 ry(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?_r(e,t):Jn(e,t)}function id(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"?id(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?Dr(e.left)||Dr(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>nd(t.result))||e.elseResult!==null&&nd(e.elseResult):!1}function nd(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 od(e,t){let n=new Set,r=ad(e,t,{includeMaterialized:!0,unqualified:n});return{bySource:new Map([...r.entries()].map(([i,o])=>[i,new Set(o.fields)])),unqualified:n}}function ad(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=iy(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")&&oy(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 iy(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 oy(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||gp(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:sd(e.left,t)};case"NULL_CHECK":return{...e,field:sd(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 sd(e,t){return e.type==="FIELD"&&e.tableAlias===t?{...e,tableAlias:null}:e}var ay=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME","CREATOR","MODIFIER"]),sy=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":sy.has(e.fieldType)?t="option":ay.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=["=","!=",">","<",">=","<="],ly=new Set(["DATE","DATETIME","CREATED_TIME","UPDATED_TIME"]),uy=new Set(He),cy=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"])]]),py=new Map([["TODAY",new Set(He)],["NOW",new Set(He)],["LOGINUSER",new Set(["in","not in"])],["PRIMARY_ORGANIZATION",new Set(["in","not in"])]]),dy=["=","!=","in","not in"],fy=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(dy)],["STATUS_ASSIGNEE",new Set(["in","not in"])]]),Ey=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"])]]),nl=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"]),cd=new Set(["CHECK_BOX","MULTI_SELECT","FILE","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE","CATEGORY"]);function Do(e){return fy.get(e)??new Set}function pd(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"&&nl.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 Ry(e.op,e.left,e.right,t);case"NULL_CHECK":return e.field.type!=="FIELD"?tl():yy(e.field,e.not?"IS NOT NULL":"IS NULL",t);case"EXISTS":return tl();case"GROUP":return Mr(e.expr,t);case"NOT":{let n=Mr(e.expr,t);return n.capability!=="SUPERSET_PREFILTER"?n:fd(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 Ay(e.op,n,r)}}}function Ry(e,t,n,r){if(n.type==="KINTONE_FUNC"&&ie(n.name))return my(e,t,n,r);if(n.type==="KINTONE_FUNC"&&ld(n))return ud(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?ud(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 tl();let i=r(t);if(!i)return Qn("WHERE_FIELD_UNRESOLVED",t.field,void 0,Ur(e));let o=Ur(e);if(!dd(i.fieldType,o))return Qn("WHERE_OPERATOR_INVALID_FOR_FIELD_TYPE",t.field,i.fieldType,o);if(!hy(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"||ld(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 ld(e){return e.type==="KINTONE_FUNC"&&ln.has(e.name)}function ud(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=cy.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):py.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 my(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?gy(n)?uy.has(i)?!ly.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 gy(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 yy(e,t,n){let r=n(e);return r?dd(r.fieldType,t)?!nl.has(r.fieldType)&&!cd.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 dd(e,t){let n=Ey.get(e);return n===void 0||n.has(t)}function hy(e,t){return nl.has(e)?!0:cd.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 Ay(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 tl(){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 Ed({capability:"UNSUPPORTED",reasons:[{code:e,functionName:t,field:n,fieldType:r,operator:i}]})}function fd(e){return e.some(t=>t.code.startsWith("WHERE_RELATIVE_DATE_")||t.functionName!==void 0&&ie(t.functionName))}function Sy(e){return e.some(t=>t.code.startsWith("WHERE_KINTONE_FUNCTION_")||t.functionName!==void 0&&ln.has(t.functionName))}function Ed(e){if(e.capability==="EXACT_PUSHDOWN"||!fd(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 Ty(e){if(e.capability==="EXACT_PUSHDOWN"||!Sy(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 Ty(Ed(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=Ds(n);return z(e)===o}var Iy=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]),wy=new Set(["CREATOR","MODIFIER","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE"]),by=new Set(["SINGLE_LINE_TEXT","LINK","MULTI_LINE_TEXT","RICH_TEXT","FILE"]),Ny=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"?by.has(r)&&e.right.type==="STRING"&&e.right.value!==""?"exact":"unsafe":r==="__ID__"||n==="$id"?Py(e.right)&&(e.op==="="||e.op==="<"||e.op===">"||e.op==="<="||e.op===">=")?"exact":"unsafe":r==="RECORD_NUMBER"||r==="CALC"?Cy(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":wy.has(r)?rl(e)?"exact":"unsafe":r==="SINGLE_LINE_TEXT"||r==="LINK"?rl(e)||(e.op==="="||e.op==="!="||e.op==="<>")&&e.right.type==="STRING"&&e.right.value!==""?"exact":"unsafe":r==="DATE"||r==="TIME"||Ny.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":Iy.has(r)?!rl(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 Rd(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 rl(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 Cy(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 Py(e){return e.type==="NUMBER"&&Number.isSafeInteger(e.value)&&e.value>0}function il(e,t={}){return Ko(e,t).condition}function Ko(e,t={}){return xo(e,n=>Oy(n,t))}function Fr(e,t={}){return Fo(e,n=>Rd(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 Oy(e,t){if(Ly(e,t)||_y(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 Ly(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 _y(e,t){return!Dy(e.left,t)||e.right.type!=="NUMBER"?!1:e.op==="="||e.op===">"||e.op==="<"||e.op===">="||e.op==="<="}function Dy(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 ol(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||!Uy(l,a)||o===null||!md(o,l))return null;let p={prefilterWhere:t.where,residualWhere:null,exactRelativeLeaves:My(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 vy(c,e,l),c}function vy(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(!md(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 My(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 Uy(e,t){return e.length===t.length&&e.every((n,r)=>n===t[r])}function md(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 gd(e){yd(e)}function sl(e){if(ol(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 yd(e){switch(e.type){case"SELECT":er(e);return;case"UNION":ul(e);return;case"WITH":hd(e);return;case"EXPLAIN":yd(e.query);return;case"CREATE_TEMP_TABLE":ll(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)){al(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)&&!Fy(e,e.where)){al(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)){al(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 al(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 ll(e){e.type==="SELECT"?er(e):e.type==="UNION"?ul(e):hd(e)}function ul(e){ll(e.left),er(e.right)}function hd(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"&&ul(t.query);ll(e.query)}function er(e){if(xy(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(ol(n).length===0){En(e);return}if(ky(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 ky(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 xy(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 Fy(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&&Gy(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 Gy(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 Ad(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(Ky(t))throw new Kr;return;default:return}}function Ky(e){let t=!1;return Ho(e,n=>{t||!Object.prototype.hasOwnProperty.call(n,"where")||$y(n.where)&&(t=!0)}),t}function $y(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 dl=1e4,Pt=dl,X=e=>new Error(`ArgumentError: ${e}`),By=e=>e.type==="VARIABLE",Qt=e=>e?.type==="STRING"&&e.fromVariable===!0;function Vy(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 cl(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 Wy(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 Sd(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 Td(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 pl(e){return e.year*12+e.month-1}function Id(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 Hy(e,t,n){let r=cl(`${String(e.year).padStart(4,"0")}-${String(e.month).padStart(2,"0")}-${String(e.day).padStart(2,"0")}`),i=cl(`${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=pl(t)+(n.coefficient<0&&t.day!==1?1:0);return jo(pl(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 wd(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 Yy(e){let t=Math.floor(e/12),n=e-t*12+1;return wd(t,n,1)}function bd(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=>Vy(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(Td))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"}:Sd(i);return Id(l,y.unit),{kind:"DATE",start:n,stop:r,step:y.coefficient,dateUnit:y.unit,rowCount:Hy(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 jy(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(By)){["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(Td(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=Sd(n.value),i=e.args[0];if(i?.type==="STRING"){let o=tr(i.value);o&&Id(o,r.unit)}}return null}let t=bd(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 Nd(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=jy(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=bd(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=pl(r);for(let o=0;o<t.rowCount;o++)n.push(Yy(i+o*t.step))}else if(t.dateUnit==="YEAR")for(let i=0;i<t.rowCount;i++)n.push(wd(r.year+i*t.step,1,1));else{let i=cl(t.start);for(let o=0;o<t.rowCount;o++)n.push(Wy(i+o*t.step))}}return{...t,values:n}}function nt(e){zy(e),Ad(e),gd(e),Nd(e)}function zy(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,Cd=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 qy=new Set(["=","!=","<>",">","<",">=","<="]);function fl(e,t,n=!1){if(Array.isArray(e)){for(let r of e)fl(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&&qy.has(String(r.op));fl(s,t,a==="where"?!0:i==="BINARY"&&a==="right"&&l?p:o?n:!1)}}}function Jy(e){let t=e.type==="EXPLAIN"?e.query:e;return Wt(t.type)||t.type==="VALIDATE"}function El(e){if(Array.isArray(e)){for(let t of e)El(t);return}if(e!==null&&typeof e=="object"){let t=e;t.type==="SELECT"&&Zs(e);for(let n of Object.values(t))El(n)}}function Rl(e){if(e.length===0)throw new oe("ArgumentError: SQL is empty.",0);if(e.forEach((u,d)=>{try{El(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=[];fl(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&&Jy(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>Cd)throw new oe(`ParseError: batch exceeds ${Cd} 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:Us(u),isReadOnly:$n(u),hasWhere:Ip(u),insertValuesCount:wp(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:Sp(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 De=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(ml(n))return this.readIdentOrKeyword(t);if(n==="#")return this.readHashIdent(t);if(n==="@")return this.readVariable(t);throw new De(`\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 De("\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 De("\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 De("\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&&Pd(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(!ml(n))throw new De("\u300C#\u300D \u306E\u76F4\u5F8C\u306B\u306F\u8B58\u5225\u5B50\u304C\u5FC5\u8981\u3067\u3059",t,this.input);for(;this.pos<this.input.length&&Pd(this.input[this.pos]);)this.pos++;let r=this.input.slice(t,this.pos);if(this.input[this.pos]==="@")throw new De(`@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 De("\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 De("\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 De("\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 El(e){let t=e.codePointAt(0);return t>=65&&t<=90||t>=97&&t<=122||t===95||t===36||jg(t)}function bd(e){let t=e.codePointAt(0);return El(e)||t>=48&&t<=57}function er(e){let t=e.codePointAt(0);return t>=48&&t<=57}function jg(e){return e>=12352&&e<=12543||e>=13312&&e<=40959||e>=63744&&e<=64255||e>=65281&&e<=65376}var Cd=20,ml=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"}),Od=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"}),VN=Object.freeze(Object.values($r).filter(e=>e!==void 0)),zg=Object.freeze(["COUNT","SUM","AVG","MAX","MIN"]),qg=new Set(zg);function Jg(e){return qg.has(e)}var Ld=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 Pd(e){return Wr[e]!==void 0}var Xg=Object.freeze([...po]),Qg=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),Zg=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function eh(e){return Qg.has(e)}function th(e){return Zg.has(e)}function nh(e){return Number.isInteger(e)&&e>=1&&e<=31}var HN=Object.freeze(Array.from(new Set([...Object.keys(ml),...Od,...Object.keys($r),...Object.keys(Ld),...Object.keys(Wr),...Xg,"IF"]))),rh=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 ih(e,t){return e.kind==="("||e.kind==="."||t.kind===")"||t.kind===","||t.kind==="."?!1:t.kind==="("?!rh.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"}},Rl=["\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>Cd)throw new T(`batch exceeds ${Cd} 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!==Le||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&&ih(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:Le},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(Rl,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 Ld[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(Rl,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(Rl,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=ml[this.peek().kind];if(n==="LEFT"||n==="RIGHT")return n}let t=ml[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(Od.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=oh(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(!Jg(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(!eh(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(!th(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(!nh(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(Pd(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=fp(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(Pd(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 oh(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 ah(e,t){return e<t?-1:e>t?1:0}function _d(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 sh(e,t){let n=_d(e),r=_d(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 Dd(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 lh(e,t,n){let r=Dd(e,n),i=Dd(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 uh(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 vd(e,t){let n=t.optionOrder??new Map,i=[...new Set(uh(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(Ud),i}function Ud(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 ch(e,t,n){let r=vd(e,n),i=vd(t,n),o=Math.min(r.length,i.length);for(let a=0;a<o;a++){let s=Ud(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 sh(e,t);case"recordNumber":return lh(e,t,n.fieldType==="RECORD_NUMBER");case"option":return ch(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 Md(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):ah(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 Gd(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 ph(e){return e>=55296&&e<=56319}function dh(e){return e>=56320&&e<=57343}function Jo(e,t){return t>0&&t<e.length&&ph(e.charCodeAt(t-1))&&dh(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 gl(e,t){let n=Math.min(Math.max(0,t),e.length);return Jo(e,n)&&(n-=1),e.slice(0,n)}function fh(e,t){let n=Math.max(0,e.length-t);return Jo(e,n)&&(n+=1),e.slice(n)}function Eh(e,t,n){let r=kd(t,e.length),i=kd(n,e.length);return i<=r?"":(Jo(e,r)&&(r+=1),Jo(e,i)&&(i-=1),e.slice(r,Math.max(r,i)))}function Rh(e,t){let n=e.repeat(Math.ceil(t/e.length));return gl(n,t)}var mh=200,Vr=new Map;function yh(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 yl(e,t,n=!1){let r=yh(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>=mh){let s=Vr.keys().next().value;s!==void 0&&Vr.delete(s)}return Vr.set(i,a),a}function gh(e){if(e.includes("$`")||e.includes("$'"))throw new Error("ArgumentError: REGEXP_REPLACE replacement must not contain $` or $'.")}function hh(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 Ah(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 Sh(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 Ah(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=>Oh(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 Eh(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?"":gl(a,s)}case"RIGHT":{let a=o[0],s=Math.trunc(Number(o[1]));return Number.isNaN(s)||s<=0?"":fh(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 gl(a,s);let l=o[2]??" ";if(l==="")return a;let c=Rh(l,s-a.length);return e.func==="LPAD"?c+a:a+c}case"GREATEST":case"LEAST":return Md(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 yl(o[1],o[2]??"").test(o[0])?"1":"0";case"REGEXP_REPLACE":{gh(o[2]);let a=hh(o[4]),s=yl(o[1],o[3]??"",!0);return a===0?o[0].replace(s,o[2]):Sh(o[0],s,o[2],a)}case"REGEXP_SUBSTR":return yl(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 Ch(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(hl(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(Fd(o[0])):"";case"DATE_FORMAT":return Ih(o[0]??"",o[1]??"");case"DATEDIFF":return wh(o[0]??"",o[1]??"");case"DATE_ADD":return bh(o[0]??"",Number(o[1]??"0"),(o[2]??"DAY").toUpperCase());case"LAST_DAY":return Nh(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 hl(e){return Xo(e).getUTCDay()}function xd(e){let t=Xo(e),n=t.getUTCDay()||7;return t.setUTCDate(t.getUTCDate()+4-n),t}function Th(e){return xd(e).getUTCFullYear()}function Fd(e){let t=xd(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 Ih(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(hl(e)):"";case"%a":return l?["\u65E5","\u6708","\u706B","\u6C34","\u6728","\u91D1","\u571F"][hl(e)]:"";case"%v":return l?String(Fd(e)).padStart(2,"0"):"";case"%G":return l?String(Th(e)).padStart(4,"0"):"";default:return c}})}function wh(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 bh(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 Nh(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 Ch(e,t){if(/^-?\d+$/.test(t.trim()))return Ph(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 Ph(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 Oh(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 Lh(e,t,n,r,i,o);case"NULL_CHECK":return kh(e,t);case"LOGICAL":return xh(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 Lh(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=jd(e.left,t,n,i,o),s=e.left.type==="FIELD"?n?.(e.left):void 0,l=Dh(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"&&(Mh(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=Uh(t,p,i);return e==="IN"?u:!u}if(e==="LIKE"){let p=Al(n,r,o,void 0,l);return Yd(t,p)}if(e==="NOT_LIKE"){let p=Al(n,r,o,void 0,l);return!Yd(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=Al(n,r,o,s,l);return Ot(e,t,c,a)}var Kd=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function Dh(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 $(Kd.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 $(Kd.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 Bd=new Set(["CHECK_BOX","MULTI_SELECT"]),$d=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE"]),vh=new Set(["CREATOR","MODIFIER"]);function Uh(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(Bd.has(n)||$d.has(n)||vh.has(n))try{i=JSON.parse(e)}catch{return r()}else return r();return Bd.has(n)?!Array.isArray(i)||!i.every(o=>typeof o=="string")?r():i.length===0&&t.has("")?!0:i.some(o=>t.has(o)):$d.has(n)?!Array.isArray(i)||!i.every(Wd)?r():i.length===0&&t.has("")?!0:i.some(o=>t.has(o.code)):Wd(i)?t.has(i.code):r()}function Wd(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&typeof e.code=="string"}function Mh(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 kh(e,t){let n=jd(e.field,t);return e.not?n!=="":n===""}function xh(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 jd(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 Al(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 Fh(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 Hd(o.result,t,n,r,i);return e.elseResult!==null?Hd(e.elseResult,t,n,r,i):""}function Gd(e,t,n,r,i={}){for(let o of e.branches)if(le(o.condition,t,n,void 0,r,i))return Vd(o.result,t,n,r,i);return e.elseResult===null?null:Vd(e.elseResult,t,n,r,i)}function Vd(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 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"?String(me(e,t,i)):String(be(e,t,n,r,i))}function zd(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 Fh(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,Gh=200;function Yd(e,t){if(!Pp(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>=Gh&&Qo.clear(),Qo.set(t,n)}return n.test(e)}function tr(e){return Jd(e)}function qd(e){return Jd(e.flatMap(t=>t.rules.map(n=>n.condition)))}function Jd(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 Sl(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 Kh=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),Bh=new Set(["CHECK_BOX","MULTI_SELECT"]);function na(e,t=new Map,n={}){let r=e.values.map(i=>$h(e.fields,i,t,n));return Jr(r,100).map(i=>({app:e.appId,records:i}))}function $h(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){Sl(e.where);let t=cf(e);return{app:e.appId,query:Y(e.where),fields:["$id",...t],totalCount:!1}}function qr(e,t,n=new Map){let r=Wh(e.assignments,n);return Jr(t,100).map(i=>({app:e.appId,records:i.map(o=>({id:o,record:r}))}))}function Wh(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 ef(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 Tl(e){Sl(e.where);let t=new Set;for(let{value:n}of e.assignments)n.type==="ARITH"?tf(n,t):n.type==="SCALAR_ARITH"||n.type==="CONCAT_OP"?nr(n,t):n.type==="STRING_FUNC"?Il(n,t):n.type==="CASE_VALUE"&&nf(n.expr,t);return cf(e).forEach(n=>t.add(n)),{app:e.appId,query:Y(e.where),fields:["$id",...t],totalCount:!1}}function tf(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"?tf(e,t):e.type==="STRING_FUNC"&&Il(e,t)}function Il(e,t){for(let n of e.args)Vh(n,t)}function Vh(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"){Il(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"&&nf(e,t)}function ta(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&Hh(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 Hh(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?jr(e,t):nr(e,t)}function Xd(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 nf(e,t){for(let n of e.branches)ea(n.condition,t),Xd(n.result,t);e.elseResult!==null&&Xd(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 wl(e,t,n=new Map,r={}){let i=t.map(o=>{let a=Number(o.$id.value),s=rf(o),l={};for(let{field:c,value:p}of e.assignments)l[c]={value:bl(p,s,n.get(c),o,r)};return{id:a,record:l}});return Jr(i,100).map(o=>({app:e.appId,records:o}))}function bl(e,t,n,r,i={}){if(e.type==="ARITH")return String(r?Cl(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 Yh=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);function Nl(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=rf(o),c={};for(let{field:p,value:u}of e.assignments){let d=n.get(p);if(u.type==="SOURCE_FIELD"){if(Yh.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(Cl(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 rf(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,typeof n.value=="string"?n.value:JSON.stringify(n.value??"")]))}function Cl(e,t){let n=Qd(e.left,t),r=Qd(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 Qd(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 Cl(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 of(e){return Sl(e.where),{app:e.appId,query:Y(e.where),fields:["$id"],totalCount:!1}}function af(e,t){return Jr(t,100).map(n=>({app:e,ids:n}))}function sf(e){return Kh.has(e??"")}function jh(e){return Bh.has(e??"")}function zh(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 qh(e){return!e||/^\d{4}-\d{2}-\d{2}$/.test(e)?e:e.replace(/\//g,"-")}function lf(e,t){return sf(t)?e===""?[]:e.split(",").map(n=>({code:n.trim()})):jh(t)?e===""?[]:e.split(",").map(n=>n.trim()):t==="DATETIME"?zh(e):t==="DATE"?qh(e):e}function uf(e,t){return sf(t)?e.map(n=>({code:n})):e}function Zd(e,t,n,r){if(e.type==="ARRAY")return uf(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"?lf(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 cf(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 Zd(i.result,t,n,r);return e.elseResult!==null?Zd(e.elseResult,t,n,r):""}function _t(e,t){let n=Pl(e,t);if(!n.ok)throw new ae(n.message);return n.value}function Pl(e,t){try{return{ok:!0,value:Jh(e,t)}}catch(n){return{ok:!1,message:n instanceof Error?n.message:String(n)}}}function Jh(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 lf(e.value,t);case"NUMBER":return z(e);case"ARRAY":return uf(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 Ol=new Set(["CHECK_BOX","MULTI_SELECT"]),Xh=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function Xr(e){throw new Error(`ArgumentError: ${e}`)}function pf(e,t,n){let r=Qh(n.fieldType,e.field),i=Zh(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=Ol.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 Qh(e,t){return Ol.has(e)||Xh.has(e)?e:Xr(`APPLY multi-value target ${t} has unsupported type ${e}.`)}function Zh(e,t,n){if(!Array.isArray(e))return Xr(`APPLY snapshot for ${n} must be an array.`);let r=e.map((i,o)=>Ol.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 Dl(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)Ll(s.field,null,r),eA(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(bp(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)Ll(d.field,s.field,r,p),_l(d.value,s.field,r,p);u.selector.kind==="WHERE"&&_l(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),Ll(f,s.field,r,p)}else u.kind==="REMOVE"&&u.selector.kind==="WHERE"&&_l(u.selector.where,s.field,r,p)}return{targetTables:i,targetMultiValueFields:o,childrenByTable:a,fieldsByCode:r}}function eA(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 Ll(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 _l(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]=yf(i?.value);return n}function ff(e){let{statement:t,snapshot:n,fieldInfos:r}=e,i=e.metadata??Dt(t,r),o=Ml(n.$id?.value,"APPLY snapshot $id"),a=Dl(t);return o!==a&&J(`APPLY snapshot $id ${o} does not match requested $id ${a}.`),Rf(t,n,i,o,e.evaluationContext)}function Ef(e,t,n,r=Dt(e,n),i={}){let o=new Set;return t.map(a=>{let s=Ml(a.$id?.value,"APPLY snapshot $id");return o.has(s)&&J(`APPLY snapshots contain duplicate parentId ${s}.`),o.add(s),Rf(e,a,r,s,i)})}function Rf(e,t,n,r,i={}){let o=Ml(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(pf(u,t[u.field]?.value,C));continue}let d=n.childrenByTable.get(u.field),f=aA(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=vl(_,d,u.field,i);g.push({kind:"APPEND",addedRows:D.length}),y.push(...D);continue}if(_.kind==="REMOVE"){let D=rA(_,f,E,u.field,i);_.expectRows&&df(_.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=nA(_,f,E,u.field,i);_.expectRows&&df(_.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=sA(t),c={};for(let u of e.assignments){let d=n.fieldsByCode.get(u.field)?.fieldType;c[u.field]={value:bl(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 df(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 vl(e,t,n,r={}){return e.values.map(i=>({value:tA(e,i,t,n,r)}))}function tA(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?Ul(s):l.type==="CASE_VALUE"?nn(l.expr,{},s.fieldType,i):_t(l,s.fieldType)}}return a}function Ul(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 nA(e,t,n,r,i={}){return mf(e.selector,t,n,r,i)}function rA(e,t,n,r,i={}){return mf(e.selector,t,n,r,i)}function mf(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=iA(o);s!==null&&a.length===0&&J(`APPLY _rid ${s} does not exist in snapshot table ${r}.`);let l=oA(o);return l!==null&&a.length===0&&J(`APPLY _idx ${l} does not exist in snapshot table ${r}.`),a}function iA(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 oA(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 aA(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 Ml(e,t){let n=Number(e);return(!Number.isSafeInteger(n)||n<=0)&&J(`${t} must be a positive integer.`),n}function sA(e){let t={};for(let[n,r]of Object.entries(e))t[n]=yf(r?.value);return t}function yf(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),lA(i),t[i.table]={value:i.payloadRows};return{app:e.app,records:[{id:e.parentId,revision:e.revision,record:t}]}}function gf(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 lA(e){let t=kl(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(kl(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=kl(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)=>!xl(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 kl(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 xl(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)=>xl(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)&&xl(n[a],r[a]))}function hf(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 Af(e){let t=e.numberPrecision;if(t==null||typeof t!="object")throw new Error("SettingsError: numberPrecision is missing from app settings.");let n=hf(t.digits,"digits",1,30),r=hf(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 Sf(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 uA=new Set(["CHECK_BOX","MULTI_SELECT"]),cA=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=pA(e);if(i!==""&&!dA(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:fA(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}=Sf(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)&&cA.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 pA(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 dA(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=Pl(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(uA.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 fA(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 Fl(e,t,n){let r=new Map(n.map(i=>[i.code,i]));for(let i of e)if(i.mode==="update"){i.record??(i.record={});for(let o of t){if(!i.payload.has(o))continue;let a=i.payload.get(o),s=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 Gl(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&&Fl(e,r,i);let E;for(let m of e){m.record??(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??(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 Kl=["required","length","range","choice"];function Bl(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 $l(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 EA(e){return Bl(e).length>0}function RA(e){return e.fieldType==="NUMBER"||EA(e)}function da(e,t,n){return{subtable:e,subrow:t+1,subrowId:String(n.id??"")}}function Wl(e,t){let{topByCode:n,childrenByTable:r}=$l(t),i=RA;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 mA=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=$l(e),r=n.topLevel.filter(o=>o.fieldType!=="SUBTABLE"&&o.fieldType!=="FILE"&&!mA.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=yA(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:Tf(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={}),g.value[S.code]={value:Tf(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 Tf(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 yA(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;If(o,"dmlMaxRows"),If(a,"dmlMaxSubtableRows");for(let S of n)ua(S);let l=Ef(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 wf({plans:m,records:y,validations:g,guards:{revisionRequired:!0,parentRows:f,dmlMaxRows:o,subtableRows:R,dmlMaxSubtableRows:a,wouldExceed:E}})}function If(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function wf(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))wf(n,t);return Object.freeze(e)}var Vl=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)bf(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),bf(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 gA(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=>vl(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||Vl.has(u.fieldType)||(c[u.code]=s[u.code]??{value:Ul(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;Nf(r,"dmlMaxRows"),Nf(i,"dmlMaxSubtableRows");let a=e.metadata??Ea(t,n),s=gA(t,n,a,e.parentRowNumbers),l=n.filter(h=>h.fieldType==="SUBTABLE"||h.fieldType!=="FILE"&&h.writable!==!1&&!Vl.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 Cf({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 bf(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||Vl.has(i.fieldType))return Rt(`APPLY assignment target ${e} is not writable (${i.fieldType}).`)}function Nf(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 Cf(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))Cf(n,t);return Object.freeze(e)}async function Of(e){let{statement:t,matches:n,fieldInfos:r,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a=1}=e;Pf(i,"dmlMaxRows"),Pf(o,"dmlMaxSubtableRows"),IA(t,n);let s=n.filter(y=>y.targetId===void 0),l=n.filter(y=>y.targetId!==void 0),c=hA(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)&&Hl(`UPSERT APPLY resolves more than one source row to parent $id ${g}.`),d.add(g),y.snapshot||Hl(`UPSERT APPLY snapshot for parent $id ${g} is missing.`);let S=Number(y.snapshot.$id?.value);S!==g&&Hl(`UPSERT APPLY snapshot $id ${S} does not match target $id ${g}.`);let h=AA(t,y.sourceRowIndex,g),I=h.applyBlocks?.length?Dt(h,r):SA(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=TA(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 Yl({create:p,update:f,createBatches:p.batches,updateBatches:wA(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 hA(e,t){return{type:"INSERT",appId:e.appId,fields:[...e.fields],values:t.map(n=>e.values[n]),applyBlocks:e.onInsertApplyBlocks??[],validateOnly:!0}}function AA(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 SA(e){return{targetTables:new Map,targetMultiValueFields:new Map,childrenByTable:new Map,fieldsByCode:new Map(e.map(t=>[t.code,t]))}}function TA(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 Yl({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 IA(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 wA(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 Pf(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function Hl(e){throw new Error(`ArgumentError: ${e}`)}function Yl(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))Yl(n,t);return Object.freeze(e)}function oi(e){return ir("UPDATE",[Df(e)])}function jl(e){return ir("INSERT",[_f(e)])}function zl(e){return ir("UPSERT",[_f(e.create),Df(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 _f(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 Df(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:Lf(a?.operations,o.operations.map(s=>({...s,count:s.kind==="PATCH"?s.changedRows:s.kind==="APPEND"?s.addedRows:s.removedRows}))),changedCount:(a?.changedCount??0)+o.changedSubtableRows}),i||(i=o.deletedRows>0)}for(let o of 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:Lf(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 Lf(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=>bA(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 bA(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 vf(e,t,n){Vn("phase10c");let r=gf(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 Uf(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 Mf(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 NA=/^[A-Za-z_][A-Za-z0-9_]{0,63}$/;function CA(e){if(!NA.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 PA(e){let t=Object.create(null);for(let[n,r]of Object.entries(e??{})){let i=CA(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=PA(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 OA(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 Jl(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 OA(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 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 Ql(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 Xl=new Set(["DATETIME","CREATED_TIME","UPDATED_TIME"]),LA=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):Xl.has(e)?_o(t):!1}function DA(e,t){return!t||t.compareMode!=="string"?!1:e==="DATE"?t.fieldType==="DATE":e==="TIME"?t.fieldType==="TIME":Xl.has(e)?Xl.has(t.fieldType):!1}function Zl(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&&!LA.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(!DA(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 eu=cl;function si(e,t,n=eu){let r=e===0||t===0?0:e*t;return{leftRows:e,rightRows:t,outputRows:r,limit:n,allowed:r<=n}}function xf(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:pp(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)?Gf(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"}):Gf(n[0],e.field)}function ru(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 Kf(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 Bf(e,t){let n=new Set;hn(e,n);let i=(e===null?[]:Vf(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(kA(e,t)),fetchQueriesByAlias:new Map,...o})}function $f(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))||Wf(MA(e))!==e.allKlikes.length))}function vA(e,t){if(e===null)return Ff(null);let n=Object.freeze([...Te(e)]);if(n.length===0)return Ff(e);let r=UA(e,t,n);if(r!==null)return r;let i=Ia(e),o=[],a=new Set;for(let u of i){let d=Kf(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 UA(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),Wf(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=Kf(e,t);return i.relation==="function-leaf-exact"?i.owner:null}let r=ru(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 Ff(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 Wf(e){return[...e.matchAll(/\s(?:not\s+)?like\s/g)].length}function MA(e){let t=e.serverFunctionConsumptions[0];return t===void 0?"":e.fetchQueriesByAlias.get(t.targetAlias)??""}function kA(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}ru(i,t).relation==="unsafe"&&n.add("UNSAFE_RELATION");return}if(i.type==="LOGICAL"){if(i.op==="OR"){if(Yf(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 nu(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 nu(t,`field ${e.left.field} is not uniquely owned by the target`);return}case"NULL_CHECK":case"EXISTS":case"BOOLEAN":throw nu(t,"predicate shape is outside the Phase A serializer contract")}}function nu(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=ru(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 Vf([...n,...r]);if(Yf(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:Hf(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 Vf(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:Hf(i.relation,n.relation)}}return t}function Gf(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 Hf(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 Yf(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 iu(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 xA(e,t){return e.key.type==="FIELD_NAME"?t.get(e.key.name):void 0}function FA(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=xA(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"&&!FA(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 GA=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 KA(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(KA(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}GA.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 jf(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 ou(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 BA={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 zf(e,t){let n=BA[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 qf(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=>zf(s.fieldType,s.code)==="PROCESS")?(await n()).enable:!1;return[...r.filter(s=>{let l=zf(s.fieldType,s.code);return l==="RECORD"||l==="PROCESS"&&o}).map(s=>s.code),"$revision","$id"]}var ur=new WeakMap,su=new WeakMap,$A="\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 pu(e){if(su.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}}}),su.set(t,e),t}function ot(e){return su.get(e)??e}function aE(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=aE(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 Jf(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($A)}function WA(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=Bs(e);return r&&Ks(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 VA(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=HA(i,e,t,r.leftColumns,r.rightColumns),s=lu(a.left),l=lu(a.right);if(Qf(e,s,r.leftColumns),Qf(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 lu(e){return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field}function HA(e,t,n,r,i){let o=r??Object.keys(t[0]??{}),a=i??Object.keys(n[0]??{}),s=Xf(o),l=Xf(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=lu(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 Xf(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 Qf(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 YA(e,t,n,r,i,o={}){return t===null?e:e.filter(a=>le(t,a,n,r,i,o))}function sE(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 jA(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)=>qA(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&&sE(n)&&a.set("",[]);let s=[];for(let l of a.values()){let c=pu({...l[0]});for(let p of t)p.type==="ARITH_KEY"?c[Ru(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));lE(c,l,n,r,o.evaluationContext),s.push(c)}return s}function zA(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=Zf(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=pu({...d[0]}),R=new Map;for(let E of l.items)R.has(E.canonicalId)||R.set(E.canonicalId,Zf(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)}lE(f,d,n,r,i.evaluationContext),Ks(f,u),o.push(f)}}return o}function Zf(e,t){return t?t[e.directKey]??(e.unqualifiedBridgeKey===null?void 0:t[e.unqualifiedBridgeKey])??"":""}function lE(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=mu(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=EE(a.expr,t,r),c=Ke(s,e,void 0,p=>p.aggregateRef?cE(p.aggregateRef,r):void 0,i);ht(e,o,c,[uu(a.alias,o)])}}function uu(e,t){return e??`__ksql_case_column_${t}`}function cu(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(r=>cu(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=>cu(r,t))}function _a(e,t,n,r,i={}){let o=[];cu(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));aE(e).byLookupKey.set(s,l)}}function qA(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=uE(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 uE(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 JA(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?.(JA(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 cE(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 XA(e,t,n,r,i={}){return t===null?e:e.filter(o=>le(t,WA(o),n,void 0,r,i))}function QA(e,t,n,r,i,o={}){if(e.length===0)return e;let a=ZA(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 ZA(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(sS(t,a,o))}function du(e,t,n,r,i,o,a={}){return t.length===0?e:pE(e,t,n,r,i,o,a).rows.map(s=>s.row)}function pE(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:$(dE.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:nS(u,p,o,a)}))})),c=(p,u)=>eS(p,u,t,s);return l.sort(c),{rows:l,compare:c}}function eS(e,t,n,r){for(let i=0;i<n.length;i++){let o=tS(e.keys[i],t.keys[i],r[i]);if(o!==0)return n[i].direction==="ASC"?o:-o}return 0}function tS(e,t,n){return rt(e.s,t.s,n.semantics)}var dE=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function nS(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 fu(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 Eu(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]=pu(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=>aS(u,R))),f=p.get(d);f?f.push(u):p.set(d,[u])}for(let u of p.values()){let d=pE(u,l.orderBy,n,r,i,void 0,a),f=d.rows;if(so(l)){oS(l,c,d,o,a);continue}if(Ds(l)){iS(l,c,f,a);continue}if(!_s(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 rS(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 iS(e,t,n,r={}){let i=n.map(a=>rS(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 oS(e,t,n,r,i={}){let o=n.rows,a=e.arg.type==="WILDCARD"?null:uE(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 aS(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,uu(e.alias,n))??vt(t,uu(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 sS(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=iE(tE(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=pS(t),c=cS(t),p=t.some(R=>R.type==="WILDCARD"||R.type==="PARENT_WILDCARD"),u=p?null:lS(t,l,c),d=u??[];return p&&e.length===0?{rows:[],columns:uS(t,l,c)}:{rows:e.map((R,E)=>{let m={},y={scalarCache:n,resolveFieldType:r,resolveFieldSemantics:o,evaluationContext:s,wildcardKeys:Object.keys(iE(tE(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??Ru(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 lS(e,t,n){return e.map((r,i)=>fE(r,i,t,n))}function uS(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=fE(a,o,t,n);i.has(s)||(i.add(s),r.push(s))}return r}function fE(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??Ru(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 cS(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 pS(e){let t=new Map;for(let r of e){if(r.type!=="FIELD"||r.alias)continue;let i=eE(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=eE(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 eE(e){if(e.startsWith("_p."))return e;let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function tE(e){let t={};for(let[n,r]of Object.entries(e))n.startsWith("_p.")||(t[n]=r);return t}function Ru(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 dS(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=>nE(t.result))||e.elseResult!==null&&nE(e.elseResult):!1}function nE(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=>dS(t))}function fS(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"?mu(e,t,n):fi(e,t,n)}function fi(e,t,n){return e.type==="STRING_FUNC"?mu(e,t,n):e.type==="CASE_WHEN"?EE(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 rE(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 EE(e,t,n){return{...e,branches:e.branches.map(r=>({...r,result:rE(r.result,t,n)})),elseResult:e.elseResult===null?null:rE(e.elseResult,t,n)}}function mu(e,t,n){return{type:"STRING_FUNC",func:e.func,args:e.args.map(r=>fS(r,t,n))}}function iE(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 oE(e,t){if(e!==void 0)return t?e.flatMap(n=>[`${t}.${n}`,n]):[...e]}function au(e,t,n){if(!(e===void 0&&t===void 0&&n.length===0))return[...new Set([...e??[],...t??[],...Object.keys(n[0]??{})])]}function ES(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(_s(r)||so(r)&&(r.aggFunc==="COUNT"||r.aggFunc==="SUM"||r.aggFunc==="AVG"))n.set(r.alias,$("number"));else if((so(r)||Ds(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,$(dE.has(r.expr.func)?"number":"string"));return n}function yu(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=ES(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=au(oE(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=au(oE(R?.get(b),b),void 0,A);I=VA(I,A,_,{leftColumns:P,rightColumns:w}),P=au(P,w,I)}let M=e.residualWhere!==void 0?e.residualWhere:t.where;I=YA(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=zA(I,m,t.columns,u,{maxGeneratedRows:5e4,evaluationContext:S})}else(v.type==="PLAIN"||sE(t.columns))&&(I=jA(I,v.type==="PLAIN"?v.allItems:[],t.columns,u,v.type==="PLAIN"?y:void 0,{scalarCache:r,resolveFieldType:s,resolveFieldSemantics:l,evaluationContext:S}));Jf(t.columns,I,g);let C=_=>_.aggregateRef?cE(_.aggregateRef,u):p?.(_);return Jf(t.having,I,g),I=XA(I,t.having,c,C,S),I=Eu(I,t.columns,i,o,h,u,S),t.distinct&&(I=QA(I,t.columns,r,s,l,S)),I=du(I,t.orderBy,i,o,h,fu(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 RE(e,t){let n=[];for(let r of e){let i=gu(r.$id?.value),o=RS(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=gu(p?.value);l[`_p.${c}`]={value:u}}for(let[c,p]of Object.entries(s.value??{}))l[c]={value:gu(p?.value)};n.push(l)}}return n}function RS(e){return Array.isArray(e)?e.filter(t=>!!t&&typeof t=="object"):[]}function gu(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 mE(e){return["$id",...new Set([...e.topLevel.map(t=>t.code).filter(t=>t!=="$id"&&t!=="$revision"),...e.subtables.keys()])]}function yE(e,t){let n=gi(e);for(let[r,i]of Object.entries(t))n[r]=gi(i);return n}function gE(e){let t=[...e.preErrors.map(i=>hu(i)),...e.postImageErrors.map(i=>hu(i,i.$err_subtable!=="")),...e.checkErrors.map(i=>hu(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 hu(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 AE(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 Su(e){return AE(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=Su(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 hE(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 SE(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":hE(e,t,n,r);return;case"CREATE_TEMP_TABLE":e.query.type==="WITH"?hE(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":SE(e.query,`${t}.query`,n,r);return;case"VALIDATE":case"REORDER":{let i=Su(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=Su(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=AE(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 Tu(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 mS(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 yS(e){return{kind:e.kind,source:e.source,functionNames:e.functionNames,path:e.path,clientWhereEvaluation:!0,allowed:!1}}function gS(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 Au(e,t){let n=e.functionNames[0],r=Kn(n)?wt:un,i=gS(n,t);return{functionName:n,path:e.path,code:i.find(o=>o!==r)??r,reasonCodes:i}}async function TE(e,t){let n=[];SE(e,"statement",n);let r=[];for(let i of n){if(i.kind==="FORBIDDEN"){let p=yS(i);return r.push(p),{hasRelativeDate:i.functionNames.some(ie),hasServerOnlyWhereFunction:!0,nodes:r,allowed:!1,rejection:Au(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&&Tu(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&&mS(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:Au(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:Au(i,a)}}return{hasRelativeDate:n.some(i=>i.functionNames.some(ie)),hasServerOnlyWhereFunction:n.length>0,nodes:r,allowed:!0}}function Iu(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 wu(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=hS(e.where,t);if(!a.ok)return i(a.reasonCodes);if(!AS(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=TS(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=SS(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)])||!IS(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 hS(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 AS(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 SS(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 TS(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 IS(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 IE(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 wS(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 bS(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 NS(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=bS(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}`)),NS(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 CS=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),PS=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 wE(e,t,n){if(!CS.has(t??""))return e;if(e==="")return[];let r=e.split(/\r\n|\n/);if(r.some(i=>i===""))throw new Ti;return PS.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 bE(e){try{return new TextDecoder("utf-8",{fatal:!0}).decode(e)}catch{throw new V("JSON source is not valid UTF-8.")}}function NE(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 De("\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 ml(e){let t=e.codePointAt(0);return t>=65&&t<=90||t>=97&&t<=122||t===95||t===36||Xy(t)}function Pd(e){let t=e.codePointAt(0);return ml(e)||t>=48&&t<=57}function nr(e){let t=e.codePointAt(0);return t>=48&&t<=57}function Xy(e){return e>=12352&&e<=12543||e>=13312&&e<=40959||e>=63744&&e<=64255||e>=65281&&e<=65376}var Ld=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"}),Dd=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"}),eC=Object.freeze(Object.values(Wr).filter(e=>e!==void 0)),Qy=Object.freeze(["COUNT","SUM","AVG","MAX","MIN"]),Zy=new Set(Qy);function eh(e){return Zy.has(e)}var vd=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 _d(e){return Hr[e]!==void 0}var th=Object.freeze([...Ro]),nh=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),rh=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function ih(e){return nh.has(e)}function oh(e){return rh.has(e)}function ah(e){return Number.isInteger(e)&&e>=1&&e<=31}var tC=Object.freeze(Array.from(new Set([...Object.keys(yl),...Dd,...Object.keys(Wr),...Object.keys(vd),...Object.keys(Hr),...th,"IF"]))),sh=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 lh(e,t){return e.kind==="("||e.kind==="."||t.kind===")"||t.kind===","||t.kind==="."?!1:t.kind==="("?!sh.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"}},gl=["\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>Ld)throw new S(`batch exceeds ${Ld} 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!==Le||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&&lh(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:Le},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(gl,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 vd[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(gl,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(gl,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=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(Dd.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=uh(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(!eh(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(!ih(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(!oh(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(!ah(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(_d(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=mp(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(_d(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 uh(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 ch(e,t){return e<t?-1:e>t?1:0}function Md(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 ph(e,t){let n=Md(e),r=Md(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 Ud(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 dh(e,t,n){let r=Ud(e,n),i=Ud(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 fh(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 kd(e,t){let n=t.optionOrder??new Map,i=[...new Set(fh(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(xd),i}function xd(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 Eh(e,t,n){let r=kd(e,n),i=kd(t,n),o=Math.min(r.length,i.length);for(let a=0;a<o;a++){let s=xd(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 ph(e,t);case"recordNumber":return dh(e,t,n.fieldType==="RECORD_NUMBER");case"option":return Eh(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 Fd(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):ch(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 Bd(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 Rh(e){return e>=55296&&e<=56319}function mh(e){return e>=56320&&e<=57343}function Zo(e,t){return t>0&&t<e.length&&Rh(e.charCodeAt(t-1))&&mh(e.charCodeAt(t))}function Gd(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 Al(e,t){let n=Math.min(Math.max(0,t),e.length);return Zo(e,n)&&(n-=1),e.slice(0,n)}function gh(e,t){let n=Math.max(0,e.length-t);return Zo(e,n)&&(n+=1),e.slice(n)}function yh(e,t,n){let r=Gd(t,e.length),i=Gd(n,e.length);return i<=r?"":(Zo(e,r)&&(r+=1),Zo(e,i)&&(i-=1),e.slice(r,Math.max(r,i)))}function hh(e,t){let n=e.repeat(Math.ceil(t/e.length));return Al(n,t)}var Ah=200,Yr=new Map;function Sh(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 hl(e,t,n=!1){let r=Sh(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>=Ah){let s=Yr.keys().next().value;s!==void 0&&Yr.delete(s)}return Yr.set(i,a),a}function Th(e){if(e.includes("$`")||e.includes("$'"))throw new Error("ArgumentError: REGEXP_REPLACE replacement must not contain $` or $'.")}function Ih(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 wh(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 bh(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 wh(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=>vh(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 yh(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?"":Al(a,s)}case"RIGHT":{let a=o[0],s=Math.trunc(Number(o[1]));return Number.isNaN(s)||s<=0?"":gh(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 Al(a,s);let l=o[2]??" ";if(l==="")return a;let p=hh(l,s-a.length);return e.func==="LPAD"?p+a:a+p}case"GREATEST":case"LEAST":return Fd(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 hl(o[1],o[2]??"").test(o[0])?"1":"0";case"REGEXP_REPLACE":{Th(o[2]);let a=Ih(o[4]),s=hl(o[1],o[3]??"",!0);return a===0?o[0].replace(s,o[2]):bh(o[0],s,o[2],a)}case"REGEXP_SUBSTR":return hl(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 _h(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(Sl(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($d(o[0])):"";case"DATE_FORMAT":return Ch(o[0]??"",o[1]??"");case"DATEDIFF":return Ph(o[0]??"",o[1]??"");case"DATE_ADD":return Oh(o[0]??"",Number(o[1]??"0"),(o[2]??"DAY").toUpperCase());case"LAST_DAY":return Lh(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 Sl(e){return ea(e).getUTCDay()}function Kd(e){let t=ea(e),n=t.getUTCDay()||7;return t.setUTCDate(t.getUTCDate()+4-n),t}function Nh(e){return Kd(e).getUTCFullYear()}function $d(e){let t=Kd(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 Ch(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(Sl(e)):"";case"%a":return l?["\u65E5","\u6708","\u706B","\u6C34","\u6728","\u91D1","\u571F"][Sl(e)]:"";case"%v":return l?String($d(e)).padStart(2,"0"):"";case"%G":return l?String(Nh(e)).padStart(4,"0"):"";default:return p}})}function Ph(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 Oh(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 Lh(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 _h(e,t){if(/^-?\d+$/.test(t.trim()))return Dh(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 Dh(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 vh(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 Mh(e,t,n,r,i,o);case"NULL_CHECK":return Kh(e,t);case"LOGICAL":return $h(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 Mh(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=Jd(e.left,t,n,i,o),s=e.left.type==="FIELD"?n?.(e.left):void 0,l=kh(e.left,s,i);return Uh(e.op,a,e.right,t,s,n,l,i,o)}function Uh(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"&&(Gh(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=Fh(t,c,i);return e==="IN"?u:!u}if(e==="LIKE"){let c=Tl(n,r,o,void 0,l);return qd(t,c)}if(e==="NOT_LIKE"){let c=Tl(n,r,o,void 0,l);return!qd(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=Tl(n,r,o,s,l);return Ot(e,t,p,a)}var Vd=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function kh(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(Vd.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(Vd.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 Wd=new Set(["CHECK_BOX","MULTI_SELECT"]),Hd=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE"]),xh=new Set(["CREATOR","MODIFIER"]);function Fh(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(Wd.has(n)||Hd.has(n)||xh.has(n))try{i=JSON.parse(e)}catch{return r()}else return r();return Wd.has(n)?!Array.isArray(i)||!i.every(o=>typeof o=="string")?r():i.length===0&&t.has("")?!0:i.some(o=>t.has(o)):Hd.has(n)?!Array.isArray(i)||!i.every(Yd)?r():i.length===0&&t.has("")?!0:i.some(o=>t.has(o.code)):Yd(i)?t.has(i.code):r()}function Yd(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&typeof e.code=="string"}function Gh(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 Kh(e,t){let n=Jd(e.field,t);return e.not?n!=="":n===""}function $h(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 Jd(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 Tl(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 Bh(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 zd(o.result,t,n,r,i);return e.elseResult!==null?zd(e.elseResult,t,n,r,i):""}function Bd(e,t,n,r,i={}){for(let o of e.branches)if(se(o.condition,t,n,void 0,r,i))return jd(o.result,t,n,r,i);return e.elseResult===null?null:jd(e.elseResult,t,n,r,i)}function jd(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 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"?String(me(e,t,i)):String(be(e,t,n,r,i))}function Xd(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 Bh(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,Vh=200;function qd(e,t){if(!_p(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>=Vh&&ta.clear(),ta.set(t,n)}return n.test(e)}function rr(e){return Zd(e)}function Qd(e){return Zd(e.flatMap(t=>t.rules.map(n=>n.condition)))}function Zd(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 Il(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 Wh=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),Hh=new Set(["CHECK_BOX","MULTI_SELECT"]);function oa(e,t=new Map,n={}){let r=e.values.map(i=>Yh(e.fields,i,t,n));return Qr(r,100).map(i=>({app:e.appId,records:i}))}function Yh(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){Il(e.where);let t=ff(e);return{app:e.appId,query:j(e.where),fields:["$id",...t],totalCount:!1}}function Xr(e,t,n=new Map){let r=jh(e.assignments,n);return Qr(t,100).map(i=>({app:e.appId,records:i.map(o=>({id:o,record:r}))}))}function jh(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 rf(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 wl(e){Il(e.where);let t=new Set;for(let{value:n}of e.assignments)n.type==="ARITH"?of(n,t):n.type==="SCALAR_ARITH"||n.type==="CONCAT_OP"?ir(n,t):n.type==="STRING_FUNC"?bl(n,t):n.type==="CASE_VALUE"&&af(n.expr,t);return ff(e).forEach(n=>t.add(n)),{app:e.appId,query:j(e.where),fields:["$id",...t],totalCount:!1}}function of(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"?of(e,t):e.type==="STRING_FUNC"&&bl(e,t)}function bl(e,t){for(let n of e.args)zh(n,t)}function zh(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"){bl(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"&&af(e,t)}function ia(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&qh(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 qh(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?qr(e,t):ir(e,t)}function ef(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 af(e,t){for(let n of e.branches)ra(n.condition,t),ef(n.result,t);e.elseResult!==null&&ef(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 Nl(e,t,n=new Map,r={}){let i=t.map(o=>{let a=Number(o.$id.value),s=sf(o),l={};for(let{field:p,value:c}of e.assignments)l[p]={value:Cl(c,s,n.get(p),o,r)};return{id:a,record:l}});return Qr(i,100).map(o=>({app:e.appId,records:o}))}function Cl(e,t,n,r,i={}){if(e.type==="ARITH")return String(r?Ol(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 Jh=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);function Pl(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=sf(o),p={};for(let{field:c,value:u}of e.assignments){let d=n.get(c);if(u.type==="SOURCE_FIELD"){if(Jh.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(Ol(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 sf(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,typeof n.value=="string"?n.value:JSON.stringify(n.value??"")]))}function Ol(e,t){let n=tf(e.left,t),r=tf(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 tf(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 Ol(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 lf(e){return Il(e.where),{app:e.appId,query:j(e.where),fields:["$id"],totalCount:!1}}function uf(e,t){return Qr(t,100).map(n=>({app:e,ids:n}))}function cf(e){return Wh.has(e??"")}function Xh(e){return Hh.has(e??"")}function Qh(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 Zh(e){return!e||/^\d{4}-\d{2}-\d{2}$/.test(e)?e:e.replace(/\//g,"-")}function pf(e,t){return cf(t)?e===""?[]:e.split(",").map(n=>({code:n.trim()})):Xh(t)?e===""?[]:e.split(",").map(n=>n.trim()):t==="DATETIME"?Qh(e):t==="DATE"?Zh(e):e}function df(e,t){return cf(t)?e.map(n=>({code:n})):e}function nf(e,t,n,r){if(e.type==="ARRAY")return df(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"?pf(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 ff(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 nf(i.result,t,n,r);return e.elseResult!==null?nf(e.elseResult,t,n,r):""}function _t(e,t){let n=Ll(e,t);if(!n.ok)throw new ae(n.message);return n.value}function Ll(e,t){try{return{ok:!0,value:eA(e,t)}}catch(n){return{ok:!1,message:n instanceof Error?n.message:String(n)}}}function eA(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 pf(e.value,t);case"NUMBER":return z(e);case"ARRAY":return df(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 _l=new Set(["CHECK_BOX","MULTI_SELECT"]),tA=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function Zr(e){throw new Error(`ArgumentError: ${e}`)}function Ef(e,t,n){let r=nA(n.fieldType,e.field),i=rA(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=_l.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 nA(e,t){return _l.has(e)||tA.has(e)?e:Zr(`APPLY multi-value target ${t} has unsupported type ${e}.`)}function rA(e,t,n){if(!Array.isArray(e))return Zr(`APPLY snapshot for ${n} must be an array.`);let r=e.map((i,o)=>_l.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 Ml(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)Dl(s.field,null,r),iA(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(Pp(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)Dl(d.field,s.field,r,c),vl(d.value,s.field,r,c);u.selector.kind==="WHERE"&&vl(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),Dl(f,s.field,r,c)}else u.kind==="REMOVE"&&u.selector.kind==="WHERE"&&vl(u.selector.where,s.field,r,c)}return{targetTables:i,targetMultiValueFields:o,childrenByTable:a,fieldsByCode:r}}function iA(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 Dl(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 vl(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]=Af(i?.value);return n}function mf(e){let{statement:t,snapshot:n,fieldInfos:r}=e,i=e.metadata??Dt(t,r),o=xl(n.$id?.value,"APPLY snapshot $id"),a=Ml(t);return o!==a&&J(`APPLY snapshot $id ${o} does not match requested $id ${a}.`),yf(t,n,i,o,e.evaluationContext)}function gf(e,t,n,r=Dt(e,n),i={}){let o=new Set;return t.map(a=>{let s=xl(a.$id?.value,"APPLY snapshot $id");return o.has(s)&&J(`APPLY snapshots contain duplicate parentId ${s}.`),o.add(s),yf(e,a,r,s,i)})}function yf(e,t,n,r,i={}){let o=xl(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(Ef(u,t[u.field]?.value,N));continue}let d=n.childrenByTable.get(u.field),f=cA(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=Ul(_,d,u.field,i);y.push({kind:"APPEND",addedRows:D.length}),g.push(...D);continue}if(_.kind==="REMOVE"){let D=sA(_,f,E,u.field,i);_.expectRows&&Rf(_.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=aA(_,f,E,u.field,i);_.expectRows&&Rf(_.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=pA(t),p={};for(let u of e.assignments){let d=n.fieldsByCode.get(u.field)?.fieldType;p[u.field]={value:Cl(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 Rf(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 Ul(e,t,n,r={}){return e.values.map(i=>({value:oA(e,i,t,n,r)}))}function oA(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?kl(s):l.type==="CASE_VALUE"?nn(l.expr,{},s.fieldType,i):_t(l,s.fieldType)}}return a}function kl(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 aA(e,t,n,r,i={}){return hf(e.selector,t,n,r,i)}function sA(e,t,n,r,i={}){return hf(e.selector,t,n,r,i)}function hf(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=lA(o);s!==null&&a.length===0&&J(`APPLY _rid ${s} does not exist in snapshot table ${r}.`);let l=uA(o);return l!==null&&a.length===0&&J(`APPLY _idx ${l} does not exist in snapshot table ${r}.`),a}function lA(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 uA(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 cA(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 xl(e,t){let n=Number(e);return(!Number.isSafeInteger(n)||n<=0)&&J(`${t} must be a positive integer.`),n}function pA(e){let t={};for(let[n,r]of Object.entries(e))t[n]=Af(r?.value);return t}function Af(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),dA(i),t[i.table]={value:i.payloadRows};return{app:e.app,records:[{id:e.parentId,revision:e.revision,record:t}]}}function Sf(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 dA(e){let t=Fl(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(Fl(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=Fl(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)=>!Gl(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 Fl(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 Gl(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)=>Gl(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)&&Gl(n[a],r[a]))}function Tf(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 If(e){let t=e.numberPrecision;if(t==null||typeof t!="object")throw new Error("SettingsError: numberPrecision is missing from app settings.");let n=Tf(t.digits,"digits",1,30),r=Tf(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 wf(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 fA=new Set(["CHECK_BOX","MULTI_SELECT"]),EA=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=RA(e);if(i!==""&&!mA(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:gA(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}=wf(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)&&EA.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 RA(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 mA(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=Ll(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(fA.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 gA(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 Kl(e,t,n){let r=new Map(n.map(i=>[i.code,i]));for(let i of e)if(i.mode==="update"){i.record??(i.record={});for(let o of t){if(!i.payload.has(o))continue;let a=i.payload.get(o),s=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 $l(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&&Kl(e,r,i);let E;for(let m of e){m.record??(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??(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 Bl=["required","length","range","choice"];function Vl(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 yA(e){return Vl(e).length>0}function hA(e){return e.fieldType==="NUMBER"||yA(e)}function Ra(e,t,n){return{subtable:e,subrow:t+1,subrowId:String(n.id??"")}}function Hl(e,t){let{topByCode:n,childrenByTable:r}=Wl(t),i=hA;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 AA=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=Wl(e),r=n.topLevel.filter(o=>o.fieldType!=="SUBTABLE"&&o.fieldType!=="FILE"&&!AA.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=SA(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:bf(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={}),y.value[T.code]={value:bf(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 bf(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 SA(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;Nf(o,"dmlMaxRows"),Nf(a,"dmlMaxSubtableRows");for(let T of n)da(T);let l=gf(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 Cf({plans:m,records:g,validations:y,guards:{revisionRequired:!0,parentRows:f,dmlMaxRows:o,subtableRows:R,dmlMaxSubtableRows:a,wouldExceed:E}})}function Nf(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function Cf(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))Cf(n,t);return Object.freeze(e)}var Yl=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)Pf(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),Pf(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 TA(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=>Ul(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||Yl.has(u.fieldType)||(p[u.code]=s[u.code]??{value:kl(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;Of(r,"dmlMaxRows"),Of(i,"dmlMaxSubtableRows");let a=e.metadata??ga(t,n),s=TA(t,n,a,e.parentRowNumbers),l=n.filter(h=>h.fieldType==="SUBTABLE"||h.fieldType!=="FILE"&&h.writable!==!1&&!Yl.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 Lf({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 Pf(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||Yl.has(i.fieldType))return mt(`APPLY assignment target ${e} is not writable (${i.fieldType}).`)}function Of(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 Lf(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))Lf(n,t);return Object.freeze(e)}async function Df(e){let{statement:t,matches:n,fieldInfos:r,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a=1}=e;_f(i,"dmlMaxRows"),_f(o,"dmlMaxSubtableRows"),CA(t,n);let s=n.filter(g=>g.targetId===void 0),l=n.filter(g=>g.targetId!==void 0),p=IA(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)&&jl(`UPSERT APPLY resolves more than one source row to parent $id ${y}.`),d.add(y),g.snapshot||jl(`UPSERT APPLY snapshot for parent $id ${y} is missing.`);let T=Number(g.snapshot.$id?.value);T!==y&&jl(`UPSERT APPLY snapshot $id ${T} does not match target $id ${y}.`);let h=wA(t,g.sourceRowIndex,y),I=h.applyBlocks?.length?Dt(h,r):bA(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=NA(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 zl({create:c,update:f,createBatches:c.batches,updateBatches:PA(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 IA(e,t){return{type:"INSERT",appId:e.appId,fields:[...e.fields],values:t.map(n=>e.values[n]),applyBlocks:e.onInsertApplyBlocks??[],validateOnly:!0}}function wA(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 bA(e){return{targetTables:new Map,targetMultiValueFields:new Map,childrenByTable:new Map,fieldsByCode:new Map(e.map(t=>[t.code,t]))}}function NA(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 zl({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 CA(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 PA(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 _f(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function jl(e){throw new Error(`ArgumentError: ${e}`)}function zl(e,t=new Set){if(e===null||typeof e!="object"||t.has(e))return e;t.add(e);for(let n of Object.values(e))zl(n,t);return Object.freeze(e)}function si(e){return ar("UPDATE",[Uf(e)])}function ql(e){return ar("INSERT",[Mf(e)])}function Jl(e){return ar("UPSERT",[Mf(e.create),Uf(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 Mf(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 Uf(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:vf(a?.operations,o.operations.map(s=>({...s,count:s.kind==="PATCH"?s.changedRows:s.kind==="APPEND"?s.addedRows:s.removedRows}))),changedCount:(a?.changedCount??0)+o.changedSubtableRows}),i||(i=o.deletedRows>0)}for(let o of 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:vf(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 vf(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=>OA(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 OA(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 kf(e,t,n){Yn("phase10c");let r=Sf(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 xf(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 Ff(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 LA=/^[A-Za-z_][A-Za-z0-9_]{0,63}$/;function _A(e){if(!LA.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 DA(e){let t=Object.create(null);for(let[n,r]of Object.entries(e??{})){let i=_A(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 Xl(e,t){let n=DA(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 vA(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 Ql(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 vA(i)?!0:Object.values(i).some(n)};return n(e)}function Gf(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 eu(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 Zl=new Set(["DATETIME","CREATED_TIME","UPDATED_TIME"]),MA=new Set(["SINGLE_LINE_TEXT","LINK","NUMBER","CALC","DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]);function UA(e,t){return e==="DATE"?xr(t):e==="TIME"?vo(t):Zl.has(e)?Mo(t):!1}function kA(e,t){return!t||t.compareMode!=="string"?!1:e==="DATE"?t.fieldType==="DATE":e==="TIME"?t.fieldType==="TIME":Zl.has(e)?Zl.has(t.fieldType):!1}function tu(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&&!MA.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(!kA(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=>!UA(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 nu=dl;function ui(e,t,n=nu){let r=e===0||t===0?0:e*t;return{leftRows:e,rightRows:t,outputRows:r,limit:n,allowed:r<=n}}function Kf(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:Ep(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)?Bf(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"}):Bf(n[0],e.field)}function ou(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 Vf(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 Wf(e,t){let n=new Set;hn(e,n);let i=(e===null?[]:jf(sr(e,t))).map(s=>Object.freeze({targetAlias:s.owner.alias,appId:s.owner.appId,predicate:s.predicate,relation:s.relation})),o=xA(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(KA(e,t)),fetchQueriesByAlias:new Map,...o})}function Hf(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))||Yf(GA(e))!==e.allKlikes.length))}function xA(e,t){if(e===null)return $f(null);let n=Object.freeze([...Te(e)]);if(n.length===0)return $f(e);let r=FA(e,t,n);if(r!==null)return r;let i=Na(e),o=[],a=new Set;for(let u of i){let d=Vf(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 FA(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),Yf(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=Vf(e,t);return i.relation==="function-leaf-exact"?i.owner:null}let r=ou(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 $f(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 Yf(e){return[...e.matchAll(/\s(?:not\s+)?like\s/g)].length}function GA(e){let t=e.serverFunctionConsumptions[0];return t===void 0?"":e.fetchQueriesByAlias.get(t.targetAlias)??""}function KA(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}ou(i,t).relation==="unsafe"&&n.add("UNSAFE_RELATION");return}if(i.type==="LOGICAL"){if(i.op==="OR"){if(qf(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 iu(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 iu(t,`field ${e.left.field} is not uniquely owned by the target`);return}case"NULL_CHECK":case"EXISTS":case"BOOLEAN":throw iu(t,"predicate shape is outside the Phase A serializer contract")}}function iu(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=ou(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 jf([...n,...r]);if(qf(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:zf(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 jf(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:zf(i.relation,n.relation)}}return t}function Bf(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 zf(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 qf(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 au(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 $A(e,t){return e.key.type==="FIELD_NAME"?t.get(e.key.name):void 0}function BA(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=$A(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"&&!BA(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 VA=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 WA(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(WA(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}VA.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 Jf(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 su(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 HA={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 Xf(e,t){let n=HA[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 Qf(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=>Xf(s.fieldType,s.code)==="PROCESS")?(await n()).enable:!1;return[...r.filter(s=>{let l=Xf(s.fieldType,s.code);return l==="RECORD"||l==="PROCESS"&&o}).map(s=>s.code),"$revision","$id"]}var pr=new WeakMap,uu=new WeakMap,YA="\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 fu(e){if(uu.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}}}),uu.set(t,e),t}function ot(e){return uu.get(e)??e}function uE(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=uE(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 Zf(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(YA)}function jA(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=Vs(e);return r&&Bs(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 zA(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=qA(i,e,t,r.leftColumns,r.rightColumns),s=cu(a.left),l=cu(a.right);if(tE(e,s,r.leftColumns),tE(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 cu(e){return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field}function qA(e,t,n,r,i){let o=r??Object.keys(t[0]??{}),a=i??Object.keys(n[0]??{}),s=eE(o),l=eE(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=cu(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 eE(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 tE(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 JA(e,t,n,r,i,o={}){return t===null?e:e.filter(a=>se(t,a,n,r,i,o))}function cE(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 XA(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)=>ZA(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&&cE(n)&&a.set("",[]);let s=[];for(let l of a.values()){let p=fu({...l[0]});for(let c of t)c.type==="ARITH_KEY"?p[gu(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));pE(p,l,n,r,o.evaluationContext),s.push(p)}return s}function QA(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=nE(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=fu({...d[0]}),R=new Map;for(let E of l.items)R.has(E.canonicalId)||R.set(E.canonicalId,nE(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)}pE(f,d,n,r,i.evaluationContext),Bs(f,u),o.push(f)}}return o}function nE(e,t){return t?t[e.directKey]??(e.unqualifiedBridgeKey===null?void 0:t[e.unqualifiedBridgeKey])??"":""}function pE(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=yu(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=gE(a.expr,t,r),p=Ke(s,e,void 0,c=>c.aggregateRef?fE(c.aggregateRef,r):void 0,i);At(e,o,p,[pu(a.alias,o)])}}function pu(e,t){return e??`__ksql_case_column_${t}`}function du(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(r=>du(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=>du(r,t))}function Ma(e,t,n,r,i={}){let o=[];du(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));uE(e).byLookupKey.set(s,l)}}function ZA(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=dE(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 dE(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 eS(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?.(eS(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 fE(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 tS(e,t,n,r,i={}){return t===null?e:e.filter(o=>se(t,jA(o),n,void 0,r,i))}function nS(e,t,n,r,i,o={}){if(e.length===0)return e;let a=rS(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 rS(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(pS(t,a,o))}function Eu(e,t,n,r,i,o,a={}){return t.length===0?e:EE(e,t,n,r,i,o,a).rows.map(s=>s.row)}function EE(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(RE.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:aS(u,c,o,a)}))})),p=(c,u)=>iS(c,u,t,s);return l.sort(p),{rows:l,compare:p}}function iS(e,t,n,r){for(let i=0;i<n.length;i++){let o=oS(e.keys[i],t.keys[i],r[i]);if(o!==0)return n[i].direction==="ASC"?o:-o}return 0}function oS(e,t,n){return rt(e.s,t.s,n.semantics)}var RE=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function aS(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 Ru(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 mu(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]=fu(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=>cS(u,R))),f=c.get(d);f?f.push(u):c.set(d,[u])}for(let u of c.values()){let d=EE(u,l.orderBy,n,r,i,void 0,a),f=d.rows;if(co(l)){uS(l,p,d,o,a);continue}if(Ms(l)){lS(l,p,f,a);continue}if(!vs(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 sS(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 lS(e,t,n,r={}){let i=n.map(a=>sS(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 uS(e,t,n,r,i={}){let o=n.rows,a=e.arg.type==="WILDCARD"?null:dE(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 cS(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,pu(e.alias,n))??vt(t,pu(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 pS(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=sE(iE(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=RS(t),p=ES(t),c=t.some(R=>R.type==="WILDCARD"||R.type==="PARENT_WILDCARD"),u=c?null:dS(t,l,p),d=u??[];return c&&e.length===0?{rows:[],columns:fS(t,l,p)}:{rows:e.map((R,E)=>{let m={},g={scalarCache:n,resolveFieldType:r,resolveFieldSemantics:o,evaluationContext:s,wildcardKeys:Object.keys(sE(iE(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??gu(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 dS(e,t,n){return e.map((r,i)=>mE(r,i,t,n))}function fS(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=mE(a,o,t,n);i.has(s)||(i.add(s),r.push(s))}return r}function mE(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??gu(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 ES(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 RS(e){let t=new Map;for(let r of e){if(r.type!=="FIELD"||r.alias)continue;let i=rE(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=rE(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 rE(e){if(e.startsWith("_p."))return e;let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function iE(e){let t={};for(let[n,r]of Object.entries(e))n.startsWith("_p.")||(t[n]=r);return t}function gu(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 mS(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=>oE(t.result))||e.elseResult!==null&&oE(e.elseResult):!1}function oE(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=>mS(t))}function gS(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"?yu(e,t,n):Ri(e,t,n)}function Ri(e,t,n){return e.type==="STRING_FUNC"?yu(e,t,n):e.type==="CASE_WHEN"?gE(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 aE(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 gE(e,t,n){return{...e,branches:e.branches.map(r=>({...r,result:aE(r.result,t,n)})),elseResult:e.elseResult===null?null:aE(e.elseResult,t,n)}}function yu(e,t,n){return{type:"STRING_FUNC",func:e.func,args:e.args.map(r=>gS(r,t,n))}}function sE(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 lE(e,t){if(e!==void 0)return t?e.flatMap(n=>[`${t}.${n}`,n]):[...e]}function lu(e,t,n){if(!(e===void 0&&t===void 0&&n.length===0))return[...new Set([...e??[],...t??[],...Object.keys(n[0]??{})])]}function yS(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(vs(r)||co(r)&&(r.aggFunc==="COUNT"||r.aggFunc==="SUM"||r.aggFunc==="AVG"))n.set(r.alias,B("number"));else if((co(r)||Ms(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(RE.has(r.expr.func)?"number":"string"));return n}function hu(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=yS(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=lu(lE(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=lu(lE(R?.get(b),b),void 0,A);I=zA(I,A,_,{leftColumns:P,rightColumns:w}),P=lu(P,w,I)}let U=e.residualWhere!==void 0?e.residualWhere:t.where;I=JA(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=QA(I,m,t.columns,u,{maxGeneratedRows:5e4,evaluationContext:T})}else(M.type==="PLAIN"||cE(t.columns))&&(I=XA(I,M.type==="PLAIN"?M.allItems:[],t.columns,u,M.type==="PLAIN"?g:void 0,{scalarCache:r,resolveFieldType:s,resolveFieldSemantics:l,evaluationContext:T}));Zf(t.columns,I,y);let N=_=>_.aggregateRef?fE(_.aggregateRef,u):c?.(_);return Zf(t.having,I,y),I=tS(I,t.having,p,N,T),I=mu(I,t.columns,i,o,h,u,T),t.distinct&&(I=nS(I,t.columns,r,s,l,T)),I=Eu(I,t.orderBy,i,o,h,Ru(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 yE(e,t){let n=[];for(let r of e){let i=Au(r.$id?.value),o=hS(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=Au(c?.value);l[`_p.${p}`]={value:u}}for(let[p,c]of Object.entries(s.value??{}))l[p]={value:Au(c?.value)};n.push(l)}}return n}function hS(e){return Array.isArray(e)?e.filter(t=>!!t&&typeof t=="object"):[]}function Au(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 AS(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,...AS(e,t)}}var SS=/^(\s*)--\s*@ksql\s+([^:\s]+)\s*:\s*(.*)$/i;function Su(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=wS(e,o),l=e.slice(o,s.contentEnd);if(!/^\s*--/.test(l))break;a=s.next;let p=SS.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;TS(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),IS(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 TS(e){return e==="name"||e==="depends_on"||e==="timeout"||e==="dialect"}function IS(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 wS(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 hE(e){return["$id",...new Set([...e.topLevel.map(t=>t.code).filter(t=>t!=="$id"&&t!=="$revision"),...e.subtables.keys()])]}function AE(e,t){let n=Ai(e);for(let[r,i]of Object.entries(t))n[r]=Ai(i);return n}function SE(e){let t=[...e.preErrors.map(i=>Tu(i)),...e.postImageErrors.map(i=>Tu(i,i.$err_subtable!=="")),...e.checkErrors.map(i=>Tu(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 Tu(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 IE(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 wu(e){return IE(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=wu(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 TE(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 wE(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":TE(e,t,n,r);return;case"CREATE_TEMP_TABLE":e.query.type==="WITH"?TE(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":wE(e.query,`${t}.query`,n,r);return;case"VALIDATE":case"REORDER":{let i=wu(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=wu(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=IE(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 bu(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 bS(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 NS(e){return{kind:e.kind,source:e.source,functionNames:e.functionNames,path:e.path,clientWhereEvaluation:!0,allowed:!1}}function CS(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 Iu(e,t){let n=e.functionNames[0],r=Bn(n)?bt:un,i=CS(n,t);return{functionName:n,path:e.path,code:i.find(o=>o!==r)??r,reasonCodes:i}}async function bE(e,t){let n=[];wE(e,"statement",n);let r=[];for(let i of n){if(i.kind==="FORBIDDEN"){let c=NS(i);return r.push(c),{hasRelativeDate:i.functionNames.some(ie),hasServerOnlyWhereFunction:!0,nodes:r,allowed:!1,rejection:Iu(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&&bu(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&&bS(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:Iu(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:Iu(i,a)}}return{hasRelativeDate:n.some(i=>i.functionNames.some(ie)),hasServerOnlyWhereFunction:n.length>0,nodes:r,allowed:!0}}function Nu(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 Cu(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=PS(e.where,t);if(!a.ok)return i(a.reasonCodes);if(!OS(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=_S(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=LS(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)])||!DS(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 PS(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 OS(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 LS(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 _S(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 DS(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 NE(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 vS(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 MS(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 US(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=MS(vS(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}`)),US(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 kS=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),xS=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 CE(e,t,n){if(!kS.has(t??""))return e;if(e==="")return[];let r=e.split(/\r\n|\n/);if(r.some(i=>i===""))throw new wi;return xS.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 PE(e){try{return new TextDecoder("utf-8",{fatal:!0}).decode(e)}catch{throw new W("JSON source is not valid UTF-8.")}}function OE(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=NE(bE(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 OS=new Set(["CHECK_BOX","MULTI_SELECT"]),CE=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 LS(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."),LS(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."),!OS.has(t.fieldType)&&!CE.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."),CE.has(t.fieldType)?JSON.stringify(r.map(i=>({code:i}))):JSON.stringify(r)}function bu(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 Nu(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]=wE(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 PE(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 OE(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 DS=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 Ou(e,t){if(t!=null&&e.invalidParentRows.size>t)throw new Error(`RejectLimitExceededError: rejected parents (${e.invalidParentRows.size}) exceed REJECT LIMIT (${t}).`)}function vE(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)LE(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)LE(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=>US(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 US(e,t,n,r,i,o,a,s){let l=[],c={};for(let d of t)e.top.has(d.field)&&Pu(e.top.get(d.field),r.get(d.field),o,c,d.field,l,Cu(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)||_E(d,o,p,l,Cu(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=Cu(e,a,S,d.subtableCode,E.childRowNumber,E.sourceRowNumber??e.markerRowNumber);E.values.has(S)?Pu(E.values.get(S),h,o,y,S,l,I):_E(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 LE(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 _E(e,t,n,r,i){let o=mn(e.defaultValue)?"":e.defaultValue;Pu(o,e,t,n,e.code,r,i,!mn(e.defaultValue))}function Pu(e,t,n,r,i,o,a,s=!1){let l=MS(e),c=Be(l,t,n);c.ok?r[i]={value:kS(l,t)?l:c.value}:o.push({...a,code:c.code,message:s?`\u65E2\u5B9A\u5024: ${c.message}`:c.message})}function MS(e){return DE(e)?e.lexeme:Array.isArray(e)?e.map(t=>t instanceof Map?t:DE(t)?t.lexeme:t):e}function DE(e){return typeof e=="object"&&e!==null&&e.kind==="number"}function kS(e,t){return DS.has(t.fieldType)&&Array.isArray(e)&&e.every(n=>typeof n=="object"&&n!==null&&"code"in n)}function Cu(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 Lu=["$err_statement","$err_operation","$err_row","$err_field","$err_subtable","$err_subrow","$err_source_row","$err_code","$err_message"];function _u(e,t,n=1){return e.map(r=>{let i={};for(let o of t)i[o]=r.sourceValues.get(o)==null?"":xS(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 xS(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 Du(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 UE(e,t){return Du(e,t,"DROP")}function ME(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,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 FS(e,t){let n=e[t]?.value;return Array.isArray(n)?n:[]}function xE(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 FE(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=FS(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 vu="#__import_source";function GE(e){return{...e,from:{appId:0,alias:null,cteName:vu}}}function GS(e){return/^[0-9]+$/.test(e)?e.replace(/^0+(?=\d)/,""):null}function Uu(e,t){let n=e.map(GS),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 KS="\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 uR(e){return ue.get(e)}var Un=new WeakMap,ls=new WeakMap,Bu=Symbol("statementEvaluationContext");function cR(e){return e[Bu]?e:{...e,[Bu]:{statementInstant:new Date}}}function se(e){return e[Bu]??{}}var KE=new WeakMap,BS=1,$S=1;function pR(e,t){if(t)return t;let n=KE.get(e);return n||(n=`client:${BS++}`,KE.set(e,n)),n}function Ec(e){return`${e}\0inv:${$S++}`}async function Rc(e,t,n={}){yt(n);let r=Date.now(),i=Ec(pR(t,n.cacheContext));try{let o=KI(e,n.enableImport===!0),a=dR(),s=ER(t,a),l={aborted:!1},c=yc(s,l,!VS(o)||Jl(o)),p=await $u(o,c,n,i);a.elapsedMs=Date.now()-r;let u={...RR(p,l),metrics:a};if(p.type==="SELECT"){let d=ue.get(p);d&&ue.set(u,d)}return u}finally{Uc(i)}}function dR(){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 fR=Symbol("limitMetricsSink");function mc(e,t){let n=e[fR];n&&(n.limitReached=!0,n.limitReachedApps.includes(t)||n.limitReachedApps.push(t))}function ER(e,t){return{[fR]: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 BE=Symbol("searchAbortFailClosed");function yc(e,t,n){return n&&e[BE]?e:{...e,...n?{[BE]:!0}:{},getRecords:async r=>{let i=await e.getRecords(r);if(i.searchAborted&&(t.aborted=!0,n))throw new Pn;return i}}}function WS(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 VS(e){return e.type==="SELECT"||e.type==="UNION"||e.type==="WITH"}function RR(e,t){if(!t.aborted||e.type!=="SELECT")return e;let n=new Set(e.warnings??[]);return n.add(KS),{...e,warnings:[...n]}}async function $E(e,t,n){let r=await Vi(e,t,n);return Iu(r),r}async function Vi(e,t,n){return TE(e,{select:async r=>{let{resolver:i}=await bn(r,t,n);return he(r.where,i)},dml:r=>NR(r,t,n),prefilterDecomposition:async r=>{if(r.where===null)return null;let{resolver:i}=await bn(r,t,n);return wu(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)&&Nc.set(r,o),o.joinPlan)}})}async function $u(e,t,n,r){n=cR(n);let i=await Vi(e,t,r);e.type!=="EXPLAIN"&&Iu(i);let o=Vu(e);if(o!==null&&!gI(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 iT(e,t,r),e.type==="IMPORT")return qR(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 sc(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 HS(e,t,n,r);case"SELECT":return xt(qu(e),t,n,r,void 0,n.captureColumnMeta===!0,n.captureColumnMeta===!0);case"UNION":return FR(e,t,n,r,n.captureColumnMeta===!0,n.captureColumnMeta===!0);case"WITH":return _c(e,t,n,r,void 0,n.captureColumnMeta===!0);case"INSERT":return dI(e,t,n,r);case"INSERT_SELECT":return Kc(e,t,n,r);case"UPSERT":return _I(e,t,n,r);case"UPSERT_SELECT":return Wc(e,t,n,r);case"UPDATE":return sc(e,t,n,r);case"DELETE":return LI(e,t,n,r);case"REORDER":return xI(e,t,n,r);case"SHOW_APPS":return em(t);case"DESCRIBE":return tm(e,t,r);case"EXPLAIN":return YI(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 AR(e,t,n,r)}}var gc=["$id","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id","$err_count"],hc=["$id","$err_subtable","$err_field","$err_code","$err_count"];function Ac(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 mR(e=!1){let t=e?hc:gc;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 HS(e,t,n,r){if(e.errorTable)throw new Error("ArgumentError: VALIDATE INTO requires a batch.");return yR(e,t,n,r)}async function yR(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=Wl(e,i),l=new Set(s.flatMap(O=>Bl(O.field))),c={present:Kl.filter(O=>l.has(O)),absent:Kl.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=Ac(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:nl(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?hc:gc],rows:P,rowCount:P.length,validateStats:{errorRecords:C.size,errorCount:_,constraintMetadata:c}};return ue.set(x,mR(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])||!YS(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 YS(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 gR(e,t,n={}){yt(n);let r=Sc(e,n.enableImport===!0),i=fl(r);if(r.forEach(f=>Eo("phase15b",f)),n.allowApplyMutation!==!0&&r.some(f=>xs(f)||f.type==="UPSERT"&&jS(f)))throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let o=ql(r,n.variables),a=hR(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=dR(),c=ER(t,l),p=Date.now(),u=n.timeoutMs!=null?p+n.timeoutMs:null,d=Ec(pR(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=yc(c,M,S.statementType!=="SELECT"&&S.statementType!=="UNION"&&S.statementType!=="WITH"||Jl(r[g])),C=WS(v),_=await JS(zS(r[g],S,C.client,P,d,f,R,a),N,C.closeActive);_.result&&(_.result=RR(_.result,M)),E.push({...h,status:"success",..._})}catch(N){E.push({...h,status:"error",error:XS(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{Uc(d)}}function jS(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 zS(e,t,n,r,i,o,a,s){if(r=cR(r),e.type==="SET_VARIABLE"){let c=ts(e,a);if(nt(c),await $E(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 SR(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,WE(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=WE(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 $E(l,n,i),l.type==="VALIDATE"){let c=await yR(l,n,{...r,onLimitReached:"error"},i);return l.errorTable&&Tt(o,l.errorTable,c.columns,c.rows,r.tempTableMaxRows??Xe,ue.get(c)??mR(l.summary===!0)),{result:c}}if(l.type==="IMPORT")return{result:await qR(l,n,r,i,o)};if("validateOnly"in l&&l.validateOnly===!0){let c=await kc(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 oc(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 qS(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;fc.set(c,o);try{return{result:await $u(c,n,r,i)}}finally{fc.delete(c)}}if(l.type==="ASSERT")return await AR(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 _c(l,n,r,i,o)};if(l.type==="INSERT_SELECT")return{result:await Kc(l,n,r,i,o)};if(l.type==="UPSERT_SELECT")return{result:await Wc(l,n,r,i,o)};if(l.type==="UPDATE"&&l.from?.cteName!=null)return{result:await sc(l,n,r,i,o)};throw new Error(`ArgumentError: temp table references in ${e.type} are not supported yet.`)}return{result:await $u(l,n,r,i)}}async function qS(e,t,n,r,i){return e.type==="WITH"?_c(e,t,n,r,i,!0):ct(e,t,n,i,r,!0)}async function JS(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 XS(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)??Mu(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:QS(e);t={code:typeof n.code=="string"&&n.code.length>0?n.code:Mu(r),message:r}}else{let n=String(e);t={code:Mu(n),message:n}}return Object.defineProperty(t,"cause",{value:e,enumerable:!1,configurable:!1,writable:!1}),t}function Mu(e){return e.match(/^([A-Za-z]+Error):/)?.[1]??"Error"}function QS(e){try{return JSON.stringify(e)??String(e)}catch{return String(e)}}function Sc(e,t=!1){let n=new Zt(e).tokenize();return new en(n,{import:t}).parseStatements()}function ZS(e,t){try{let n=Sc(`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 hR(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)?ZS(r.name,t[r.name]):r.default);return n}function WE(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:zd(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 Wu(e,t,!1)}function Wu(e,t,n){if(Array.isArray(e))return e.map(r=>Wu(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,Wu(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=eT(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 eT(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 Vu(e){if(Array.isArray(e)){for(let t of e){let n=Vu(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=Vu(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 AR(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(Hu(e));case"SCALAR_SUBQUERY":try{return await SR(e.query,t,n,r,i)}catch(o){throw o instanceof wn?new dr(o.message):o}}}async function SR(e,t,n,r,i){let{query:o,probed:a}=tT(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 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 Hu(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=Hu(e.left),n=Hu(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 Mc(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 TR=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=ld(e.where,o);return e.where=a.normalizedWhere,a.rewrites.length>0&&TR.set(e,a.rewrites),{resolver:o,rewrites:a.rewrites}}function nT(e){return e.columns.some(t=>t.type==="WINDOW_COL"&&t.windowKind==="AGGREGATE"&&t.orderBy.length>0&&t.frame?.source==="DEFAULT")}function IR(e){return nT(e)||e.columns.some(t=>t.type==="WINDOW_COL"&&t.windowKind==="VALUE")}function VE(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 HE(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 wR(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"||VE(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`+HE(n,"RANGE"));for(let o of e.columns)o.type!=="WINDOW_COL"||o.windowKind!=="VALUE"||VE(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`+HE(n,"VALUE"));return i}function Tc(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 Ic(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 bR(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=$("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 NR(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 NR(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),sT(e))return l=cT(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,IR(e)),u=wR(e,p,s),d=await fr(e,t,r,i);await nm(e,t,n,r,c,i);let f=NT(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=wu(e,P);M.eligible&&Tu(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 dT(e,S?.kind==="CANONICAL_LOCAL"?"FULL_SCAN":y,t,r),I=wc(e,n,S),U=m!==void 0&&(R==="FULL_SCAN"||S?.kind==="CANONICAL_LOCAL")?yc(t,{aborted:!1},!0):t;try{y==="SIMPLE"?l=await pT(e,U,I.effectiveOptions,r,S,g):l=await OT(e,U,I.effectiveOptions,r,i,f.capability==="EXACT_PUSHDOWN"&&E===void 0,g,E,d)}catch(P){PR(I,P)}return o&&ue.set(l,await ki(e,l.columns,t,r,i,a)),Tc(l,[...c,...u,...h])}function Yu(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 CR(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,CR(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=Gp(e,(u,d)=>l[d]),p=Wp(o,e.columns,c);return rT(e,o,p,s),Pr(e,jp(e,p,c)),p}function rT(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(Yu(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 iT(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 oT(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(Yu(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=CR(R);throw E.length>0?new Error(Yu(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 oT(e,t,n,r),c=Jp(e,l,qp);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 aT(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 wc(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 PR(e,t){throw e.reasons.size>0&&t instanceof Ge&&!t.completeInputWrapped?new Ge(aT(e.reasons)+(e.truncateWasDisabled?"onLimit=truncate\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002":"")+t.message,!0):t}async function ju(e,t){try{return await t()}catch(n){PR(e,n)}}function ut(e){return e?.type==="BOOLEAN"&&e.value===!1}function sT(e){return e.from.appId===0&&e.from.cteName===Le}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"?bc(e):!1}function lT(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"?bc(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 bc(e){return e.args.some(t=>lT(t))}function uT(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(bc(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 cT(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.");uT(e);let n=Eu([{}],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 pT(e,t,n,r,i,o){let a=i?.kind==="CANONICAL_REST_TOP_N"?DR(e):e,s=wo(a),l=i?.kind==="CANONICAL_LOCAL"?dn(e,e.from):s.fields,c=await Cc(e,t,r),p=Oc(e,c),u=e.columns.some(P=>P.type==="CASE_COL")?await Hi(e,t,r,void 0,Ic(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 jf({client:t,app:s.app,fields:s.fields,query:ou(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`),mc(t,e.from.appId)}})}let h=S.map(P=>Ut(P,null));m||(h=du(h,e.orderBy,o.optionOrders,o.sortKinds,o.semantics,fu(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 Dc(e,I,N,t,r);return{type:"SELECT",rows:I,columns:U,rowCount:I.length,warnings:[...f]}}async function dT(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=>!$s(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 YE(e){return e.cteName??`APP${e.appId}`}function fT(e){return e.alias?[e.alias]:e.cteName!==null?[e.cteName]:[`APP${e.appId}`,`app${e.appId}`]}function ET(e,t){return $s(t)||e.validCodes.has(t)}function ku(e,t){return e.table.cteName!==null?e.validCodes.has(t):ET(e,t)}function RT(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 mT(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===Le)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:YE(p),validCodes:new Set(u.columns),authoritative:!0,schemaUnavailable:u.rows.length===0&&u.columns.length===0});return}if(p.cteName===Le)return;let d=await ee(p.appId,t,r);s.set(p,{table:p,label:YE(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 fT(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&&!ku(d,u.field))throw new Error(`ArgumentError: JOIN key ${u.tableAlias}.${u.field} is not available in the materialized table.`)}let c=nd(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=>!ku(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=>ku(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 mT(e,t,n,r);for(let o of RT(e))await za(o,t,n,r,i)}}function OR(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 Nc=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=Bf(e.where,r),o=$f(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,OR(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([Me(s,t,n),$T(s,t,n)]),u=yT(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 yT(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 gT(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 LR(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 Cc(e,t,n){let r=gT(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=LR(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 Me(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 Pc(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(Ue(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"){Pc(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 zu(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"){zu(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"?zu(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 hT(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;Pc(o.func,o.arg,t);return}i.type==="SELECT"||i.type==="SCALAR_SUBQUERY"||Object.values(i).forEach(n)};n(e)}function AT(e){let t=[];for(let n of e)n.type==="AGGREGATE"?Pc(n.func,n.arg,t):n.type==="ARITH_AGG_COL"?Er(n.expr,t):n.type==="STRFUNC_COL"?zu(n.expr,t):n.type==="SCALAR_VALUE_COL"?Oi(n.expr,t):n.type==="CASE_COL"&&hT(n.expr,t);return t}var ST=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DROP_DOWN","RADIO_BUTTON","STATUS","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME"]);function TT(e){return e.sortKind!==void 0?e.sortKind:e.fieldType==="NUMBER"||e.fieldType==="RECORD_NUMBER"?"number":ST.has(e.fieldType)?"string":void 0}async function _R(e,t,n,r){let i=AT(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=LR(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 Mc(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 ve(e,t){let n=e.semantics??te(e);return{sortKind:TT(e),fieldType:e.fieldType,semantics:t===void 0?n:qn(n,t,e.code)}}function DR(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 vR(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 IT=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 IT.has(e.func)?Q("number"):Q("string")}function Rr(e,t){return e.type==="STRING"?Q("string"):e.type==="ARRAY"?vR():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(Ue(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")?vR("KSQL_MIXED_UNSUPPORTED"):qe()}function Ln(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 On(e);let n=e.branches.map(r=>Rr(r.result,t));return e.elseResult&&n.push(Rr(e.elseResult,t)),ds(n)}function UR(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 wT(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;wT(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?ve(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?ve(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?ve(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?ve(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=Ue(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=Ue(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=Ue(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=UR(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 bT(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 Oc(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 MR=new WeakSet,Lc=new WeakMap;function qu(e){return MR.add(e),e}function NT(e,t){return Lc.set(e,t),t}function kR(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 CT(e){return typeof e=="string"&&/^(?:0|[1-9]\d*)$/.test(e)}async function PT(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(!CT(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 OT(e,t,n,r,i,o=!0,a,s,l){let c=Lc.get(e);if(MR.has(e)&&c!==void 0&&kR(e,c)){let L=await PT(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),Cc(e,t,r),_R(e,t,r,i)]),m=Oc(e,R),y=await Hi(e,t,r,i,gt(e.having)||Ic(e)),g=bR(e,y),S=Nc.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);ol(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 im(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 VR(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}=yu({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 Dc(e,G,j,t,r);return{type:"SELECT",rows:G,columns:B,rowCount:G.length,warnings:[...u]}}function LT(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 Ju(e,t,n){LT(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 xR(e,t,n,r){let i=Ju(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,bT(e,t)),l}async function FR(e,t,n,r,i=!1,o=!1){let a=wc(e,n,null);return ju(a,async()=>{let s=a.effectiveOptions,[l,c]=await Promise.all([e.left.type==="UNION"?FR(e.left,t,s,r,i,o):xt(qu(e.left),t,s,r,void 0,i,o,"DERIVED"),xt(qu(e.right),t,s,r,void 0,i,o,"DERIVED")]);return xR(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 GR(e){return"alias"in e&&typeof e.alias=="string"?e.alias:e.type==="FIELD"?e.field:null}function DT(e){let t=e.recursiveSpec;if(e.columnAliases)return[...e.columnAliases];let n=t.seed.columns.map(GR);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 jE(e){return e.columns.map((t,n)=>GR(t)??`__b53_column_${n}`)}function zE(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 KR(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?ve(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: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"){bi(r.left,t,!0),bi(r.right,t,!0);return}for(let i of Object.values(r))bi(i,t,n)}async function qE(e,t,n,r,i){let o=await KR(e,n,r,i);e.columns.forEach(c=>bi(c,o));let a=await ki(e,jE(e),n,r,i),s=jE(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 BR(...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 UT(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 MT(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 kT(e,t,n,r){let i=UT(e),o=await Promise.all(BR(...e).map(async(a,s)=>{let l=await xt(MT(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 JE(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 XE(e,t,n){return e.cteName===null?void 0:n.get(e.cteName)?.columnMeta?.get(t)}function xu(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 QE(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 xT(e,t,n,r,i){let o=e.recursiveSpec,a=DT(e),s=await qE(o.seed,a,t,i,r),l=new Map(r);l.set(e.name,{rows:[],columns:a,columnMeta:s});let c=await qE(o.recursiveTerm,a,t,i,l);a.forEach((K,k)=>{let G=s.get(K),j=c.get(K);if(!G||!j||!zE(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=QE(e.name,o.recursiveTerm),u=await KR(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||!zE(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 kT([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=JE(o.seed,R),y=JE(o.recursiveTerm,R),g=await ct(m,t,n,E,i,!0,!0),S=Ju(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=QE(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=XE(b.self,b.selfField,l)??XE(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=xu(k,A.semantics),j=w.get(G);j?j.push(K):w.set(G,[K])}let x=w.has(xu("",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(xu(G,A.semantics))??[];for(let ne of j){let Pe=String(ne[b.sourceField]??"");Ot("=",G,Pe,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=Ju(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 Pe=String(ne[h.column]??""),Kt=k.path.some(re=>Ot("=",re,Pe,I.semantics));_({...ne,[h.markColumn]:Kt?h.markValue:h.defaultValue}),Kt||K.push({row:ne,path:[...k.path,Pe]})}}M=K}let W={type:"SELECT",rows:P,columns:U,rowCount:P.length,warnings:[...v]};return ue.set(W,N),W}async function _c(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 xT(c,t,n,a,r):c.query.type==="SHOW_APPS"?p=await em(t):c.query.type==="DESCRIBE"?p=await tm(c.query,t,r):c.query.type==="GENERATE_SERIES"?p=$R(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 Tc(l,[...s])}function $R(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 xR(c,p,e.all,o)}if(!(e.from.cteName!=null&&e.from.cteName!==Le||e.joins.some(c=>c.table.cteName!=null)))return xt(e,t,n,i,r,o,!1,"DERIVED");let l=await FT(e,t,n,r,i);return o&&ue.set(l,await ki(e,l.columns,t,i,r)),l}async function FT(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,IR(e)),d=wR(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),nm(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=wc(e,n,g),h=S.effectiveOptions,[I,N,U]=await Promise.all([cs(e,t,i),Cc(e,t,i),_R(e,t,i,r)]),P=Oc(e,N),M=await Hi(e,t,i,r,gt(e.having)||Ic(e)),v=bR(e,M),C=us(e,I)??fn(e,I);ol(C);let _=t,b=await im(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(ZE)),w.set(e.from.alias,B.columns)}else{let B=await ju(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=>ju(S,async()=>{if(B.table.cteName!=null){let L=p(B.table.cteName);A.set(B.table.alias,L.rows.map(ZE)),w.set(B.table.alias,L.columns)}else{let L=B.table.alias?C.joinConditions.get(B.table.alias)??null:null,ne=await VR(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}=yu({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 Dc(e,k,G,t,i);return Tc({type:"SELECT",rows:k,columns:j,rowCount:k.length,warnings:[...R]},d)}async function Dc(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 qf(o,e.from.subtableCode,()=>fs(e.from.appId,r,i))}function ZE(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`),mc(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${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?ed(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&&Lc.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 RE(m,t.subtableCode)}var WR=50;function GT(e){let t=Ae(e);return t!==null?JSON.stringify(t):e}function Xu(e){return JSON.stringify(e)}function _n(e,t){return JSON.stringify(e.map((n,r)=>t[r]?GT(n):n))}function Yi(e,t){let n=e.raw.get(Xu(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,Xu(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=Xu(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],WR)){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=>vc(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,KT(g))}return c}function KT(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 vc(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 BT=6,Xa=ga*BT;async function VR(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?ve(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?ve(A,S.appId):Je(m)}let U=[],P=!1;for(let A of g){let w=A[m]?.value,x=vc(w);(w==null||x.length===0)&&(P=!0),U.push(x)}let M=Zl({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=Ql(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`),mc(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 Qu=new Map,Zu=new Map,ec=new Map,tc=new Map,nc=new Map,rc=new Map;function Uc(e){Qu.delete(e),Zu.delete(e),ec.delete(e),tc.delete(e),nc.delete(e),rc.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(tc,n,e);if(r)return r;let i=t.getFields(e);return yr(tc,n,e,i),i}async function It(e,t,n){let r=mr(rc,n,e);if(r)return r;let i=t.getNumberPrecision(e);return yr(rc,n,e,i),i}async function fs(e,t,n){let r=mr(nc,n,e);if(r)return r;let i=t.getProcessStatuses(e);return yr(nc,n,e,i),i}async function Mc(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 Me(e,t,n){let r=mr(Qu,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(Qu,n,e,o),o}async function ic(e,t,n){let r=mr(Zu,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(Zu,n,e,o),o}async function $T(e,t,n){let r=await ic(e,t,n);return new Map([...r.entries()].map(([i,o])=>[i,new Set(o.keys())]))}async function eR(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)a.sortKind&&o.set(a.code,a.sortKind);return yr(ec,n,e,o),o}function WT(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 VT(e,t,n,r){let i=WT(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?ve(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?ve(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?ve(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?ve(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(Ue(u.field));else if(u.type==="ARITH_COL"||u.type==="ARITH_AGG_COL")d=Q("number");else if(u.type==="WINDOW_COL")d=UR(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(Ue(u))?.semantics;if(!d){let R=Ue(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([HT(e,t,n),YT(e,t,n),VT(e,t,n,r)]);return{optionOrders:o,sortKinds:a,semantics:s}}async function HT(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 ic(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 ic(a.appId,t,n);for(let[l,c]of s.entries())r.set(`${a.alias}.${l}`,c)}return r}async function YT(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 eR(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 eR(a.appId,t,n);for(let[l,c]of s.entries())r.set(`${a.alias}.${l}`,c)}return r}function HR(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 jT=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function zT(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||jT.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 zT(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 qT(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 bI(e,a,o)}async function JT(e,t,n,r,i){let{fieldInfos:o,prepared:a}=await YR(e,t,n,r,i);return CI(e,a,o)}async function YR(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=QR(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 Of({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 XT(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=jl(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 Uf(o,t,a);return{...s,diagnostic:Ye(a,s)}}async function QT(e,t,n,r){if(n.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let{prepared:i}=await YR(e,t,n,r,1),o=zl(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 Mf(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 ZT(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=ZT(n?Ha(n):[],r?Ha(r):[]),a=eI(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 eI(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 kc(e,t,n,r,i,o){if(e.type==="INSERT"&&e.applyBlocks?.length)return qT(e,t,n,r,o);if(e.type==="UPSERT"&&(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length))return JT(e,t,n,r,o);if(e.type==="UPDATE"&&e.applyBlocks?.length){let a=await XR(e,t,n,r,o);if(a.type!=="VALIDATION")throw new Error("InternalError: APPLY VALIDATE ONLY returned a mutation result.");return a}return(await xc(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 xc(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=mE(R),m=(await tI(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"?iI:e.type.startsWith("UPSERT")?D=>oI(D,t,n.maxRecords??1e4):void 0,S=n.loadUpdateModeSnapshots??g,h=y.length>0&&S!==void 0,I=new Map;if(h){Fl(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=yE(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=Gl(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=gE({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,ve(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 oc(e,t,n,r,i,o){let a=await xc(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 tI(e,t,n,r,i,o,a,s){if(e.type==="UPDATE")return rI(e,n,r,i,o,s);let l,c,p,u,d;if(e.type==="INSERT"||e.type==="UPSERT")tR(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 Gc.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");tR(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 Fc(e){return e.checkGroups?tr(e.checkGroups):[]}function tR(e,t){let n=new Set(t);for(let r of Fc(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 nI=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 qd(e.checkGroups)){let r=n.tableAlias?`${n.tableAlias}.${n.field}`:n.field,i=t.get(r)??t.get(n.field);if(nI.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 rI(e,t,n,r,i,o){if(e.from)return sI(e,e.from,t,n,r,i,o);await rm(e.assignments,t,n,r);let a=await Me(e.appId,t,r),s=jR(e,a);vn(e,ac(a,e.appId));let l,c=new Map,p=new Map;if(ra(e)){let u=Tl(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=wl(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:aI(c.get(u.id),e.appId),evaluationFieldTypes:ac(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 iI(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 oI(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 jR(e,t){if(e.from)return[];let n=new Set;for(let r of Fc(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 aI(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 ac(e,t){return new Map([...e,...[...e].map(([n,r])=>[`APP${t}.${n}`,r]),["$id","RECORD_NUMBER"],[`APP${t}.$id`,"RECORD_NUMBER"]])}async function sI(e,t,n,r,i,o,a){let s=await hm(e,t,n,i,o);vn(e,s.evaluationTypes);let l=await zR(e,t,n,r,i,o,a),c=await Me(e.appId,n,i),p=Nl(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:pw(u.get(f.id),e.appId,t.alias),evaluationFieldTypes:s.evaluationTypes}))}var lI=WR,uI=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 cI(e,t,n,i),l=await hm(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 pI(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=nR(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([...OI(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()],lI)){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=nR(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 cI(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 pI(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 Me(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(uI.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 nR(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 xc(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 dI(e,t,n,r){if(e.applyBlocks?.length)return XT(e,t,n,r);if(e.checkGroups?.length)return qi(e,t,n,r);if(e.subtableCode)return DI(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 Me(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 fI(){return{type:"SELECT",distinct:!1,columns:[],from:{appId:0,alias:null,cteName:Le},joins:[],where:null,groupBy:[],having:null,orderMode:"CANONICAL",orderBy:[],limit:null,offset:null}}async function qR(e,t,n,r,i){if(!n.enableImport)throw new Error("UnsupportedError: IMPORT capability is disabled.");let o=IE(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"?PE(e.source,E,u,n.maxRecords??1e4):OE(e.source,E,u,e.replaceSubtables??[],n.maxRecords??1e4,e.recordNumberSourceHeader),y=e.source.kind==="CSV"?"UPDATE":e.keyFields?"UPSERT":"INSERT",g=vE(m,u,d,R,y);if(e.source.kind==="CSV")return EI(e,m,g,d,t,n,i);Ou(g,e.rejectLimit);let S=[...new Set(u.flatMap(k=>k.kind==="FIELD"?[k.field]:k.children))],h=_u(g.errors,S),I=[...S,...Lu],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(ME(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=kE(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=>UE(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 RI(e,o,t,n,r,i);let a={appId:e.appId,fields:e.fields,select:fI(),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 kc(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",oc(s,t,n,r,i,1));return c(u)}let p=await(s.type==="UPSERT_SELECT"?Wc(s,t,n,r,i):Kc(s,t,n,r,i));return c(p)}async function EI(e,t,n,r,i,o,a){if(!e.recordNumberSourceHeader||!e.replaceSubtables?.length)throw new Error("InternalError: incomplete CSV subtable replacement AST.");xE(t.records);let s=t.records.map(b=>b.recordNumberSourceValue??""),l=Uu(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=FE(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};Ou(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=_u(y,M),C=[...M,...Lu];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=Du(_(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 RI(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=Nu(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=Uu(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=Gl(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 mI(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"?bu(a.source,s,p,l):Nu(a.source,s,l,e.fields,o);if(a.audit=u.importAudit,a.source.kind==="JSON"||!a.source.projection)return u;let d=GE(a.source.projection),f=new Map(i??[]);f.set(vu,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 Gc={materialize:mI};function JR(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 Kc(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 Gc.materialize(e,t,n,r,i,o),{rows:l,columns:c}=s;if(JR(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 Me(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:HR(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 sc(e,t,n,r,i){if(e.applyBlocks?.length)return XR(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 Me(e.appId,t,r);return jR(e,E),vn(e,ac(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 PI(e,e.from,t,n,r,i);let l=n.maxRecords??1e4;await rm(e.assignments,t,n,r);let c=await Me(e.appId,t,r);if(ra(e)){let R=Tl(e),m=(await it(t.getRecords,R.app,R.query,[...R.fields],{maxRecords:l,parallel:n.fetchParallel??1})).records,y=wl(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 XR(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 yI(e,t,n,r,i);let o=await ee(e.appId,t,r),a=Dt(e,o),s=oa(e,o),l=Dl(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=ff({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 yI(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 SI(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 NI(e,p,s);Cp("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 vf(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 gI(e){let t=e.type==="EXPLAIN"?e.query:e;return t.type==="UPDATE"&&os(t)&&we(t.where)}var hI=`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=OE(PE(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 FS=new Set(["CHECK_BOX","MULTI_SELECT"]),LE=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 GS(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof Map)&&e.kind==="number"}function KS(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."),GS(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."),!FS.has(t.fieldType)&&!LE.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."),LE.has(t.fieldType)?JSON.stringify(r.map(i=>({code:i}))):JSON.stringify(r)}function Pu(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]=KS(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 Ou(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]=CE(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 _E(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 DE(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 $S=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),BS=new Set(["SUBTABLE","FILE","CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function Du(e,t){if(t!=null&&e.invalidParentRows.size>t)throw new Error(`RejectLimitExceededError: rejected parents (${e.invalidParentRows.size}) exceed REJECT LIMIT (${t}).`)}function kE(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)vE(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)vE(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=>VS(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 VS(e,t,n,r,i,o,a,s){let l=[],p={};for(let d of t)e.top.has(d.field)&&_u(e.top.get(d.field),r.get(d.field),o,p,d.field,l,Lu(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)||ME(d,o,c,l,Lu(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=Lu(e,a,T,d.subtableCode,E.childRowNumber,E.sourceRowNumber??e.markerRowNumber);E.values.has(T)?_u(E.values.get(T),h,o,g,T,l,I):ME(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 vE(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&&BS.has(t.fieldType))throw new Error(`ArgumentError: IMPORT ${n?`child ${n}.${e}`:`field ${e}`} is not writable (${t.fieldType}).`)}function ME(e,t,n,r,i){let o=mn(e.defaultValue)?"":e.defaultValue;_u(o,e,t,n,e.code,r,i,!mn(e.defaultValue))}function _u(e,t,n,r,i,o,a,s=!1){let l=WS(e),p=$e(l,t,n);p.ok?r[i]={value:HS(l,t)?l:p.value}:o.push({...a,code:p.code,message:s?`\u65E2\u5B9A\u5024: ${p.message}`:p.message})}function WS(e){return UE(e)?e.lexeme:Array.isArray(e)?e.map(t=>t instanceof Map?t:UE(t)?t.lexeme:t):e}function UE(e){return typeof e=="object"&&e!==null&&e.kind==="number"}function HS(e,t){return $S.has(t.fieldType)&&Array.isArray(e)&&e.every(n=>typeof n=="object"&&n!==null&&"code"in n)}function Lu(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 vu=["$err_statement","$err_operation","$err_row","$err_field","$err_subtable","$err_subrow","$err_source_row","$err_code","$err_message"];function Mu(e,t,n=1){return e.map(r=>{let i={};for(let o of t)i[o]=r.sourceValues.get(o)==null?"":YS(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 YS(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 Uu(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 xE(e,t){return Uu(e,t,"DROP")}function FE(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 GE(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 jS(e,t){let n=e[t]?.value;return Array.isArray(n)?n:[]}function KE(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 $E(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=jS(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 ku="#__import_source";function BE(e){return{...e,from:{appId:0,alias:null,cteName:ku}}}function zS(e){return/^[0-9]+$/.test(e)?e.replace(/^0+(?=\d)/,""):null}function xu(e,t){let n=e.map(zS),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 qS="\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 dR(e){return ue.get(e)}var kn=new WeakMap,cs=new WeakMap,Wu=Symbol("statementEvaluationContext");function fR(e){return e[Wu]?e:{...e,[Wu]:{statementInstant:new Date}}}function le(e){return e[Wu]??{}}var VE=new WeakMap,JS=1,XS=1;function ER(e,t){if(t)return t;let n=VE.get(e);return n||(n=`client:${JS++}`,VE.set(e,n)),n}function gc(e){return`${e}\0inv:${XS++}`}async function yc(e,t,n={}){yt(n);let r=Date.now(),i=gc(ER(t,n.cacheContext));try{let o=JI(e,n.enableImport===!0),a=RR(),s=gR(t,a),l={aborted:!1},p=Ac(s,l,!ZS(o)||Ql(o)),c=await Hu(o,p,n,i);a.elapsedMs=Date.now()-r;let u={...yR(c,l),metrics:a};if(c.type==="SELECT"){let d=ue.get(c);d&&ue.set(u,d)}return u}finally{xc(i)}}function RR(){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 mR=Symbol("limitMetricsSink");function hc(e,t){let n=e[mR];n&&(n.limitReached=!0,n.limitReachedApps.includes(t)||n.limitReachedApps.push(t))}function gR(e,t){return{[mR]: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 WE=Symbol("searchAbortFailClosed");function Ac(e,t,n){return n&&e[WE]?e:{...e,...n?{[WE]:!0}:{},getRecords:async r=>{let i=await e.getRecords(r);if(i.searchAborted&&(t.aborted=!0,n))throw new Ln;return i}}}function QS(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 ZS(e){return e.type==="SELECT"||e.type==="UNION"||e.type==="WITH"}function yR(e,t){if(!t.aborted||e.type!=="SELECT")return e;let n=new Set(e.warnings??[]);return n.add(qS),{...e,warnings:[...n]}}async function HE(e,t,n){let r=await ji(e,t,n);return Nu(r),r}async function ji(e,t,n){return bE(e,{select:async r=>{let{resolver:i}=await Cn(r,t,n);return he(r.where,i)},dml:r=>LR(r,t,n),prefilterDecomposition:async r=>{if(r.where===null)return null;let{resolver:i}=await Cn(r,t,n);return Cu(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)&&Oc.set(r,o),o.joinPlan)}})}async function Hu(e,t,n,r){n=fR(n);let i=await ji(e,t,r);e.type!=="EXPLAIN"&&Nu(i);let o=ju(e);if(o!==null&&!PI(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 ET(e,t,r),e.type==="IMPORT")return ZR(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 cc(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 Gc(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 eT(e,t,n,r);case"SELECT":return xt(Qu(e),t,n,r,void 0,n.captureColumnMeta===!0,n.captureColumnMeta===!0);case"UNION":return BR(e,t,n,r,n.captureColumnMeta===!0,n.captureColumnMeta===!0);case"WITH":return Mc(e,t,n,r,void 0,n.captureColumnMeta===!0);case"INSERT":return TI(e,t,n,r);case"INSERT_SELECT":return Vc(e,t,n,r);case"UPSERT":return $I(e,t,n,r);case"UPSERT_SELECT":return Yc(e,t,n,r);case"UPDATE":return cc(e,t,n,r);case"DELETE":return KI(e,t,n,r);case"REORDER":return jI(e,t,n,r);case"SHOW_APPS":return im(t);case"DESCRIBE":return om(e,t,r);case"EXPLAIN":return nw(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 IR(e,t,n,r);case"EXIT":throw new Error("ArgumentError: EXIT SUCCESS IF \u306F\u30D0\u30C3\u30C1\u5C02\u7528\u3067\u3059")}}var Sc=["$id","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id","$err_count"],Tc=["$id","$err_subtable","$err_field","$err_code","$err_count"];function Ic(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 hR(e=!1){let t=e?Tc:Sc;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 eT(e,t,n,r){if(e.errorTable)throw new Error("ArgumentError: VALIDATE INTO requires a batch.");return AR(e,t,n,r)}async function AR(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=Hl(e,i),l=new Set(s.flatMap(O=>Vl(O.field))),p={present:Bl.filter(O=>l.has(O)),absent:Bl.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=Ic(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:il(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?Tc:Sc],rows:P,rowCount:P.length,validateStats:{errorRecords:N.size,errorCount:_,constraintMetadata:p}};return ue.set(x,hR(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])||!tT(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 tT(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 SR(e,t,n={}){yt(n);let r=Su(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=wc(r.hasDirectives?e.slice(r.headerEnd):e,n.enableImport===!0,r.hasDirectives&&r.meta.dialect===1),a=Rl(o);if(o.forEach(E=>go("phase15b",E)),n.allowApplyMutation!==!0&&o.some(E=>Gs(E)||E.type==="UPSERT"&&nT(E)))throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let s=Xl(o,n.variables),l=TR(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=RR(),u=gR(t,c),d=Date.now(),f=n.timeoutMs!=null?d+n.timeoutMs:null,R=gc(ER(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},_=Ac(u,N,I.statementType!=="SELECT"&&I.statementType!=="UNION"&&I.statementType!=="WITH"||Ql(o[h])),b=QS(_),D=fR(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 oT(rT(A),P,b.closeActive);w.result&&(w.result=yR(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:aT(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{xc(R)}}function nT(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 rT(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 HE(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 bR(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,YE(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=YE(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 HE(c,r,o),c.type==="VALIDATE"){let u=await AR(c,r,{...i,onLimitReached:"error"},o);return c.errorTable&&It(a,c.errorTable,u.columns,u.rows,i.tempTableMaxRows??Xe,ue.get(u)??hR(c.summary===!0)),{result:u}}if(c.type==="IMPORT")return{result:await ZR(c,r,i,o,a)};if("validateOnly"in c&&c.validateOnly===!0){let u=await Gc(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 lc(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 iT(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;mc.set(u,a);try{return{result:await Hu(u,r,i,o)}}finally{mc.delete(u)}}if(c.type==="ASSERT"){let u=await IR(c,r,i,o,a);return u.warning!==void 0?{result:u}:{}}if(c.type==="EXIT"){let u=await cT(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 Mc(c,r,i,o,a)};if(c.type==="INSERT_SELECT")return{result:await Vc(c,r,i,o,a)};if(c.type==="UPSERT_SELECT")return{result:await Yc(c,r,i,o,a)};if(c.type==="UPDATE"&&c.from?.cteName!=null)return{result:await cc(c,r,i,o,a)};throw new Error(`ArgumentError: temp table references in ${t.type} are not supported yet.`)}return{result:await Hu(c,r,i,o)}}async function iT(e,t,n,r,i){return e.type==="WITH"?Mc(e,t,n,r,i,!0):ct(e,t,n,i,r,!0)}async function oT(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 aT(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)??Fu(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:sT(e);t={code:typeof n.code=="string"&&n.code.length>0?n.code:Fu(r),message:r}}else{let n=String(e);t={code:Fu(n),message:n}}return Object.defineProperty(t,"cause",{value:e,enumerable:!1,configurable:!1,writable:!1}),t}function Fu(e){return e.match(/^([A-Za-z]+Error):/)?.[1]??"Error"}function sT(e){try{return JSON.stringify(e)??String(e)}catch{return String(e)}}function wc(e,t=!1,n=!1){let r=new Zt(e).tokenize();return new en(r,{import:t,dialect1:n}).parseStatements()}function lT(e,t){try{let n=wc(`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 TR(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)?lT(r.name,t[r.name]):r.default);return n}function YE(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:Xd(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 Yu(e,t,!1)}function Yu(e,t,n){if(Array.isArray(e))return e.map(r=>Yu(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,Yu(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=uT(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 uT(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 ju(e){if(Array.isArray(e)){for(let t of e){let n=ju(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=ju(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 IR(e,t,n,r,i){let o=await wR(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 cT(e,t,n,r,i){let o=await wR(e,t,n,r,i);return{type:"EXIT",condition:e.text,exited:o.passed,message:e.message}}async function wR(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(zu(e));case"SCALAR_SUBQUERY":try{return await bR(e.query,t,n,r,i)}catch(o){throw o instanceof Nn?new ki(o.message):o}}}async function bR(e,t,n,r,i){let{query:o,probed:a}=pT(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 pT(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 zu(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=zu(e.left),n=zu(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 Fc(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 NR=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=pd(e.where,o);return e.where=a.normalizedWhere,a.rewrites.length>0&&NR.set(e,a.rewrites),{resolver:o,rewrites:a.rewrites}}function dT(e){return e.columns.some(t=>t.type==="WINDOW_COL"&&t.windowKind==="AGGREGATE"&&t.orderBy.length>0&&t.frame?.source==="DEFAULT")}function CR(e){return dT(e)||e.columns.some(t=>t.type==="WINDOW_COL"&&t.windowKind==="VALUE")}function jE(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 zE(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 PR(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"||jE(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`+zE(n,"RANGE"));for(let o of e.columns)o.type!=="WINDOW_COL"||o.windowKind!=="VALUE"||jE(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`+zE(n,"VALUE"));return i}function bc(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 Nc(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 OR(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=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 LR(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 LR(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),gT(e))return l=AT(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,CR(e)),u=PR(e,c,s),d=await Rr(e,t,r,i);await am(e,t,n,r,p,i);let f=kT(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=Cu(e,P);U.eligible&&bu(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 TT(e,T?.kind==="CANONICAL_LOCAL"?"FULL_SCAN":g,t,r),I=Cc(e,n,T),v=m!==void 0&&(R==="FULL_SCAN"||T?.kind==="CANONICAL_LOCAL")?Ac(t,{aborted:!1},!0):t;try{g==="SIMPLE"?l=await ST(e,v,I.effectiveOptions,r,T,y):l=await GT(e,v,I.effectiveOptions,r,i,f.capability==="EXACT_PUSHDOWN"&&E===void 0,y,E,d)}catch(P){DR(I,P)}return o&&ue.set(l,await Gi(e,l.columns,t,r,i,a)),bc(l,[...p,...u,...h])}function qu(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 _R(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,_R(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=Bp(e,(u,d)=>l[d]),c=Yp(o,e.columns,p);return fT(e,o,c,s),Lr(e,Jp(e,c,p)),c}function fT(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(qu(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 ET(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 RT(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(qu(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=_R(R);throw E.length>0?new Error(qu(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 RT(e,t,n,r),p=Zp(e,l,Qp);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 mT(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 Cc(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 DR(e,t){throw e.reasons.size>0&&t instanceof Ge&&!t.completeInputWrapped?new Ge(mT(e.reasons)+(e.truncateWasDisabled?"onLimit=truncate\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002":"")+t.message,!0):t}async function Ju(e,t){try{return await t()}catch(n){DR(e,n)}}function ut(e){return e?.type==="BOOLEAN"&&e.value===!1}function gT(e){return e.from.appId===0&&e.from.cteName===Le}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"?Pc(e):!1}function yT(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"?Pc(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 Pc(e){return e.args.some(t=>yT(t))}function hT(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(Pc(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 AT(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.");hT(e);let n=mu([{}],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 ST(e,t,n,r,i,o){let a=i?.kind==="CANONICAL_REST_TOP_N"?kR(e):e,s=Co(a),l=i?.kind==="CANONICAL_LOCAL"?dn(e,e.from):s.fields,p=await Lc(e,t,r),c=Dc(e,p),u=e.columns.some(P=>P.type==="CASE_COL")?await zi(e,t,r,void 0,Nc(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 Jf({client:t,app:s.app,fields:s.fields,query:su(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`),hc(t,e.from.appId)}})}let h=T.map(P=>Mt(P,null));m||(h=Eu(h,e.orderBy,o.optionOrders,o.sortKinds,o.semantics,Ru(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 Uc(e,I,C,t,r);return{type:"SELECT",rows:I,columns:v,rowCount:I.length,warnings:[...f]}}async function TT(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=>!Ws(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 qE(e){return e.cteName??`APP${e.appId}`}function IT(e){return e.alias?[e.alias]:e.cteName!==null?[e.cteName]:[`APP${e.appId}`,`app${e.appId}`]}function wT(e,t){return Ws(t)||e.validCodes.has(t)}function Gu(e,t){return e.table.cteName!==null?e.validCodes.has(t):wT(e,t)}function bT(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 NT(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===Le)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:qE(c),validCodes:new Set(u.columns),authoritative:!0,schemaUnavailable:u.rows.length===0&&u.columns.length===0});return}if(c.cteName===Le)return;let d=await ee(c.appId,t,r);s.set(c,{table:c,label:qE(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 IT(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&&!Gu(d,u.field))throw new Error(`ArgumentError: JOIN key ${u.tableAlias}.${u.field} is not available in the materialized table.`)}let p=od(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=>!Gu(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=>Gu(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 NT(e,t,n,r);for(let o of bT(e))await Xa(o,t,n,r,i)}}function vR(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 Oc=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=Wf(e.where,r),o=Hf(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,vR(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([Ue(s,t,n),QT(s,t,n)]),u=CT(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 CT(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 PT(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 MR(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 Lc(e,t,n){let r=PT(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=MR(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 Ue(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 _c(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(Me(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"){_c(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 Xu(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"){Xu(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"?Xu(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 OT(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;_c(o.func,o.arg,t);return}i.type==="SELECT"||i.type==="SCALAR_SUBQUERY"||Object.values(i).forEach(n)};n(e)}function LT(e){let t=[];for(let n of e)n.type==="AGGREGATE"?_c(n.func,n.arg,t):n.type==="ARITH_AGG_COL"?mr(n.expr,t):n.type==="STRFUNC_COL"?Xu(n.expr,t):n.type==="SCALAR_VALUE_COL"?Li(n.expr,t):n.type==="CASE_COL"&&OT(n.expr,t);return t}var _T=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DROP_DOWN","RADIO_BUTTON","STATUS","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME"]);function DT(e){return e.sortKind!==void 0?e.sortKind:e.fieldType==="NUMBER"||e.fieldType==="RECORD_NUMBER"?"number":_T.has(e.fieldType)?"string":void 0}async function UR(e,t,n,r){let i=LT(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=MR(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 Fc(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 ve(e,t){let n=e.semantics??te(e);return{sortKind:DT(e),fieldType:e.fieldType,semantics:t===void 0?n:Xn(n,t,e.code)}}function kR(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 xR(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 vT=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 vT.has(e.func)?Q("number"):Q("string")}function gr(e,t){return e.type==="STRING"?Q("string"):e.type==="ARRAY"?xR():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(Me(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")?xR("KSQL_MIXED_UNSUPPORTED"):qe()}function Dn(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 _n(e);let n=e.branches.map(r=>gr(r.result,t));return e.elseResult&&n.push(gr(e.elseResult,t)),Es(n)}function FR(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 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 Gi(e,t,n,r,i,o=!1){let a=new Map;MT(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?ve(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?ve(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?ve(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?ve(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=Me(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=Me(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=Me(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=FR(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 UT(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 Dc(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 GR=new WeakSet,vc=new WeakMap;function Qu(e){return GR.add(e),e}function kT(e,t){return vc.set(e,t),t}function KR(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 xT(e){return typeof e=="string"&&/^(?:0|[1-9]\d*)$/.test(e)}async function FT(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(!xT(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 GT(e,t,n,r,i,o=!0,a,s,l){let p=vc.get(e);if(GR.has(e)&&p!==void 0&&KR(e,p)){let L=await FT(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),Lc(e,t,r),UR(e,t,r,i)]),m=Dc(e,R),g=await zi(e,t,r,i,ht(e.having)||Nc(e)),y=OR(e,g),T=Oc.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);sl(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 lm(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 zR(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}=hu({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 Uc(e,G,Y,t,r);return{type:"SELECT",rows:G,columns:$,rowCount:G.length,warnings:[...u]}}function KT(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 Zu(e,t,n){KT(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 $R(e,t,n,r){let i=Zu(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,UT(e,t)),l}async function BR(e,t,n,r,i=!1,o=!1){let a=Cc(e,n,null);return Ju(a,async()=>{let s=a.effectiveOptions,[l,p]=await Promise.all([e.left.type==="UNION"?BR(e.left,t,s,r,i,o):xt(Qu(e.left),t,s,r,void 0,i,o,"DERIVED"),xt(Qu(e.right),t,s,r,void 0,i,o,"DERIVED")]);return $R(l,p,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 VR(e){return"alias"in e&&typeof e.alias=="string"?e.alias:e.type==="FIELD"?e.field:null}function BT(e){let t=e.recursiveSpec;if(e.columnAliases)return[...e.columnAliases];let n=t.seed.columns.map(VR);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 JE(e){return e.columns.map((t,n)=>VR(t)??`__b53_column_${n}`)}function XE(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 WR(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?ve(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: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"){Ni(r.left,t,!0),Ni(r.right,t,!0);return}for(let i of Object.values(r))Ni(i,t,n)}async function QE(e,t,n,r,i){let o=await WR(e,n,r,i);e.columns.forEach(p=>Ni(p,o));let a=await Gi(e,JE(e),n,r,i),s=JE(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 HR(...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 WT(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=VT(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 HT(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 YT(e,t,n,r){let i=WT(e),o=await Promise.all(HR(...e).map(async(a,s)=>{let l=await xt(HT(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 ZE(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 eR(e,t,n){return e.cteName===null?void 0:n.get(e.cteName)?.columnMeta?.get(t)}function Ku(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 tR(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 jT(e,t,n,r,i){let o=e.recursiveSpec,a=BT(e),s=await QE(o.seed,a,t,i,r),l=new Map(r);l.set(e.name,{rows:[],columns:a,columnMeta:s});let p=await QE(o.recursiveTerm,a,t,i,l);a.forEach((K,k)=>{let G=s.get(K),Y=p.get(K);if(!G||!Y||!XE(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=tR(e.name,o.recursiveTerm),u=await WR(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||!XE(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 YT([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=ZE(o.seed,R),g=ZE(o.recursiveTerm,R),y=await ct(m,t,n,E,i,!0,!0),T=Zu(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=tR(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=eR(b.self,b.selfField,l)??eR(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=Ku(k,A.semantics),Y=w.get(G);Y?Y.push(K):w.set(G,[K])}let x=w.has(Ku("",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(Ku(G,A.semantics))??[];for(let ne of Y){let Pe=String(ne[b.sourceField]??"");Ot("=",G,Pe,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=Zu(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 Pe=String(ne[h.column]??""),Kt=k.path.some(re=>Ot("=",re,Pe,I.semantics));_({...ne,[h.markColumn]:Kt?h.markValue:h.defaultValue}),Kt||K.push({row:ne,path:[...k.path,Pe]})}}U=K}let V={type:"SELECT",rows:P,columns:v,rowCount:P.length,warnings:[...M]};return ue.set(V,C),V}async function Mc(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 jT(p,t,n,a,r):p.query.type==="SHOW_APPS"?c=await im(t):p.query.type==="DESCRIBE"?c=await om(p.query,t,r):p.query.type==="GENERATE_SERIES"?c=YR(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 bc(l,[...s])}function YR(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 $R(p,c,e.all,o)}if(!(e.from.cteName!=null&&e.from.cteName!==Le||e.joins.some(p=>p.table.cteName!=null)))return xt(e,t,n,i,r,o,!1,"DERIVED");let l=await zT(e,t,n,r,i);return o&&ue.set(l,await Gi(e,l.columns,t,i,r)),l}async function zT(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,CR(e)),d=PR(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),am(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=Cc(e,n,y),h=T.effectiveOptions,[I,C,v]=await Promise.all([ds(e,t,i),Lc(e,t,i),UR(e,t,i,r)]),P=Dc(e,C),U=await zi(e,t,i,r,ht(e.having)||Nc(e)),M=OR(e,U),N=ps(e,I)??fn(e,I);sl(N);let _=t,b=await lm(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(nR)),w.set(e.from.alias,$.columns)}else{let $=await Ju(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($=>Ju(T,async()=>{if($.table.cteName!=null){let L=c($.table.cteName);A.set($.table.alias,L.rows.map(nR)),w.set($.table.alias,L.columns)}else{let L=$.table.alias?N.joinConditions.get($.table.alias)??null:null,ne=await zR(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}=hu({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 Uc(e,k,G,t,i);return bc({type:"SELECT",rows:k,columns:Y,rowCount:k.length,warnings:[...R]},d)}async function Uc(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 Qf(o,e.from.subtableCode,()=>Rs(e.from.appId,r,i))}function nR(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`),hc(n,t.appId),Gf(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?rd(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&&vc.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 yE(m,t.subtableCode)}var jR=50;function qT(e){let t=Ae(e);return t!==null?JSON.stringify(t):e}function ec(e){return JSON.stringify(e)}function vn(e,t){return JSON.stringify(e.map((n,r)=>t[r]?qT(n):n))}function qi(e,t){let n=e.raw.get(ec(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,ec(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=ec(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],jR)){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=>kc(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,JT(y))}return p}function JT(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 kc(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 XT=6,es=Sa*XT;async function zR(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?ve(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?ve(A,T.appId):Je(m)}let v=[],P=!1;for(let A of y){let w=A[m]?.value,x=kc(w);(w==null||x.length===0)&&(P=!0),v.push(x)}let U=tu({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=eu(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`),hc(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 tc=new Map,nc=new Map,rc=new Map,ic=new Map,oc=new Map,ac=new Map;function xc(e){tc.delete(e),nc.delete(e),rc.delete(e),ic.delete(e),oc.delete(e),ac.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(ic,n,e);if(r)return r;let i=t.getFields(e);return hr(ic,n,e,i),i}async function wt(e,t,n){let r=yr(ac,n,e);if(r)return r;let i=t.getNumberPrecision(e);return hr(ac,n,e,i),i}async function Rs(e,t,n){let r=yr(oc,n,e);if(r)return r;let i=t.getProcessStatuses(e);return hr(oc,n,e,i),i}async function Fc(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 Ue(e,t,n){let r=yr(tc,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(tc,n,e,o),o}async function sc(e,t,n){let r=yr(nc,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(nc,n,e,o),o}async function QT(e,t,n){let r=await sc(e,t,n);return new Map([...r.entries()].map(([i,o])=>[i,new Set(o.keys())]))}async function rR(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)a.sortKind&&o.set(a.code,a.sortKind);return hr(rc,n,e,o),o}function ZT(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 eI(e,t,n,r){let i=ZT(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?ve(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?ve(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?ve(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?ve(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(Me(u.field));else if(u.type==="ARITH_COL"||u.type==="ARITH_AGG_COL")d=Q("number");else if(u.type==="WINDOW_COL")d=FR(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(Me(u))?.semantics;if(!d){let R=Me(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([tI(e,t,n),nI(e,t,n),eI(e,t,n,r)]);return{optionOrders:o,sortKinds:a,semantics:s}}async function tI(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 sc(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 sc(a.appId,t,n);for(let[l,p]of s.entries())r.set(`${a.alias}.${l}`,p)}return r}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 rR(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 rR(a.appId,t,n);for(let[l,p]of s.entries())r.set(`${a.alias}.${l}`,p)}return r}function qR(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 rI=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function iI(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||rI.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 iI(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 oI(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 UI(e,a,o)}async function aI(e,t,n,r,i){let{fieldInfos:o,prepared:a}=await JR(e,t,n,r,i);return xI(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=nm(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 Df({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 sI(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=ql(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 xf(o,t,a);return{...s,diagnostic:Ye(a,s)}}async function lI(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=Jl(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 Ff(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 uI(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=uI(n?za(n):[],r?za(r):[]),a=cI(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 cI(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 Gc(e,t,n,r,i,o){if(e.type==="INSERT"&&e.applyBlocks?.length)return oI(e,t,n,r,o);if(e.type==="UPSERT"&&(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length))return aI(e,t,n,r,o);if(e.type==="UPDATE"&&e.applyBlocks?.length){let a=await tm(e,t,n,r,o);if(a.type!=="VALIDATION")throw new Error("InternalError: APPLY VALIDATE ONLY returned a mutation result.");return a}return(await Kc(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 Kc(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=hE(R),m=(await pI(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"?EI:e.type.startsWith("UPSERT")?D=>RI(D,t,n.maxRecords??1e4):void 0,T=n.loadUpdateModeSnapshots??y,h=g.length>0&&T!==void 0,I=new Map;if(h){Kl(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=AE(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=$l(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=SE({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,ve(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 lc(e,t,n,r,i,o){let a=await Kc(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 pI(e,t,n,r,i,o,a,s){if(e.type==="UPDATE")return fI(e,n,r,i,o,s);let l,p,c,u,d;if(e.type==="INSERT"||e.type==="UPSERT")iR(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 Bc.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");iR(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 $c(e){return e.checkGroups?rr(e.checkGroups):[]}function iR(e,t){let n=new Set(t);for(let r of $c(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 dI=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 Qd(e.checkGroups)){let r=n.tableAlias?`${n.tableAlias}.${n.field}`:n.field,i=t.get(r)??t.get(n.field);if(dI.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 fI(e,t,n,r,i,o){if(e.from)return gI(e,e.from,t,n,r,i,o);await sm(e.assignments,t,n,r);let a=await Ue(e.appId,t,r),s=XR(e,a);Un(e,uc(a,e.appId));let l,p=new Map,c=new Map;if(aa(e)){let u=wl(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=Nl(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:mI(p.get(u.id),e.appId),evaluationFieldTypes:uc(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 EI(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 RI(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 XR(e,t){if(e.from)return[];let n=new Set;for(let r of $c(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 mI(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 uc(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 Im(e,t,n,i,o);Un(e,s.evaluationTypes);let l=await QR(e,t,n,r,i,o,a),p=await Ue(e.appId,n,i),c=Pl(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:Sw(u.get(f.id),e.appId,t.alias),evaluationFieldTypes:s.evaluationTypes}))}var yI=jR,hI=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 AI(e,t,n,i),l=await Im(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 SI(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=oR(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([...GI(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()],yI)){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=oR(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 AI(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 SI(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 Ue(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(hI.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 oR(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 Kc(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 TI(e,t,n,r){if(e.applyBlocks?.length)return sI(e,t,n,r);if(e.checkGroups?.length)return Qi(e,t,n,r);if(e.subtableCode)return BI(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 Ue(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 II(){return{type:"SELECT",distinct:!1,columns:[],from:{appId:0,alias:null,cteName:Le},joins:[],where:null,groupBy:[],having:null,orderMode:"CANONICAL",orderBy:[],limit:null,offset:null}}async function ZR(e,t,n,r,i){if(!n.enableImport)throw new Error("UnsupportedError: IMPORT capability is disabled.");let o=NE(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"?_E(e.source,E,u,n.maxRecords??1e4):DE(e.source,E,u,e.replaceSubtables??[],n.maxRecords??1e4,e.recordNumberSourceHeader),g=e.source.kind==="CSV"?"UPDATE":e.keyFields?"UPSERT":"INSERT",y=kE(m,u,d,R,g);if(e.source.kind==="CSV")return wI(e,m,y,d,t,n,i);Du(y,e.rejectLimit);let T=[...new Set(u.flatMap(k=>k.kind==="FIELD"?[k.field]:k.children))],h=Mu(y.errors,T),I=[...T,...vu],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(FE(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=GE(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=>xE(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 bI(e,o,t,n,r,i);let a={appId:e.appId,fields:e.fields,select:II(),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 Gc(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",lc(s,t,n,r,i,1));return p(u)}let c=await(s.type==="UPSERT_SELECT"?Yc(s,t,n,r,i):Vc(s,t,n,r,i));return p(c)}async function wI(e,t,n,r,i,o,a){if(!e.recordNumberSourceHeader||!e.replaceSubtables?.length)throw new Error("InternalError: incomplete CSV subtable replacement AST.");KE(t.records);let s=t.records.map(b=>b.recordNumberSourceValue??""),l=xu(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=$E(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};Du(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=Mu(g,U),N=[...U,...vu];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=Uu(_(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 bI(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=Ou(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=xu(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=$l(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 NI(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"?Pu(a.source,s,c,l):Ou(a.source,s,l,e.fields,o);if(a.audit=u.importAudit,a.source.kind==="JSON"||!a.source.projection)return u;let d=BE(a.source.projection),f=new Map(i??[]);f.set(ku,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 Bc={materialize:NI};function em(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 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 Bc.materialize(e,t,n,r,i,o),{rows:l,columns:p}=s;if(em(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 Ue(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:qR(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 cc(e,t,n,r,i){if(e.applyBlocks?.length)return tm(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 Ue(e.appId,t,r);return XR(e,E),Un(e,uc(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),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 Er(e,t,r),ut(e.where))return{type:"UPDATE",updatedCount:0};if(e.from!=null)return FI(e,e.from,t,n,r,i);let l=n.maxRecords??1e4;await sm(e.assignments,t,n,r);let p=await Ue(e.appId,t,r);if(aa(e)){let R=wl(e),m=(await it(t.getRecords,R.app,R.query,[...R.fields],{maxRecords:l,parallel:n.fetchParallel??1})).records,g=Nl(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 tm(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 CI(e,t,n,r,i);let o=await ee(e.appId,t,r),a=Dt(e,o),s=la(e,o),l=Ml(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=mf({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 CI(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 _I(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 kI(e,c,s);Lp("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 kf(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 PI(e){let t=e.type==="EXPLAIN"?e.query:e;return t.type==="UPDATE"&&ls(t)&&we(t.where)}var OI=`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 AI(e){if(e.unappliedKlikes.length>0)throw new Error(`UnsupportedError: ${hI}`)}async function SI(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=iu(e.where,{fieldTypes:s,fieldOptions:l});AI(c);let p=c.prefilter===null?"":Y(c.prefilter),u=new Set(oa(e,r));for(let R of TI(e.where))u.add(R);let d=await II(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 TI(e){return Ac(e)}async function II(e,t,n,r,i){let s=[...wI(t)].some(p=>n.get(p)?.fieldType==="STATUS")?await Mc(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 wI(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 bI(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=jl(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 NI(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 CI(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=zl(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,ve(s,n));continue}o.set(a,Q(i.has(a)?"number":"string"))}return o}async function PI(e,t,n,r,i,o){let a=await zR(e,t,n,r,i,o),s=await Me(e.appId,n,i),l=Nl(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 OI(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 LI(e,t,n,r){if(await pr(e,t,r),ut(e.where))return{type:"DELETE",deletedCount:0};if(e.subtableCode)return UI(e,t,n,r);let i=of(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=af(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 QT(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 Me(e.appId,t,r),c=QR(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 QR(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 Bc(e,t,n,r){if(t.length===0)return;let i=await Me(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 DI(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=rR(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:rR(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(ZR(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 Bc(e.appId,o,t,r),s=await xe(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),c=$c(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(MI(e.appId,d,Xi(R),i,m))}return{type:"UPDATE",updatedCount:c.length}}async function UI(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 Bc(e.appId,o,t,r),s=await xe(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),c=$c(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(ZR(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 $c(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}`]=lc(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 ZR(e,t,n,r,i){return{app:e,records:[{id:Number(t),revision:n,record:{[r]:{value:i}}}]}}function MI(e,t,n,r,i){return{app:e,records:[{id:Number(t),revision:n,record:{[r]:{value:i}}}]}}function kI(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 rR(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 lc(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 xI(e,t,n,r){let i=[];kt(e.where,i);let o=await Bc(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=$c(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:FI(R,e.subtableCode,g,S)}));m.sort((g,S)=>GI(g.flat,S.flat,e.by,l,se(n)));let y=m.map(g=>g.row.id??"");await t.putRecords(kI(e.appId,f,Xi(R),e.subtableCode,y))}return{type:"REORDER",reorderedParentCount:u.size}}function FI(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}`]=lc(a?.value));for(let[o,a]of Object.entries(n.value??{}))i[o]=lc(a?.value);return i}function GI(e,t,n,r,i={}){for(let o of n){let a=iR(o.key,e,i),s=iR(o.key,t,i),l=o.key.type==="FIELD_NAME"?r(Ue(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 iR(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 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 Gc.materialize(e,t,n,r,i,o),{rows:l,columns:c}=s;if(JR(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 Me(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:HR(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 Vc=Object.freeze(["\u30A2\u30D7\u30EAID","\u30A2\u30D7\u30EA\u540D","\u8AAC\u660E"]),Hc=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 em(e){let t=await e.getApps(),n=[...Vc],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 tm(e,t,n){let r=await ee(e.appId,t,n),i=[...Hc],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 KI(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 De||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 nm(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 rm(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 im(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 om=new WeakMap,am=new WeakMap,sm=new WeakMap,uc=new WeakMap,Yc=new WeakMap,lm=new WeakMap,um=new WeakMap;async function cm(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===Le?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&&Yc.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===Le)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[...Vc];if(_.type==="DESCRIBE")return[...Hc];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=$R(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&&uc.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=Nc.get(b)??us(b,K);G&&om.set(b,G);let j=G??fn(b,K);am.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,Pe=L.on.right.tableAlias;if(!ne||!Pe)continue;let Kt=ne===H&&Pe!==H?Pe:Pe===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(Oe=>Oe.table)].find(Oe=>ce(Oe)===Kt),Ns;if(L.table.cteName!==null)Ns=m.get(L.table.cteName)?.columnMeta?.get(Bt);else{let Oe=(await ee(L.table.appId,c,n)).find(et=>et.code===Ee(L.table,Bt));Ns=Oe?ve(Oe,L.table.appId):Je(Bt)}let Cs,Ps,ip,op;if($t?.cteName!==null&&$t?.cteName!==void 0){let Oe=m.get($t.cteName);Cs=Oe?.columnMeta?.get(re),y.has($t.cteName)&&Oe&&(ip=Oe.rows.length,Ps=Oe.rows.map(et=>vc(et[re])),op=Ps.some(et=>et.length===0))}else if($t){let Oe=(await ee($t.appId,c,n)).find(et=>et.code===Ee($t,re));Cs=Oe?ve(Oe,$t.appId):Je(re)}let io=Zl({fieldType:Ns?.fieldType,sourceSemantics:Cs?.semantics,sourceRowCount:ip,values:Ps,hasEmptyValue:op,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 qm=Ql(io,Bt,xi),ap=j.joinConditions.get(H),Jm=ap?Y(ap):void 0,Xm=j.joinRelations.get(H);B.set(H,{plan:io,queries:qm,additionalQuery:Jm,additionalRelation:Xm})}if(B.size>0&&sm.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=Wl(b,D),O=tr(b.checkGroups??[]),F=Ac(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:nl(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)),lm.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=iu(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))]]:[]))});um.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&&uc.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 cc(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 BI(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 oR(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)} ${BI(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 pc(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?$I(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=Gu(l),p=l.left.type==="FIELD"?l.left.field:"(unknown)";t.push(` ${Fu(c)}: ${c}`,` ${Ku(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=Gu(s),c=s.left.type==="FIELD"?s.left.field:void 0,p=oR(s.op),u=n.capability?.reasons.find(d=>d.functionName===l&&(c===void 0||d.field===c)&&d.operator===p);t.push(` ${Fu(l)}: ${l}`,` ${Ku(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)",` ${aR(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=Gu(s),c=s.left.type==="FIELD"?s.left.field:void 0,p=oR(s.op),u=n.capability?.reasons.find(d=>d.functionName===l&&(c===void 0||d.field===c)&&d.operator===p);t.push(` ${Fu(l)}: ${l}`,` ${Ku(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)}`,` ${aR(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 $I(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 Fu(e){return ie(e)?"relative date function":"kintone function"}function Gu(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 Ku(e){return ie(e)?"relative date evaluation":"kintone function evaluation"}function aR(e){return e.every(t=>t.right.type==="KINTONE_FUNC"&&ie(t.right.name))?"relative date client evaluations":"kintone function client evaluations"}var pm=new WeakMap;function dc(e,t){if(Array.isArray(e))return e.map(r=>dc(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 pm.set(a,{variableNames:r,defaultBoundIndexes:i}),a}return Object.fromEntries(Object.entries(n).map(([r,i])=>[r,dc(i,t)]))}function Ni(e,t){if(e.type==="SHOW_APPS")return{status:"STATIC",columns:[...Vc]};if(e.type==="DESCRIBE")return{status:"STATIC",columns:[...Hc]};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!==Le);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 WI(e){return new Map([...e].flatMap(([t,n])=>n.status==="STATIC"?[[t,n.relation]]:[]))}async function VI(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===Le||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 dm=Symbol("ksql.explainFetchPlan");function jc(e){return e[dm]}function fm(e,t){e[dm]=t}async function Em(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=Ec(r);try{let E=Sc(e,a),m=fl(E),y=ql(E,n),g=hR(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),_=dc(C,h);nt(_);let b=await Vi(_,t,R),D=WI(I),A=c?await cm(_,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 VI(_,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?pc(b):[...pc(b),...mm(HI(_,m.statements[M],A.capabilities,A.orderPlans,A.plainGroupByPlans,s,l,x,I,w,{maxRecords:i,recursiveLimits:f}),o)],F=cc(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:zc(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 fm(P,{statements:U}),P}finally{Uc(R)}}function HI(e,t,n,r,i,o=100,a=Ce,s={sources:[]},l=new Map,c,p=Rm()){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=Rm()){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(...ym(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 fc=new WeakMap;function Rm(){return{maxRecords:1e4,recursiveLimits:yt({})}}async function YI(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 cm(e.query,t,n,r,d,fc.get(e)),R={sources:[]},E=pc(d),m=d.hasServerOnlyWhereFunction&&!d.allowed?[...cc(f),...E]:[...cc(f),...E,...mm(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 fm(g,{statements:[{index:0,fetch:zc(R.sources),sources:R.sources}]}),g}function mm(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=XI(e,n,r,s,d);return l?es(R,d.sources):R}if(e.type==="WITH"){let R=ZI(e,n,r,s,d,a,u);return l?es(R,d.sources):R}if(e.type==="INSERT")return nw(e,t,i,o);if(e.type==="INSERT_SELECT")return rw(e,t,n,r,s);if(e.type==="UPSERT")return sw(e,t,i,o);if(e.type==="UPSERT_SELECT")return lw(e,t,n,r,s);if(e.type==="UPDATE")return iw(e,t,n,r,i,o,a);if(e.type==="DELETE")return aw(e,t);if(e.type==="REORDER")return uw(e,t);if(e.type==="VALIDATE")return qI(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 sR={none:0,count_only:1,exact:2,prefiltered:3,all:4};function zc(e){return e.reduce((t,n)=>sR[t]>=sR[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: ${zc(t).toUpperCase()}`,...n]}function jI(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:jI(o)};return e.sources.push(s),s}function zI(e){return[e.fetch.toUpperCase(),...e.limit===null?[]:[`(limit ${e.limit})`],...e.pending?["(\u672A\u78BA\u5B9A)"]:[]].join(" ")}function ja(e){return` fetch: ${zI(e)}`}function qI(e,t){let n=lm.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?hc:gc).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 JI(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 ym(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&&kR(e,c),f=d?"COUNT_TOTAL_COUNT":p?.kind==="CANONICAL_LOCAL"||c&&c.capability!=="EXACT_PUSHDOWN"?"FULL_SCAN":Ve(e),R=ew(e);c&&c.capability!=="EXACT_PUSHDOWN"&&R.push(...c.reasons.map(h=>h.code));let E=[],m=xf(e,Ui.get(e)?.allItems.length);t&&E.push(t),E.push(` mode: ${f}`);for(let h of Yc.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 / ${eu}`),E.push(" guard timing: after complete source fetch, before row materialization")}E.push(" records API: none")}for(let h of uc.get(e)??TR.get(e)??[])E.push(JI(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(...ym(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(gm).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"?DR(e):e);E.push(` app: APP${e.from.appId} (${e.from.appId})`);let I=p?.kind==="KORDER_CURSOR"?ou(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=om.get(e),I=am.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=OR(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?sm.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 Pe=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"&&Pe?.relation!=="superset"&&G.additionalRelation!=="superset"||Pe?.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=Pe?.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`)):Pe||Kt?(E.push(` pushdown applied: ${k}`),E.push(` relation: ${Pe?.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(...tw(e,n,r,i,s)),E}function XI(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 QI(e){let t=new Map,n=a=>ce(a)??(a.appId>0?`APP${a.appId}`:"source"),r=a=>a.cteName===Le?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&&Yc.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 ZI(e,t,n,r,i={sources:[]},o=1e4,a=yt({})){QI(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 BR(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=pm.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 ew(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 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 nw(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,...qc(ma(e,n,r))]:a}function rw(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 iw(e,t,n,r,i=100,o=Ce,a=1e4){if(e.applyBlocks?.length)return ow(e,t,i,o,a);let s=ef(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=cw(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(` ${dw(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 ow(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=um.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",...qc(o)]}function aw(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 sw(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,...qc(ma(e,n,r))]:a}function qc(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 lw(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 uw(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(gm).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 gm(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 cw(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 hm(e,t,n,r,i){let o=Fc(e),a=await Me(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 Me(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 pw(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 dw(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} = ${Am(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 Am(e){return`${lR(e.left)} ${e.op} ${lR(e.right)}`}function lR(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"?`(${Am(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 ke=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 Jc(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 ke("READ_ONLY_VIOLATION",e)}function gr(e,t){return new ke("PARSE_ERROR",e,t)}function Sm(){let e=new Pn;return new ke("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 fw(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 ke?e:e instanceof De||e instanceof T?new ke("PARSE_ERROR",Qi(e),e):e instanceof Pn||e?.name==="SearchAbortedError"?new ke("SEARCH_ABORTED",Qi(e),e):e instanceof Ge||e?.name==="FetchAllLimitError"?new ke("FETCH_LIMIT_EXCEEDED",Qi(e),e):e instanceof Error&&e.name==="ClientOperationError"&&"cause"in e?new ke("CLIENT_ERROR",e.message,e.cause):fw(e)?new ke("CLIENT_ERROR",Qi(e),e):new ke("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 Jc(n,e.statementIndex,r.type)}return n}var Ew=2,hs=5,Rw=3e4,mw=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??Ew;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??Rw,this.quarantineMs=n.quarantineMs??mw}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 yw(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=yw){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 hw(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 Tm(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 hw(gw(t.delete,t.sleep,t.isAlreadyReleasedError),t.cleanupTimeoutMs??5e3),n=!0,t.onReleased?.()}catch(l){throw t.onReleaseUnknown?.(),l}}),o)}}function Im(e){return wm(e,Sw(e))}function wm(e,t,n=!1,r){let i=[];for(let o of Object.values(e)){let a=Tw(o.options),s=Iw(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)&&!Aw.has(o.type)};l.semantics=te(l),i.push(l),o.fields&&i.push(...wm(o.fields,t,!0,o.type==="SUBTABLE"?o.code:r))}return i}var Aw=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE","SUBTABLE"]);function Sw(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 Tw(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 Iw(e,t){if(e==="NUMBER"||e==="RECORD_NUMBER")return"number";if(e==="CALC")return t==="NUMBER"||t==="NUMBER_DIGIT"?"number":"string"}function bm(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 ww="Filter aborted because of too many search results";function Nm(e){return e?.includes(ww)===!0}var Cm="/k/v1/records.json",Ts="/k/v1/records/cursor.json",bw=4096,Nw=2,Xc=e=>kintone.api.url(e,!0);function Cw(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(Cm,t,!0),i={"X-Requested-With":"XMLHttpRequest"};return new TextEncoder().encode(r).byteLength<=bw?{url:r,init:{method:"GET",credentials:"include",headers:i}}:{url:Xc(Cm),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 Pw(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 Ow(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(Xc(e),t,n)}catch(r){throw Zi(r)}}function Lw(e){if(!Number.isSafeInteger(e)||e<1||e>5)throw new Error("ArgumentError: cursorMaxActive must be an integer from 1 to 5.")}function _w(e={}){let t=e.cursorMaxActive??Nw;Lw(t);let n=null,r=null,i=new Set;return{async getRecords(a){try{let s=Cw(a),l=await fetch(s.url,s.init);if(!l.ok)throw await Pw(l);let c=await l.json();return Nm(l.headers.get("X-Cybozu-Warning"))?{...c,searchAborted:!0}:c}catch(s){throw Zi(s)}},async openCursor(a){let s=Xc(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??(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=Tm(Number(p.totalCount),{get:()=>kn(Ts,"GET",{id:u}),delete:()=>kn(Ts,"DELETE",{id:u}),isAlreadyReleasedError:Ow,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 Im(s.properties)},async getNumberPrecision(a){let s=await kn("/k/v1/app/settings.json","GET",{app:a});return Af(s)},async getProcessStatuses(a){let s=await kn("/k/v1/app/status.json","GET",{app:a,lang:"user"});return{enable:s.enable,states:bm(s.states)}}}}var Pm=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 Dw(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 Sm();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 Pm.has(c)?Dw(c):Reflect.get(l,c,p)},has(l,c){return Pm.has(c)?!1:Reflect.has(l,c)}})}function vw(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=vw(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 Uw="A-Za-z",Mw="\\u3040-\\u30FF\\u3400-\\u9FFF\\uF900-\\uFAFF\\uFF01-\\uFF60",Zc=`${Uw}${Mw}`,Lm=`${Zc}0-9_`,kw=new RegExp(`^[${Zc}]$`,"u"),xw=new RegExp(`^[${Lm}]$`,"u"),Fw=new RegExp(`^[${Zc}][${Lm}]{0,63}$`,"u");function Gw(e){return kw.test(e)}function Kw(e){return xw.test(e)}function ep(e){let t=e.normalize("NFC").toUpperCase();if(!Fw.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 Qc(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 Bw(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 $w(e,t){let n=t>0?e[t-1]:"";if(Qc(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,!Gw(e[l]??""))return null;for(l++;l<e.length&&Kw(e[l]);)l++;s=l;try{o=ep(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&&Qc(e[l]);)l++;if(l===f)return null}let c=l,p=null;if(e[l]==="@"){l++;let f=l;for(;l<e.length&&Bw(e[l]);)l++;if(l===f)return null;p=e.slice(f,l)}let u=l<e.length?e[l]:"";if(Qc(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 tp(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=$w(e,n);if(!i){n++;continue}t.push(i),n=i.fullEnd}return t}function Om(e){let t=9e8;for(;e.has(t);)t++;return e.add(t),t}function _m(e,t="dev",n){let r=tp(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=Om(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=Om(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 Dm=new Set(["client","logicalApps","maxRecords","recursiveCteMaxDepth","recursiveCteMaxRows","recursiveCteMaxExpansions","fetchParallel","cursorMaxActive"]),vm=new Set([...Dm,"onLimitReached"]),Ww=new Set([...vm,"variables","tempTableMaxRows"]);function Um(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 Mm(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 Vw(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 km(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=ep(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 xm(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 np(e,t){Um(e);let n=t==="run"?vm:Dm;Mm(e.client);let r=xm(e,n,t==="run"?"runQuery":"explainQuery"),i=km(e.logicalApps);return{client:e.client,...i===void 0?{}:{logicalApps:i},executeOptions:r}}function Fm(e){Um(e),Mm(e.client),e.variables!==void 0&&Vw(e.variables),e.tempTableMaxRows!==void 0&&Sr(e.tempTableMaxRows,"tempTableMaxRows");let t=xm(e,Ww,"runBatch"),n=km(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 Hw(e,t,n){return e.slice(t,n)}function to(e,t,n){let r=tp(e),i=r.find(c=>c.profile!==null);if(i!==void 0)throw new Error(`ArgumentError: browser engine library does not support @profile suffixes (${Hw(e,i.start,i.fullEnd)}).`);if(!r.some(c=>c.source==="logical"))return{sql:e,client:t,logicalBindings:[]};let o=_m(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 Yw(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,String(n)]))}function jw(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=uR(e);return{type:"query",rows:e.rows.map(Yw),columns:e.columns.map(r=>jw(r,n)),rowCount:e.rowCount,warnings:[...e.warnings??[]],...e.validateStats?{validateStats:e.validateStats}:{},metrics:ws(t)}}function Gm(e,t={}){let n=new Zt(e).tokenize(),r=new en(n,t).parse();return nt(r),r}function Km(e,t={}){let n=new Zt(e).tokenize(),r=new en(n,t).parseStatements();return r.forEach(nt),r}function rp(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 Bm(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 zw(e){if(e.trim()==="")throw gr("SQL statement is empty");try{return Gm(e,{import:!0})}catch(t){let n=Bm(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 $m(e){if(co(e)==="UNKNOWN")throw Ze("Unclassifiable statement is not allowed");return e}function Wm(e){if(e.trim()==="")throw gr("SQL statement is empty");try{return Km(e,{import:!0})}catch(t){throw Bm(t)}}function qw(e){let t=$m(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(rp(t))throw Ze("APPLY statements are not allowed in engine library queries");if(!mp(t))throw Ze(`${n} does not return rows; use runBatch for batch-scoped or non-row-returning read-only statements`)}function Vm(e){let t=$m(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(rp(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 Hm(e){let t=zw(e);return qw(t),t}function Ym(e){let t=Wm(e);return t.forEach(Vm),t}function jm(e){let t=e.trim(),n=Wm(t);n.forEach(Vm);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 Jw(e){let t=e.error,n=t?.cause!==void 0?Mn(t.cause):new ke("EXECUTION_ERROR",t?.message??`Statement ${e.index} failed`);return Jc(n,e.index,e.type)}async function Xw(e,t){let n=[],r=[];try{let i=Fm(t),o=to(e,i.client,i.logicalApps);r=o.logicalBindings,n=Ym(o.sql);let a=await Ar(o.client,p=>gR(o.sql,hr(p),{...i.executeOptions,captureColumnMeta:!0})),s=a.statements.find(p=>p.status==="error");if(s!==void 0)throw Jw(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 zm(e){if(e===null||typeof e!="object"||e.type!=="SELECT")throw new Error("Engine returned a non-SELECT result")}async function Qw(e,t){let n=[];try{let r=np(t,"run"),i=to(e,r.client,r.logicalApps);n=i.logicalBindings;let a=Hm(i.sql).type==="VALIDATE"?{...r.executeOptions,onLimitReached:"error"}:r.executeOptions,s=await Ar(i.client,l=>Rc(i.sql,hr(l),{...a,captureColumnMeta:!0}));return zm(s),bs(s)}catch(r){throw no(Mn(r),n)}}async function Zw(e,t){let n=[],r=[];try{let i=np(t,"explain"),o=to(e,i.client,i.logicalApps);r=o.logicalBindings;let a=jm(o.sql);if(n=a.statements,a.legacySql!==void 0){let p=await Ar(o.client,f=>Rc(a.legacySql,hr(f),i.executeOptions));zm(p);let u=ro(p.rows.map(f=>String(f.plan??"")),r),d=jc(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=>Em(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=jc(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 $D="3.67.0";export{ke as KsqlEngineError,_w as createReadonlyKintoneClient,Zw as explainQuery,Xw as runBatch,Qw as runQuery,$D as 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 LI(e){if(e.unappliedKlikes.length>0)throw new Error(`UnsupportedError: ${OI}`)}async function _I(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=au(e.where,{fieldTypes:s,fieldOptions:l});LI(p);let c=p.prefilter===null?"":j(p.prefilter),u=new Set(la(e,r));for(let R of DI(e.where))u.add(R);let d=await vI(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 DI(e){return Ic(e)}async function vI(e,t,n,r,i){let s=[...MI(t)].some(c=>n.get(c)?.fieldType==="STATUS")?await Fc(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 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 UI(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=ql(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 kI(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 xI(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=Jl(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,ve(s,n));continue}o.set(a,Q(i.has(a)?"number":"string"))}return o}async function FI(e,t,n,r,i,o){let a=await QR(e,t,n,r,i,o),s=await Ue(e.appId,n,i),l=Pl(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 GI(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 KI(e,t,n,r){if(await Er(e,t,r),ut(e.where))return{type:"DELETE",deletedCount:0};if(e.subtableCode)return WI(e,t,n,r);let i=lf(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=uf(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 lI(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 Ue(e.appId,t,r),p=nm(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 nm(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 Wc(e,t,n,r){if(t.length===0)return;let i=await Ue(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 BI(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=aR(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:aR(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(rm(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 VI(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 Wc(e.appId,o,t,r),s=await xe(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),p=Hc(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(HI(e.appId,d,eo(R),i,m))}return{type:"UPDATE",updatedCount:p.length}}async function WI(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 Wc(e.appId,o,t,r),s=await xe(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),p=Hc(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(rm(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 Hc(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}`]=pc(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 rm(e,t,n,r,i){return{app:e,records:[{id:Number(t),revision:n,record:{[r]:{value:i}}}]}}function HI(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){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 aR(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 pc(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 jI(e,t,n,r){let i=[];kt(e.where,i);let o=await Wc(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=Hc(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:zI(R,e.subtableCode,y,T)}));m.sort((y,T)=>qI(y.flat,T.flat,e.by,l,le(n)));let g=m.map(y=>y.row.id??"");await t.putRecords(YI(e.appId,f,eo(R),e.subtableCode,g))}return{type:"REORDER",reorderedParentCount:u.size}}function zI(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}`]=pc(a?.value));for(let[o,a]of Object.entries(n.value??{}))i[o]=pc(a?.value);return i}function qI(e,t,n,r,i={}){for(let o of n){let a=sR(o.key,e,i),s=sR(o.key,t,i),l=o.key.type==="FIELD_NAME"?r(Me(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 sR(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 Yc(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 Bc.materialize(e,t,n,r,i,o),{rows:l,columns:p}=s;if(em(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 Ue(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:qR(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 jc=Object.freeze(["\u30A2\u30D7\u30EAID","\u30A2\u30D7\u30EA\u540D","\u8AAC\u660E"]),zc=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 im(e){let t=await e.getApps(),n=[...jc],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 om(e,t,n){let r=await ee(e.appId,t,n),i=[...zc],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 JI(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 De||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 am(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 sm(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 lm(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 um=new WeakMap,cm=new WeakMap,pm=new WeakMap,dc=new WeakMap,qc=new WeakMap,dm=new WeakMap,fm=new WeakMap;async function Em(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===Le?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&&qc.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===Le)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[...jc];if(_.type==="DESCRIBE")return[...zc];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=YR(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&&dc.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=Oc.get(b)??ps(b,K);G&&um.set(b,G);let Y=G??fn(b,K);cm.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,Pe=L.on.right.tableAlias;if(!ne||!Pe)continue;let Kt=ne===H&&Pe!==H?Pe:Pe===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(Oe=>Oe.table)].find(Oe=>ce(Oe)===Kt),Ps;if(L.table.cteName!==null)Ps=m.get(L.table.cteName)?.columnMeta?.get($t);else{let Oe=(await ee(L.table.appId,p,n)).find(et=>et.code===Ee(L.table,$t));Ps=Oe?ve(Oe,L.table.appId):Je($t)}let Os,Ls,sp,lp;if(Bt?.cteName!==null&&Bt?.cteName!==void 0){let Oe=m.get(Bt.cteName);Os=Oe?.columnMeta?.get(re),g.has(Bt.cteName)&&Oe&&(sp=Oe.rows.length,Ls=Oe.rows.map(et=>kc(et[re])),lp=Ls.some(et=>et.length===0))}else if(Bt){let Oe=(await ee(Bt.appId,p,n)).find(et=>et.code===Ee(Bt,re));Os=Oe?ve(Oe,Bt.appId):Je(re)}let so=tu({fieldType:Ps?.fieldType,sourceSemantics:Os?.semantics,sourceRowCount:sp,values:Ls,hasEmptyValue:lp,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 Zm=eu(so,$t,Ki),up=Y.joinConditions.get(H),eg=up?j(up):void 0,tg=Y.joinRelations.get(H);$.set(H,{plan:so,queries:Zm,additionalQuery:eg,additionalRelation:tg})}if($.size>0&&pm.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=Hl(b,D),O=rr(b.checkGroups??[]),F=Ic(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:il(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)),dm.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=au(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))]]:[]))});fm.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&&dc.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 fc(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 XI(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 lR(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)} ${XI(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 Ec(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?QI(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=Bu(l),c=l.left.type==="FIELD"?l.left.field:"(unknown)";t.push(` ${$u(p)}: ${p}`,` ${Vu(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=Bu(s),p=s.left.type==="FIELD"?s.left.field:void 0,c=lR(s.op),u=n.capability?.reasons.find(d=>d.functionName===l&&(p===void 0||d.field===p)&&d.operator===c);t.push(` ${$u(l)}: ${l}`,` ${Vu(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)",` ${uR(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=Bu(s),p=s.left.type==="FIELD"?s.left.field:void 0,c=lR(s.op),u=n.capability?.reasons.find(d=>d.functionName===l&&(p===void 0||d.field===p)&&d.operator===c);t.push(` ${$u(l)}: ${l}`,` ${Vu(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)}`,` ${uR(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 QI(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 $u(e){return ie(e)?"relative date function":"kintone function"}function Bu(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 Vu(e){return ie(e)?"relative date evaluation":"kintone function evaluation"}function uR(e){return e.every(t=>t.right.type==="KINTONE_FUNC"&&ie(t.right.name))?"relative date client evaluations":"kintone function client evaluations"}var Rm=new WeakMap;function Rc(e,t){if(Array.isArray(e))return e.map(r=>Rc(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 Rm.set(a,{variableNames:r,defaultBoundIndexes:i}),a}return Object.fromEntries(Object.entries(n).map(([r,i])=>[r,Rc(i,t)]))}function Ci(e,t){if(e.type==="SHOW_APPS")return{status:"STATIC",columns:[...jc]};if(e.type==="DESCRIBE")return{status:"STATIC",columns:[...zc]};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!==Le);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 ZI(e){return new Map([...e].flatMap(([t,n])=>n.status==="STATIC"?[[t,n.relation]]:[]))}async function ew(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===Le||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 mm=Symbol("ksql.explainFetchPlan");function Jc(e){return e[mm]}function gm(e,t){e[mm]=t}async function ym(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=gc(r);try{let E=Su(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=wc(E.hasDirectives?e.slice(E.headerEnd):e,a,E.hasDirectives&&E.meta.dialect===1),y=Rl(g),T=Xl(g,n),h=TR(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=Rc(b,C);nt(D);let A=await ji(D,t,R),w=ZI(v),x=p?await Em(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 ew(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?Ec(A):[...Ec(A),...Am(tw(D,y.statements[N],x.capabilities,x.orderPlans,x.plainGroupByPlans,s,l,F,v,O,{maxRecords:i,recursiveLimits:f}),o)],K=fc(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:Xc(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 gm(M,{statements:U}),M}finally{xc(R)}}function tw(e,t,n,r,i,o=100,a=Ce,s={sources:[]},l=new Map,p,c=hm()){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=hm()){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(...Sm(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 mc=new WeakMap;function hm(){return{maxRecords:1e4,recursiveLimits:yt({})}}async function nw(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 Em(e.query,t,n,r,d,mc.get(e)),R={sources:[]},E=Ec(d),m=d.hasServerOnlyWhereFunction&&!d.allowed?[...fc(f),...E]:[...fc(f),...E,...Am(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 gm(y,{statements:[{index:0,fetch:Xc(R.sources),sources:R.sources}]}),y}function Am(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=sw(e,n,r,s,d);return l?rs(R,d.sources):R}if(e.type==="WITH"){let R=uw(e,n,r,s,d,a,u);return l?rs(R,d.sources):R}if(e.type==="INSERT")return dw(e,t,i,o);if(e.type==="INSERT_SELECT")return fw(e,t,n,r,s);if(e.type==="UPSERT")return gw(e,t,i,o);if(e.type==="UPSERT_SELECT")return yw(e,t,n,r,s);if(e.type==="UPDATE")return Ew(e,t,n,r,i,o,a);if(e.type==="DELETE")return mw(e,t);if(e.type==="REORDER")return hw(e,t);if(e.type==="VALIDATE")return ow(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 cR={none:0,count_only:1,exact:2,prefiltered:3,all:4};function Xc(e){return e.reduce((t,n)=>cR[t]>=cR[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: ${Xc(t).toUpperCase()}`,...n]}function rw(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:rw(o)};return e.sources.push(s),s}function iw(e){return[e.fetch.toUpperCase(),...e.limit===null?[]:[`(limit ${e.limit})`],...e.pending?["(\u672A\u78BA\u5B9A)"]:[]].join(" ")}function Ja(e){return` fetch: ${iw(e)}`}function ow(e,t){let n=dm.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?Tc:Sc).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 aw(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 Sm(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&&KR(e,p),f=d?"COUNT_TOTAL_COUNT":c?.kind==="CANONICAL_LOCAL"||p&&p.capability!=="EXACT_PUSHDOWN"?"FULL_SCAN":We(e),R=cw(e);p&&p.capability!=="EXACT_PUSHDOWN"&&R.push(...p.reasons.map(h=>h.code));let E=[],m=Kf(e,xi.get(e)?.allItems.length);t&&E.push(t),E.push(` mode: ${f}`);for(let h of qc.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 / ${nu}`),E.push(" guard timing: after complete source fetch, before row materialization")}E.push(" records API: none")}for(let h of dc.get(e)??NR.get(e)??[])E.push(aw(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(...Sm(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(Tm).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"?kR(e):e);E.push(` app: APP${e.from.appId} (${e.from.appId})`);let I=c?.kind==="KORDER_CURSOR"?su(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=um.get(e),I=cm.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=vR(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?pm.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 Pe=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"&&Pe?.relation!=="superset"&&G.additionalRelation!=="superset"||Pe?.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=Pe?.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`)):Pe||Kt?(E.push(` pushdown applied: ${k}`),E.push(` relation: ${Pe?.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(...pw(e,n,r,i,s)),E}function sw(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 lw(e){let t=new Map,n=a=>ce(a)??(a.appId>0?`APP${a.appId}`:"source"),r=a=>a.cteName===Le?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&&qc.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 uw(e,t,n,r,i={sources:[]},o=1e4,a=yt({})){lw(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 HR(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=Rm.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 cw(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 pw(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 dw(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,...Qc(ha(e,n,r))]:a}function fw(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 Ew(e,t,n,r,i=100,o=Ce,a=1e4){if(e.applyBlocks?.length)return Rw(e,t,i,o,a);let s=rf(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=Aw(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(` ${Tw(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 Rw(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=fm.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",...Qc(o)]}function mw(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 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,...Qc(ha(e,n,r))]:a}function Qc(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 yw(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 hw(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(Tm).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 Tm(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 Aw(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 Im(e,t,n,r,i){let o=$c(e),a=await Ue(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 Ue(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 Sw(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 Tw(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} = ${wm(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 wm(e){return`${pR(e.left)} ${e.op} ${pR(e.right)}`}function pR(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"?`(${wm(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 ke=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 Zc(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 ke("READ_ONLY_VIOLATION",e)}function Ar(e,t){return new ke("PARSE_ERROR",e,t)}function bm(){let e=new Ln;return new ke("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 Iw(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 ke?e:e instanceof De||e instanceof S?new ke("PARSE_ERROR",to(e),e):e instanceof Ln||e?.name==="SearchAbortedError"?new ke("SEARCH_ABORTED",to(e),e):e instanceof Ge||e?.name==="FetchAllLimitError"?new ke("FETCH_LIMIT_EXCEEDED",to(e),e):e instanceof Error&&e.name==="ClientOperationError"&&"cause"in e?new ke("CLIENT_ERROR",e.message,e.cause):Iw(e)?new ke("CLIENT_ERROR",to(e),e):new ke("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 Zc(n,e.statementIndex,r.type)}return n}var ww=2,Ss=5,bw=3e4,Nw=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??ww;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??bw,this.quarantineMs=n.quarantineMs??Nw}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 Cw(e){let t=e;return t?.status===404&&t.code==="GAIA_CN01"}async function Pw(e,t=r=>new Promise(i=>setTimeout(i,r)),n=Cw){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 Ow(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 Nm(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 Ow(Pw(t.delete,t.sleep,t.isAlreadyReleasedError),t.cleanupTimeoutMs??5e3),n=!0,t.onReleased?.()}catch(l){throw t.onReleaseUnknown?.(),l}}),o)}}function Cm(e){return Pm(e,_w(e))}function Pm(e,t,n=!1,r){let i=[];for(let o of Object.values(e)){let a=Dw(o.options),s=vw(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)&&!Lw.has(o.type)};l.semantics=te(l),i.push(l),o.fields&&i.push(...Pm(o.fields,t,!0,o.type==="SUBTABLE"?o.code:r))}return i}var Lw=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE","SUBTABLE"]);function _w(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 Dw(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 vw(e,t){if(e==="NUMBER"||e==="RECORD_NUMBER")return"number";if(e==="CALC")return t==="NUMBER"||t==="NUMBER_DIGIT"?"number":"string"}function Om(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 Lm(e){return e?.includes(Mw)===!0}var _m="/k/v1/records.json",ws="/k/v1/records/cursor.json",Uw=4096,kw=2,ep=e=>kintone.api.url(e,!0);function xw(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(_m,t,!0),i={"X-Requested-With":"XMLHttpRequest"};return new TextEncoder().encode(r).byteLength<=Uw?{url:r,init:{method:"GET",credentials:"include",headers:i}}:{url:ep(_m),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 Fw(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 Gw(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(ep(e),t,n)}catch(r){throw no(r)}}function Kw(e){if(!Number.isSafeInteger(e)||e<1||e>5)throw new Error("ArgumentError: cursorMaxActive must be an integer from 1 to 5.")}function $w(e={}){let t=e.cursorMaxActive??kw;Kw(t);let n=null,r=null,i=new Set;return{async getRecords(a){try{let s=xw(a),l=await fetch(s.url,s.init);if(!l.ok)throw await Fw(l);let p=await l.json();return Lm(l.headers.get("X-Cybozu-Warning"))?{...p,searchAborted:!0}:p}catch(s){throw no(s)}},async openCursor(a){let s=ep(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??(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=Nm(Number(c.totalCount),{get:()=>Fn(ws,"GET",{id:u}),delete:()=>Fn(ws,"DELETE",{id:u}),isAlreadyReleasedError:Gw,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 Cm(s.properties)},async getNumberPrecision(a){let s=await Fn("/k/v1/app/settings.json","GET",{app:a});return If(s)},async getProcessStatuses(a){let s=await Fn("/k/v1/app/status.json","GET",{app:a,lang:"user"});return{enable:s.enable,states:Om(s.states)}}}}var Dm=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 Bw(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 bm();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 Dm.has(p)?Bw(p):Reflect.get(l,p,c)},has(l,p){return Dm.has(p)?!1:Reflect.has(l,p)}})}function Vw(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=Vw(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 Ww="A-Za-z",Hw="\\u3040-\\u30FF\\u3400-\\u9FFF\\uF900-\\uFAFF\\uFF01-\\uFF60",np=`${Ww}${Hw}`,Mm=`${np}0-9_`,Yw=new RegExp(`^[${np}]$`,"u"),jw=new RegExp(`^[${Mm}]$`,"u"),zw=new RegExp(`^[${np}][${Mm}]{0,63}$`,"u");function qw(e){return Yw.test(e)}function Jw(e){return jw.test(e)}function rp(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 tp(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(tp(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=rp(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&&tp(e[l]);)l++;if(l===f)return null}let p=l,c=null;if(e[l]==="@"){l++;let f=l;for(;l<e.length&&Xw(e[l]);)l++;if(l===f)return null;c=e.slice(f,l)}let u=l<e.length?e[l]:"";if(tp(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 ip(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=Qw(e,n);if(!i){n++;continue}t.push(i),n=i.fullEnd}return t}function vm(e){let t=9e8;for(;e.has(t);)t++;return e.add(t),t}function Um(e,t="dev",n){let r=ip(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=vm(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=vm(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 km=new Set(["client","logicalApps","maxRecords","recursiveCteMaxDepth","recursiveCteMaxRows","recursiveCteMaxExpansions","fetchParallel","cursorMaxActive"]),xm=new Set([...km,"onLimitReached"]),Zw=new Set([...xm,"variables","tempTableMaxRows"]);function Fm(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 Gm(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 Km(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=rp(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 $m(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 op(e,t){Fm(e);let n=t==="run"?xm:km;Gm(e.client);let r=$m(e,n,t==="run"?"runQuery":"explainQuery"),i=Km(e.logicalApps);return{client:e.client,...i===void 0?{}:{logicalApps:i},executeOptions:r}}function Bm(e){Fm(e),Gm(e.client),e.variables!==void 0&&eb(e.variables),e.tempTableMaxRows!==void 0&&Ir(e.tempTableMaxRows,"tempTableMaxRows");let t=$m(e,Zw,"runBatch"),n=Km(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 tb(e,t,n){return e.slice(t,n)}function io(e,t,n){let r=ip(e),i=r.find(p=>p.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(p=>p.source==="logical"))return{sql:e,client:t,logicalBindings:[]};let o=Um(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 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 Cs(e,t=e.metrics){let n=dR(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:Ns(t)}}function Vm(e,t={}){let n=new Zt(e).tokenize(),r=new en(n,t).parse();return nt(r),r}function Wm(e,t={}){let n=new Zt(e).tokenize(),r=new en(n,t).parseStatements();return r.forEach(nt),r}function ap(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 Hm(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 ib(e){if(e.trim()==="")throw Ar("SQL statement is empty");try{return Vm(e,{import:!0})}catch(t){let n=Hm(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 Ym(e){if(Eo(e)==="UNKNOWN")throw Ze("Unclassifiable statement is not allowed");return e}function jm(e){if(e.trim()==="")throw Ar("SQL statement is empty");try{return Wm(e,{import:!0})}catch(t){throw Hm(t)}}function ob(e){let t=Ym(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(ap(t))throw Ze("APPLY statements are not allowed in engine library queries");if(!hp(t))throw Ze(`${n} does not return rows; use runBatch for batch-scoped or non-row-returning read-only statements`)}function zm(e){let t=Ym(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(ap(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 qm(e){let t=ib(e);return ob(t),t}function Jm(e){let t=jm(e);return t.forEach(zm),t}function Xm(e){let t=e.trim(),n=jm(t);n.forEach(zm);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?xn(t.cause):new ke("EXECUTION_ERROR",t?.message??`Statement ${e.index} failed`);return Zc(n,e.index,e.type)}async function sb(e,t){let n=[],r=[];try{let i=Bm(t),o=io(e,i.client,i.logicalApps);r=o.logicalBindings,n=Jm(o.sql);let a=await Tr(o.client,c=>SR(o.sql,Sr(c),{...i.executeOptions,captureColumnMeta:!0})),s=a.statements.find(c=>c.status==="error");if(s!==void 0)throw ab(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 Qm(e){if(e===null||typeof e!="object"||e.type!=="SELECT")throw new Error("Engine returned a non-SELECT result")}async function lb(e,t){let n=[];try{let r=op(t,"run"),i=io(e,r.client,r.logicalApps);n=i.logicalBindings;let a=qm(i.sql).type==="VALIDATE"?{...r.executeOptions,onLimitReached:"error"}:r.executeOptions,s=await Tr(i.client,l=>yc(i.sql,Sr(l),{...a,captureColumnMeta:!0}));return Qm(s),Cs(s)}catch(r){throw oo(xn(r),n)}}async function ub(e,t){let n=[],r=[];try{let i=op(t,"explain"),o=io(e,i.client,i.logicalApps);r=o.logicalBindings;let a=Xm(o.sql);if(n=a.statements,a.legacySql!==void 0){let c=await Tr(o.client,f=>yc(a.legacySql,Sr(f),i.executeOptions));Qm(c);let u=ao(c.rows.map(f=>String(f.plan??"")),r),d=Jc(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=>ym(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=Jc(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 nv="3.68.0";export{ke as KsqlEngineError,$w as createReadonlyKintoneClient,ub as explainQuery,sb as runBatch,lb as runQuery,nv as version};