@rex0220/kintone-sql-tools 3.60.0 → 3.62.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-cli/ksql.js +5634 -5361
- package/dist-engine/index.cjs +13 -13
- package/dist-engine/index.mjs +13 -13
- package/dist-engine/ksql-engine.umd.js +13 -13
- package/dist-engine/meta/bundle-baseline.json +10 -10
- package/dist-engine/meta/cjs.json +124 -71
- package/dist-engine/meta/esm.json +124 -71
- package/dist-engine/meta/umd.json +124 -71
- package/dist-mcp/ksql-mcp.js +5618 -5360
- package/dist-mcpb/ksql-mcp.mcpb +0 -0
- package/package.json +1 -1
package/dist-engine/index.mjs
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
async function Ce(e,t,n,r,i={}){let o=i.pageSize??zR,a=Math.max(1,i.parallel??qR),s=i.maxRecords??XR,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,g=0,y=Rc(n,E),m=await Ec(e,t,y,u,o,g);if(fc(m,i),d.push(...m.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 Le(R)}if(m.records.length<o)return d;for(g+=o,g>=Ja&&(E=gc(m.records),g=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 Le(R)}let A=p-d.length,h=Math.ceil(A/o),S=Math.max(1,Math.min(a,h)),w=[];for(let P=0;P<S;P++){let D=g+P*o;if(D>=Ja)break;w.push(D)}let N=Rc(n,E),b=await Promise.all(w.map(P=>Ec(e,t,N,u,o,P)));for(let P of b)fc(P,i);let _=!1;for(let P of b){if(d.push(...P.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 Le(R)}if(P.records.length<o){_=!0;break}}if(_)break;if(g+=o*w.length,g>=Ja){let P=b[b.length-1];E=gc(P.records),g=0}}return d}function fc(e,t){e.searchAborted&&t.onSearchAborted?.()}function yc(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 zR=500,qR=1,XR=1e4,Ja=1e4;async function Ec(e,t,n,r,i,o){let a=JR(n,i,o);return e({app:t,query:a,fields:r})}function Rc(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 JR(e,t,n){let r=e.trimEnd(),i=`limit ${t} offset ${n}`;return r?`${r} ${i}`:i}function gc(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 Le=class extends Error{constructor(n,r=!1){super(n);this.completeInputWrapped=r;this.name="FetchAllLimitError"}};var QR=/^([+-]?)(?:(\d+)(?:\.(\d*))?|\.(\d+))(?:[eE]([+-]?)(\d+))?$/;function ZR(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 ye(e){let t=QR.exec(e.trim());if(t===null)return null;let n=ZR(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 Qa(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 mc(e){let t=ye(e);return t===null?null:Qa(t)}function eg(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 Bi(e,t){if(e.sign!==t.sign)return e.sign<t.sign?-1:1;if(e.sign===0)return 0;let n=eg(e,t);return e.sign===-1?n===0?0:n===-1?1:-1:n}function Ki(e,t){let n=ye(e),r=ye(t);if(n===null||r===null)throw new Error("ArgumentError: compareDecimal requires finite decimal inputs.");return Bi(n,r)}var Ye="__NO_FROM__";function Za(e){return e.windowKind===void 0||e.windowKind==="RANKING"}function $i(e){return e.windowKind==="AGGREGATE"}function es(e){return e.windowKind==="VALUE"}function Ee(e){return{type:"NUMBER",value:Number(e),raw:e}}function W(e){let t=e.raw??String(e.value);return mc(t)??t}function Ac(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 tg(e){return`${e.tableAlias??""}\0${e.field}`}function X(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=tg(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 hc(e){return X(e).type!=="NONE"}function Sc(e,t){let n=X(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 Hi(e){if(!e||typeof e!="object")return"UNKNOWN";let t=e;return typeof t.type=="string"?t.type:"UNKNOWN"}function Ot(e){return e==="INSERT"||e==="INSERT_SELECT"||e==="UPDATE"||e==="DELETE"||e==="UPSERT"||e==="UPSERT_SELECT"||e==="REORDER"||e==="IMPORT"}function ng(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 ts(e){return Ot(e.type)&&!("validateOnly"in e&&e.validateOnly===!0)}function Pn(e){return!ts(e)&&(ng(e.type)||Ot(e.type))}function Tc(e){return Pn(e)?e.type==="SELECT"||e.type==="WITH"||e.type==="UNION"||e.type==="SHOW_APPS"||e.type==="DESCRIBE"||e.type==="VALIDATE":!1}var Ic=new Set(["STDDEV_POP","STDDEV_SAMP","VAR_POP","VAR_SAMP","MEDIAN","MODE"]);function we(e,t){for(let n of t)e.add(n)}function Vi(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"&&Ic.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=>Vi(i,t)):Vi(r,t))}function Wi(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"&&!Ic.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=>Wi(i,t)):Wi(r,t))}function Ct(e){let t=new Set;if(Ot(e.type))return t.add("DML"),t;switch(e.type){case"VALIDATE":t.add("VALIDATE");break;case"SELECT":we(t,Nn(e));break;case"UNION":we(t,bc(e));break;case"WITH":for(let n of e.ctes)n.query.type!=="GENERATE_SERIES"&&we(t,Ct(n.query));we(t,Ct(e.query));break;case"CREATE_TEMP_TABLE":we(t,Ct(e.query));break;default:break}return Vi(e)&&t.add("STATISTICAL_AGGREGATE"),Wi(e)&&t.add("AGGREGATE"),t}function wc(e){return Ct(e).size>0}function bc(e){let t=e.left.type==="SELECT"?Nn(e.left):bc(e.left);return we(t,Nn(e.right)),e.all||t.add("DISTINCT"),t}function Nn(e){let t=new Set,n=X(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"&&we(t,Nn(r.query)),r.type==="CASE_COL")for(let i of r.expr.branches)we(t,bn(i.condition));return we(t,bn(e.where)),we(t,bn(e.having)),Vi(e)&&t.add("STATISTICAL_AGGREGATE"),Wi(e)&&t.add("AGGREGATE"),t}function bn(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")&&we(t,Nn(e.right.query));break;case"LOGICAL":we(t,bn(e.left)),we(t,bn(e.right));break;case"NOT":case"GROUP":we(t,bn(e.expr));break;case"EXISTS":we(t,Nn(e.query));break;case"NULL_CHECK":case"BOOLEAN":break}return t}function Nc(e){if(!e||typeof e!="object")return!1;let t=e;return t.where!==null&&t.where!==void 0}function Pc(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 Yi=new Set(["YESTERDAY","TOMORROW","FROM_TODAY","THIS_WEEK","LAST_WEEK","NEXT_WEEK","THIS_MONTH","LAST_MONTH","NEXT_MONTH","THIS_YEAR","LAST_YEAR","NEXT_YEAR"]),zt=new Set(["TODAY","NOW","LOGINUSER","PRIMARY_ORGANIZATION"]),cr=new Set([...zt,...Yi]),qt="WHERE_RELATIVE_DATE_REQUIRES_EXACT_PUSHDOWN",ft="WHERE_KINTONE_FUNCTION_REQUIRES_EXACT_PUSHDOWN";function ee(e){return Yi.has(e)}function Cn(e){return zt.has(e)}function je(e){return cr.has(e)}var rg=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})}),is=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})}),pr="v1";function Y(e){throw new Error(`UnsupportedError: APPLY ${pr} scope does not support ${e}`)}function ig(e,t){let n=pr;pr=e;try{return t()}finally{pr=n}}function og(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 _n(e,t){return ig(e,()=>ag(t,rg[e]))}function ag(e,t){let n=og(e);if(n===null)return;if(n.type==="UPSERT"){lg(n,t);return}let r=n.applyBlocks;if(ns(r),!t.multipleBlocks&&r.length!==1&&Y("multiple APPLY blocks in this phase"),n.type==="INSERT"){ug(n,r,t);return}let i=n;i.subtableCode&&Y("a subtable UPDATE as the parent statement in this phase"),!t.updateFrom&&i.from!=null&&Y("UPDATE ... FROM in this phase"),!t.check&&i.checkGroups?.length&&Y("CHECK in this phase"),!t.onErrorSkip&&i.onErrorSkip&&Y("ON ERROR SKIP in this phase"),!t.rejectLimit&&i.rejectLimit!=null&&Y("REJECT LIMIT in this phase"),cg(i.where,t.multipleParents),Oc(r,t)}function Oc(e,t){for(let n of e){for(let r of n.operations)t.operations.has(r.kind)||Y(`${r.kind} in this phase`);Lc(n);for(let r of n.operations){if(r.kind==="APPEND"){for(let i of r.fields)ji(i,"APPEND targets");Ln(r.values,"APPEND values");continue}if(r.kind==="REMOVE"){!t.expectRows&&r.expectRows&&Y("EXPECT ROWS in this phase"),r.selector.kind==="WHERE"&&Cc(r.selector.where,t.idxSelectors);continue}if(r.kind==="PATCH"){!t.expectRows&&r.expectRows&&Y("EXPECT ROWS in this phase"),r.assignments.length===0&&Y("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(".")&&Y("parent or qualified PATCH targets in this phase")}Ln(r.assignments,"PATCH assignments"),r.selector.kind==="WHERE"&&Cc(r.selector.where,t.idxSelectors)}}}}function Lc(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 sg=new Set(["MULTI_SELECT","CHECK_BOX","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function _c(e,t){if(Lc(e),e.targetKind==="MULTI_VALUE"){if(!sg.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 ns(e){let t=new Set;for(let n of e){if(t.has(n.field))throw new Error(`ArgumentError: APPLY ${pr} scope allows only one block for table ${n.field}`);t.add(n.field)}}function lg(e,t){t.upsert||Y("UPSERT in this phase"),!t.check&&e.checkGroups?.length&&Y("CHECK in this phase"),!t.onErrorSkip&&e.onErrorSkip&&Y("ON ERROR SKIP in this phase"),!t.rejectLimit&&e.rejectLimit!=null&&Y("REJECT LIMIT in this phase");let n=e.onInsertApplyBlocks??[],r=e.onUpdateApplyBlocks??[];ns(n),ns(r),!t.multipleBlocks&&(n.length>1||r.length>1)&&Y("multiple APPLY blocks in this phase"),Dc(n,"UPSERT ON INSERT"),Oc(r,{...t,idxSelectors:!1,expectRows:!1})}function Dc(e,t){for(let n of e)for(let r of n.operations){r.kind!=="APPEND"&&Y(`${r.kind} for ${t} in this phase`);for(let i of r.fields)ji(i,"APPEND targets");Ln(r.values,"APPEND values")}}function ug(e,t,n){n.insert||Y("INSERT in this phase"),e.subtableCode&&Y("a subtable INSERT as the parent statement in this phase"),!n.check&&e.checkGroups?.length&&Y("CHECK in this phase"),!n.onErrorSkip&&e.onErrorSkip&&Y("ON ERROR SKIP in this phase"),!n.rejectLimit&&e.rejectLimit!=null&&Y("REJECT LIMIT in this phase"),Dc(t,"INSERT")}function Et(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 zi(e,t){let n=is[e],r="validateOnly"in t&&t.validateOnly===!0;if(t.type!=="EXPLAIN"&&!r&&os(t)&&e!=="phase15b")throw new Error(`UnsupportedError: APPLY ${On(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 ${On(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 ${On(e)} INSERT execution is not connected`);return}if(!(t.type!=="UPDATE"||!t.applyBlocks?.length)&&!n.multipleParentPreflight&&!Et(t.where))throw new Error(`UnsupportedError: APPLY ${On(e)} execution does not support multiple-parent APPLY`)}function os(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 vc(e,t){if(!(t.type!=="UPDATE"||!t.applyBlocks?.length||Et(t.where))&&!is[e].publicMultipleParentWrite)throw new Error(`UnsupportedError: APPLY ${On(e)} public multiple-parent write is not connected`)}function Dn(e){if(!is[e].internalPreparedWrite)throw new Error(`UnsupportedError: APPLY ${On(e)} internal prepared write is not available`)}function On(e){return`Phase ${e.slice(5)}`}function cg(e,t){Et(e)||(e.type==="BINARY"&&e.op==="="&&e.left.type==="FIELD"&&e.left.tableAlias===null&&e.left.field==="$id"&&Y("a parent $id that is not a positive safe integer in this phase"),t||Y("a parent WHERE other than the single condition $id = <positive safe integer> in this phase"),rs(e,t))}function rs(e,t){if(Array.isArray(e)){for(let o of e)rs(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")&&Y("KLIKE in parent WHERE"),(r==="SELECT"||r==="SCALAR_SUBQUERY"||r==="SUBQUERY_IN_LIST"||r==="EXISTS")&&Y("subqueries in parent WHERE"),(r==="WINDOW_COL"||r==="AGGREGATE"||r==="AGG_REF"||r==="AGG_ARITH"||r==="ARITH_AGG_COL")&&Y("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)&&Y("aggregate or window expressions in parent WHERE"),r==="KINTONE_FUNC"&&!(typeof n.name=="string"&&ee(n.name))&&Y("non-deterministic kintone functions in parent WHERE");for(let o of Object.values(n))rs(o,t)}function Cc(e,t){Ln(e,"child row selectors",t)}function Ln(e,t,n=!1){if(Array.isArray(e)){for(let s of e)Ln(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")&&Y(`KLIKE in ${t}`),(i==="SELECT"||i==="SCALAR_SUBQUERY"||i==="SUBQUERY_IN_LIST"||i==="EXISTS")&&Y(`subqueries in ${t}`),(i==="WINDOW_COL"||i==="AGGREGATE"||i==="AGG_REF"||i==="AGG_ARITH"||i==="ARITH_AGG_COL")&&Y(`aggregate or window expressions in ${t}`),i==="KINTONE_FUNC"&&!(typeof r.name=="string"&&ee(r.name))&&Y(`non-deterministic kintone functions in ${t}`),i==="FIELD"){let s=r.tableAlias,l=r.field;s!=null&&Y(`qualified or parent field references in ${t}`),ji(l,t,n)}if(i==="FIELD_REF"&&ji(r.field,t,n),!(o==="PATCH"||o==="APPEND"||o==="REMOVE"))for(let s of Object.values(r))Ln(s,t,n)}function ji(e,t,n=!1){if(typeof e!="string")return;let r=e.toLowerCase();r==="_idx"&&!n&&Y(`_idx in ${t}`),(r.startsWith("_p.")||r.includes("."))&&Y(`parent or qualified field references in ${t}`),/^(count|sum|avg|min|max|group_concat)\s*\(/i.test(e)&&Y(`aggregate expressions in ${t}`)}function dr(e){switch(e.type){case"BOOLEAN":return{type:"BOOLEAN",value:!e.value};case"BINARY":{let t=pg(e.op);if(t===null)throw new oe(`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:dr(e.left),right:dr(e.right)};case"NOT":return e.expr;case"GROUP":return{type:"GROUP",expr:dr(e.expr)};case"EXISTS":return{...e,not:!e.not}}}function pg(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 Uc(e){return e.includes("%")||e.includes("_")}function fr(e){return e.type==="BINARY"&&(e.op==="LIKE"||e.op==="NOT_LIKE")}function _t(e){return e.type==="BINARY"&&(e.op==="KLIKE"||e.op==="NOT_KLIKE")}function Lt(e){if(e===null)return!1;if(fr(e))return!0;switch(e.type){case"LOGICAL":return Lt(e.left)||Lt(e.right);case"NOT":case"GROUP":return Lt(e.expr);case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return!1}}function me(e){if(e===null)return!1;if(_t(e))return!0;switch(e.type){case"LOGICAL":return me(e.left)||me(e.right);case"NOT":case"GROUP":return me(e.expr);case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return!1}}function H(e){switch(e.type){case"BINARY":return dg(e);case"NULL_CHECK":return Eg(e);case"LOGICAL":return Rg(e);case"NOT":return gg(e);case"GROUP":return yg(e);case"EXISTS":throw new oe("EXISTS \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"BOOLEAN":throw new oe("internal error: BOOLEAN predicate reached kintone query conversion")}}function dg(e){if(fr(e))throw new oe("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=Mc(e.left),n=fg(e.op),r=mg(e.right,e.op);return`${t} ${n} ${r}`}function fg(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 Eg(e){let t=Mc(e.field);return e.not?`${t} != ""`:`${t} = ""`}function Rg(e){let t=H(e.left),n=H(e.right),r=e.op==="AND"?"and":"or",i=kc(e.left)?`(${t})`:t,o=kc(e.right)?`(${n})`:n;return`${i} ${r} ${o}`}function gg(e){return H(dr(e.expr))}function yg(e){return`(${H(e.expr)})`}function Mc(e){if(e.type==="FUNC_FIELD")throw new oe(`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 oe("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 oe("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 oe("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 oe("GROUPING() \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");return Ng(e.field)}function mg(e,t){switch(e.type){case"VARIABLE":throw new oe(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"VARIABLE_IN_LIST":throw new oe(`\u672A\u89E3\u6C7A\u306E\u914D\u5217\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"STRING":return Fc(e);case"NUMBER":return W(e);case"KINTONE_FUNC":return xc(e);case"IN_LIST":return wg(e,t);case"ARITH_VALUE":throw new oe("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 oe("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 oe("IN (SELECT ...) \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"SCALAR_SUBQUERY":throw new oe("\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 oe("\u914D\u5217\u30EA\u30C6\u30E9\u30EB\u306F WHERE \u53E5\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093")}}function Fc(e){return`"${e.value.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function xc(e){switch(e.name){case"TODAY":case"NOW":case"LOGINUSER":case"PRIMARY_ORGANIZATION":return`${e.name}()`}return Ag(e)}function Ag(e){switch(e.name){case"YESTERDAY":case"TOMORROW":case"THIS_YEAR":case"LAST_YEAR":case"NEXT_YEAR":return e.args?.kind!=="NONE"?Er():`${e.name}()`;case"FROM_TODAY":return e.args?.kind!=="FROM_TODAY"||!Tg(e.args.offset,e.args.offsetText)||!hg.has(e.args.unit)?Er():`${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&&!Sg.has(e.args.weekday)?Er():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"||!Ig(e.args.day)?Er():e.args.day===null?`${e.name}()`:`${e.name}(${e.args.day})`}return Er()}var hg=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),Sg=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function Tg(e,t){return!Number.isSafeInteger(e)||!/^(?:0|[1-9]\d*|-[1-9]\d*)$/.test(t)?!1:Number(t)===e}function Ig(e){return e===null||e==="LAST"||typeof e=="number"&&Number.isInteger(e)&&e>=1&&e<=31}function Er(){throw new oe("internal error: invalid relative date function AST reached kintone query conversion")}function wg(e,t){if(t!=="IN"&&t!=="NOT_IN")throw new oe("IN_LIST \u306F IN / NOT IN \u6F14\u7B97\u5B50\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059");return bg(e.values),`(${e.values.map(r=>r.type==="STRING"?Fc(r):r.type==="NUMBER"?W(r):xc(r)).join(",")})`}function bg(e){let t=e.find(n=>n.type==="VARIABLE");if(t?.type==="VARIABLE")throw new oe(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${t.name} \u304C\u3042\u308A\u307E\u3059`)}function Ng(e){return/^[\w$\u3000-\u9FFF]+$/u.test(e)?e:`"${e.replace(/"/g,'\\"')}"`}function kc(e){return e.type==="LOGICAL"}var oe=class extends Error{constructor(t){super(t),this.name="KintoneQueryError"}};function qi(e){return`'${e.replace(/'/g,"''")}'`}function vn(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 W(e);if(e.type==="STRING_FUNC")return ss(e);let n=`${vn(e.left)}${e.op}${vn(e.right)}`;return t?n:`(${n})`}function Gc(e){if(e.type==="FIELD")return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;if(e.type==="FUNC_FIELD")return ss(e.expr);if(e.type==="AGG_FIELD")return tt(e.expr);if(e.type==="ARITH_FIELD")return vn(e.expr);if(e.type==="GROUPING_FIELD"){let t=e.ref.field;return`GROUPING(${t.tableAlias?`${t.tableAlias}.`:""}${t.field})`}return as(e.expr)}function Kc(e){switch(e.type){case"STRING":return qi(e.value);case"NUMBER":return W(e);case"VARIABLE":return`@${e.name}`;case"VARIABLE_IN_LIST":return`@${e.name}`;case"KINTONE_FUNC":return`${e.name}()`;case"ARRAY":return`[${e.elements.map(t=>qi(t.value)).join(",")}]`;case"IN_LIST":return`(${e.values.map(Kc).join(",")})`;case"ARITH_VALUE":return vn(e.expr);case"CASE_VALUE":return as(e.expr);case"SUBQUERY_IN_LIST":return"(SUBQUERY)";case"SCALAR_SUBQUERY":return"(SUBQUERY)"}}function Rr(e){switch(e.type){case"BINARY":return`${Gc(e.left)} ${e.op.replace("_"," ")} ${Kc(e.right)}`;case"NULL_CHECK":return`${Gc(e.field)} IS ${e.not?"NOT ":""}NULL`;case"LOGICAL":return`(${Rr(e.left)} ${e.op} ${Rr(e.right)})`;case"NOT":return`NOT (${Rr(e.expr)})`;case"GROUP":return`(${Rr(e.expr)})`;case"BOOLEAN":return e.value?"TRUE":"FALSE";case"EXISTS":return`${e.not?"NOT ":""}EXISTS (SUBQUERY)`}}function Bc(e){return e.type==="ARRAY"?`[${e.elements.map(t=>qi(t.value)).join(",")}]`:e.type==="AGG_REF"?pe(e.func,e.distinct,e.arg):e.type==="AGG_ARITH"?tt(e):e.type==="FIELD_REF"||e.type==="ARITH"?vn(e):Xt(e)}function as(e){let t=e.branches.map(r=>`WHEN ${Rr(r.condition)} THEN ${Bc(r.result)}`).join(" "),n=e.elseResult===null?"":` ELSE ${Bc(e.elseResult)}`;return`CASE ${t}${n} END`}function Pg(e){return e.type==="AGG_REF"?pe(e.func,e.distinct,e.arg):e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"?tt(e):Xt(e)}function ss(e){return`${e.func}(${e.args.map(Pg).join(",")})`}function Xt(e){switch(e.type){case"STRING":return qi(e.value);case"NUMBER":return W(e);case"VARIABLE":return`@${e.name}`;case"FIELD":return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;case"STRING_FUNC":return ss(e);case"CASE_WHEN":return as(e);case"SCALAR_ARITH":return`(${Xt(e.left)}${e.op}${Xt(e.right)})`;case"CONCAT_OP":return`(${Xt(e.left)}||${Xt(e.right)})`}}function Cg(e){return e.type==="WILDCARD"?"*":e.type==="FIELD_REF"||e.type==="ARITH"?vn(e,!0):Xt(e)}function pe(e,t,n){let r=Cg(n);return t?`${e}(DISTINCT ${r})`:`${e}(${r})`}function tt(e){return e.type==="NUMBER"?W(e):e.type==="AGG_REF"?pe(e.func,e.distinct,e.arg):e.type==="AGG_GROUP_KEY"?e.tableAlias?`${e.tableAlias}.${e.field}`:e.field:e.type==="VARIABLE"?`@${e.name}`:`${tt(e.left)}${e.op}${tt(e.right)}`}var $c=Symbol("ksql.groupingRowMeta"),Vc=new WeakMap;function ls(e,t){return Object.defineProperty(e,$c,{value:{includedCanonicalIds:t},enumerable:!1,configurable:!1,writable:!1}),e}function us(e){return e[$c]}function Og(e){return us(e)?.includedCanonicalIds}function Wc(e,t){Vc.set(e,t)}function Un(e,t){let n=Og(t);if(!n)throw new Error("internal error: GROUPING() evaluation requires B65 grouping row membership.");let r=Vc.get(e);if(!r)throw new Error("internal error: GROUPING() reference was not resolved during B65 planning.");return n.has(r)?"0":"1"}var Xi=["$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 cs(e){return e.startsWith("_")||e.startsWith("$")}var Lg=/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/;function ds(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(ds);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"?Lg.test(t.field):Object.values(t).some(ds)}function _g(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 ke(e)||ds(e)?"AGGREGATE_DEPENDENT":"SAFE"}}var Dg=["_pid","_rid","_idx"];function ps(e){return[...new Set(e)]}function vg(e){switch(e.kind){case"APP":return ps([...e.fieldCodes,...Xi]);case"SUBTABLE":return ps([...e.childFieldCodes,...Dg,...e.parentFieldCodes.map(t=>`_p.${t}`)]);case"MATERIALIZED":return ps(e.columns)}}function Hc(e,t){return[e.from,...e.joins.map(r=>r.table)].map((r,i)=>({sourceIndex:i,qualifier:r.alias??r.cteName,columns:vg(t(r,i))}))}function Yc(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 jc(e,t){return e.qualifier===null?t:`${e.qualifier}.${t}`}function zc(e,t){let n=e.tableAlias===null?e.field:`${e.tableAlias}.${e.field}`,r=e.tableAlias===null?Yc(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:jc(a,r.fieldCode)}}function Ug(e){return"alias"in e&&typeof e.alias=="string"?e.alias:null}function kg(e,t,n){let r=Yc(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:jc(l,r.fieldCode)}}if(r.qualifier!==null)return{kind:"UNKNOWN",name:e};let a=t.flatMap((l,c)=>Ug(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=_g(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&&pe(l.func,l.distinct,l.arg)===e)?{kind:"ALIAS_REJECT",reason:"AGGREGATE"}:{kind:"UNKNOWN",name:e}}function qc(e,t,n){return{items:e.map(r=>r.type==="FIELD_NAME"?kg(r.name,t,n):{kind:"EXPRESSION"})}}var Mg="B65_NON_GROUPED_DEPENDENCY",Es=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 Ji(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 Rs(e){let t=e.type;if(t==="FIELD_REF"&&typeof e.field=="string")return Ji(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?Ji(e.field):{type:"FIELD",tableAlias:n,field:e.field}}return null}function gs(e){return e.type==="SELECT"||e.type==="SCALAR_SUBQUERY"||e.type==="SCALAR_SUBQUERY_COL"||e.type==="SUBQUERY_IN_LIST"||e.type==="EXISTS"}function Jc(e){return e.type==="AGGREGATE"||e.type==="AGG_REF"}function Qc(e){return e.type==="WINDOW_COL"}function Fg(e){let t=e.value;return typeof t!="number"?"?":Object.is(t,-0)?"0":String(t)}function Dt(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=>Dt(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"||gs(n))return null;if(r==="GROUP"&&n.expr!==void 0)return Dt(n.expr,t);let i=typeof r=="string"?Es.get(r):void 0;if(i!==void 0)return Dt(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:${Fg(n)}`;if(r==="BOOLEAN")return`BOOLEAN:${String(n.value)}`;let o=Rs(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=Dt(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 xg(e){return"alias"in e&&typeof e.alias=="string"?e.alias:null}function Gg(e){let t=new Map;for(let n of e){let r=xg(n);r!==null&&t.set(r,[...t.get(r)??[],n])}return t}function ys(e){return e.tableAlias===null?e.field:`${e.tableAlias}.${e.field}`}var Bg=/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/;function Qi(e){if(e&&typeof e=="object"){let t=e,n=Rs(t);if(n!==null)return ys(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"?Es.get(t.type):void 0;if(i!==void 0){let a=Qi(t[i]);if(a!=="\u5F0F")return a}let o=t.func;if(typeof o=="string"&&o.length>0)return`${o}(...)`}return"\u5F0F"}function Xc(e,t,n,r){let i=n==="WILDCARD"?"wildcard":ys(n),o=Qi(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=${Mg})`)}function Jt(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){for(let a of e)Jt(a,t);return}let n=e;if(gs(n)||Jc(n)||Qc(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 Xc(t.clause,t.expression,"WILDCARD",t.policy);let r=Rs(n);if(r!==null){if(t.clause!=="SELECT"&&r.tableAlias===null&&Bg.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),Jt(l[0],{...t,resolvingAliases:c});return}}let a=Dt(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 Xc(t.clause,t.expression,r,t.policy);return}let i=Dt(n,t.policy.resolveField);if(i!==null&&t.policy.identities.has(i))return;let o=typeof n.type=="string"?Es.get(n.type):void 0;if(o!==void 0){Jt(n[o],t);return}for(let a of Object.keys(n))a==="type"||a==="alias"||a==="aliasDisplay"||a==="raw"||Jt(n[a],t)}function gr(e,t){let n=Gg(e.columns);for(let r of e.columns)r.type!=="WINDOW_COL"&&Jt(r,{clause:"SELECT",expression:r,policy:t,aliases:n,resolvingAliases:new Set});e.having!==null&&Jt(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"?Ji(r.key.name):r.key;Jt(i,{clause:"ORDER BY",expression:i,policy:t,aliases:n,resolvingAliases:new Set})}}function fs(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(fs);let t=e;return gs(t)||Qc(t)?!1:Jc(t)||t.type==="ARITH_AGG_COL"?!0:Object.values(t).some(fs)}function Zi(e){return X(e).type!=="NONE"||e.columns.some(t=>t.type!=="WINDOW_COL"&&fs(t))}function Kg(e){return e.type==="FIELD_NAME"?Ji(e.name):e.expr}function Zc(e,t,n){let r=X(e);if(r.type!=="PLAIN")throw new Error("InternalError: ordinary dependency policy requires plain GROUP BY.");let i=r.allItems,o=f=>{let R=zc(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=Dt(e.columns[f.columnIndex],o);E!==null&&a.add(E);return}if(f.kind==="EXPRESSION"){let E=Dt(Kg(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:Qi(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 eo(e){if(X(e).type!=="NONE"||!Zi(e))return;let t={identities:new Set,resolveField:n=>`ast:${ys(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};gr(e,t)}function ep(e){return`FIELD:${e}`}var tp=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 ms(e){return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field}function Me(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(r=>Me(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=>Me(r,t))}}function ro(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(r=>ro(r,t));return}let n=e;if(!(n.type==="SELECT"||n.type==="SCALAR_SUBQUERY")){if(n.type==="AGGREGATE"||n.type==="AGG_REF"){Me(n.arg,t);return}Object.values(n).forEach(r=>ro(r,t))}}function ke(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(ke);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(ke)}function $g(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"?ke(e):!1}function Vg(e,t,n){let r=t(e.field);if(!r.physical)throw new Error(`ArgumentError: grouping reference ${ms(e.field)} must resolve to a physical APP field.`);if(!n.has(r.canonicalId))throw new Error(`ArgumentError: GROUPING argument ${ms(e.field)} is not present in grouping allItems (reason=B65_GROUPING_ARG_NOT_ITEM).`);Wc(e,r.canonicalId)}function As(e){let t=X(e),n=[];for(let i of e.columns)i.type!=="WINDOW_COL"&&Me(i,n);Me(e.having,n),Me(e.orderBy,n);let r=[];Me(e.where,r),Me(e.joins,r),ro(e.columns,r),ro(e.having,r);for(let i of e.columns)i.type==="WINDOW_COL"&&Me(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.");eo(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 np(e,t,n=()=>{}){As(e);let r=X(e),i=[];for(let c of e.columns)c.type!=="WINDOW_COL"&&Me(c,i);if(Me(e.having,i),Me(e.orderBy,i),r.type!=="GROUPING_SETS")return null;let o=Sc(e,t),a=new Set,s=[];for(let c of o.allItems){let p=c;if(!p.physical)throw new Error(`ArgumentError: grouping item ${ms(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)Vg(c,t,a);gr(e,{identities:new Set([...a].map(ep)),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(!$g(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 Wg(e){return e.some(t=>t.type==="WINDOW_COL")}function Fe(e){return e.from.subtableCode||e.joins.some(t=>t.table.subtableCode)||e.joins.length>0||X(e).type!=="NONE"||e.distinct||Wg(e.columns)||e.columns.some(t=>t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"||t.type==="SCALAR_SUBQUERY_COL"||t.type==="CASE_COL"&&ke(t.expr)||t.type==="STRFUNC_COL"&&sp(t.expr)||t.type==="SCALAR_VALUE_COL"&&mr(t.expr))||Rt(e.where)||e.orderBy.some(t=>t.key.type!=="FIELD_NAME")?"FULL_SCAN":"SIMPLE"}function Rt(e){if(e===null)return!1;switch(e.type){case"BOOLEAN":return!0;case"BINARY":return rp(e.left)||e.right.type==="ARITH_VALUE"||e.right.type==="CASE_VALUE"||e.right.type==="SUBQUERY_IN_LIST"||e.right.type==="SCALAR_SUBQUERY"||fr(e);case"NULL_CHECK":return rp(e.field);case"LOGICAL":return Rt(e.left)||Rt(e.right);case"NOT":case"GROUP":return Rt(e.expr);case"EXISTS":return!0}}function rp(e){return e.type==="FUNC_FIELD"||e.type==="ARITH_FIELD"||e.type==="CASE_FIELD"}function oo(e){let t=[],r=(e.limit!==null||e.offset!==null)&&e.orderBy.length===0;if(e.where!==null&&t.push(H(e.where)),e.orderBy.length>0){let i=e.orderBy.map(Hg).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:Yg(e.columns),totalCount:!1}}function ap(e,t){let n=[];return e.where!==null&&e.joins.length===0&&!Rt(e.where)&&n.push(H(e.where)),{app:t,query:n.join(" "),fields:[]}}function Qt(e,t,n){let i=up(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 Hg(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 Yg(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(ao(r.field)):r.type==="ARITH_COL"?yr(r.expr,n):r.type==="STRFUNC_COL"?hs(r.expr,n):r.type==="SCALAR_VALUE_COL"&&kn(r.expr,n);return[...new Set(n)]}function jg(e,t){yr(e.left,t),yr(e.right,t)}function yr(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(ao(e.field)):e.type==="ARITH"?jg(e,t):e.type==="STRING_FUNC"&&hs(e,t)}function ao(e){let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function hs(e,t){for(let n of e.args)zg(n,t)}function zg(e,t){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"){io(e,t);return}kn(e,t)}function kn(e,t){if(e.type==="FIELD"){t.push(ao(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field));return}if(e.type==="STRING_FUNC"){hs(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){kn(e.left,t),kn(e.right,t);return}if(e.type==="CASE_WHEN"){for(let n of e.branches)ip(n.result,t);e.elseResult&&ip(e.elseResult,t)}}function ip(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"){yr(e,t);return}kn(e,t)}}function io(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&qg(e.arg,t);return}e.type==="AGG_ARITH"&&(io(e.left,t),io(e.right,t)),e.type==="AGG_GROUP_KEY"&&t.push(ao(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field))}function qg(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?yr(e,t):kn(e,t)}function sp(e){return e.args.some(t=>t.type==="AGG_REF"||t.type==="AGG_ARITH"?!0:t.type==="AGG_GROUP_KEY"||t.type==="VARIABLE"?!1:mr(t))}function mr(e){return e.type==="STRING_FUNC"?sp(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?mr(e.left)||mr(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>op(t.result))||e.elseResult!==null&&op(e.elseResult):!1}function op(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?!1:mr(e)}function lp(e,t){let n=new Set,r=up(e,t,{includeMaterialized:!0,unqualified:n});return{bySource:new Map([...r.entries()].map(([i,o])=>[i,new Set(o.fields)])),unqualified:n}}function up(e,t,n){let r=[e.from,...e.joins.map(T=>T.table)],i=[e.from,...e.joins.map(T=>T.table)].filter(T=>T.cteName===null),o=n?r:i,a=new Map;for(let T of o)a.set(T,{table:T,allFields:!1,fields:new Set});if(a.size===0)return a;let s=o[0]??null,l=o.find(T=>!!T.subtableCode)??null,c=new Map;for(let T of o)T.alias&&c.set(T.alias,T),T.cteName!==null?c.set(T.cteName,T):T.subtableCode||(c.set(`APP${T.appId}`,T),c.set(`app${T.appId}`,T));let p=Xg(e.columns),u=T=>{let C=a.get(T);C&&(C.allFields=!0,C.fields.clear())},d=()=>{for(let T of o)u(T)},f=()=>{for(let T of o)T.subtableCode&&u(T)},R=(T,C)=>{let U=a.get(T);if(!(!U||U.allFields)){if(T.subtableCode){if(C.startsWith("_p.")){let O=C.slice(3);O&&O!=="*"&&U.fields.add(O);return}return void 0}C&&U.fields.add(C)}},E=(T,C="select",U)=>{if(!T||T==="*")return;if(T==="_p.*"){f();return}if(T.endsWith(".*")){let G=T.slice(0,-2);if(!G){d();return}if(G==="_p"){f();return}let k=c.get(G);if(k){u(k);return}return}if(C==="groupBy"&&U!==void 0){if(U.kind==="PHYSICAL"){let G=r[U.sourceIndex];G&&(n||G.cteName===null)&&R(G,U.fieldCode)}return}if((C==="orderBy"||C==="having"||C==="groupBy")&&p.has(T)||(C==="orderBy"||C==="having"||C==="groupBy")&&Jg(T))return;let O=T.indexOf(".");if(O>0){let G=T.slice(0,O),k=T.slice(O+1);if(G==="_p"){l&&R(l,`_p.${k}`);return}let z=c.get(G);if(z){R(z,k);return}if(n)return}n?n.unqualified.add(T):s&&R(s,T)},g=(T,C,U="select")=>{if(C){if(C==="_p"){l&&R(l,`_p.${T}`);return}let O=c.get(C);if(O){R(O,T);return}if(n)return}E(T,U)},y=(T,C="select")=>{if(T.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${T.name} reached source-aware field collection.`);if(T.type==="FIELD_REF"){E(T.field,C);return}if(T.type==="ARITH"){y(T.left,C),y(T.right,C);return}if(T.type==="STRING_FUNC"){h(T,C);return}},m=(T,C="select")=>{if(T.type==="AGG_REF"){T.arg.type!=="WILDCARD"&&w(T.arg,C);return}T.type==="AGG_ARITH"&&(m(T.left,C),m(T.right,C)),T.type==="AGG_GROUP_KEY"&&g(T.field,T.tableAlias??null,C)},A=(T,C="select")=>{if(T.type==="AGG_REF"||T.type==="AGG_ARITH"||T.type==="AGG_GROUP_KEY"||T.type==="VARIABLE"){m(T,C);return}S(T,C)},h=(T,C="select")=>{for(let U of T.args)A(U,C)},S=(T,C="select")=>{if(T.type==="FIELD"){g(T.field,T.tableAlias,C);return}if(T.type==="STRING_FUNC"){h(T,C);return}if(T.type==="SCALAR_ARITH"||T.type==="CONCAT_OP"){S(T.left,C),S(T.right,C);return}T.type==="CASE_WHEN"&&b(T,C)},w=(T,C="select")=>{if(T.type==="FIELD_REF"||T.type==="ARITH"){y(T,C);return}S(T,C)},N=(T,C="select")=>{if(T.type!=="ARRAY"){if(T.type==="AGG_REF"||T.type==="AGG_ARITH"){m(T,C);return}if(T.type==="FIELD_REF"||T.type==="ARITH"){y(T,C);return}S(T,C)}},b=(T,C="select")=>{for(let U of T.branches)D(U.condition,C),N(U.result,C);T.elseResult&&N(T.elseResult,C)},_=(T,C="select")=>{if(T.type==="FIELD"){if(T.aggregateRef){m(T.aggregateRef,C);return}g(T.field,T.tableAlias,C);return}if(T.type==="FUNC_FIELD"){h(T.expr,C);return}if(T.type==="AGG_FIELD"){m(T.expr,C);return}if(T.type==="ARITH_FIELD"){y(T.expr,C);return}T.type!=="GROUPING_FIELD"&&b(T.expr,C)},P=(T,C="select")=>{if(T.type==="ARITH_VALUE"){y(T.expr,C);return}if(T.type==="CASE_VALUE"){b(T.expr,C);return}},D=(T,C="where")=>{if(T)switch(T.type){case"BINARY":_(T.left,C),P(T.right,C);return;case"NULL_CHECK":_(T.field,C);return;case"LOGICAL":D(T.left,C),D(T.right,C);return;case"NOT":case"GROUP":D(T.expr,C);return;case"EXISTS":case"BOOLEAN":return}},F=(T,C)=>{if(T.type==="FIELD_NAME"){E(T.name,"groupBy",C);return}if(T.type==="ARITH_KEY"){y(T.expr,"groupBy");return}h(T.expr,"groupBy")},L=(T,C="orderBy")=>{if(T.type==="FIELD_NAME"){E(T.name,C);return}if(T.type==="ARITH_KEY"){y(T.expr,C);return}T.type!=="GROUPING_KEY"&&h(T.expr,C)};for(let T of e.columns)switch(T.type){case"WILDCARD":d();break;case"PARENT_WILDCARD":f();break;case"FIELD":E(T.field,"select");break;case"LITERAL_COL":break;case"VARIABLE_COL":throw new Error(`internal error: unresolved SELECT variable @${T.name}`);case"AGGREGATE":T.arg.type!=="WILDCARD"&&w(T.arg,"select");break;case"ARITH_AGG_COL":m(T.expr,"select");break;case"ARITH_COL":y(T.expr,"select");break;case"CASE_COL":b(T.expr,"select");break;case"STRFUNC_COL":h(T.expr,"select");break;case"SCALAR_VALUE_COL":S(T.expr,"select");break;case"GROUPING_COL":break;case"SCALAR_SUBQUERY_COL":break;case"WINDOW_COL":(T.windowKind==="AGGREGATE"||T.windowKind==="VALUE")&&T.arg.type!=="WILDCARD"&&w(T.arg,"select");for(let C of T.partitionBy)g(C.field,C.tableAlias,"select");for(let C of T.orderBy)L(C.key,"select");break}for(let T of e.joins)g(T.on.left.field,T.on.left.tableAlias,"where"),g(T.on.right.field,T.on.right.tableAlias,"where");D(e.where,"where");let v=X(e);if(v.type==="PLAIN")v.allItems.forEach((T,C)=>F(T,t?.items[C]));else if(v.type==="GROUPING_SETS")for(let T of v.allItems)g(T.field,T.tableAlias,"select");D(e.having,"having");for(let T of e.orderBy)L(T.key);return a}function Xg(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(pe(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 Jg(e){return/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/i.test(e)}function vt(e){if(e.ctes.length!==1)return!1;let t=e.ctes[0];if(t.query.type!=="SELECT"||Fe(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||hc(n)||n.distinct?!1:!n.columns.some(r=>r.type==="AGGREGATE"||r.type==="ARITH_AGG_COL")}function Ut(e){let t=e.ctes[0].query,n=e.query,r=so(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 so(e,t){if(e===null||t===null)return e;switch(e.type){case"BINARY":return{...e,left:cp(e.left,t)};case"NULL_CHECK":return{...e,field:cp(e.field,t)};case"LOGICAL":return{...e,left:so(e.left,t),right:so(e.right,t)};case"NOT":case"GROUP":return{...e,expr:so(e.expr,t)};case"EXISTS":case"BOOLEAN":return e}}function cp(e,t){return e.type==="FIELD"&&e.tableAlias===t?{...e,tableAlias:null}:e}function Mn(e,t={}){return Ar(e,n=>Qg(n,t))}function hr(e,t={}){return Ar(e,n=>pp(n,t)||dp(n,t))}function Ar(e,t){switch(e.type){case"BINARY":return t(e)?e:null;case"LOGICAL":if(e.op!=="AND")return null;{let n=Ar(e.left,t),r=Ar(e.right,t);return n&&r?{...e,left:n,right:r}:n??r??null}case"GROUP":return Ar(e.expr,t);case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return null}}function Qg(e,t){return Zg(e,t)||ny(e,t)?!0:pp(e,t)?t.fieldTypes?.get(e.left.field)==="NUMBER":ty(e,t)}function Zg(e,t){return t.allowKlike===!1||e.op!=="KLIKE"&&e.op!=="NOT_KLIKE"||e.left.type!=="FIELD"||!Ss(e.left,t)?!1:e.right.type==="STRING"||t.allowUnresolvedKlikeVariables===!0&&e.right.type==="VARIABLE"}var ey=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]);function ty(e,t){if(!dp(e,t)||e.left.type!=="FIELD"||e.right.type!=="IN_LIST")return!1;let n=t.fieldTypes?.get(e.left.field);if(n===void 0||!ey.has(n))return!1;let r=t.fieldOptions?.get(e.left.field);return r===void 0?!1:e.right.values.every(i=>i.type==="STRING"&&i.value!==""&&r.has(i.value))}function ny(e,t){return!ry(e.left,t)||e.right.type!=="NUMBER"?!1:e.op==="="||e.op===">"||e.op==="<"||e.op===">="||e.op==="<="}function ry(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 pp(e,t){return e.left.type!=="FIELD"||e.left.field==="$id"||!Ss(e.left,t)||e.right.type!=="NUMBER"?!1:e.op==="="?!0:(e.op==="<"||e.op===">")&&/^[+-]?\d+$/.test(W(e.right))&&Number.isSafeInteger(e.right.value)}function dp(e,t){return e.left.type!=="FIELD"||e.left.field==="$id"||!Ss(e.left,t)||e.op!=="IN"&&e.op!=="NOT_IN"||e.right.type!=="IN_LIST"||e.right.values.length===0?!1:e.right.values.every(n=>n.type==="STRING"&&n.value!=="")}function Ss(e,t){let n=t.tableAlias??null;return e.tableAlias===n?!0:t.allowUnqualifiedFields===!0&&e.tableAlias===null}function Sr(e,t={}){let n=e!==null&&t.extractCondition!==!1?Mn(e,t):null,r=new Set;Fn(n,r);let i=new Set;return Fn(e,i),{condition:n,appliedKlikes:r,allKlikes:[...i]}}function xn(e,t={}){let r={allowKlike:e.joins.every(p=>p.type==="INNER"),allowUnresolvedKlikeVariables:t.allowUnresolvedVariables},i=!e.from.subtableCode&&e.from.cteName===null,o=e.joins.length===0||e.from.alias!==null,a=Sr(e.where,{...r,extractCondition:i&&o,tableAlias:e.from.alias??void 0,allowUnqualifiedFields:e.joins.length===0,fieldTypes:t.fieldTypesByApp?.get(e.from.appId),fieldOptions:t.fieldOptionsByApp?.get(e.from.appId)}),s=a.condition,l=new Map;if(e.where!==null)for(let p of e.joins){if(!p.table.alias||p.table.subtableCode||p.table.cteName!==null)continue;let u=Mn(e.where,{...r,tableAlias:p.table.alias,fieldTypes:t.fieldTypesByApp?.get(p.table.appId),fieldOptions:t.fieldOptionsByApp?.get(p.table.appId)});u!==null&&l.set(p.table.alias,u)}let c=new Set(a.appliedKlikes);for(let p of l.values())Fn(p,c);return{mainCondition:s,joinConditions:l,appliedKlikes:c,allKlikes:a.allKlikes}}function Ts(e){return e.allKlikes.filter(t=>!e.appliedKlikes.has(t))}function Fn(e,t){if(e!==null){if(_t(e)){t.add(e);return}switch(e.type){case"LOGICAL":Fn(e.left,t),Fn(e.right,t);return;case"NOT":case"GROUP":Fn(e.expr,t);return;case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}}function lo(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=Re(t.where);if(l.length===0||!ay(l,a)||o===null||!fp(o,l))return null;let c={prefilterWhere:t.where,residualWhere:null,exactRelativeLeaves:oy(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 iy(p,e,l),p}function iy(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(!fp(e.serializedWholeWhere,n))throw new Error("FULL_SCAN_EXACT invariant: relative occurrence serialization")}function Re(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"&&je(i.name)){t.push(i.name);return}Object.values(i).forEach(n)}};return n(e),t}function oy(e){let t=[],n=r=>{switch(r.type){case"BINARY":(r.right.type==="KINTONE_FUNC"&&je(r.right.name)||r.right.type==="IN_LIST"&&r.right.values.length===1&&r.right.values[0].type==="KINTONE_FUNC"&&je(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 ay(e,t){return e.length===t.length&&e.every((n,r)=>n===t[r])}function fp(e,t){let n=new Map;for(let r of t){if(!je(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 se=class extends Error{constructor(t){super(`ArgumentError: ${t}`),this.name="ArgumentError"}};function Ep(e){Rp(e)}function ws(e){if(Ts(e).length>0)throw new se("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 Rp(e){switch(e.type){case"SELECT":Gn(e);return;case"UNION":Ns(e);return;case"WITH":gp(e);return;case"EXPLAIN":Rp(e.query);return;case"CREATE_TEMP_TABLE":bs(e.query);return;case"SET_VARIABLE":case"DECLARE_VARIABLE":case"ASSERT":Zt(e);return;case"UPDATE":if(e.applyBlocks?.length&&!Et(e.where)&&me(e.where)){Is(e.where),Zt(e);return}if(kt(e)&&e.subtableCode)throw new se("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&&me(e.where)&&!uy(e,e.where)){Is(e.where),Zt(e);return}if(kt(e))throw new se("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(kt(e)&&e.subtableCode)throw new se("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&&me(e.where)){Is(e.where),Zt(e);return}if(kt(e))throw new se("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(kt(e))throw new se("KLIKE / NOT KLIKE \u306F INSERT / INSERT SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"UPSERT":case"UPSERT_SELECT":if(kt(e))throw new se("KLIKE / NOT KLIKE \u306F UPSERT / UPSERT SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"REORDER":if(kt(e))throw new se("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(kt(e))throw new se("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 Is(e){co(e,t=>{if(!_t(t))return;let n=t.right;if(n.type!=="STRING"&&n.type!=="VARIABLE")throw new se("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 se("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 bs(e){e.type==="SELECT"?Gn(e):e.type==="UNION"?Ns(e):gp(e)}function Ns(e){bs(e.left),Gn(e.right)}function gp(e){if(vt(e)){Gn(Ut(e));return}for(let t of e.ctes)t.query.type==="SELECT"?Gn(t.query):t.query.type==="UNION"&&Ns(t.query);bs(e.query)}function Gn(e){if(ly(e),me(e.where)&&!(Fe(e)==="SIMPLE"&&e.from.cteName===null&&e.joins.every(n=>n.table.cteName===null))){let n=xn(e,{allowUnresolvedVariables:!0});if(Ts(n).length===0){Zt(e);return}if(sy(e)){Zt(e);return}throw new se("FULL_SCAN \u306E KLIKE / NOT KLIKE \u306F\u3001\u7269\u7406\u30C6\u30FC\u30D6\u30EB\u306B\u5BFE\u3059\u308B AND \u30EA\u30FC\u30D5\u3068\u3057\u3066\u5FC5\u305A\u62BC\u3057\u4E0B\u3052\u3089\u308C\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002OR / NOT \u914D\u4E0B\u3001CTE\u30FB\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3001LEFT / RIGHT JOIN \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093")}Zt(e)}function sy(e){return e.where!==null&&Re(e.where).length>0&&e.joins.length>0&&e.joins.every(t=>t.type==="INNER")&&[e.from,...e.joins.map(t=>t.table)].every(t=>t.alias!==null&&t.cteName===null&&!t.subtableCode)}function ly(e){co(e,t=>{if(!_t(t))return;if(!uo(e.where,t))throw new se("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 se("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 se("KLIKE / NOT KLIKE \u306E\u691C\u7D22\u8A9E\u306B % \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002SQL \u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u691C\u7D22\u306B\u306F LIKE \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044")})}function Zt(e){po(e,t=>{t.type==="SELECT"&&Gn(t)},!0)}function kt(e){let t=!1;return po(e,n=>{n.type==="BINARY"&&(n.op==="KLIKE"||n.op==="NOT_KLIKE")&&(t=!0)}),t}function uy(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 uo(e,t){if(e===null)return!1;if(e===t)return!0;switch(e.type){case"LOGICAL":return uo(e.left,t)||uo(e.right,t);case"NOT":case"GROUP":return uo(e.expr,t);case"BINARY":case"NULL_CHECK":case"EXISTS":return!1;case"BOOLEAN":return!1}}function co(e,t){if(Array.isArray(e)){for(let r of e)co(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&&cy(r)||co(r,t)}function po(e,t,n=!1){if(Array.isArray(e)){for(let i of e)po(i,t);return}if(e===null||typeof e!="object")return;let r=e;n||t(r);for(let i of Object.values(r))po(i,t)}function cy(e){return e!==null&&typeof e=="object"&&e.type==="SELECT"}var Tr=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 yp(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(py(t))throw new Tr;return;default:return}}function py(e){let t=!1;return fo(e,n=>{t||!Object.prototype.hasOwnProperty.call(n,"where")||dy(n.where)&&(t=!0)}),t}function dy(e){let t=!1;return fo(e,n=>{n.type==="KINTONE_FUNC"&&n.name==="PRIMARY_ORGANIZATION"&&(t=!0)}),t}function fo(e,t){if(Array.isArray(e)){for(let r of e)fo(r,t);return}if(e===null||typeof e!="object")return;let n=e;t(n);for(let r of Object.values(n))fo(r,t)}function Mt(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 Eo(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 Mt(e,t,1,1);case"SUBSTRING":case"LPAD":case"RPAD":case"REGEXP_LIKE":case"REGEXP_SUBSTR":return Mt(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 Mt(e,t,2,2);case"CONCAT":case"COALESCE":case"GREATEST":case"LEAST":return Mt(e,t,2);case"REPLACE":case"TRANSLATE":case"DATE_ADD":return Mt(e,t,3,3);case"REGEXP_REPLACE":return Mt(e,t,3,5);case"ROUND":case"FLOOR":case"CEIL":case"TRUNCATE":return Mt(e,t,1,2);case"CURRENT_DATE":case"CURRENT_TIMESTAMP":return Mt(e,t,0,0)}}var xt=1e4,J=e=>new Error(`ArgumentError: ${e}`),fy=e=>e.type==="VARIABLE",Ft=e=>e?.type==="STRING"&&e.fromVariable===!0;function Ey(e){return e.type==="NUMBER"?Number(W(e)):e.value}function Ro(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 Ps(e){let t=Ro(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 Ry(e){let t=new Date(e*864e5),n=t.getUTCFullYear();if(n<1||n>9999)throw J("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 Ap(e){let t=e.trim(),n=/^([+-]?\d+)\s+(day|days)$/i.exec(t);if(!n)throw/^[+-]?\d+\s+\S+$/i.test(t)?J("GENERATE_SERIES \u306E\u65E5\u4ED8 step \u306F day \u307E\u305F\u306F days \u306E\u307F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\u3002"):J("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 \u5358\u4F4D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let r=Number(n[1]);if(!Number.isSafeInteger(r))throw J("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 J("GENERATE_SERIES \u306E\u65E5\u4ED8 step \u306B 0 day \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002");return r}function Ir(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 wr(e){let t=ye(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 hp(e){return typeof e=="string"&&(/^\d{4}-\d{2}-\d{2}T/.test(e)||/^\d{2}:\d{2}(?::\d{2})?$/.test(e))}function mp(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 Sp(e){if(e.args.length<2||e.args.length>3)throw J("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(m=>Ey(m));["start","stop","step"].forEach((m,A)=>{if(t[A]==="")throw J(`GENERATE_SERIES \u306E ${m} \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"?Ro(n):null,c=typeof r=="string"?Ro(r):null,p=typeof n=="string"&&/^\d{4}-/.test(n),u=typeof r=="string"&&/^\d{4}-/.test(r);if([n,r].some(hp))throw J("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"&&!(Ft(o)&&Ft(a)&&Ir(n)!==null&&Ir(r)!==null)){if(!l||!c)throw J(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 J("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 \u5358\u4F4D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let m=i===void 0?1:Ap(i),A=n,h=r;return{kind:"DATE",start:A,stop:h,step:m,rowCount:mp(Ps(A),Ps(h),m)}}let d=o.type==="NUMBER"?wr(o):Ft(o)?Ir(n):null,f=a.type==="NUMBER"?wr(a):Ft(a)?Ir(r):null;if(d===null||f===null)throw(o.type==="NUMBER"||Ft(o))&&(a.type==="NUMBER"||Ft(a))?J("GENERATE_SERIES \u306E\u6570\u5024\u7CFB\u5217\u306F\u6574\u6570\u306E start\u3001stop\u3001step \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002"):J("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"?wr(s):Ft(s)?Ir(i):null;if(R===null)throw s?.type==="NUMBER"||Ft(s)?J("GENERATE_SERIES \u306E\u6570\u5024\u7CFB\u5217\u306F\u6574\u6570\u306E start\u3001stop\u3001step \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002"):J("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 \u5358\u4F4D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let E=d,g=f,y=R;if(y===0)throw J("GENERATE_SERIES \u306E step \u306B 0 \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002");return{kind:"INTEGER",start:E,stop:g,step:y,rowCount:mp(E,g,y)}}function gy(e){if(e.args.length<2||e.args.length>3)throw J("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(fy)){["start","stop","step"].forEach((r,i)=>{let o=e.args[i];if(o?.type==="STRING"&&o.value==="")throw J(`GENERATE_SERIES \u306E ${r} \u306B\u7A7A\u6587\u5B57\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002`);if(o?.type==="NUMBER"&&wr(o)===null)throw J("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(hp(o.value))throw J("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)&&Ro(o.value)===null)throw J("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=wr(n);if(r===null)throw J("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 J("GENERATE_SERIES \u306E step \u306B 0 \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002")}else n?.type==="STRING"&&Ap(n.value);return null}let t=Sp(e);if(t.rowCount>xt)throw J(`GENERATE_SERIES \u306E\u751F\u6210\u4EF6\u6570 ${t.rowCount} \u884C\u304C\u4E0A\u9650 ${xt} \u884C\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002`);return t.rowCount}function Tp(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=gy(a.query);s===null?o=!1:i+=s}else t(a.query);if(o&&i>xt)throw J(`\u3053\u306E WITH \u6587\u306E GENERATE_SERIES \u751F\u6210\u4EF6\u6570\u5408\u8A08 ${i} \u884C\u304C\u4E0A\u9650 ${xt} \u884C\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002`);t(r.query);return}Object.values(r).forEach(t)};t(e)}function Cs(e){let t=Sp(e);if(t.rowCount>xt)throw J(`GENERATE_SERIES \u306E\u751F\u6210\u4EF6\u6570 ${t.rowCount} \u884C\u304C\u4E0A\u9650 ${xt} \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 J("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=Ps(t.start);for(let i=0;i<t.rowCount;i++)n.push(Ry(r+i*t.step))}return{...t,values:n}}function ze(e){yy(e),yp(e),Ep(e),Tp(e)}function yy(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;Eo(i.func,i.args)}Object.values(r).forEach(t)};t(e)}var go=16,Ip=64,te=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 my=new Set(["=","!=","<>",">","<",">=","<="]);function Os(e,t,n=!1){if(Array.isArray(e)){for(let r of e)Os(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&&my.has(String(r.op));Os(s,t,a==="where"?!0:i==="BINARY"&&a==="right"&&l?c:o?n:!1)}}}function Ay(e){let t=e.type==="EXPLAIN"?e.query:e;return Ot(t.type)||t.type==="VALIDATE"}function Ls(e){if(Array.isArray(e)){for(let t of e)Ls(t);return}if(e!==null&&typeof e=="object"){let t=e;t.type==="SELECT"&&As(e);for(let n of Object.values(t))Ls(n)}}function _s(e){if(e.length===0)throw new te("ArgumentError: SQL is empty.",0);if(e.forEach((u,d)=>{try{Ls(u)}catch(f){throw f instanceof Error?new te(f.message,d):f}try{_n("phase15b",u),ze(u)}catch(f){throw f instanceof se||f instanceof Tr?new te(f.message,d):f instanceof Error&&/^(UnsupportedError|ArgumentError): APPLY /.test(f.message)?new te(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 te(`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 te(`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 N=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 te(N,d)}let R=Hi(u),E=[],g=[],y=new Set,m=new Set,A=new Set,h=[];Os(u,h);let S=new Set;for(let N of h){let b=o.get(N.name);if(b===void 0)throw new te(`ParseError: variable @${N.name} is not defined before statement ${d+1}.`,d);if(b.kind==="scalar"&&N.kind==="array-in-list")throw new te(`ParseError: scalar variable @${N.name} cannot be used as IN @${N.name}; use IN (@${N.name}) instead.`,d);if(b.kind==="array"&&N.kind!=="array-in-list")throw new te(`ParseError: array variable @${N.name} can only be used as IN @${N.name}.`,d);if(b.relativeDate&&Ay(u))throw new te(`ArgumentError: RELATIVE_DATE variable @${N.name} cannot be used in DML or VALIDATE statements.`,d);if(b.relativeDate&&!N.relativeDateAllowed)throw new te(`ArgumentError: RELATIVE_DATE variable @${N.name} can only be used as a WHERE comparison right operand or BETWEEN boundary.`,d);S.has(N.name)||(b.referencedBy.push(d),S.add(N.name))}if(u.type==="SET_VARIABLE"||u.type==="DECLARE_VARIABLE"){if(o.has(u.name))throw new te(`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>Ip)throw new te(`ParseError: batch exceeds ${Ip} variables.`,d)}u.type==="CREATE_TEMP_TABLE"?br(u.query,y,m):u.type==="DROP_TEMP_TABLE"||br(u,y,m);let w=!1;if(u.type==="INSERT_SELECT"||u.type==="UPSERT_SELECT"){let N=new Set,b=new Set;br(u.select,N,b),w=N.size>0&&b.size===0}for(let N of y){let b=t.get(N);if(b===void 0)throw new te(`ParseError: temp table ${N} is not defined in this batch.`,d);A.add(b)}if(f){let N=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(P=>P.kind==="SUBTABLE")?[...new Set(u.targets.flatMap(P=>P.kind==="FIELD"?[P.field]:P.children)),"$err_subtable","$err_subrow","$err_source_row"]:u.type==="UPDATE"?["$id",...u.assignments.map(P=>P.field)]:"fields"in u?u.fields:[],b=JSON.stringify(N),_=t.get(f);if(_===void 0){if(t.set(f,d),n.set(f,b),r.push(f),E.push(f),t.size>go)throw new te(`ParseError: batch exceeds ${go} temp tables.`,d)}else{if(n.get(f)!==b)throw new te(`ParseError: validation error table ${f} has a different payload schema.`,d);A.add(_)}}if(u.type==="CREATE_TEMP_TABLE"){if(t.has(u.name))throw new te(`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>go)throw new te(`ParseError: batch exceeds ${go} temp tables.`,d)}if(u.type==="DROP_TEMP_TABLE"){let N=t.get(u.name);if(N===void 0)throw new te(`ParseError: temp table ${u.name} is not defined in this batch.`,d);A.add(N),g.push(u.name),t.delete(u.name)}i.push({index:d,statementType:R,isDml:ts(u),isReadOnly:Pn(u),hasWhere:Nc(u),insertValuesCount:Pc(u),appIds:[...m].sort((N,b)=>N-b),tempTablesCreated:E,tempTablesReferenced:[...y],tempTablesDropped:g,dependsOn:[...A].sort((N,b)=>N-b),tempOnlySource:w,targetAppId:Ot(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:wc(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 yo=new Map([["UNION","UNION"],["ALL","ALL"],["WITH","WITH"],["SHOW","SHOW"],["DESCRIBE","DESCRIBE"],["APPS","APPS"],["EXPLAIN","EXPLAIN"],["UPSERT","UPSERT"],["REORDER","REORDER"],["DUPLICATE","DUPLICATE"],["SELECT","SELECT"],["DISTINCT","DISTINCT"],["FROM","FROM"],["AS","AS"],["WHERE","WHERE"],["INSERT","INSERT"],["INTO","INTO"],["VALUES","VALUES"],["UPDATE","UPDATE"],["SET","SET"],["DELETE","DELETE"],["INNER","INNER"],["LEFT","LEFT"],["RIGHT","RIGHT"],["JOIN","JOIN"],["ON","ON"],["GROUP","GROUP"],["BY","BY"],["HAVING","HAVING"],["ORDER","ORDER"],["KORDER","KORDER"],["ASC","ASC"],["DESC","DESC"],["LIMIT","LIMIT"],["OFFSET","OFFSET"],["COUNT","COUNT"],["SUM","SUM"],["AVG","AVG"],["MAX","MAX"],["MIN","MIN"],["GROUP_CONCAT","GROUP_CONCAT"],["STDDEV_POP","STDDEV_POP"],["STDDEV_SAMP","STDDEV_SAMP"],["VAR_POP","VAR_POP"],["VAR_SAMP","VAR_SAMP"],["MEDIAN","MEDIAN"],["MODE","MODE"],["ROW_NUMBER","ROW_NUMBER"],["RANK","RANK"],["DENSE_RANK","DENSE_RANK"],["ASSERT","ASSERT"],["AND","AND"],["OR","OR"],["NOT","NOT"],["EXISTS","EXISTS"],["IS","IS"],["NULL","NULL"],["LIKE","LIKE"],["KLIKE","KLIKE"],["IN","IN"],["BETWEEN","BETWEEN"],["TODAY","TODAY"],["NOW","NOW"],["LOGINUSER","LOGINUSER"],["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 be=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"}},Gt=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(Bn(n))return this.readNumber(t);let r=this.tryReadOperator(t);if(r)return r;if(Ds(n))return this.readIdentOrKeyword(t);if(n==="#")return this.readHashIdent(t);if(n==="@")return this.readVariable(t);throw new be(`\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 be("\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 be("\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&&Bn(this.input[this.pos]);)this.pos++;if(this.pos<this.input.length&&this.input[this.pos]==="."&&this.pos+1<this.input.length&&Bn(this.input[this.pos+1]))for(this.pos++;this.pos<this.input.length&&Bn(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||!Bn(this.input[this.pos]))throw new be("\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&&Bn(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&&wp(this.input[this.pos]);)this.pos++;let n=this.input.slice(t,this.pos),r=n.toUpperCase(),i=yo.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(!Ds(n))throw new be("\u300C#\u300D \u306E\u76F4\u5F8C\u306B\u306F\u8B58\u5225\u5B50\u304C\u5FC5\u8981\u3067\u3059",t,this.input);for(;this.pos<this.input.length&&wp(this.input[this.pos]);)this.pos++;let r=this.input.slice(t,this.pos);if(this.input[this.pos]==="@")throw new be(`@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 be("\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 be("\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 De(e,t,n,r,i={}){let o=i.pageSize??yg,a=Math.max(1,i.parallel??mg),s=i.maxRecords??Ag,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,g=0,y=Kc(n,E),m=await Gc(e,t,y,u,o,g);if(xc(m,i),d.push(...m.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 Ue(R)}if(m.records.length<o)return d;for(g+=o,g>=Rs&&(E=Bc(m.records),g=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 Ue(R)}let h=p-d.length,A=Math.ceil(h/o),b=Math.max(1,Math.min(a,A)),w=[];for(let N=0;N<b;N++){let _=g+N*o;if(_>=Rs)break;w.push(_)}let P=Kc(n,E),T=await Promise.all(w.map(N=>Gc(e,t,P,u,o,N)));for(let N of T)xc(N,i);let L=!1;for(let N of T){if(d.push(...N.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 Ue(R)}if(N.records.length<o){L=!0;break}}if(L)break;if(g+=o*w.length,g>=Rs){let N=T[T.length-1];E=Bc(N.records),g=0}}return d}function xc(e,t){e.searchAborted&&t.onSearchAborted?.()}function $c(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 yg=500,mg=1,Ag=1e4,Rs=1e4;async function Gc(e,t,n,r,i,o){let a=hg(n,i,o);return e({app:t,query:a,fields:r})}function Kc(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 hg(e,t,n){let r=e.trimEnd(),i=`limit ${t} offset ${n}`;return r?`${r} ${i}`:i}function Bc(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 Ue=class extends Error{constructor(n,r=!1){super(n);this.completeInputWrapped=r;this.name="FetchAllLimitError"}};var Sg=/^([+-]?)(?:(\d+)(?:\.(\d*))?|\.(\d+))(?:[eE]([+-]?)(\d+))?$/;function Tg(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 he(e){let t=Sg.exec(e.trim());if(t===null)return null;let n=Tg(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 gs(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 Vc(e){let t=he(e);return t===null?null:gs(t)}function Ig(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 qi(e,t){if(e.sign!==t.sign)return e.sign<t.sign?-1:1;if(e.sign===0)return 0;let n=Ig(e,t);return e.sign===-1?n===0?0:n===-1?1:-1:n}function zi(e,t){let n=he(e),r=he(t);if(n===null||r===null)throw new Error("ArgumentError: compareDecimal requires finite decimal inputs.");return qi(n,r)}var Je="__NO_FROM__";function ys(e){return e.windowKind===void 0||e.windowKind==="RANKING"}function Ji(e){return e.windowKind==="AGGREGATE"}function ms(e){return e.windowKind==="VALUE"}function me(e){return{type:"NUMBER",value:Number(e),raw:e}}function j(e){let t=e.raw??String(e.value);return Vc(t)??t}function Wc(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 wg(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=wg(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 Hc(e){return Z(e).type!=="NONE"}function Yc(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 Zi(e){if(!e||typeof e!="object")return"UNKNOWN";let t=e;return typeof t.type=="string"?t.type:"UNKNOWN"}function Mt(e){return e==="INSERT"||e==="INSERT_SELECT"||e==="UPDATE"||e==="DELETE"||e==="UPSERT"||e==="UPSERT_SELECT"||e==="REORDER"||e==="IMPORT"}function bg(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 As(e){return Mt(e.type)&&!("validateOnly"in e&&e.validateOnly===!0)}function vn(e){return!As(e)&&(bg(e.type)||Mt(e.type))}function jc(e){return vn(e)?e.type==="SELECT"||e.type==="WITH"||e.type==="UNION"||e.type==="SHOW_APPS"||e.type==="DESCRIBE"||e.type==="VALIDATE":!1}var qc=new Set(["STDDEV_POP","STDDEV_SAMP","VAR_POP","VAR_SAMP","MEDIAN","MODE"]);function Pe(e,t){for(let n of t)e.add(n)}function Xi(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"&&qc.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=>Xi(i,t)):Xi(r,t))}function Qi(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"&&!qc.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=>Qi(i,t)):Qi(r,t))}function kt(e){let t=new Set;if(Mt(e.type))return t.add("DML"),t;switch(e.type){case"VALIDATE":t.add("VALIDATE");break;case"SELECT":Pe(t,Dn(e));break;case"UNION":Pe(t,Jc(e));break;case"WITH":for(let n of e.ctes)n.query.type!=="GENERATE_SERIES"&&Pe(t,kt(n.query));Pe(t,kt(e.query));break;case"CREATE_TEMP_TABLE":Pe(t,kt(e.query));break;default:break}return Xi(e)&&t.add("STATISTICAL_AGGREGATE"),Qi(e)&&t.add("AGGREGATE"),t}function zc(e){return kt(e).size>0}function Jc(e){let t=e.left.type==="SELECT"?Dn(e.left):Jc(e.left);return Pe(t,Dn(e.right)),e.all||t.add("DISTINCT"),t}function Dn(e){let t=new Set,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"&&Pe(t,Dn(r.query)),r.type==="CASE_COL")for(let i of r.expr.branches)Pe(t,_n(i.condition));return Pe(t,_n(e.where)),Pe(t,_n(e.having)),Xi(e)&&t.add("STATISTICAL_AGGREGATE"),Qi(e)&&t.add("AGGREGATE"),t}function _n(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")&&Pe(t,Dn(e.right.query));break;case"LOGICAL":Pe(t,_n(e.left)),Pe(t,_n(e.right));break;case"NOT":case"GROUP":Pe(t,_n(e.expr));break;case"EXISTS":Pe(t,Dn(e.query));break;case"NULL_CHECK":case"BOOLEAN":break}return t}function Xc(e){if(!e||typeof e!="object")return!1;let t=e;return t.where!==null&&t.where!==void 0}function Qc(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 eo=new Set(["YESTERDAY","TOMORROW","FROM_TODAY","THIS_WEEK","LAST_WEEK","NEXT_WEEK","THIS_MONTH","LAST_MONTH","NEXT_MONTH","THIS_YEAR","LAST_YEAR","NEXT_YEAR"]),tn=new Set(["TODAY","NOW","LOGINUSER","PRIMARY_ORGANIZATION"]),fr=new Set([...tn,...eo]),nn="WHERE_RELATIVE_DATE_REQUIRES_EXACT_PUSHDOWN",At="WHERE_KINTONE_FUNCTION_REQUIRES_EXACT_PUSHDOWN";function te(e){return eo.has(e)}function Un(e){return tn.has(e)}function Xe(e){return fr.has(e)}var Ng=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})}),Ts=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})}),Er="v1";function q(e){throw new Error(`UnsupportedError: APPLY ${Er} scope does not support ${e}`)}function Pg(e,t){let n=Er;Er=e;try{return t()}finally{Er=n}}function Cg(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 Fn(e,t){return Pg(e,()=>Og(t,Ng[e]))}function Og(e,t){let n=Cg(e);if(n===null)return;if(n.type==="UPSERT"){_g(n,t);return}let r=n.applyBlocks;if(hs(r),!t.multipleBlocks&&r.length!==1&&q("multiple APPLY blocks in this phase"),n.type==="INSERT"){Dg(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"),vg(i.where,t.multipleParents),ep(r,t)}function ep(e,t){for(let n of e){for(let r of n.operations)t.operations.has(r.kind)||q(`${r.kind} in this phase`);tp(n);for(let r of n.operations){if(r.kind==="APPEND"){for(let i of r.fields)to(i,"APPEND targets");Mn(r.values,"APPEND values");continue}if(r.kind==="REMOVE"){!t.expectRows&&r.expectRows&&q("EXPECT ROWS in this phase"),r.selector.kind==="WHERE"&&Zc(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")}Mn(r.assignments,"PATCH assignments"),r.selector.kind==="WHERE"&&Zc(r.selector.where,t.idxSelectors)}}}}function tp(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 Lg=new Set(["MULTI_SELECT","CHECK_BOX","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function np(e,t){if(tp(e),e.targetKind==="MULTI_VALUE"){if(!Lg.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 hs(e){let t=new Set;for(let n of e){if(t.has(n.field))throw new Error(`ArgumentError: APPLY ${Er} scope allows only one block for table ${n.field}`);t.add(n.field)}}function _g(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??[];hs(n),hs(r),!t.multipleBlocks&&(n.length>1||r.length>1)&&q("multiple APPLY blocks in this phase"),rp(n,"UPSERT ON INSERT"),ep(r,{...t,idxSelectors:!1,expectRows:!1})}function rp(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)to(i,"APPEND targets");Mn(r.values,"APPEND values")}}function Dg(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"),rp(t,"INSERT")}function ht(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 no(e,t){let n=Ts[e],r="validateOnly"in t&&t.validateOnly===!0;if(t.type!=="EXPLAIN"&&!r&&Is(t)&&e!=="phase15b")throw new Error(`UnsupportedError: APPLY ${kn(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 ${kn(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 ${kn(e)} INSERT execution is not connected`);return}if(!(t.type!=="UPDATE"||!t.applyBlocks?.length)&&!n.multipleParentPreflight&&!ht(t.where))throw new Error(`UnsupportedError: APPLY ${kn(e)} execution does not support multiple-parent APPLY`)}function Is(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 ip(e,t){if(!(t.type!=="UPDATE"||!t.applyBlocks?.length||ht(t.where))&&!Ts[e].publicMultipleParentWrite)throw new Error(`UnsupportedError: APPLY ${kn(e)} public multiple-parent write is not connected`)}function xn(e){if(!Ts[e].internalPreparedWrite)throw new Error(`UnsupportedError: APPLY ${kn(e)} internal prepared write is not available`)}function kn(e){return`Phase ${e.slice(5)}`}function vg(e,t){ht(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"),Ss(e,t))}function Ss(e,t){if(Array.isArray(e)){for(let o of e)Ss(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"&&te(n.name))&&q("non-deterministic kintone functions in parent WHERE");for(let o of Object.values(n))Ss(o,t)}function Zc(e,t){Mn(e,"child row selectors",t)}function Mn(e,t,n=!1){if(Array.isArray(e)){for(let s of e)Mn(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"&&te(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}`),to(l,t,n)}if(i==="FIELD_REF"&&to(r.field,t,n),!(o==="PATCH"||o==="APPEND"||o==="REMOVE"))for(let s of Object.values(r))Mn(s,t,n)}function to(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 Rr(e){switch(e.type){case"BOOLEAN":return{type:"BOOLEAN",value:!e.value};case"BINARY":{let t=Ug(e.op);if(t===null)throw new se(`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:Rr(e.left),right:Rr(e.right)};case"NOT":return e.expr;case"GROUP":return{type:"GROUP",expr:Rr(e.expr)};case"EXISTS":return{...e,not:!e.not}}}function Ug(e){switch(e){case"=":return"!=";case"!=":case"<>":return"=";case">":return"<=";case"<":return">=";case">=":return"<";case"<=":return">";case"LIKE":return"NOT_LIKE";case"NOT_LIKE":return"LIKE";case"KLIKE":return"NOT_KLIKE";case"NOT_KLIKE":return"KLIKE";case"IN":return"NOT_IN";case"NOT_IN":return"IN"}}function op(e){return e.includes("%")||e.includes("_")}function gr(e){return e.type==="BINARY"&&(e.op==="LIKE"||e.op==="NOT_LIKE")}function xt(e){return e.type==="BINARY"&&(e.op==="KLIKE"||e.op==="NOT_KLIKE")}function Ft(e){if(e===null)return!1;if(gr(e))return!0;switch(e.type){case"LOGICAL":return Ft(e.left)||Ft(e.right);case"NOT":case"GROUP":return Ft(e.expr);case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return!1}}function Se(e){if(e===null)return!1;if(xt(e))return!0;switch(e.type){case"LOGICAL":return Se(e.left)||Se(e.right);case"NOT":case"GROUP":return Se(e.expr);case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return!1}}function Y(e){switch(e.type){case"BINARY":return kg(e);case"NULL_CHECK":return Fg(e);case"LOGICAL":return xg(e);case"NOT":return Gg(e);case"GROUP":return Kg(e);case"EXISTS":throw new se("EXISTS \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"BOOLEAN":throw new se("internal error: BOOLEAN predicate reached kintone query conversion")}}function kg(e){if(gr(e))throw new se("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=sp(e.left),n=Mg(e.op),r=Bg(e.right,e.op);return`${t} ${n} ${r}`}function Mg(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 Fg(e){let t=sp(e.field);return e.not?`${t} != ""`:`${t} = ""`}function xg(e){let t=Y(e.left),n=Y(e.right),r=e.op==="AND"?"and":"or",i=ap(e.left)?`(${t})`:t,o=ap(e.right)?`(${n})`:n;return`${i} ${r} ${o}`}function Gg(e){return Y(Rr(e.expr))}function Kg(e){return`(${Y(e.expr)})`}function sp(e){if(e.type==="FUNC_FIELD")throw new se(`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 se("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 se("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 se("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 se("GROUPING() \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");return zg(e.field)}function Bg(e,t){switch(e.type){case"VARIABLE":throw new se(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"VARIABLE_IN_LIST":throw new se(`\u672A\u89E3\u6C7A\u306E\u914D\u5217\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"STRING":return lp(e);case"NUMBER":return j(e);case"KINTONE_FUNC":return up(e);case"IN_LIST":return jg(e,t);case"ARITH_VALUE":throw new se("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 se("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 se("IN (SELECT ...) \u306F kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093");case"SCALAR_SUBQUERY":throw new se("\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 se("\u914D\u5217\u30EA\u30C6\u30E9\u30EB\u306F WHERE \u53E5\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093")}}function lp(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 $g(e)}function $g(e){switch(e.name){case"YESTERDAY":case"TOMORROW":case"THIS_YEAR":case"LAST_YEAR":case"NEXT_YEAR":return e.args?.kind!=="NONE"?yr():`${e.name}()`;case"FROM_TODAY":return e.args?.kind!=="FROM_TODAY"||!Hg(e.args.offset,e.args.offsetText)||!Vg.has(e.args.unit)?yr():`${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&&!Wg.has(e.args.weekday)?yr():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"||!Yg(e.args.day)?yr():e.args.day===null?`${e.name}()`:`${e.name}(${e.args.day})`}return yr()}var Vg=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),Wg=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function Hg(e,t){return!Number.isSafeInteger(e)||!/^(?:0|[1-9]\d*|-[1-9]\d*)$/.test(t)?!1:Number(t)===e}function Yg(e){return e===null||e==="LAST"||typeof e=="number"&&Number.isInteger(e)&&e>=1&&e<=31}function yr(){throw new se("internal error: invalid relative date function AST reached kintone query conversion")}function jg(e,t){if(t!=="IN"&&t!=="NOT_IN")throw new se("IN_LIST \u306F IN / NOT IN \u6F14\u7B97\u5B50\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059");return qg(e.values),`(${e.values.map(r=>r.type==="STRING"?lp(r):r.type==="NUMBER"?j(r):up(r)).join(",")})`}function qg(e){let t=e.find(n=>n.type==="VARIABLE");if(t?.type==="VARIABLE")throw new se(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${t.name} \u304C\u3042\u308A\u307E\u3059`)}function zg(e){return/^[\w$\u3000-\u9FFF]+$/u.test(e)?e:`"${e.replace(/"/g,'\\"')}"`}function ap(e){return e.type==="LOGICAL"}var se=class extends Error{constructor(t){super(t),this.name="KintoneQueryError"}};function ro(e){return`'${e.replace(/'/g,"''")}'`}function Gn(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 j(e);if(e.type==="STRING_FUNC")return bs(e);let n=`${Gn(e.left)}${e.op}${Gn(e.right)}`;return t?n:`(${n})`}function cp(e){if(e.type==="FIELD")return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;if(e.type==="FUNC_FIELD")return bs(e.expr);if(e.type==="AGG_FIELD")return st(e.expr);if(e.type==="ARITH_FIELD")return Gn(e.expr);if(e.type==="GROUPING_FIELD"){let t=e.ref.field;return`GROUPING(${t.tableAlias?`${t.tableAlias}.`:""}${t.field})`}return ws(e.expr)}function dp(e){switch(e.type){case"STRING":return ro(e.value);case"NUMBER":return j(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(dp).join(",")})`;case"ARITH_VALUE":return Gn(e.expr);case"CASE_VALUE":return ws(e.expr);case"SUBQUERY_IN_LIST":return"(SUBQUERY)";case"SCALAR_SUBQUERY":return"(SUBQUERY)"}}function mr(e){switch(e.type){case"BINARY":return`${cp(e.left)} ${e.op.replace("_"," ")} ${dp(e.right)}`;case"NULL_CHECK":return`${cp(e.field)} IS ${e.not?"NOT ":""}NULL`;case"LOGICAL":return`(${mr(e.left)} ${e.op} ${mr(e.right)})`;case"NOT":return`NOT (${mr(e.expr)})`;case"GROUP":return`(${mr(e.expr)})`;case"BOOLEAN":return e.value?"TRUE":"FALSE";case"EXISTS":return`${e.not?"NOT ":""}EXISTS (SUBQUERY)`}}function pp(e){return e.type==="ARRAY"?`[${e.elements.map(t=>ro(t.value)).join(",")}]`:e.type==="AGG_REF"?Re(e.func,e.distinct,e.arg):e.type==="AGG_ARITH"?st(e):e.type==="FIELD_REF"||e.type==="ARITH"?Gn(e):rn(e)}function ws(e){let t=e.branches.map(r=>`WHEN ${mr(r.condition)} THEN ${pp(r.result)}`).join(" "),n=e.elseResult===null?"":` ELSE ${pp(e.elseResult)}`;return`CASE ${t}${n} END`}function Jg(e){return e.type==="AGG_REF"?Re(e.func,e.distinct,e.arg):e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"?st(e):rn(e)}function bs(e){return`${e.func}(${e.args.map(Jg).join(",")})`}function rn(e){switch(e.type){case"STRING":return ro(e.value);case"NUMBER":return j(e);case"VARIABLE":return`@${e.name}`;case"FIELD":return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;case"STRING_FUNC":return bs(e);case"CASE_WHEN":return ws(e);case"SCALAR_ARITH":return`(${rn(e.left)}${e.op}${rn(e.right)})`;case"CONCAT_OP":return`(${rn(e.left)}||${rn(e.right)})`}}function Xg(e){return e.type==="WILDCARD"?"*":e.type==="FIELD_REF"||e.type==="ARITH"?Gn(e,!0):rn(e)}function Re(e,t,n){let r=Xg(n);return t?`${e}(DISTINCT ${r})`:`${e}(${r})`}function st(e){return e.type==="NUMBER"?j(e):e.type==="AGG_REF"?Re(e.func,e.distinct,e.arg):e.type==="AGG_GROUP_KEY"?e.tableAlias?`${e.tableAlias}.${e.field}`:e.field:e.type==="VARIABLE"?`@${e.name}`:`${st(e.left)}${e.op}${st(e.right)}`}var fp=Symbol("ksql.groupingRowMeta"),Ep=new WeakMap;function Ns(e,t){return Object.defineProperty(e,fp,{value:{includedCanonicalIds:t},enumerable:!1,configurable:!1,writable:!1}),e}function Ps(e){return e[fp]}function Qg(e){return Ps(e)?.includedCanonicalIds}function Rp(e,t){Ep.set(e,t)}function Kn(e,t){let n=Qg(t);if(!n)throw new Error("internal error: GROUPING() evaluation requires B65 grouping row membership.");let r=Ep.get(e);if(!r)throw new Error("internal error: GROUPING() reference was not resolved during B65 planning.");return n.has(r)?"0":"1"}var io=["$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 Cs(e){return e.startsWith("_")||e.startsWith("$")}var Zg=/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/;function Ls(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(Ls);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"?Zg.test(t.field):Object.values(t).some(Ls)}function ey(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 Ge(e)||Ls(e)?"AGGREGATE_DEPENDENT":"SAFE"}}var ty=["_pid","_rid","_idx"];function Os(e){return[...new Set(e)]}function ny(e){switch(e.kind){case"APP":return Os([...e.fieldCodes,...io]);case"SUBTABLE":return Os([...e.childFieldCodes,...ty,...e.parentFieldCodes.map(t=>`_p.${t}`)]);case"MATERIALIZED":return Os(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:ny(t(r,i))}))}function yp(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 mp(e,t){return e.qualifier===null?t:`${e.qualifier}.${t}`}function Ap(e,t){let n=e.tableAlias===null?e.field:`${e.tableAlias}.${e.field}`,r=e.tableAlias===null?yp(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:mp(a,r.fieldCode)}}function ry(e){return"alias"in e&&typeof e.alias=="string"?e.alias:null}function iy(e,t,n){let r=yp(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:mp(l,r.fieldCode)}}if(r.qualifier!==null)return{kind:"UNKNOWN",name:e};let a=t.flatMap((l,c)=>ry(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=ey(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&&Re(l.func,l.distinct,l.arg)===e)?{kind:"ALIAS_REJECT",reason:"AGGREGATE"}:{kind:"UNKNOWN",name:e}}function hp(e,t,n){return{items:e.map(r=>r.type==="FIELD_NAME"?iy(r.name,t,n):{kind:"EXPRESSION"})}}var oy="B65_NON_GROUPED_DEPENDENCY",Ds=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 oo(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 vs(e){let t=e.type;if(t==="FIELD_REF"&&typeof e.field=="string")return oo(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?oo(e.field):{type:"FIELD",tableAlias:n,field:e.field}}return null}function Us(e){return e.type==="SELECT"||e.type==="SCALAR_SUBQUERY"||e.type==="SCALAR_SUBQUERY_COL"||e.type==="SUBQUERY_IN_LIST"||e.type==="EXISTS"}function Tp(e){return e.type==="AGGREGATE"||e.type==="AGG_REF"}function Ip(e){return e.type==="WINDOW_COL"}function ay(e){let t=e.value;return typeof t!="number"?"?":Object.is(t,-0)?"0":String(t)}function Gt(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=>Gt(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"||Us(n))return null;if(r==="GROUP"&&n.expr!==void 0)return Gt(n.expr,t);let i=typeof r=="string"?Ds.get(r):void 0;if(i!==void 0)return Gt(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:${ay(n)}`;if(r==="BOOLEAN")return`BOOLEAN:${String(n.value)}`;let o=vs(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=Gt(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 sy(e){return"alias"in e&&typeof e.alias=="string"?e.alias:null}function ly(e){let t=new Map;for(let n of e){let r=sy(n);r!==null&&t.set(r,[...t.get(r)??[],n])}return t}function ks(e){return e.tableAlias===null?e.field:`${e.tableAlias}.${e.field}`}var uy=/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/;function ao(e){if(e&&typeof e=="object"){let t=e,n=vs(t);if(n!==null)return ks(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"?Ds.get(t.type):void 0;if(i!==void 0){let a=ao(t[i]);if(a!=="\u5F0F")return a}let o=t.func;if(typeof o=="string"&&o.length>0)return`${o}(...)`}return"\u5F0F"}function Sp(e,t,n,r){let i=n==="WILDCARD"?"wildcard":ks(n),o=ao(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=${oy})`)}function on(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){for(let a of e)on(a,t);return}let n=e;if(Us(n)||Tp(n)||Ip(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 Sp(t.clause,t.expression,"WILDCARD",t.policy);let r=vs(n);if(r!==null){if(t.clause!=="SELECT"&&r.tableAlias===null&&uy.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),on(l[0],{...t,resolvingAliases:c});return}}let a=Gt(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 Sp(t.clause,t.expression,r,t.policy);return}let i=Gt(n,t.policy.resolveField);if(i!==null&&t.policy.identities.has(i))return;let o=typeof n.type=="string"?Ds.get(n.type):void 0;if(o!==void 0){on(n[o],t);return}for(let a of Object.keys(n))a==="type"||a==="alias"||a==="aliasDisplay"||a==="raw"||on(n[a],t)}function Ar(e,t){let n=ly(e.columns);for(let r of e.columns)r.type!=="WINDOW_COL"&&on(r,{clause:"SELECT",expression:r,policy:t,aliases:n,resolvingAliases:new Set});e.having!==null&&on(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"?oo(r.key.name):r.key;on(i,{clause:"ORDER BY",expression:i,policy:t,aliases:n,resolvingAliases:new Set})}}function _s(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(_s);let t=e;return Us(t)||Ip(t)?!1:Tp(t)||t.type==="ARITH_AGG_COL"?!0:Object.values(t).some(_s)}function so(e){return Z(e).type!=="NONE"||e.columns.some(t=>t.type!=="WINDOW_COL"&&_s(t))}function cy(e){return e.type==="FIELD_NAME"?oo(e.name):e.expr}function wp(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=Ap(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=Gt(e.columns[f.columnIndex],o);E!==null&&a.add(E);return}if(f.kind==="EXPRESSION"){let E=Gt(cy(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:ao(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 lo(e){if(Z(e).type!=="NONE"||!so(e))return;let t={identities:new Set,resolveField:n=>`ast:${ks(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};Ar(e,t)}function bp(e){return`FIELD:${e}`}var Np=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 Ms(e){return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field}function Ke(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(r=>Ke(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=>Ke(r,t))}}function po(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(r=>po(r,t));return}let n=e;if(!(n.type==="SELECT"||n.type==="SCALAR_SUBQUERY")){if(n.type==="AGGREGATE"||n.type==="AGG_REF"){Ke(n.arg,t);return}Object.values(n).forEach(r=>po(r,t))}}function Ge(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(Ge);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(Ge)}function py(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"?Ge(e):!1}function dy(e,t,n){let r=t(e.field);if(!r.physical)throw new Error(`ArgumentError: grouping reference ${Ms(e.field)} must resolve to a physical APP field.`);if(!n.has(r.canonicalId))throw new Error(`ArgumentError: GROUPING argument ${Ms(e.field)} is not present in grouping allItems (reason=B65_GROUPING_ARG_NOT_ITEM).`);Rp(e,r.canonicalId)}function Fs(e){let t=Z(e),n=[];for(let i of e.columns)i.type!=="WINDOW_COL"&&Ke(i,n);Ke(e.having,n),Ke(e.orderBy,n);let r=[];Ke(e.where,r),Ke(e.joins,r),po(e.columns,r),po(e.having,r);for(let i of e.columns)i.type==="WINDOW_COL"&&Ke(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.");lo(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 Pp(e,t,n=()=>{}){Fs(e);let r=Z(e),i=[];for(let c of e.columns)c.type!=="WINDOW_COL"&&Ke(c,i);if(Ke(e.having,i),Ke(e.orderBy,i),r.type!=="GROUPING_SETS")return null;let o=Yc(e,t),a=new Set,s=[];for(let c of o.allItems){let p=c;if(!p.physical)throw new Error(`ArgumentError: grouping item ${Ms(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)dy(c,t,a);Ar(e,{identities:new Set([...a].map(bp)),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(!py(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 fy(e){return e.some(t=>t.type==="WINDOW_COL")}function Be(e){return e.from.subtableCode||e.joins.some(t=>t.table.subtableCode)||e.joins.length>0||Z(e).type!=="NONE"||e.distinct||fy(e.columns)||e.columns.some(t=>t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"||t.type==="SCALAR_SUBQUERY_COL"||t.type==="CASE_COL"&&Ge(t.expr)||t.type==="STRFUNC_COL"&&Dp(t.expr)||t.type==="SCALAR_VALUE_COL"&&Sr(t.expr))||St(e.where)||e.orderBy.some(t=>t.key.type!=="FIELD_NAME")?"FULL_SCAN":"SIMPLE"}function St(e){if(e===null)return!1;switch(e.type){case"BOOLEAN":return!0;case"BINARY":return Cp(e.left)||e.right.type==="ARITH_VALUE"||e.right.type==="CASE_VALUE"||e.right.type==="SUBQUERY_IN_LIST"||e.right.type==="SCALAR_SUBQUERY"||gr(e);case"NULL_CHECK":return Cp(e.field);case"LOGICAL":return St(e.left)||St(e.right);case"NOT":case"GROUP":return St(e.expr);case"EXISTS":return!0}}function Cp(e){return e.type==="FUNC_FIELD"||e.type==="ARITH_FIELD"||e.type==="CASE_FIELD"}function Eo(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(Ey).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:Ry(e.columns),totalCount:!1}}function _p(e,t){let n=[];return e.where!==null&&e.joins.length===0&&!St(e.where)&&n.push(Y(e.where)),{app:t,query:n.join(" "),fields:[]}}function an(e,t,n){let i=Up(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 Ey(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 Ry(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(Ro(r.field)):r.type==="ARITH_COL"?hr(r.expr,n):r.type==="STRFUNC_COL"?xs(r.expr,n):r.type==="SCALAR_VALUE_COL"&&Bn(r.expr,n);return[...new Set(n)]}function gy(e,t){hr(e.left,t),hr(e.right,t)}function hr(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(Ro(e.field)):e.type==="ARITH"?gy(e,t):e.type==="STRING_FUNC"&&xs(e,t)}function Ro(e){let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function xs(e,t){for(let n of e.args)yy(n,t)}function yy(e,t){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"){fo(e,t);return}Bn(e,t)}function Bn(e,t){if(e.type==="FIELD"){t.push(Ro(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field));return}if(e.type==="STRING_FUNC"){xs(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){Bn(e.left,t),Bn(e.right,t);return}if(e.type==="CASE_WHEN"){for(let n of e.branches)Op(n.result,t);e.elseResult&&Op(e.elseResult,t)}}function Op(e,t){if(e.type!=="ARRAY"){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"){fo(e,t);return}if(e.type==="FIELD_REF"||e.type==="ARITH"){hr(e,t);return}Bn(e,t)}}function fo(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&my(e.arg,t);return}e.type==="AGG_ARITH"&&(fo(e.left,t),fo(e.right,t)),e.type==="AGG_GROUP_KEY"&&t.push(Ro(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field))}function my(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?hr(e,t):Bn(e,t)}function Dp(e){return e.args.some(t=>t.type==="AGG_REF"||t.type==="AGG_ARITH"?!0:t.type==="AGG_GROUP_KEY"||t.type==="VARIABLE"?!1:Sr(t))}function Sr(e){return e.type==="STRING_FUNC"?Dp(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?Sr(e.left)||Sr(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>Lp(t.result))||e.elseResult!==null&&Lp(e.elseResult):!1}function Lp(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?!1:Sr(e)}function vp(e,t){let n=new Set,r=Up(e,t,{includeMaterialized:!0,unqualified:n});return{bySource:new Map([...r.entries()].map(([i,o])=>[i,new Set(o.fields)])),unqualified:n}}function Up(e,t,n){let r=[e.from,...e.joins.map(S=>S.table)],i=[e.from,...e.joins.map(S=>S.table)].filter(S=>S.cteName===null),o=n?r:i,a=new Map;for(let S of o)a.set(S,{table:S,allFields:!1,fields:new Set});if(a.size===0)return a;let s=o[0]??null,l=o.find(S=>!!S.subtableCode)??null,c=new Map;for(let S of o)S.alias&&c.set(S.alias,S),S.cteName!==null?c.set(S.cteName,S):S.subtableCode||(c.set(`APP${S.appId}`,S),c.set(`app${S.appId}`,S));let p=Ay(e.columns),u=S=>{let O=a.get(S);O&&(O.allFields=!0,O.fields.clear())},d=()=>{for(let S of o)u(S)},f=()=>{for(let S of o)S.subtableCode&&u(S)},R=(S,O)=>{let k=a.get(S);if(!(!k||k.allFields)){if(S.subtableCode){if(O.startsWith("_p.")){let C=O.slice(3);C&&C!=="*"&&k.fields.add(C);return}return void 0}O&&k.fields.add(O)}},E=(S,O="select",k)=>{if(!S||S==="*")return;if(S==="_p.*"){f();return}if(S.endsWith(".*")){let x=S.slice(0,-2);if(!x){d();return}if(x==="_p"){f();return}let H=c.get(x);if(H){u(H);return}return}if(O==="groupBy"&&k!==void 0){if(k.kind==="PHYSICAL"){let x=r[k.sourceIndex];x&&(n||x.cteName===null)&&R(x,k.fieldCode)}return}if((O==="orderBy"||O==="having"||O==="groupBy")&&p.has(S)||(O==="orderBy"||O==="having"||O==="groupBy")&&hy(S))return;let C=S.indexOf(".");if(C>0){let x=S.slice(0,C),H=S.slice(C+1);if(x==="_p"){l&&R(l,`_p.${H}`);return}let v=c.get(x);if(v){R(v,H);return}if(n)return}n?n.unqualified.add(S):s&&R(s,S)},g=(S,O,k="select")=>{if(O){if(O==="_p"){l&&R(l,`_p.${S}`);return}let C=c.get(O);if(C){R(C,S);return}if(n)return}E(S,k)},y=(S,O="select")=>{if(S.type==="VARIABLE")throw new Error(`InternalError: unresolved arithmetic variable @${S.name} reached source-aware field collection.`);if(S.type==="FIELD_REF"){E(S.field,O);return}if(S.type==="ARITH"){y(S.left,O),y(S.right,O);return}if(S.type==="STRING_FUNC"){A(S,O);return}},m=(S,O="select")=>{if(S.type==="AGG_REF"){S.arg.type!=="WILDCARD"&&w(S.arg,O);return}S.type==="AGG_ARITH"&&(m(S.left,O),m(S.right,O)),S.type==="AGG_GROUP_KEY"&&g(S.field,S.tableAlias??null,O)},h=(S,O="select")=>{if(S.type==="AGG_REF"||S.type==="AGG_ARITH"||S.type==="AGG_GROUP_KEY"||S.type==="VARIABLE"){m(S,O);return}b(S,O)},A=(S,O="select")=>{for(let k of S.args)h(k,O)},b=(S,O="select")=>{if(S.type==="FIELD"){g(S.field,S.tableAlias,O);return}if(S.type==="STRING_FUNC"){A(S,O);return}if(S.type==="SCALAR_ARITH"||S.type==="CONCAT_OP"){b(S.left,O),b(S.right,O);return}S.type==="CASE_WHEN"&&T(S,O)},w=(S,O="select")=>{if(S.type==="FIELD_REF"||S.type==="ARITH"){y(S,O);return}b(S,O)},P=(S,O="select")=>{if(S.type!=="ARRAY"){if(S.type==="AGG_REF"||S.type==="AGG_ARITH"){m(S,O);return}if(S.type==="FIELD_REF"||S.type==="ARITH"){y(S,O);return}b(S,O)}},T=(S,O="select")=>{for(let k of S.branches)_(k.condition,O),P(k.result,O);S.elseResult&&P(S.elseResult,O)},L=(S,O="select")=>{if(S.type==="FIELD"){if(S.aggregateRef){m(S.aggregateRef,O);return}g(S.field,S.tableAlias,O);return}if(S.type==="FUNC_FIELD"){A(S.expr,O);return}if(S.type==="AGG_FIELD"){m(S.expr,O);return}if(S.type==="ARITH_FIELD"){y(S.expr,O);return}S.type!=="GROUPING_FIELD"&&T(S.expr,O)},N=(S,O="select")=>{if(S.type==="ARITH_VALUE"){y(S.expr,O);return}if(S.type==="CASE_VALUE"){T(S.expr,O);return}},_=(S,O="where")=>{if(S)switch(S.type){case"BINARY":L(S.left,O),N(S.right,O);return;case"NULL_CHECK":L(S.field,O);return;case"LOGICAL":_(S.left,O),_(S.right,O);return;case"NOT":case"GROUP":_(S.expr,O);return;case"EXISTS":case"BOOLEAN":return}},F=(S,O)=>{if(S.type==="FIELD_NAME"){E(S.name,"groupBy",O);return}if(S.type==="ARITH_KEY"){y(S.expr,"groupBy");return}A(S.expr,"groupBy")},D=(S,O="orderBy")=>{if(S.type==="FIELD_NAME"){E(S.name,O);return}if(S.type==="ARITH_KEY"){y(S.expr,O);return}S.type!=="GROUPING_KEY"&&A(S.expr,O)};for(let S of e.columns)switch(S.type){case"WILDCARD":d();break;case"PARENT_WILDCARD":f();break;case"FIELD":E(S.field,"select");break;case"LITERAL_COL":break;case"VARIABLE_COL":throw new Error(`internal error: unresolved SELECT variable @${S.name}`);case"AGGREGATE":S.arg.type!=="WILDCARD"&&w(S.arg,"select");break;case"ARITH_AGG_COL":m(S.expr,"select");break;case"ARITH_COL":y(S.expr,"select");break;case"CASE_COL":T(S.expr,"select");break;case"STRFUNC_COL":A(S.expr,"select");break;case"SCALAR_VALUE_COL":b(S.expr,"select");break;case"GROUPING_COL":break;case"SCALAR_SUBQUERY_COL":break;case"WINDOW_COL":(S.windowKind==="AGGREGATE"||S.windowKind==="VALUE")&&S.arg.type!=="WILDCARD"&&w(S.arg,"select");for(let O of S.partitionBy)g(O.field,O.tableAlias,"select");for(let O of S.orderBy)D(O.key,"select");break}for(let S of e.joins)g(S.on.left.field,S.on.left.tableAlias,"where"),g(S.on.right.field,S.on.right.tableAlias,"where");_(e.where,"where");let M=Z(e);if(M.type==="PLAIN")M.allItems.forEach((S,O)=>F(S,t?.items[O]));else if(M.type==="GROUPING_SETS")for(let S of M.allItems)g(S.field,S.tableAlias,"select");_(e.having,"having");for(let S of e.orderBy)D(S.key);return a}function Ay(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(Re(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 hy(e){return/^(COUNT|SUM|AVG|MAX|MIN|GROUP_CONCAT|STDDEV_POP|STDDEV_SAMP|VAR_POP|VAR_SAMP|MEDIAN|MODE)\(/i.test(e)}function Kt(e){if(e.ctes.length!==1)return!1;let t=e.ctes[0];if(t.query.type!=="SELECT"||Be(t.query)!=="SIMPLE"||!t.query.columns.every(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||Hc(n)||n.distinct?!1:!n.columns.some(r=>r.type==="AGGREGATE"||r.type==="ARITH_AGG_COL")}function Bt(e){let t=e.ctes[0].query,n=e.query,r=go(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 go(e,t){if(e===null||t===null)return e;switch(e.type){case"BINARY":return{...e,left:kp(e.left,t)};case"NULL_CHECK":return{...e,field:kp(e.field,t)};case"LOGICAL":return{...e,left:go(e.left,t),right:go(e.right,t)};case"NOT":case"GROUP":return{...e,expr:go(e.expr,t)};case"EXISTS":case"BOOLEAN":return e}}function kp(e,t){return e.type==="FIELD"&&e.tableAlias===t?{...e,tableAlias:null}:e}var Sy=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME","CREATOR","MODIFIER"]),Ty=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]);function X(e){let t;e.fieldType==="RECORD_NUMBER"||e.fieldType==="__ID__"?t="recordNumber":e.fieldType==="NUMBER"?t="number":e.fieldType==="CALC"?t=e.sortKind==="number"?"number":"string":Ty.has(e.fieldType)?t="option":Sy.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 K(e,t=e==="number"?"KSQL_NUMBER":"KSQL_STRING"){return{fieldType:t,compareMode:e,inSubtable:!1,requiresCollectionOperators:!1}}function $n(e,t,n){return{...e,source:{appId:t,fieldCode:n}}}function yo(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 $e=["=","!=",">","<",">=","<="],Iy=new Set(["DATE","DATETIME","CREATED_TIME","UPDATED_TIME"]),wy=new Set($e),by=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"])]]),Ny=new Map([["TODAY",new Set($e)],["NOW",new Set($e)],["LOGINUSER",new Set(["in","not in"])],["PRIMARY_ORGANIZATION",new Set(["in","not in"])]]),Py=["=","!=","in","not in"],Cy=new Map([["RECORD_NUMBER",new Set([...$e,"in","not in"])],["__ID__",new Set([...$e,"in","not in"])],["CREATOR",new Set(["in","not in"])],["MODIFIER",new Set(["in","not in"])],["CREATED_TIME",new Set($e)],["UPDATED_TIME",new Set($e)],["DATE",new Set($e)],["TIME",new Set($e)],["DATETIME",new Set($e)],["SINGLE_LINE_TEXT",new Set(["=","!=","in","not in","like","not like"])],["LINK",new Set(["=","!=","in","not in","like","not like"])],["NUMBER",new Set([...$e,"in","not in"])],["CALC",new Set([...$e,"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(Py)],["STATUS_ASSIGNEE",new Set(["in","not in"])]]),Oy=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"])]]),Ks=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"]),xp=new Set(["CHECK_BOX","MULTI_SELECT","FILE","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE","CATEGORY"]);function Ao(e){return Cy.get(e)??new Set}function Gp(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"&&Ks.has(o.fieldType)&&Ao(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 ye(e,t){return e===null?{capability:"EXACT_PUSHDOWN",reasons:[{code:"WHERE_EXACT"}]}:Ir(e,t)}function Ir(e,t){switch(e.type){case"BOOLEAN":return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]};case"BINARY":return Ly(e.op,e.left,e.right,t);case"NULL_CHECK":return e.field.type!=="FIELD"?Gs():vy(e.field,e.not?"IS NOT NULL":"IS NULL",t);case"EXISTS":return Gs();case"GROUP":return Ir(e.expr,t);case"NOT":{let n=Ir(e.expr,t);return n.capability!=="SUPERSET_PREFILTER"?n:Bp(n.reasons)?br({capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"},...n.reasons]}):{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]}}case"LOGICAL":{let n=Ir(e.left,t),r=Ir(e.right,t);return ky(e.op,n,r)}}}function Ly(e,t,n,r){if(n.type==="KINTONE_FUNC"&&te(n.name))return _y(e,t,n,r);if(n.type==="KINTONE_FUNC"&&Mp(n))return Fp(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?Fp(e,t,p[0],r):mo("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED",p[0].name,t.type==="FIELD"?t.field:void 0,t.type==="FIELD"?r(t)?.fieldType:void 0,wr(e))}if(t.type!=="FIELD")return Gs();let i=r(t);if(!i)return Vn("WHERE_FIELD_UNRESOLVED",t.field,void 0,wr(e));let o=wr(e);if(!Kp(i.fieldType,o))return Vn("WHERE_OPERATOR_INVALID_FOR_FIELD_TYPE",t.field,i.fieldType,o);if(!Uy(i.fieldType,e))return Vn("WHERE_OPERATOR_UNSUPPORTED",t.field,i.fieldType,o);let a=Ao(i.fieldType),s=n.type==="STRING"||n.type==="NUMBER"||n.type==="IN_LIST"||Mp(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 Mp(e){return e.type==="KINTONE_FUNC"&&tn.has(e.name)}function Fp(e,t,n,r){let i=wr(e),o=n.name;if(!tn.has(o)||t.type!=="FIELD")return mo("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED",o,void 0,void 0,i);let a=r(t),s=by.get(o);return!a||!s.has(a.fieldType)||a.inSubtable||a.requiresCollectionOperators?mo("WHERE_KINTONE_FUNCTION_FIELD_TYPE_UNSUPPORTED",o,t.field,a?.fieldType,i):Ny.get(o).has(i)?{capability:"EXACT_PUSHDOWN",reasons:[{code:"WHERE_EXACT",functionName:o,field:t.field,fieldType:a.fieldType,operator:i}]}:mo("WHERE_KINTONE_FUNCTION_OPERATOR_UNSUPPORTED",o,t.field,a.fieldType,i)}function _y(e,t,n,r){let i=wr(e),o=n.name;if(t.type!=="FIELD")return Tr("WHERE_RELATIVE_DATE_CONTEXT_UNSUPPORTED",o,void 0,void 0,i);let a=r(t);return a?Dy(n)?wy.has(i)?!Iy.has(a.fieldType)||a.inSubtable||a.requiresCollectionOperators?Tr("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}]}:Tr("WHERE_RELATIVE_DATE_OPERATOR_UNSUPPORTED",o,t.field,a.fieldType,i):Tr("WHERE_RELATIVE_DATE_ARGUMENT_INVALID",o,t.field,a.fieldType,i):Tr("WHERE_RELATIVE_DATE_FIELD_TYPE_UNSUPPORTED",o,t.field,void 0,i)}function Dy(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 vy(e,t,n){let r=n(e);return r?Kp(r.fieldType,t)?!Ks.has(r.fieldType)&&!xp.has(r.fieldType)?Vn("WHERE_OPERATOR_UNSUPPORTED",e.field,r.fieldType,t):{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_RESIDUAL",field:e.field,fieldType:r.fieldType,operator:t}]}:Vn("WHERE_OPERATOR_INVALID_FOR_FIELD_TYPE",e.field,r.fieldType,t):Vn("WHERE_FIELD_UNRESOLVED",e.field,void 0,t)}function Kp(e,t){let n=Oy.get(e);return n===void 0||n.has(t)}function Uy(e,t){return Ks.has(e)?!0:xp.has(e)?t==="="||t==="!="||t==="<>"||t==="IN"||t==="NOT_IN"||t==="LIKE"||t==="NOT_LIKE"||t==="KLIKE"||t==="NOT_KLIKE":!1}function wr(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 ky(e,t,n){let r=[...t.reasons,...n.reasons];return t.capability==="UNSUPPORTED"||n.capability==="UNSUPPORTED"?br({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")?br({capability:"SUPERSET_PREFILTER",reasons:[{code:"WHERE_SUPERSET_PREFILTER"},...r]}):br({capability:"LOCAL_ONLY",reasons:r})}function Gs(){return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]}}function Vn(e,t,n,r){return{capability:"UNSUPPORTED",reasons:[{code:e,field:t,fieldType:n,operator:r}]}}function mo(e,t,n,r,i){return br({capability:"UNSUPPORTED",reasons:[{code:e,functionName:t,field:n,fieldType:r,operator:i}]})}function Tr(e,t,n,r,i){return $p({capability:"UNSUPPORTED",reasons:[{code:e,functionName:t,field:n,fieldType:r,operator:i}]})}function Bp(e){return e.some(t=>t.code.startsWith("WHERE_RELATIVE_DATE_")||t.functionName!==void 0&&te(t.functionName))}function My(e){return e.some(t=>t.code.startsWith("WHERE_KINTONE_FUNCTION_")||t.functionName!==void 0&&tn.has(t.functionName))}function $p(e){if(e.capability==="EXACT_PUSHDOWN"||!Bp(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&&te(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 Fy(e){if(e.capability==="EXACT_PUSHDOWN"||!My(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&&tn.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 br(e){return Fy($p(e))}function Nr(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 ho(e){let t=/^(\d{2}):(\d{2})$/.exec(e);return t!==null&&Number(t[1])<=23&&Number(t[2])<=59}function So(e){let t=/^(\d{4}-\d{2}-\d{2})T(\d{2}):(\d{2}):(\d{2})Z$/.exec(e);return!t||!Nr(t[1])?!1:Number(t[2])<=23&&Number(t[3])<=59&&Number(t[4])<=59}function To(e){let t=e.raw??String(e.value),n=he(t);if(n===null)return!1;if(n.sign===0)return j(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=gs(n);return j(e)===o}var xy=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]),Gy=new Set(["CREATOR","MODIFIER","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE"]),Ky=new Set(["SINGLE_LINE_TEXT","LINK","MULTI_LINE_TEXT","RICH_TEXT","FILE"]),By=new Set(["DATETIME","CREATED_TIME","UPDATED_TIME"]);function Io(e,t){let{fieldCode:n,fieldType:r,fieldOptions:i}=t;return r.startsWith("KSQL_")||e.op==="LIKE"||e.op==="NOT_LIKE"?"unsafe":e.op==="KLIKE"||e.op==="NOT_KLIKE"?Ky.has(r)&&e.right.type==="STRING"&&e.right.value!==""?"exact":"unsafe":r==="__ID__"||n==="$id"?Vy(e.right)&&(e.op==="="||e.op==="<"||e.op===">"||e.op==="<="||e.op===">=")?"exact":"unsafe":r==="RECORD_NUMBER"||r==="CALC"?$y(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"&&To(o))||(e.op==="="||e.op==="!="||e.op==="<>"||e.op==="<"||e.op===">"||e.op==="<="||e.op===">=")&&e.right.type==="NUMBER"&&To(e.right)?"exact":"unsafe":Gy.has(r)?Bs(e)?"exact":"unsafe":r==="SINGLE_LINE_TEXT"||r==="LINK"?Bs(e)||(e.op==="="||e.op==="!="||e.op==="<>")&&e.right.type==="STRING"&&e.right.value!==""?"exact":"unsafe":r==="DATE"||r==="TIME"||By.has(r)?e.op!=="="&&e.op!=="!="&&e.op!=="<>"&&e.op!=="<"&&e.op!==">"&&e.op!=="<="&&e.op!==">="||e.right.type!=="STRING"?"unsafe":r==="DATE"?Nr(e.right.value)?"exact":"unsafe":r==="TIME"?ho(e.right.value)?"exact":"unsafe":So(e.right.value)?"exact":"unsafe":xy.has(r)?!Bs(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 Vp(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 Bs(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 $y(e){let t=n=>n.type==="NUMBER"&&To(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 Vy(e){return e.type==="NUMBER"&&Number.isSafeInteger(e.value)&&e.value>0}function $s(e,t={}){return Po(e,t).condition}function Po(e,t={}){return wo(e,n=>Wy(n,t))}function Pr(e,t={}){return bo(e,n=>Vp(n,r=>No(r,t)))}function wo(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=wo(e.left,t),r=wo(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 wo(e.expr,t);case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return{condition:null,relation:null}}}function bo(e,t){switch(e.type){case"BINARY":return t(e)?e:null;case"LOGICAL":if(e.op!=="AND")return null;{let n=bo(e.left,t),r=bo(e.right,t);return n&&r?{...e,left:n,right:r}:n??r??null}case"GROUP":return bo(e.expr,t);case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return null}}function Wy(e,t){if(Hy(e,t)||Yy(e,t))return"exact";if(e.left.type!=="FIELD"||!No(e.left,t))return"unsafe";let n=t.fieldTypes?.get(e.left.field);return n===void 0||n.startsWith("KSQL_")||ye(e,i=>{if(!No(i,t))return;let o=t.fieldTypes?.get(i.field);return o===void 0?void 0:X({fieldType:o})}).capability!=="EXACT_PUSHDOWN"?"unsafe":Io(e,{fieldCode:e.left.field,fieldType:n,fieldOptions:t.fieldOptions?.get(e.left.field)})}function Hy(e,t){return t.allowKlike===!1||e.op!=="KLIKE"&&e.op!=="NOT_KLIKE"||e.left.type!=="FIELD"||!No(e.left,t)?!1:e.right.type==="STRING"||t.allowUnresolvedKlikeVariables===!0&&e.right.type==="VARIABLE"}function Yy(e,t){return!jy(e.left,t)||e.right.type!=="NUMBER"?!1:e.op==="="||e.op===">"||e.op==="<"||e.op===">="||e.op==="<="}function jy(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 No(e,t){let n=t.tableAlias??null;return e.tableAlias===n?!0:t.allowUnqualifiedFields===!0&&e.tableAlias===null}function Cr(e,t={}){let n=e!==null&&t.extractCondition!==!1?Po(e,t):{condition:null,relation:null},{condition:r,relation:i}=n,o=new Set;Wn(r,o);let a=new Set;return Wn(e,a),{condition:r,relation:i,appliedKlikes:o,allKlikes:[...a]}}function sn(e,t={}){let n=e.joins.every(u=>u.type==="INNER"),r={allowKlike:n,allowUnresolvedKlikeVariables:t.allowUnresolvedVariables},i=!e.from.subtableCode&&e.from.cteName===null,o=e.joins.length===0||e.from.alias!==null,a=Cr(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.table.alias||u.table.subtableCode||u.table.cteName!==null)continue;let d=Po(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())Wn(u,p);return{mainCondition:s,mainRelation:a.relation,joinConditions:l,joinRelations:c,appliedKlikes:p,allKlikes:a.allKlikes}}function Vs(e){return e.allKlikes.filter(t=>!e.appliedKlikes.has(t))}function Wn(e,t){if(e!==null){if(xt(e)){t.add(e);return}switch(e.type){case"LOGICAL":Wn(e.left,t),Wn(e.right,t);return;case"NOT":case"GROUP":Wn(e.expr,t);return;case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}}function Co(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=Ae(t.where);if(l.length===0||!Jy(l,a)||o===null||!Wp(o,l))return null;let c={prefilterWhere:t.where,residualWhere:null,exactRelativeLeaves:zy(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 qy(p,e,l),p}function qy(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(!Wp(e.serializedWholeWhere,n))throw new Error("FULL_SCAN_EXACT invariant: relative occurrence serialization")}function Ae(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"&&Xe(i.name)){t.push(i.name);return}Object.values(i).forEach(n)}};return n(e),t}function zy(e){let t=[],n=r=>{switch(r.type){case"BINARY":(r.right.type==="KINTONE_FUNC"&&Xe(r.right.name)||r.right.type==="IN_LIST"&&r.right.values.length===1&&r.right.values[0].type==="KINTONE_FUNC"&&Xe(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 Jy(e,t){return e.length===t.length&&e.every((n,r)=>n===t[r])}function Wp(e,t){let n=new Map;for(let r of t){if(!Xe(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 ue=class extends Error{constructor(t){super(`ArgumentError: ${t}`),this.name="ArgumentError"}};function Hp(e){Yp(e)}function Hs(e){if(Vs(e).length>0)throw new ue("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 Yp(e){switch(e.type){case"SELECT":Hn(e);return;case"UNION":js(e);return;case"WITH":jp(e);return;case"EXPLAIN":Yp(e.query);return;case"CREATE_TEMP_TABLE":Ys(e.query);return;case"SET_VARIABLE":case"DECLARE_VARIABLE":case"ASSERT":ln(e);return;case"UPDATE":if(e.applyBlocks?.length&&!ht(e.where)&&Se(e.where)){Ws(e.where),ln(e);return}if($t(e)&&e.subtableCode)throw new ue("KLIKE / NOT KLIKE \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306E WHERE \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");if(!e.applyBlocks?.length&&!e.subtableCode&&Se(e.where)&&!Zy(e,e.where)){Ws(e.where),ln(e);return}if($t(e))throw new ue("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($t(e)&&e.subtableCode)throw new ue("KLIKE / NOT KLIKE \u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB DELETE \u306E WHERE \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");if(!e.subtableCode&&Se(e.where)){Ws(e.where),ln(e);return}if($t(e))throw new ue("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($t(e))throw new ue("KLIKE / NOT KLIKE \u306F INSERT / INSERT SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"UPSERT":case"UPSERT_SELECT":if($t(e))throw new ue("KLIKE / NOT KLIKE \u306F UPSERT / UPSERT SELECT \u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");return;case"REORDER":if($t(e))throw new ue("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($t(e))throw new ue("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 Ws(e){Lo(e,t=>{if(!xt(t))return;let n=t.right;if(n.type!=="STRING"&&n.type!=="VARIABLE")throw new ue("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 ue("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 Ys(e){e.type==="SELECT"?Hn(e):e.type==="UNION"?js(e):jp(e)}function js(e){Ys(e.left),Hn(e.right)}function jp(e){if(Kt(e)){Hn(Bt(e));return}for(let t of e.ctes)t.query.type==="SELECT"?Hn(t.query):t.query.type==="UNION"&&js(t.query);Ys(e.query)}function Hn(e){if(Qy(e),Se(e.where)&&!(Be(e)==="SIMPLE"&&e.from.cteName===null&&e.joins.every(n=>n.table.cteName===null))){let n=sn(e,{allowUnresolvedVariables:!0});if(Vs(n).length===0){ln(e);return}if(Xy(e)){ln(e);return}throw new ue("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")}ln(e)}function Xy(e){return e.where!==null&&Ae(e.where).length>0&&e.joins.length>0&&e.joins.every(t=>t.type==="INNER")&&[e.from,...e.joins.map(t=>t.table)].every(t=>t.alias!==null&&t.cteName===null&&!t.subtableCode)}function Qy(e){Lo(e,t=>{if(!xt(t))return;if(!Oo(e.where,t))throw new ue("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 ue("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 ue("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 ln(e){_o(e,t=>{t.type==="SELECT"&&Hn(t)},!0)}function $t(e){let t=!1;return _o(e,n=>{n.type==="BINARY"&&(n.op==="KLIKE"||n.op==="NOT_KLIKE")&&(t=!0)}),t}function Zy(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 Oo(e,t){if(e===null)return!1;if(e===t)return!0;switch(e.type){case"LOGICAL":return Oo(e.left,t)||Oo(e.right,t);case"NOT":case"GROUP":return Oo(e.expr,t);case"BINARY":case"NULL_CHECK":case"EXISTS":return!1;case"BOOLEAN":return!1}}function Lo(e,t){if(Array.isArray(e)){for(let r of e)Lo(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&&em(r)||Lo(r,t)}function _o(e,t,n=!1){if(Array.isArray(e)){for(let i of e)_o(i,t);return}if(e===null||typeof e!="object")return;let r=e;n||t(r);for(let i of Object.values(r))_o(i,t)}function em(e){return e!==null&&typeof e=="object"&&e.type==="SELECT"}var Or=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 qp(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(tm(t))throw new Or;return;default:return}}function tm(e){let t=!1;return Do(e,n=>{t||!Object.prototype.hasOwnProperty.call(n,"where")||nm(n.where)&&(t=!0)}),t}function nm(e){let t=!1;return Do(e,n=>{n.type==="KINTONE_FUNC"&&n.name==="PRIMARY_ORGANIZATION"&&(t=!0)}),t}function Do(e,t){if(Array.isArray(e)){for(let r of e)Do(r,t);return}if(e===null||typeof e!="object")return;let n=e;t(n);for(let r of Object.values(n))Do(r,t)}function Vt(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 vo(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 Vt(e,t,1,1);case"SUBSTRING":case"LPAD":case"RPAD":case"REGEXP_LIKE":case"REGEXP_SUBSTR":return Vt(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 Vt(e,t,2,2);case"CONCAT":case"COALESCE":case"GREATEST":case"LEAST":return Vt(e,t,2);case"REPLACE":case"TRANSLATE":case"DATE_ADD":return Vt(e,t,3,3);case"REGEXP_REPLACE":return Vt(e,t,3,5);case"ROUND":case"FLOOR":case"CEIL":case"TRUNCATE":return Vt(e,t,1,2);case"CURRENT_DATE":case"CURRENT_TIMESTAMP":return Vt(e,t,0,0)}}var Ht=1e4,ee=e=>new Error(`ArgumentError: ${e}`),rm=e=>e.type==="VARIABLE",Wt=e=>e?.type==="STRING"&&e.fromVariable===!0;function im(e){return e.type==="NUMBER"?Number(j(e)):e.value}function Uo(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 qs(e){let t=Uo(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 om(e){let t=new Date(e*864e5),n=t.getUTCFullYear();if(n<1||n>9999)throw ee("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 Jp(e){let t=e.trim(),n=/^([+-]?\d+)\s+(day|days)$/i.exec(t);if(!n)throw/^[+-]?\d+\s+\S+$/i.test(t)?ee("GENERATE_SERIES \u306E\u65E5\u4ED8 step \u306F day \u307E\u305F\u306F days \u306E\u307F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\u3002"):ee("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 \u5358\u4F4D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let r=Number(n[1]);if(!Number.isSafeInteger(r))throw ee("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 ee("GENERATE_SERIES \u306E\u65E5\u4ED8 step \u306B 0 day \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002");return r}function Lr(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 _r(e){let t=he(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 Xp(e){return typeof e=="string"&&(/^\d{4}-\d{2}-\d{2}T/.test(e)||/^\d{2}:\d{2}(?::\d{2})?$/.test(e))}function zp(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 Qp(e){if(e.args.length<2||e.args.length>3)throw ee("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(m=>im(m));["start","stop","step"].forEach((m,h)=>{if(t[h]==="")throw ee(`GENERATE_SERIES \u306E ${m} \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"?Uo(n):null,c=typeof r=="string"?Uo(r):null,p=typeof n=="string"&&/^\d{4}-/.test(n),u=typeof r=="string"&&/^\d{4}-/.test(r);if([n,r].some(Xp))throw ee("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"&&!(Wt(o)&&Wt(a)&&Lr(n)!==null&&Lr(r)!==null)){if(!l||!c)throw ee(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 ee("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 \u5358\u4F4D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let m=i===void 0?1:Jp(i),h=n,A=r;return{kind:"DATE",start:h,stop:A,step:m,rowCount:zp(qs(h),qs(A),m)}}let d=o.type==="NUMBER"?_r(o):Wt(o)?Lr(n):null,f=a.type==="NUMBER"?_r(a):Wt(a)?Lr(r):null;if(d===null||f===null)throw(o.type==="NUMBER"||Wt(o))&&(a.type==="NUMBER"||Wt(a))?ee("GENERATE_SERIES \u306E\u6570\u5024\u7CFB\u5217\u306F\u6574\u6570\u306E start\u3001stop\u3001step \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002"):ee("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"?_r(s):Wt(s)?Lr(i):null;if(R===null)throw s?.type==="NUMBER"||Wt(s)?ee("GENERATE_SERIES \u306E\u6570\u5024\u7CFB\u5217\u306F\u6574\u6570\u306E start\u3001stop\u3001step \u306E\u307F\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3059\u3002"):ee("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 \u5358\u4F4D\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");let E=d,g=f,y=R;if(y===0)throw ee("GENERATE_SERIES \u306E step \u306B 0 \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002");return{kind:"INTEGER",start:E,stop:g,step:y,rowCount:zp(E,g,y)}}function am(e){if(e.args.length<2||e.args.length>3)throw ee("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(rm)){["start","stop","step"].forEach((r,i)=>{let o=e.args[i];if(o?.type==="STRING"&&o.value==="")throw ee(`GENERATE_SERIES \u306E ${r} \u306B\u7A7A\u6587\u5B57\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002`);if(o?.type==="NUMBER"&&_r(o)===null)throw ee("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(Xp(o.value))throw ee("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)&&Uo(o.value)===null)throw ee("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=_r(n);if(r===null)throw ee("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 ee("GENERATE_SERIES \u306E step \u306B 0 \u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002")}else n?.type==="STRING"&&Jp(n.value);return null}let t=Qp(e);if(t.rowCount>Ht)throw ee(`GENERATE_SERIES \u306E\u751F\u6210\u4EF6\u6570 ${t.rowCount} \u884C\u304C\u4E0A\u9650 ${Ht} \u884C\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002`);return t.rowCount}function Zp(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=am(a.query);s===null?o=!1:i+=s}else t(a.query);if(o&&i>Ht)throw ee(`\u3053\u306E WITH \u6587\u306E GENERATE_SERIES \u751F\u6210\u4EF6\u6570\u5408\u8A08 ${i} \u884C\u304C\u4E0A\u9650 ${Ht} \u884C\u3092\u8D85\u3048\u3066\u3044\u307E\u3059\u3002`);t(r.query);return}Object.values(r).forEach(t)};t(e)}function zs(e){let t=Qp(e);if(t.rowCount>Ht)throw ee(`GENERATE_SERIES \u306E\u751F\u6210\u4EF6\u6570 ${t.rowCount} \u884C\u304C\u4E0A\u9650 ${Ht} \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 ee("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=qs(t.start);for(let i=0;i<t.rowCount;i++)n.push(om(r+i*t.step))}return{...t,values:n}}function Qe(e){sm(e),qp(e),Hp(e),Zp(e)}function sm(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;vo(i.func,i.args)}Object.values(r).forEach(t)};t(e)}var ko=16,ed=64,ne=class extends Error{constructor(n,r){super(n);this.statementIndex=r}};function Dr(e,t,n){if(Array.isArray(e)){for(let r of e)Dr(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))Dr(a,t,n)}}var lm=new Set(["=","!=","<>",">","<",">=","<="]);function Js(e,t,n=!1){if(Array.isArray(e)){for(let r of e)Js(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&&lm.has(String(r.op));Js(s,t,a==="where"?!0:i==="BINARY"&&a==="right"&&l?c:o?n:!1)}}}function um(e){let t=e.type==="EXPLAIN"?e.query:e;return Mt(t.type)||t.type==="VALIDATE"}function Xs(e){if(Array.isArray(e)){for(let t of e)Xs(t);return}if(e!==null&&typeof e=="object"){let t=e;t.type==="SELECT"&&Fs(e);for(let n of Object.values(t))Xs(n)}}function Qs(e){if(e.length===0)throw new ne("ArgumentError: SQL is empty.",0);if(e.forEach((u,d)=>{try{Xs(u)}catch(f){throw f instanceof Error?new ne(f.message,d):f}try{Fn("phase15b",u),Qe(u)}catch(f){throw f instanceof ue||f instanceof Or?new ne(f.message,d):f instanceof Error&&/^(UnsupportedError|ArgumentError): APPLY /.test(f.message)?new ne(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 ne(`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 ne(`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 P=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 ne(P,d)}let R=Zi(u),E=[],g=[],y=new Set,m=new Set,h=new Set,A=[];Js(u,A);let b=new Set;for(let P of A){let T=o.get(P.name);if(T===void 0)throw new ne(`ParseError: variable @${P.name} is not defined before statement ${d+1}.`,d);if(T.kind==="scalar"&&P.kind==="array-in-list")throw new ne(`ParseError: scalar variable @${P.name} cannot be used as IN @${P.name}; use IN (@${P.name}) instead.`,d);if(T.kind==="array"&&P.kind!=="array-in-list")throw new ne(`ParseError: array variable @${P.name} can only be used as IN @${P.name}.`,d);if(T.relativeDate&&um(u))throw new ne(`ArgumentError: RELATIVE_DATE variable @${P.name} cannot be used in DML or VALIDATE statements.`,d);if(T.relativeDate&&!P.relativeDateAllowed)throw new ne(`ArgumentError: RELATIVE_DATE variable @${P.name} can only be used as a WHERE comparison right operand or BETWEEN boundary.`,d);b.has(P.name)||(T.referencedBy.push(d),b.add(P.name))}if(u.type==="SET_VARIABLE"||u.type==="DECLARE_VARIABLE"){if(o.has(u.name))throw new ne(`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>ed)throw new ne(`ParseError: batch exceeds ${ed} variables.`,d)}u.type==="CREATE_TEMP_TABLE"?Dr(u.query,y,m):u.type==="DROP_TEMP_TABLE"||Dr(u,y,m);let w=!1;if(u.type==="INSERT_SELECT"||u.type==="UPSERT_SELECT"){let P=new Set,T=new Set;Dr(u.select,P,T),w=P.size>0&&T.size===0}for(let P of y){let T=t.get(P);if(T===void 0)throw new ne(`ParseError: temp table ${P} is not defined in this batch.`,d);h.add(T)}if(f){let P=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(N=>N.kind==="SUBTABLE")?[...new Set(u.targets.flatMap(N=>N.kind==="FIELD"?[N.field]:N.children)),"$err_subtable","$err_subrow","$err_source_row"]:u.type==="UPDATE"?["$id",...u.assignments.map(N=>N.field)]:"fields"in u?u.fields:[],T=JSON.stringify(P),L=t.get(f);if(L===void 0){if(t.set(f,d),n.set(f,T),r.push(f),E.push(f),t.size>ko)throw new ne(`ParseError: batch exceeds ${ko} temp tables.`,d)}else{if(n.get(f)!==T)throw new ne(`ParseError: validation error table ${f} has a different payload schema.`,d);h.add(L)}}if(u.type==="CREATE_TEMP_TABLE"){if(t.has(u.name))throw new ne(`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>ko)throw new ne(`ParseError: batch exceeds ${ko} temp tables.`,d)}if(u.type==="DROP_TEMP_TABLE"){let P=t.get(u.name);if(P===void 0)throw new ne(`ParseError: temp table ${u.name} is not defined in this batch.`,d);h.add(P),g.push(u.name),t.delete(u.name)}i.push({index:d,statementType:R,isDml:As(u),isReadOnly:vn(u),hasWhere:Xc(u),insertValuesCount:Qc(u),appIds:[...m].sort((P,T)=>P-T),tempTablesCreated:E,tempTablesReferenced:[...y],tempTablesDropped:g,dependsOn:[...h].sort((P,T)=>P-T),tempOnlySource:w,targetAppId:Mt(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:zc(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 Mo=new Map([["UNION","UNION"],["ALL","ALL"],["WITH","WITH"],["SHOW","SHOW"],["DESCRIBE","DESCRIBE"],["APPS","APPS"],["EXPLAIN","EXPLAIN"],["UPSERT","UPSERT"],["REORDER","REORDER"],["DUPLICATE","DUPLICATE"],["SELECT","SELECT"],["DISTINCT","DISTINCT"],["FROM","FROM"],["AS","AS"],["WHERE","WHERE"],["INSERT","INSERT"],["INTO","INTO"],["VALUES","VALUES"],["UPDATE","UPDATE"],["SET","SET"],["DELETE","DELETE"],["INNER","INNER"],["LEFT","LEFT"],["RIGHT","RIGHT"],["JOIN","JOIN"],["ON","ON"],["GROUP","GROUP"],["BY","BY"],["HAVING","HAVING"],["ORDER","ORDER"],["KORDER","KORDER"],["ASC","ASC"],["DESC","DESC"],["LIMIT","LIMIT"],["OFFSET","OFFSET"],["COUNT","COUNT"],["SUM","SUM"],["AVG","AVG"],["MAX","MAX"],["MIN","MIN"],["GROUP_CONCAT","GROUP_CONCAT"],["STDDEV_POP","STDDEV_POP"],["STDDEV_SAMP","STDDEV_SAMP"],["VAR_POP","VAR_POP"],["VAR_SAMP","VAR_SAMP"],["MEDIAN","MEDIAN"],["MODE","MODE"],["ROW_NUMBER","ROW_NUMBER"],["RANK","RANK"],["DENSE_RANK","DENSE_RANK"],["ASSERT","ASSERT"],["AND","AND"],["OR","OR"],["NOT","NOT"],["EXISTS","EXISTS"],["IS","IS"],["NULL","NULL"],["LIKE","LIKE"],["KLIKE","KLIKE"],["IN","IN"],["BETWEEN","BETWEEN"],["TODAY","TODAY"],["NOW","NOW"],["LOGINUSER","LOGINUSER"],["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 Ce=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"}},Yt=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(Yn(n))return this.readNumber(t);let r=this.tryReadOperator(t);if(r)return r;if(Zs(n))return this.readIdentOrKeyword(t);if(n==="#")return this.readHashIdent(t);if(n==="@")return this.readVariable(t);throw new Ce(`\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 Ce("\u6587\u5B57\u5217\u30EA\u30C6\u30E9\u30EB\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u307E\u305B\u3093",t,this.input,!0)}readBacktickIdent(t){this.pos++;let 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 Ce("\u30D0\u30C3\u30AF\u30AF\u30A9\u30FC\u30C8\u8B58\u5225\u5B50\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u307E\u305B\u3093",t,this.input,!0)}readNumber(t){for(;this.pos<this.input.length&&Yn(this.input[this.pos]);)this.pos++;if(this.pos<this.input.length&&this.input[this.pos]==="."&&this.pos+1<this.input.length&&Yn(this.input[this.pos+1]))for(this.pos++;this.pos<this.input.length&&Yn(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||!Yn(this.input[this.pos]))throw new Ce("\u6307\u6570\u90E8\u306B\u306F\u6570\u5B57\u304C\u5FC5\u8981\u3067\u3059",t,this.input,this.pos>=this.input.length);for(;this.pos<this.input.length&&Yn(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&&td(this.input[this.pos]);)this.pos++;let n=this.input.slice(t,this.pos),r=n.toUpperCase(),i=Mo.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(!Zs(n))throw new Ce("\u300C#\u300D \u306E\u76F4\u5F8C\u306B\u306F\u8B58\u5225\u5B50\u304C\u5FC5\u8981\u3067\u3059",t,this.input);for(;this.pos<this.input.length&&td(this.input[this.pos]);)this.pos++;let r=this.input.slice(t,this.pos);if(this.input[this.pos]==="@")throw new Ce(`@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 Ce("\u300C@\u300D \u306E\u76F4\u5F8C\u306B\u306F\u82F1\u5B57\u307E\u305F\u306F _ \u3067\u59CB\u307E\u308B\u5909\u6570\u540D\u304C\u5FC5\u8981\u3067\u3059",t,this.input);for(this.pos++;this.pos<this.input.length&&/[A-Za-z0-9_]/.test(this.input[this.pos]);)this.pos++;if(this.pos-t-1>64)throw new Ce("\u5909\u6570\u540D\u306F 64 \u6587\u5B57\u4EE5\u5185\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",t,this.input);return this.makeToken("VARIABLE",this.input.slice(t,this.pos),t)}skipWhitespaceAndComments(){for(;this.pos<this.input.length;){let t=this.input[this.pos];if(t===" "||t===" "||t==="\r"||t===`
|
|
2
2
|
`){this.pos++;continue}if(t==="-"&&this.input[this.pos+1]==="-"){for(;this.pos<this.input.length&&this.input[this.pos]!==`
|
|
3
|
-
`;)this.pos++;continue}if(t==="/"&&this.input[this.pos+1]==="*"){let 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
|
|
4
|
-
`),Bt=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.allowSelectArithVariable=!1}parse(){let t=this.parseStatements();if(t.length===0)throw new I("SQL \u6587\u304C\u3042\u308A\u307E\u305B\u3093",this.peek());if(t.length>1)throw new I("\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 I(`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>Np)throw new I(`batch exceeds ${Np} statements.`,n);let r=this.peek();if(r.kind!==";"&&r.kind!=="EOF")throw new I("\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 I("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 I("IMPORT is not supported (capability is disabled).",t);return this.parseImport()}break}default:break}throw new I("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 I("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=Pr[t.kind];if(n==="TODAY"||n==="NOW")return this.parseSqlValue();if(t.kind==="IDENT"&&this.peekAt(1).kind==="("&&ee(t.value.toUpperCase()))return this.parseRelativeDateFunction();throw new I("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 I(`${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 I(`${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 I("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 I("\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 I("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=Pr[r.kind];if(i==="LOGINUSER")throw new I(`${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 I(`${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 I(`${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 I(`${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 I(`${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 I("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 I(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 I("\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 I("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}=gt(t,this.prev());if(r)throw new I("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 I("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 I("IMPORT is not supported (capability is disabled).",t);n=this.parseImport()}else throw new I("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}=gt(n,this.prev());if(i)throw new I("IMPORT does not support subtables in Phase 1.",this.prev());this.expect("(");let o=[],a=[],s=new Set;for(;;){let w=this.parseIdentifier();if(s.has(w))throw new I(`IMPORT target ${w} is declared more than once.`,this.prev());if(s.add(w),this.peek().kind==="("){this.advance();let N=this.parseIdentList();if(this.expect(")"),new Set(N).size!==N.length)throw new I(`IMPORT subtable ${w} contains duplicate child declarations.`,this.prev());let b;if(this.isSoftKeyword("ROW")){this.advance();for(let _ of["ID","SOURCE"]){if(!this.isSoftKeyword(_))throw new I("ROW must be followed by ID SOURCE <header>.",this.peek());this.advance()}b=this.parseIdentifier()}o.push({kind:"SUBTABLE",subtableCode:w,children:N,...b?{rowIdSourceHeader:b}:{}})}else a.push(w),o.push({kind:"FIELD",field:w});if(this.peek().kind!==",")break;this.advance()}if(this.expect(")"),this.expect("FROM"),!this.isSoftKeyword("CSV")&&!this.isSoftKeyword("JSON"))throw new I("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 I("JSON source is UTF-8 only; ENCODING is not allowed.",this.peek());this.advance();let w=this.parseIdentifier().toUpperCase();if(w!=="UTF8"&&w!=="SJIS")throw new I("ENCODING must be UTF8 or SJIS.",this.prev());p=w==="UTF8"?"utf8":"sjis"}if(this.peek().kind==="NOT"&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="HEADER"){if(l==="JSON")throw new I("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 I("NO HEADER is CSV-only.",this.peek());this.advance(),this.advance(),u=!1}if(this.isSoftKeyword("COLUMNS")){if(l==="JSON")throw new I("COLUMNS is CSV-only.",this.peek());if(u)throw new I("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 I("SELECT projection is CSV-only.",this.peek());if(f=this.parseSelect(),f.from.cteName!==Ye||f.joins.length>0)throw new I("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 I("IMPORT projection supports SELECT expressions only.",this.prev());if(this.validateImportProjectionScope(f,this.prev()),o.some(w=>w.kind==="SUBTABLE"))throw new I("IMPORT subtable sources cannot use SELECT projection.",this.prev());if(f.columns.length!==a.length)throw new I(`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 I("BY NAME is CSV-only.",this.peek());if(this.advance(),!this.isSoftKeyword("NAME"))throw new I("BY must be followed by NAME in IMPORT.",this.peek());if(this.advance(),!u)throw new I("BY NAME requires HEADER.",this.prev());if(f)throw new I("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 I("IGNORE must be followed by UNKNOWN COLUMNS.",this.peek());if(this.advance(),!this.isSoftKeyword("COLUMNS"))throw new I("IGNORE UNKNOWN must be followed by COLUMNS.",this.peek());this.advance(),E=!0}}let g,y;if(this.isSoftKeyword("MATCH")){this.advance();for(let w of["RECORD","NUMBER","SOURCE"]){if(!this.isSoftKeyword(w))throw new I("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"&&(g=this.parseOnDuplicate());let m;if(this.peek().kind==="REPLACE"||this.isSoftKeyword("REPLACE")){if(this.advance(),!this.isSoftKeyword("SUBTABLES"))throw new I("REPLACE must be followed by SUBTABLES (...).",this.peek());if(this.advance(),this.expect("("),m=this.parseIdentList(),this.expect(")"),new Set(m).size!==m.length)throw new I("REPLACE SUBTABLES contains duplicates.",this.prev())}let A=o.filter(w=>w.kind==="SUBTABLE");if(A.length){if(f)throw new I("IMPORT subtables cannot use SELECT projection.",this.prev());if(l==="JSON"){if(A.some(w=>w.rowIdSourceHeader))throw new I("JSON subtable IMPORT does not accept ROW ID SOURCE.",this.prev());if(m)throw new I("REPLACE SUBTABLES is CSV-only; JSON uses nested-array replacement semantics.",this.prev())}else{if(t!=="UPDATE_RECORD_NUMBER"||!y)throw new I("CSV subtable IMPORT requires IMPORT UPDATE and MATCH RECORD NUMBER SOURCE.",this.prev());if(R!=="BY_NAME")throw new I("CSV subtable IMPORT requires BY NAME.",this.prev());if(!m)throw new I("CSV subtable IMPORT requires REPLACE SUBTABLES (...).",this.prev());let w=new Set(m);for(let N of A){if(!N.rowIdSourceHeader)throw new I(`CSV subtable ${N.subtableCode} requires ROW ID SOURCE <header>.`,this.prev());if(!w.has(N.subtableCode))throw new I(`IMPORT declares child columns for non-replaced subtable ${N.subtableCode}.`,this.prev())}for(let N of w)if(!A.some(b=>b.subtableCode===N))throw new I(`REPLACE SUBTABLES target ${N} is not declared in INTO.`,this.prev())}}else if(m)throw new I("REPLACE SUBTABLES requires subtable targets in INTO.",this.prev());if(t){if(l!=="CSV")throw new I("IMPORT UPDATE supports CSV only.",this.prev());if(R!=="BY_NAME")throw new I("IMPORT UPDATE requires BY NAME.",this.prev());if(!y)throw new I("IMPORT UPDATE requires MATCH RECORD NUMBER SOURCE <header>.",this.peek());if(g)throw new I("IMPORT UPDATE and ON DUPLICATE are mutually exclusive.",this.prev())}else if(y)throw new I("MATCH RECORD NUMBER SOURCE requires IMPORT UPDATE.",this.prev());let h=this.parseCheckGroups(),S=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}:{},...m?{replaceSubtables:m}:{},...g?{keyFields:g}:{},...h,...S}}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 I("IMPORT projection cannot use subqueries.",n);if(typeof r.tableAlias=="string")throw new I("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}=gt(n,this.prev());if(i)throw new I(`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 I("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 I("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 I("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 I("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 I("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 I("\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 I("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 I("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 I("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 I(`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 I("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 I("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&&_y(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:Ye},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 I("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 I("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 I("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"),g=r.some(y=>this.selectColumnHasAggregate(y));if(E&&(l.length>0||c!==void 0||g))throw new I("\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 I("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=[];do{let r=this.parseIdentifier();this.expect("AS"),this.expect("(");let i,o=this.peek().kind;o==="SHOW"?i=this.parseShow():o==="DESCRIBE"||o==="DESC"?i=this.parseDescribe():o==="IDENT"&&this.peek().value.toUpperCase()==="GENERATE_SERIES"?i=this.parseGenerateSeries():i=this.tryParseUnionChain(this.parseSelect()),this.expect(")"),t.push({name:r,query:i}),this.cteNames.add(r)}while(this.consume(","));let n=this.tryParseUnionChain(this.parseSelect());return this.cteNames.clear(),{type:"WITH",ctes:t,query:n}}parseGenerateSeries(){let t=this.advance();if(t.kind!=="IDENT"||t.value.toUpperCase()!=="GENERATE_SERIES")throw new I("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 I("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(Ee(`${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 I("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 I("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 I(vs,this.peek());if(this.isNonAggregateArithmeticStartWithAggregate())throw new I(`\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 I("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 I("_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 Op[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(Nr[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 I(`${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 I("\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 I(`${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 I(`${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 I(vs,this.peek());if(!this.consume("AS"))throw new I("\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 I(`${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 I("\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 I("\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 I("\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 I(vs,this.peek());if(!this.consume("AS"))throw new I("\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"?Ee(`-${W(n)}`):{type:"AGG_ARITH",left:Ee("0"),op:"-",right:n}}if(this.peek().kind==="NUMBER"){let n=this.advance();return Ee(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 I("\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),Nr[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 I("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 I(`\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 I(`\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 I("\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 I("\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 I("\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 Ee(`${n.kind==="-"?"-":"+"}${W(r)}`);if(n.kind==="+")throw new I("\u5358\u9805 + \u306E\u76F4\u5F8C\u306B\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059",n);return{type:"SCALAR_ARITH",left:Ee("0"),op:"-",right:r}}if(n.kind==="STRING")return this.advance(),{type:"STRING",value:n.value};if(n.kind==="NUMBER")return this.advance(),Ee(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 I("\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 I(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 I("\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 Ee(`+${n.value}`)}if(this.peek().kind==="-"){if(this.advance(),this.peek().kind==="-"||this.peek().kind==="+")throw new I("\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"?Ee(`-${W(n)}`):{type:"ARITH",left:Ee("0"),op:"-",right:n}}if(this.tryStringFuncName()!==null)return this.parseStringFuncExpr();let t=this.peek();if(t.kind==="NUMBER")return this.advance(),Ee(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 I("\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 I("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 I("\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=Us[this.peek().kind];if(n==="LEFT"||n==="RIGHT")return n}let t=Us[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(Cp.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 I(`\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 I))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 I(`${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 I("\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=Dy(n);if(r===null)throw new I(`\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 Nr[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 I("MODE \u3067\u306F DISTINCT \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);let i;if(this.consume("*")){if(!Iy(t))throw new I(`${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 I("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 I){if(r.message.includes("\u6BD4\u8F03\u30FB\u8FF0\u8A9E"))throw new I("\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 I("\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 I("\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 I("\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 I("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};let{appId:r,subtableCode:i}=gt(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 I("\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();this.expect("ON");let i=this.parseJoinCondition();t.push({type:n,table:r,on:i})}return t}tryJoinType(){return this.consume("INNER")?(this.expect("JOIN"),"INNER"):this.consume("LEFT")?(this.expect("JOIN"),"LEFT"):this.consume("RIGHT")?(this.expect("JOIN"),"RIGHT"):this.consume("JOIN")?"INNER":null}parseJoinCondition(){let t=this.parseQualifiedIdent();this.expect("=");let n=this.parseQualifiedIdent();return{left:t,right:n}}parseQualifiedIdent(){let t=this.parseIdentifier();if(this.consume(".")){if(this.peek().kind==="*")throw new I("\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 I("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 I("\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 I("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 I(`\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 I("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){if(this.groupingFieldContext==="FORBIDDEN"||this.insideAggregateArg>0)throw new I("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 I("\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:pe(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 Ee(`+${r.value}`)}return this.allowRelativeDateFunctions&&n.kind==="IDENT"&&this.peekAt(1).kind==="("&&ee(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 I("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 I("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 I("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(!Py(l))throw new I("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(!Cy(o))throw new I(`${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(!Oy(o))throw new I(`${n} \u306E\u65E5\u306F 1 \u304B\u3089 31 \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,i);r=o}else throw new I(`${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 I(`\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(Pp(t.kind))return this.advance(),this.expect("("),this.expect(")"),{type:"KINTONE_FUNC",name:Pr[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 I("\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 I("\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(Ee(i.value));else if(i.kind==="-"||i.kind==="+"){let o=this.peek();if(o.kind!=="NUMBER")throw new I(n,i);this.advance();let a=i.kind==="-"?"-":"+";t.push(Ee(`${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 I(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 I(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 I(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 I(o,this.peek())}else throw new I(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 I("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 I("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 I("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 I("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 I("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 I("B65: CUBE requires at least one field.",this.peek());let t=[];do t.push(this.parseGroupingFieldItem());while(this.consume(","));this.expect(")");let n=Ac(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 I("B65: GROUPING() requires exactly one physical field argument.",this.peek());let n=this.parseQualifiedIdent();if(this.peek().kind!==")")throw new I("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 I("\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 I("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){if(!t)throw new I("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}=gt(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 I("INSERT INTO ... SELECT \u306F APPLY \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(r)throw new I("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 I("APPLY SUBTABLE noun is not supported; use APPLY <field> (...)",this.peek());if(a.length>0&&this.isSoftKeyword("CHECK"))throw new I("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 I("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 I("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 I("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 I("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}=gt(t,this.prev());if(r)throw new I("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 I("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 I("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 I("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 I("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 I("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 I("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 I("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 I(`ON ${i?"INSERT":"UPDATE"} APPLY \u306F 1 \u56DE\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059`,r);if(!this.isApplyBlockStart())throw new I(`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 I("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(Ee(`${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(Ee(r.value));else throw new I("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 I(`\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}=gt(t,this.prev());this.expect("SET");let i=this.parseAssignments();if(r&&i.some(d=>d.value.type==="STRING_FUNC"))throw new I("\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 I("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 I("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 I("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 I(`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 I("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 I("APPLY SUBTABLE noun is not supported; use APPLY <field> (...)",this.peek());if(l.length>0&&this.peek().kind==="WHERE")throw new I("\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 I("\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 I("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 I("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 I("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 I("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 I("APPLY \u306F VALIDATE ONLY \u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(r&&c.checkGroups)throw new I("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 I("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 I("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 I("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 I("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 I("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 I("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 I("ALL \u306E\u5F8C\u306B\u306F ROWS \u304C\u5FC5\u8981\u3067\u3059",this.peek());return this.advance(),{kind:"ALL_ROWS"}}throw new I("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 I("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 I("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 I("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 I("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 I("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 I("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 I("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 I("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 I("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 I("ON \u306E\u5F8C\u306B\u306F ERROR \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(this.advance(),!this.isSoftKeyword("SKIP"))throw new I("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 I("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 I("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 I("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 I("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 I("\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 I("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 I(`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 I("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 I("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 I("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 I("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 I("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 I(`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 I("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(Pp(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 I("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 I("\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}=gt(t,this.prev()),i=this.peek();if(!this.consume("WHERE"))throw new I("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}=gt(n,this.prev());if(!i)throw new I("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 I("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 I("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 I("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 I(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 I("\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 I("\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\uFF08# \u3067\u59CB\u307E\u308B\u540D\u524D\uFF09\u306F FROM / JOIN / CREATE / DROP TEMP TABLE \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059",t);return this.advance(),t.value}throw new I("\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u307E\u305F\u306F\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}parseTableName(){let t=this.peek();if(t.kind==="IDENT"||t.kind==="BIDENT")return this.advance(),t.value;throw new I("\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u307E\u305F\u306F\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}rejectTempTableDml(){let t=this.peek();if(t.kind==="IDENT"&&t.value.startsWith("#"))throw new I(`DML on temp table ${t.value} is not supported.`,t)}parseAliasName(){let t=this.peek();if(t.value.startsWith("#"))throw new I("\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"||yo.has(t.value.toUpperCase()))return this.advance(),{alias:t.value.toLowerCase(),display:t.value};throw new I("\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 Dy(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 gt(e,t){let n=e.match(/^[Aa][Pp][Pp](\d+)(?:\$(.+))?$/);if(!n)throw new I(`\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}}var vy=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME","CREATOR","MODIFIER"]),Uy=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]);function Q(e){let t;e.fieldType==="RECORD_NUMBER"||e.fieldType==="__ID__"?t="recordNumber":e.fieldType==="NUMBER"?t="number":e.fieldType==="CALC"?t=e.sortKind==="number"?"number":"string":Uy.has(e.fieldType)?t="option":vy.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 Kn(e,t,n){return{...e,source:{appId:t,fieldCode:n}}}function mo(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}function Kt(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 ky(e,t){return e<t?-1:e>t?1:0}function Lp(e){if(e==="")return{band:0};let t=ye(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 My(e,t){let n=Lp(e),r=Lp(t);return n.band!==r.band?n.band<r.band?-1:1:n.band===2&&r.band===2?Bi(n.value,r.value):n.band===5&&r.band===5?Kt(n.value,r.value):0}function _p(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 Fy(e,t,n){let r=_p(e,n),i=_p(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=Kt(r.normalizedId,i.normalizedId);return o!==0?o:Kt(r.display,i.display)}function xy(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 Dp(e,t){let n=t.optionOrder??new Map,i=[...new Set(xy(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(vp),i}function vp(e,t){return e.knownBand!==t.knownBand?e.knownBand<t.knownBand?-1:1:e.rank!==t.rank?e.rank<t.rank?-1:1:Kt(e.label,t.label)}function Gy(e,t,n){let r=Dp(e,n),i=Dp(t,n),o=Math.min(r.length,i.length);for(let a=0;a<o;a++){let s=vp(r[a],i[a]);if(s!==0)return s}return r.length<i.length?-1:r.length>i.length?1:0}function $t(e,t,n){switch(n.compareMode){case"string":return Kt(e,t);case"number":return My(e,t);case"recordNumber":return Fy(e,t,n.fieldType==="RECORD_NUMBER");case"option":return Gy(e,t,n);case"unsupported":throw new Error(`ArgumentError: values of type ${n.fieldType} cannot be compared.`)}}function en(e,t,n,r=B("string")){let i=$t(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 Up(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=ye(o),l=ye(a),c=s!==null&&l!==null?Bi(s,l):ky(Number(o),Number(a));if(c!==0)return c}return Kt(o,a)};return n.reduce((o,a)=>{let s=i(a,o);return t==="greatest"?s>0?a:o:s<0?a:o})}function le(e,t){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(_e(t,e.field));if(e.type==="STRING_FUNC")return Number(ue(e,t));let n=le(e.left,t),r=le(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 Ae(e,t,n,r){switch(e.type){case"STRING":return e.value;case"NUMBER":return e.value;case"FIELD":return _e(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 ue(e,t,n,r);case"CASE_WHEN":return De(e,t,n,r);case"CONCAT_OP":return ue({type:"STRING_FUNC",func:"CONCAT",args:[e.left,e.right]},t,n,r);case"SCALAR_ARITH":{let i=Number(Ae(e.left,t,n,r)),o=Number(Ae(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 yt(e,t,n,r){switch(e.type){case"CASE_WHEN":return xp(e,t,n,r);case"SCALAR_ARITH":{let i=yt(e.left,t,n,r),o=yt(e.right,t,n,r);if(i===null||o===null)return null;let a=Number(i),s=Number(o);switch(e.op){case"+":return a+s;case"-":return a-s;case"*":return a*s;case"/":return s!==0?a/s:NaN;case"%":return s!==0?a%s:NaN}}case"CONCAT_OP":{let i=yt(e.left,t,n,r),o=yt(e.right,t,n,r);return`${i??""}${o??""}`}default:return Ae(e,t,n,r)}}function Ao(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 By(e){return e>=55296&&e<=56319}function Ky(e){return e>=56320&&e<=57343}function So(e,t){return t>0&&t<e.length&&By(e.charCodeAt(t-1))&&Ky(e.charCodeAt(t))}function kp(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 Ms(e,t){let n=Math.min(Math.max(0,t),e.length);return So(e,n)&&(n-=1),e.slice(0,n)}function $y(e,t){let n=Math.max(0,e.length-t);return So(e,n)&&(n+=1),e.slice(n)}function Vy(e,t,n){let r=kp(t,e.length),i=kp(n,e.length);return i<=r?"":(So(e,r)&&(r+=1),So(e,i)&&(i-=1),e.slice(r,Math.max(r,i)))}function Wy(e,t){let n=e.repeat(Math.ceil(t/e.length));return Ms(n,t)}var Hy=200,Cr=new Map;function Yy(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 ks(e,t,n=!1){let r=Yy(t)+(n?"g":""),i=`${e}\0${r}`,o=Cr.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(Cr.size>=Hy){let s=Cr.keys().next().value;s!==void 0&&Cr.delete(s)}return Cr.set(i,a),a}function jy(e){if(e.includes("$`")||e.includes("$'"))throw new Error("ArgumentError: REGEXP_REPLACE replacement must not contain $` or $'.")}function zy(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 qy(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 Xy(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 qy(n,o,p,l?s:void 0)})}function ue(e,t,n,r){Eo(e.func,e.args);let i=e.args.map(o=>im(o,t,n,r));switch(e.func){case"UPPER":return(i[0]??"").toUpperCase();case"LOWER":return(i[0]??"").toLowerCase();case"TRIM":return(i[0]??"").trim();case"LTRIM":return(i[0]??"").trimStart();case"RTRIM":return(i[0]??"").trimEnd();case"LENGTH":return String((i[0]??"").length);case"LENGTH_CHAR":return String([...i[0]??""].length);case"SUBSTRING":{let o=i[0]??"",a=Math.max(0,Number(i[1]??"1")-1),s=i[2]!==void 0?Number(i[2]):void 0;return Vy(o,a,s!==void 0?a+s:o.length)}case"LEFT":{let o=i[0],a=Math.trunc(Number(i[1]));return Number.isNaN(a)||a<=0?"":Ms(o,a)}case"RIGHT":{let o=i[0],a=Math.trunc(Number(i[1]));return Number.isNaN(a)||a<=0?"":$y(o,a)}case"INSTR":return String(i[0].indexOf(i[1])+1);case"LPAD":case"RPAD":{let o=i[0],a=Math.trunc(Number(i[1]));if(Number.isNaN(a)||a<=0)return"";if(o.length>=a)return Ms(o,a);let s=i[2]??" ";if(s==="")return o;let l=Wy(s,a-o.length);return e.func==="LPAD"?l+o:o+l}case"GREATEST":case"LEAST":return Up(i,e.func==="GREATEST"?"greatest":"least");case"CONCAT":return i.join("");case"REPLACE":{let o=i[0]??"",a=i[1]??"",s=i[2]??"";return a===""?o:o.split(a).join(s)}case"REGEXP_LIKE":return ks(i[1],i[2]??"").test(i[0])?"1":"0";case"REGEXP_REPLACE":{jy(i[2]);let o=zy(i[4]),a=ks(i[1],i[3]??"",!0);return o===0?i[0].replace(a,i[2]):Xy(i[0],a,i[2],o)}case"REGEXP_SUBSTR":return ks(i[1],i[2]??"").exec(i[0])?.[0]??"";case"TRANSLATE":{let o=[...i[1]],a=[...i[2]];if(o.length!==a.length)throw new Error(`ArgumentError: TRANSLATE \u306E from \u3068 to \u306F\u540C\u3058\u6587\u5B57\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08from=${o.length}, to=${a.length}\uFF09`);let s=new Map;return o.forEach((l,c)=>{s.has(l)||s.set(l,a[c])}),[...i[0]].map(l=>s.get(l)??l).join("")}case"COALESCE":return i.find(o=>o!=="")??"";case"NULLIF":return(i[0]??"")===(i[1]??"")?"":i[0]??"";case"ISNULL":return(i[0]??"")!==""?i[0]??"":i[1]??"";case"ROUND":return Ao("round",Number(i[0]??"0"),Number(i[1]??"0"));case"FLOOR":return Ao("floor",Number(i[0]??"0"),Number(i[1]??"0"));case"CEIL":return Ao("ceil",Number(i[0]??"0"),Number(i[1]??"0"));case"TRUNCATE":return Ao("trunc",Number(i[0]),Number(i[1]??"0"));case"CAST":{let o=i[0]??"";if((i[1]??"TEXT")==="NUMBER"){let s=Number(o);return isNaN(s)?o:String(s)}return o}case"FORMAT":{let o=Number(i[0]??"0"),a=i[1]??"0";return nm(o,a)}case"YEAR":{let o=i[0]??"";return o.length>=4?String(parseInt(o.slice(0,4),10)):""}case"MONTH":{let o=i[0]??"";return o.length>=7?String(parseInt(o.slice(5,7),10)):""}case"DAY":{let o=i[0]??"";return o.length>=10?String(parseInt(o.slice(8,10),10)):""}case"DAYOFWEEK":return ho(i[0])?String(Fs(i[0])+1):"";case"QUARTER":return ho(i[0])?String(Math.ceil(Number(i[0].slice(5,7))/3)):"";case"WEEK":return ho(i[0])?String(Fp(i[0])):"";case"DATE_FORMAT":return Qy(i[0]??"",i[1]??"");case"DATEDIFF":return Zy(i[0]??"",i[1]??"");case"DATE_ADD":return em(i[0]??"",Number(i[1]??"0"),(i[2]??"DAY").toUpperCase());case"LAST_DAY":return tm(i[0]);case"ABS":return String(Math.abs(Number(i[0]??"0")));case"MOD":{let o=Number(i[0]??"0"),a=Number(i[1]??"0");return String(a!==0?o%a:NaN)}case"POWER":return String(Math.pow(Number(i[0]??"0"),Number(i[1]??"0")));case"SQRT":return String(Math.sqrt(Number(i[0]??"0")));case"CURRENT_DATE":{let o=new Date,a=o.getFullYear(),s=String(o.getMonth()+1).padStart(2,"0"),l=String(o.getDate()).padStart(2,"0");return`${a}-${s}-${l}`}case"CURRENT_TIMESTAMP":return new Date().toISOString()}}function Or(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 To(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 ho(e){let t=e.slice(0,10);if(!/^\d{4}-\d{2}-\d{2}$/.test(t))return!1;let n=To(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 Fs(e){return To(e).getUTCDay()}function Mp(e){let t=To(e),n=t.getUTCDay()||7;return t.setUTCDate(t.getUTCDate()+4-n),t}function Jy(e){return Mp(e).getUTCFullYear()}function Fp(e){let t=Mp(e),n=t.getUTCFullYear(),r=To(`${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 Qy(e,t){if(!e||e.length<10)return"";let{y:n,mo:r,d:i,h:o,mi:a,sec:s}=Or(e),l=ho(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(Fs(e)):"";case"%a":return l?["\u65E5","\u6708","\u706B","\u6C34","\u6728","\u91D1","\u571F"][Fs(e)]:"";case"%v":return l?String(Fp(e)).padStart(2,"0"):"";case"%G":return l?String(Jy(e)).padStart(4,"0"):"";default:return c}})}function Zy(e,t){if(e.length<10||t.length<10)return"0";let n=Or(e),r=Or(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 em(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}=Or(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 tm(e){if(!e||e.length<10)return e;let{y:t,mo:n}=Or(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 nm(e,t){if(/^-?\d+$/.test(t.trim()))return rm(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 rm(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 im(e,t,n,r){return e.type==="AGG_REF"||e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"?String(Lr(e,t)):e.type==="NUMBER"?W(e):String(Ae(e,t,n,r))}function Lr(e,t){if(e.type==="NUMBER")return e.value;if(e.type==="AGG_REF")return t[pe(e.func,e.distinct,e.arg)]??"";if(e.type==="AGG_GROUP_KEY"){let i=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return Number(_e(t,i))}if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved aggregate arithmetic variable @${e.name}.`);let n=Number(Lr(e.left,t)),r=Number(Lr(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 _e(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 ie(e,t,n,r,i){switch(e.type){case"BOOLEAN":return e.value;case"BINARY":return om(e,t,n,r,i);case"NULL_CHECK":return pm(e,t);case"LOGICAL":return dm(e,t,n,r,i);case"NOT":return!ie(e.expr,t,n,r,i);case"GROUP":return ie(e.expr,t,n,r,i);case"EXISTS":{let o=e.resolved;return e.not?!o:o}}}function om(e,t,n,r,i){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 o=Yp(e.left,t,n,i),a=e.left.type==="FIELD"?n?.(e.left):void 0,s=sm(e.left,a,i);return am(e.op,o,e.right,t,a,n,s,i)}function am(e,t,n,r,i,o,a=B("string"),s){if(e==="IN"||e==="NOT_IN"){let c=null;if(n.type==="IN_LIST"&&(cm(n.values),c=new Set(n.values.map(u=>u.type==="NUMBER"?i==="NUMBER"?W(u):String(u.value):u.value))),n.type==="SUBQUERY_IN_LIST"&&(c=n.resolved),c===null)return e==="NOT_IN";let p=um(t,c,i);return e==="IN"?p:!p}if(e==="LIKE"){let c=xs(n,r,o);return Hp(t,c)}if(e==="NOT_LIKE"){let c=xs(n,r,o);return!Hp(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 l=xs(n,r,o,s);return en(e,t,l,a)}var Gp=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function sm(e,t,n){if(e.type==="FIELD")return n?.(e)??(t?Q({fieldType:t}):B("string"));if(e.type==="ARITH_FIELD"||e.type==="AGG_FIELD")return B("number");if(e.type==="FUNC_FIELD")return B(Gp.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(Gp.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 Bp=new Set(["CHECK_BOX","MULTI_SELECT"]),Kp=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE"]),lm=new Set(["CREATOR","MODIFIER"]);function um(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=>en("=",e,a,o))}let i;if(Bp.has(n)||Kp.has(n)||lm.has(n))try{i=JSON.parse(e)}catch{return r()}else return r();return Bp.has(n)?!Array.isArray(i)||!i.every(o=>typeof o=="string")?r():i.length===0&&t.has("")?!0:i.some(o=>t.has(o)):Kp.has(n)?!Array.isArray(i)||!i.every($p)?r():i.length===0&&t.has("")?!0:i.some(o=>t.has(o.code)):$p(i)?t.has(i.code):r()}function $p(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&typeof e.code=="string"}function cm(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}: ${ft}`)}function pm(e,t){let n=Yp(e.field,t);return e.not?n!=="":n===""}function dm(e,t,n,r,i){return e.op==="AND"?ie(e.left,t,n,r,i)&&ie(e.right,t,n,r,i):ie(e.left,t,n,r,i)||ie(e.right,t,n,r,i)}function Yp(e,t,n,r){if(e.type==="FUNC_FIELD")return ue(e.expr,t);if(e.type==="AGG_FIELD")return String(Lr(e.expr,t));if(e.type==="ARITH_FIELD")return String(le(e.expr,t));if(e.type==="CASE_FIELD")return De(e.expr,t,n,r);if(e.type==="GROUPING_FIELD")return Un(e.ref,t);let i=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return _e(t,i)}function xs(e,t,n,r){switch(e.type){case"VARIABLE":throw new Error(`ParseError: unresolved batch variable @${e.name}.`);case"VARIABLE_IN_LIST":throw new Error(`ParseError: unresolved batch array variable @${e.name}.`);case"STRING":return e.value;case"NUMBER":return W(e);case"KINTONE_FUNC":return fm(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"?_e(t,e.expr.field):e.expr.type==="STRING_FUNC"?ue(e.expr,t):String(le(e.expr,t));case"CASE_VALUE":return De(e.expr,t,n,r);case"ARRAY":return e.elements.map(i=>i.value).join(",")}}function De(e,t,n,r){for(let i of e.branches)if(ie(i.condition,t,n,void 0,r))return Wp(i.result,t,n,r);return e.elseResult!==null?Wp(e.elseResult,t,n,r):""}function xp(e,t,n,r){for(let i of e.branches)if(ie(i.condition,t,n,void 0,r))return Vp(i.result,t,n,r);return e.elseResult===null?null:Vp(e.elseResult,t,n,r)}function Vp(e,t,n,r){return e.type==="ARRAY"?e.elements.map(i=>i.value).join(","):e.type==="AGG_REF"?t[pe(e.func,e.distinct,e.arg)]??"":e.type==="AGG_ARITH"?t[tt(e)]??"":e.type==="FIELD_REF"?t[e.field]??"":e.type==="ARITH"?le(e,t):yt(e,t,n,r)}function Wp(e,t,n,r){return e.type==="ARRAY"?e.elements.map(i=>i.value).join(","):e.type==="AGG_REF"?t[pe(e.func,e.distinct,e.arg)]??"":e.type==="AGG_ARITH"?t[tt(e)]??"":e.type==="FIELD_REF"?t[e.field]??"":e.type==="ARITH"?String(le(e,t)):String(Ae(e,t,n,r))}function jp(e){let t=new Date;switch(e){case"TODAY":{let n=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),i=String(t.getDate()).padStart(2,"0");return`${n}-${r}-${i}`}case"NOW":return t.toISOString();case"LOGINUSER":case"PRIMARY_ORGANIZATION":return""}}function fm(e){throw ee(e)?new Error(`${e}: ${qt}`):Cn(e)?new Error(`${e}: ${ft}`):new Error(`InternalError: unexpected KINTONE_FUNC name: ${e}`)}var Io=new Map,Em=200;function Hp(e,t){if(!Uc(t))return e.includes(t);let n=Io.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"),Io.size>=Em&&Io.clear(),Io.set(t,n)}return n.test(e)}function $n(e){return qp(e)}function zp(e){return qp(e.flatMap(t=>t.rules.map(n=>n.condition)))}function qp(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 he("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 he("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 he(e){return new I(e,{kind:"EOF",value:"CHECK",pos:0})}function wo(e,t,n){let r=[];return e.forEach((i,o)=>{for(let a of i.rules){if(!ie(a.condition,t,n))continue;let s=Ae(a.message,t);r.push({groupIndex:o,message:s==null?"":String(s)});break}}),r}function Gs(e){if(Lt(e))throw new ne("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 Rm=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),gm=new Set(["CHECK_BOX","MULTI_SELECT"]);function Po(e,t=new Map){let n=e.values.map(r=>ym(e.fields,r,t));return Ur(n,100).map(r=>({app:e.appId,records:r}))}function ym(e,t,n){let r={};return e.forEach((i,o)=>{let a=t[o];a.type==="CASE_VALUE"?r[i]={value:Vt(a.expr,{},n.get(i))}:r[i]={value:mt(a,n.get(i))}}),r}function Dr(e){Gs(e.where);let t=ld(e);return{app:e.appId,query:H(e.where),fields:["$id",...t],totalCount:!1}}function vr(e,t,n=new Map){let r=mm(e.assignments,n);return Ur(t,100).map(i=>({app:e.appId,records:i.map(o=>({id:o,record:r}))}))}function mm(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:mt(i,t.get(r))});return n}function Zp(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 Co(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 Bs(e){Gs(e.where);let t=new Set;for(let{value:n}of e.assignments)n.type==="ARITH"?ed(n,t):n.type==="SCALAR_ARITH"||n.type==="CONCAT_OP"?Vn(n,t):n.type==="STRING_FUNC"?Ks(n,t):n.type==="CASE_VALUE"&&td(n.expr,t);return ld(e).forEach(n=>t.add(n)),{app:e.appId,query:H(e.where),fields:["$id",...t],totalCount:!1}}function ed(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 DML field collection.`);e.type==="FIELD_REF"?t.add(e.field):e.type==="ARITH"?ed(e,t):e.type==="STRING_FUNC"&&Ks(e,t)}function Ks(e,t){for(let n of e.args)Am(n,t)}function Am(e,t){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"){No(e,t);return}Vn(e,t)}function Vn(e,t){if(e.type==="FIELD"){t.add(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field);return}if(e.type==="STRING_FUNC"){Ks(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){Vn(e.left,t),Vn(e.right,t);return}e.type==="CASE_WHEN"&&td(e,t)}function No(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&hm(e.arg,t);return}e.type==="AGG_ARITH"&&(No(e.left,t),No(e.right,t)),e.type==="AGG_GROUP_KEY"&&t.add(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field)}function hm(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?_r(e,t):Vn(e,t)}function Xp(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}Vn(e,t)}}function td(e,t){for(let n of e.branches)bo(n.condition,t),Xp(n.result,t);e.elseResult!==null&&Xp(e.elseResult,t)}function bo(e,t){switch(e.type){case"BINARY":e.left.type==="FIELD"?t.add(e.left.field):e.left.type==="ARITH_FIELD"&&_r(e.left.expr,t);break;case"NULL_CHECK":e.field.type==="FIELD"&&t.add(e.field.field);break;case"LOGICAL":bo(e.left,t),bo(e.right,t);break;case"NOT":case"GROUP":bo(e.expr,t);break;case"EXISTS":case"BOOLEAN":break}}function $s(e,t,n=new Map){let r=t.map(i=>{let o=Number(i.$id.value),a=nd(i),s={};for(let{field:l,value:c}of e.assignments)s[l]={value:Vs(c,a,n.get(l),i)};return{id:o,record:s}});return Ur(r,100).map(i=>({app:e.appId,records:i}))}function Vs(e,t,n,r){if(e.type==="ARITH")return String(r?Hs(e,r):le(e,t));if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP")return String(Ae(e,t));if(e.type==="STRING_FUNC")return ue(e,t);if(e.type==="CASE_VALUE")return Vt(e.expr,t,n);if(e.type==="SOURCE_FIELD")throw new ne("SOURCE_FIELD \u306F UPDATE ... FROM \u5C02\u7528\u3067\u3059");return mt(e,n)}function Oo(e,t,n){if(e.type==="STRING")return e.value;if(e.type==="NUMBER")return W(e);if(e.type==="ARITH")return String(le(e,t));if(e.type==="CASE_VALUE")return De(e.expr,t,n);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 Sm=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);function Ws(e,t,n=new Map){let r=t.map(({target:i,source:o})=>{let a=Number(i.$id?.value);if(!Number.isSafeInteger(a)||a<=0)throw new ne("UPDATE ... FROM \u306E\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u304C\u4E0D\u6B63\u3067\u3059");let s=nd(i),l={};for(let{field:c,value:p}of e.assignments){let u=n.get(c);if(p.type==="SOURCE_FIELD"){if(Sm.has(u??""))throw new ne(`UPDATE ... FROM \u306E SOURCE_FIELD \u306F ${u} \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(o,p.field))throw new ne(`UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u5217 ${p.field} \u304C\u5B58\u5728\u3057\u307E\u305B\u3093`);let d=o[p.field];if(typeof d!="string")throw new ne(`UPDATE ... FROM \u306E SOURCE_FIELD \u306F\u30B9\u30AB\u30E9\u30FC\u5024\u306E\u307F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\uFF08\u5217: ${p.field}\uFF09`);if((u==="NUMBER"||u==="CALC")&&d!==""&&!Number.isFinite(Number(d)))throw new ne(`\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9 ${c} \u306B\u5909\u63DB\u3067\u304D\u306A\u3044\u5024\u3067\u3059: ${d}`);l[c]={value:mt({type:"STRING",value:d},u)}}else{if(p.type==="STRING_FUNC")throw new ne("UPDATE ... FROM \u306E SET \u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u3092\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");p.type==="ARITH"?l[c]={value:String(Hs(p,i))}:p.type==="SCALAR_ARITH"||p.type==="CONCAT_OP"?l[c]={value:String(Ae(p,s))}:p.type==="CASE_VALUE"?l[c]={value:Vt(p.expr,s,u)}:l[c]={value:mt(p,u)}}}return{id:a,record:l}});return Ur(r,100).map(i=>({app:e.appId,records:i}))}function nd(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,typeof n.value=="string"?n.value:JSON.stringify(n.value??"")]))}function Hs(e,t){let n=Jp(e.left,t),r=Jp(e.right,t);switch(e.op){case"+":return n+r;case"-":return n-r;case"*":return n*r;case"/":if(r===0)throw new ne("\u7B97\u8853\u5F0F\u3067\u30BC\u30ED\u9664\u7B97\u304C\u767A\u751F\u3057\u307E\u3057\u305F");return n/r;case"%":if(r===0)throw new ne("\u7B97\u8853\u5F0F\u3067\u30BC\u30ED\u9664\u7B97\u304C\u767A\u751F\u3057\u307E\u3057\u305F");return n%r}}function Jp(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 Hs(e,t);if(e.type==="STRING_FUNC")throw new ne("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 ne(`\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 rd(e){return Gs(e.where),{app:e.appId,query:H(e.where),fields:["$id"],totalCount:!1}}function id(e,t){return Ur(t,100).map(n=>({app:e,ids:n}))}function od(e){return Rm.has(e??"")}function Tm(e){return gm.has(e??"")}function Im(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 wm(e){return!e||/^\d{4}-\d{2}-\d{2}$/.test(e)?e:e.replace(/\//g,"-")}function ad(e,t){return od(t)?e===""?[]:e.split(",").map(n=>({code:n.trim()})):Tm(t)?e===""?[]:e.split(",").map(n=>n.trim()):t==="DATETIME"?Im(e):t==="DATE"?wm(e):e}function sd(e,t){return od(t)?e.map(n=>({code:n})):e}function Qp(e,t,n){if(e.type==="ARRAY")return sd(e.elements.map(r=>r.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"?ad(e.value,n):e.type==="STRING_FUNC"?ue(e,t):e.type==="FIELD_REF"||e.type==="ARITH"?String(le(e,t)):String(Ae(e,t))}function ld(e){if(!e.checkGroups)return[];let t=`app${e.appId}`.toLowerCase();return[...new Set($n(e.checkGroups).filter(n=>n.tableAlias===null||n.tableAlias.toLowerCase()===t).map(n=>n.field).filter(n=>n!=="$id"))]}function Vt(e,t,n){for(let r of e.branches)if(ie(r.condition,t))return Qp(r.result,t,n);return e.elseResult!==null?Qp(e.elseResult,t,n):""}function mt(e,t){let n=Ys(e,t);if(!n.ok)throw new ne(n.message);return n.value}function Ys(e,t){try{return{ok:!0,value:bm(e,t)}}catch(n){return{ok:!1,message:n instanceof Error?n.message:String(n)}}}function bm(e,t){switch(e.type){case"VARIABLE":throw new ne(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"VARIABLE_IN_LIST":throw new ne(`\u672A\u89E3\u6C7A\u306E\u914D\u5217\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"STRING":return ad(e.value,t);case"NUMBER":return W(e);case"ARRAY":return sd(e.elements.map(n=>n.value),t);case"KINTONE_FUNC":throw new ne(`${e.name}() \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`);case"IN_LIST":throw new ne("IN_LIST \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");case"ARITH_VALUE":throw new ne("\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 ne("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 ne("IN (SELECT ...) \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");case"SCALAR_SUBQUERY":throw new ne("\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 Ur(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}var ne=class extends Error{constructor(t){super(t),this.name="DmlConvertError"}};var js=new Set(["CHECK_BOX","MULTI_SELECT"]),Nm=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function kr(e){throw new Error(`ArgumentError: ${e}`)}function ud(e,t,n){let r=Pm(n.fieldType,e.field),i=Cm(t,r,e.field),o=new Set(i),a=[],s=new Set,l=new Set;for(let y of e.operations){let m=y.value;m!==""&&(y.kind==="ADD"?(s.has(m)||a.push(m),s.add(m)):l.add(m))}for(let y of s)l.has(y)&&kr(`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 m=y.kind==="ADD"?f:R,A=!m.has(y.value);return m.add(y.value),{kind:y.kind,value:y.value,changed:y.value!==""&&A&&(y.kind==="ADD"?!o.has(y.value):o.has(y.value))}}),g=js.has(r)?u:u.map(y=>({code:y}));return{field:e.field,fieldType:r,operations:E,postImageValue:g,addedValues:p.length,removedValues:d,changedValues:p.length+d}}function Pm(e,t){return js.has(e)||Nm.has(e)?e:kr(`APPLY multi-value target ${t} has unsupported type ${e}.`)}function Cm(e,t,n){if(!Array.isArray(e))return kr(`APPLY snapshot for ${n} must be an array.`);let r=e.map((i,o)=>js.has(t)?typeof i!="string"?kr(`APPLY snapshot for ${n} must contain string values (item ${o+1}).`):i:typeof i!="object"||i===null||typeof i.code!="string"?kr(`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 Xs(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 At(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)zs(s.field,null,r),Om(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(_c(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)zs(d.field,s.field,r,p),qs(d.value,s.field,r,p);u.selector.kind==="WHERE"&&qs(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),zs(f,s.field,r,p)}else u.kind==="REMOVE"&&u.selector.kind==="WHERE"&&qs(u.selector.where,s.field,r,p)}return{targetTables:i,targetMultiValueFields:o,childrenByTable:a,fieldsByCode:r}}function Om(e,t){Mr(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 zs(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 qs(e,t,n,r){Mr(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 Lo(e,t){let n=At(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)Mr(i.value,o=>{let a=n.fieldsByCode.get(o);!a?.inSubtable&&a?.fieldType!=="FILE"&&r.add(o)});return[...r]}function _o(e,t){let n={_rid:e.id??"",_idx:String(t)};for(let[r,i]of Object.entries(e.value??{}))n[r]=Rd(i?.value);return n}function pd(e){let{statement:t,snapshot:n,fieldInfos:r}=e,i=e.metadata??At(t,r),o=Zs(n.$id?.value,"APPLY snapshot $id"),a=Xs(t);return o!==a&&j(`APPLY snapshot $id ${o} does not match requested $id ${a}.`),fd(t,n,i,o)}function dd(e,t,n,r=At(e,n)){let i=new Set;return t.map(o=>{let a=Zs(o.$id?.value,"APPLY snapshot $id");return i.has(a)&&j(`APPLY snapshots contain duplicate parentId ${a}.`),i.add(a),fd(e,o,r,a)})}function fd(e,t,n,r){let i=Zs(t.$revision?.value,"APPLY snapshot $revision"),o=[],a=[];for(let p of e.applyBlocks){if(p.targetKind==="MULTI_VALUE"){let P=n.targetMultiValueFields.get(p.field);P||j(`APPLY multi-value metadata for ${p.field} is missing.`),a.push(ud(p,t[p.field]?.value,P));continue}let u=n.childrenByTable.get(p.field),d=km(t,p.field),f=new Set;for(let P of d)P.id||j(`APPLY snapshot for ${p.field} contains a row without _rid.`),f.has(P.id)&&j(`APPLY snapshot for ${p.field} contains duplicate _rid ${P.id}.`),f.add(P.id);let R=P=>P.field==="_rid"?"SINGLE_LINE_TEXT":P.field==="_idx"?"NUMBER":u.get(P.field)?.fieldType,E=[],g=[],y=[],m=new Set,A=new Set,h=new Set,S=p.operations.some(P=>P.kind==="REMOVE");for(let[P,D]of p.operations.entries()){if(D.kind==="APPEND"){let L=Js(D,u,p.field);y.push({kind:"APPEND",addedRows:L.length}),g.push(...L);continue}if(D.kind==="REMOVE"){let L=Dm(D,d,R,p.field);D.expectRows&&cd(D.expectRows,L.length,r,p.field,P,D.kind),y.push({kind:"REMOVE",removedRows:L.length});for(let v of L){let T=d[v].id;A.has(v)&&j(`APPLY row ${T} is selected by both PATCH and REMOVE.`),h.has(v)&&j(`APPLY removes row ${T} more than once.`),h.add(v)}continue}if(D.kind!=="PATCH")continue;let F=_m(D,d,R,p.field);D.expectRows&&cd(D.expectRows,F.length,r,p.field,P,D.kind),y.push({kind:"PATCH",matchedRows:F.length,changedRows:F.length});for(let L of F){let v=d[L];h.has(L)&&j(`APPLY row ${v.id} is selected by both PATCH and REMOVE.`),A.add(L);let T=_o(v,L);for(let C of D.assignments){let U=`${v.id}\0${C.field}`;m.has(U)&&j(`APPLY patches cell ${v.id}.${C.field} more than once.`),m.add(U),E.push({rowIndex:L,field:C.field,value:Oo(C.value,T,R)})}}}let w=new Map;for(let P of E){let D=w.get(P.rowIndex)??{};D[P.field]={value:P.value},w.set(P.rowIndex,D)}let b=[...d.flatMap((P,D)=>h.has(D)?[]:[{id:P.id,value:{...P.value,...w.get(D)??{}}}]),...g],_={table:p.field,operations:y,changedSubtableRows:w.size+h.size+g.length,deletedRows:h.size,snapshotRowIds:d.map(P=>P.id),postImageRows:b};S?o.push({..._,payloadShape:"FULL_SURVIVORS",removedRowIds:d.flatMap((P,D)=>h.has(D)?[P.id]:[]),payloadRows:b.map(P=>({...P.id===void 0?{}:{id:P.id},value:P.value}))}):o.push({..._,payloadShape:"PATCH_ONLY",payloadRows:[...d.map((P,D)=>{let F=w.get(D);return F?{id:P.id,value:F}:{id:P.id}}),...g.map(P=>({value:P.value}))]})}let s=Mm(t),l={};for(let p of e.assignments){let u=n.fieldsByCode.get(p.field)?.fieldType;l[p.field]={value:Vs(p.value,s,u,t)}}let c={...t};Object.assign(c,l);for(let p of o)c[p.table]={value:p.postImageRows};for(let p of a)c[p.field]={value:p.postImageValue};return{app:e.appId,parentId:r,revision:i,parentRows:1,changedSubtableRows:o.reduce((p,u)=>p+u.changedSubtableRows,0),parentValues:l,postImage:c,tables:o,multiValues:a}}function cd(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 Do(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 Js(e,t,n){return e.values.map(r=>({value:Lm(e,r,t,n)}))}function Lm(e,t,n,r){if(t.length!==e.fields.length)return j(`APPLY APPEND for ${r} has ${t.length} values for ${e.fields.length} fields.`);let i=new Map(e.fields.map((a,s)=>[a,t[s]])),o={};for(let a of n.values()){if(a.fieldType==="FILE"||a.writable===!1)continue;let s=i.get(a.code);o[a.code]={value:s===void 0?Qs(a):s.type==="CASE_VALUE"?Vt(s.expr,{},a.fieldType):mt(s,a.fieldType)}}return o}function Qs(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 _m(e,t,n,r){return Ed(e.selector,t,n,r)}function Dm(e,t,n,r){return Ed(e.selector,t,n,r)}function Ed(e,t,n,r){if(e.kind==="ALL_ROWS")return t.map((l,c)=>c);let i=e.where,o=t.flatMap((l,c)=>ie(i,_o(l,c),n)?[c]:[]),a=vm(i);a!==null&&o.length===0&&j(`APPLY _rid ${a} does not exist in snapshot table ${r}.`);let s=Um(i);return s!==null&&o.length===0&&j(`APPLY _idx ${s} does not exist in snapshot table ${r}.`),o}function vm(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 Um(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 km(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 Zs(e,t){let n=Number(e);return(!Number.isSafeInteger(n)||n<=0)&&j(`${t} must be a positive integer.`),n}function Mm(e){let t={};for(let[n,r]of Object.entries(e))t[n]=Rd(r?.value);return t}function Rd(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return String(e);try{return JSON.stringify(e)}catch{return String(e)}}function Mr(e,t){if(Array.isArray(e)){e.forEach(r=>Mr(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))Mr(r,t)}function ae(e){throw new Error(`ArgumentError: ${e}`)}function Uo(e){let t=Number(e.$revision?.value);return!Number.isSafeInteger(t)||t<=0?ae("APPLY snapshot $revision must be a positive integer."):t}function Fr(e){if(!Number.isSafeInteger(e.parentId)||e.parentId<=0)return ae("APPLY plan parentId must be a positive integer.");if(!Number.isSafeInteger(e.revision)||e.revision<=0)return ae("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)&&ae(`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)&&ae(`APPLY plan contains duplicate top-level field ${i.table}.`),r.has(i.table)&&ae(`APPLY plan contains duplicate table ${i.table}.`),r.add(i.table),n.add(i.table),Fm(i),t[i.table]={value:i.payloadRows};return{app:e.app,records:[{id:e.parentId,revision:e.revision,record:t}]}}function gd(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 ae("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 Fm(e){let t=el(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&&ae(`APPLY ${e.payloadShape} table ${e.table} contains an APPEND row without value.`);if(el(n,`${e.table} payload`),e.payloadShape==="PATCH_ONLY"){e.operations.some(d=>d.kind==="REMOVE")&&ae(`APPLY PATCH_ONLY table ${e.table} cannot contain REMOVE.`);let p=e.payloadRows.slice(0,t.length).map(d=>d.id??"");vo(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)&&ae(`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??"");vo(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)&&ae(`APPLY PATCH_ONLY table ${e.table} post-image must place every APPEND row after snapshot rows.`);return}e.operations.some(p=>p.kind==="REMOVE")||ae(`APPLY FULL_SURVIVORS table ${e.table} requires a REMOVE operation.`);let r=el(e.removedRowIds,`${e.table} removed`);e.deletedRows!==r.length&&ae(`APPLY FULL_SURVIVORS table ${e.table} deleted row count does not match removed ids.`),e.payloadRows.length!==e.postImageRows.length&&ae(`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)&&ae(`APPLY FULL_SURVIVORS table ${e.table} has intersecting survivor/removed id ${p}.`);let s=t.filter(p=>!o.has(p));vo(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??"");vo(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))&&ae(`APPLY FULL_SURVIVORS table ${e.table} must place every APPEND row after survivors.`),e.payloadRows.some(p=>p.value===void 0)&&ae(`APPLY FULL_SURVIVORS table ${e.table} requires values for every survivor.`),e.payloadRows.some((p,u)=>!tl(p.value,e.postImageRows[u]?.value))&&ae(`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)))&&ae(`APPLY FULL_SURVIVORS table ${e.table} does not partition every snapshot row.`)}function el(e,t){let n=[...e],r=new Set;for(let i of n)i||ae(`APPLY ${t} contains an empty row id.`),r.has(i)&&ae(`APPLY ${t} contains duplicate row id ${i}.`),r.add(i);return n}function vo(e,t,n){(e.length!==t.length||e.some((r,i)=>r!==t[i]))&&ae(n)}function tl(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)=>tl(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)&&tl(n[a],r[a]))}function yd(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 md(e){let t=e.numberPrecision;if(t==null||typeof t!="object")throw new Error("SettingsError: numberPrecision is missing from app settings.");let n=yd(t.digits,"digits",1,30),r=yd(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 Ad(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 xm=new Set(["CHECK_BOX","MULTI_SELECT"]),Gm=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT"]);function ve(e,t,n){if(t.fieldType==="DATE"||t.fieldType==="TIME"||t.fieldType==="DATETIME"){let i=Bm(e);if(i!==""&&!Km(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=xr(e,t.fieldType)}catch(i){let o=i instanceof Error?i.message:String(i);return{ok:!1,code:$m(t.fieldType),message:o}}if(t.required&&ko(r))return{ok:!1,code:"ERR_REQUIRED",message:`${t.code} \u306F\u5FC5\u9808\u3067\u3059`};if(!ko(r)&&t.fieldType==="NUMBER"){let i=String(r),o=ye(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&&Ki(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&&Ki(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}=Ad(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(!ko(r)&&(t.fieldType==="DATE"||t.fieldType==="TIME"||t.fieldType==="DATETIME")&&!tn(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!ko(r)&&Gm.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 Bm(e){return e==null?"":Mo(e)&&e.type==="NUMBER"?W(e):Mo(e)&&e.type==="STRING"?e.value:typeof e=="string"||typeof e=="number"?String(e):""}function Km(e,t){if(t==="DATE")return tn(e.replace(/\//g,"-"),"DATE");if(t==="TIME")return tn(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)?tn(n.slice(0,10),"DATE")&&tn(n.slice(11),"TIME"):tn(n,"DATETIME")}function xr(e,t){if(Mo(e)){let r=Ys(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(xm.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 Mo(e){return typeof e=="object"&&e!==null&&typeof e.type=="string"}function nn(e){if(e==null||e==="")return!0;if(Array.isArray(e))return e.length===0;if(Mo(e)){if(e.type==="STRING")return e.value==="";if(e.type==="ARRAY")return e.elements.length===0}return!1}function ko(e){return e===""||Array.isArray(e)&&e.length===0}function $m(e){return e==="NUMBER"?"ERR_TYPE_NUMBER":"ERR_TYPE_DATE"}function tn(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)&&tn(l,"TIME")}var Wn=["$err_statement","$err_operation","$err_row","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id"];function nl(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=xr(a,s)}catch{}i.record[o]={value:l?a:c}}}}function rl(e,t,n,r,i,o,a,s=[],l=!0,c=!0,p={}){let u=new Map(i.map(g=>[g.code,g])),d=[],f=new Set,R=[];p.validateUpdateBuiltIns===!1&&nl(e,r,i);let E;for(let g of e){g.record??(g.record={});let y=c?[...g.preErrors]:[],m=[],A=[],h=g.mode==="create"||p.validateUpdateBuiltIns!==!1;for(let b of r){if(!g.payload.has(b))continue;let _=g.payload.get(b),P=u.get(b).fieldType,D=["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(P)&&Array.isArray(_)&&_.every(L=>typeof L=="object"&&L!==null&&"code"in L);if(!h)continue;let F=ve(_,u.get(b),a);F.ok?g.record[b]={value:D?_:F.value}:m.push({field:b,code:F.code,message:F.message})}if(l&&g.mode==="create")for(let b of i){if(b.inSubtable||g.payload.has(b.code))continue;if(nn(b.defaultValue)){let P=ve("",b,a);P.ok?b.required&&m.push({field:b.code,code:"ERR_REQUIRED",message:`${b.code} \u306F\u5FC5\u9808\u3067\u3059`}):m.push({field:b.code,code:P.code,message:P.message})}else{let P=ve(b.defaultValue,b,a);P.ok||m.push({field:b.code,code:P.code,message:`\u65E2\u5B9A\u5024: ${P.message}`})}}if(s.length>0){let b=g.evaluationRow??Object.fromEntries([...g.payload].map(([D,F])=>[D,nt(F)])),_=g.evaluationFieldTypes,P=D=>{let F=D.tableAlias?`${D.tableAlias}.${D.field}`:D.field;return _?.get(F)??_?.get(D.field)};try{for(let D of wo(s,b,P))A.push({field:"",code:"ERR_CHECK",message:D.message})}catch(D){E??(E=D)}}let S=b=>b.map(_=>{let P={};for(let D of n)P[D]=nt(g.payload.get(D));return P.$err_statement=String(o),P.$err_operation=t,P.$err_row=String(g.rowNumber),P.$err_field=_.field,P.$err_code=_.code,P.$err_message=_.message,P.$err_value="",P.$err_subtable="",P.$err_subrow="",P.$err_subrow_id="",P}),w={rowNumber:g.rowNumber,preErrors:S(y),builtInErrors:S(m),checkErrors:S(A)};R.push(w);let N=[...w.preErrors,...w.builtInErrors,...w.checkErrors];N.length>0&&f.add(g.rowNumber),d.push(...N)}if(E!==void 0)throw E;return{errors:d,invalidRows:f.size,invalidRowNumbers:f,candidateResults:R}}function nt(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 il=["required","length","range","choice"];function ol(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 al(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 Vm(e){return ol(e).length>0}function Wm(e){return e.fieldType==="NUMBER"||Vm(e)}function Fo(e,t,n){return{subtable:e,subrow:t+1,subrowId:String(n.id??"")}}function sl(e,t){let{topByCode:n,childrenByTable:r}=al(t),i=Wm;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,g])=>E!==l.subtableCode&&g.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 Gr(e,t){return nn(e)?"":nt(xr(e,t))}var Hm=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]),Br=Wn;function rt(e,t=["$id"]){let n=al(e),r=n.topLevel.filter(o=>o.fieldType!=="SUBTABLE"&&o.fieldType!=="FILE"&&!Hm.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 rn(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 on(e,t,n,r,i=1,o="UPDATE"){let a=Ym(e),s=[],l=new Set,c=[...t.payloadFields,...Br],p=nt(e.$id?.value),u=(d,f,R,E)=>{l.add(i);let g={};for(let y of t.payloadFields)g[y]=y==="$id"?p:nt(e[y]?.value);g.$err_statement=String(r),g.$err_operation=o,g.$err_row=String(i),g.$err_field=d.code,g.$err_code=R.code,g.$err_message=R.message,g.$err_value=Gr(f,d.fieldType),g.$err_subtable=E?.subtable??"",g.$err_subrow=E?String(E.subrow):"",g.$err_subrow_id=E?.subrowId??"",s.push(g)};for(let d of t.topLevel){let f=e[d.code]?.value,R=ve(f,d,n);R.ok?a[d.code]={value:hd(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 g=0;g<R.length;g++){let y=R[g],m=E[g];for(let A of f){let h=y.value?.[A.code]?.value,S=ve(h,A,n);S.ok?(m.value??(m.value={}),m.value[A.code]={value:hd(h,A.fieldType,S.value)}):u(A,h,S,Fo(d,g,y))}}}return{normalizedRecord:a,errors:s,columns:c,invalidRows:l.size,invalidRowNumbers:l,errorCount:s.length}}function hd(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 Ym(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 xo(e){let{statement:t,snapshots:n,fieldInfos:r,metadata:i,dmlMaxRows:o,dmlMaxSubtableRows:a,statementNumber:s=1}=e;Sd(o,"dmlMaxRows"),Sd(a,"dmlMaxSubtableRows");for(let A of n)Uo(A);let l=dd(t,n,r,i),c=rt(r,t.assignments.map(A=>A.field)),p=l.some(A=>rn(A.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((A,h)=>on(A.postImage,c,u,s,e.parentRowNumbers?.[h]??h+1));if(!t.validateOnly){let A=d.flatMap(h=>h.errors);if(A.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:d[0]?.columns??[],errors:A})}`)}let f=l.length,R=l.reduce((A,h)=>A+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 g=l.map((A,h)=>Do(A,d[h].normalizedRecord)),y=g.flatMap(A=>Fr(A).records),m=d.map(A=>({errors:A.errors,columns:A.columns,invalidRows:A.invalidRows,errorCount:A.errorCount}));return Td({plans:g,records:y,validations:m,guards:{revisionRequired:!0,parentRows:f,dmlMaxRows:o,subtableRows:R,dmlMaxSubtableRows:a,wouldExceed:E}})}function Sd(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function Td(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))Td(n,t);return Object.freeze(e)}var ll=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function Go(e,t){if(new Set(e.fields).size!==e.fields.length)return it("DML target fields contain duplicates.");let n=new Map(t.map(o=>[o.code,o]));for(let o of e.fields)Id(o,null,n);let r=new Map,i=new Map;for(let o of e.applyBlocks??[]){if(r.has(o.field))return it(`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 it(`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 it(`APPLY INSERT supports APPEND only (${l.kind}).`);let c=new Set;for(let p of l.fields){if(c.has(p))return it(`APPLY APPEND specifies child ${p} more than once.`);c.add(p),Id(p,o.field,n,s)}for(let p of l.values)if(p.length!==l.fields.length)return it(`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 jm(e,t,n=Go(e,t),r){let i=new Map(t.map(s=>[s.code,s.fieldType])),o=Po(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=>Js(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||ll.has(u.fieldType)||(c[u.code]=s[u.code]??{value:Qs(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 Kr(e){let{statement:t,fieldInfos:n,dmlMaxRows:r,dmlMaxSubtableRows:i,statementNumber:o=1}=e;wd(r,"dmlMaxRows"),wd(i,"dmlMaxSubtableRows");let a=e.metadata??Go(t,n),s=jm(t,n,a,e.parentRowNumbers),l=n.filter(h=>h.fieldType==="SUBTABLE"||h.fieldType!=="FILE"&&h.writable!==!1&&!ll.has(h.fieldType)),c=rt(l,t.fields),p=s.some(h=>rn(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=>on(h.postImage,c,u,o,h.parentRowNumber,"INSERT"));if(!t.validateOnly){let h=d.flatMap(S=>S.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,S)=>h+S.tables.reduce((w,N)=>w+N.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 g=s.map((h,S)=>{let w=d[S].normalizedRecord,N={};for(let b of t.fields)N[b]=w[b];for(let b of h.tables){let _=w[b.table]?.value;N[b.table]={value:b.rows.map((P,D)=>({value:Object.fromEntries(Object.keys(P.value).map(F=>[F,_[D]?.value?.[F]??P.value[F]]))}))}}return{...h,postImage:w,record:N}}),y=g.map(h=>h.record),m=[];for(let h=0;h<y.length;h+=100)m.push({app:t.appId,records:y.slice(h,h+100)});let A=d.map(h=>({errors:h.errors,columns:h.columns,invalidRows:h.invalidRows,errorCount:h.errorCount}));return bd({applyBlocks:t.applyBlocks??[],candidates:g,records:y,batches:m,validations:A,guards:{revisionRequired:!1,parentRows:f,dmlMaxRows:r,subtableRows:R,dmlMaxSubtableRows:i,wouldExceed:E}})}function Id(e,t,n,r){if(e.startsWith("_")||e.startsWith("$"))return it(`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?it(`APPLY child ${e} does not belong to subtable ${t}.`):it(`APPLY ${t===null?"parent field":"child"} ${e} does not exist.`)}if(i.fieldType==="SUBTABLE"||i.fieldType==="FILE"||i.writable===!1||ll.has(i.fieldType))return it(`APPLY assignment target ${e} is not writable (${i.fieldType}).`)}function wd(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function it(e){throw new Error(`ArgumentError: ${e}`)}function bd(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))bd(n,t);return Object.freeze(e)}async function Pd(e){let{statement:t,matches:n,fieldInfos:r,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a=1}=e;Nd(i,"dmlMaxRows"),Nd(o,"dmlMaxSubtableRows"),Qm(t,n);let s=n.filter(y=>y.targetId===void 0),l=n.filter(y=>y.targetId!==void 0),c=zm(t,s.map(y=>y.sourceRowIndex)),p=await Kr({statement:c,fieldInfos:r,metadata:Go(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 m=y.targetId;d.has(m)&&ul(`UPSERT APPLY resolves more than one source row to parent $id ${m}.`),d.add(m),y.snapshot||ul(`UPSERT APPLY snapshot for parent $id ${m} is missing.`);let A=Number(y.snapshot.$id?.value);A!==m&&ul(`UPSERT APPLY snapshot $id ${A} does not match target $id ${m}.`);let h=qm(t,y.sourceRowIndex,m),S=h.applyBlocks?.length?At(h,r):Xm(r);u.push(await xo({statement:h,snapshots:[y.snapshot],fieldInfos:r,metadata:S,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a,parentRowNumbers:[y.sourceRowIndex+1],loadNumberPrecision:e.loadNumberPrecision}))}let f=Jm(u,i,o),R=p.guards.parentRows+f.guards.parentRows,E=p.guards.subtableRows+f.guards.subtableRows,g=R>i||E>o;if(!t.validateOnly){let y=[...p.validations.flatMap(m=>m.errors),...f.validations.flatMap(m=>m.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 cl({create:p,update:f,createBatches:p.batches,updateBatches:Zm(f.records,t.appId),guards:{revisionRequired:f.guards.parentRows>0,parentRows:R,dmlMaxRows:i,subtableRows:E,dmlMaxSubtableRows:o,wouldExceed:g,create:p.guards,update:f.guards}})}function zm(e,t){return{type:"INSERT",appId:e.appId,fields:[...e.fields],values:t.map(n=>e.values[n]),applyBlocks:e.onInsertApplyBlocks??[],validateOnly:!0}}function qm(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 Xm(e){return{targetTables:new Map,targetMultiValueFields:new Map,childrenByTable:new Map,fieldsByCode:new Map(e.map(t=>[t.code,t]))}}function Jm(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 cl({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 Qm(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 Zm(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 Nd(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function ul(e){throw new Error(`ArgumentError: ${e}`)}function cl(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))cl(n,t);return Object.freeze(e)}function Vr(e){return Hn("UPDATE",[Ld(e)])}function pl(e){return Hn("INSERT",[Od(e)])}function dl(e){return Hn("UPSERT",[Od(e.create),Ld(e.update)])}function xe(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 Ko(e,t,n){return e.type==="UPDATE"?Hn("UPDATE",[Bo("update",e.applyBlocks??[],null,!0,t,n)]):e.type==="INSERT"?Hn("INSERT",[Bo("insert",e.applyBlocks??[],e.values.length,!1,t,n)]):Hn("UPSERT",[Bo("insert",e.onInsertApplyBlocks??[],null,!1,t,n),Bo("update",e.onUpdateApplyBlocks??[],null,!0,t,n)])}function Hn(e,t){return{statementKind:e,branches:t,nonTransactional:!0,partialSuccess:{possible:!0}}}function Od(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 Ld(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:Cd(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:Cd(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 Cd(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:$r(i.count,n.count),...n.matchedRows!==void 0?{matchedRows:$r(i.matchedRows,n.matchedRows)}:{},...n.changedRows!==void 0?{changedRows:$r(i.changedRows,n.changedRows)}:{},...n.addedRows!==void 0?{addedRows:$r(i.addedRows,n.addedRows)}:{},...n.removedRows!==void 0?{removedRows:$r(i.removedRows,n.removedRows)}:{}}}):t.map(n=>({...n}))}function $r(e,t){return e==null||t===null?null:e+t}function Bo(e,t,n,r,i,o){let a=t.map(p=>{let u=p.operations.map(f=>eA(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 eA(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 ot=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 _d(e,t,n){Dn("phase10c");let r=gd(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 ot({successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"PUT_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:xe(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 Dd(e,t,n){Dn("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 ot({successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"POST_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:xe(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 vd(e,t,n){Dn("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 ot({successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,failedChunkIndex:l,failedBranch:"INSERT",failedStage:"POST_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:xe(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 ot({successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,failedChunkIndex:l,failedBranch:"UPDATE",failedStage:"PUT_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:xe(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 tA=/^[A-Za-z_][A-Za-z0-9_]{0,63}$/;function nA(e){if(!tA.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 rA(e){let t=Object.create(null);for(let[n,r]of Object.entries(e??{})){let i=nA(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 fl(e,t){let n=rA(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 iA(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 El(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 iA(i)?!0:Object.values(i).some(n)};return n(e)}function Ud(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 kd(e,t){let n=X(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 at(e){if(e===null)return!1;switch(e.type){case"BINARY":return $o(e.left);case"NULL_CHECK":return $o(e.field);case"LOGICAL":return at(e.left)||at(e.right);case"NOT":case"GROUP":return at(e.expr);case"EXISTS":case"BOOLEAN":return!1}}function $o(e){if(Array.isArray(e))return e.some($o);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($o)}async function qe(e,t,n,r,i){let o=await Ce(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 Vo(e,t,n,r){let{records:i,metrics:o}=await qe(e,t,n,["$id"],r);return{ids:yc(i),metrics:o}}var Ge=["=","!=",">","<",">=","<="],oA=new Set(["DATE","DATETIME","CREATED_TIME","UPDATED_TIME"]),aA=new Set(Ge),sA=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"])]]),lA=new Map([["TODAY",new Set(Ge)],["NOW",new Set(Ge)],["LOGINUSER",new Set(["in","not in"])],["PRIMARY_ORGANIZATION",new Set(["in","not in"])]]),uA=["=","!=","in","not in"],cA=new Map([["RECORD_NUMBER",new Set([...Ge,"in","not in"])],["__ID__",new Set([...Ge,"in","not in"])],["CREATOR",new Set(["in","not in"])],["MODIFIER",new Set(["in","not in"])],["CREATED_TIME",new Set(Ge)],["UPDATED_TIME",new Set(Ge)],["DATE",new Set(Ge)],["TIME",new Set(Ge)],["DATETIME",new Set(Ge)],["SINGLE_LINE_TEXT",new Set(["=","!=","in","not in","like","not like"])],["LINK",new Set(["=","!=","in","not in","like","not like"])],["NUMBER",new Set([...Ge,"in","not in"])],["CALC",new Set([...Ge,"in","not in"])],["MULTI_LINE_TEXT",new Set(["like","not like"])],["RICH_TEXT",new Set(["like","not like"])],["CHECK_BOX",new Set(["in","not in"])],["RADIO_BUTTON",new Set(["in","not in"])],["DROP_DOWN",new Set(["in","not in"])],["MULTI_SELECT",new Set(["in","not in"])],["FILE",new Set(["like","not like"])],["USER_SELECT",new Set(["in","not in"])],["ORGANIZATION_SELECT",new Set(["in","not in"])],["GROUP_SELECT",new Set(["in","not in"])],["STATUS",new Set(uA)],["STATUS_ASSIGNEE",new Set(["in","not in"])]]),pA=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"])]]),yl=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"]),xd=new Set(["CHECK_BOX","MULTI_SELECT","FILE","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE","CATEGORY"]);function Gd(e){return cA.get(e)??new Set}function Bd(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"&&yl.has(o.fieldType)&&Gd(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 Se(e,t){return e===null?{capability:"EXACT_PUSHDOWN",reasons:[{code:"WHERE_EXACT"}]}:Hr(e,t)}function Hr(e,t){switch(e.type){case"BOOLEAN":return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]};case"BINARY":return dA(e.op,e.left,e.right,t);case"NULL_CHECK":return e.field.type!=="FIELD"?gl():RA(e.field,e.not?"IS NOT NULL":"IS NULL",t);case"EXISTS":return gl();case"GROUP":return Hr(e.expr,t);case"NOT":{let n=Hr(e.expr,t);return n.capability!=="SUPERSET_PREFILTER"?n:$d(n.reasons)?jr({capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"},...n.reasons]}):{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]}}case"LOGICAL":{let n=Hr(e.left,t),r=Hr(e.right,t);return yA(e.op,n,r)}}}function dA(e,t,n,r){if(n.type==="KINTONE_FUNC"&&ee(n.name))return fA(e,t,n,r);if(n.type==="KINTONE_FUNC"&&Md(n))return Fd(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?Fd(e,t,p[0],r):Wo("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED",p[0].name,t.type==="FIELD"?t.field:void 0,t.type==="FIELD"?r(t)?.fieldType:void 0,Yr(e))}if(t.type!=="FIELD")return gl();let i=r(t);if(!i)return Yn("WHERE_FIELD_UNRESOLVED",t.field,void 0,Yr(e));let o=Yr(e);if(!Kd(i.fieldType,o))return Yn("WHERE_OPERATOR_INVALID_FOR_FIELD_TYPE",t.field,i.fieldType,o);if(!gA(i.fieldType,e))return Yn("WHERE_OPERATOR_UNSUPPORTED",t.field,i.fieldType,o);let a=Gd(i.fieldType),s=n.type==="STRING"||n.type==="NUMBER"||n.type==="IN_LIST"||Md(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 Md(e){return e.type==="KINTONE_FUNC"&&zt.has(e.name)}function Fd(e,t,n,r){let i=Yr(e),o=n.name;if(!zt.has(o)||t.type!=="FIELD")return Wo("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED",o,void 0,void 0,i);let a=r(t),s=sA.get(o);return!a||!s.has(a.fieldType)||a.inSubtable||a.requiresCollectionOperators?Wo("WHERE_KINTONE_FUNCTION_FIELD_TYPE_UNSUPPORTED",o,t.field,a?.fieldType,i):lA.get(o).has(i)?{capability:"EXACT_PUSHDOWN",reasons:[{code:"WHERE_EXACT",functionName:o,field:t.field,fieldType:a.fieldType,operator:i}]}:Wo("WHERE_KINTONE_FUNCTION_OPERATOR_UNSUPPORTED",o,t.field,a.fieldType,i)}function fA(e,t,n,r){let i=Yr(e),o=n.name;if(t.type!=="FIELD")return Wr("WHERE_RELATIVE_DATE_CONTEXT_UNSUPPORTED",o,void 0,void 0,i);let a=r(t);return a?EA(n)?aA.has(i)?!oA.has(a.fieldType)||a.inSubtable||a.requiresCollectionOperators?Wr("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}]}:Wr("WHERE_RELATIVE_DATE_OPERATOR_UNSUPPORTED",o,t.field,a.fieldType,i):Wr("WHERE_RELATIVE_DATE_ARGUMENT_INVALID",o,t.field,a.fieldType,i):Wr("WHERE_RELATIVE_DATE_FIELD_TYPE_UNSUPPORTED",o,t.field,void 0,i)}function EA(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 RA(e,t,n){let r=n(e);return r?Kd(r.fieldType,t)?!yl.has(r.fieldType)&&!xd.has(r.fieldType)?Yn("WHERE_OPERATOR_UNSUPPORTED",e.field,r.fieldType,t):{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_RESIDUAL",field:e.field,fieldType:r.fieldType,operator:t}]}:Yn("WHERE_OPERATOR_INVALID_FOR_FIELD_TYPE",e.field,r.fieldType,t):Yn("WHERE_FIELD_UNRESOLVED",e.field,void 0,t)}function Kd(e,t){let n=pA.get(e);return n===void 0||n.has(t)}function gA(e,t){return yl.has(e)?!0:xd.has(e)?t==="="||t==="!="||t==="<>"||t==="IN"||t==="NOT_IN"||t==="LIKE"||t==="NOT_LIKE"||t==="KLIKE"||t==="NOT_KLIKE":!1}function Yr(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 yA(e,t,n){let r=[...t.reasons,...n.reasons];return t.capability==="UNSUPPORTED"||n.capability==="UNSUPPORTED"?jr({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")?jr({capability:"SUPERSET_PREFILTER",reasons:[{code:"WHERE_SUPERSET_PREFILTER"},...r]}):jr({capability:"LOCAL_ONLY",reasons:r})}function gl(){return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]}}function Yn(e,t,n,r){return{capability:"UNSUPPORTED",reasons:[{code:e,field:t,fieldType:n,operator:r}]}}function Wo(e,t,n,r,i){return jr({capability:"UNSUPPORTED",reasons:[{code:e,functionName:t,field:n,fieldType:r,operator:i}]})}function Wr(e,t,n,r,i){return Vd({capability:"UNSUPPORTED",reasons:[{code:e,functionName:t,field:n,fieldType:r,operator:i}]})}function $d(e){return e.some(t=>t.code.startsWith("WHERE_RELATIVE_DATE_")||t.functionName!==void 0&&ee(t.functionName))}function mA(e){return e.some(t=>t.code.startsWith("WHERE_KINTONE_FUNCTION_")||t.functionName!==void 0&&zt.has(t.functionName))}function Vd(e){if(e.capability==="EXACT_PUSHDOWN"||!$d(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&&ee(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 AA(e){if(e.capability==="EXACT_PUSHDOWN"||!mA(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&&zt.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 jr(e){return AA(Vd(e))}function ml(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 Wd(e){let t=/^(\d{2}):(\d{2})$/.exec(e);return t!==null&&Number(t[1])<=23&&Number(t[2])<=59}function Hd(e){let t=/^(\d{4}-\d{2}-\d{2})T(\d{2}):(\d{2}):(\d{2})Z$/.exec(e);return!t||!ml(t[1])?!1:Number(t[2])<=23&&Number(t[3])<=59&&Number(t[4])<=59}function Ho(e){let t=e.raw??String(e.value),n=ye(t);if(n===null)return!1;if(n.sign===0)return W(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=Qa(n);return W(e)===o}var hA=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]),SA=new Set(["CREATOR","MODIFIER","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE"]),TA=new Set(["SINGLE_LINE_TEXT","LINK","MULTI_LINE_TEXT","RICH_TEXT","FILE"]),IA=new Set(["DATETIME","CREATED_TIME","UPDATED_TIME"]);function zn(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)?zd(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"}):zd(n[0],e.field)}function hl(e,t){if(e.left.type!=="FIELD")return zr();let n=zn(e.left,t);if(n.status!=="OWNED"||n.source.sourceKind!=="APP")return zr();let r=n.source.fieldTypes.get(n.fieldCode);if(r===void 0||r.startsWith("KSQL_")||Se(e,a=>{let s=zn(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:Q({fieldType:l})}).capability!=="EXACT_PUSHDOWN")return zr();let o=CA(e,n,r);return o==="unsafe"?zr():Object.freeze({relation:o,owner:n})}function qd(e,t){let n=Re(e);if(n.length===0||e.left.type!=="FIELD")return Object.freeze({relation:"unsafe"});let r=zn(e.left,t);return r.status!=="OWNED"||r.source.sourceKind!=="APP"?Object.freeze({relation:"unsafe"}):Se(e,o=>{let a=zn(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:Q({fieldType:s})}).capability!=="EXACT_PUSHDOWN"?Object.freeze({relation:"unsafe"}):Object.freeze({relation:"function-leaf-exact",owner:r,functionOccurrences:Object.freeze([...n])})}function Xd(e,t){let n=new Set;an(e,n);let i=(e===null?[]:Zd(jn(e,t))).map(s=>Object.freeze({targetAlias:s.owner.alias,appId:s.owner.appId,predicate:s.predicate,relation:s.relation})),o=wA(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)an(s.predicate,a);return Object.freeze({items:Object.freeze(i),appliedKlikes:a,allKlikes:Object.freeze([...n]),rejections:Object.freeze(PA(e,t)),fetchQueriesByAlias:new Map,...o})}function Jd(e,t){if(e.serverFunctionCandidate?.staticContract!=="CONFIRMED"||e.serverFunctionConsumptions.length===0||e.residualServerFunctionOccurrences.length!==0||!sn(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,qn(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=qn({targetAlias:a.targetAlias,appId:a.appId,predicate:a.predicate,relation:"exact"},t);if(l!==a.serializedPredicate||!sn(Jo(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 Xn(e){if(e.serverFunctionCandidate===null||e.serverFunctionCandidate.staticContract!=="CONFIRMED"||e.serverFunctionCandidate.fetchContract!=="CONFIRMED"||e.serverFunctionConsumptions.length===0||e.residualServerFunctionOccurrences.length!==0||!sn(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&&!sn(Jo(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))||Qd(NA(e))!==e.allKlikes.length))}function wA(e,t){if(e===null)return Yd(null);let n=Object.freeze([...Re(e)]);if(n.length===0)return Yd(e);let r=bA(e,t,n);if(r!==null)return r;let i=zo(e),o=[],a=new Set;for(let u of i){let d=qd(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=qn(f,t)}catch{continue}let E=Jo(R);sn(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=qo(e,a),l=Object.freeze(s===null?[]:[...Re(s)]),c=Object.freeze(o.flatMap(u=>[...u.functionOccurrences])),p=sn(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 bA(e,t,n){let r=Yo(e,t);if(r===null)return null;let i={targetAlias:r.alias,appId:r.appId,predicate:e,relation:"exact"},o;try{o=qn(i,t)}catch{return null}if(!sn(Jo(o),n))return null;let a=new Set;if(an(e,a),Qd(o)!==a.size)return null;let s=Object.freeze(jo(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 Yo(e,t){switch(e.type){case"BINARY":{if(Re(e).length>0){let i=qd(e,t);return i.relation==="function-leaf-exact"?i.owner:null}let r=hl(e,t);return r.relation==="exact"&&r.owner!==void 0?r.owner:null}case"LOGICAL":{let n=Yo(e.left,t),r=Yo(e.right,t);return n!==null&&r!==null&&Qo(n,r)?n:null}case"GROUP":case"NOT":return Yo(e.expr,t);case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return null}}function jo(e){switch(e.type){case"BINARY":return Re(e).length>0?[e]:[];case"LOGICAL":return[...jo(e.left),...jo(e.right)];case"GROUP":case"NOT":return jo(e.expr);case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return[]}}function Yd(e){let t=e===null?[]:Re(e);return{serverFunctionCandidate:null,serverFunctionConsumptions:Object.freeze([]),allServerFunctionOccurrences:Object.freeze([...t]),adoptedServerFunctionOccurrences:Object.freeze([]),residualWhere:e,residualServerFunctionOccurrences:Object.freeze([...t])}}function zo(e){switch(e.type){case"BINARY":return Re(e).length>0?[e]:[];case"LOGICAL":return e.op==="AND"?[...zo(e.left),...zo(e.right)]:[];case"GROUP":return zo(e.expr);case"NOT":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return[]}}function qo(e,t){if(e.type==="BINARY")return t.has(e)?null:e;if(e.type==="LOGICAL"){if(e.op!=="AND")return e;let n=qo(e.left,t),r=qo(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=qo(e.expr,t);return n===null?null:n===e.expr?e:{...e,expr:n}}return e}function Jo(e){let t=[];for(let n of cr){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 sn(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 Qd(e){return[...e.matchAll(/\s(?:not\s+)?like\s/g)].length}function NA(e){let t=e.serverFunctionConsumptions[0];return t===void 0?"":e.fetchQueriesByAlias.get(t.targetAlias)??""}function PA(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=zn(i.left,t);if(o.status==="AMBIGUOUS"){n.add("AMBIGUOUS_FIELD");return}if(o.status==="UNKNOWN"){n.add("UNKNOWN_FIELD_OR_METADATA");return}if(Xo(i.right)){n.add("CROSS_TABLE_BINARY");return}hl(i,t).relation==="unsafe"&&n.add("UNSAFE_RELATION");return}if(i.type==="LOGICAL"){if(i.op==="OR"){if(tf(i)){n.add("KLIKE_OR");return}let o=jn(i.left,t),a=jn(i.right,t);if(o.length!==1||a.length!==1||!Qo(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 qn(e,t){return qr(e.predicate,e,t),H(e.predicate)}function qr(e,t,n){switch(e.type){case"LOGICAL":qr(e.left,t,n),qr(e.right,t,n);return;case"GROUP":qr(e.expr,t,n);return;case"NOT":qr(e.expr,t,n);return;case"BINARY":{if(e.left.type!=="FIELD"||Xo(e.right))throw Al(t,"predicate contains a non-target or RHS field reference");let r=zn(e.left,n);if(r.status!=="OWNED"||r.alias!==t.targetAlias||r.appId!==t.appId||r.source.sourceKind!=="APP")throw Al(t,`field ${e.left.field} is not uniquely owned by the target`);return}case"NULL_CHECK":case"EXISTS":case"BOOLEAN":throw Al(t,"predicate shape is outside the Phase A serializer contract")}}function Al(e,t){return new Error(`InternalError: JOIN pushdown ownership guard failed for ${e.targetAlias}/APP${e.appId}: ${t}.`)}function jn(e,t){switch(e.type){case"BINARY":{let n=hl(e,t);return n.relation==="unsafe"||n.owner===void 0?[]:[{owner:n.owner,predicate:e,relation:n.relation}]}case"LOGICAL":{let n=jn(e.left,t),r=jn(e.right,t);if(e.op==="AND")return Zd([...n,...r]);if(tf(e))return[];if(n.length!==1||r.length!==1)return[];let i=n[0],o=r[0];return Qo(i.owner,o.owner)?[{owner:i.owner,predicate:{type:"LOGICAL",op:"OR",left:i.predicate,right:o.predicate},relation:ef(i.relation,o.relation)}]:[]}case"GROUP":return jn(e.expr,t).map(n=>({...n,predicate:{type:"GROUP",expr:n.predicate}}));case"NOT":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return[]}}function Zd(e){let t=[];for(let n of e){let r=t.findIndex(o=>Qo(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:ef(i.relation,n.relation)}}return t}function CA(e,t,n){if(e.op==="LIKE"||e.op==="NOT_LIKE")return"unsafe";if(e.op==="KLIKE"||e.op==="NOT_KLIKE")return TA.has(n)&&e.right.type==="STRING"&&e.right.value!==""?"exact":"unsafe";if(n==="__ID__"||t.fieldCode==="$id")return OA(e.right)&&(e.op==="="||e.op==="<"||e.op===">"||e.op==="<="||e.op===">=")?"exact":"unsafe";if(n==="RECORD_NUMBER")return jd(e);if(n==="NUMBER")return(e.op==="IN"||e.op==="NOT_IN")&&e.right.type==="IN_LIST"&&e.right.values.length>0&&e.right.values.every(r=>r.type==="NUMBER"&&Ho(r))||(e.op==="="||e.op==="!="||e.op==="<>"||e.op==="<"||e.op===">"||e.op==="<="||e.op===">=")&&e.right.type==="NUMBER"&&Ho(e.right)?"exact":"unsafe";if(n==="CALC")return jd(e);if(SA.has(n))return e.op!=="IN"&&e.op!=="NOT_IN"||e.right.type!=="IN_LIST"||e.right.values.length===0?"unsafe":e.right.values.every(r=>r.type==="STRING"&&r.value!=="")?"exact":"unsafe";if(n==="SINGLE_LINE_TEXT"||n==="LINK")return(e.op==="IN"||e.op==="NOT_IN")&&e.right.type==="IN_LIST"&&e.right.values.length>0&&e.right.values.every(r=>r.type==="STRING"&&r.value!=="")||(e.op==="="||e.op==="!="||e.op==="<>")&&e.right.type==="STRING"&&e.right.value!==""?"exact":"unsafe";if(n==="DATE"||n==="TIME"||IA.has(n))return e.op!=="="&&e.op!=="!="&&e.op!=="<>"&&e.op!=="<"&&e.op!==">"&&e.op!=="<="&&e.op!==">="||e.right.type!=="STRING"?"unsafe":n==="DATE"?ml(e.right.value)?"exact":"unsafe":n==="TIME"?Wd(e.right.value)?"exact":"unsafe":Hd(e.right.value)?"exact":"unsafe";if(hA.has(n)){if(e.op!=="IN"&&e.op!=="NOT_IN"||e.right.type!=="IN_LIST"||e.right.values.length===0)return"unsafe";let r=t.source.fieldOptions?.get(t.fieldCode);return r===void 0?"unsafe":e.right.values.every(i=>i.type==="STRING"&&i.value!==""&&r.has(i.value))?"exact":"unsafe"}return"unsafe"}function jd(e){let t=n=>n.type==="NUMBER"&&Ho(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 zd(e,t){return Object.freeze({status:"OWNED",alias:e.alias,appId:e.appId,fieldCode:t,source:e})}function zr(){return Object.freeze({relation:"unsafe"})}function Qo(e,t){return e.alias===t.alias&&e.appId===t.appId&&e.source===t.source}function ef(e,t){return e==="exact"&&t==="exact"?"exact":"superset"}function OA(e){return e.type==="NUMBER"&&LA(e)&&e.value>0}function LA(e){return/^-?\d+$/.test(W(e))&&Number.isSafeInteger(e.value)}function an(e,t){if(e!==null){if(_t(e)){t.add(e);return}switch(e.type){case"LOGICAL":an(e.left,t),an(e.right,t);return;case"NOT":case"GROUP":an(e.expr,t);return;case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}}function tf(e){let t=new Set;return an(e,t),t.size>0}function Xo(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(Xo);let t=e;return t.type==="FIELD"||t.type==="FIELD_REF"?!0:Object.values(t).some(Xo)}function Sl(e,t){let n=Sr(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 DA(e,t){return e.columns.some(n=>"alias"in n&&n.alias===t)}function Xr(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"&&!DA(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 UA(e,t){return e.columns.some(n=>"alias"in n&&n.alias===t)}function Jr(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(UA(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}vA.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 Zo=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"}},ea=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}},ta=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 nf(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 ta(a).message}}return{records:n,cleanupWarning:o}}function Tl(e){let t=[];e.where&&t.push(H(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 kA={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 rf(e,t){let n=kA[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 of(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=>rf(s.fieldType,s.code)==="PROCESS")?(await n()).enable:!1;return[...r.filter(s=>{let l=rf(s.fieldType,s.code);return l==="RECORD"||l==="PROCESS"&&o}).map(s=>s.code),"$revision","$id"]}var Jn=new WeakMap,wl=new WeakMap;function Pl(e){if(wl.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):Te(t,r)},has(n,r){return Reflect.has(n,r)||typeof r=="string"&&Te(t,r)!==void 0},getOwnPropertyDescriptor(n,r){let i=Reflect.getOwnPropertyDescriptor(n,r);if(i||typeof r!="string")return i;let o=Te(t,r);return o===void 0?void 0:{configurable:!0,enumerable:!1,writable:!1,value:o}}}),wl.set(t,e),t}function Xe(e){return wl.get(e)??e}function Ef(e){let t=Jn.get(e);return t||(t={byColumn:new Map,byLookupKey:new Map},Jn.set(e,t)),t}function st(e,t,n,r=[]){let i=Ef(e);i.byColumn.set(t,n);for(let o of r)i.byLookupKey.set(o,n)}function Be(e,t){return Jn.get(e)?.byColumn.get(t)}function Te(e,t){return Jn.get(e)?.byLookupKey.get(t)}function ht(e,t){return Jn.has(e)?void 0:e[t]}function MA(e){let t=Jn.get(e)?.byLookupKey;if(!t||t.size===0)return e;let n={...e};for(let[i,o]of t)n[i]=o;let r=us(e);return r&&ls(n,r.includedCanonicalIds),n}function St(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 FA(e,t,n,r={}){let{on:i,type:o}=n,a=i.left.tableAlias?`${i.left.tableAlias}.${i.left.field}`:i.left.field,s=i.right.tableAlias?`${i.right.tableAlias}.${i.right.field}`:i.right.field;if(af(e,a,r.leftColumns),af(t,s,r.rightColumns),o==="RIGHT"){let u=new Map;for(let R of e){let E=R[a]??"",g=u.get(E);g?g.push(R):u.set(E,[R])}let d={};for(let R of r.leftColumns??Object.keys(e[0]??{}))d[R]="";let f=[];for(let R of t){let E=R[s]??"",g=u.get(E)??[];if(g.length>0)for(let y of g)f.push({...y,...R});else f.push({...d,...R})}return f}let l=new Map;for(let u of t){let d=u[s]??"",f=l.get(d);f?f.push(u):l.set(d,[u])}let c=[],p={};for(let u of r.rightColumns??Object.keys(t[0]??{}))p[u]="";for(let u of e){let d=u[a]??"",f=l.get(d)??[];if(f.length>0)for(let R of f)c.push({...u,...R});else o==="LEFT"&&c.push({...u,...p})}return c}function af(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 xA(e,t,n,r,i){return t===null?e:e.filter(o=>ie(t,o,n,r,i))}function Rf(e){return e.some(t=>t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"||t.type==="CASE_COL"&&ke(t.expr)||t.type==="STRFUNC_COL"&&ri(t.expr)||t.type==="SCALAR_VALUE_COL"&&Wt(t.expr))}function GA(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)=>KA(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&&Rf(n)&&a.set("",[]);let s=[];for(let l of a.values()){let c=Pl({...l[0]});for(let p of t)p.type==="ARITH_KEY"?c[_l(p.expr)]=String(le(p.expr,l[0])):p.type==="FUNC_KEY"&&(c[Ht(p.expr)]=ue(p.expr,l[0]));gf(c,l,n,r),s.push(c)}return s}function BA(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=sf(R,d),g=f.children.get(E);g||(g={children:new Map},f.children.set(E,g)),f=g}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=Pl({...d[0]}),R=new Map;for(let E of l.items)R.has(E.canonicalId)||R.set(E.canonicalId,sf(E,d[0]));for(let E of t.allItems){let g=R.get(E.canonicalId)??"";f[E.directKey]=g,E.unqualifiedBridgeKey!==null&&(f[E.unqualifiedBridgeKey]=g)}gf(f,d,n,r),ls(f,u),o.push(f)}}return o}function sf(e,t){return t?t[e.directKey]??(e.unqualifiedBridgeKey===null?void 0:t[e.unqualifiedBridgeKey])??"":""}function gf(e,t,n,r){for(let[i,o]of n.entries())if(o.type==="AGGREGATE"){let a=pe(o.func,o.distinct,o.arg),s=String(ei(o.func,o.distinct,o.arg,o.separator,t,r));st(e,i,s,o.alias?[o.alias,a]:[a])}else if(o.type==="ARITH_AGG_COL"){na(e,t,o.expr,r);let a=o.alias??ti(o.expr);st(e,i,String(Qr(o.expr,t,r)),[a])}else if(o.type==="STRFUNC_COL"&&ri(o.expr)){na(e,t,o.expr,r);let a=o.alias??Ht(o.expr),s=Dl(o.expr,t,r);st(e,i,ue(s,e),[a])}else if(o.type==="SCALAR_VALUE_COL"&&Wt(o.expr)){na(e,t,o.expr,r);let a=o.alias??lt(o.expr),s=Zr(o.expr,t,r);st(e,i,String(Ae(s,e)),[a])}else if(o.type==="CASE_COL"&&ke(o.expr)){na(e,t,o.expr,r);let a=Tf(o.expr,t,r),l=De(a,e,void 0,c=>c.aggregateRef?mf(c.aggregateRef,r):void 0);st(e,i,l,[bl(o.alias,i)])}}function bl(e,t){return e??`__ksql_case_column_${t}`}function Nl(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(r=>Nl(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=>Nl(r,t))}function na(e,t,n,r){let i=[];Nl(n,i);for(let o of i){let a=pe(o.func,o.distinct,o.arg);if(Te(e,a)!==void 0)continue;let s=String(ei(o.func,o.distinct,o.arg,o.separator,t,r));Ef(e).byLookupKey.set(a,s)}}function KA(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=ra(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"?ue(e.expr,t):String(le(e.expr,t))}function ei(e,t,n,r,i,o){if(n.type==="WILDCARD")return e==="COUNT"?i.length:0;let a=yf(e,n,i).filter(f=>f!==null),s=e==="STDDEV_POP"||e==="STDDEV_SAMP"||e==="VAR_POP"||e==="VAR_SAMP"||e==="MEDIAN",l=s?a.map(f=>{let R=Number(f);if(!Number.isFinite(R))throw new Error(`ArgumentError: ${e} \u306E\u5F15\u6570\u306B\u975E\u6570\u5024\u307E\u305F\u306F\u975E\u6709\u9650\u306E\u5024\u304C\u3042\u308A\u307E\u3059: ${f}`);return R}):null,c=t?s?[...new Set(l)]:[...new Set(a)]:s?l:a;if(e==="COUNT")return c.length;if(e==="GROUP_CONCAT")return c.join(r??",");let p=e==="MIN"||e==="MAX"||e==="MODE"?ni(n,o):void 0,u=typeof p=="string"?B(p):p??(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(a.length===0)return"";let f=new Map;for(let g of a)f.set(g,(f.get(g)??0)+1);let R="",E=0;for(let[g,y]of f){if(y>E){R=g,E=y;continue}if(y!==E)continue;let m=$t(g,R,u);(m<0||m===0&&Kt(g,R)<0)&&(R=g)}return R}if(e==="MIN"||e==="MAX"){let f=c;if(f.length===0)return"";let R=f[0];for(let E of f.slice(1)){let g=$t(E,R,u);(e==="MAX"&&g>0||e==="MIN"&&g<0)&&(R=E)}return R}let d=s?c:c.map(Number);switch(e){case"SUM":return d.reduce((f,R)=>f+R,0);case"AVG":return d.length===0?0:d.reduce((f,R)=>f+R,0)/d.length;case"MEDIAN":{if(d.length===0)return"";let f=[...d].sort((E,g)=>E-g),R=Math.floor(f.length/2);return f.length%2===1?f[R]:(f[R-1]+f[R])/2}case"VAR_POP":case"VAR_SAMP":case"STDDEV_POP":case"STDDEV_SAMP":{let f=e==="VAR_SAMP"||e==="STDDEV_SAMP";if(d.length===0||f&&d.length<2)return"";let R=d[0],E=0,g=0,y=0;for(let A of d){let h=A-R;E++;let S=h-g;g+=S/E,y+=S*(h-g)}let m=Math.max(0,y/(f?E-1:E));return e==="STDDEV_POP"||e==="STDDEV_SAMP"?Math.sqrt(m):m}}}function yf(e,t,n){return n.map(r=>{let i=Xe(r),o;if(t.type==="FIELD_REF"){let a=i[t.field];if(a===void 0||a===""&&e!=="MIN"&&e!=="MAX")return null;o=a}else if(t.type==="ARITH"||t.type==="NUMBER"){let a=le(t,i);if(isNaN(a))return null;o=String(a)}else{let a=yt(t,i);if(a===null||a===""&&e!=="MIN"&&e!=="MAX"||typeof a=="number"&&Number.isNaN(a))return null;o=String(a)}return o})}function $A(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 Qr(e,t,n){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));if(e.type==="AGG_GROUP_KEY"){let o=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return Number(_e(t[0]??{},o))}if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved aggregate arithmetic variable @${e.name}.`);let r=Qr(e.left,t,n),i=Qr(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 ti(e){return tt(e)}function ni(e,t){if(e.type==="FIELD_REF")return t?.($A(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=>ni(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 mf(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":ni(e.arg,t)??"string";return typeof n=="string"?B(n):n}function VA(e,t,n,r){return t===null?e:e.filter(i=>ie(t,MA(i),n,void 0,r))}function WA(e,t,n,r,i){if(e.length===0)return e;let o=HA(e,t,{scalarCache:n,resolveFieldType:r,resolveFieldSemantics:i}),a=new Set;return e.filter(s=>{let l=o(s);return a.has(l)?!1:(a.add(l),!0)})}function HA(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(ZA(t,a,o))}function Cl(e,t,n,r,i,o){return t.length===0?e:Af(e,t,n,r,i,o).rows.map(a=>a.row)}function Af(e,t,n,r,i,o){let a=t.map(({key:c})=>{if(c.type==="ARITH_KEY")return{semantics:B("number")};if(c.type==="FUNC_KEY")return{semantics:B(hf.has(c.expr.func)?"number":"string")};if(c.type==="GROUPING_KEY")return{semantics:B("number")};let p=i?.get(c.name);if(p)return{semantics:p};let u=n?.get(c.name);return u?{semantics:{fieldType:"MULTI_SELECT",compareMode:"option",inSubtable:!1,requiresCollectionOperators:!1,optionOrder:u}}:{semantics:B(r?.get(c.name)??"string")}}),s=e.map(c=>({row:c,keys:t.map(({key:p},u)=>({s:zA(p,c,o)}))})),l=(c,p)=>YA(c,p,t,a);return s.sort(l),{rows:s,compare:l}}function YA(e,t,n,r){for(let i=0;i<n.length;i++){let o=jA(e.keys[i],t.keys[i],r[i]);if(o!==0)return n[i].direction==="ASC"?o:-o}return 0}function jA(e,t,n){return $t(e.s,t.s,n.semantics)}var hf=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function zA(e,t,n){let r=Xe(t);switch(e.type){case"FIELD_NAME":return n?.(e.name,t)??Te(t,e.name)??r[e.name]??"";case"ARITH_KEY":return String(le(e.expr,r));case"FUNC_KEY":return ue(e.expr,r);case"GROUPING_KEY":return Un(e.ref,t)}}function Ol(e,t,n,r){let i=new Map;for(let[o,a]of e.entries()){if(!("alias"in a)||a.alias===null)continue;let s=a.alias;switch(a.type){case"FIELD":i.set(s,l=>_e(Xe(l),a.field));break;case"LITERAL_COL":i.set(s,()=>a.value);break;case"AGGREGATE":{i.set(s,l=>Be(l,o)??"0");break}case"ARITH_AGG_COL":{i.set(s,l=>Be(l,o)??"0");break}case"WINDOW_COL":i.set(s,l=>Be(l,o)??"");break;case"ARITH_COL":i.set(s,l=>String(le(a.expr,Xe(l))));break;case"STRFUNC_COL":{let l=Ht(a.expr);i.set(s,c=>ri(a.expr)?Be(c,o)??Te(c,l)??ue(a.expr,Xe(c),n,r):ue(a.expr,Xe(c),n,r));break}case"CASE_COL":i.set(s,l=>ke(a.expr)?Be(l,o)??"":De(a.expr,Xe(l),n,r));break;case"SCALAR_VALUE_COL":{let l=lt(a.expr);i.set(s,c=>Wt(a.expr)?Be(c,o)??Te(c,l)??"":String(Ae(a.expr,Xe(c),n,r)));break}case"SCALAR_SUBQUERY_COL":i.set(s,()=>t?.get(o)??"");break;case"GROUPING_COL":i.set(s,l=>Un(a.ref,l));break;case"VARIABLE_COL":break}}return(o,a)=>i.get(o)?.(a)}function Ll(e,t,n,r,i,o){let a=t.map((s,l)=>({column:s,columnIndex:l})).filter(s=>s.column.type==="WINDOW_COL");if(e.length===0||a.length===0)return e;for(let s=0;s<e.length;s++)e[s]=Pl(e[s]);for(let{column:s,columnIndex:l}of a){let c=new Map;for(let p of e){let u=JSON.stringify(s.partitionBy.map(f=>QA(p,f))),d=c.get(u);d?d.push(p):c.set(u,[p])}for(let p of c.values()){let u=Af(p,s.orderBy,n,r,i),d=u.rows;if($i(s)){JA(s,l,u,o);continue}if(es(s)){XA(s,l,d);continue}if(!Za(s))throw new Error(`InternalError: unknown window kind ${s.windowKind??"undefined"}`);let f=1,R=1;for(let E=0;E<d.length;E++){E>0&&u.compare(d[E-1],d[E])!==0&&(f=E+1,R++);let g=s.func==="ROW_NUMBER"?E+1:s.func==="RANK"?f:R;st(d[E].row,l,String(g),[s.alias])}}}return e}function qA(e,t){let n=yt(e,Xe(t));return n==null||typeof n=="number"&&!Number.isFinite(n)?"":String(n)}function XA(e,t,n){let r=n.map(o=>qA(e.arg,o.row)),i=e.valueFunc==="LAG"?-1:1;for(let o=0;o<n.length;o++){let a=o+i*e.offset;st(n[o].row,t,a>=0&&a<r.length?r[a]:"",[e.alias])}}function JA(e,t,n,r){let i=n.rows,o=e.arg.type==="WILDCARD"?null:yf(e.aggFunc,e.arg,i.map(d=>d.row)),a=e.arg.type==="WILDCARD"?void 0:ni(e.arg,r),s=typeof a=="string"?B(a):a??B("string"),l=[],c=0,p=0,u;for(let d=0;d<i.length;d++){let f=o?.[d]??null;if(e.arg.type==="WILDCARD")c++;else if(f!==null)if(e.aggFunc==="COUNT")c++;else if(e.aggFunc==="SUM"||e.aggFunc==="AVG")p+=Number(f),c++;else if(u===void 0)u=f;else{let E=$t(f,u,s);(e.aggFunc==="MAX"&&E>0||e.aggFunc==="MIN"&&E<0)&&(u=f)}let R=e.aggFunc==="COUNT"?c:e.aggFunc==="SUM"?p:e.aggFunc==="AVG"?c===0?0:p/c:u??0;l.push(String(R))}if(e.frame===null){let d=l[l.length-1];for(let f of i)st(f.row,t,d,[e.alias]);return}if(e.frame.unit==="RANGE"){for(let d=0;d<i.length;){let f=d;for(;f+1<i.length&&n.compare(i[f],i[f+1])===0;)f++;for(let R=d;R<=f;R++)st(i[R].row,t,l[f],[e.alias]);d=f+1}return}for(let d=0;d<i.length;d++)st(i[d].row,t,l[d],[e.alias])}function QA(e,t){let n=t.tableAlias?`${t.tableAlias}.${t.field}`:t.field;return _e(Xe(e),n)}function ia(e,t,n){let r=n??0;return t===null?e.slice(r):e.slice(r,r+t)}function ra(e,t,n,r={}){let i=Xe(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 _e(i,e.field);case"LITERAL_COL":return e.value;case"AGGREGATE":{let o=pe(e.func,e.distinct,e.arg);return Be(t,n)??Te(t,e.alias??o)??Te(t,o)??ht(t,e.alias??o)??ht(t,o)??"0"}case"ARITH_AGG_COL":{let o=e.alias??ti(e.expr);return Be(t,n)??Te(t,o)??ht(t,o)??"0"}case"ARITH_COL":return String(le(e.expr,i));case"CASE_COL":return ke(e.expr)?Be(t,n)??Te(t,bl(e.alias,n))??ht(t,bl(e.alias,n))??"":De(e.expr,i,r.resolveFieldType,r.resolveFieldSemantics);case"GROUPING_COL":return Un(e.ref,t);case"STRFUNC_COL":{let o=Ht(e.expr);return ri(e.expr)?Be(t,n)??Te(t,e.alias??o)??Te(t,o)??ht(t,e.alias??o)??ht(t,o)??ue(e.expr,i,r.resolveFieldType,r.resolveFieldSemantics):ue(e.expr,i,r.resolveFieldType,r.resolveFieldSemantics)}case"SCALAR_VALUE_COL":{let o=lt(e.expr);return Wt(e.expr)?Be(t,n)??Te(t,e.alias??o)??Te(t,o)??ht(t,e.alias??o)??ht(t,o)??"":String(Ae(e.expr,i,r.resolveFieldType,r.resolveFieldSemantics))}case"SCALAR_SUBQUERY_COL":return r.scalarCache?.get(n)??"";case"WINDOW_COL":return Be(t,n)??Te(t,e.alias)??ht(t,e.alias)??""}}function ZA(e,t,n={}){return e.map((r,i)=>{let o=ra(r,t,i,n);return typeof o=="string"?o:o.entries.map(([,a])=>a)})}function Qn(e,t,n,r,i,o,a){if(t.length===1&&t[0].type==="WILDCARD"){let f=e.map(E=>{let g=df(uf(E),a),y=ra(t[0],E,0,{wildcardKeys:Object.keys(g)}),m={};if(typeof y!="string")for(let[A,h]of y.entries)h!==null&&(m[A]=h);return m}),R=f.length>0?Object.keys(f[0]):[...i??[]];return{rows:f,columns:R}}let s=rh(t),l=nh(t),c=t.some(f=>f.type==="WILDCARD"||f.type==="PARENT_WILDCARD"),p=c?null:eh(t,s,l),u=p??[];return c&&e.length===0?{rows:[],columns:th(t,s,l)}:{rows:e.map((f,R)=>{let E={},g={scalarCache:n,resolveFieldType:r,resolveFieldSemantics:o,wildcardKeys:Object.keys(df(uf(f),a)),parentWildcardKeys:Object.keys(f).filter(y=>y.startsWith("_p.")).sort()};for(let[y,m]of t.entries()){let A=ra(m,f,y,g);switch(m.type){case"VARIABLE_COL":break;case"WILDCARD":if(typeof A!="string")for(let[h,S]of A.entries)S!==null&&(E[h]=S);break;case"PARENT_WILDCARD":{if(typeof A!="string")for(let[h,S]of A.entries)S!==null&&(E[h]=S),R===0&&u.push(h);break}case"FIELD":{let h=p?.[y]??m.alias??s.get(y)??m.field;E[h]=A,p===null&&R===0&&u.push(h);break}case"LITERAL_COL":{let h=p?.[y]??m.alias??`'${m.value}'`;E[h]=A,p===null&&R===0&&u.push(h);break}case"AGGREGATE":{let h=pe(m.func,m.distinct,m.arg),S=p?.[y]??m.alias??h;E[S]=A,p===null&&R===0&&u.push(S);break}case"ARITH_AGG_COL":{let h=p?.[y]??m.alias??ti(m.expr);E[h]=A,p===null&&R===0&&u.push(h);break}case"ARITH_COL":{let h=p?.[y]??m.alias??_l(m.expr);E[h]=A,p===null&&R===0&&u.push(h);break}case"CASE_COL":{let h=p?.[y]??m.alias??l.get(y)??"case";E[h]=A,p===null&&R===0&&u.push(h);break}case"GROUPING_COL":{let h=p?.[y]??m.alias??`GROUPING(${m.ref.field.tableAlias?`${m.ref.field.tableAlias}.`:""}${m.ref.field.field})`;E[h]=A,p===null&&R===0&&u.push(h);break}case"STRFUNC_COL":{let h=p?.[y]??m.alias??Ht(m.expr);E[h]=A,p===null&&R===0&&u.push(h);break}case"SCALAR_VALUE_COL":{let h=p?.[y]??m.alias??lt(m.expr);E[h]=A,p===null&&R===0&&u.push(h);break}case"SCALAR_SUBQUERY_COL":{let h=p?.[y]??m.alias??"(subquery)";E[h]=A,p===null&&R===0&&u.push(h);break}case"WINDOW_COL":{let h=p?.[y]??m.alias;E[h]=A,p===null&&R===0&&u.push(h);break}}}return E}),columns:u}}function eh(e,t,n){return e.map((r,i)=>Sf(r,i,t,n))}function th(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=Sf(a,o,t,n);i.has(s)||(i.add(s),r.push(s))}return r}function Sf(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??pe(e.func,e.distinct,e.arg);case"ARITH_AGG_COL":return e.alias??ti(e.expr);case"ARITH_COL":return e.alias??_l(e.expr);case"CASE_COL":return e.alias??r.get(t)??"case";case"STRFUNC_COL":return e.alias??Ht(e.expr);case"SCALAR_VALUE_COL":return e.alias??lt(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 nh(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 rh(e){let t=new Map;for(let r of e){if(r.type!=="FIELD"||r.alias)continue;let i=lf(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=lf(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 lf(e){if(e.startsWith("_p."))return e;let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function uf(e){let t={};for(let[n,r]of Object.entries(e))n.startsWith("_p.")||(t[n]=r);return t}function _l(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"?W(n):n.type==="STRING_FUNC"?Ht(n):`(${t(n.left)}${n.op}${t(n.right)})`};return e.type==="ARITH"?`${t(e.left)}${e.op}${t(e.right)}`:t(e)}function Ht(e){let t=e.args.map(n=>n.type==="AGG_REF"||n.type==="AGG_ARITH"||n.type==="AGG_GROUP_KEY"?ti(n):n.type==="VARIABLE"?`@${n.name}`:lt(n));return`${e.func}(${t.join(",")})`}function lt(e){switch(e.type){case"STRING":return`'${e.value}'`;case"NUMBER":return W(e);case"VARIABLE":return`@${e.name}`;case"FIELD":return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;case"STRING_FUNC":return Ht(e);case"CASE_WHEN":return"case";case"SCALAR_ARITH":return`${lt(e.left)}${e.op}${lt(e.right)}`;case"CONCAT_OP":return`${lt(e.left)}||${lt(e.right)}`}}function ih(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"?!1:Wt(e)}function Wt(e){return e.type==="STRING_FUNC"?ri(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?Wt(e.left)||Wt(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>cf(t.result))||e.elseResult!==null&&cf(e.elseResult):!1}function cf(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?!1:Wt(e)}function ri(e){return e.args.some(t=>ih(t))}function oh(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=Qr(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(_e(t[0]??{},r)),raw:_e(t[0]??{},r)}}if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved aggregate arithmetic variable @${e.name}.`);return e.type==="STRING_FUNC"?Dl(e,t,n):Zr(e,t,n)}function Zr(e,t,n){return e.type==="STRING_FUNC"?Dl(e,t,n):e.type==="CASE_WHEN"?Tf(e,t,n):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?{...e,left:Zr(e.left,t,n),right:Zr(e.right,t,n)}:e}function pf(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=Qr(e,t,n);return{type:"NUMBER",value:r,raw:String(r)}}return e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?e:Zr(e,t,n)}function Tf(e,t,n){return{...e,branches:e.branches.map(r=>({...r,result:pf(r.result,t,n)})),elseResult:e.elseResult===null?null:pf(e.elseResult,t,n)}}function Dl(e,t,n){return{type:"STRING_FUNC",func:e.func,args:e.args.map(r=>oh(r,t,n))}}function df(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 ff(e,t){if(e!==void 0)return t?e.flatMap(n=>[`${t}.${n}`,n]):[...e]}function Il(e,t,n){if(!(e===void 0&&t===void 0&&n.length===0))return[...new Set([...e??[],...t??[],...Object.keys(n[0]??{})])]}function ah(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(Za(r)||$i(r)&&(r.aggFunc==="COUNT"||r.aggFunc==="SUM"||r.aggFunc==="AVG"))n.set(r.alias,B("number"));else if(($i(r)||es(r))&&r.arg.type!=="WILDCARD"){let i=ni(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(hf.has(r.expr.func)?"number":"string"));return n}function vl(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:g,plainGroupByPlan:y}=e,m=ah(t.columns,u);for(let[P,D]of a??[])m.set(P,D);let A=[],h=t.from.alias;A=(n.get(h)??n.get(null)??[]).map(P=>St(P,h));let w=Il(ff(R?.get(h),h),void 0,A);for(let P of t.joins){let D=P.table.alias,L=(n.get(D)??[]).map(T=>St(T,D)),v=Il(ff(R?.get(D),D),void 0,L);A=FA(A,L,P,{leftColumns:w,rightColumns:v}),w=Il(w,v,A)}let N=e.residualWhere!==void 0?e.residualWhere:t.where;A=xA(A,N,s,d,l);let b=X(t);if(b.type==="GROUPING_SETS"){if(!g)throw new Error("internal error: B65 grouping sets require a metadata-resolved grouping spec.");A=BA(A,g,t.columns,u,{maxGeneratedRows:5e4})}else(b.type==="PLAIN"||Rf(t.columns))&&(A=GA(A,b.type==="PLAIN"?b.allItems:[],t.columns,u,b.type==="PLAIN"?y:void 0,{scalarCache:r,resolveFieldType:s,resolveFieldSemantics:l}));let _=P=>P.aggregateRef?mf(P.aggregateRef,u):p?.(P);return A=VA(A,t.having,c,_),A=Ll(A,t.columns,i,o,m,u),t.distinct&&(A=WA(A,t.columns,r,s,l)),A=Cl(A,t.orderBy,i,o,m,Ol(t.columns,r,s,l)),A=ia(A,t.limit,t.offset),Qn(A,t.columns,r,s,f,l,E)}function If(e,t){let n=[];for(let r of e){let i=Ul(r.$id?.value),o=sh(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=Ul(p?.value);l[`_p.${c}`]={value:u}}for(let[c,p]of Object.entries(s.value??{}))l[c]={value:Ul(p?.value)};n.push(l)}}return n}function sh(e){return Array.isArray(e)?e.filter(t=>!!t&&typeof t=="object"):[]}function Ul(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 wf(e){return["$id",...new Set([...e.topLevel.map(t=>t.code).filter(t=>t!=="$id"&&t!=="$revision"),...e.subtables.keys()])]}function bf(e,t){let n=ii(e);for(let[r,i]of Object.entries(t))n[r]=ii(i);return n}function Nf(e){let t=[...e.preErrors.map(i=>kl(i)),...e.postImageErrors.map(i=>kl(i,i.$err_subtable!=="")),...e.checkErrors.map(i=>kl(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]=ii(e.normalizedPostImage[i])}return{errors:t,invalidRows:n.size,invalidRowNumbers:n,writeRecord:r}}function kl(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 ii(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(ii(a,t));return o}let i={};t.set(n,i);for(let[o,a]of Object.entries(e))i[o]=ii(a,t);return i}function Cf(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"&&je(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 Fl(e){return Cf(e,!0)}function oa(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 Je(e,t,n,r,i=!0,o=!0,a=r){let s=Fl(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:Re(e.where)}),oa(e,e).forEach((l,c)=>Je(l,`${t}.select-source[${c}]`,n,a,a?!1:i,a?!1:o,a))}function oi(e,t,n,r,i=!0){e.left.type==="UNION"?oi(e.left,`${t}.left`,n,r,i):Je(e.left,`${t}.left`,n,r,!0,i),Je(e.right,`${t}.right`,n,r,!0,i)}function Pf(e,t,n,r){if(!r&&vt(e)){Je(Ut(e),`${t}.inlined`,n,!1,!0,!0);return}e.ctes.forEach((i,o)=>{i.query.type==="SELECT"?Je(i.query,`${t}.cte[${o}]`,n,r,!1,!r,!0):i.query.type==="UNION"&&oi(i.query,`${t}.cte[${o}]`,n,!0,!1)}),e.query.type==="SELECT"?Je(e.query,`${t}.main`,n,r,!1,!r,!0):oi(e.query,`${t}.main`,n,!0,!1)}function Of(e,t,n,r=!1){switch(e.type){case"SELECT":Je(e,t,n,r);return;case"UNION":oi(e,t,n,r);return;case"WITH":Pf(e,t,n,r);return;case"CREATE_TEMP_TABLE":e.query.type==="WITH"?Pf(e.query,`${t}.query`,n,!1):e.query.type==="UNION"?oi(e.query,`${t}.query`,n,!0,!1):Je(e.query,`${t}.query`,n,!1,!1,!0,!0);return;case"EXPLAIN":Of(e.query,`${t}.query`,n,r);return;case"VALIDATE":case"REORDER":{let i=Fl(e.where);i.length>0&&n.push({kind:"FORBIDDEN",source:e,where:e.where,functionNames:i,path:t,allowFullScanExact:!1,relativeFunctionOccurrences:Re(e.where)}),oa(e,e).forEach((o,a)=>Je(o,`${t}.select-source[${a}]`,n,!0,!0,!1));return}case"UPDATE":case"DELETE":{let i=Fl(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:Re(e.where)})}if(e.type==="UPDATE"&&e.applyBlocks?.length){let o=Cf(e.applyBlocks,!0);o.length>0&&n.push({kind:"FORBIDDEN",source:e,where:null,functionNames:o,path:`${t}.apply`,allowFullScanExact:!1,relativeFunctionOccurrences:[]})}oa(e,e).forEach((o,a)=>Je(o,`${t}.select-source[${a}]`,n,r,!1,!1));return}default:oa(e,e).forEach((i,o)=>Je(i,`${t}.select-source[${o}]`,n,r,!1,!1))}}function aa(e,t){let n=new Map;for(let r of t){if(!je(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 xl(e,t){return t.eligible===!0&&Fe(e)==="FULL_SCAN"&&e.orderMode!=="KINTONE_NATIVE"&&e.from.cteName===null&&!e.from.subtableCode&&e.joins.length===0}function lh(e,t){return e.where!==null&&e.joins.length>0&&e.joins.every(n=>n.type==="INNER")&&[e.from,...e.joins.map(n=>n.table)].every(n=>n.alias!==null&&n.cteName===null&&!n.subtableCode)&&Xn(t)}function uh(e){return{kind:e.kind,source:e.source,functionNames:e.functionNames,path:e.path,clientWhereEvaluation:!0,allowed:!1}}function ch(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 Cn(e)?(n.some(r=>r!==ft)||n.unshift("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED"),n.includes(ft)||n.push(ft)):n.includes(qt)||n.push(qt),[...new Set(n)]}function Ml(e,t){let n=e.functionNames[0],r=Cn(n)?ft:qt,i=ch(n,t);return{functionName:n,path:e.path,code:i.find(o=>o!==r)??r,reasonCodes:i}}async function Lf(e,t){let n=[];Of(e,"statement",n);let r=[];for(let i of n){if(i.kind==="FORBIDDEN"){let p=uh(i);return r.push(p),{hasRelativeDate:i.functionNames.some(ee),hasServerOnlyWhereFunction:!0,nodes:r,allowed:!1,rejection:Ml(i)}}if(i.kind==="SELECT"){let p=i.source,u=p.from.cteName===null&&!p.from.subtableCode&&p.joins.length===0,d=Fe(p),f=await t.select(p),R="";try{R=i.where===null?"":H(i.where)}catch{R=""}let E=u&&d==="SIMPLE"&&(p.orderBy.length===0||p.orderMode==="KINTONE_NATIVE")&&f.capability==="EXACT_PUSHDOWN"&&aa(R,i.relativeFunctionOccurrences),g,y;if(!E&&i.allowPhase2Prefilter!==!1&&f.capability==="SUPERSET_PREFILTER"&&t.prefilterDecomposition){let S=await t.prefilterDecomposition(p);S?.eligible===!0&&xl(p,S)&&(g=S.plan,y=!0,E=!0)}let m;!E&&f.capability==="EXACT_PUSHDOWN"&&(m=lo({select:p,selectMode:d,capability:f,context:{allowFullScanExact:i.allowFullScanExact},serializedWholeWhere:R||null,relativeFunctionNames:i.relativeFunctionOccurrences})??void 0,m&&(g=m.prefilterPlan,E=!0));let A;if(!E&&t.joinServerFunctionPlan){let S=await t.joinServerFunctionPlan(p);S!==null&&lh(p,S)&&(A=S,E=!0)}let h={kind:i.kind,source:i.source,functionNames:i.functionNames,path:i.path,selectMode:d,capability:f,restQuery:R,...g?{prefilterPlan:g,phase2PrefilterEligible:y}:{},...m?{fullScanExactPlan:m,allowForm:m.allowForm}:{},...A?{joinServerFunctionPlan:A,allowForm:"JOIN_SERVER_FUNCTION_EXACT",joinServerFunctionVariant:A.serverFunctionCandidate.variant}:{},clientWhereEvaluation:!E,allowed:E};if(r.push(h),!E)return{hasRelativeDate:n.some(S=>S.functionNames.some(ee)),hasServerOnlyWhereFunction:!0,nodes:r,allowed:!1,rejection:Ml(i,f)};continue}let o=i.source,a=await t.dml(o),s="";try{s=i.where===null?"":H(i.where)}catch{s=""}let l=a.capability==="EXACT_PUSHDOWN"&&aa(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(ee)),hasServerOnlyWhereFunction:!0,nodes:r,allowed:!1,rejection:Ml(i,a)}}return{hasRelativeDate:n.some(i=>i.functionNames.some(ee)),hasServerOnlyWhereFunction:n.length>0,nodes:r,allowed:!0}}function Gl(e){if(!e.allowed&&e.rejection){let t=Cn(e.rejection.functionName)?ft:qt,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 Bl(e,t,n={}){let r=Se(e.where,t),i=(A,h="INELIGIBLE")=>({eligible:!1,disposition:h,reasonCodes:A,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=ph(e.where,t);if(!a.ok)return i(a.reasonCodes);if(!dh(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=Eh(e.where,t),l=Sr(e.where,{tableAlias:e.from.alias??void 0,allowUnqualifiedFields:!0,allowKlike:!0,fieldTypes:s.fieldTypes,fieldOptions:s.fieldOptions}),c=n.serialize??H,p=n.containsFunctions??aa,u=[];for(let A of a.leaves){let h=ca(A);if(h===null)return i(["RELATIVE_DATE_LEAF_COUNT_MISMATCH"]);let S;try{S=c(A)}catch{return i(["PREFILTER_SERIALIZATION_FAILED"])}if(!p(S,[h]))return i(["PREFILTER_FUNCTION_MISSING"]);u.push(A)}let d=fh(l.condition),f=new Set(u),R=la(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 g=u.map(A=>ca(A));if(!p(E,[...new Set(g)])||!Rh(E,g))return i(["PREFILTER_FUNCTION_MISSING"]);let y=n.rewriteResidual?n.rewriteResidual(e.where,f):ua(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 m=new Set;for(let A of g)m.add(A);return{eligible:!0,plan:{prefilterWhere:R,residualWhere:y,exactRelativeLeaves:u,relativeFunctionNames:m,appliedKlikes:l.appliedKlikes,capability:r.capability,reasons:r.reasons}}}function ph(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(ca(o)===null)return;if(Se(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 ca(e){return e.right.type==="KINTONE_FUNC"&&je(e.right.name)?e.right.name:e.right.type==="IN_LIST"&&e.right.values.length===1&&e.right.values[0].type==="KINTONE_FUNC"&&je(e.right.values[0].name)?e.right.values[0].name:null}function si(e){let t=[],n=r=>{if(r.type==="BINARY"&&ca(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 dh(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 fh(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 la(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=la(e.left,t,n),i=la(e.right,t,n);return r!==null&&i!==null?{...e,left:r,right:i}:r??i}case"GROUP":{let r=la(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 ua(e,t){if(e.type==="BINARY"&&t.has(e))return ai;switch(e.type){case"LOGICAL":{if(e.op!=="AND")return e;let n=ua(e.left,t)??ai,r=ua(e.right,t)??ai;return sa(n)?sa(r)?null:r:sa(r)?n:n===e.left&&r===e.right?e:{...e,left:n,right:r}}case"GROUP":{let n=ua(e.expr,t)??ai;return sa(n)?ai:n===e.expr?e:{...e,expr:n}}case"BINARY":case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return e}}function sa(e){return e.type==="BOOLEAN"&&e.value}function Eh(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 Rh(e,t){let n=new Map;for(let r of t){if(!cr.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 K=class extends Error{constructor(t){super(`ImportSourceError: ${t}`),this.name="ImportSourceError"}};function _f(e,t){if(!t)throw new K("IMPORT source capability is not available.");let n=t(e);if(!n)throw new K(`source "${e}" is not supplied.`);return n}async function pa(e,t){let n=t.get(e);return n||(n=e.load().then(r=>{if(!(r.bytes instanceof Uint8Array))throw new K("loader must return Uint8Array bytes.");if(r.bytes.byteLength>10485760)throw new K("source exceeds the 10485760 byte limit.");return r}),t.set(e,n)),n}function gh(e,t){try{return new TextDecoder(t==="sjis"?"shift_jis":"utf-8",{fatal:!0}).decode(e).replace(/^\uFEFF/,"")}catch{throw new K(`invalid ${t.toUpperCase()} byte sequence.`)}}function yh(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
|
|
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 Ce("\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 Zs(e){let t=e.codePointAt(0);return t>=65&&t<=90||t>=97&&t<=122||t===95||t===36||cm(t)}function td(e){let t=e.codePointAt(0);return Zs(e)||t>=48&&t<=57}function Yn(e){let t=e.codePointAt(0);return t>=48&&t<=57}function cm(e){return e>=12352&&e<=12543||e>=13312&&e<=40959||e>=63744&&e<=64255||e>=65281&&e<=65376}var rd=20,tl=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"]),vr=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"}),jb=Object.freeze(Object.values(vr).filter(e=>e!==void 0)),pm=Object.freeze(["COUNT","SUM","AVG","MAX","MIN"]),dm=new Set(pm);function fm(e){return dm.has(e)}var ad=Object.freeze({ROW_NUMBER:"ROW_NUMBER",RANK:"RANK",DENSE_RANK:"DENSE_RANK"}),Ur=Object.freeze({TODAY:"TODAY",NOW:"NOW",LOGINUSER:"LOGINUSER",PRIMARY_ORGANIZATION:"PRIMARY_ORGANIZATION"});function id(e){return Ur[e]!==void 0}var Em=Object.freeze([...eo]),Rm=new Set(["DAYS","WEEKS","MONTHS","YEARS"]),gm=new Set(["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"]);function ym(e){return Rm.has(e)}function mm(e){return gm.has(e)}function Am(e){return Number.isInteger(e)&&e>=1&&e<=31}var qb=Object.freeze(Array.from(new Set([...Object.keys(tl),...od,...Object.keys(vr),...Object.keys(ad),...Object.keys(Ur),...Em,"IF"]))),hm=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 Sm(e,t){return e.kind==="("||e.kind==="."||t.kind===")"||t.kind===","||t.kind==="."?!1:t.kind==="("?!hm.has(e.kind):!0}var I=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"}},el=["\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
|
+
`),jt=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.allowSelectArithVariable=!1}parse(){let t=this.parseStatements();if(t.length===0)throw new I("SQL \u6587\u304C\u3042\u308A\u307E\u305B\u3093",this.peek());if(t.length>1)throw new I("\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 I(`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>rd)throw new I(`batch exceeds ${rd} statements.`,n);let r=this.peek();if(r.kind!==";"&&r.kind!=="EOF")throw new I("\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 I("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 I("IMPORT is not supported (capability is disabled).",t);return this.parseImport()}break}default:break}throw new I("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 I("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=Ur[t.kind];if(n==="TODAY"||n==="NOW")return this.parseSqlValue();if(t.kind==="IDENT"&&this.peekAt(1).kind==="("&&te(t.value.toUpperCase()))return this.parseRelativeDateFunction();throw new I("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 I(`${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 I(`${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 I("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 I("\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 I("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=Ur[r.kind];if(i==="LOGINUSER")throw new I(`${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 I(`${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 I(`${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 I(`${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 I(`${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 I("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 I(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 I("\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 I("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}=Tt(t,this.prev());if(r)throw new I("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 I("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 I("IMPORT is not supported (capability is disabled).",t);n=this.parseImport()}else throw new I("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}=Tt(n,this.prev());if(i)throw new I("IMPORT does not support subtables in Phase 1.",this.prev());this.expect("(");let o=[],a=[],s=new Set;for(;;){let w=this.parseIdentifier();if(s.has(w))throw new I(`IMPORT target ${w} is declared more than once.`,this.prev());if(s.add(w),this.peek().kind==="("){this.advance();let P=this.parseIdentList();if(this.expect(")"),new Set(P).size!==P.length)throw new I(`IMPORT subtable ${w} contains duplicate child declarations.`,this.prev());let T;if(this.isSoftKeyword("ROW")){this.advance();for(let L of["ID","SOURCE"]){if(!this.isSoftKeyword(L))throw new I("ROW must be followed by ID SOURCE <header>.",this.peek());this.advance()}T=this.parseIdentifier()}o.push({kind:"SUBTABLE",subtableCode:w,children:P,...T?{rowIdSourceHeader:T}:{}})}else a.push(w),o.push({kind:"FIELD",field:w});if(this.peek().kind!==",")break;this.advance()}if(this.expect(")"),this.expect("FROM"),!this.isSoftKeyword("CSV")&&!this.isSoftKeyword("JSON"))throw new I("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 I("JSON source is UTF-8 only; ENCODING is not allowed.",this.peek());this.advance();let w=this.parseIdentifier().toUpperCase();if(w!=="UTF8"&&w!=="SJIS")throw new I("ENCODING must be UTF8 or SJIS.",this.prev());p=w==="UTF8"?"utf8":"sjis"}if(this.peek().kind==="NOT"&&this.peekAt(1).kind==="IDENT"&&this.peekAt(1).value.toUpperCase()==="HEADER"){if(l==="JSON")throw new I("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 I("NO HEADER is CSV-only.",this.peek());this.advance(),this.advance(),u=!1}if(this.isSoftKeyword("COLUMNS")){if(l==="JSON")throw new I("COLUMNS is CSV-only.",this.peek());if(u)throw new I("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 I("SELECT projection is CSV-only.",this.peek());if(f=this.parseSelect(),f.from.cteName!==Je||f.joins.length>0)throw new I("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 I("IMPORT projection supports SELECT expressions only.",this.prev());if(this.validateImportProjectionScope(f,this.prev()),o.some(w=>w.kind==="SUBTABLE"))throw new I("IMPORT subtable sources cannot use SELECT projection.",this.prev());if(f.columns.length!==a.length)throw new I(`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 I("BY NAME is CSV-only.",this.peek());if(this.advance(),!this.isSoftKeyword("NAME"))throw new I("BY must be followed by NAME in IMPORT.",this.peek());if(this.advance(),!u)throw new I("BY NAME requires HEADER.",this.prev());if(f)throw new I("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 I("IGNORE must be followed by UNKNOWN COLUMNS.",this.peek());if(this.advance(),!this.isSoftKeyword("COLUMNS"))throw new I("IGNORE UNKNOWN must be followed by COLUMNS.",this.peek());this.advance(),E=!0}}let g,y;if(this.isSoftKeyword("MATCH")){this.advance();for(let w of["RECORD","NUMBER","SOURCE"]){if(!this.isSoftKeyword(w))throw new I("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"&&(g=this.parseOnDuplicate());let m;if(this.peek().kind==="REPLACE"||this.isSoftKeyword("REPLACE")){if(this.advance(),!this.isSoftKeyword("SUBTABLES"))throw new I("REPLACE must be followed by SUBTABLES (...).",this.peek());if(this.advance(),this.expect("("),m=this.parseIdentList(),this.expect(")"),new Set(m).size!==m.length)throw new I("REPLACE SUBTABLES contains duplicates.",this.prev())}let h=o.filter(w=>w.kind==="SUBTABLE");if(h.length){if(f)throw new I("IMPORT subtables cannot use SELECT projection.",this.prev());if(l==="JSON"){if(h.some(w=>w.rowIdSourceHeader))throw new I("JSON subtable IMPORT does not accept ROW ID SOURCE.",this.prev());if(m)throw new I("REPLACE SUBTABLES is CSV-only; JSON uses nested-array replacement semantics.",this.prev())}else{if(t!=="UPDATE_RECORD_NUMBER"||!y)throw new I("CSV subtable IMPORT requires IMPORT UPDATE and MATCH RECORD NUMBER SOURCE.",this.prev());if(R!=="BY_NAME")throw new I("CSV subtable IMPORT requires BY NAME.",this.prev());if(!m)throw new I("CSV subtable IMPORT requires REPLACE SUBTABLES (...).",this.prev());let w=new Set(m);for(let P of h){if(!P.rowIdSourceHeader)throw new I(`CSV subtable ${P.subtableCode} requires ROW ID SOURCE <header>.`,this.prev());if(!w.has(P.subtableCode))throw new I(`IMPORT declares child columns for non-replaced subtable ${P.subtableCode}.`,this.prev())}for(let P of w)if(!h.some(T=>T.subtableCode===P))throw new I(`REPLACE SUBTABLES target ${P} is not declared in INTO.`,this.prev())}}else if(m)throw new I("REPLACE SUBTABLES requires subtable targets in INTO.",this.prev());if(t){if(l!=="CSV")throw new I("IMPORT UPDATE supports CSV only.",this.prev());if(R!=="BY_NAME")throw new I("IMPORT UPDATE requires BY NAME.",this.prev());if(!y)throw new I("IMPORT UPDATE requires MATCH RECORD NUMBER SOURCE <header>.",this.peek());if(g)throw new I("IMPORT UPDATE and ON DUPLICATE are mutually exclusive.",this.prev())}else if(y)throw new I("MATCH RECORD NUMBER SOURCE requires IMPORT UPDATE.",this.prev());let A=this.parseCheckGroups(),b=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}:{},...m?{replaceSubtables:m}:{},...g?{keyFields:g}:{},...A,...b}}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 I("IMPORT projection cannot use subqueries.",n);if(typeof r.tableAlias=="string")throw new I("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}=Tt(n,this.prev());if(i)throw new I(`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 I("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 I("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 I("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 I("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 I("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 I("\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 I("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 I("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 I("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 I(`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 I("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 I("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&&Sm(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:Je},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 I("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 I("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 I("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"),g=r.some(y=>this.selectColumnHasAggregate(y));if(E&&(l.length>0||c!==void 0||g))throw new I("\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 I("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=[];do{let r=this.parseIdentifier();this.expect("AS"),this.expect("(");let i,o=this.peek().kind;o==="SHOW"?i=this.parseShow():o==="DESCRIBE"||o==="DESC"?i=this.parseDescribe():o==="IDENT"&&this.peek().value.toUpperCase()==="GENERATE_SERIES"?i=this.parseGenerateSeries():i=this.tryParseUnionChain(this.parseSelect()),this.expect(")"),t.push({name:r,query:i}),this.cteNames.add(r)}while(this.consume(","));let n=this.tryParseUnionChain(this.parseSelect());return this.cteNames.clear(),{type:"WITH",ctes:t,query:n}}parseGenerateSeries(){let t=this.advance();if(t.kind!=="IDENT"||t.value.toUpperCase()!=="GENERATE_SERIES")throw new I("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 I("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(me(`${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 I("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 I("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 I(el,this.peek());if(this.isNonAggregateArithmeticStartWithAggregate())throw new I(`\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 I("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 I("_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 ad[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(vr[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 I(`${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 I("\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 I(`${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 I(`${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 I(el,this.peek());if(!this.consume("AS"))throw new I("\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 I(`${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 I("\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 I("\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 I("\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 I(el,this.peek());if(!this.consume("AS"))throw new I("\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"?me(`-${j(n)}`):{type:"AGG_ARITH",left:me("0"),op:"-",right:n}}if(this.peek().kind==="NUMBER"){let n=this.advance();return me(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 I("\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),vr[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 I("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 I(`\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 I(`\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 I("\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 I("\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 I("\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 me(`${n.kind==="-"?"-":"+"}${j(r)}`);if(n.kind==="+")throw new I("\u5358\u9805 + \u306E\u76F4\u5F8C\u306B\u306F\u6570\u5024\u30EA\u30C6\u30E9\u30EB\u304C\u5FC5\u8981\u3067\u3059",n);return{type:"SCALAR_ARITH",left:me("0"),op:"-",right:r}}if(n.kind==="STRING")return this.advance(),{type:"STRING",value:n.value};if(n.kind==="NUMBER")return this.advance(),me(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 I("\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 I(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 I("\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 me(`+${n.value}`)}if(this.peek().kind==="-"){if(this.advance(),this.peek().kind==="-"||this.peek().kind==="+")throw new I("\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"?me(`-${j(n)}`):{type:"ARITH",left:me("0"),op:"-",right:n}}if(this.tryStringFuncName()!==null)return this.parseStringFuncExpr();let t=this.peek();if(t.kind==="NUMBER")return this.advance(),me(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 I("\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 I("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 I("\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=tl[this.peek().kind];if(n==="LEFT"||n==="RIGHT")return n}let t=tl[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 I(`\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 I))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 I(`${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 I("\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=Tm(n);if(r===null)throw new I(`\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 vr[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 I("MODE \u3067\u306F DISTINCT \u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093",r);let i;if(this.consume("*")){if(!fm(t))throw new I(`${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 I("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 I){if(r.message.includes("\u6BD4\u8F03\u30FB\u8FF0\u8A9E"))throw new I("\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 I("\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 I("\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 I("\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 I("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};let{appId:r,subtableCode:i}=Tt(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 I("\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();this.expect("ON");let i=this.parseJoinCondition();t.push({type:n,table:r,on:i})}return t}tryJoinType(){return this.consume("INNER")?(this.expect("JOIN"),"INNER"):this.consume("LEFT")?(this.expect("JOIN"),"LEFT"):this.consume("RIGHT")?(this.expect("JOIN"),"RIGHT"):this.consume("JOIN")?"INNER":null}parseJoinCondition(){let t=this.parseQualifiedIdent();this.expect("=");let n=this.parseQualifiedIdent();return{left:t,right:n}}parseQualifiedIdent(){let t=this.parseIdentifier();if(this.consume(".")){if(this.peek().kind==="*")throw new I("\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 I("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 I("\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 I("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 I(`\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 I("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){if(this.groupingFieldContext==="FORBIDDEN"||this.insideAggregateArg>0)throw new I("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 I("\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:Re(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 me(`+${r.value}`)}return this.allowRelativeDateFunctions&&n.kind==="IDENT"&&this.peekAt(1).kind==="("&&te(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 I("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 I("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 I("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(!ym(l))throw new I("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(!mm(o))throw new I(`${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(!Am(o))throw new I(`${n} \u306E\u65E5\u306F 1 \u304B\u3089 31 \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,i);r=o}else throw new I(`${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 I(`\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(id(t.kind))return this.advance(),this.expect("("),this.expect(")"),{type:"KINTONE_FUNC",name:Ur[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 I("\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 I("\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(me(i.value));else if(i.kind==="-"||i.kind==="+"){let o=this.peek();if(o.kind!=="NUMBER")throw new I(n,i);this.advance();let a=i.kind==="-"?"-":"+";t.push(me(`${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 I(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 I(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 I(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 I(o,this.peek())}else throw new I(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 I("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 I("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 I("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 I("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 I("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 I("B65: CUBE requires at least one field.",this.peek());let t=[];do t.push(this.parseGroupingFieldItem());while(this.consume(","));this.expect(")");let n=Wc(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 I("B65: GROUPING() requires exactly one physical field argument.",this.peek());let n=this.parseQualifiedIdent();if(this.peek().kind!==")")throw new I("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 I("\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 I("B65: GROUPING_ID is not supported in Phase1.",this.peek());if(this.isGroupingFunctionStart()){if(!t)throw new I("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}=Tt(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 I("INSERT INTO ... SELECT \u306F APPLY \u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u305B\u3093",this.prev());if(r)throw new I("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 I("APPLY SUBTABLE noun is not supported; use APPLY <field> (...)",this.peek());if(a.length>0&&this.isSoftKeyword("CHECK"))throw new I("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 I("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 I("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 I("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 I("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}=Tt(t,this.prev());if(r)throw new I("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 I("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 I("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 I("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 I("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 I("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 I("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 I("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 I(`ON ${i?"INSERT":"UPDATE"} APPLY \u306F 1 \u56DE\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059`,r);if(!this.isApplyBlockStart())throw new I(`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 I("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(me(`${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(me(r.value));else throw new I("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 I(`\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}=Tt(t,this.prev());this.expect("SET");let i=this.parseAssignments();if(r&&i.some(d=>d.value.type==="STRING_FUNC"))throw new I("\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 I("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 I("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 I("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 I(`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 I("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 I("APPLY SUBTABLE noun is not supported; use APPLY <field> (...)",this.peek());if(l.length>0&&this.peek().kind==="WHERE")throw new I("\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 I("\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 I("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 I("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 I("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 I("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 I("APPLY \u306F VALIDATE ONLY \u3088\u308A\u524D\u306B\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",this.peek());if(r&&c.checkGroups)throw new I("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 I("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 I("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 I("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 I("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 I("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 I("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 I("ALL \u306E\u5F8C\u306B\u306F ROWS \u304C\u5FC5\u8981\u3067\u3059",this.peek());return this.advance(),{kind:"ALL_ROWS"}}throw new I("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 I("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 I("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 I("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 I("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 I("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 I("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 I("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 I("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 I("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 I("ON \u306E\u5F8C\u306B\u306F ERROR \u304C\u5FC5\u8981\u3067\u3059",this.peek());if(this.advance(),!this.isSoftKeyword("SKIP"))throw new I("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 I("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 I("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 I("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 I("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 I("\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 I("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 I(`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 I("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 I("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 I("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 I("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 I("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 I(`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 I("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(id(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 I("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 I("\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}=Tt(t,this.prev()),i=this.peek();if(!this.consume("WHERE"))throw new I("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}=Tt(n,this.prev());if(!i)throw new I("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 I("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 I("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 I("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 I(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 I("\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 I("\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u540D\uFF08# \u3067\u59CB\u307E\u308B\u540D\u524D\uFF09\u306F FROM / JOIN / CREATE / DROP TEMP TABLE \u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059",t);return this.advance(),t.value}throw new I("\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u307E\u305F\u306F\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}parseTableName(){let t=this.peek();if(t.kind==="IDENT"||t.kind==="BIDENT")return this.advance(),t.value;throw new I("\u30D5\u30A3\u30FC\u30EB\u30C9\u540D\u307E\u305F\u306F\u30C6\u30FC\u30D6\u30EB\u540D\u304C\u5FC5\u8981\u3067\u3059",t)}rejectTempTableDml(){let t=this.peek();if(t.kind==="IDENT"&&t.value.startsWith("#"))throw new I(`DML on temp table ${t.value} is not supported.`,t)}parseAliasName(){let t=this.peek();if(t.value.startsWith("#"))throw new I("\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"||Mo.has(t.value.toUpperCase()))return this.advance(),{alias:t.value.toLowerCase(),display:t.value};throw new I("\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 Tm(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 Tt(e,t){let n=e.match(/^[Aa][Pp][Pp](\d+)(?:\$(.+))?$/);if(!n)throw new I(`\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 qt(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 Im(e,t){return e<t?-1:e>t?1:0}function sd(e){if(e==="")return{band:0};let t=he(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 wm(e,t){let n=sd(e),r=sd(t);return n.band!==r.band?n.band<r.band?-1:1:n.band===2&&r.band===2?qi(n.value,r.value):n.band===5&&r.band===5?qt(n.value,r.value):0}function ld(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 bm(e,t,n){let r=ld(e,n),i=ld(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=qt(r.normalizedId,i.normalizedId);return o!==0?o:qt(r.display,i.display)}function Nm(e,t){if(e==="")return[];if(t!=="CHECK_BOX"&&t!=="MULTI_SELECT")return[e];try{let n=JSON.parse(e);return Array.isArray(n)?n.map(r=>String(r??"")):[e]}catch{return[e]}}function ud(e,t){let n=t.optionOrder??new Map,i=[...new Set(Nm(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(cd),i}function cd(e,t){return e.knownBand!==t.knownBand?e.knownBand<t.knownBand?-1:1:e.rank!==t.rank?e.rank<t.rank?-1:1:qt(e.label,t.label)}function Pm(e,t,n){let r=ud(e,n),i=ud(t,n),o=Math.min(r.length,i.length);for(let a=0;a<o;a++){let s=cd(r[a],i[a]);if(s!==0)return s}return r.length<i.length?-1:r.length>i.length?1:0}function Ze(e,t,n){switch(n.compareMode){case"string":return qt(e,t);case"number":return wm(e,t);case"recordNumber":return bm(e,t,n.fieldType==="RECORD_NUMBER");case"option":return Pm(e,t,n);case"unsupported":throw new Error(`ArgumentError: values of type ${n.fieldType} cannot be compared.`)}}function un(e,t,n,r=K("string")){let i=Ze(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 pd(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=he(o),l=he(a),c=s!==null&&l!==null?qi(s,l):Im(Number(o),Number(a));if(c!==0)return c}return qt(o,a)};return n.reduce((o,a)=>{let s=i(a,o);return t==="greatest"?s>0?a:o:s<0?a:o})}function ce(e,t){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(ke(t,e.field));if(e.type==="STRING_FUNC")return Number(pe(e,t));let n=ce(e.left,t),r=ce(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 Te(e,t,n,r){switch(e.type){case"STRING":return e.value;case"NUMBER":return e.value;case"FIELD":return ke(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 pe(e,t,n,r);case"CASE_WHEN":return Me(e,t,n,r);case"CONCAT_OP":return pe({type:"STRING_FUNC",func:"CONCAT",args:[e.left,e.right]},t,n,r);case"SCALAR_ARITH":{let i=Number(Te(e.left,t,n,r)),o=Number(Te(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 It(e,t,n,r){switch(e.type){case"CASE_WHEN":return Rd(e,t,n,r);case"SCALAR_ARITH":{let i=It(e.left,t,n,r),o=It(e.right,t,n,r);if(i===null||o===null)return null;let a=Number(i),s=Number(o);switch(e.op){case"+":return a+s;case"-":return a-s;case"*":return a*s;case"/":return s!==0?a/s:NaN;case"%":return s!==0?a%s:NaN}}case"CONCAT_OP":{let i=It(e.left,t,n,r),o=It(e.right,t,n,r);return`${i??""}${o??""}`}default:return Te(e,t,n,r)}}function Fo(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 Cm(e){return e>=55296&&e<=56319}function Om(e){return e>=56320&&e<=57343}function Go(e,t){return t>0&&t<e.length&&Cm(e.charCodeAt(t-1))&&Om(e.charCodeAt(t))}function dd(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 rl(e,t){let n=Math.min(Math.max(0,t),e.length);return Go(e,n)&&(n-=1),e.slice(0,n)}function Lm(e,t){let n=Math.max(0,e.length-t);return Go(e,n)&&(n+=1),e.slice(n)}function _m(e,t,n){let r=dd(t,e.length),i=dd(n,e.length);return i<=r?"":(Go(e,r)&&(r+=1),Go(e,i)&&(i-=1),e.slice(r,Math.max(r,i)))}function Dm(e,t){let n=e.repeat(Math.ceil(t/e.length));return rl(n,t)}var vm=200,kr=new Map;function Um(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 nl(e,t,n=!1){let r=Um(t)+(n?"g":""),i=`${e}\0${r}`,o=kr.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(kr.size>=vm){let s=kr.keys().next().value;s!==void 0&&kr.delete(s)}return kr.set(i,a),a}function km(e){if(e.includes("$`")||e.includes("$'"))throw new Error("ArgumentError: REGEXP_REPLACE replacement must not contain $` or $'.")}function Mm(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 Fm(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 xm(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 Fm(n,o,p,l?s:void 0)})}function pe(e,t,n,r){vo(e.func,e.args);let i=e.args.map(o=>Ym(o,t,n,r));switch(e.func){case"UPPER":return(i[0]??"").toUpperCase();case"LOWER":return(i[0]??"").toLowerCase();case"TRIM":return(i[0]??"").trim();case"LTRIM":return(i[0]??"").trimStart();case"RTRIM":return(i[0]??"").trimEnd();case"LENGTH":return String((i[0]??"").length);case"LENGTH_CHAR":return String([...i[0]??""].length);case"SUBSTRING":{let o=i[0]??"",a=Math.max(0,Number(i[1]??"1")-1),s=i[2]!==void 0?Number(i[2]):void 0;return _m(o,a,s!==void 0?a+s:o.length)}case"LEFT":{let o=i[0],a=Math.trunc(Number(i[1]));return Number.isNaN(a)||a<=0?"":rl(o,a)}case"RIGHT":{let o=i[0],a=Math.trunc(Number(i[1]));return Number.isNaN(a)||a<=0?"":Lm(o,a)}case"INSTR":return String(i[0].indexOf(i[1])+1);case"LPAD":case"RPAD":{let o=i[0],a=Math.trunc(Number(i[1]));if(Number.isNaN(a)||a<=0)return"";if(o.length>=a)return rl(o,a);let s=i[2]??" ";if(s==="")return o;let l=Dm(s,a-o.length);return e.func==="LPAD"?l+o:o+l}case"GREATEST":case"LEAST":return pd(i,e.func==="GREATEST"?"greatest":"least");case"CONCAT":return i.join("");case"REPLACE":{let o=i[0]??"",a=i[1]??"",s=i[2]??"";return a===""?o:o.split(a).join(s)}case"REGEXP_LIKE":return nl(i[1],i[2]??"").test(i[0])?"1":"0";case"REGEXP_REPLACE":{km(i[2]);let o=Mm(i[4]),a=nl(i[1],i[3]??"",!0);return o===0?i[0].replace(a,i[2]):xm(i[0],a,i[2],o)}case"REGEXP_SUBSTR":return nl(i[1],i[2]??"").exec(i[0])?.[0]??"";case"TRANSLATE":{let o=[...i[1]],a=[...i[2]];if(o.length!==a.length)throw new Error(`ArgumentError: TRANSLATE \u306E from \u3068 to \u306F\u540C\u3058\u6587\u5B57\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF08from=${o.length}, to=${a.length}\uFF09`);let s=new Map;return o.forEach((l,c)=>{s.has(l)||s.set(l,a[c])}),[...i[0]].map(l=>s.get(l)??l).join("")}case"COALESCE":return i.find(o=>o!=="")??"";case"NULLIF":return(i[0]??"")===(i[1]??"")?"":i[0]??"";case"ISNULL":return(i[0]??"")!==""?i[0]??"":i[1]??"";case"ROUND":return Fo("round",Number(i[0]??"0"),Number(i[1]??"0"));case"FLOOR":return Fo("floor",Number(i[0]??"0"),Number(i[1]??"0"));case"CEIL":return Fo("ceil",Number(i[0]??"0"),Number(i[1]??"0"));case"TRUNCATE":return Fo("trunc",Number(i[0]),Number(i[1]??"0"));case"CAST":{let o=i[0]??"";if((i[1]??"TEXT")==="NUMBER"){let s=Number(o);return isNaN(s)?o:String(s)}return o}case"FORMAT":{let o=Number(i[0]??"0"),a=i[1]??"0";return Wm(o,a)}case"YEAR":{let o=i[0]??"";return o.length>=4?String(parseInt(o.slice(0,4),10)):""}case"MONTH":{let o=i[0]??"";return o.length>=7?String(parseInt(o.slice(5,7),10)):""}case"DAY":{let o=i[0]??"";return o.length>=10?String(parseInt(o.slice(8,10),10)):""}case"DAYOFWEEK":return xo(i[0])?String(il(i[0])+1):"";case"QUARTER":return xo(i[0])?String(Math.ceil(Number(i[0].slice(5,7))/3)):"";case"WEEK":return xo(i[0])?String(Ed(i[0])):"";case"DATE_FORMAT":return Km(i[0]??"",i[1]??"");case"DATEDIFF":return Bm(i[0]??"",i[1]??"");case"DATE_ADD":return $m(i[0]??"",Number(i[1]??"0"),(i[2]??"DAY").toUpperCase());case"LAST_DAY":return Vm(i[0]);case"ABS":return String(Math.abs(Number(i[0]??"0")));case"MOD":{let o=Number(i[0]??"0"),a=Number(i[1]??"0");return String(a!==0?o%a:NaN)}case"POWER":return String(Math.pow(Number(i[0]??"0"),Number(i[1]??"0")));case"SQRT":return String(Math.sqrt(Number(i[0]??"0")));case"CURRENT_DATE":{let o=new Date,a=o.getFullYear(),s=String(o.getMonth()+1).padStart(2,"0"),l=String(o.getDate()).padStart(2,"0");return`${a}-${s}-${l}`}case"CURRENT_TIMESTAMP":return new Date().toISOString()}}function Mr(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 Ko(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 xo(e){let t=e.slice(0,10);if(!/^\d{4}-\d{2}-\d{2}$/.test(t))return!1;let n=Ko(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 il(e){return Ko(e).getUTCDay()}function fd(e){let t=Ko(e),n=t.getUTCDay()||7;return t.setUTCDate(t.getUTCDate()+4-n),t}function Gm(e){return fd(e).getUTCFullYear()}function Ed(e){let t=fd(e),n=t.getUTCFullYear(),r=Ko(`${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 Km(e,t){if(!e||e.length<10)return"";let{y:n,mo:r,d:i,h:o,mi:a,sec:s}=Mr(e),l=xo(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(il(e)):"";case"%a":return l?["\u65E5","\u6708","\u706B","\u6C34","\u6728","\u91D1","\u571F"][il(e)]:"";case"%v":return l?String(Ed(e)).padStart(2,"0"):"";case"%G":return l?String(Gm(e)).padStart(4,"0"):"";default:return c}})}function Bm(e,t){if(e.length<10||t.length<10)return"0";let n=Mr(e),r=Mr(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 $m(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}=Mr(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 Vm(e){if(!e||e.length<10)return e;let{y:t,mo:n}=Mr(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 Wm(e,t){if(/^-?\d+$/.test(t.trim()))return Hm(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 Hm(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 Ym(e,t,n,r){return e.type==="AGG_REF"||e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"?String(Fr(e,t)):e.type==="NUMBER"?j(e):String(Te(e,t,n,r))}function Fr(e,t){if(e.type==="NUMBER")return e.value;if(e.type==="AGG_REF")return t[Re(e.func,e.distinct,e.arg)]??"";if(e.type==="AGG_GROUP_KEY"){let i=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return Number(ke(t,i))}if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved aggregate arithmetic variable @${e.name}.`);let n=Number(Fr(e.left,t)),r=Number(Fr(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 ke(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 oe(e,t,n,r,i){switch(e.type){case"BOOLEAN":return e.value;case"BINARY":return jm(e,t,n,r,i);case"NULL_CHECK":return Zm(e,t);case"LOGICAL":return eA(e,t,n,r,i);case"NOT":return!oe(e.expr,t,n,r,i);case"GROUP":return oe(e.expr,t,n,r,i);case"EXISTS":{let o=e.resolved;return e.not?!o:o}}}function jm(e,t,n,r,i){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 o=Id(e.left,t,n,i),a=e.left.type==="FIELD"?n?.(e.left):void 0,s=zm(e.left,a,i);return qm(e.op,o,e.right,t,a,n,s,i)}function qm(e,t,n,r,i,o,a=K("string"),s){if(e==="IN"||e==="NOT_IN"){let c=null;if(n.type==="IN_LIST"&&(Qm(n.values),c=new Set(n.values.map(u=>u.type==="NUMBER"?i==="NUMBER"?j(u):String(u.value):u.value))),n.type==="SUBQUERY_IN_LIST"&&(c=n.resolved),c===null)return e==="NOT_IN";let p=Xm(t,c,i);return e==="IN"?p:!p}if(e==="LIKE"){let c=ol(n,r,o);return Td(t,c)}if(e==="NOT_LIKE"){let c=ol(n,r,o);return!Td(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 l=ol(n,r,o,s);return un(e,t,l,a)}var gd=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function zm(e,t,n){if(e.type==="FIELD")return n?.(e)??(t?X({fieldType:t}):K("string"));if(e.type==="ARITH_FIELD"||e.type==="AGG_FIELD")return K("number");if(e.type==="FUNC_FIELD")return K(gd.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 K("number");if(o.type==="STRING_FUNC")return K(gd.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)??K("string")}return K("string")});if(i.length>0&&i.every(o=>o.compareMode===i[0].compareMode))return i[0]}return e.type==="GROUPING_FIELD"?K("number"):K("string")}var yd=new Set(["CHECK_BOX","MULTI_SELECT"]),md=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","STATUS_ASSIGNEE"]),Jm=new Set(["CREATOR","MODIFIER"]);function Xm(e,t,n){let r=()=>t.has(e);if(n===void 0)return r();if(n==="NUMBER"){let o=K("number");return[...t].some(a=>un("=",e,a,o))}let i;if(yd.has(n)||md.has(n)||Jm.has(n))try{i=JSON.parse(e)}catch{return r()}else return r();return yd.has(n)?!Array.isArray(i)||!i.every(o=>typeof o=="string")?r():i.length===0&&t.has("")?!0:i.some(o=>t.has(o)):md.has(n)?!Array.isArray(i)||!i.every(Ad)?r():i.length===0&&t.has("")?!0:i.some(o=>t.has(o.code)):Ad(i)?t.has(i.code):r()}function Ad(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&typeof e.code=="string"}function Qm(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}: ${At}`)}function Zm(e,t){let n=Id(e.field,t);return e.not?n!=="":n===""}function eA(e,t,n,r,i){return e.op==="AND"?oe(e.left,t,n,r,i)&&oe(e.right,t,n,r,i):oe(e.left,t,n,r,i)||oe(e.right,t,n,r,i)}function Id(e,t,n,r){if(e.type==="FUNC_FIELD")return pe(e.expr,t);if(e.type==="AGG_FIELD")return String(Fr(e.expr,t));if(e.type==="ARITH_FIELD")return String(ce(e.expr,t));if(e.type==="CASE_FIELD")return Me(e.expr,t,n,r);if(e.type==="GROUPING_FIELD")return Kn(e.ref,t);let i=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return ke(t,i)}function ol(e,t,n,r){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 j(e);case"KINTONE_FUNC":return tA(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"?ke(t,e.expr.field):e.expr.type==="STRING_FUNC"?pe(e.expr,t):String(ce(e.expr,t));case"CASE_VALUE":return Me(e.expr,t,n,r);case"ARRAY":return e.elements.map(i=>i.value).join(",")}}function Me(e,t,n,r){for(let i of e.branches)if(oe(i.condition,t,n,void 0,r))return Sd(i.result,t,n,r);return e.elseResult!==null?Sd(e.elseResult,t,n,r):""}function Rd(e,t,n,r){for(let i of e.branches)if(oe(i.condition,t,n,void 0,r))return hd(i.result,t,n,r);return e.elseResult===null?null:hd(e.elseResult,t,n,r)}function hd(e,t,n,r){return e.type==="ARRAY"?e.elements.map(i=>i.value).join(","):e.type==="AGG_REF"?t[Re(e.func,e.distinct,e.arg)]??"":e.type==="AGG_ARITH"?t[st(e)]??"":e.type==="FIELD_REF"?t[e.field]??"":e.type==="ARITH"?ce(e,t):It(e,t,n,r)}function Sd(e,t,n,r){return e.type==="ARRAY"?e.elements.map(i=>i.value).join(","):e.type==="AGG_REF"?t[Re(e.func,e.distinct,e.arg)]??"":e.type==="AGG_ARITH"?t[st(e)]??"":e.type==="FIELD_REF"?t[e.field]??"":e.type==="ARITH"?String(ce(e,t)):String(Te(e,t,n,r))}function wd(e){let t=new Date;switch(e){case"TODAY":{let n=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),i=String(t.getDate()).padStart(2,"0");return`${n}-${r}-${i}`}case"NOW":return t.toISOString();case"LOGINUSER":case"PRIMARY_ORGANIZATION":return""}}function tA(e){throw te(e)?new Error(`${e}: ${nn}`):Un(e)?new Error(`${e}: ${At}`):new Error(`InternalError: unexpected KINTONE_FUNC name: ${e}`)}var Bo=new Map,nA=200;function Td(e,t){if(!op(t))return e.includes(t);let n=Bo.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"),Bo.size>=nA&&Bo.clear(),Bo.set(t,n)}return n.test(e)}function jn(e){return Nd(e)}function bd(e){return Nd(e.flatMap(t=>t.rules.map(n=>n.condition)))}function Nd(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 Ie("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 Ie("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 Ie(e){return new I(e,{kind:"EOF",value:"CHECK",pos:0})}function $o(e,t,n){let r=[];return e.forEach((i,o)=>{for(let a of i.rules){if(!oe(a.condition,t,n))continue;let s=Te(a.message,t);r.push({groupIndex:o,message:s==null?"":String(s)});break}}),r}function al(e){if(Ft(e))throw new re("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 rA=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),iA=new Set(["CHECK_BOX","MULTI_SELECT"]);function Ho(e,t=new Map){let n=e.values.map(r=>oA(e.fields,r,t));return Br(n,100).map(r=>({app:e.appId,records:r}))}function oA(e,t,n){let r={};return e.forEach((i,o)=>{let a=t[o];a.type==="CASE_VALUE"?r[i]={value:zt(a.expr,{},n.get(i))}:r[i]={value:wt(a,n.get(i))}}),r}function Gr(e){al(e.where);let t=Gd(e);return{app:e.appId,query:Y(e.where),fields:["$id",...t],totalCount:!1}}function Kr(e,t,n=new Map){let r=aA(e.assignments,n);return Br(t,100).map(i=>({app:e.appId,records:i.map(o=>({id:o,record:r}))}))}function aA(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:wt(i,t.get(r))});return n}function Ld(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 Yo(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 sl(e){al(e.where);let t=new Set;for(let{value:n}of e.assignments)n.type==="ARITH"?_d(n,t):n.type==="SCALAR_ARITH"||n.type==="CONCAT_OP"?qn(n,t):n.type==="STRING_FUNC"?ll(n,t):n.type==="CASE_VALUE"&&Dd(n.expr,t);return Gd(e).forEach(n=>t.add(n)),{app:e.appId,query:Y(e.where),fields:["$id",...t],totalCount:!1}}function _d(e,t){xr(e.left,t),xr(e.right,t)}function xr(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"?_d(e,t):e.type==="STRING_FUNC"&&ll(e,t)}function ll(e,t){for(let n of e.args)sA(n,t)}function sA(e,t){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"||e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"){Wo(e,t);return}qn(e,t)}function qn(e,t){if(e.type==="FIELD"){t.add(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field);return}if(e.type==="STRING_FUNC"){ll(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){qn(e.left,t),qn(e.right,t);return}e.type==="CASE_WHEN"&&Dd(e,t)}function Wo(e,t){if(e.type==="AGG_REF"){e.arg.type!=="WILDCARD"&&lA(e.arg,t);return}e.type==="AGG_ARITH"&&(Wo(e.left,t),Wo(e.right,t)),e.type==="AGG_GROUP_KEY"&&t.add(e.tableAlias?`${e.tableAlias}.${e.field}`:e.field)}function lA(e,t){e.type==="FIELD_REF"||e.type==="ARITH"?xr(e,t):qn(e,t)}function Pd(e,t){if(e.type!=="ARRAY"){if(e.type==="AGG_REF"||e.type==="AGG_ARITH"){Wo(e,t);return}if(e.type==="FIELD_REF"||e.type==="ARITH"){xr(e,t);return}qn(e,t)}}function Dd(e,t){for(let n of e.branches)Vo(n.condition,t),Pd(n.result,t);e.elseResult!==null&&Pd(e.elseResult,t)}function Vo(e,t){switch(e.type){case"BINARY":e.left.type==="FIELD"?t.add(e.left.field):e.left.type==="ARITH_FIELD"&&xr(e.left.expr,t);break;case"NULL_CHECK":e.field.type==="FIELD"&&t.add(e.field.field);break;case"LOGICAL":Vo(e.left,t),Vo(e.right,t);break;case"NOT":case"GROUP":Vo(e.expr,t);break;case"EXISTS":case"BOOLEAN":break}}function ul(e,t,n=new Map){let r=t.map(i=>{let o=Number(i.$id.value),a=vd(i),s={};for(let{field:l,value:c}of e.assignments)s[l]={value:cl(c,a,n.get(l),i)};return{id:o,record:s}});return Br(r,100).map(i=>({app:e.appId,records:i}))}function cl(e,t,n,r){if(e.type==="ARITH")return String(r?dl(e,r):ce(e,t));if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP")return String(Te(e,t));if(e.type==="STRING_FUNC")return pe(e,t);if(e.type==="CASE_VALUE")return zt(e.expr,t,n);if(e.type==="SOURCE_FIELD")throw new re("SOURCE_FIELD \u306F UPDATE ... FROM \u5C02\u7528\u3067\u3059");return wt(e,n)}function jo(e,t,n){if(e.type==="STRING")return e.value;if(e.type==="NUMBER")return j(e);if(e.type==="ARITH")return String(ce(e,t));if(e.type==="CASE_VALUE")return Me(e.expr,t,n);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 uA=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);function pl(e,t,n=new Map){let r=t.map(({target:i,source:o})=>{let a=Number(i.$id?.value);if(!Number.isSafeInteger(a)||a<=0)throw new re("UPDATE ... FROM \u306E\u5BFE\u8C61\u30EC\u30B3\u30FC\u30C9\u756A\u53F7\u304C\u4E0D\u6B63\u3067\u3059");let s=vd(i),l={};for(let{field:c,value:p}of e.assignments){let u=n.get(c);if(p.type==="SOURCE_FIELD"){if(uA.has(u??""))throw new re(`UPDATE ... FROM \u306E SOURCE_FIELD \u306F ${u} \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(o,p.field))throw new re(`UPDATE ... FROM \u306E\u30BD\u30FC\u30B9\u5217 ${p.field} \u304C\u5B58\u5728\u3057\u307E\u305B\u3093`);let d=o[p.field];if(typeof d!="string")throw new re(`UPDATE ... FROM \u306E SOURCE_FIELD \u306F\u30B9\u30AB\u30E9\u30FC\u5024\u306E\u307F\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059\uFF08\u5217: ${p.field}\uFF09`);if((u==="NUMBER"||u==="CALC")&&d!==""&&!Number.isFinite(Number(d)))throw new re(`\u6570\u5024\u30D5\u30A3\u30FC\u30EB\u30C9 ${c} \u306B\u5909\u63DB\u3067\u304D\u306A\u3044\u5024\u3067\u3059: ${d}`);l[c]={value:wt({type:"STRING",value:d},u)}}else{if(p.type==="STRING_FUNC")throw new re("UPDATE ... FROM \u306E SET \u3067\u306F\u6587\u5B57\u5217\u95A2\u6570\u3092\u76F4\u63A5\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");p.type==="ARITH"?l[c]={value:String(dl(p,i))}:p.type==="SCALAR_ARITH"||p.type==="CONCAT_OP"?l[c]={value:String(Te(p,s))}:p.type==="CASE_VALUE"?l[c]={value:zt(p.expr,s,u)}:l[c]={value:wt(p,u)}}}return{id:a,record:l}});return Br(r,100).map(i=>({app:e.appId,records:i}))}function vd(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,typeof n.value=="string"?n.value:JSON.stringify(n.value??"")]))}function dl(e,t){let n=Cd(e.left,t),r=Cd(e.right,t);switch(e.op){case"+":return n+r;case"-":return n-r;case"*":return n*r;case"/":if(r===0)throw new re("\u7B97\u8853\u5F0F\u3067\u30BC\u30ED\u9664\u7B97\u304C\u767A\u751F\u3057\u307E\u3057\u305F");return n/r;case"%":if(r===0)throw new re("\u7B97\u8853\u5F0F\u3067\u30BC\u30ED\u9664\u7B97\u304C\u767A\u751F\u3057\u307E\u3057\u305F");return n%r}}function Cd(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 dl(e,t);if(e.type==="STRING_FUNC")throw new re("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 re(`\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 Ud(e){return al(e.where),{app:e.appId,query:Y(e.where),fields:["$id"],totalCount:!1}}function kd(e,t){return Br(t,100).map(n=>({app:e,ids:n}))}function Md(e){return rA.has(e??"")}function cA(e){return iA.has(e??"")}function pA(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 dA(e){return!e||/^\d{4}-\d{2}-\d{2}$/.test(e)?e:e.replace(/\//g,"-")}function Fd(e,t){return Md(t)?e===""?[]:e.split(",").map(n=>({code:n.trim()})):cA(t)?e===""?[]:e.split(",").map(n=>n.trim()):t==="DATETIME"?pA(e):t==="DATE"?dA(e):e}function xd(e,t){return Md(t)?e.map(n=>({code:n})):e}function Od(e,t,n){if(e.type==="ARRAY")return xd(e.elements.map(r=>r.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"?Fd(e.value,n):e.type==="STRING_FUNC"?pe(e,t):e.type==="FIELD_REF"||e.type==="ARITH"?String(ce(e,t)):String(Te(e,t))}function Gd(e){if(!e.checkGroups)return[];let t=`app${e.appId}`.toLowerCase();return[...new Set(jn(e.checkGroups).filter(n=>n.tableAlias===null||n.tableAlias.toLowerCase()===t).map(n=>n.field).filter(n=>n!=="$id"))]}function zt(e,t,n){for(let r of e.branches)if(oe(r.condition,t))return Od(r.result,t,n);return e.elseResult!==null?Od(e.elseResult,t,n):""}function wt(e,t){let n=fl(e,t);if(!n.ok)throw new re(n.message);return n.value}function fl(e,t){try{return{ok:!0,value:fA(e,t)}}catch(n){return{ok:!1,message:n instanceof Error?n.message:String(n)}}}function fA(e,t){switch(e.type){case"VARIABLE":throw new re(`\u672A\u89E3\u6C7A\u306E\u30D0\u30C3\u30C1\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"VARIABLE_IN_LIST":throw new re(`\u672A\u89E3\u6C7A\u306E\u914D\u5217\u5909\u6570 @${e.name} \u304C\u3042\u308A\u307E\u3059`);case"STRING":return Fd(e.value,t);case"NUMBER":return j(e);case"ARRAY":return xd(e.elements.map(n=>n.value),t);case"KINTONE_FUNC":throw new re(`${e.name}() \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`);case"IN_LIST":throw new re("IN_LIST \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");case"ARITH_VALUE":throw new re("\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 re("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 re("IN (SELECT ...) \u306F INSERT / UPDATE \u306E\u5024\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093");case"SCALAR_SUBQUERY":throw new re("\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 Br(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}var re=class extends Error{constructor(t){super(t),this.name="DmlConvertError"}};var El=new Set(["CHECK_BOX","MULTI_SELECT"]),EA=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function $r(e){throw new Error(`ArgumentError: ${e}`)}function Kd(e,t,n){let r=RA(n.fieldType,e.field),i=gA(t,r,e.field),o=new Set(i),a=[],s=new Set,l=new Set;for(let y of e.operations){let m=y.value;m!==""&&(y.kind==="ADD"?(s.has(m)||a.push(m),s.add(m)):l.add(m))}for(let y of s)l.has(y)&&$r(`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 m=y.kind==="ADD"?f:R,h=!m.has(y.value);return m.add(y.value),{kind:y.kind,value:y.value,changed:y.value!==""&&h&&(y.kind==="ADD"?!o.has(y.value):o.has(y.value))}}),g=El.has(r)?u:u.map(y=>({code:y}));return{field:e.field,fieldType:r,operations:E,postImageValue:g,addedValues:p.length,removedValues:d,changedValues:p.length+d}}function RA(e,t){return El.has(e)||EA.has(e)?e:$r(`APPLY multi-value target ${t} has unsupported type ${e}.`)}function gA(e,t,n){if(!Array.isArray(e))return $r(`APPLY snapshot for ${n} must be an array.`);let r=e.map((i,o)=>El.has(t)?typeof i!="string"?$r(`APPLY snapshot for ${n} must contain string values (item ${o+1}).`):i:typeof i!="object"||i===null||typeof i.code!="string"?$r(`APPLY snapshot for ${n} must contain {code: string} values (item ${o+1}).`):i.code);return[...new Set(r.filter(i=>i!==""))]}function z(e){throw new Error(`ArgumentError: ${e}`)}function yl(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?z("APPLY parent selector must be a single positive $id."):t.right.value}function bt(e,t){let n=e.applyBlocks;if(!n?.length)return z("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)Rl(s.field,null,r),yA(s.value,r);for(let s of n){(i.has(s.field)||o.has(s.field))&&z(`APPLY has more than one block for field ${s.field}.`),e.assignments.some(u=>u.field===s.field)&&z(`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"?z(`APPLY target ${s.field} is not a SUBTABLE.`):z(`APPLY target ${s.field} does not exist as a top-level field.`);if(np(s,l.fieldType),s.targetKind==="MULTI_VALUE"){l.writable===!1&&z(`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)Rl(d.field,s.field,r,p),gl(d.value,s.field,r,p);u.selector.kind==="WHERE"&&gl(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)&&z(`APPLY APPEND specifies child ${f} more than once.`),d.add(f),Rl(f,s.field,r,p)}else u.kind==="REMOVE"&&u.selector.kind==="WHERE"&&gl(u.selector.where,s.field,r,p)}return{targetTables:i,targetMultiValueFields:o,childrenByTable:a,fieldsByCode:r}}function yA(e,t){Vr(e,n=>{if(n==="$id"||n==="$revision")return;let r=t.get(n);(!r||r.inSubtable)&&z(`APPLY parent reference ${n} is not a top-level field.`),r.fieldType==="FILE"&&z(`APPLY parent FILE reference ${n} is not supported.`)})}function Rl(e,t,n,r){(e.startsWith("_")||e.startsWith("$"))&&z(`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&&z(`APPLY child ${e} does not belong to subtable ${t}.`),z(`APPLY ${t===null?"parent field":"child"} ${e} does not exist.`)}(i.fieldType==="SUBTABLE"||i.fieldType==="FILE"||i.writable===!1)&&z(`APPLY assignment target ${e} is not writable (${i.fieldType}).`)}function gl(e,t,n,r){Vr(e,i=>{if(i==="_rid"||i==="_idx"||r.has(i))return;n.get(i)?.inSubtable&&z(`APPLY child reference ${i} does not belong to subtable ${t}.`),z(`APPLY child reference ${i} does not exist in subtable ${t}.`)})}function qo(e,t){let n=bt(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)Vr(i.value,o=>{let a=n.fieldsByCode.get(o);!a?.inSubtable&&a?.fieldType!=="FILE"&&r.add(o)});return[...r]}function zo(e,t){let n={_rid:e.id??"",_idx:String(t)};for(let[r,i]of Object.entries(e.value??{}))n[r]=Yd(i?.value);return n}function $d(e){let{statement:t,snapshot:n,fieldInfos:r}=e,i=e.metadata??bt(t,r),o=hl(n.$id?.value,"APPLY snapshot $id"),a=yl(t);return o!==a&&z(`APPLY snapshot $id ${o} does not match requested $id ${a}.`),Wd(t,n,i,o)}function Vd(e,t,n,r=bt(e,n)){let i=new Set;return t.map(o=>{let a=hl(o.$id?.value,"APPLY snapshot $id");return i.has(a)&&z(`APPLY snapshots contain duplicate parentId ${a}.`),i.add(a),Wd(e,o,r,a)})}function Wd(e,t,n,r){let i=hl(t.$revision?.value,"APPLY snapshot $revision"),o=[],a=[];for(let p of e.applyBlocks){if(p.targetKind==="MULTI_VALUE"){let N=n.targetMultiValueFields.get(p.field);N||z(`APPLY multi-value metadata for ${p.field} is missing.`),a.push(Kd(p,t[p.field]?.value,N));continue}let u=n.childrenByTable.get(p.field),d=IA(t,p.field),f=new Set;for(let N of d)N.id||z(`APPLY snapshot for ${p.field} contains a row without _rid.`),f.has(N.id)&&z(`APPLY snapshot for ${p.field} contains duplicate _rid ${N.id}.`),f.add(N.id);let R=N=>N.field==="_rid"?"SINGLE_LINE_TEXT":N.field==="_idx"?"NUMBER":u.get(N.field)?.fieldType,E=[],g=[],y=[],m=new Set,h=new Set,A=new Set,b=p.operations.some(N=>N.kind==="REMOVE");for(let[N,_]of p.operations.entries()){if(_.kind==="APPEND"){let D=ml(_,u,p.field);y.push({kind:"APPEND",addedRows:D.length}),g.push(...D);continue}if(_.kind==="REMOVE"){let D=hA(_,d,R,p.field);_.expectRows&&Bd(_.expectRows,D.length,r,p.field,N,_.kind),y.push({kind:"REMOVE",removedRows:D.length});for(let M of D){let S=d[M].id;h.has(M)&&z(`APPLY row ${S} is selected by both PATCH and REMOVE.`),A.has(M)&&z(`APPLY removes row ${S} more than once.`),A.add(M)}continue}if(_.kind!=="PATCH")continue;let F=AA(_,d,R,p.field);_.expectRows&&Bd(_.expectRows,F.length,r,p.field,N,_.kind),y.push({kind:"PATCH",matchedRows:F.length,changedRows:F.length});for(let D of F){let M=d[D];A.has(D)&&z(`APPLY row ${M.id} is selected by both PATCH and REMOVE.`),h.add(D);let S=zo(M,D);for(let O of _.assignments){let k=`${M.id}\0${O.field}`;m.has(k)&&z(`APPLY patches cell ${M.id}.${O.field} more than once.`),m.add(k),E.push({rowIndex:D,field:O.field,value:jo(O.value,S,R)})}}}let w=new Map;for(let N of E){let _=w.get(N.rowIndex)??{};_[N.field]={value:N.value},w.set(N.rowIndex,_)}let T=[...d.flatMap((N,_)=>A.has(_)?[]:[{id:N.id,value:{...N.value,...w.get(_)??{}}}]),...g],L={table:p.field,operations:y,changedSubtableRows:w.size+A.size+g.length,deletedRows:A.size,snapshotRowIds:d.map(N=>N.id),postImageRows:T};b?o.push({...L,payloadShape:"FULL_SURVIVORS",removedRowIds:d.flatMap((N,_)=>A.has(_)?[N.id]:[]),payloadRows:T.map(N=>({...N.id===void 0?{}:{id:N.id},value:N.value}))}):o.push({...L,payloadShape:"PATCH_ONLY",payloadRows:[...d.map((N,_)=>{let F=w.get(_);return F?{id:N.id,value:F}:{id:N.id}}),...g.map(N=>({value:N.value}))]})}let s=wA(t),l={};for(let p of e.assignments){let u=n.fieldsByCode.get(p.field)?.fieldType;l[p.field]={value:cl(p.value,s,u,t)}}let c={...t};Object.assign(c,l);for(let p of o)c[p.table]={value:p.postImageRows};for(let p of a)c[p.field]={value:p.postImageValue};return{app:e.appId,parentId:r,revision:i,parentRows:1,changedSubtableRows:o.reduce((p,u)=>p+u.changedSubtableRows,0),parentValues:l,postImage:c,tables:o,multiValues:a}}function Bd(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}`;z(`APPLY EXPECT ROWS mismatch for parent $id ${n}, table ${r}, operation ${i+1} (${o}): expected ${s}, actual ${t}.`)}function Jo(e,t){let n=e.tables.map(o=>{let a=t[o.table]?.value;if(!Array.isArray(a)||a.length!==o.postImageRows.length)return z(`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]]))}:z(`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}:z(`APPLY normalized post-image for ${o.field} is not an array.`)});return{...e,parentValues:r,tables:n,multiValues:i,postImage:t}}function ml(e,t,n){return e.values.map(r=>({value:mA(e,r,t,n)}))}function mA(e,t,n,r){if(t.length!==e.fields.length)return z(`APPLY APPEND for ${r} has ${t.length} values for ${e.fields.length} fields.`);let i=new Map(e.fields.map((a,s)=>[a,t[s]])),o={};for(let a of n.values()){if(a.fieldType==="FILE"||a.writable===!1)continue;let s=i.get(a.code);o[a.code]={value:s===void 0?Al(a):s.type==="CASE_VALUE"?zt(s.expr,{},a.fieldType):wt(s,a.fieldType)}}return o}function Al(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){return Hd(e.selector,t,n,r)}function hA(e,t,n,r){return Hd(e.selector,t,n,r)}function Hd(e,t,n,r){if(e.kind==="ALL_ROWS")return t.map((l,c)=>c);let i=e.where,o=t.flatMap((l,c)=>oe(i,zo(l,c),n)?[c]:[]),a=SA(i);a!==null&&o.length===0&&z(`APPLY _rid ${a} does not exist in snapshot table ${r}.`);let s=TA(i);return s!==null&&o.length===0&&z(`APPLY _idx ${s} does not exist in snapshot table ${r}.`),o}function SA(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 TA(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 IA(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:{}}}):z(`APPLY snapshot field ${t} is not a subtable value.`)}function hl(e,t){let n=Number(e);return(!Number.isSafeInteger(n)||n<=0)&&z(`${t} must be a positive integer.`),n}function wA(e){let t={};for(let[n,r]of Object.entries(e))t[n]=Yd(r?.value);return t}function Yd(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 Vr(e,t){if(Array.isArray(e)){e.forEach(r=>Vr(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))Vr(r,t)}function le(e){throw new Error(`ArgumentError: ${e}`)}function Qo(e){let t=Number(e.$revision?.value);return!Number.isSafeInteger(t)||t<=0?le("APPLY snapshot $revision must be a positive integer."):t}function Wr(e){if(!Number.isSafeInteger(e.parentId)||e.parentId<=0)return le("APPLY plan parentId must be a positive integer.");if(!Number.isSafeInteger(e.revision)||e.revision<=0)return le("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)&&le(`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)&&le(`APPLY plan contains duplicate top-level field ${i.table}.`),r.has(i.table)&&le(`APPLY plan contains duplicate table ${i.table}.`),r.add(i.table),n.add(i.table),bA(i),t[i.table]={value:i.payloadRows};return{app:e.app,records:[{id:e.parentId,revision:e.revision,record:t}]}}function jd(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 le("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 bA(e){let t=Sl(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&&le(`APPLY ${e.payloadShape} table ${e.table} contains an APPEND row without value.`);if(Sl(n,`${e.table} payload`),e.payloadShape==="PATCH_ONLY"){e.operations.some(d=>d.kind==="REMOVE")&&le(`APPLY PATCH_ONLY table ${e.table} cannot contain REMOVE.`);let p=e.payloadRows.slice(0,t.length).map(d=>d.id??"");Xo(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)&&le(`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??"");Xo(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)&&le(`APPLY PATCH_ONLY table ${e.table} post-image must place every APPEND row after snapshot rows.`);return}e.operations.some(p=>p.kind==="REMOVE")||le(`APPLY FULL_SURVIVORS table ${e.table} requires a REMOVE operation.`);let r=Sl(e.removedRowIds,`${e.table} removed`);e.deletedRows!==r.length&&le(`APPLY FULL_SURVIVORS table ${e.table} deleted row count does not match removed ids.`),e.payloadRows.length!==e.postImageRows.length&&le(`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)&&le(`APPLY FULL_SURVIVORS table ${e.table} has intersecting survivor/removed id ${p}.`);let s=t.filter(p=>!o.has(p));Xo(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??"");Xo(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))&&le(`APPLY FULL_SURVIVORS table ${e.table} must place every APPEND row after survivors.`),e.payloadRows.some(p=>p.value===void 0)&&le(`APPLY FULL_SURVIVORS table ${e.table} requires values for every survivor.`),e.payloadRows.some((p,u)=>!Tl(p.value,e.postImageRows[u]?.value))&&le(`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)))&&le(`APPLY FULL_SURVIVORS table ${e.table} does not partition every snapshot row.`)}function Sl(e,t){let n=[...e],r=new Set;for(let i of n)i||le(`APPLY ${t} contains an empty row id.`),r.has(i)&&le(`APPLY ${t} contains duplicate row id ${i}.`),r.add(i);return n}function Xo(e,t,n){(e.length!==t.length||e.some((r,i)=>r!==t[i]))&&le(n)}function Tl(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)=>Tl(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)&&Tl(n[a],r[a]))}function qd(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 zd(e){let t=e.numberPrecision;if(t==null||typeof t!="object")throw new Error("SettingsError: numberPrecision is missing from app settings.");let n=qd(t.digits,"digits",1,30),r=qd(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 Jd(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 NA=new Set(["CHECK_BOX","MULTI_SELECT"]),PA=new Set(["DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT"]);function Fe(e,t,n){if(t.fieldType==="DATE"||t.fieldType==="TIME"||t.fieldType==="DATETIME"){let i=CA(e);if(i!==""&&!OA(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=Hr(e,t.fieldType)}catch(i){let o=i instanceof Error?i.message:String(i);return{ok:!1,code:LA(t.fieldType),message:o}}if(t.required&&Zo(r))return{ok:!1,code:"ERR_REQUIRED",message:`${t.code} \u306F\u5FC5\u9808\u3067\u3059`};if(!Zo(r)&&t.fieldType==="NUMBER"){let i=String(r),o=he(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&&zi(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&&zi(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}=Jd(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(!Zo(r)&&(t.fieldType==="DATE"||t.fieldType==="TIME"||t.fieldType==="DATETIME")&&!cn(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!Zo(r)&&PA.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 CA(e){return e==null?"":ea(e)&&e.type==="NUMBER"?j(e):ea(e)&&e.type==="STRING"?e.value:typeof e=="string"||typeof e=="number"?String(e):""}function OA(e,t){if(t==="DATE")return cn(e.replace(/\//g,"-"),"DATE");if(t==="TIME")return cn(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)?cn(n.slice(0,10),"DATE")&&cn(n.slice(11),"TIME"):cn(n,"DATETIME")}function Hr(e,t){if(ea(e)){let r=fl(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(NA.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 pn(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 Zo(e){return e===""||Array.isArray(e)&&e.length===0}function LA(e){return e==="NUMBER"?"ERR_TYPE_NUMBER":"ERR_TYPE_DATE"}function cn(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)&&cn(l,"TIME")}var zn=["$err_statement","$err_operation","$err_row","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id"];function Il(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=Hr(a,s)}catch{}i.record[o]={value:l?a:c}}}}function wl(e,t,n,r,i,o,a,s=[],l=!0,c=!0,p={}){let u=new Map(i.map(g=>[g.code,g])),d=[],f=new Set,R=[];p.validateUpdateBuiltIns===!1&&Il(e,r,i);let E;for(let g of e){g.record??(g.record={});let y=c?[...g.preErrors]:[],m=[],h=[],A=g.mode==="create"||p.validateUpdateBuiltIns!==!1;for(let T of r){if(!g.payload.has(T))continue;let L=g.payload.get(T),N=u.get(T).fieldType,_=["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"].includes(N)&&Array.isArray(L)&&L.every(D=>typeof D=="object"&&D!==null&&"code"in D);if(!A)continue;let F=Fe(L,u.get(T),a);F.ok?g.record[T]={value:_?L:F.value}:m.push({field:T,code:F.code,message:F.message})}if(l&&g.mode==="create")for(let T of i){if(T.inSubtable||g.payload.has(T.code))continue;if(pn(T.defaultValue)){let N=Fe("",T,a);N.ok?T.required&&m.push({field:T.code,code:"ERR_REQUIRED",message:`${T.code} \u306F\u5FC5\u9808\u3067\u3059`}):m.push({field:T.code,code:N.code,message:N.message})}else{let N=Fe(T.defaultValue,T,a);N.ok||m.push({field:T.code,code:N.code,message:`\u65E2\u5B9A\u5024: ${N.message}`})}}if(s.length>0){let T=g.evaluationRow??Object.fromEntries([...g.payload].map(([_,F])=>[_,lt(F)])),L=g.evaluationFieldTypes,N=_=>{let F=_.tableAlias?`${_.tableAlias}.${_.field}`:_.field;return L?.get(F)??L?.get(_.field)};try{for(let _ of $o(s,T,N))h.push({field:"",code:"ERR_CHECK",message:_.message})}catch(_){E??(E=_)}}let b=T=>T.map(L=>{let N={};for(let _ of n)N[_]=lt(g.payload.get(_));return N.$err_statement=String(o),N.$err_operation=t,N.$err_row=String(g.rowNumber),N.$err_field=L.field,N.$err_code=L.code,N.$err_message=L.message,N.$err_value="",N.$err_subtable="",N.$err_subrow="",N.$err_subrow_id="",N}),w={rowNumber:g.rowNumber,preErrors:b(y),builtInErrors:b(m),checkErrors:b(h)};R.push(w);let P=[...w.preErrors,...w.builtInErrors,...w.checkErrors];P.length>0&&f.add(g.rowNumber),d.push(...P)}if(E!==void 0)throw E;return{errors:d,invalidRows:f.size,invalidRowNumbers:f,candidateResults:R}}function lt(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 Nl(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 Pl(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 _A(e){return Nl(e).length>0}function DA(e){return e.fieldType==="NUMBER"||_A(e)}function ta(e,t,n){return{subtable:e,subrow:t+1,subrowId:String(n.id??"")}}function Cl(e,t){let{topByCode:n,childrenByTable:r}=Pl(t),i=DA;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,g])=>E!==l.subtableCode&&g.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 Yr(e,t){return pn(e)?"":lt(Hr(e,t))}var vA=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]),jr=zn;function ut(e,t=["$id"]){let n=Pl(e),r=n.topLevel.filter(o=>o.fieldType!=="SUBTABLE"&&o.fieldType!=="FILE"&&!vA.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 dn(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 fn(e,t,n,r,i=1,o="UPDATE"){let a=UA(e),s=[],l=new Set,c=[...t.payloadFields,...jr],p=lt(e.$id?.value),u=(d,f,R,E)=>{l.add(i);let g={};for(let y of t.payloadFields)g[y]=y==="$id"?p:lt(e[y]?.value);g.$err_statement=String(r),g.$err_operation=o,g.$err_row=String(i),g.$err_field=d.code,g.$err_code=R.code,g.$err_message=R.message,g.$err_value=Yr(f,d.fieldType),g.$err_subtable=E?.subtable??"",g.$err_subrow=E?String(E.subrow):"",g.$err_subrow_id=E?.subrowId??"",s.push(g)};for(let d of t.topLevel){let f=e[d.code]?.value,R=Fe(f,d,n);R.ok?a[d.code]={value:Xd(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 g=0;g<R.length;g++){let y=R[g],m=E[g];for(let h of f){let A=y.value?.[h.code]?.value,b=Fe(A,h,n);b.ok?(m.value??(m.value={}),m.value[h.code]={value:Xd(A,h.fieldType,b.value)}):u(h,A,b,ta(d,g,y))}}}return{normalizedRecord:a,errors:s,columns:c,invalidRows:l.size,invalidRowNumbers:l,errorCount:s.length}}function Xd(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 UA(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 na(e){let{statement:t,snapshots:n,fieldInfos:r,metadata:i,dmlMaxRows:o,dmlMaxSubtableRows:a,statementNumber:s=1}=e;Qd(o,"dmlMaxRows"),Qd(a,"dmlMaxSubtableRows");for(let h of n)Qo(h);let l=Vd(t,n,r,i),c=ut(r,t.assignments.map(h=>h.field)),p=l.some(h=>dn(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=l.map((h,A)=>fn(h.postImage,c,u,s,e.parentRowNumbers?.[A]??A+1));if(!t.validateOnly){let h=d.flatMap(A=>A.errors);if(h.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:d[0]?.columns??[],errors:h})}`)}let f=l.length,R=l.reduce((h,A)=>h+A.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 g=l.map((h,A)=>Jo(h,d[A].normalizedRecord)),y=g.flatMap(h=>Wr(h).records),m=d.map(h=>({errors:h.errors,columns:h.columns,invalidRows:h.invalidRows,errorCount:h.errorCount}));return Zd({plans:g,records:y,validations:m,guards:{revisionRequired:!0,parentRows:f,dmlMaxRows:o,subtableRows:R,dmlMaxSubtableRows:a,wouldExceed:E}})}function Qd(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function Zd(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))Zd(n,t);return Object.freeze(e)}var Ol=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function ra(e,t){if(new Set(e.fields).size!==e.fields.length)return ct("DML target fields contain duplicates.");let n=new Map(t.map(o=>[o.code,o]));for(let o of e.fields)ef(o,null,n);let r=new Map,i=new Map;for(let o of e.applyBlocks??[]){if(r.has(o.field))return ct(`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 ct(`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 ct(`APPLY INSERT supports APPEND only (${l.kind}).`);let c=new Set;for(let p of l.fields){if(c.has(p))return ct(`APPLY APPEND specifies child ${p} more than once.`);c.add(p),ef(p,o.field,n,s)}for(let p of l.values)if(p.length!==l.fields.length)return ct(`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 kA(e,t,n=ra(e,t),r){let i=new Map(t.map(s=>[s.code,s.fieldType])),o=Ho(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=>ml(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||Ol.has(u.fieldType)||(c[u.code]=s[u.code]??{value:Al(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 qr(e){let{statement:t,fieldInfos:n,dmlMaxRows:r,dmlMaxSubtableRows:i,statementNumber:o=1}=e;tf(r,"dmlMaxRows"),tf(i,"dmlMaxSubtableRows");let a=e.metadata??ra(t,n),s=kA(t,n,a,e.parentRowNumbers),l=n.filter(A=>A.fieldType==="SUBTABLE"||A.fieldType!=="FILE"&&A.writable!==!1&&!Ol.has(A.fieldType)),c=ut(l,t.fields),p=s.some(A=>dn(A.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(A=>fn(A.postImage,c,u,o,A.parentRowNumber,"INSERT"));if(!t.validateOnly){let A=d.flatMap(b=>b.errors);if(A.length>0)throw new Error(`ArgumentError: APPLY post-image validation failed: ${JSON.stringify({columns:d[0]?.columns??[],errors:A})}`)}let f=s.length,R=s.reduce((A,b)=>A+b.tables.reduce((w,P)=>w+P.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 g=s.map((A,b)=>{let w=d[b].normalizedRecord,P={};for(let T of t.fields)P[T]=w[T];for(let T of A.tables){let L=w[T.table]?.value;P[T.table]={value:T.rows.map((N,_)=>({value:Object.fromEntries(Object.keys(N.value).map(F=>[F,L[_]?.value?.[F]??N.value[F]]))}))}}return{...A,postImage:w,record:P}}),y=g.map(A=>A.record),m=[];for(let A=0;A<y.length;A+=100)m.push({app:t.appId,records:y.slice(A,A+100)});let h=d.map(A=>({errors:A.errors,columns:A.columns,invalidRows:A.invalidRows,errorCount:A.errorCount}));return nf({applyBlocks:t.applyBlocks??[],candidates:g,records:y,batches:m,validations:h,guards:{revisionRequired:!1,parentRows:f,dmlMaxRows:r,subtableRows:R,dmlMaxSubtableRows:i,wouldExceed:E}})}function ef(e,t,n,r){if(e.startsWith("_")||e.startsWith("$"))return ct(`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?ct(`APPLY child ${e} does not belong to subtable ${t}.`):ct(`APPLY ${t===null?"parent field":"child"} ${e} does not exist.`)}if(i.fieldType==="SUBTABLE"||i.fieldType==="FILE"||i.writable===!1||Ol.has(i.fieldType))return ct(`APPLY assignment target ${e} is not writable (${i.fieldType}).`)}function tf(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function ct(e){throw new Error(`ArgumentError: ${e}`)}function nf(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))nf(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;rf(i,"dmlMaxRows"),rf(o,"dmlMaxSubtableRows"),KA(t,n);let s=n.filter(y=>y.targetId===void 0),l=n.filter(y=>y.targetId!==void 0),c=MA(t,s.map(y=>y.sourceRowIndex)),p=await qr({statement:c,fieldInfos:r,metadata:ra(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 m=y.targetId;d.has(m)&&Ll(`UPSERT APPLY resolves more than one source row to parent $id ${m}.`),d.add(m),y.snapshot||Ll(`UPSERT APPLY snapshot for parent $id ${m} is missing.`);let h=Number(y.snapshot.$id?.value);h!==m&&Ll(`UPSERT APPLY snapshot $id ${h} does not match target $id ${m}.`);let A=FA(t,y.sourceRowIndex,m),b=A.applyBlocks?.length?bt(A,r):xA(r);u.push(await na({statement:A,snapshots:[y.snapshot],fieldInfos:r,metadata:b,dmlMaxRows:i,dmlMaxSubtableRows:o,statementNumber:a,parentRowNumbers:[y.sourceRowIndex+1],loadNumberPrecision:e.loadNumberPrecision}))}let f=GA(u,i,o),R=p.guards.parentRows+f.guards.parentRows,E=p.guards.subtableRows+f.guards.subtableRows,g=R>i||E>o;if(!t.validateOnly){let y=[...p.validations.flatMap(m=>m.errors),...f.validations.flatMap(m=>m.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 _l({create:p,update:f,createBatches:p.batches,updateBatches:BA(f.records,t.appId),guards:{revisionRequired:f.guards.parentRows>0,parentRows:R,dmlMaxRows:i,subtableRows:E,dmlMaxSubtableRows:o,wouldExceed:g,create:p.guards,update:f.guards}})}function MA(e,t){return{type:"INSERT",appId:e.appId,fields:[...e.fields],values:t.map(n=>e.values[n]),applyBlocks:e.onInsertApplyBlocks??[],validateOnly:!0}}function FA(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 xA(e){return{targetTables:new Map,targetMultiValueFields:new Map,childrenByTable:new Map,fieldsByCode:new Map(e.map(t=>[t.code,t]))}}function GA(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 _l({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 KA(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 BA(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 rf(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new Error(`ArgumentError: ${t} must be a positive safe integer.`)}function Ll(e){throw new Error(`ArgumentError: ${e}`)}function _l(e,t=new Set){if(e===null||typeof e!="object"||t.has(e))return e;t.add(e);for(let n of Object.values(e))_l(n,t);return Object.freeze(e)}function Jr(e){return Jn("UPDATE",[lf(e)])}function Dl(e){return Jn("INSERT",[sf(e)])}function vl(e){return Jn("UPSERT",[sf(e.create),lf(e.update)])}function Ve(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 oa(e,t,n){return e.type==="UPDATE"?Jn("UPDATE",[ia("update",e.applyBlocks??[],null,!0,t,n)]):e.type==="INSERT"?Jn("INSERT",[ia("insert",e.applyBlocks??[],e.values.length,!1,t,n)]):Jn("UPSERT",[ia("insert",e.onInsertApplyBlocks??[],null,!1,t,n),ia("update",e.onUpdateApplyBlocks??[],null,!0,t,n)])}function Jn(e,t){return{statementKind:e,branches:t,nonTransactional:!0,partialSuccess:{possible:!0}}}function sf(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 lf(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:af(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:af(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 af(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:zr(i.count,n.count),...n.matchedRows!==void 0?{matchedRows:zr(i.matchedRows,n.matchedRows)}:{},...n.changedRows!==void 0?{changedRows:zr(i.changedRows,n.changedRows)}:{},...n.addedRows!==void 0?{addedRows:zr(i.addedRows,n.addedRows)}:{},...n.removedRows!==void 0?{removedRows:zr(i.removedRows,n.removedRows)}:{}}}):t.map(n=>({...n}))}function zr(e,t){return e==null||t===null?null:e+t}function ia(e,t,n,r,i,o){let a=t.map(p=>{let u=p.operations.map(f=>$A(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 $A(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 pt=class extends Error{constructor(t,n){let r=n instanceof Error?n.message:String(n),i=t.failedStage==="POST_CHUNK"?"POST":"PUT",o=t.failedBranch?` UPSERT ${t.failedBranch}`:"";super(`ApplyWritePartialFailureError: APPLY${o} ${i} chunk ${t.failedChunkIndex+1} failed (index ${t.failedChunkIndex}) after ${t.successfulChunks} successful chunk(s) and ${t.successfulParents} successful parent(s); writes are non-transactional and were not retried. Cause: ${r}`),this.name="ApplyWritePartialFailureError",this.partialSuccess=t,this.cause=n}};async function uf(e,t,n){xn("phase10c");let r=jd(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 pt({successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"PUT_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:Ve(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 cf(e,t,n){xn("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 pt({successfulChunks:i,successfulParents:o,failedChunkIndex:a,failedStage:"POST_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:Ve(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 pf(e,t,n){xn("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 pt({successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,failedChunkIndex:l,failedBranch:"INSERT",failedStage:"POST_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:Ve(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 pt({successfulChunks:i+o,successfulParents:a+s,successfulInserts:a,successfulUpdates:s,failedChunkIndex:l,failedBranch:"UPDATE",failedStage:"PUT_CHUNK",nonTransactional:!0,retryAttempted:!1,...n?{diagnostic:Ve(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 VA=/^[A-Za-z_][A-Za-z0-9_]{0,63}$/;function WA(e){if(!VA.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 HA(e){let t=Object.create(null);for(let[n,r]of Object.entries(e??{})){let i=WA(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 Ul(e,t){let n=HA(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 YA(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 kl(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 YA(i)?!0:Object.values(i).some(n)};return n(e)}function df(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}var aa=50;function Fl(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+=aa){let o=e.values.slice(i,i+aa);r.push(`${t} in (${o.map(n).join(",")})`)}return r}var Ml=new Set(["DATETIME","CREATED_TIME","UPDATED_TIME"]),jA=new Set(["SINGLE_LINE_TEXT","LINK","NUMBER","CALC","DROP_DOWN","RADIO_BUTTON","CHECK_BOX","MULTI_SELECT","STATUS"]);function qA(e,t){return e==="DATE"?Nr(t):e==="TIME"?ho(t):Ml.has(e)?So(t):!1}function zA(e,t){return!t||t.compareMode!=="string"?!1:e==="DATE"?t.fieldType==="DATE":e==="TIME"?t.fieldType==="TIME":Ml.has(e)?Ml.has(t.fieldType):!1}function xl(e){if(e.sourceRowCount===0)return{kind:"EMPTY_SOURCE"};if(!e.fieldType)return{kind:"FALLBACK",reason:"JOIN_KEY_FIELD_TYPE_UNRESOLVED"};let t=Ao(e.fieldType);if(t.has("in")){if(e.values===void 0)return{kind:"FALLBACK",reason:"JOIN_KEY_VALUES_RUNTIME"};if(e.hasEmptyValue&&!jA.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(!zA(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=>!qA(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];Ze(s,i,n)<0&&(i=s),Ze(s,o,n)>0&&(o=s)}return{kind:"RANGE",min:i,max:o,relation:"superset"}}function ff(e,t){let n=Z(e);return n.type!=="GROUPING_SETS"?null:{source:n.source,expandedSetCount:n.sets.length,groupingItemCount:t??n.allItems.length,setLimit:64,itemLimit:16,outputRowLimit:5e4}}function dt(e){if(e===null)return!1;switch(e.type){case"BINARY":return sa(e.left);case"NULL_CHECK":return sa(e.field);case"LOGICAL":return dt(e.left)||dt(e.right);case"NOT":case"GROUP":return dt(e.expr);case"EXISTS":case"BOOLEAN":return!1}}function sa(e){if(Array.isArray(e))return e.some(sa);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(sa)}async function et(e,t,n,r,i){let o=await De(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 la(e,t,n,r){let{records:i,metrics:o}=await et(e,t,n,["$id"],r);return{ids:$c(i),metrics:o}}function Qn(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)?Rf(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"}):Rf(n[0],e.field)}function Bl(e,t){if(e.left.type!=="FIELD")return Xr();let n=Qn(e.left,t);if(n.status!=="OWNED"||n.source.sourceKind!=="APP")return Xr();let r=n.source.fieldTypes.get(n.fieldCode);if(r===void 0||r.startsWith("KSQL_")||ye(e,a=>{let s=Qn(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:X({fieldType:l})}).capability!=="EXACT_PUSHDOWN")return Xr();let o=Io(e,{fieldCode:n.fieldCode,fieldType:r,fieldOptions:n.source.fieldOptions?.get(n.fieldCode)});return o==="unsafe"?Xr():Object.freeze({relation:o,owner:n})}function gf(e,t){let n=Ae(e);if(n.length===0||e.left.type!=="FIELD")return Object.freeze({relation:"unsafe"});let r=Qn(e.left,t);return r.status!=="OWNED"||r.source.sourceKind!=="APP"?Object.freeze({relation:"unsafe"}):ye(e,o=>{let a=Qn(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:X({fieldType:s})}).capability!=="EXACT_PUSHDOWN"?Object.freeze({relation:"unsafe"}):Object.freeze({relation:"function-leaf-exact",owner:r,functionOccurrences:Object.freeze([...n])})}function yf(e,t){let n=new Set;En(e,n);let i=(e===null?[]:hf(Xn(e,t))).map(s=>Object.freeze({targetAlias:s.owner.alias,appId:s.owner.appId,predicate:s.predicate,relation:s.relation})),o=JA(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)En(s.predicate,a);return Object.freeze({items:Object.freeze(i),appliedKlikes:a,allKlikes:Object.freeze([...n]),rejections:Object.freeze(ZA(e,t)),fetchQueriesByAlias:new Map,...o})}function mf(e,t){if(e.serverFunctionCandidate?.staticContract!=="CONFIRMED"||e.serverFunctionConsumptions.length===0||e.residualServerFunctionOccurrences.length!==0||!Rn(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,Zn(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=Zn({targetAlias:a.targetAlias,appId:a.appId,predicate:a.predicate,relation:"exact"},t);if(l!==a.serializedPredicate||!Rn(Ea(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 er(e){if(e.serverFunctionCandidate===null||e.serverFunctionCandidate.staticContract!=="CONFIRMED"||e.serverFunctionCandidate.fetchContract!=="CONFIRMED"||e.serverFunctionConsumptions.length===0||e.residualServerFunctionOccurrences.length!==0||!Rn(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&&!Rn(Ea(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))||Af(QA(e))!==e.allKlikes.length))}function JA(e,t){if(e===null)return Ef(null);let n=Object.freeze([...Ae(e)]);if(n.length===0)return Ef(e);let r=XA(e,t,n);if(r!==null)return r;let i=pa(e),o=[],a=new Set;for(let u of i){let d=gf(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=Zn(f,t)}catch{continue}let E=Ea(R);Rn(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=da(e,a),l=Object.freeze(s===null?[]:[...Ae(s)]),c=Object.freeze(o.flatMap(u=>[...u.functionOccurrences])),p=Rn(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 XA(e,t,n){let r=ua(e,t);if(r===null)return null;let i={targetAlias:r.alias,appId:r.appId,predicate:e,relation:"exact"},o;try{o=Zn(i,t)}catch{return null}if(!Rn(Ea(o),n))return null;let a=new Set;if(En(e,a),Af(o)!==a.size)return null;let s=Object.freeze(ca(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 ua(e,t){switch(e.type){case"BINARY":{if(Ae(e).length>0){let i=gf(e,t);return i.relation==="function-leaf-exact"?i.owner:null}let r=Bl(e,t);return r.relation==="exact"&&r.owner!==void 0?r.owner:null}case"LOGICAL":{let n=ua(e.left,t),r=ua(e.right,t);return n!==null&&r!==null&&Ra(n,r)?n:null}case"GROUP":case"NOT":return ua(e.expr,t);case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return null}}function ca(e){switch(e.type){case"BINARY":return Ae(e).length>0?[e]:[];case"LOGICAL":return[...ca(e.left),...ca(e.right)];case"GROUP":case"NOT":return ca(e.expr);case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return[]}}function Ef(e){let t=e===null?[]:Ae(e);return{serverFunctionCandidate:null,serverFunctionConsumptions:Object.freeze([]),allServerFunctionOccurrences:Object.freeze([...t]),adoptedServerFunctionOccurrences:Object.freeze([]),residualWhere:e,residualServerFunctionOccurrences:Object.freeze([...t])}}function pa(e){switch(e.type){case"BINARY":return Ae(e).length>0?[e]:[];case"LOGICAL":return e.op==="AND"?[...pa(e.left),...pa(e.right)]:[];case"GROUP":return pa(e.expr);case"NOT":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return[]}}function da(e,t){if(e.type==="BINARY")return t.has(e)?null:e;if(e.type==="LOGICAL"){if(e.op!=="AND")return e;let n=da(e.left,t),r=da(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=da(e.expr,t);return n===null?null:n===e.expr?e:{...e,expr:n}}return e}function Ea(e){let t=[];for(let n of fr){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 Rn(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 Af(e){return[...e.matchAll(/\s(?:not\s+)?like\s/g)].length}function QA(e){let t=e.serverFunctionConsumptions[0];return t===void 0?"":e.fetchQueriesByAlias.get(t.targetAlias)??""}function ZA(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=Qn(i.left,t);if(o.status==="AMBIGUOUS"){n.add("AMBIGUOUS_FIELD");return}if(o.status==="UNKNOWN"){n.add("UNKNOWN_FIELD_OR_METADATA");return}if(fa(i.right)){n.add("CROSS_TABLE_BINARY");return}Bl(i,t).relation==="unsafe"&&n.add("UNSAFE_RELATION");return}if(i.type==="LOGICAL"){if(i.op==="OR"){if(Tf(i)){n.add("KLIKE_OR");return}let o=Xn(i.left,t),a=Xn(i.right,t);if(o.length!==1||a.length!==1||!Ra(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 Zn(e,t){return Qr(e.predicate,e,t),Y(e.predicate)}function Qr(e,t,n){switch(e.type){case"LOGICAL":Qr(e.left,t,n),Qr(e.right,t,n);return;case"GROUP":Qr(e.expr,t,n);return;case"NOT":Qr(e.expr,t,n);return;case"BINARY":{if(e.left.type!=="FIELD"||fa(e.right))throw Kl(t,"predicate contains a non-target or RHS field reference");let r=Qn(e.left,n);if(r.status!=="OWNED"||r.alias!==t.targetAlias||r.appId!==t.appId||r.source.sourceKind!=="APP")throw Kl(t,`field ${e.left.field} is not uniquely owned by the target`);return}case"NULL_CHECK":case"EXISTS":case"BOOLEAN":throw Kl(t,"predicate shape is outside the Phase A serializer contract")}}function Kl(e,t){return new Error(`InternalError: JOIN pushdown ownership guard failed for ${e.targetAlias}/APP${e.appId}: ${t}.`)}function Xn(e,t){switch(e.type){case"BINARY":{let n=Bl(e,t);return n.relation==="unsafe"||n.owner===void 0?[]:[{owner:n.owner,predicate:e,relation:n.relation}]}case"LOGICAL":{let n=Xn(e.left,t),r=Xn(e.right,t);if(e.op==="AND")return hf([...n,...r]);if(Tf(e))return[];if(n.length!==1||r.length!==1)return[];let i=n[0],o=r[0];return Ra(i.owner,o.owner)?[{owner:i.owner,predicate:{type:"LOGICAL",op:"OR",left:i.predicate,right:o.predicate},relation:Sf(i.relation,o.relation)}]:[]}case"GROUP":return Xn(e.expr,t).map(n=>({...n,predicate:{type:"GROUP",expr:n.predicate}}));case"NOT":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return[]}}function hf(e){let t=[];for(let n of e){let r=t.findIndex(o=>Ra(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:Sf(i.relation,n.relation)}}return t}function Rf(e,t){return Object.freeze({status:"OWNED",alias:e.alias,appId:e.appId,fieldCode:t,source:e})}function Xr(){return Object.freeze({relation:"unsafe"})}function Ra(e,t){return e.alias===t.alias&&e.appId===t.appId&&e.source===t.source}function Sf(e,t){return e==="exact"&&t==="exact"?"exact":"superset"}function En(e,t){if(e!==null){if(xt(e)){t.add(e);return}switch(e.type){case"LOGICAL":En(e.left,t),En(e.right,t);return;case"NOT":case"GROUP":En(e.expr,t);return;case"BINARY":case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}}function Tf(e){let t=new Set;return En(e,t),t.size>0}function fa(e){if(e===null||typeof e!="object")return!1;if(Array.isArray(e))return e.some(fa);let t=e;return t.type==="FIELD"||t.type==="FIELD_REF"?!0:Object.values(t).some(fa)}function $l(e,t){let n=Cr(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 eh(e,t){return e.key.type==="FIELD_NAME"?t.get(e.key.name):void 0}function th(e,t){return e.columns.some(n=>"alias"in n&&n.alias===t)}function Zr(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=eh(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"&&!th(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 nh=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 rh(e,t){return e.columns.some(n=>"alias"in n&&n.alias===t)}function ei(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(rh(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}nh.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 ga=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"}},ya=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}},ma=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 If(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 ma(a).message}}return{records:n,cleanupWarning:o}}function Vl(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 ih={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 wf(e,t){let n=ih[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 bf(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=>wf(s.fieldType,s.code)==="PROCESS")?(await n()).enable:!1;return[...r.filter(s=>{let l=wf(s.fieldType,s.code);return l==="RECORD"||l==="PROCESS"&&o}).map(s=>s.code),"$revision","$id"]}var tr=new WeakMap,Hl=new WeakMap;function ql(e){if(Hl.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):we(t,r)},has(n,r){return Reflect.has(n,r)||typeof r=="string"&&we(t,r)!==void 0},getOwnPropertyDescriptor(n,r){let i=Reflect.getOwnPropertyDescriptor(n,r);if(i||typeof r!="string")return i;let o=we(t,r);return o===void 0?void 0:{configurable:!0,enumerable:!1,writable:!1,value:o}}}),Hl.set(t,e),t}function tt(e){return Hl.get(e)??e}function Uf(e){let t=tr.get(e);return t||(t={byColumn:new Map,byLookupKey:new Map},tr.set(e,t)),t}function ft(e,t,n,r=[]){let i=Uf(e);i.byColumn.set(t,n);for(let o of r)i.byLookupKey.set(o,n)}function We(e,t){return tr.get(e)?.byColumn.get(t)}function we(e,t){return tr.get(e)?.byLookupKey.get(t)}function Nt(e,t){return tr.has(e)?void 0:e[t]}function oh(e){let t=tr.get(e)?.byLookupKey;if(!t||t.size===0)return e;let n={...e};for(let[i,o]of t)n[i]=o;let r=Ps(e);return r&&Ns(n,r.includedCanonicalIds),n}function Pt(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 ah(e,t,n,r={}){let{on:i,type:o}=n,a=i.left.tableAlias?`${i.left.tableAlias}.${i.left.field}`:i.left.field,s=i.right.tableAlias?`${i.right.tableAlias}.${i.right.field}`:i.right.field;if(Nf(e,a,r.leftColumns),Nf(t,s,r.rightColumns),o==="RIGHT"){let u=new Map;for(let R of e){let E=R[a]??"",g=u.get(E);g?g.push(R):u.set(E,[R])}let d={};for(let R of r.leftColumns??Object.keys(e[0]??{}))d[R]="";let f=[];for(let R of t){let E=R[s]??"",g=u.get(E)??[];if(g.length>0)for(let y of g)f.push({...y,...R});else f.push({...d,...R})}return f}let l=new Map;for(let u of t){let d=u[s]??"",f=l.get(d);f?f.push(u):l.set(d,[u])}let c=[],p={};for(let u of r.rightColumns??Object.keys(t[0]??{}))p[u]="";for(let u of e){let d=u[a]??"",f=l.get(d)??[];if(f.length>0)for(let R of f)c.push({...u,...R});else o==="LEFT"&&c.push({...u,...p})}return c}function Nf(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 sh(e,t,n,r,i){return t===null?e:e.filter(o=>oe(t,o,n,r,i))}function kf(e){return e.some(t=>t.type==="AGGREGATE"||t.type==="ARITH_AGG_COL"||t.type==="CASE_COL"&&Ge(t.expr)||t.type==="STRFUNC_COL"&&ai(t.expr)||t.type==="SCALAR_VALUE_COL"&&Jt(t.expr))}function lh(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)=>ch(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&&kf(n)&&a.set("",[]);let s=[];for(let l of a.values()){let c=ql({...l[0]});for(let p of t)p.type==="ARITH_KEY"?c[Ql(p.expr)]=String(ce(p.expr,l[0])):p.type==="FUNC_KEY"&&(c[Xt(p.expr)]=pe(p.expr,l[0]));Mf(c,l,n,r),s.push(c)}return s}function uh(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=Pf(R,d),g=f.children.get(E);g||(g={children:new Map},f.children.set(E,g)),f=g}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=ql({...d[0]}),R=new Map;for(let E of l.items)R.has(E.canonicalId)||R.set(E.canonicalId,Pf(E,d[0]));for(let E of t.allItems){let g=R.get(E.canonicalId)??"";f[E.directKey]=g,E.unqualifiedBridgeKey!==null&&(f[E.unqualifiedBridgeKey]=g)}Mf(f,d,n,r),Ns(f,u),o.push(f)}}return o}function Pf(e,t){return t?t[e.directKey]??(e.unqualifiedBridgeKey===null?void 0:t[e.unqualifiedBridgeKey])??"":""}function Mf(e,t,n,r){for(let[i,o]of n.entries())if(o.type==="AGGREGATE"){let a=Re(o.func,o.distinct,o.arg),s=String(ri(o.func,o.distinct,o.arg,o.separator,t,r));ft(e,i,s,o.alias?[o.alias,a]:[a])}else if(o.type==="ARITH_AGG_COL"){Aa(e,t,o.expr,r);let a=o.alias??ii(o.expr);ft(e,i,String(ti(o.expr,t,r)),[a])}else if(o.type==="STRFUNC_COL"&&ai(o.expr)){Aa(e,t,o.expr,r);let a=o.alias??Xt(o.expr),s=Zl(o.expr,t,r);ft(e,i,pe(s,e),[a])}else if(o.type==="SCALAR_VALUE_COL"&&Jt(o.expr)){Aa(e,t,o.expr,r);let a=o.alias??Et(o.expr),s=ni(o.expr,t,r);ft(e,i,String(Te(s,e)),[a])}else if(o.type==="CASE_COL"&&Ge(o.expr)){Aa(e,t,o.expr,r);let a=$f(o.expr,t,r),l=Me(a,e,void 0,c=>c.aggregateRef?xf(c.aggregateRef,r):void 0);ft(e,i,l,[Yl(o.alias,i)])}}function Yl(e,t){return e??`__ksql_case_column_${t}`}function jl(e,t){if(e===null||typeof e!="object")return;if(Array.isArray(e)){e.forEach(r=>jl(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=>jl(r,t))}function Aa(e,t,n,r){let i=[];jl(n,i);for(let o of i){let a=Re(o.func,o.distinct,o.arg);if(we(e,a)!==void 0)continue;let s=String(ri(o.func,o.distinct,o.arg,o.separator,t,r));Uf(e).byLookupKey.set(a,s)}}function ch(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=ha(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"?pe(e.expr,t):String(ce(e.expr,t))}function ri(e,t,n,r,i,o){if(n.type==="WILDCARD")return e==="COUNT"?i.length:0;let a=Ff(e,n,i).filter(f=>f!==null),s=e==="STDDEV_POP"||e==="STDDEV_SAMP"||e==="VAR_POP"||e==="VAR_SAMP"||e==="MEDIAN",l=s?a.map(f=>{let R=Number(f);if(!Number.isFinite(R))throw new Error(`ArgumentError: ${e} \u306E\u5F15\u6570\u306B\u975E\u6570\u5024\u307E\u305F\u306F\u975E\u6709\u9650\u306E\u5024\u304C\u3042\u308A\u307E\u3059: ${f}`);return R}):null,c=t?s?[...new Set(l)]:[...new Set(a)]:s?l:a;if(e==="COUNT")return c.length;if(e==="GROUP_CONCAT")return c.join(r??",");let p=e==="MIN"||e==="MAX"||e==="MODE"?oi(n,o):void 0,u=typeof p=="string"?K(p):p??(n.type==="FIELD_REF"||n.type==="FIELD"||n.type==="STRING"||n.type==="CONCAT_OP"||n.type==="CASE_WHEN"?K("string"):K("number"));if(e==="MODE"){if(a.length===0)return"";let f=new Map;for(let g of a)f.set(g,(f.get(g)??0)+1);let R="",E=0;for(let[g,y]of f){if(y>E){R=g,E=y;continue}if(y!==E)continue;let m=Ze(g,R,u);(m<0||m===0&&qt(g,R)<0)&&(R=g)}return R}if(e==="MIN"||e==="MAX"){let f=c;if(f.length===0)return"";let R=f[0];for(let E of f.slice(1)){let g=Ze(E,R,u);(e==="MAX"&&g>0||e==="MIN"&&g<0)&&(R=E)}return R}let d=s?c:c.map(Number);switch(e){case"SUM":return d.reduce((f,R)=>f+R,0);case"AVG":return d.length===0?0:d.reduce((f,R)=>f+R,0)/d.length;case"MEDIAN":{if(d.length===0)return"";let f=[...d].sort((E,g)=>E-g),R=Math.floor(f.length/2);return f.length%2===1?f[R]:(f[R-1]+f[R])/2}case"VAR_POP":case"VAR_SAMP":case"STDDEV_POP":case"STDDEV_SAMP":{let f=e==="VAR_SAMP"||e==="STDDEV_SAMP";if(d.length===0||f&&d.length<2)return"";let R=d[0],E=0,g=0,y=0;for(let h of d){let A=h-R;E++;let b=A-g;g+=b/E,y+=b*(A-g)}let m=Math.max(0,y/(f?E-1:E));return e==="STDDEV_POP"||e==="STDDEV_SAMP"?Math.sqrt(m):m}}}function Ff(e,t,n){return n.map(r=>{let i=tt(r),o;if(t.type==="FIELD_REF"){let a=i[t.field];if(a===void 0||a===""&&e!=="MIN"&&e!=="MAX")return null;o=a}else if(t.type==="ARITH"||t.type==="NUMBER"){let a=ce(t,i);if(isNaN(a))return null;o=String(a)}else{let a=It(t,i);if(a===null||a===""&&e!=="MIN"&&e!=="MAX"||typeof a=="number"&&Number.isNaN(a))return null;o=String(a)}return o})}function ph(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 ti(e,t,n){if(e.type==="NUMBER")return e.value;if(e.type==="AGG_REF")return Number(ri(e.func,e.distinct,e.arg,e.separator,t,n));if(e.type==="AGG_GROUP_KEY"){let o=e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;return Number(ke(t[0]??{},o))}if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved aggregate arithmetic variable @${e.name}.`);let r=ti(e.left,t,n),i=ti(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 ii(e){return st(e)}function oi(e,t){if(e.type==="FIELD_REF")return t?.(ph(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=>oi(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 xf(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 K("number");if(e.func==="GROUP_CONCAT"||e.func==="MODE")return K("string");let n=e.arg.type==="WILDCARD"?"string":oi(e.arg,t)??"string";return typeof n=="string"?K(n):n}function dh(e,t,n,r){return t===null?e:e.filter(i=>oe(t,oh(i),n,void 0,r))}function fh(e,t,n,r,i){if(e.length===0)return e;let o=Eh(e,t,{scalarCache:n,resolveFieldType:r,resolveFieldSemantics:i}),a=new Set;return e.filter(s=>{let l=o(s);return a.has(l)?!1:(a.add(l),!0)})}function Eh(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(Th(t,a,o))}function zl(e,t,n,r,i,o){return t.length===0?e:Gf(e,t,n,r,i,o).rows.map(a=>a.row)}function Gf(e,t,n,r,i,o){let a=t.map(({key:c})=>{if(c.type==="ARITH_KEY")return{semantics:K("number")};if(c.type==="FUNC_KEY")return{semantics:K(Kf.has(c.expr.func)?"number":"string")};if(c.type==="GROUPING_KEY")return{semantics:K("number")};let p=i?.get(c.name);if(p)return{semantics:p};let u=n?.get(c.name);return u?{semantics:{fieldType:"MULTI_SELECT",compareMode:"option",inSubtable:!1,requiresCollectionOperators:!1,optionOrder:u}}:{semantics:K(r?.get(c.name)??"string")}}),s=e.map(c=>({row:c,keys:t.map(({key:p},u)=>({s:yh(p,c,o)}))})),l=(c,p)=>Rh(c,p,t,a);return s.sort(l),{rows:s,compare:l}}function Rh(e,t,n,r){for(let i=0;i<n.length;i++){let o=gh(e.keys[i],t.keys[i],r[i]);if(o!==0)return n[i].direction==="ASC"?o:-o}return 0}function gh(e,t,n){return Ze(e.s,t.s,n.semantics)}var Kf=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function yh(e,t,n){let r=tt(t);switch(e.type){case"FIELD_NAME":return n?.(e.name,t)??we(t,e.name)??r[e.name]??"";case"ARITH_KEY":return String(ce(e.expr,r));case"FUNC_KEY":return pe(e.expr,r);case"GROUPING_KEY":return Kn(e.ref,t)}}function Jl(e,t,n,r){let i=new Map;for(let[o,a]of e.entries()){if(!("alias"in a)||a.alias===null)continue;let s=a.alias;switch(a.type){case"FIELD":i.set(s,l=>ke(tt(l),a.field));break;case"LITERAL_COL":i.set(s,()=>a.value);break;case"AGGREGATE":{i.set(s,l=>We(l,o)??"0");break}case"ARITH_AGG_COL":{i.set(s,l=>We(l,o)??"0");break}case"WINDOW_COL":i.set(s,l=>We(l,o)??"");break;case"ARITH_COL":i.set(s,l=>String(ce(a.expr,tt(l))));break;case"STRFUNC_COL":{let l=Xt(a.expr);i.set(s,c=>ai(a.expr)?We(c,o)??we(c,l)??pe(a.expr,tt(c),n,r):pe(a.expr,tt(c),n,r));break}case"CASE_COL":i.set(s,l=>Ge(a.expr)?We(l,o)??"":Me(a.expr,tt(l),n,r));break;case"SCALAR_VALUE_COL":{let l=Et(a.expr);i.set(s,c=>Jt(a.expr)?We(c,o)??we(c,l)??"":String(Te(a.expr,tt(c),n,r)));break}case"SCALAR_SUBQUERY_COL":i.set(s,()=>t?.get(o)??"");break;case"GROUPING_COL":i.set(s,l=>Kn(a.ref,l));break;case"VARIABLE_COL":break}}return(o,a)=>i.get(o)?.(a)}function Xl(e,t,n,r,i,o){let a=t.map((s,l)=>({column:s,columnIndex:l})).filter(s=>s.column.type==="WINDOW_COL");if(e.length===0||a.length===0)return e;for(let s=0;s<e.length;s++)e[s]=ql(e[s]);for(let{column:s,columnIndex:l}of a){let c=new Map;for(let p of e){let u=JSON.stringify(s.partitionBy.map(f=>Sh(p,f))),d=c.get(u);d?d.push(p):c.set(u,[p])}for(let p of c.values()){let u=Gf(p,s.orderBy,n,r,i),d=u.rows;if(Ji(s)){hh(s,l,u,o);continue}if(ms(s)){Ah(s,l,d);continue}if(!ys(s))throw new Error(`InternalError: unknown window kind ${s.windowKind??"undefined"}`);let f=1,R=1;for(let E=0;E<d.length;E++){E>0&&u.compare(d[E-1],d[E])!==0&&(f=E+1,R++);let g=s.func==="ROW_NUMBER"?E+1:s.func==="RANK"?f:R;ft(d[E].row,l,String(g),[s.alias])}}}return e}function mh(e,t){let n=It(e,tt(t));return n==null||typeof n=="number"&&!Number.isFinite(n)?"":String(n)}function Ah(e,t,n){let r=n.map(o=>mh(e.arg,o.row)),i=e.valueFunc==="LAG"?-1:1;for(let o=0;o<n.length;o++){let a=o+i*e.offset;ft(n[o].row,t,a>=0&&a<r.length?r[a]:"",[e.alias])}}function hh(e,t,n,r){let i=n.rows,o=e.arg.type==="WILDCARD"?null:Ff(e.aggFunc,e.arg,i.map(d=>d.row)),a=e.arg.type==="WILDCARD"?void 0:oi(e.arg,r),s=typeof a=="string"?K(a):a??K("string"),l=[],c=0,p=0,u;for(let d=0;d<i.length;d++){let f=o?.[d]??null;if(e.arg.type==="WILDCARD")c++;else if(f!==null)if(e.aggFunc==="COUNT")c++;else if(e.aggFunc==="SUM"||e.aggFunc==="AVG")p+=Number(f),c++;else if(u===void 0)u=f;else{let E=Ze(f,u,s);(e.aggFunc==="MAX"&&E>0||e.aggFunc==="MIN"&&E<0)&&(u=f)}let R=e.aggFunc==="COUNT"?c:e.aggFunc==="SUM"?p:e.aggFunc==="AVG"?c===0?0:p/c:u??0;l.push(String(R))}if(e.frame===null){let d=l[l.length-1];for(let f of i)ft(f.row,t,d,[e.alias]);return}if(e.frame.unit==="RANGE"){for(let d=0;d<i.length;){let f=d;for(;f+1<i.length&&n.compare(i[f],i[f+1])===0;)f++;for(let R=d;R<=f;R++)ft(i[R].row,t,l[f],[e.alias]);d=f+1}return}for(let d=0;d<i.length;d++)ft(i[d].row,t,l[d],[e.alias])}function Sh(e,t){let n=t.tableAlias?`${t.tableAlias}.${t.field}`:t.field;return ke(tt(e),n)}function Sa(e,t,n){let r=n??0;return t===null?e.slice(r):e.slice(r,r+t)}function ha(e,t,n,r={}){let i=tt(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 ke(i,e.field);case"LITERAL_COL":return e.value;case"AGGREGATE":{let o=Re(e.func,e.distinct,e.arg);return We(t,n)??we(t,e.alias??o)??we(t,o)??Nt(t,e.alias??o)??Nt(t,o)??"0"}case"ARITH_AGG_COL":{let o=e.alias??ii(e.expr);return We(t,n)??we(t,o)??Nt(t,o)??"0"}case"ARITH_COL":return String(ce(e.expr,i));case"CASE_COL":return Ge(e.expr)?We(t,n)??we(t,Yl(e.alias,n))??Nt(t,Yl(e.alias,n))??"":Me(e.expr,i,r.resolveFieldType,r.resolveFieldSemantics);case"GROUPING_COL":return Kn(e.ref,t);case"STRFUNC_COL":{let o=Xt(e.expr);return ai(e.expr)?We(t,n)??we(t,e.alias??o)??we(t,o)??Nt(t,e.alias??o)??Nt(t,o)??pe(e.expr,i,r.resolveFieldType,r.resolveFieldSemantics):pe(e.expr,i,r.resolveFieldType,r.resolveFieldSemantics)}case"SCALAR_VALUE_COL":{let o=Et(e.expr);return Jt(e.expr)?We(t,n)??we(t,e.alias??o)??we(t,o)??Nt(t,e.alias??o)??Nt(t,o)??"":String(Te(e.expr,i,r.resolveFieldType,r.resolveFieldSemantics))}case"SCALAR_SUBQUERY_COL":return r.scalarCache?.get(n)??"";case"WINDOW_COL":return We(t,n)??we(t,e.alias)??Nt(t,e.alias)??""}}function Th(e,t,n={}){return e.map((r,i)=>{let o=ha(r,t,i,n);return typeof o=="string"?o:o.entries.map(([,a])=>a)})}function nr(e,t,n,r,i,o,a){if(t.length===1&&t[0].type==="WILDCARD"){let f=e.map(E=>{let g=Df(Of(E),a),y=ha(t[0],E,0,{wildcardKeys:Object.keys(g)}),m={};if(typeof y!="string")for(let[h,A]of y.entries)A!==null&&(m[h]=A);return m}),R=f.length>0?Object.keys(f[0]):[...i??[]];return{rows:f,columns:R}}let s=Nh(t),l=bh(t),c=t.some(f=>f.type==="WILDCARD"||f.type==="PARENT_WILDCARD"),p=c?null:Ih(t,s,l),u=p??[];return c&&e.length===0?{rows:[],columns:wh(t,s,l)}:{rows:e.map((f,R)=>{let E={},g={scalarCache:n,resolveFieldType:r,resolveFieldSemantics:o,wildcardKeys:Object.keys(Df(Of(f),a)),parentWildcardKeys:Object.keys(f).filter(y=>y.startsWith("_p.")).sort()};for(let[y,m]of t.entries()){let h=ha(m,f,y,g);switch(m.type){case"VARIABLE_COL":break;case"WILDCARD":if(typeof h!="string")for(let[A,b]of h.entries)b!==null&&(E[A]=b);break;case"PARENT_WILDCARD":{if(typeof h!="string")for(let[A,b]of h.entries)b!==null&&(E[A]=b),R===0&&u.push(A);break}case"FIELD":{let A=p?.[y]??m.alias??s.get(y)??m.field;E[A]=h,p===null&&R===0&&u.push(A);break}case"LITERAL_COL":{let A=p?.[y]??m.alias??`'${m.value}'`;E[A]=h,p===null&&R===0&&u.push(A);break}case"AGGREGATE":{let A=Re(m.func,m.distinct,m.arg),b=p?.[y]??m.alias??A;E[b]=h,p===null&&R===0&&u.push(b);break}case"ARITH_AGG_COL":{let A=p?.[y]??m.alias??ii(m.expr);E[A]=h,p===null&&R===0&&u.push(A);break}case"ARITH_COL":{let A=p?.[y]??m.alias??Ql(m.expr);E[A]=h,p===null&&R===0&&u.push(A);break}case"CASE_COL":{let A=p?.[y]??m.alias??l.get(y)??"case";E[A]=h,p===null&&R===0&&u.push(A);break}case"GROUPING_COL":{let A=p?.[y]??m.alias??`GROUPING(${m.ref.field.tableAlias?`${m.ref.field.tableAlias}.`:""}${m.ref.field.field})`;E[A]=h,p===null&&R===0&&u.push(A);break}case"STRFUNC_COL":{let A=p?.[y]??m.alias??Xt(m.expr);E[A]=h,p===null&&R===0&&u.push(A);break}case"SCALAR_VALUE_COL":{let A=p?.[y]??m.alias??Et(m.expr);E[A]=h,p===null&&R===0&&u.push(A);break}case"SCALAR_SUBQUERY_COL":{let A=p?.[y]??m.alias??"(subquery)";E[A]=h,p===null&&R===0&&u.push(A);break}case"WINDOW_COL":{let A=p?.[y]??m.alias;E[A]=h,p===null&&R===0&&u.push(A);break}}}return E}),columns:u}}function Ih(e,t,n){return e.map((r,i)=>Bf(r,i,t,n))}function wh(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=Bf(a,o,t,n);i.has(s)||(i.add(s),r.push(s))}return r}function Bf(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??Re(e.func,e.distinct,e.arg);case"ARITH_AGG_COL":return e.alias??ii(e.expr);case"ARITH_COL":return e.alias??Ql(e.expr);case"CASE_COL":return e.alias??r.get(t)??"case";case"STRFUNC_COL":return e.alias??Xt(e.expr);case"SCALAR_VALUE_COL":return e.alias??Et(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 bh(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 Nh(e){let t=new Map;for(let r of e){if(r.type!=="FIELD"||r.alias)continue;let i=Cf(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=Cf(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 Cf(e){if(e.startsWith("_p."))return e;let t=e.indexOf(".");return t<=0?e:e.slice(t+1)||e}function Of(e){let t={};for(let[n,r]of Object.entries(e))n.startsWith("_p.")||(t[n]=r);return t}function Ql(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"?j(n):n.type==="STRING_FUNC"?Xt(n):`(${t(n.left)}${n.op}${t(n.right)})`};return e.type==="ARITH"?`${t(e.left)}${e.op}${t(e.right)}`:t(e)}function Xt(e){let t=e.args.map(n=>n.type==="AGG_REF"||n.type==="AGG_ARITH"||n.type==="AGG_GROUP_KEY"?ii(n):n.type==="VARIABLE"?`@${n.name}`:Et(n));return`${e.func}(${t.join(",")})`}function Et(e){switch(e.type){case"STRING":return`'${e.value}'`;case"NUMBER":return j(e);case"VARIABLE":return`@${e.name}`;case"FIELD":return e.tableAlias?`${e.tableAlias}.${e.field}`:e.field;case"STRING_FUNC":return Xt(e);case"CASE_WHEN":return"case";case"SCALAR_ARITH":return`${Et(e.left)}${e.op}${Et(e.right)}`;case"CONCAT_OP":return`${Et(e.left)}||${Et(e.right)}`}}function Ph(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:e.type==="AGG_GROUP_KEY"||e.type==="VARIABLE"?!1:Jt(e)}function Jt(e){return e.type==="STRING_FUNC"?ai(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?Jt(e.left)||Jt(e.right):e.type==="CASE_WHEN"?e.branches.some(t=>Lf(t.result))||e.elseResult!==null&&Lf(e.elseResult):!1}function Lf(e){return e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?!1:Jt(e)}function ai(e){return e.args.some(t=>Ph(t))}function Ch(e,t,n){if(e.type==="AGG_REF"){let r=ri(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=ti(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(ke(t[0]??{},r)),raw:ke(t[0]??{},r)}}if(e.type==="VARIABLE")throw new Error(`InternalError: unresolved aggregate arithmetic variable @${e.name}.`);return e.type==="STRING_FUNC"?Zl(e,t,n):ni(e,t,n)}function ni(e,t,n){return e.type==="STRING_FUNC"?Zl(e,t,n):e.type==="CASE_WHEN"?$f(e,t,n):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?{...e,left:ni(e.left,t,n),right:ni(e.right,t,n)}:e}function _f(e,t,n){if(e.type==="AGG_REF"){let r=ri(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=ti(e,t,n);return{type:"NUMBER",value:r,raw:String(r)}}return e.type==="ARRAY"||e.type==="FIELD_REF"||e.type==="ARITH"?e:ni(e,t,n)}function $f(e,t,n){return{...e,branches:e.branches.map(r=>({...r,result:_f(r.result,t,n)})),elseResult:e.elseResult===null?null:_f(e.elseResult,t,n)}}function Zl(e,t,n){return{type:"STRING_FUNC",func:e.func,args:e.args.map(r=>Ch(r,t,n))}}function Df(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 vf(e,t){if(e!==void 0)return t?e.flatMap(n=>[`${t}.${n}`,n]):[...e]}function Wl(e,t,n){if(!(e===void 0&&t===void 0&&n.length===0))return[...new Set([...e??[],...t??[],...Object.keys(n[0]??{})])]}function Oh(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,K("number"));else if(r.type==="WINDOW_COL"){if(ys(r)||Ji(r)&&(r.aggFunc==="COUNT"||r.aggFunc==="SUM"||r.aggFunc==="AVG"))n.set(r.alias,K("number"));else if((Ji(r)||ms(r))&&r.arg.type!=="WILDCARD"){let i=oi(r.arg,t)??"string";n.set(r.alias,typeof i=="string"?K(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,K("number")):r.func==="GROUP_CONCAT"&&n.set(r.alias,K("string")):r.type==="LITERAL_COL"||r.type==="CASE_COL"||r.type==="SCALAR_SUBQUERY_COL"||r.type==="SCALAR_VALUE_COL"?n.set(r.alias,K("string")):r.type==="STRFUNC_COL"&&n.set(r.alias,K(Kf.has(r.expr.func)?"number":"string"));return n}function eu(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:g,plainGroupByPlan:y}=e,m=Oh(t.columns,u);for(let[N,_]of a??[])m.set(N,_);let h=[],A=t.from.alias;h=(n.get(A)??n.get(null)??[]).map(N=>Pt(N,A));let w=Wl(vf(R?.get(A),A),void 0,h);for(let N of t.joins){let _=N.table.alias,D=(n.get(_)??[]).map(S=>Pt(S,_)),M=Wl(vf(R?.get(_),_),void 0,D);h=ah(h,D,N,{leftColumns:w,rightColumns:M}),w=Wl(w,M,h)}let P=e.residualWhere!==void 0?e.residualWhere:t.where;h=sh(h,P,s,d,l);let T=Z(t);if(T.type==="GROUPING_SETS"){if(!g)throw new Error("internal error: B65 grouping sets require a metadata-resolved grouping spec.");h=uh(h,g,t.columns,u,{maxGeneratedRows:5e4})}else(T.type==="PLAIN"||kf(t.columns))&&(h=lh(h,T.type==="PLAIN"?T.allItems:[],t.columns,u,T.type==="PLAIN"?y:void 0,{scalarCache:r,resolveFieldType:s,resolveFieldSemantics:l}));let L=N=>N.aggregateRef?xf(N.aggregateRef,u):p?.(N);return h=dh(h,t.having,c,L),h=Xl(h,t.columns,i,o,m,u),t.distinct&&(h=fh(h,t.columns,r,s,l)),h=zl(h,t.orderBy,i,o,m,Jl(t.columns,r,s,l)),h=Sa(h,t.limit,t.offset),nr(h,t.columns,r,s,f,l,E)}function Vf(e,t){let n=[];for(let r of e){let i=tu(r.$id?.value),o=Lh(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=tu(p?.value);l[`_p.${c}`]={value:u}}for(let[c,p]of Object.entries(s.value??{}))l[c]={value:tu(p?.value)};n.push(l)}}return n}function Lh(e){return Array.isArray(e)?e.filter(t=>!!t&&typeof t=="object"):[]}function tu(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 Wf(e){return["$id",...new Set([...e.topLevel.map(t=>t.code).filter(t=>t!=="$id"&&t!=="$revision"),...e.subtables.keys()])]}function Hf(e,t){let n=si(e);for(let[r,i]of Object.entries(t))n[r]=si(i);return n}function Yf(e){let t=[...e.preErrors.map(i=>nu(i)),...e.postImageErrors.map(i=>nu(i,i.$err_subtable!=="")),...e.checkErrors.map(i=>nu(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]=si(e.normalizedPostImage[i])}return{errors:t,invalidRows:n.size,invalidRowNumbers:n,writeRecord:r}}function nu(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 si(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(si(a,t));return o}let i={};t.set(n,i);for(let[o,a]of Object.entries(e))i[o]=si(a,t);return i}function qf(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"&&Xe(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 iu(e){return qf(e,!0)}function Ta(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 nt(e,t,n,r,i=!0,o=!0,a=r){let s=iu(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:Ae(e.where)}),Ta(e,e).forEach((l,c)=>nt(l,`${t}.select-source[${c}]`,n,a,a?!1:i,a?!1:o,a))}function li(e,t,n,r,i=!0){e.left.type==="UNION"?li(e.left,`${t}.left`,n,r,i):nt(e.left,`${t}.left`,n,r,!0,i),nt(e.right,`${t}.right`,n,r,!0,i)}function jf(e,t,n,r){if(!r&&Kt(e)){nt(Bt(e),`${t}.inlined`,n,!1,!0,!0);return}e.ctes.forEach((i,o)=>{i.query.type==="SELECT"?nt(i.query,`${t}.cte[${o}]`,n,r,!1,!r,!0):i.query.type==="UNION"&&li(i.query,`${t}.cte[${o}]`,n,!0,!1)}),e.query.type==="SELECT"?nt(e.query,`${t}.main`,n,r,!1,!r,!0):li(e.query,`${t}.main`,n,!0,!1)}function zf(e,t,n,r=!1){switch(e.type){case"SELECT":nt(e,t,n,r);return;case"UNION":li(e,t,n,r);return;case"WITH":jf(e,t,n,r);return;case"CREATE_TEMP_TABLE":e.query.type==="WITH"?jf(e.query,`${t}.query`,n,!1):e.query.type==="UNION"?li(e.query,`${t}.query`,n,!0,!1):nt(e.query,`${t}.query`,n,!1,!1,!0,!0);return;case"EXPLAIN":zf(e.query,`${t}.query`,n,r);return;case"VALIDATE":case"REORDER":{let i=iu(e.where);i.length>0&&n.push({kind:"FORBIDDEN",source:e,where:e.where,functionNames:i,path:t,allowFullScanExact:!1,relativeFunctionOccurrences:Ae(e.where)}),Ta(e,e).forEach((o,a)=>nt(o,`${t}.select-source[${a}]`,n,!0,!0,!1));return}case"UPDATE":case"DELETE":{let i=iu(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:Ae(e.where)})}if(e.type==="UPDATE"&&e.applyBlocks?.length){let o=qf(e.applyBlocks,!0);o.length>0&&n.push({kind:"FORBIDDEN",source:e,where:null,functionNames:o,path:`${t}.apply`,allowFullScanExact:!1,relativeFunctionOccurrences:[]})}Ta(e,e).forEach((o,a)=>nt(o,`${t}.select-source[${a}]`,n,r,!1,!1));return}default:Ta(e,e).forEach((i,o)=>nt(i,`${t}.select-source[${o}]`,n,r,!1,!1))}}function Ia(e,t){let n=new Map;for(let r of t){if(!Xe(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 ou(e,t){return t.eligible===!0&&Be(e)==="FULL_SCAN"&&e.orderMode!=="KINTONE_NATIVE"&&e.from.cteName===null&&!e.from.subtableCode&&e.joins.length===0}function _h(e,t){return e.where!==null&&e.joins.length>0&&e.joins.every(n=>n.type==="INNER")&&[e.from,...e.joins.map(n=>n.table)].every(n=>n.alias!==null&&n.cteName===null&&!n.subtableCode)&&er(t)}function Dh(e){return{kind:e.kind,source:e.source,functionNames:e.functionNames,path:e.path,clientWhereEvaluation:!0,allowed:!1}}function vh(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 Un(e)?(n.some(r=>r!==At)||n.unshift("WHERE_KINTONE_FUNCTION_CONTEXT_UNSUPPORTED"),n.includes(At)||n.push(At)):n.includes(nn)||n.push(nn),[...new Set(n)]}function ru(e,t){let n=e.functionNames[0],r=Un(n)?At:nn,i=vh(n,t);return{functionName:n,path:e.path,code:i.find(o=>o!==r)??r,reasonCodes:i}}async function Jf(e,t){let n=[];zf(e,"statement",n);let r=[];for(let i of n){if(i.kind==="FORBIDDEN"){let p=Dh(i);return r.push(p),{hasRelativeDate:i.functionNames.some(te),hasServerOnlyWhereFunction:!0,nodes:r,allowed:!1,rejection:ru(i)}}if(i.kind==="SELECT"){let p=i.source,u=p.from.cteName===null&&!p.from.subtableCode&&p.joins.length===0,d=Be(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"&&Ia(R,i.relativeFunctionOccurrences),g,y;if(!E&&i.allowPhase2Prefilter!==!1&&f.capability==="SUPERSET_PREFILTER"&&t.prefilterDecomposition){let b=await t.prefilterDecomposition(p);b?.eligible===!0&&ou(p,b)&&(g=b.plan,y=!0,E=!0)}let m;!E&&f.capability==="EXACT_PUSHDOWN"&&(m=Co({select:p,selectMode:d,capability:f,context:{allowFullScanExact:i.allowFullScanExact},serializedWholeWhere:R||null,relativeFunctionNames:i.relativeFunctionOccurrences})??void 0,m&&(g=m.prefilterPlan,E=!0));let h;if(!E&&t.joinServerFunctionPlan){let b=await t.joinServerFunctionPlan(p);b!==null&&_h(p,b)&&(h=b,E=!0)}let A={kind:i.kind,source:i.source,functionNames:i.functionNames,path:i.path,selectMode:d,capability:f,restQuery:R,...g?{prefilterPlan:g,phase2PrefilterEligible:y}:{},...m?{fullScanExactPlan:m,allowForm:m.allowForm}:{},...h?{joinServerFunctionPlan:h,allowForm:"JOIN_SERVER_FUNCTION_EXACT",joinServerFunctionVariant:h.serverFunctionCandidate.variant}:{},clientWhereEvaluation:!E,allowed:E};if(r.push(A),!E)return{hasRelativeDate:n.some(b=>b.functionNames.some(te)),hasServerOnlyWhereFunction:!0,nodes:r,allowed:!1,rejection:ru(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"&&Ia(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(te)),hasServerOnlyWhereFunction:!0,nodes:r,allowed:!1,rejection:ru(i,a)}}return{hasRelativeDate:n.some(i=>i.functionNames.some(te)),hasServerOnlyWhereFunction:n.length>0,nodes:r,allowed:!0}}function au(e){if(!e.allowed&&e.rejection){let t=Un(e.rejection.functionName)?At:nn,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 su(e,t,n={}){let r=ye(e.where,t),i=(h,A="INELIGIBLE")=>({eligible:!1,disposition:A,reasonCodes:h,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=ci(e.where);if(o.length===0)return i(["NO_RELATIVE_DATE"]);let a=Uh(e.where,t);if(!a.ok)return i(a.reasonCodes);if(!kh(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=Fh(e.where,t),l=Cr(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??Ia,u=[];for(let h of a.leaves){let A=Pa(h);if(A===null)return i(["RELATIVE_DATE_LEAF_COUNT_MISMATCH"]);let b;try{b=c(h)}catch{return i(["PREFILTER_SERIALIZATION_FAILED"])}if(!p(b,[A]))return i(["PREFILTER_FUNCTION_MISSING"]);u.push(h)}let d=Mh(l.condition),f=new Set(u),R=ba(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 g=u.map(h=>Pa(h));if(!p(E,[...new Set(g)])||!xh(E,g))return i(["PREFILTER_FUNCTION_MISSING"]);let y=n.rewriteResidual?n.rewriteResidual(e.where,f):Na(e.where,f);if(y!==null&&ci(y).length>0)return i(["RESIDUAL_RELATIVE_DATE_REMAINED"]);if(y===null)return i(["DEFER_TO_PHASE1"],"DEFER_PHASE1");let m=new Set;for(let h of g)m.add(h);return{eligible:!0,plan:{prefilterWhere:R,residualWhere:y,exactRelativeLeaves:u,relativeFunctionNames:m,appliedKlikes:l.appliedKlikes,capability:r.capability,reasons:r.reasons}}}function Uh(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}ci(o).length>0&&(r="RELATIVE_DATE_CONTEXT_UNSUPPORTED");return;case"NOT":ci(o).length>0&&(r="RELATIVE_DATE_CONTEXT_UNSUPPORTED");return;case"BINARY":{if(Pa(o)===null)return;if(ye(o,t).capability!=="EXACT_PUSHDOWN"){r="RELATIVE_DATE_LEAF_NOT_EXACT";return}n.push(o);return}case"EXISTS":ci(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 Pa(e){return e.right.type==="KINTONE_FUNC"&&Xe(e.right.name)?e.right.name:e.right.type==="IN_LIST"&&e.right.values.length===1&&e.right.values[0].type==="KINTONE_FUNC"&&Xe(e.right.values[0].name)?e.right.values[0].name:null}function ci(e){let t=[],n=r=>{if(r.type==="BINARY"&&Pa(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 kh(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 Mh(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 ba(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=ba(e.left,t,n),i=ba(e.right,t,n);return r!==null&&i!==null?{...e,left:r,right:i}:r??i}case"GROUP":{let r=ba(e.expr,t,n);return r===null?null:{...e,expr:r}}case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return null}}var ui={type:"BOOLEAN",value:!0};function Na(e,t){if(e.type==="BINARY"&&t.has(e))return ui;switch(e.type){case"LOGICAL":{if(e.op!=="AND")return e;let n=Na(e.left,t)??ui,r=Na(e.right,t)??ui;return wa(n)?wa(r)?null:r:wa(r)?n:n===e.left&&r===e.right?e:{...e,left:n,right:r}}case"GROUP":{let n=Na(e.expr,t)??ui;return wa(n)?ui:n===e.expr?e:{...e,expr:n}}case"BINARY":case"NULL_CHECK":case"NOT":case"EXISTS":case"BOOLEAN":return e}}function wa(e){return e.type==="BOOLEAN"&&e.value}function Fh(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 xh(e,t){let n=new Map;for(let r of t){if(!fr.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 B=class extends Error{constructor(t){super(`ImportSourceError: ${t}`),this.name="ImportSourceError"}};function Xf(e,t){if(!t)throw new B("IMPORT source capability is not available.");let n=t(e);if(!n)throw new B(`source "${e}" is not supplied.`);return n}async function Ca(e,t){let n=t.get(e);return n||(n=e.load().then(r=>{if(!(r.bytes instanceof Uint8Array))throw new B("loader must return Uint8Array bytes.");if(r.bytes.byteLength>10485760)throw new B("source exceeds the 10485760 byte limit.");return r}),t.set(e,n)),n}function Gh(e,t){try{return new TextDecoder(t==="sjis"?"shift_jis":"utf-8",{fatal:!0}).decode(e).replace(/^\uFEFF/,"")}catch{throw new B(`invalid ${t.toUpperCase()} byte sequence.`)}}function Kh(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 B(`unexpected character after closing quote at offset ${a}.`);if(c==='"'){if(r.length!==0)throw new B(`quote in unquoted cell at offset ${a}.`);i=!0,a++;continue}if(c===","){s(),a++;continue}if(c==="\r"||c===`
|
|
6
6
|
`){c==="\r"&&e[a+1]===`
|
|
7
|
-
`&&a++,l(),a++;continue}r+=c,a++}if(i)throw new
|
|
7
|
+
`&&a++,l(),a++;continue}r+=c,a++}if(i)throw new B("unterminated quoted cell.");return(r.length>0||n.length>0||o)&&l(),t}function Bh(e){let t=new Set;e.forEach((n,r)=>{if(n==="")throw new B(`CSV column ${r+1} has an empty name.`);if(t.has(n))throw new B(`CSV column name "${n}" is duplicated.`);t.add(n)})}function Oa(e,t){let n=Kh(Gh(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}`)),Bh(r),i.length===0)throw new B("CSV has no data rows.");return i.forEach((o,a)=>{if(o.length!==r.length)throw new B(`CSV row ${a+(t.hasHeader?2:1)} has ${o.length} cells; expected ${r.length}.`)}),{columns:r,rows:i}}var $h=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),Vh=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),pi=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 Qf(e,t,n){if(!$h.has(t??""))return e;if(e==="")return[];let r=e.split(/\r\n|\n/);if(r.some(i=>i===""))throw new pi;return Vh.has(t??"")?r.map(i=>({code:i})):r}function Ct(e,t,n,r){throw new B(`JSON ${e} (offset=${t}, line=${n}, column=${r}).`)}function Zf(e){try{return new TextDecoder("utf-8",{fatal:!0}).decode(e)}catch{throw new B("JSON source is not valid UTF-8.")}}function eE(e){let t=[],n=0,r=1,i=1,o=()=>{let s=e[n++];return s===`
|
|
8
8
|
`?(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&&
|
|
10
|
-
`,r:"\r",t:" "};if(E in g){d+=g[E];continue}E!=="u"&&Tt(`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)||Tt("has invalid unicode escape",n,r,i);for(let A=0;A<4;A++)o();let m=Number.parseInt(y,16);if(m>=55296&&m<=56319){(e.slice(n,n+2)!=="\\u"||!/^[0-9a-fA-F]{4}$/.test(e.slice(n+2,n+6)))&&Tt("has an unpaired high surrogate",n,r,i),o(),o();let A=e.slice(n,n+4);for(let S=0;S<4;S++)o();let h=Number.parseInt(A,16);(h<56320||h>57343)&&Tt("has an invalid surrogate pair",n-4,r,Math.max(1,i-4)),d+=String.fromCodePoint(65536+(m-55296<<10)+h-56320)}else m>=56320&&m<=57343?Tt("has an unpaired low surrogate",n-4,r,Math.max(1,i-4)):d+=String.fromCharCode(m)}f||Tt("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}Tt(`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 fa(e){return e.kind==="eof"?"end of input":e.kind==="punct"?e.value:e.kind}function Ea(e){if(e.byteLength===0)throw new K("JSON source is empty.");let t=Uf(vf(e)),n=0,r=(c,p=t[n])=>{throw new K(`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 ${fa(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 ${fa(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 ${fa(c)}`,c)},s=a();t[n].kind!=="eof"&&r(`has trailing data; found ${fa(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 K("JSON source contains no records.");return l.forEach((c,p)=>{if(!(c instanceof Map))throw new K(`JSON record ${p+1} must be an object.`)}),l}var Sh=new Set(["CHECK_BOX","MULTI_SELECT"]),kf=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function ut(e,t,n){throw new K(`JSON field validation failed (row=${e}, field=${t}): ${n}`)}function Th(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof Map)&&e.kind==="number"}function Ih(e,t,n){if(e===null)return"";if(typeof e=="string")return e;if(typeof e=="boolean"&&ut(n,t.code,"boolean is not accepted."),Th(e)){t.fieldType==="NUMBER"&&ut(n,t.code,"precision target requires a JSON string."),(!/^-?(?:0|[1-9]\d*)$/.test(e.lexeme)||e.lexeme==="-0")&&ut(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)||ut(n,t.code,`JSON number ${e.lexeme} is outside the safe integer range.`),String(i)}e instanceof Map&&ut(n,t.code,"object is not accepted for a flat field."),Array.isArray(e)||ut(n,t.code,"unsupported value type."),!Sh.has(t.fieldType)&&!kf.has(t.fieldType)&&ut(n,t.code,"array is accepted only for multi-value fields.");let r=e.map(i=>(typeof i!="string"&&ut(n,t.code,"array elements must be strings."),i));return new Set(r).size!==r.length&&ut(n,t.code,"array elements must not contain duplicates."),kf.has(t.fieldType)?JSON.stringify(r.map(i=>({code:i}))):JSON.stringify(r)}function Kl(e,t,n,r){if(t.encoding&&t.encoding!=="utf8")throw new K("JSON source is UTF-8 only.");let i=Ea(t.bytes);if(i.length>r)throw new K(`source rows (${i.length}) exceed maxRecords (${r}).`);let o=new Map(n.map(l=>[l.code,l]));if(o.size!==n.length)throw new K("JSON target fields contain duplicates.");let a=[],s=[];return i.forEach((l,c)=>{for(let d of l.keys())o.has(d)||ut(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]=Ih(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 $l(e,t,n,r,i,o){let a=da(t.bytes,{encoding:e.encoding??t.encoding??"utf8",hasHeader:e.hasHeader,columns:e.columns});if(a.rows.length>n)throw new K(`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 K("ERR_IMPORT_HEADER_REUSED: a BY NAME header cannot be consumed more than once.");let l=new Map(a.columns.map((y,m)=>[y,m]));for(let y of r)if(!l.has(y))throw new K(`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 K("ERR_IMPORT_HEADER_REUSED: record-number source header is lookup-only and cannot be a write target.");if(o&&!l.has(o))throw new K(`ERR_IMPORT_MISSING_COLUMN: required header "${o}" is missing.`);let u=[],d=[],f=y=>a.rows.filter(m=>m[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,m]of a.columns.entries()){if(p.has(m)||m===o)continue;let A=c.get(m);if(A)u.push({column:m,reason:R(A),nonEmptyCells:f(y)});else if(e.ignoreUnknownColumns)d.push({column:m,reason:"unknown column ignored by explicit policy",nonEmptyCells:f(y)});else throw new K(`ERR_IMPORT_UNKNOWN_COLUMN: unknown CSV header "${m}".`)}for(let y of r){let m=c.get(y);if(!m)throw new Error(`ArgumentError: DML target field ${y} does not exist.`);if(m.inSubtable||m.writable===!1||m.fieldType==="FILE"||m.fieldType==="SUBTABLE")throw new Error(`ArgumentError: DML target field ${y} is not writable (${m.fieldType}).`)}let E=[];return{rows:a.rows.map(y=>{let m=[],A={};for(let h of r){let S=y[l.get(h)];try{A[h]=Df(S,c.get(h)?.fieldType,{cliKintone:!0})}catch(w){if(!(w instanceof li))throw w;A[h]=S,m.push({field:h,code:w.code,message:w.message})}}return E.push(m),A}),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 ui=(e,t,n)=>{throw new K(`JSON subtable validation failed (parentRow=${e}, field=${t}): ${n}`)};function Mf(e,t,n,r,i=r){if(t.encoding&&t.encoding!=="utf8")throw new K("JSON source is UTF-8 only.");let o=Ea(t.bytes);if(o.length>r)throw new K(`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 K("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)||ui(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 g=l.get(E);if(R.kind==="FIELD"){g instanceof Map&&ui(p,E,"object is not accepted for a top-level field."),u.set(E,g);continue}Array.isArray(g)||ui(p,E,"subtable value must be an array."),f.add(E);let y=new Set(R.children),m=g.map((A,h)=>{A instanceof Map||ui(p,E,`childRow=${h+1} must be an object.`);let S=A;for(let w of S.keys())y.has(w)||ui(p,w,`unknown child key in subtable ${E} at childRow=${h+1}.`);if(s++,s>i)throw new K(`source child rows (${s}) exceed limit (${i}).`);return{childRowNumber:h+1,values:S}});d.set(E,m)}return{rowNumber:p,top:u,subtables:d,replacementTables:f}})}}function Ff(e,t,n,r,i,o){let a=da(t.bytes,{encoding:e.encoding??t.encoding??"utf8",hasHeader:e.hasHeader,columns:e.columns});if(!e.hasHeader||a.columns[0]!=="*")throw new K('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 K(`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 K(`ERR_IMPORT_MISSING_COLUMN: required header "${d.field}" is missing.`);for(let d of c){if(!d.rowIdSourceHeader||!s.has(d.rowIdSourceHeader))throw new K(`ERR_IMPORT_MISSING_COLUMN: row-ID header for ${d.subtableCode} is missing.`);for(let f of d.children)if(!s.has(f))throw new K(`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 K(`ERR_IMPORT_MARKER: invalid marker ${JSON.stringify(E)} at source row ${R}.`);if(E==="*"){if(p.length>=i)throw new K(`source parent rows exceed maxRecords (${i}).`);u={rowNumber:p.length+1,markerRowNumber:R,top:new Map(l.map(g=>[g.field,d[s.get(g.field)]])),subtables:new Map(c.map(g=>[g.subtableCode,[]])),replacementTables:new Set(r),...o?{recordNumberSourceValue:d[s.get(o)]}:{}},p.push(u)}else if(u){for(let g of l){let y=d[s.get(g.field)];if(y!==""&&y!==u.top.get(g.field))throw new K(`ERR_IMPORT_PARENT_VALUE_ON_CONTINUATION: ${g.field} at source row ${R}.`)}if(o){let g=d[s.get(o)];if(g!==""&&g!==u.recordNumberSourceValue)throw new K(`ERR_IMPORT_PARENT_VALUE_ON_CONTINUATION: ${o} at source row ${R}.`)}}else throw new K(`ERR_IMPORT_MARKER: first data row must start a parent (source row ${R}).`);for(let g of c){let y=d[s.get(g.rowIdSourceHeader)],m=new Map(g.children.map(h=>[h,d[s.get(h)]]));if(y===""&&[...m.values()].every(h=>h===""))continue;let A=u.subtables.get(g.subtableCode);A.push({childRowNumber:A.length+1,sourceRowNumber:R,...y?{rowId:y}:{},values:m})}}),p.length===0)throw new K("CSV has no parent rows.");return{records:p}}var wh=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),bh=new Set(["SUBTABLE","FILE","CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function Hl(e,t){if(t!=null&&e.invalidParentRows.size>t)throw new Error(`RejectLimitExceededError: rejected parents (${e.invalidParentRows.size}) exceed REJECT LIMIT (${t}).`)}function Kf(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)xf(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)xf(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=>Nh(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 Nh(e,t,n,r,i,o,a,s){let l=[],c={};for(let d of t)e.top.has(d.field)&&Wl(e.top.get(d.field),r.get(d.field),o,c,d.field,l,Vl(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)||Gf(d,o,p,l,Vl(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 g=l.length,y={},m=i.get(d.subtableCode);for(let A of d.children){let h=m.get(A),S=Vl(e,a,A,d.subtableCode,E.childRowNumber,E.sourceRowNumber??e.markerRowNumber);E.values.has(A)?Wl(E.values.get(A),h,o,y,A,l,S):Gf(h,o,y,l,S)}l.length===g?(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 xf(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&&bh.has(t.fieldType))throw new Error(`ArgumentError: IMPORT ${n?`child ${n}.${e}`:`field ${e}`} is not writable (${t.fieldType}).`)}function Gf(e,t,n,r,i){let o=nn(e.defaultValue)?"":e.defaultValue;Wl(o,e,t,n,e.code,r,i,!nn(e.defaultValue))}function Wl(e,t,n,r,i,o,a,s=!1){let l=Ph(e),c=ve(l,t,n);c.ok?r[i]={value:Ch(l,t)?l:c.value}:o.push({...a,code:c.code,message:s?`\u65E2\u5B9A\u5024: ${c.message}`:c.message})}function Ph(e){return Bf(e)?e.lexeme:Array.isArray(e)?e.map(t=>t instanceof Map?t:Bf(t)?t.lexeme:t):e}function Bf(e){return typeof e=="object"&&e!==null&&e.kind==="number"}function Ch(e,t){return wh.has(t.fieldType)&&Array.isArray(e)&&e.every(n=>typeof n=="object"&&n!==null&&"code"in n)}function Vl(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 Yl=["$err_statement","$err_operation","$err_row","$err_field","$err_subtable","$err_subrow","$err_source_row","$err_code","$err_message"];function jl(e,t,n=1){return e.map(r=>{let i={};for(let o of t)i[o]=r.sourceValues.get(o)==null?"":Oh(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 Oh(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 zl(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 $f(e,t){return zl(e,t,"DROP")}function Vf(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 Wf(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 Lh(e,t){let n=e[t]?.value;return Array.isArray(n)?n:[]}function Hf(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 Yf(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=Lh(c.record,f),E=new Set(R.map(w=>w.id).filter(w=>!!w)),g=s.subtables.get(f)??[],y=o.subtables.get(f)??[],m=0,A=0,h=0,S=g.map((w,N)=>{let b=y[N]??{};return w.rowId&&E.has(w.rowId)?(m++,{rowId:w.rowId,record:b}):(w.rowId&&((i.get(w.rowId)??[]).some(P=>P.parentId!==l||P.table!==f)&&p.push({operation:"UPDATE",parentRow:o.parentRow,field:w.rowId,subtable:f,subrow:w.childRowNumber,sourceRow:w.sourceRowNumber,code:"ERR_IMPORT_FIELD_OWNERSHIP",message:`rowIdOwnedElsewhere: ${w.rowId}`,sourceValues:w.values}),h++),A++,{record:b})});u.set(f,S),d.push({table:f,existingRows:R.length,inputRows:g.length,updateRows:m,addRows:A,deleteRows:R.length-m,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 ql="#__import_source";function jf(e){return{...e,from:{appId:0,alias:null,cteName:ql}}}function _h(e){return/^[0-9]+$/.test(e)?e.replace(/^0+(?=\d)/,""):null}function Xl(e,t){let n=e.map(_h),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 Dh="\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",Rn=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"}},de=new WeakMap;function dE(e){return de.get(e)}var Sn=new WeakMap,Ua=new WeakMap,zf=new WeakMap,vh=1,Uh=1;function fE(e,t){if(t)return t;let n=zf.get(e);return n||(n=`client:${vh++}`,zf.set(e,n)),n}function Nu(e){return`${e}\0inv:${Uh++}`}async function Pu(e,t,n={}){let r=Date.now(),i=Nu(fE(t,n.cacheContext));try{let o=wT(e,n.enableImport===!0),a=EE(),s=gE(t,a),l={aborted:!1},c=Ou(s,l,!Mh(o)||El(o)),p=await nu(o,c,n,i);a.elapsedMs=Date.now()-r;let u={...yE(p,l),metrics:a};if(p.type==="SELECT"){let d=de.get(p);d&&de.set(u,d)}return u}finally{Yu(i)}}function EE(){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 RE=Symbol("limitMetricsSink");function Cu(e,t){let n=e[RE];n&&(n.limitReached=!0,n.limitReachedApps.includes(t)||n.limitReachedApps.push(t))}function gE(e,t){return{[RE]: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 qf=Symbol("searchAbortFailClosed");function Ou(e,t,n){return n&&e[qf]?e:{...e,...n?{[qf]:!0}:{},getRecords:async r=>{let i=await e.getRecords(r);if(i.searchAborted&&(t.aborted=!0,n))throw new Rn;return i}}}function kh(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 Mh(e){return e.type==="SELECT"||e.type==="UNION"||e.type==="WITH"}function yE(e,t){if(!t.aborted||e.type!=="SELECT")return e;let n=new Set(e.warnings??[]);return n.add(Dh),{...e,warnings:[...n]}}async function Xf(e,t,n){let r=await Ni(e,t,n);return Gl(r),r}async function Ni(e,t,n){return Lf(e,{select:async r=>{let{resolver:i}=await dn(r,t,n);return Se(r.where,i)},dml:r=>CE(r,t,n),prefilterDecomposition:async r=>{if(r.where===null)return null;let{resolver:i}=await dn(r,t,n);return Bl(r,i)},joinServerFunctionPlan:async r=>{await dn(r,t,n);let i=await Ma(r,t,n),o=ka(r,i);return o===null?null:(Xn(o.joinPlan)&&xu.set(r,o),o.joinPlan)}})}async function nu(e,t,n,r){let i=await Ni(e,t,r);e.type!=="EXPLAIN"&&Gl(i);let o=iu(e);if(o!==null&&!nT(e))throw new Error(`ParseError: variable @${o} is not defined in a batch.`);if(_n("phase15b",e),zi("phase15b",e),ze(e),e.type!=="EXPLAIN"&&await Xh(e,t,r),e.type==="IMPORT")return JE(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 hu(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 zu(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 Fh(e,t,n,r);case"SELECT":return Yt(uu(e),t,n,r,void 0,n.captureColumnMeta===!0,n.captureColumnMeta===!0);case"UNION":return KE(e,t,n,r,n.captureColumnMeta===!0,n.captureColumnMeta===!0);case"WITH":return Wu(e,t,n,r,void 0,n.captureColumnMeta===!0);case"INSERT":return XS(e,t,n,r);case"INSERT_SELECT":return Qu(e,t,n,r);case"UPSERT":return RT(e,t,n,r);case"UPSERT_SELECT":return tc(e,t,n,r);case"UPDATE":return hu(e,t,n,r);case"DELETE":return ET(e,t,n,r);case"REORDER":return ST(e,t,n,r);case"SHOW_APPS":return iR(t);case"DESCRIBE":return oR(e,t,r);case"EXPLAIN":return CT(e,t,r,n.maxRecords??1e4,n.cursorMaxActive??2,e.query.type==="UPDATE"&&e.query.applyBlocks?.length?We(n.dmlMaxRows,"dmlMaxRows",Pt):Pt,e.query.type==="UPDATE"&&e.query.applyBlocks?.length?We(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ie):Ie,i);case"CREATE_TEMP_TABLE":throw new Error("ArgumentError: CREATE TEMP TABLE requires a batch (temp tables are batch-scoped).");case"DROP_TEMP_TABLE":throw new Error("ArgumentError: DROP TEMP TABLE requires a batch (temp tables are batch-scoped).");case"SET_VARIABLE":throw new Error("ArgumentError: SET variable requires a batch.");case"DECLARE_VARIABLE":throw new Error("ArgumentError: DECLARE variable requires a batch.");case"ASSERT":return TE(e,t,n,r)}}var Lu=["$id","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id","$err_count"],_u=["$id","$err_subtable","$err_field","$err_code","$err_count"];function Du(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 mE(e=!1){let t=e?_u:Lu;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 Fh(e,t,n,r){if(e.errorTable)throw new Error("ArgumentError: VALIDATE INTO requires a batch.");return AE(e,t,n,r)}async function AE(e,t,n,r){let i=await re(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=sl(e,i),l=new Set(s.flatMap(O=>ol(O.field))),c={present:il.filter(O=>l.has(O)),absent:il.filter(O=>!l.has(O))},p=e.checkGroups??[],u=$n(p);for(let O of u){if(O.field!=="$id"&&!o.has(O.field)&&!a.has(O.field))throw he(`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,G])=>[O,G.fieldType]));d.set("$id","RECORD_NUMBER"),hn(e,d);let f=Du(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 dt(e.appId,t,r):void 0,g=O=>O.field==="$id"?Q({fieldType:"__ID__"}):o.get(O.field)?.semantics??(o.has(O.field)?Q(o.get(O.field)):void 0),y=Se(e.where,g);if(y.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${fn(y)}).`);let m=new Map([...o].map(([O,G])=>[O,G.fieldType])),A=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:Mn(e.where,{allowUnqualifiedFields:!0,fieldTypes:m,fieldOptions:A,allowKlike:!1}),S=h===null?"":H(h),N=(await Ce(t.getRecords,e.appId,S,R,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"})).map(O=>({id:String(O.$id?.value??""),record:O,flat:St(O,null)})).filter(O=>e.where===null||ie(e.where,O.flat,G=>d.get(G.field))),b=[],_=new Map,P=new Map,D=new Set,F=0,L=O=>{if(D.add(O.id),F+=1,e.summary){let z=JSON.stringify([O.id,O.subtable??"",O.field,O.code]),M=P.get(z);M?M.$err_count=String(Number(M.$err_count)+1):P.set(z,{$id:O.id,$err_subtable:O.subtable??"",$err_field:O.field,$err_code:O.code,$err_count:"1"});return}let G=JSON.stringify([O.id,O.subtable??"",O.field,O.code,O.message]),k=_.get(G);k?(k.$err_count=String(Number(k.$err_count)+1),O.subrow!==void 0&&(k.$err_subrow=`${k.$err_subrow},${O.subrow}`,k.$err_subrow_id=`${k.$err_subrow_id},${O.subrowId??""}`)):_.set(G,{$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"})},v=s.filter(O=>!O.subtableCode),T=new Map;for(let O of s){if(!O.subtableCode)continue;let G=T.get(O.subtableCode)??[];G.push(O),T.set(O.subtableCode,G)}for(let O of N){for(let G of v){let k=O.record[G.field.code]?.value,z=ve(k,G.field,E);z.ok||L({id:O.id,field:G.field.code,code:z.code,message:z.message,value:Gr(k,G.field.fieldType)})}for(let[G,k]of T){let z=O.record[G]?.value;if(Array.isArray(z))for(let M=0;M<z.length;M++){let V=z[M];for(let Z of k){let $=V.value?.[Z.field.code]?.value,x=ve($,Z.field,E);if(!x.ok){let fe=Fo(G,M,V);L({id:O.id,field:Z.field.code,code:x.code,message:x.message,value:Gr($,Z.field.fieldType),...fe})}}}}for(let G of wo(p,O.flat,k=>d.get(k.field)))L({id:O.id,field:"",code:"ERR_CHECK",message:G.message,value:""})}if(e.summary)b.push(...P.values());else for(let O of _.values()){let G=Number(O.$err_count);O.$err_subtable!==""&&G>=2&&(O.$err_message=`${O.$err_message}\uFF08${G}\u884C: ${O.$err_subrow}\uFF09`),b.push(O)}let U={type:"SELECT",columns:[...e.summary?_u:Lu],rows:b,rowCount:b.length,validateStats:{errorRecords:D.size,errorCount:F,constraintMetadata:c}};return de.set(U,mE(e.summary===!0)),U}var Ve=1e4;function pt(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])||!xh(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 xh(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||!mo(i.semantics,r.semantics))return!1}return!0}var Zn=class extends Error{constructor(){super("TimeoutError: batch timeout exceeded.")}};async function hE(e,t,n={}){let r=vu(e,n.enableImport===!0),i=_s(r);if(r.forEach(f=>zi("phase15b",f)),n.allowApplyMutation!==!0&&r.some(f=>os(f)||f.type==="UPSERT"&&Gh(f)))throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let o=fl(r,n.variables),a=SE(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 te(`ArgumentError: temp table references in ${f.statementType} are not supported yet.`,f.index)}let l=EE(),c=gE(t,l),p=Date.now(),u=n.timeoutMs!=null?p+n.timeoutMs:null,d=Nu(fE(t,n.cacheContext));try{let f=new Map,R=new Map,E=[],g=new Set,y=null;for(let m=0;m<r.length;m++){let A=i.statements[m],h={index:m,type:A.statementType};if(y){E.push({...h,status:"skipped",skippedReason:y}),g.add(m);continue}let S=A.dependsOn.find(w=>g.has(w));if(S!==void 0){let w=i.statements[S].tempTablesCreated[0]??`statement ${S}`;E.push({...h,status:"skipped",skippedReason:`dependency: ${w}`}),g.add(m);continue}if(u!==null&&Date.now()>=u){E.push({...h,status:"skipped",skippedReason:"timeout"}),g.add(m),y="timeout";continue}try{let w=u!==null?u-Date.now():null,N=s.confirm,b=N?{...s,confirm:(L,v,T)=>N(L,v,{statementIndex:m,statementCount:r.length,statementType:A.statementType,targetAppId:A.targetAppId,...T?.importDetail?{importDetail:T.importDetail}:{},...T?.applyDetail?{applyDetail:T.applyDetail}:{},...T?.applyDiagnostic?{applyDiagnostic:T.applyDiagnostic}:{}})}:s,_={aborted:!1},P=Ou(c,_,A.statementType!=="SELECT"&&A.statementType!=="UNION"&&A.statementType!=="WITH"||El(r[m])),D=kh(P),F=await $h(Bh(r[m],A,D.client,b,d,f,R,a),w,D.closeActive);F.result&&(F.result=yE(F.result,_)),E.push({...h,status:"success",...F})}catch(w){E.push({...h,status:"error",error:Vh(w),...w instanceof Si?{result:w.diagnostic}:{}}),g.add(m),w instanceof Zn?y="timeout":w instanceof tr?y="assertion":A.statementType==="SET_VARIABLE"||A.statementType==="DECLARE_VARIABLE"?y="fail-fast":n.continueOnError||(y="fail-fast")}}return l.elapsedMs=Date.now()-p,{ok:E.every(m=>m.status==="success"),statementCount:r.length,statements:E,analysis:i,metrics:l}}finally{Yu(d)}}function Gh(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 Bh(e,t,n,r,i,o,a,s){if(e.type==="SET_VARIABLE"){let c=ba(e,a);if(ze(c),await Xf(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 IE(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 Oa(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 pn?new Error(`ArgumentError: ${p.message}`):p}else a.set(e.name,Jf(c.expr));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=Jf(e.default);a.set(e.name,{type:"string",value:p.type==="number"?p.raw??String(p.value):p.value})}return{}}let l=ba(e,a);if(_n("phase15b",l),zi("phase15b",l),ze(l),await Xf(l,n,i),l.type==="VALIDATE"){let c=await AE(l,n,{...r,onLimitReached:"error"},i);return l.errorTable&&pt(o,l.errorTable,c.columns,c.rows,r.tempTableMaxRows??Ve,de.get(c)??mE(l.summary===!0)),{result:c}}if(l.type==="IMPORT")return{result:await JE(l,n,r,i,o)};if("validateOnly"in l&&l.validateOnly===!0){let c=await zu(l,n,{...r,onLimitReached:"error"},i,o,t.index+1);return l.validationErrorTable&&pt(o,l.validationErrorTable,c.columns,c.errors,r.tempTableMaxRows??Ve,Sn.get(c)??new Map),{result:c}}if("onErrorSkip"in l&&l.onErrorSkip===!0)return{result:await mu(l,n,{...r,onLimitReached:"error"},i,o,t.index+1)};if(l.type==="CREATE_TEMP_TABLE"){let c={...r,maxRecords:r.tempTableMaxRows??Ve,onLimitReached:"error"},p=await Kh(l.query,n,c,i,o);return o.set(l.name,{rows:p.rows,columns:p.columns,columnMeta:de.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;bu.set(c,o);try{return{result:await nu(c,n,r,i)}}finally{bu.delete(c)}}if(l.type==="ASSERT")return await TE(l,n,r,i,o),{};if(t.tempTablesReferenced.length>0){if(l.type==="SELECT"||l.type==="UNION")return{result:await bt(l,n,r,o,i,r.captureColumnMeta===!0)};if(l.type==="WITH")return{result:await Wu(l,n,r,i,o)};if(l.type==="INSERT_SELECT")return{result:await Qu(l,n,r,i,o)};if(l.type==="UPSERT_SELECT")return{result:await tc(l,n,r,i,o)};if(l.type==="UPDATE"&&l.from?.cteName!=null)return{result:await hu(l,n,r,i,o)};throw new Error(`ArgumentError: temp table references in ${e.type} are not supported yet.`)}return{result:await nu(l,n,r,i)}}async function Kh(e,t,n,r,i){return e.type==="WITH"?Wu(e,t,n,r,i,!0):bt(e,t,n,i,r,!0)}async function $h(e,t,n){if(t===null)return e;if(t<=0)throw n&&await n(),e.catch(()=>{}),new Zn;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 Zn)})()},t)})])}catch(a){throw a instanceof Zn&&e.catch(()=>{}),a}finally{r!==void 0&&clearTimeout(r)}}function Vh(e){let t;if(e instanceof ot)t={code:e.name,message:e.message,partialSuccess:e.partialSuccess};else if(e instanceof Error)t={code:(e.name!=="Error"?e.name:null)??Jl(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:Wh(e);t={code:typeof n.code=="string"&&n.code.length>0?n.code:Jl(r),message:r}}else{let n=String(e);t={code:Jl(n),message:n}}return Object.defineProperty(t,"cause",{value:e,enumerable:!1,configurable:!1,writable:!1}),t}function Jl(e){return e.match(/^([A-Za-z]+Error):/)?.[1]??"Error"}function Wh(e){try{return JSON.stringify(e)??String(e)}catch{return String(e)}}function vu(e,t=!1){let n=new Gt(e).tokenize();return new Bt(n,{import:t}).parseStatements()}function Hh(e,t){try{let n=vu(`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 SE(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)?Hh(r.name,t[r.name]):r.default);return n}function Jf(e){switch(e.type){case"STRING":return{type:"string",value:e.value};case"NUMBER":return{type:"number",value:e.value,raw:W(e)};case"KINTONE_FUNC":return{type:"string",value:jp(e.name)};case"STRING_FUNC":return{type:"string",value:ue(e,{})};case"ARITH":{let t=le(e,{});if(!Number.isFinite(t))throw new Error("ArgumentError: SET scalar arithmetic produced a non-finite number.");return{type:"number",value:t,raw:String(t)}}}}function ba(e,t){return ru(e,t,!1)}function ru(e,t,n){if(Array.isArray(e))return e.map(r=>ru(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,ru(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=Yh(i);if(o.type==="SELECT"&&Ke(o.where,!0)&&(o.where=null),(o.type==="UPDATE"||o.type==="DELETE"||o.type==="REORDER")&&Ke(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 Ke(e,t){return e!==null&&typeof e=="object"&&e.type==="BOOLEAN"&&(t===void 0||e.value===t)}function Yh(e){if(e.type==="NOT"&&Ke(e.expr))return{type:"BOOLEAN",value:!e.expr.value};if(e.type==="GROUP"&&Ke(e.expr))return e.expr;if(e.type==="LOGICAL"){let t=e.left,n=e.right;if(e.op==="AND"){if(Ke(t,!1)||Ke(n,!1))return{type:"BOOLEAN",value:!1};if(Ke(t,!0))return n;if(Ke(n,!0))return t}else if(e.op==="OR"){if(Ke(t,!0)||Ke(n,!0))return{type:"BOOLEAN",value:!0};if(Ke(t,!1))return n;if(Ke(n,!1))return t}}return e}function iu(e){if(Array.isArray(e)){for(let t of e){let n=iu(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=iu(n);if(r!==null)return r}}return null}var tr=class extends Error{constructor(t){super(`AssertError: ${t}`),this.name="AssertError"}},pn=class extends Error{constructor(t){super(t),this.name="ScalarSubqueryError"}};async function TE(e,t,n,r,i){let o=await Ra(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 Ra(e.low,t,n,r,i),c=await Ra(e.high,t,n,r,i);if(!en(">=",o,l,a)||!en("<=",o,c,a))throw new tr(`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 Ra(e.right,t,n,r,i);if(!en(e.op,o,s,a))throw new tr(`assertion failed: ${e.text} (actual: ${o}).`);return{type:"ASSERT",condition:e.text}}async function Ra(e,t,n,r,i){switch(e.type){case"VARIABLE":throw new Error(`ParseError: unresolved batch variable @${e.name}.`);case"NUMBER":return W(e);case"STRING":return e.value;case"ARITH":return String(ou(e));case"SCALAR_SUBQUERY":try{return await IE(e.query,t,n,r,i)}catch(o){throw o instanceof pn?new tr(o.message):o}}}async function IE(e,t,n,r,i){let{query:o,probed:a}=jh(e),s=await Ri(o,t,n,r,i);if(s.columns.length!==1)throw new pn(`scalar subquery returned ${s.columns.length} columns (expected 1 column).`);if(s.rowCount===0)throw new pn("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 pn(`scalar subquery returned ${l} (expected 1 row).`)}return s.rows[0]?.[s.columns[0]]??""}function jh(e){return X(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 ou(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=ou(e.left),n=ou(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 Pi(e,t,n,r,i=!1){let o=[e.from,...e.joins.map(d=>d.table)],a=i||at(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 re(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,g=["=","!=","<>"].includes(R)&&E?.type==="STRING"&&E.value!=="";if(f.type==="BINARY"&&([">","<",">=","<="].includes(R)||g)){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(g=>f.get(g)?.fieldType==="STATUS"))return;let E=await ju(d,t,n);E&&p.set(d,E)}));let u=(d,f,R)=>{if(f==="$id")return Kn(Q({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(ge(d,f));if(!E)return;let g=E.semantics??Q(E),y=E.fieldType==="STATUS"&&p.has(d.appId)?{...g,optionOrder:p.get(d.appId)}:g;return Kn(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=>Oe(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=>ha(R,d.field)!==void 0))return f.length>1?B("string"):void 0}}var wE=new WeakMap;async function dn(e,t,n,r,i=!1){let o=await Pi(e,t,n,r,i);if(e.where===null)return{resolver:o,rewrites:[]};let a=Bd(e.where,o);return e.where=a.normalizedWhere,a.rewrites.length>0&&wE.set(e,a.rewrites),{resolver:o,rewrites:a.rewrites}}function zh(e){return e.columns.some(t=>t.type==="WINDOW_COL"&&t.windowKind==="AGGREGATE"&&t.orderBy.length>0&&t.frame?.source==="DEFAULT")}function bE(e){return zh(e)||e.columns.some(t=>t.type==="WINDOW_COL"&&t.windowKind==="VALUE")}function Qf(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===Oe(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 Zf(e,t){return e!=="DIRECT"?"\u305D\u306E\u8868\u306E\u4E2D\u3067\u4E00\u610F\u306B\u306A\u308B\u5217\uFF08\u5143\u306E\u96C6\u7D04\u306E\u30AD\u30FC\u306A\u3069\uFF09\u3092 ORDER BY \u306B\u542B\u3081\u3066\u304F\u3060\u3055\u3044\u3002\u96C6\u7D04\u7D50\u679C\u306E\u5217\u306F\u4E00\u610F\u3067\u3082\u8A3C\u660E\u3067\u304D\u306A\u3044\u305F\u3081\u3001\u3059\u3067\u306B\u4E00\u610F\u306A\u5834\u5408\u3082\u3053\u306E\u8B66\u544A\u304C\u51FA\u307E\u3059\u3002\u5143\u306E\u96C6\u7D04\u306E\u30AD\u30FC\u3092\u3059\u3079\u3066 ORDER BY \u306B\u542B\u3081\u3066\u3044\u308B\u306A\u3089\u3001\u3053\u306E\u8B66\u544A\u306F\u7121\u8996\u3057\u3066\u69CB\u3044\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 NE(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"||Qf(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`+Zf(n,"RANGE"));for(let o of e.columns)o.type!=="WINDOW_COL"||o.windowKind!=="VALUE"||Qf(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`+Zf(n,"VALUE"));return i}function Uu(e,t){if(t.length===0)return e;let n={...e,warnings:[...new Set([...e.warnings??[],...t])]},r=de.get(e);return r&&de.set(n,r),n}function ku(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=>at(i.condition))?!0:Object.values(r).some(t)};return e.columns.some(t)}function PE(e,t){let n=new Map;for(let r of e.columns){if(!("alias"in r)||!r.alias)continue;let i;r.type==="FIELD"?i=t(Ue(r.field)):r.type==="ARITH_COL"||r.type==="ARITH_AGG_COL"?i=B("number"):r.type==="WINDOW_COL"?r.windowKind===void 0||r.windowKind==="RANKING"||r.windowKind==="AGGREGATE"&&(r.aggFunc==="COUNT"||r.aggFunc==="SUM"||r.aggFunc==="AVG")?i=B("number"):(r.windowKind==="AGGREGATE"||r.windowKind==="VALUE")&&r.arg.type!=="WILDCARD"&&(i=yn(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=yn(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=gn(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 fn(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 Na(e){return e.orderBy.length>0||e.columns.some(t=>t.type==="WINDOW_COL"&&t.orderBy.length>0)}async function CE(e,t,n){if(e.subtableCode||e.type==="UPDATE"&&e.from!=null)return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]};let r=at(e.where)?await re(e.appId,t,n):[],i=new Map(r.map(o=>[o.code,o]));return e.where.type==="BOOLEAN"&&e.where.value===!1?Se(null,()=>{}):Se(e.where,o=>{if(o.field==="$id")return Q({fieldType:"__ID__"});let a=i.get(o.field);return a?.semantics??(a?Q(a):void 0)})}async function er(e,t,n){if(e.subtableCode||e.type==="UPDATE"&&e.from!=null)return;let r=await CE(e,t,n);if(r.capability!=="EXACT_PUSHDOWN")throw new ne(`WHERE predicate cannot be represented by kintone REST (${fn(r)})`)}async function Yt(e,t,n,r,i,o=!1,a=!1,s="DIRECT"){let l;if(await Ai(e,t,r,i),Zh(e))return l=nS(e),o&&de.set(l,await Oa(e,l.columns,t,r,i,a)),l;let{resolver:c}=await dn(e,t,r,i,bE(e)),p=NE(e,c,s),u=await yi(e,t,r,i);await aR(e,t,n,r,i);let d=yS(e,Se(e.where,c));if(d.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${fn(d)}).`);let f=Fe(e),R,E;if(d.capability==="SUPERSET_PREFILTER"){let N=await Pi(e,t,r,i),b=Bl(e,N);b.eligible&&xl(e,b)&&(R=b.plan)}if(R===void 0&&d.capability==="EXACT_PUSHDOWN"&&e.where!==null){let N=null;try{N=H(e.where)}catch{N=null}E=lo({select:e,selectMode:f,capability:d,context:{allowFullScanExact:!0},serializedWholeWhere:N,relativeFunctionNames:Re(e.where)})??void 0,E&&(R=E.prefilterPlan)}let g=d.capability==="EXACT_PUSHDOWN"?f:"FULL_SCAN",y=await hi(e,t,r,i),m=Na(e)?(e.orderMode==="KINTONE_NATIVE"?Jr:Xr)({stmt:e,staticMode:g,whereCapability:d.capability,whereReasons:d.reasons,orderSemantics:y.semantics,maxRecords:n.maxRecords??1e4,hasKlike:me(e.where)}):null,A=await iS(e,m?.kind==="CANONICAL_LOCAL"?"FULL_SCAN":g,t,r),h=Mu(e,n,m),w=E!==void 0&&(f==="FULL_SCAN"||m?.kind==="CANONICAL_LOCAL")?Ou(t,{aborted:!1},!0):t;try{g==="SIMPLE"?l=await rS(e,w,h.effectiveOptions,r,m,y):l=await hS(e,w,h.effectiveOptions,r,i,d.capability==="EXACT_PUSHDOWN"&&R===void 0,y,R,u)}catch(N){LE(h,N)}return o&&de.set(l,await Oa(e,l.columns,t,r,i,a)),Uu(l,[...p,...A])}function au(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 OE(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 yi(e,t,n,r){let i=X(e);if(!Zi(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 re(u.appId,t,n);if(!u.subtableCode){for(let E of d){if(E.inSubtable!==!0||!E.subtableCode)continue;let g=s.get(E.code)??[];g.push({appId:u.appId,owner:E.subtableCode}),s.set(E.code,OE(g))}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=Hc(e,(u,d)=>l[d]),p=qc(o,e.columns,c);return qh(e,o,p,s),gr(e,Zc(e,p,c)),p}function qh(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(au(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 mi=new WeakMap;async function Xh(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 Ai(o,t,n);return}for(let s of Object.values(a))await i(s)};await i(e)}async function Jh(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 re(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=ge(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(m=>m.cteName===null&&l(m,f.field)!==null).length,g=i.some(m=>c(m,f.field)),y=Oe(u);return{canonicalId:`source:${d}:APP${u.appId}:${R}`,directKey:f.tableAlias&&y?`${f.tableAlias}.${f.field}`:f.field,unqualifiedBridgeKey:E===1&&!g?f.field:null,physical:!0}};return u=>{if(u.tableAlias!==null){let g=i.findIndex(A=>Oe(A)===u.tableAlias);if(g<0)throw new Error(`ArgumentError: field ${u.tableAlias}.${u.field} has an unknown table alias.`);let y=i[g];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 m=l(y,u.field);if(m===null){let A=s(y,ge(y,u.field));throw A!==null&&A!==""?new Error(au(u.field,[{appId:y.appId,owner:A}])):new Error(`ArgumentError: field ${u.tableAlias}.${u.field} does not exist in APP${y.appId}.`)}return p(y,g,u,m)}let d=i.flatMap((g,y)=>{if(g.cteName!==null)return[];let m=l(g,u.field);return m===null?[]:[{table:g,tableIndex:y,code:m}]}),f=i.filter(g=>c(g,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 g=d[0];return p(g.table,g.tableIndex,u,g.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(g=>{if(g.cteName!==null)return[];let y=s(g,ge(g,u.field));return y===null||y===""?[]:[{appId:g.appId,owner:y}]}),E=OE(R);throw E.length>0?new Error(au(u.field,E)):new Error(`ArgumentError: field ${u.field} does not exist in a physical APP source.`)}}async function Ai(e,t,n,r){mi.delete(e);let i=X(e),o=JSON.stringify(e.columns).includes('"GROUPING_')||JSON.stringify(e.orderBy).includes('"GROUPING_');if(i.type==="GROUPING_SETS"||o){let l=await Jh(e,t,n,r),c=np(e,l,tp);c&&mi.set(e,c);return}if(!Zi(e))return;if(i.type==="NONE"){eo(e);return}[e.from,...e.joins.map(l=>l.table)].some(l=>l.cteName!==null&&!r?.has(l.cteName))||await yi(e,t,n,r)}function Qh(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.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 Mu(e,t,n){let r=e.type==="SELECT"&&(n?.kind==="CANONICAL_REST_TOP_N"||n?.kind==="KORDER_NATIVE"||n?.kind==="KORDER_CURSOR")?Ct({...e,orderBy:[]}):Ct(e),i=r.size>0&&t.onLimitReached==="truncate";return{reasons:r,effectiveOptions:i?{...t,onLimitReached:"error"}:t,truncateWasDisabled:i}}function LE(e,t){throw e.reasons.size>0&&t instanceof Le&&!t.completeInputWrapped?new Le(Qh(e.reasons)+(e.truncateWasDisabled?"onLimit=truncate\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002":"")+t.message,!0):t}async function su(e,t){try{return await t()}catch(n){LE(e,n)}}function wt(e){return e?.type==="BOOLEAN"&&e.value===!1}function Zh(e){return e.from.appId===0&&e.from.cteName===Ye}function Pa(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"?Pa(e.left)||Pa(e.right):e.type==="STRING_FUNC"?Fu(e):!1}function eS(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"?Fu(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"?Pa(n):n.type==="AGG_REF"||n.type==="AGG_ARITH"?!0:pi(n))):!1}function Fu(e){return e.args.some(t=>eS(t))}function tS(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(Pa(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"STRFUNC_COL":if(Fu(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 nS(e){if(e.joins.length>0||e.where||X(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.");tS(e);let t=Ll([{}],e.columns),{rows:n,columns:r}=Qn(t,e.columns),i=ia(n,e.limit,e.offset);return{type:"SELECT",rows:i,columns:r,rowCount:i.length,warnings:[]}}async function rS(e,t,n,r,i,o){let a=i?.kind==="CANONICAL_REST_TOP_N"?UE(e):e,s=oo(a),l=i?.kind==="CANONICAL_LOCAL"?Qt(e,e.from):s.fields,c=await Bu(e,t,r),p=$u(e,c),u=e.columns.some(b=>b.type==="CASE_COL")?await Pi(e,t,r,void 0,ku(e)):void 0,d=n.maxRecords??1e4,f=new Set,R=n.onLimitReached??"error",E=n.fetchParallel??1,g=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,m=e.orderBy.length===0&&y!==null&&y<=d&&!me(e.where)?y:void 0,A;if((i?.kind==="KORDER_NATIVE"||i?.kind==="KORDER_CURSOR")&&e.limit===0)A=[];else if(i?.kind==="KORDER_CURSOR"){let b=await nf({client:t,app:s.app,fields:s.fields,query:Tl(e),offset:e.offset??0,limit:e.limit});A=b.records,b.cleanupWarning&&f.add(b.cleanupWarning)}else if(g)A=(await t.getRecords({app:s.app,query:s.query,fields:s.fields})).records;else{let b=e.where?H(e.where):"";A=await Ce(t.getRecords,s.app,b,l,{parallel:E,maxRecords:d,stopAfter:m,onLimit:R,onTruncate:_=>{f.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${_} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${_} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`),Cu(t,e.from.appId)}})}let h=A.map(b=>St(b,null));g||(h=Cl(h,e.orderBy,o.optionOrders,o.sortKinds,o.semantics,Ol(e.columns,void 0,p.row,u)),h=ia(h,e.limit,e.offset));let{rows:S,columns:w}=Qn(h,e.columns,void 0,p.row,void 0,u),N=await Hu(e,S,w,t,r);return{type:"SELECT",rows:S,columns:N,rowCount:S.length,warnings:[...f]}}async function iS(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=oo(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=Qt(e,p);a(p.appId,u),p.subtableCode||l(p.appId,u)}}for(let[c,p]of o.entries()){let u=[...p].filter(g=>!cs(g));if(u.length===0)continue;let d=await re(c,n,r);if(d.length===0)continue;let f=new Set(d.map(g=>g.code)),R=u.filter(g=>!f.has(g));if(R.length>0)throw new Error(`ArgumentError: unknown field code(s): ${R.join(", ")} (APP${c})`);let E=s.get(c);if(E){let g=d.filter(y=>y.inSubtable===!0&&E.has(y.code));for(let y of g){let m=y.subtableCode??"",A=m?`\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u300C${m}\u300D`:"\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB";i.push(`${y.code} \u306F${A}\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`+(m?`APP${c}$${m} \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 eE(e){return e.cteName??`APP${e.appId}`}function oS(e){return e.alias?[e.alias]:e.cteName!==null?[e.cteName]:[`APP${e.appId}`,`app${e.appId}`]}function aS(e,t){return cs(t)||e.validCodes.has(t)}function Ql(e,t){return e.table.cteName!==null?e.validCodes.has(t):aS(e,t)}function sS(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 lS(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=Oe(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===Ye)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:eE(p),validCodes:new Set(u.columns),authoritative:!0,schemaUnavailable:u.rows.length===0&&u.columns.length===0});return}if(p.cteName===Ye)return;let d=await re(p.appId,t,r);s.set(p,{table:p,label:eE(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 oS(p.table))l.set(u,p);for(let p of e.joins)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&&!Ql(d,u.field))throw new Error(`ArgumentError: JOIN key ${u.tableAlias}.${u.field} is not available in the materialized table.`)}let c=lp(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=>!Ql(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=>Ql(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 Aa(e,t,n,r,i=new Set){if(!i.has(e)){if(i.add(e),e.type==="UNION"){await Aa(e.left,t,n,r,i),await Aa(e.right,t,n,r,i);return}await lS(e,t,n,r);for(let o of sS(e))await Aa(o,t,n,r,i)}}function _E(e){return e.where===null||e.from.subtableCode||e.from.cteName!==null?null:e.joins.length===0?hr(e.where,{tableAlias:e.from.alias??void 0,allowUnqualifiedFields:!0}):e.from.alias?hr(e.where,{tableAlias:e.from.alias}):null}var xu=new WeakMap;function ka(e,t){if(e.joins.length===0||e.where===null||e.joins.some(u=>u.type!=="INNER"))return null;let n=[e.from,...e.joins.map(u=>u.table)];if(n.some(u=>u.alias===null||u.cteName!==null||!!u.subtableCode))return null;let r=n.map(u=>({alias:u.alias,appId:u.appId,sourceKind:"APP",fieldTypes:new Map([...t.fieldTypesByApp.get(u.appId)??new Map,["$id","__ID__"]]),fieldOptions:t.fieldOptionsByApp.get(u.appId)})),i=Xd(e.where,r),o=Jd(i,r),a=new Map,s=new Map;for(let[u,d]of o.fetchQueriesByAlias)s.set(u,d);for(let u of o.items)s.has(u.targetAlias)||s.set(u.targetAlias,qn(u,r)),a.set(u.targetAlias,u.predicate);let l=e.from.alias,c=a.get(l)??null,p=new Map(a);return p.delete(l),{joinPlan:o,queriesByAlias:s,mainCondition:c,joinConditions:p,appliedKlikes:o.appliedKlikes,allKlikes:o.allKlikes}}async function Ma(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,_E(e)),e.joins.length>0&&e.where!==null&&e.joins.every(s=>s.type==="INNER")&&[e.from,...e.joins.map(s=>s.table)].every(s=>s.alias!==null&&s.cteName===null&&!s.subtableCode)){i(e.from.appId,e.where);for(let s of e.joins)i(s.table.appId,e.where)}if(e.where!==null)for(let s of e.joins){if(!s.table.alias||s.table.subtableCode||s.table.cteName!==null)continue;let l=hr(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([Ne(s,t,n),NS(s,t,n)]),u=uS(l).filter(d=>c.get(d)==="STATUS");if(u.length>0){let d=await xa(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 uS(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 It(e,t){if(e!==null)switch(e.type){case"BINARY":(e.op==="IN"||e.op==="NOT_IN")&&e.left.type==="FIELD"&&t.push(e.left),e.left.type==="CASE_FIELD"&&Ca(e.left.expr,t),e.right.type==="CASE_VALUE"&&Ca(e.right.expr,t);return;case"LOGICAL":It(e.left,t),It(e.right,t);return;case"NOT":case"GROUP":It(e.expr,t);return;case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}function Ca(e,t){for(let n of e.branches)It(n.condition,t)}function cS(e){let t=[];It(e.where,t),It(e.having,t);for(let n of e.columns)n.type==="CASE_COL"&&Ca(n.expr,t);return t}function Oe(e){return e.alias??e.cteName}function DE(e,t){return[e.from,...e.joins.map(n=>n.table)].find(n=>Oe(n)===t)}function Gu(e){return[e.from,...e.joins.map(t=>t.table)].filter(t=>t.cteName===null)}async function Bu(e,t,n){let r=cS(e);if(r.length===0)return new Map;let i=new Set,o=Gu(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=DE(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 Ne(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 Ku(e,t,n){e!=="MIN"&&e!=="MAX"&&e!=="MODE"||t.type==="WILDCARD"||ln(t,n)}function ln(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"){ln(e.left,t),ln(e.right,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){ln(e.left,t),ln(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"&&ln(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"?nr(n,t):n.type!=="ARRAY"&&ln(n,t)}function nr(e,t){if(e.type==="AGG_REF"){Ku(e.func,e.arg,t);return}e.type==="AGG_ARITH"&&(nr(e.left,t),nr(e.right,t)),e.type==="AGG_GROUP_KEY"&&t.push({type:"FIELD",tableAlias:e.tableAlias??null,field:e.field})}function lu(e,t){for(let n of e.args)if(n.type==="AGG_REF"||n.type==="AGG_ARITH")nr(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;di(n,t)}}function di(e,t){if(e.type==="STRING_FUNC"){lu(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){di(e.left,t),di(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"?lu(r,t):r.type==="AGG_REF"||r.type==="AGG_ARITH"?nr(r,t):r.type!=="ARRAY"&&r.type!=="FIELD_REF"&&r.type!=="ARITH"&&di(r,t)}}function pS(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;Ku(o.func,o.arg,t);return}i.type==="SELECT"||i.type==="SCALAR_SUBQUERY"||Object.values(i).forEach(n)};n(e)}function dS(e){let t=[];for(let n of e)n.type==="AGGREGATE"?Ku(n.func,n.arg,t):n.type==="ARITH_AGG_COL"?nr(n.expr,t):n.type==="STRFUNC_COL"?lu(n.expr,t):n.type==="SCALAR_VALUE_COL"?di(n.expr,t):n.type==="CASE_COL"&&pS(n.expr,t);return t}var fS=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DROP_DOWN","RADIO_BUTTON","STATUS","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME"]);function ES(e){return e.sortKind!==void 0?e.sortKind:e.fieldType==="NUMBER"||e.fieldType==="RECORD_NUMBER"?"number":fS.has(e.fieldType)?"string":void 0}async function vE(e,t,n,r){let i=dS(e.columns);if(i.length===0)return;let o=new Set,a=Gu(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=DE(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 re(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(g=>R.get(g)?.fieldType==="STATUS"))return;let E=await ju(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??Q(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 g=p.find(y=>Oe(y)===f.tableAlias);if(!g)return;if(g.cteName!==null)return r?.get(g.cteName)?.columnMeta?.get(f.field)?.semantics??B("string");R=s.get(g.appId)?.get(ge(g,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(ge(e.from,f.field))}else{let g=p.flatMap(y=>{if(y.cteName!==null){let A=r?.get(y.cteName);return A?.columns.includes(f.field)?[A.columnMeta?.get(f.field)?.semantics??B("string")]:[]}let m=s.get(y.appId)?.get(ge(y,f.field));return m?[u(m,y.appId)]:[]});return g.length!==1?void 0:g[0]}if(!R)return;let E=f.tableAlias!==null?p.find(g=>Oe(g)===f.tableAlias):e.joins.length===0?e.from:void 0;return u(R,E?.appId??e.from.appId)}}function ge(e,t){return e.subtableCode&&t.startsWith("_p.")?t.slice(3):t}function ha(e,t){if(e.subtableCode){if(t==="_rid")return"SINGLE_LINE_TEXT";if(t==="_idx"||t==="_pid")return"NUMBER"}}function ct(e,t){let n=e.semantics??Q(e);return{sortKind:ES(e),fieldType:e.fieldType,semantics:t===void 0?n:Kn(n,t,e.code)}}function UE(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 $e(){return{semantics:B("string","KSQL_UNKNOWN")}}function kE(e="KSQL_ARRAY"){return{semantics:{fieldType:e,compareMode:"unsupported",inSubtable:!1,requiresCollectionOperators:!1}}}function un(e){if(e==="$id")return{sortKind:"number",fieldType:"__ID__",semantics:Q({fieldType:"__ID__"})};if(e==="_rid")return q("string");if(e==="_pid"||e==="_idx"||e==="$revision")return q("number")}var RS=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function gn(e){if(e.func==="CAST"){let t=e.args[1];return t?.type==="STRING"&&t.value==="NUMBER"?q("number"):q("string")}return RS.has(e.func)?q("number"):q("string")}function rr(e,t){return e.type==="STRING"?q("string"):e.type==="ARRAY"?kE():e.type==="AGG_REF"?e.func==="MIN"||e.func==="MAX"||e.func==="MODE"?e.arg.type==="WILDCARD"?$e():yn(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"?gn(e):e.type==="FIELD_REF"?t(Ue(e.field))??$e():e.type==="FIELD"?t(e)??$e():$e()}function Fa(e){if(e.length===0)return $e();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&&mo(n(r.semantics),n(t.semantics)))?e.every(i=>mo(i.semantics,t.semantics))?t:{...t,semantics:n(t.semantics)}:e.some(r=>r.semantics?.compareMode==="unsupported")?kE("KSQL_MIXED_UNSUPPORTED"):$e()}function yn(e,t){if(e.type==="FIELD_REF")return t(Ue(e.field))??$e();if(e.type==="FIELD")return t(e)??$e();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 gn(e);let n=e.branches.map(r=>rr(r.result,t));return e.elseResult&&n.push(rr(e.elseResult,t)),Fa(n)}function ME(e,t){return e.windowKind==="VALUE"?yn(e.arg,t):e.windowKind==="AGGREGATE"?e.aggFunc==="COUNT"||e.aggFunc==="SUM"||e.aggFunc==="AVG"?q("number"):e.arg.type==="WILDCARD"?$e():yn(e.arg,t):q("number")}function Sa(e,t){return{...e??{},displayName:t}}function gS(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 Oa(e,t,n,r,i,o=!1){let a=new Map;gS(e)&&await Promise.all(Gu(e).map(async E=>{if(a.has(E.appId))return;let g=await re(E.appId,n,r);a.set(E.appId,new Map(g.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 A=a.get(e.from.appId)?.get(E.field);return A?ct(A,e.from.appId):void 0}let y=s.find(A=>Oe(A)===E.tableAlias);if(!y)return;if(y.cteName!==null)return i?.get(y.cteName)?.columnMeta?.get(E.field);let m=a.get(y.appId)?.get(ge(y,E.field));return m?ct(m,y.appId):un(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(ge(e.from,E.field));return y?ct(y,e.from.appId):un(E.field)}let g=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 m=a.get(y.appId)?.get(ge(y,E.field)),A=m?ct(m,y.appId):un(E.field);return A?[A]:[]});return g.length===1?g[0]:void 0},p=E=>{if(!l)return;let g=s.filter(y=>{if(E.tableAlias!==null&&Oe(y)!==E.tableAlias)return!1;let m=ge(y,E.field);return a.get(y.appId)?.has(m)===!0||un(E.field)!==void 0});return g.length===1?g[0].appId:void 0},u=(E,g)=>{let y=p(g);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 g=Ue(E),y=u(c(g),g);d.set(E,Sa(y,y?.displayName??E))}return d}if(f)for(let E of t){let g=Ue(E),y=u(c(g),g);d.set(E,Sa(y,y?.displayName??E))}return e.columns.filter(E=>E.type!=="WILDCARD"&&E.type!=="PARENT_WILDCARD").forEach((E,g)=>{let y=f?"alias"in E&&E.alias?E.alias:void 0:t[g];if(!y)return;let m;if(E.type==="FIELD"){let A=Ue(E.field);m=u(c(A),A)}else if(E.type==="AGGREGATE")E.func==="GROUP_CONCAT"?m=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"?m=q("number"):(E.func==="MIN"||E.func==="MAX"||E.func==="MODE")&&E.arg.type!=="WILDCARD"&&(m=yn(E.arg,c));else if(E.type==="ARITH_AGG_COL"||E.type==="ARITH_COL")m=q("number");else if(E.type==="GROUPING_COL")m=q("number");else if(E.type==="LITERAL_COL")m=q("string");else if(E.type==="SCALAR_VALUE_COL"){let A=E.expr;A.type==="STRING_FUNC"?m=gn(A):A.type==="NUMBER"||A.type==="SCALAR_ARITH"?m=q("number"):A.type==="FIELD"?m=c(A):m=q("string")}else if(E.type==="STRFUNC_COL")m=gn(E.expr);else if(E.type==="WINDOW_COL")m=ME(E,c);else if(E.type==="CASE_COL"){let A=E.expr.branches.map(h=>rr(h.result,c));E.expr.elseResult&&A.push(rr(E.expr.elseResult,c)),m=Fa(A)}else E.type==="SCALAR_SUBQUERY_COL"&&(m=$e());d.set(y,Sa(m,E.aliasDisplay??y))}),d}function FE(e,t){let n=de.get(e),r=de.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=Fa([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=$e();i.set(o,Sa(p,s?.displayName??o))}),i}function $u(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=>Oe(p)===s.tableAlias);return!c||c.cteName!==null?void 0:ha(c,s.field)??t.get(c.appId)?.get(ge(c,s.field))}if(e.joins.length===0)return e.from.cteName!==null?void 0:ha(e.from,s.field)??t.get(e.from.appId)?.get(ge(e.from,s.field));if(n.some(c=>c.cteName!==null))return;let l=r.flatMap(c=>{let p=ha(c,s.field)??t.get(c.appId)?.get(ge(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 xE=new WeakSet,Vu=new WeakMap;function uu(e){return xE.add(e),e}function yS(e,t){return Vu.set(e,t),t}function GE(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&&X(e).type==="NONE"&&e.having===null&&e.joins.length===0&&e.from.cteName===null&&!e.from.subtableCode&&e.limit===null&&e.offset===null}function mS(e){return typeof e=="string"&&/^(?:0|[1-9]\d*)$/.test(e)}async function AS(e,t){let n=e.columns.find(s=>s.type==="AGGREGATE");if(n?.type!=="AGGREGATE")return null;let r=e.where===null?"":H(e.where),i=await t.getRecords({app:e.from.appId,query:`${r}${r?" ":""}limit 1`,fields:["$id"],totalCount:!0});if(i.searchAborted)throw new Rn;if(!mS(i.totalCount))return null;let o=n.alias??"COUNT(*)",a=Qn([{[o]:i.totalCount}],e.columns);return{type:"SELECT",rows:a.rows,columns:a.columns,rowCount:1,warnings:[]}}async function hS(e,t,n,r,i,o=!0,a,s,l){let c=Vu.get(e);if(xE.has(e)&&c!==void 0&&GE(e,c)){let x=await AS(e,t);if(x!==null)return x}let p=n.maxRecords??1e4,u=new Set,d=n.fetchParallel??1;await Promise.all([wi(e.where,t,n,r,i),wi(e.having,t,n,r,i)]);let[f,R,E]=await Promise.all([Ma(e,t,r),Bu(e,t,r),vE(e,t,r,i)]),g=$u(e,R),y=await Pi(e,t,r,i,at(e.having)||ku(e)),m=PE(e,y),A=xu.get(e);if(A&&!Xn(A.joinPlan))throw new Error("InternalError: JOIN server-function fetch binding changed before records API.");let h=A??ka(e,f)??xn(e,f);ws(h);let S="joinPlan"in h?h:null,w=S&&Xn(S.joinPlan)?S:null,N=t,b=h.mainCondition,_=h.joinConditions;if(s&&o)throw new Error("internal error: relative-date prefilter must disable original WHERE pushdown.");let P=s?s.prefilterWhere:w?null:b,D=w?.queriesByAlias.get(e.from.alias)??"",F=await lR(e.columns,t,n,r,i),L=wt(e.where),v=L?Promise.resolve([]):fi(e,e.from,N,p,d,!0,n.onLimitReached??"error",u,P,w?!1:o,l,D),T=[],C=[];for(let x of e.joins){if(L){T.push({join:x,promise:Promise.resolve([])});continue}let fe=x.table.alias?w?.queriesByAlias.get(x.table.alias)??"":"",wn=w?null:x.table.alias?_.get(x.table.alias)??null:null;wn!==null||fe!==""?T.push({join:x,promise:fi(e,x.table,N,p,d,!1,n.onLimitReached??"error",u,wn,!0,l,fe)}):C.push(x)}let U=a?Promise.resolve(a):hi(e,t,r,i);U.catch(()=>{});let O=await v,G=new Map;G.set(e.from.alias,O);for(let{join:x,promise:fe}of T)G.set(x.table.alias,await fe);await Promise.all(C.map(async x=>{let wn=await YE(e,x,G,N,p,d,n.onLimitReached??"error",u,null,l,"")??await fi(e,x.table,N,p,d,!1,n.onLimitReached??"error",u,null,!0,l,"");G.set(x.table.alias,wn)}));let{optionOrders:k,sortKinds:z,semantics:M}=await U,{rows:V,columns:Z}=vl({tables:G,stmt:e,scalarCache:F,optionOrders:k,sortKinds:z,orderSemantics:M,fieldTypeResolver:g.row,fieldSemanticsResolver:y,havingFieldTypeResolver:g.having,havingFieldSemanticsResolver:m,aggregateSortKindResolver:E,appliedKlikes:s?.appliedKlikes??h.appliedKlikes,...s?{residualWhere:s.residualWhere}:w?{residualWhere:w.joinPlan.residualWhere}:{},resolvedGroupingSpec:mi.get(e),plainGroupByPlan:l}),$=await Hu(e,V,Z,t,r);return{type:"SELECT",rows:V,columns:$,rowCount:V.length,warnings:[...u]}}function BE(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`)}async function KE(e,t,n,r,i=!1,o=!1){let a=Mu(e,n,null);return su(a,async()=>{let s=a.effectiveOptions,[l,c]=await Promise.all([e.left.type==="UNION"?KE(e.left,t,s,r,i,o):Yt(uu(e.left),t,s,r,void 0,i,o,"DERIVED"),Yt(uu(e.right),t,s,r,void 0,i,o,"DERIVED")]),p=l.columns,u=c.columns;BE(p,u);let d=c.rows.map(y=>{let m={};return p.forEach((A,h)=>{m[A]=y[u[h]??A]??""}),m}),f=[...l.rows,...d],R=e.all?f:$E(f,p),E=[...new Set([...l.warnings??[],...c.warnings??[]])],g={type:"SELECT",rows:R,columns:p,rowCount:R.length,warnings:E};return i&&de.set(g,FE(l,c)),g})}function $E(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)})}async function Wu(e,t,n,r,i,o=!1){if((i==null||i.size===0)&&vt(e))return Yt(Ut(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.query.type==="SHOW_APPS"?p=await iR(t):c.query.type==="DESCRIBE"?p=await oR(c.query,t,r):c.query.type==="GENERATE_SERIES"?p=SS(c.query):p=await bt(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:de.get(p),...c.query.type==="GENERATE_SERIES"?{uniqueGeneratedColumn:c.query.columnAlias}:{}})}let l=await bt(e.query,t,n,a,r,o);return Uu(l,[...s])}function SS(e){let t=Cs(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:Q({fieldType:"NUMBER"})}:{sortKind:"string",fieldType:"DATE",semantics:Q({fieldType:"DATE"})};return de.set(n,new Map([[e.columnAlias,r]])),n}async function bt(e,t,n,r,i,o=!1,a=!1){if(a||await Aa(e,t,r,i),e.type==="UNION"){let[c,p]=await Promise.all([bt(e.left,t,n,r,i,o,!0),bt(e.right,t,n,r,i,o,!0)]),u=c.columns,d=p.columns;BE(u,d);let f=p.rows.map(m=>{let A={};return u.forEach((h,S)=>{A[h]=m[d[S]??h]??""}),A}),R=[...c.rows,...f],E=e.all?R:$E(R,u),g=[...new Set([...c.warnings??[],...p.warnings??[]])],y={type:"SELECT",rows:E,columns:u,rowCount:E.length,warnings:g};return o&&de.set(y,FE(c,p)),y}if(!(e.from.cteName!=null&&e.from.cteName!==Ye||e.joins.some(c=>c.table.cteName!=null)))return Yt(e,t,n,i,r,o,!1,"DERIVED");let l=await TS(e,t,n,r,i);return o&&de.set(l,await Oa(e,l.columns,t,i,r)),l}async function TS(e,t,n,r,i){await Ai(e,t,i,r);let o=mi.get(e),a=await yi(e,t,i,r),s=new Set,l=$=>{if($.alias!==null||$.cteName===null)return $;let x=Oe($);return s.add(x),{...$,alias:x}};e={...e,from:l(e.from),joins:e.joins.map($=>({...$,table:l($.table)}))};let c=new Set;for(let $ of[e.from,...e.joins.map(x=>x.table)]){let x=Oe($);if(x!==null){if(c.has(x))throw new Error(`ArgumentError: effective alias ${x} is used by multiple tables.`);c.add(x)}}let p=$=>{let x=r.get($);if(!x)throw new Error(`ArgumentError: materialized source ${$} is not available.`);return x};for(let $ of[e.from,...e.joins.map(x=>x.table)])$.cteName!==null&&p($.cteName);let{resolver:u}=await dn(e,t,i,r,bE(e)),d=NE(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([wi(e.where,t,n,i,r),wi(e.having,t,n,i,r),aR(e,t,n,i,r)]);let g=Se(e.where,u);if(g.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${fn(g)}).`);let y=await hi(e,t,i,r),m=Na(e)?(e.orderMode==="KINTONE_NATIVE"?Jr:Xr)({stmt:e,staticMode:"FULL_SCAN",whereCapability:g.capability,whereReasons:g.reasons,orderSemantics:y.semantics,maxRecords:f,hasKlike:me(e.where)}):null,A=Mu(e,n,m),h=A.effectiveOptions,[S,w,N]=await Promise.all([Ma(e,t,i),Bu(e,t,i),vE(e,t,i,r)]),b=$u(e,w),_=await Pi(e,t,i,r,at(e.having)||ku(e)),P=PE(e,_),D=ka(e,S)??xn(e,S);ws(D);let F=t,L=await lR(e.columns,t,h,i,r),v=Promise.resolve(y);v.catch(()=>{});let T=new Map,C=new Map;if(e.from.cteName!=null){let $=p(e.from.cteName);T.set(e.from.alias,$.rows.map(tE)),C.set(e.from.alias,$.columns)}else{let $=await su(A,()=>fi(e,e.from,F,f,E,!0,h.onLimitReached??"error",R,D.mainCondition,g.capability==="EXACT_PUSHDOWN",a));T.set(e.from.alias,$)}let U=e.joins.map($=>su(A,async()=>{if($.table.cteName!=null){let x=p($.table.cteName);T.set($.table.alias,x.rows.map(tE)),C.set($.table.alias,x.columns)}else{let x=$.table.alias?D.joinConditions.get($.table.alias)??null:null,wn=await YE(e,$,T,F,f,E,h.onLimitReached??"error",R,x,a)??await fi(e,$.table,F,f,E,!1,h.onLimitReached??"error",R,x,!0,a);T.set($.table.alias,wn)}}));await Promise.all(U);let{optionOrders:O,sortKinds:G,semantics:k}=await v,z=e.joins.length===0&&e.from.cteName!=null?p(e.from.cteName).columns:void 0,{rows:M,columns:V}=vl({tables:T,stmt:e,scalarCache:L,optionOrders:O,sortKinds:G,orderSemantics:k,fieldTypeResolver:b.row,fieldSemanticsResolver:_,havingFieldTypeResolver:b.having,havingFieldSemanticsResolver:P,aggregateSortKindResolver:N,appliedKlikes:D.appliedKlikes,sourceColumns:z,tableColumns:C,hiddenQualifiedAliases:s,resolvedGroupingSpec:o,plainGroupByPlan:a}),Z=await Hu(e,M,V,t,i);return Uu({type:"SELECT",rows:M,columns:Z,rowCount:M.length,warnings:[...R]},d)}async function Hu(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 re(e.from.appId,r,i);return of(o,e.from.subtableCode,()=>xa(e.from.appId,r,i))}function tE(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,{value:n??""}]))}async function fi(e,t,n,r,i,o,a,s,l=null,c=!0,p,u=""){let d=Qt(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`),Cu(n,t.appId),Ud(e,t,o))throw new Le(`\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?ap(e,t.appId).query:"",m=[l!==null?H(l):"",u].filter(w=>w!==""),A=m.length>1?m.map(w=>`(${w})`).join(" and "):m[0]??"",h=y&&A?`(${y}) and (${A})`:y||A;return(await qe(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&&Vu.get(e)?.capability==="EXACT_PUSHDOWN"&&!Rt(e.where)?H(e.where):"",g=(await qe(n.getRecords,t.appId,R,d,{parallel:i,maxRecords:r,onLimit:a,onTruncate:f})).records;return If(g,t.subtableCode)}var VE=50;function IS(e){let t=ye(e);return t!==null?JSON.stringify(t):e}function cu(e){return JSON.stringify(e)}function mn(e,t){return JSON.stringify(e.map((n,r)=>t[r]?IS(n):n))}function Ci(e,t){let n=e.raw.get(cu(t));if(n!==void 0)return n;if(e.numericKey.some(Boolean))return e.normalized.get(mn(t,e.numericKey))}async function Oi(e,t,n,r,i,o){let a=i.maxRecords??1e4,s=i.fetchParallel??1,l=t.map(g=>o.get(g)==="NUMBER"),c={raw:new Map,normalized:new Map,numericKey:l},p=(g,y,m)=>{let A=g.get(y);(A===void 0||m>A)&&g.set(y,m)},u=(g,y)=>{p(c.raw,cu(g),y),l.some(Boolean)&&p(c.normalized,mn(g,l),y)},d=new Set,f=[],R=new Set;for(let g of n){let y=cu(g);R.has(y)||(R.add(y),g.some(m=>m==="")?f.push(g):d.add(g[0]))}let E=["$id",...t];for(let g of ir([...d],VE)){let y=`${t[0]} in (${g.map(La).join(",")})`,m=await Ce(r.getRecords,e,y,E,{maxRecords:a,parallel:s});for(let A of m){let h=Number(A.$id?.value);Number.isFinite(h)&&u(t.map(S=>WE(A[S]?.value)),h)}}for(let g of f){let y=t.map((A,h)=>`${A} = ${La(g[h])}`).join(" and "),m=await Ce(r.getRecords,e,y,["$id"],{maxRecords:a,parallel:s});m.length!==0&&u(g,wS(m))}return c}function wS(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 WE(e){return typeof e=="string"?e:e==null?"":String(e)}function La(e){return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function ir(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}var HE=50,bS=6,nE=HE*bS;async function YE(e,t,n,r,i,o,a,s,l=null,c,p=""){if(t.type!=="INNER"||!t.table.alias||t.table.subtableCode)return null;let u=t.on.left.tableAlias,d=t.on.right.tableAlias;if(!u||!d)return null;let f,R,E;if(u===t.table.alias&&d!==t.table.alias)f=d,R=t.on.right.field,E=t.on.left.field;else if(d===t.table.alias&&u!==t.table.alias)f=u,R=t.on.left.field,E=t.on.right.field;else return null;let g=n.get(f);if(!g)return null;let y=new Set;for(let b of g){let _=b[R]?.value,P=WE(_).trim();P.length>0&&y.add(P)}let m=[...y];if(m.length===0)return[];if(m.length>nE)return s.add(`JOIN\u30AD\u30FC\u304C ${m.length} \u4EF6\u306E\u305F\u3081 ON \u6700\u9069\u5316\u3092\u30B9\u30AD\u30C3\u30D7\u3057\u3001JOIN\u5148\u3092\u5168\u4EF6\u53D6\u5F97\u3057\u307E\u3059\uFF08\u4E0A\u9650 ${nE} \u4EF6\uFF09\u3002`),null;let A=Qt(e,t.table,c),h=b=>{s.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${b} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${b} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`),Cu(r,t.table.appId)},S=ir(m,HE),w=[],N=new Set;for(let b of S){let _=`${E} in (${b.map(La).join(",")})`,D=[l!==null?H(l):"",p].filter(L=>L!=="").reduce((L,v)=>`(${L}) and (${v})`,_),F=await qe(r.getRecords,t.table.appId,D,A,{parallel:o,maxRecords:i,onLimit:a,onTruncate:h});for(let L of F.records){let v=`${L.$id?.value??""}:${JSON.stringify(L)}`;N.has(v)||(N.add(v),w.push(L))}}return w}var pu=new Map,du=new Map,fu=new Map,Eu=new Map,Ru=new Map,gu=new Map;function Yu(e){pu.delete(e),du.delete(e),fu.delete(e),Eu.delete(e),Ru.delete(e),gu.delete(e)}function or(e,t,n){return e.get(t)?.get(n)}function ar(e,t,n,r){let i=e.get(t);i||(i=new Map,e.set(t,i)),i.set(n,r)}async function re(e,t,n){let r=or(Eu,n,e);if(r)return r;let i=t.getFields(e);return ar(Eu,n,e,i),i}async function dt(e,t,n){let r=or(gu,n,e);if(r)return r;let i=t.getNumberPrecision(e);return ar(gu,n,e,i),i}async function xa(e,t,n){let r=or(Ru,n,e);if(r)return r;let i=t.getProcessStatuses(e);return ar(Ru,n,e,i),i}async function ju(e,t,n){let r=await xa(e,t,n);return r.enable&&r.states!==null?new Map(r.states.map(i=>[i.name,i.index])):void 0}async function Ne(e,t,n){let r=or(pu,n,e);if(r)return r;let i=await re(e,t,n),o=new Map(i.map(a=>[a.code,a.fieldType]));return ar(pu,n,e,o),o}async function yu(e,t,n){let r=or(du,n,e);if(r)return r;let i=await re(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 ar(du,n,e,o),o}async function NS(e,t,n){let r=await yu(e,t,n);return new Map([...r.entries()].map(([i,o])=>[i,new Set(o.keys())]))}async function rE(e,t,n){let r=or(fu,n,e);if(r)return r;let i=await re(e,t,n),o=new Map;for(let a of i)a.sortKind&&o.set(a.code,a.sortKind);return ar(fu,n,e,o),o}function PS(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 CS(e,t,n,r){let i=PS(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 re(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?ct(E,e.from.appId):void 0}let f=o.find(E=>Oe(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(ge(f,u.field));return R?ct(R,f.appId):un(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(ge(e.from,u.field));return f?ct(f,e.from.appId):un(u.field)}let d=o.flatMap(f=>{if(f.cteName!==null){let g=r?.get(f.cteName),y=g?.columns.includes(u.field)?g.columnMeta?.get(u.field):void 0;return y?[y]:[]}let R=s.get(f.appId)?.get(ge(f,u.field)),E=R?ct(R,f.appId):un(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=ME(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=gn(u.expr);else if(u.type==="SCALAR_SUBQUERY_COL")d=$e();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=Fa(f)}else u.type==="AGGREGATE"&&(u.func==="MIN"||u.func==="MAX"||u.func==="MODE"?u.arg.type!=="WILDCARD"&&(d=yn(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,Q({fieldType:"KSQL_AMBIGUOUS"}));continue}let f=d;if(d.fieldType==="STATUS"&&d.source&&e.orderMode!=="KINTONE_NATIVE"){let R=await xa(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 hi(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([OS(e,t,n),LS(e,t,n),CS(e,t,n,r)]);return{optionOrders:o,sortKinds:a,semantics:s}}async function OS(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 yu(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 yu(a.appId,t,n);for(let[l,c]of s.entries())r.set(`${a.alias}.${l}`,c)}return r}async function LS(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 rE(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 rE(a.appId,t,n);for(let[l,c]of s.entries())r.set(`${a.alias}.${l}`,c)}return r}function jE(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 _S=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function DS(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||_S.has(o.fieldType))throw new Error(`ArgumentError: DML target field ${i} is not writable (${o.fieldType}).`)}}async function et(e,t,n,r){let i=await re(e,n,r);return DS(e,t,i),i}async function Nt(e,t,n,r,i){let o=new Map(n.map(a=>[a.code,a]));return t.some(a=>o.get(a)?.fieldType==="NUMBER")?dt(e,r,i):void 0}function An(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=ve(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 vS(e,t,n,r,i){let o=await et(e.appId,e.fields,t,r),a=await Kr({statement:e,fieldInfos:o,dmlMaxRows:We(n.dmlMaxRows,"dmlMaxRows",Pt),dmlMaxSubtableRows:We(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ie),statementNumber:i,loadNumberPrecision:()=>dt(e.appId,t,r)});return uT(e,a,o)}async function US(e,t,n,r,i){let{fieldInfos:o,prepared:a}=await zE(e,t,n,r,i);return pT(e,a,o)}async function zE(e,t,n,r,i){let o=await et(e.appId,e.fields,t,r),a=new Map(o.map(g=>[g.code,g.fieldType])),s=eR(e),l=new Set;for(let g of s){let y=mn(g,e.keyFields.map(m=>a.get(m)==="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 Oi(e.appId,e.keyFields,s,t,n,a),p=s.map(g=>Ci(c,g)),u=new Map,d=[...new Set(p.filter(g=>g!==void 0))],f=["$id","$revision",...o.filter(g=>!g.inSubtable&&g.fieldType!=="FILE").map(g=>g.code)];for(let g of ir(d,100)){let y=await t.getRecords({app:e.appId,query:`$id in (${g.join(",")}) limit 500`,fields:[...new Set(f)]});for(let m of y.records){let A=Number(m.$id?.value);Number.isSafeInteger(A)&&A>0&&u.set(A,m)}}let R=p.map((g,y)=>({sourceRowIndex:y,...g===void 0?{}:{targetId:g,snapshot:u.get(g)}})),E=await Pd({statement:e,matches:R,fieldInfos:o,dmlMaxRows:We(n.dmlMaxRows,"dmlMaxRows",Pt),dmlMaxSubtableRows:We(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ie),statementNumber:i,loadNumberPrecision:()=>dt(e.appId,t,r)});return{fieldInfos:o,prepared:E}}async function kS(e,t,n,r){if(n.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let i=await et(e.appId,e.fields,t,r),o=await Kr({statement:e,fieldInfos:i,dmlMaxRows:We(n.dmlMaxRows,"dmlMaxRows",Pt),dmlMaxSubtableRows:We(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ie),loadNumberPrecision:()=>dt(e.appId,t,r)}),a=pl(o);if(n.confirm&&!await n.confirm(o.guards.parentRows,"INSERT",{statementIndex:0,statementCount:1,statementType:"INSERT",targetAppId:e.appId,applyDetail:Ga(a),applyDiagnostic:a}))throw new ce("INSERT",o.guards.parentRows);let s=await Dd(o,t,a);return{...s,diagnostic:xe(a,s)}}async function MS(e,t,n,r){if(n.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let{prepared:i}=await zE(e,t,n,r,1),o=dl(i);if(n.confirm){let s=Ga(o);if(!await n.confirm(i.guards.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPSERT",targetAppId:e.appId,applyDetail:s,applyDiagnostic:o}))throw new ce("UPDATE",i.guards.parentRows)}let a=await vd(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:xe(o,a)}}function FS(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 Ga(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=FS(n?ga(n):[],r?ga(r):[]),a=xS(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=ga(n),f=ga(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 ga(e){return e.targets.filter(t=>t.targetKind==="SUBTABLE").map(t=>{let n=En(t,"APPEND"),r=En(t,"REMOVE");return{table:t.field,patchRows:(t.changedCount??0)-n-r,appendRows:n,removeRows:r}})}function En(e,t){return e.operations.filter(n=>n.kind===t).reduce((n,r)=>n+(r.count??0),0)}function xS(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:En(n,"ADD"),removedValues:En(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 zu(e,t,n,r,i,o){if(e.type==="INSERT"&&e.applyBlocks?.length)return vS(e,t,n,r,o);if(e.type==="UPSERT"&&(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length))return US(e,t,n,r,o);if(e.type==="UPDATE"&&e.applyBlocks?.length){let a=await ZE(e,t,n,r,o);if(a.type!=="VALIDATION")throw new Error("InternalError: APPLY VALIDATE ONLY returned a mutation result.");return a}return(await qu(e,t,n,r,i,o)).result}var Si=class extends Error{constructor(n,r){super(`RejectLimitExceededError: ${n}`);this.diagnostic=r;this.name="RejectLimitExceededError"}};async function qu(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(v=>v.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(v=>v.field):e.fields,u=await et(e.appId,p,t,r);e.type==="UPDATE"&&await er(e,t,r);let d=new Map(u.map(v=>[v.code,v])),f=await Nt(e.appId,p,u,t,r),R=rt(u,c),E=wf(R),g=(await GS(e,l,t,n,r,i,d,e.type==="UPDATE"?E:void 0)).sort((v,T)=>v.rowNumber-T.rowNumber),y=g.filter(v=>v.mode==="update"),m=e.type==="UPDATE"?$S:e.type.startsWith("UPSERT")?v=>VS(v,t,n.maxRecords??1e4):void 0,A=n.loadUpdateModeSnapshots??m,h=y.length>0&&A!==void 0,S=new Map;if(h){nl(y,p,u);let v=await A({appId:e.appId,candidates:y,fields:E}),T=new Map;for(let C of y){if(C.targetId===void 0)throw new Error(`InternalError: update-mode validation candidate has no targetId (row=${C.rowNumber}).`);let U=v.get(C.targetId);if(!U)throw new Error(`InternalError: update-mode snapshot is missing for record ${C.targetId}.`);let O=bf(U,C.record??{});T.set(C.rowNumber,O)}f===void 0&&[...T.values()].some(C=>rn(C,R))&&(f=await dt(e.appId,t,r));for(let C of y){let U=T.get(C.rowNumber);if(!U)throw new Error(`InternalError: validation post-image is missing for row ${C.rowNumber}.`);S.set(C.rowNumber,on(U,R,f,o,C.rowNumber,l))}}let w=rl(g,l,c,p,u,o,f,e.checkGroups??[],a,s,{validateUpdateBuiltIns:!h}),{errors:N,invalidRows:b,invalidRowNumbers:_}=w;if(h){let v=new Map(w.candidateResults.map(T=>[T.rowNumber,T]));N=[],_=new Set;for(let T of g){let C=v.get(T.rowNumber);if(!C)throw new Error(`InternalError: validation detail is missing for row ${T.rowNumber}.`);if(T.mode==="create"){let G=[...C.preErrors,...C.builtInErrors,...C.checkErrors];N.push(...G),G.length>0&&_.add(T.rowNumber);continue}let U=S.get(T.rowNumber);if(!U)throw new Error(`InternalError: prepared post-image validation is missing for row ${T.rowNumber}.`);let O=Nf({rowNumber:T.rowNumber,setFields:p,normalizedPostImage:U.normalizedRecord,preErrors:C.preErrors,postImageErrors:U.errors,checkErrors:C.checkErrors});T.record=O.writeRecord,N.push(...O.errors);for(let G of O.invalidRowNumbers)_.add(G)}b=_.size}let P=[...c,...Wn],D={type:"VALIDATION",operation:l,validatedRows:g.length,validRows:g.length-b,invalidRows:b,errorCount:N.length,columns:P,errors:N,...e.validationErrorTable?{errTable:e.validationErrorTable}:e.onErrorSkip&&e.errorTable?{errTable:e.errorTable}:{}},F=new Map;for(let v of c){if(v==="$id"){F.set(v,{sortKind:"number",fieldType:"RECORD_NUMBER",semantics:Q({fieldType:"RECORD_NUMBER"})});continue}let T=d.get(v);T&&F.set(v,ct(T,e.appId))}let L=new Set(["$err_statement","$err_row"]);for(let v of Wn)F.set(v,q(L.has(v)?"number":"string"));return Sn.set(D,F),{result:D,candidates:g,invalidRowNumbers:_,columnMeta:F}}async function mu(e,t,n,r,i,o){let a=await qu(e,t,n,r,i,o),s=e.errorTable;if(!s)throw new Error("ArgumentError: ON ERROR SKIP requires INTO #error_table.");pt(i,s,a.result.columns,a.result.errors,n.tempTableMaxRows??Ve,a.columnMeta);let l=e.rejectLimit??null;if(l!==null&&a.result.invalidRows>l)throw new Si(`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 ce(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 g=await t.postRecords({app:e.appId,records:c.slice(E,E+100).map(y=>y.record)});R.push(g.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(g=>g.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 GS(e,t,n,r,i,o,a,s){if(e.type==="UPDATE")return KS(e,n,r,i,o,s);let l,c,p,u,d;if(e.type==="INSERT"||e.type==="UPSERT")iE(e,e.fields),d=new Map(e.fields.map(h=>[h,a.get(h)?.fieldType??""])),hn(e,d),l=e.values.map(h=>h.map((S,w)=>S.type==="CASE_VALUE"?Vt(S.expr,{},a.get(e.fields[w])?.fieldType):S));else{let h=await Ju.materialize(e,n,r,i,o,[...a.values()]),S=(e.checkGroups?.length??0)>0;if(h.columns.length<e.fields.length||!S&&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(S&&new Set(h.columns).size!==h.columns.length)throw he("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");iE(e,h.columns),c=h.rows,p=h.importPresence,u=h.importRowErrors;let w=h.columnMeta;d=new Map(h.columns.map(N=>{let b=w?.get(N),_=b?.fieldType??(b?.semantics?.compareMode==="number"||b?.sortKind==="number"?"NUMBER":"SINGLE_LINE_TEXT");return[N,_]})),hn(e,d),l=h.rows.map(N=>h.columns.map(b=>N[b]??""))}let f=l.map((h,S)=>({rowNumber:S+1,operation:t,mode:"create",payload:new Map(e.fields.flatMap((w,N)=>p&&!p[S]?.has(w)?[]:[[w,h[N]]])),preErrors:[...u?.[S]??[]],record:{},evaluationRow:c?.[S]??Object.fromEntries(e.fields.map((w,N)=>[w,nt(h[N])])),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,S])=>[h,S.fieldType])),E=f.map(h=>e.keyFields.map(S=>nt(h.payload.get(S)))),g=e.keyFields.map(h=>R.get(h)==="NUMBER"),y=new Map;for(let h of E){let S=mn(h,g);y.set(S,(y.get(S)??0)+1)}let m=Ua.has(e);if(m&&[...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 A=await Oi(e.appId,e.keyFields,E,n,r,R);return f.forEach((h,S)=>{let w=E[S],N=Ci(A,w);h.mode=N===void 0?"create":"update",N!==void 0&&(h.targetId=N),e.keyFields.forEach((b,_)=>{w[_]===""&&h.preErrors.push({field:b,code:"ERR_KEY_EMPTY",message:`UPSERT \u30AD\u30FC ${b} \u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093`})}),!m&&(y.get(mn(w,g))??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 Xu(e){return e.checkGroups?$n(e.checkGroups):[]}function iE(e,t){let n=new Set(t);for(let r of Xu(e)){if(r.tableAlias!==null)throw he(`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 he(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${r.field} \u306F\u8A55\u4FA1\u884C\u306B\u5B58\u5728\u3057\u307E\u305B\u3093`)}}var BS=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE","KSQL_ARRAY"]);function hn(e,t){if(e.checkGroups)for(let n of zp(e.checkGroups)){let r=n.tableAlias?`${n.tableAlias}.${n.field}`:n.field,i=t.get(r)??t.get(n.field);if(BS.has(i??""))throw he(`CHECK \u306E\u6BD4\u8F03\u3067\u306F ${i} \u30D5\u30A3\u30FC\u30EB\u30C9 ${r} \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`)}}async function KS(e,t,n,r,i,o){if(e.from)return HS(e,e.from,t,n,r,i,o);await sR(e.assignments,t,n,r);let a=await Ne(e.appId,t,r),s=qE(e,a);hn(e,Au(a,e.appId));let l,c=new Map,p=new Map;if(Co(e)){let u=Bs(e),d=[...new Set([...u.fields,...s,...o??[]])],f=await qe(t.getRecords,u.app,u.query,d,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"});p=Ta(f.records),c=p,l=$s(e,f.records,a).flatMap(R=>R.records)}else{let u=Dr(e);if(s.length>0){let d=[...new Set(["$id",...s,...o??[]])],f=await qe(t.getRecords,u.app,u.query,d,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"});p=Ta(f.records),c=p,l=vr(e,[...c.keys()],a).flatMap(R=>R.records)}else if(o){let d=await qe(t.getRecords,u.app,u.query,[...o],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"});p=Ta(d.records),l=vr(e,[...p.keys()],a).flatMap(f=>f.records)}else{let d=await Vo(t.getRecords,u.app,u.query,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1});l=vr(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:WS(c.get(u.id),e.appId),evaluationFieldTypes:Au(a,e.appId)}))}function Ta(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 $S(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 VS(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 Le(`\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 ir(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 qE(e,t){if(e.from)return[];let n=new Set;for(let r of Xu(e)){if(r.tableAlias!==null&&r.tableAlias.toLowerCase()!==`app${e.appId}`.toLowerCase())throw he(`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 he(`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 WS(e,t){if(!e)return{};let n=St(e,null);return Object.fromEntries([...Object.entries(n),...Object.entries(n).map(([r,i])=>[`APP${t}.${r}`,i])])}function Au(e,t){return new Map([...e,...[...e].map(([n,r])=>[`APP${t}.${n}`,r]),["$id","RECORD_NUMBER"],[`APP${t}.$id`,"RECORD_NUMBER"]])}async function HS(e,t,n,r,i,o,a){let s=await mR(e,t,n,i,o);hn(e,s.evaluationTypes);let l=await XE(e,t,n,r,i,o,a),c=await Ne(e.appId,n,i),p=Ws(e,l,c).flatMap(f=>f.records),u=new Map(l.map(f=>[Number(f.target.$id?.value),f])),d=a?Ta(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:YT(u.get(f.id),e.appId,t.alias),evaluationFieldTypes:s.evaluationTypes}))}var YS=VE,jS=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);async function XE(e,t,n,r,i,o,a){let s=await zS(e,t,n,i),l=await mR(e,t,n,i,o),c=[...new Set(e.assignments.filter(S=>S.value.type==="SOURCE_FIELD").map(S=>S.value.type==="SOURCE_FIELD"?S.value.field:"").concat(l.sourceFields))],p=[...new Set([t.joinKeyField,...c])],u=await qS(t,p,c,n,r,i,o),d=new Map,f=new Map;for(let S of u){if(!Object.prototype.hasOwnProperty.call(S,t.joinKeyField))throw new Error(`ArgumentError: UPDATE ... FROM source column ${t.joinKeyField} does not exist.`);let w=oE(S[t.joinKeyField],s,"source");if(d.has(w))throw new Error(`ArgumentError: UPDATE ... FROM source has multiple rows for normalized key ${w}.`);d.set(w,S),f.set(w,String(S[t.joinKeyField]).trim())}if(d.size===0)return[];let R=r.maxRecords??1e4,E=[...new Set([...fT(e),...l.targetFields,...a??[]])],g=t.targetFilter===null?"":Dr({...e,from:null,where:t.targetFilter,checkGroups:void 0}).query,y=[],m=new Set,A=0;for(let S of ir([...f.values()],YS)){let w=`${t.targetJoinField} in (${S.map(La).join(",")})`,N=g?`(${w}) and (${g})`:w,b=await qe(n.getRecords,e.appId,N,E,{maxRecords:R,parallel:r.fetchParallel??1,onLimit:"error"});if(A+=b.records.length,A>R)throw new Le(`\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 _ of b.records){let P=_.$id?.value;if(typeof P!="string"||P==="")throw new Error("ArgumentError: UPDATE ... FROM target record does not contain a valid $id.");m.has(P)||(m.add(P),y.push(_))}}let h=[];for(let S of y){let w=S[t.targetJoinField]?.value,N=oE(w,s,"target");if(N===null)continue;let b=d.get(N);b!==void 0&&h.push({target:S,source:b})}return h}async function zS(e,t,n,r){if(t.targetJoinField==="$id")return"id";let i=(await re(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 qS(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 Ne(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(jS.has(u??""))throw new Error(`ArgumentError: UPDATE ... FROM does not support source field type ${u} (${p}).`)}return(await qe(r.getRecords,e.appId,"",t,{maxRecords:i.maxRecords??1e4,parallel:i.fetchParallel??1,onLimit:"error"})).records.map(p=>St(p,null))}function oE(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=ye(e);if(r===null)throw new Error(`ArgumentError: UPDATE ... FROM ${n} key must be a finite decimal: ${e}`);return JSON.stringify(r)}async function Li(e,t,n,r,i){let o=await qu(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 ce(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 XS(e,t,n,r){if(e.applyBlocks?.length)return kS(e,t,n,r);if(e.checkGroups?.length)return Li(e,t,n,r);if(e.subtableCode)return gT(e,t,n,r);let i=await et(e.appId,e.fields,t,r),o=await Nt(e.appId,e.fields,i,t,r),a=await Ne(e.appId,t,r),s=Po(e,a);An(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 JS(){return{type:"SELECT",distinct:!1,columns:[],from:{appId:0,alias:null,cteName:Ye},joins:[],where:null,groupBy:[],having:null,orderMode:"CANONICAL",orderBy:[],limit:null,offset:null}}async function JE(e,t,n,r,i){if(!n.enableImport)throw new Error("UnsupportedError: IMPORT capability is disabled.");let o=_f(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 M=new Set(e.targets.filter(V=>V.kind==="SUBTABLE").map(V=>V.subtableCode));if(e.replaceSubtables.some(V=>!M.has(V)))throw new Error("ArgumentError: REPLACE SUBTABLES contains a table not declared in INTO.");for(let V of e.targets.filter(Z=>Z.kind==="SUBTABLE"))if(!V.rowIdSourceHeader||!e.replaceSubtables.includes(V.subtableCode))throw new Error(`ArgumentError: CSV subtable ${V.subtableCode} requires ROW ID SOURCE and REPLACE SUBTABLES declaration.`)}if(e.validationErrorTable&&!i)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");let u=e.targets,d=await re(e.appId,t,r),f=u.flatMap(M=>M.kind==="FIELD"?[M.field]:M.children),R=d.some(M=>f.includes(M.code)&&M.fieldType==="NUMBER")?await dt(e.appId,t,r):void 0,E=await pa(o,new Map),g=e.source.kind==="JSON"?Mf(e.source,E,u,n.maxRecords??1e4):Ff(e.source,E,u,e.replaceSubtables??[],n.maxRecords??1e4,e.recordNumberSourceHeader),y=e.source.kind==="CSV"?"UPDATE":e.keyFields?"UPSERT":"INSERT",m=Kf(g,u,d,R,y);if(e.source.kind==="CSV")return QS(e,g,m,d,t,n,i);Hl(m,e.rejectLimit);let A=[...new Set(u.flatMap(M=>M.kind==="FIELD"?[M.field]:M.children))],h=jl(m.errors,A),S=[...A,...Yl],w=m.invalidParentRows.size,N={preflight:"ACTUAL_DATA",parents:{total:m.parents.length,valid:m.parents.length-w,invalid:w,mutationCandidates:m.parents.filter(M=>M.valid).length},tables:Object.fromEntries(m.tableCounts),writesKintone:!1},b={type:"VALIDATION",operation:y,validatedRows:m.parents.length,validRows:m.parents.length-w,invalidRows:w,errorCount:h.length,columns:S,errors:h,importDetail:N,...e.validationErrorTable?{errTable:e.validationErrorTable}:{}};if(e.validationErrorTable&&i&&pt(i,e.validationErrorTable,S,h,n.tempTableMaxRows??Ve,new Map),e.validateOnly)return b;if(Vf(g),m.errors.length>0&&!e.onErrorSkip){let M=m.errors[0];throw new Error(`DmlValidationError: ${M.code} ${M.message} (row=${M.parentRow}, field=${M.field})`)}if(e.onErrorSkip){if(!i||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch and INTO error table.");pt(i,e.errorTable,S,h,n.tempTableMaxRows??Ve,new Map)}let _=m.parents.filter(M=>M.valid),P=new Map(d.map(M=>[M.code,M.fieldType])),D=_.map(()=>{});if(e.keyFields){for(let x of e.keyFields)if(!e.fields.includes(x))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${x}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let M=e.keyFields.map(x=>P.get(x)==="NUMBER"),V=new Set,Z=_.map(x=>e.keyFields.map(fe=>String(x.top[fe]?.value??"")));for(let x of Z){let fe=mn(x,M);if(V.has(fe))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");V.add(fe)}let $=await Oi(e.appId,e.keyFields,Z,t,n,P);Z.forEach((x,fe)=>{D[fe]=Ci($,x)})}let F=u.filter(M=>M.kind==="SUBTABLE").map(M=>M.subtableCode),L=new Map,v=D.filter(M=>M!==void 0);for(let M of ir([...new Set(v)],100)){let V=await t.getRecords({app:e.appId,query:`$id in (${M.join(",")}) limit 500`,fields:["$id","$revision",...F]});for(let Z of V.records){let $=Number(Z.$id?.value),x=Number(Z.$revision?.value);Number.isFinite($)&&L.set($,{id:$,...Number.isFinite(x)?{revision:x}:{},record:Z})}}let T=Wf(_,D,L),C={kind:"IMPORT_JSON_SUBTABLE",rowIdPolicy:"DROP_AND_RENUMBER_ALL",parentsToWrite:T.length,insertedParents:T.filter(M=>M.mode==="INSERT").length,updatedParents:T.filter(M=>M.mode==="UPDATE").length,hasDeletes:T.some(M=>M.tables.some(V=>V.deleteRows>0)),parents:T.map(M=>({parentRow:M.parentRow,mode:M.mode,...M.targetId===void 0?{}:{targetId:M.targetId},tables:M.tables}))};if(T.length>0){if(!n.confirm)throw new Error("UnsupportedError: JSON IMPORT subtable mutation requires explicit confirmation detail approval.");if(!await n.confirm(T.length,e.keyFields?"UPDATE":"INSERT",{statementIndex:0,statementCount:1,statementType:"IMPORT",targetAppId:e.appId,importDetail:C}))throw new ce(e.keyFields?"UPDATE":"INSERT",T.length)}let U=M=>new Map(Object.entries(M).map(([V,Z])=>[V,Z.value])),O=M=>$f(U(M.top),new Map([...M.subtables].map(([V,Z])=>[V,Z.map($=>({values:U($)}))]))),G=T.filter(M=>M.mode==="INSERT"),k=T.filter(M=>M.mode==="UPDATE"),z=[];for(let M=0;M<G.length;M+=100){let V=await t.postRecords({app:e.appId,records:G.slice(M,M+100).map(O)});z.push(V.ids)}for(let M=0;M<k.length;M+=100)await t.putRecords({app:e.appId,records:k.slice(M,M+100).map(V=>({id:V.targetId,...V.revision===void 0?{}:{revision:V.revision},record:O(V)}))});return e.keyFields?{type:"UPSERT",insertedCount:z.flat().length,updatedCount:k.length,affectedRows:T.length,skippedRows:m.invalidParentRows.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:C}:{type:"INSERT",createdIds:z,insertedCount:z.flat().length,affectedRows:T.length,skippedRows:m.invalidParentRows.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:C}}if(e.writeMode==="UPDATE_RECORD_NUMBER")return ZS(e,o,t,n,r,i);let a={appId:e.appId,fields:e.fields,select:JS(),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};Ua.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 zu(s,t,{...n,onLimitReached:"error"},r,i,1);return s.validationErrorTable&&i&&pt(i,s.validationErrorTable,u.columns,u.errors,n.tempTableMaxRows??Ve,Sn.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",mu(s,t,n,r,i,1));return c(u)}let p=await(s.type==="UPSERT_SELECT"?tc(s,t,n,r,i):Qu(s,t,n,r,i));return c(p)}async function QS(e,t,n,r,i,o,a){if(!e.recordNumberSourceHeader||!e.replaceSubtables?.length)throw new Error("InternalError: incomplete CSV subtable replacement AST.");Hf(t.records);let s=t.records.map(L=>L.recordNumberSourceValue??""),l=Xl(s,e.recordNumberSourceHeader),c=[...e.replaceSubtables],p=[...new Set(r.filter(L=>!L.inSubtable&&L.fieldType==="SUBTABLE").map(L=>L.code))],u=await Ce(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 L of u){let v=Number(L.$id?.value),T=Number(L.$revision?.value);if(Number.isFinite(v)){d.set(v,{id:v,...Number.isFinite(T)?{revision:T}:{},record:L});for(let C of p){let U=L[C]?.value;if(Array.isArray(U)){for(let O of U)if(O.id){let G=f.get(O.id)??[];G.push({parentId:v,table:C}),f.set(O.id,G)}}}}}let R=l.normalized.map(L=>L===null?void 0:Number(L)),E=n.parents.map((L,v)=>{let T=[...L.errors];for(let U of l.errors[v])T.push({operation:"UPDATE",parentRow:L.parentRow,field:U.field,code:U.code,message:U.message,sourceValues:t.records[v].top});let C=R[v];return C!==void 0&&!d.has(C)&&T.push({operation:"UPDATE",parentRow:L.parentRow,field:e.recordNumberSourceHeader,code:"ERR_RECORD_NUMBER_NOT_FOUND",message:`record number ${C} does not exist in APP${e.appId}`,sourceValues:t.records[v].top}),{...L,valid:T.length===0,errors:T}}),g=Yf(t.records,E,R,d,f),y=g.flatMap(L=>[...L.errors]),m=new Set(g.filter(L=>!L.valid).map(L=>L.parentRow)),A={...n,parents:E,errors:y,invalidParentRows:m};Hl(A,e.rejectLimit);let h=g.filter(L=>L.valid),S=g.flatMap(L=>L.tables),w=(L,v)=>S.filter(T=>T.table===L).reduce((T,C)=>T+Number(C[v]),0),N=Object.fromEntries(c.map(L=>[L,{existingRows:w(L,"existingRows"),inputRows:w(L,"inputRows"),updateRows:w(L,"updateRows"),addRows:w(L,"addRows"),deleteRows:w(L,"deleteRows"),rowIdNotFound:w(L,"rowIdNotFound")}])),b={kind:"IMPORT_CSV_SUBTABLE_REPLACE",rowIdPolicy:"PRESERVE_EXISTING",parentsToWrite:h.length,insertedParents:0,updatedParents:h.length,hasDeletes:h.some(L=>L.tables.some(v=>v.deleteRows>0)),totalDeleteRows:h.flatMap(L=>L.tables).reduce((L,v)=>L+v.deleteRows,0),rowIdNotFound:h.flatMap(L=>L.tables).reduce((L,v)=>L+v.rowIdNotFound,0),invalidParents:m.size,parents:h.map(L=>({parentRow:L.parentRow,mode:"UPDATE",targetId:L.targetId,tables:L.tables}))},_=[...new Set(e.targets.flatMap(L=>L.kind==="FIELD"?[L.field]:L.children))],P=jl(y,_),D=[..._,...Yl];if(e.validateOnly){if(e.validationErrorTable&&!a)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return e.validationErrorTable&&a&&pt(a,e.validationErrorTable,D,P,o.tempTableMaxRows??Ve,new Map),{type:"VALIDATION",operation:"UPDATE",validatedRows:E.length,validRows:E.length-m.size,invalidRows:m.size,errorCount:P.length,columns:D,errors:P,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},importDetail:{preflight:"ACTUAL_DATA",parents:{total:E.length,valid:h.length,invalid:m.size,mutationCandidates:h.length},tables:N,rowIdPolicy:"PRESERVE_EXISTING",rowIdNotFound:b.rowIdNotFound,writesKintone:!1}}}if(y.length&&!e.onErrorSkip){let L=y[0];throw new Error(`DmlValidationError: ${L.code} ${L.message} (row=${L.parentRow}, field=${L.field})`)}if(e.onErrorSkip){if(!a||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch and INTO error table.");pt(a,e.errorTable,D,P,o.tempTableMaxRows??Ve,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:b}))throw new ce("UPDATE",h.length)}let F=L=>new Map(Object.entries(L).map(([v,T])=>[v,T.value]));for(let L of h){let v=zl(F(L.top),new Map([...L.subtables].map(([T,C])=>[T,C.map(U=>({...U.rowId?{rowId:U.rowId}:{},values:F(U.record)}))])),"PRESERVE");await i.putRecords({app:e.appId,records:[{id:L.targetId,...L.revision===void 0?{}:{revision:L.revision},record:v}]})}return{type:"UPDATE",updatedCount:h.length,affectedRows:h.length,skippedRows:m.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:b}}async function ZS(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 et(e.appId,e.fields,n,i),s=await Nt(e.appId,e.fields,a,n,i),l=await pa(t,new Map),c=$l(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=Xl(p,e.recordNumberSourceHeader),d=new Set,f=[...new Set(u.normalized.filter(b=>b!==null))];for(let b=0;b<f.length;b+=100){let _=f.slice(b,b+100),P=await n.getRecords({app:e.appId,query:`$id in (${_.join(",")}) limit 500`,fields:["$id"]});for(let D of P.records){let F=D.$id?.value;typeof F=="string"&&F!==""&&d.add(F.replace(/^0+(?=\d)/,""))}}let R=new Map(a.map(b=>[b.code,b])),E=new Map(e.fields.map(b=>[b,R.get(b)?.fieldType??"SINGLE_LINE_TEXT"])),g=c.rows.map((b,_)=>{let P=u.normalized[_],D=[...c.importRowErrors?.[_]??[],...u.errors[_]];return P!==null&&!d.has(P)&&D.push({field:e.recordNumberSourceHeader,code:"ERR_RECORD_NUMBER_NOT_FOUND",message:`record number ${P} does not exist in APP${e.appId}`}),{rowNumber:_+1,operation:"UPDATE",mode:"update",...P!==null&&d.has(P)?{targetId:Number(P)}:{},payload:new Map([[e.recordNumberSourceHeader,p[_]],...e.fields.map(F=>[F,b[F]??""])]),preErrors:D,record:{},evaluationRow:b,evaluationFieldTypes:E}}),y=[e.recordNumberSourceHeader,...e.fields],m=rl(g,"UPDATE",y,e.fields,a,1,s,e.checkGroups??[],!1),A=[...y,...Wn],h={type:"VALIDATION",operation:"UPDATE",validatedRows:g.length,validRows:g.length-m.invalidRows,invalidRows:m.invalidRows,errorCount:m.errors.length,columns:A,errors:m.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&&pt(o,e.validationErrorTable,A,m.errors,r.tempTableMaxRows??Ve,new Map),h}if(!e.onErrorSkip&&m.invalidRows>0){let b=m.errors[0];throw new Error(`DmlValidationError: ${b.$err_code} ${b.$err_message} (row=${b.$err_row}, field=${b.$err_field})`)}if(e.onErrorSkip){if(!o||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch.");if(pt(o,e.errorTable,A,m.errors,r.tempTableMaxRows??Ve,new Map),e.rejectLimit!=null&&m.invalidRows>e.rejectLimit)throw new Si(`rejected rows (${m.invalidRows}) exceed REJECT LIMIT (${e.rejectLimit}).`,h)}let S=g.filter(b=>!m.invalidRowNumbers.has(b.rowNumber));if(r.confirm&&!await r.confirm(S.length,"UPDATE"))throw new ce("UPDATE",S.length);let w=S.map(b=>({id:b.targetId,record:b.record}));for(let b=0;b<w.length;b+=100)await n.putRecords({app:e.appId,records:w.slice(b,b+100)});let N={type:"UPDATE",updatedCount:w.length,...e.onErrorSkip?{affectedRows:w.length,skippedRows:m.invalidRows,rejectLimit:e.rejectLimit??null,errTable:e.errorTable}:{}};return Object.assign(N,{insertedCount:0,importAudit:c.importAudit}),N}async function eT(e,t,n,r,i,o){let a=Ua.get(e);if(!a){let E=i&&i.size>0?await bt(e.select,t,n,i,r,!0):await Yt(e.select,t,n,r,void 0,!0);return{rows:E.rows,columns:E.columns,columnMeta:de.get(E)}}let s=await pa(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"?Kl(a.source,s,p,l):$l(a.source,s,l,e.fields,o);if(a.audit=u.importAudit,a.source.kind==="JSON"||!a.source.projection)return u;let d=jf(a.source.projection),f=new Map(i??[]);f.set(ql,u);let R=await bt(d,t,{...n,onLimitReached:"error"},f,r,!0);return{rows:R.rows,columns:R.columns,columnMeta:de.get(R)}}var Ju={materialize:eT};function QE(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 Qu(e,t,n,r,i){if(e.checkGroups?.length)return Li(e,t,n,r,i);let o=await et(e.appId,e.fields,t,r),a=await Nt(e.appId,e.fields,o,t,r),s=await Ju.materialize(e,t,n,r,i,o),{rows:l,columns:c}=s;if(QE(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 ce("INSERT",l.length);let p=await Ne(e.appId,t,r),u=l.map((f,R)=>{let E={};return e.fields.forEach((g,y)=>{if(s.importPresence&&!s.importPresence[R]?.has(g))return;let m=f[c[y]]??"";E[g]={value:jE(m,p.get(g))}}),E});u.forEach(f=>An([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 hu(e,t,n,r,i){if(e.applyBlocks?.length)return ZE(e,t,n,r);if(e.checkGroups?.length&&wt(e.where)){let R=await et(e.appId,e.assignments.map(g=>g.field),t,r);await Nt(e.appId,e.assignments.map(g=>g.field),R,t,r);let E=await Ne(e.appId,t,r);return qE(e,E),hn(e,Au(E,e.appId)),await er(e,t,r),{type:"UPDATE",updatedCount:0}}if(e.checkGroups?.length)return Li(e,t,n,r,i);if(e.subtableCode)return await er(e,t,r),yT(e,t,n,r);let o=await et(e.appId,e.assignments.map(R=>R.field),t,r),a=e.assignments.map(R=>R.field),s=await Nt(e.appId,a,o,t,r);if(await er(e,t,r),wt(e.where))return{type:"UPDATE",updatedCount:0};if(e.from!=null)return dT(e,e.from,t,n,r,i);let l=n.maxRecords??1e4;await sR(e.assignments,t,n,r);let c=await Ne(e.appId,t,r);if(Co(e)){let R=Bs(e),g=(await qe(t.getRecords,R.app,R.query,[...R.fields],{maxRecords:l,parallel:n.fetchParallel??1})).records,y=$s(e,g,c);if(An(y.flatMap(m=>m.records.map(A=>A.record)),a,o,s),n.confirm&&!await n.confirm(g.length,"UPDATE"))throw new ce("UPDATE",g.length);for(let m of y)await t.putRecords(m);return{type:"UPDATE",updatedCount:g.length}}let p=Dr(e),d=(await Vo(t.getRecords,p.app,p.query,{maxRecords:l,parallel:n.fetchParallel??1})).ids,f=vr(e,d,c);if(An(f.flatMap(R=>R.records.map(E=>E.record)),a,o,s),n.confirm&&!await n.confirm(d.length,"UPDATE"))throw new ce("UPDATE",d.length);for(let R of f)await t.putRecords(R);return{type:"UPDATE",updatedCount:d.length}}async function ZE(e,t,n,r,i=1){if(!e.validateOnly&&n.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");if(!Et(e.where))return tT(e,t,n,r,i);let o=await re(e.appId,t,r),a=At(e,o),s=Lo(e,o),l=Xs(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}.`);Uo(c.records[0]);let u=pd({statement:e,snapshot:c.records[0],fieldInfos:o,metadata:a}),d=rt(o,e.assignments.map(S=>S.field)),f=rn(u.postImage,d)?await dt(e.appId,t,r):void 0,R=on(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=We(n.dmlMaxRows,"dmlMaxRows",Pt),g=We(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ie),y=u.parentRows>E||u.changedSubtableRows>g;if(e.validateOnly){let S=Vr({plans:[u],records:Fr(u).records,validations:[],guards:{revisionRequired:!0,parentRows:u.parentRows,dmlMaxRows:E,subtableRows:u.changedSubtableRows,dmlMaxSubtableRows:g,wouldExceed:y}}),w={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:Ti(S.branches[0]),guards:Ii(S.branches[0]),deletedRows:{total:u.tables.reduce((N,b)=>N+b.deletedRows,0),parentRows:u.tables.some(N=>N.deletedRows>0)?1:0},diagnostic:S};return Sn.set(w,Ba(R.columns,o,e.appId)),w}if(u.parentRows>E)throw new Error(`ArgumentError: APPLY parent rows (${u.parentRows}) exceed dmlMaxRows (${E}).`);if(u.changedSubtableRows>g)throw new Error(`ArgumentError: APPLY changed subtable rows (${u.changedSubtableRows}) exceed dmlMaxSubtableRows (${g}).`);let m=Do(u,R.normalizedRecord),A=Fr(m),h=Vr({plans:[m],records:A.records,validations:[],guards:{revisionRequired:!0,parentRows:u.parentRows,dmlMaxRows:E,subtableRows:u.changedSubtableRows,dmlMaxSubtableRows:g,wouldExceed:y}});if(n.confirm){let S=Ga(h,!1);if(!await n.confirm(u.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPDATE",targetAppId:e.appId,applyDetail:S,applyDiagnostic:h}))throw new ce("UPDATE",u.parentRows)}return await t.putRecords(A),{type:"UPDATE",updatedCount:u.parentRows,diagnostic:xe(h,{successfulChunks:1,successfulParents:u.parentRows})}}async function tT(e,t,n,r,i){let o=We(n.dmlMaxRows,"dmlMaxRows",Pt),a=We(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ie),s=await re(e.appId,t,r),l=At(e,s),c;if(_a(e))c=await oT(e,t,n,s,r);else{let f=Lo(e,s),R=Dr(e).query,E=o+1;c=await Ce(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 xo({statement:e,snapshots:c,fieldInfos:s,metadata:l,dmlMaxRows:o,dmlMaxSubtableRows:a,statementNumber:i,loadNumberPrecision:()=>dt(e.appId,t,r)});if(e.validateOnly)return cT(e,p,s);vc("phase15b",e);let u=Vr(p);if(n.confirm){let f=Ga(u);if(!await n.confirm(p.guards.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPDATE",targetAppId:e.appId,applyDetail:f,applyDiagnostic:u}))throw new ce("UPDATE",p.guards.parentRows)}let d=await _d(p,t,u);return{...d,diagnostic:xe(u,d)}}function _a(e){return(e.applyBlocks?.length??0)>0&&!Et(e.where)&&(Lt(e.where)||me(e.where))}function nT(e){let t=e.type==="EXPLAIN"?e.query:e;return t.type==="UPDATE"&&_a(t)&&me(t.where)}var rT=`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
|
|
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&&Ct("string contains an unescaped control character",l.offset,l.line,l.column),R!=="\\"){d+=R;continue}n>=e.length&&Ct("string has an unterminated escape",l.offset,l.line,l.column);let E=o(),g={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:`
|
|
10
|
+
`,r:"\r",t:" "};if(E in g){d+=g[E];continue}E!=="u"&&Ct(`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)||Ct("has invalid unicode escape",n,r,i);for(let h=0;h<4;h++)o();let m=Number.parseInt(y,16);if(m>=55296&&m<=56319){(e.slice(n,n+2)!=="\\u"||!/^[0-9a-fA-F]{4}$/.test(e.slice(n+2,n+6)))&&Ct("has an unpaired high surrogate",n,r,i),o(),o();let h=e.slice(n,n+4);for(let b=0;b<4;b++)o();let A=Number.parseInt(h,16);(A<56320||A>57343)&&Ct("has an invalid surrogate pair",n-4,r,Math.max(1,i-4)),d+=String.fromCodePoint(65536+(m-55296<<10)+A-56320)}else m>=56320&&m<=57343?Ct("has an unpaired low surrogate",n-4,r,Math.max(1,i-4)):d+=String.fromCharCode(m)}f||Ct("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}Ct(`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 La(e){return e.kind==="eof"?"end of input":e.kind==="punct"?e.value:e.kind}function _a(e){if(e.byteLength===0)throw new B("JSON source is empty.");let t=eE(Zf(e)),n=0,r=(c,p=t[n])=>{throw new B(`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 ${La(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 ${La(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 ${La(c)}`,c)},s=a();t[n].kind!=="eof"&&r(`has trailing data; found ${La(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 B("JSON source contains no records.");return l.forEach((c,p)=>{if(!(c instanceof Map))throw new B(`JSON record ${p+1} must be an object.`)}),l}var Wh=new Set(["CHECK_BOX","MULTI_SELECT"]),tE=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]);function Rt(e,t,n){throw new B(`JSON field validation failed (row=${e}, field=${t}): ${n}`)}function Hh(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&!(e instanceof Map)&&e.kind==="number"}function Yh(e,t,n){if(e===null)return"";if(typeof e=="string")return e;if(typeof e=="boolean"&&Rt(n,t.code,"boolean is not accepted."),Hh(e)){t.fieldType==="NUMBER"&&Rt(n,t.code,"precision target requires a JSON string."),(!/^-?(?:0|[1-9]\d*)$/.test(e.lexeme)||e.lexeme==="-0")&&Rt(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)||Rt(n,t.code,`JSON number ${e.lexeme} is outside the safe integer range.`),String(i)}e instanceof Map&&Rt(n,t.code,"object is not accepted for a flat field."),Array.isArray(e)||Rt(n,t.code,"unsupported value type."),!Wh.has(t.fieldType)&&!tE.has(t.fieldType)&&Rt(n,t.code,"array is accepted only for multi-value fields.");let r=e.map(i=>(typeof i!="string"&&Rt(n,t.code,"array elements must be strings."),i));return new Set(r).size!==r.length&&Rt(n,t.code,"array elements must not contain duplicates."),tE.has(t.fieldType)?JSON.stringify(r.map(i=>({code:i}))):JSON.stringify(r)}function lu(e,t,n,r){if(t.encoding&&t.encoding!=="utf8")throw new B("JSON source is UTF-8 only.");let i=_a(t.bytes);if(i.length>r)throw new B(`source rows (${i.length}) exceed maxRecords (${r}).`);let o=new Map(n.map(l=>[l.code,l]));if(o.size!==n.length)throw new B("JSON target fields contain duplicates.");let a=[],s=[];return i.forEach((l,c)=>{for(let d of l.keys())o.has(d)||Rt(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]=Yh(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 uu(e,t,n,r,i,o){let a=Oa(t.bytes,{encoding:e.encoding??t.encoding??"utf8",hasHeader:e.hasHeader,columns:e.columns});if(a.rows.length>n)throw new B(`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 B("ERR_IMPORT_HEADER_REUSED: a BY NAME header cannot be consumed more than once.");let l=new Map(a.columns.map((y,m)=>[y,m]));for(let y of r)if(!l.has(y))throw new B(`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 B("ERR_IMPORT_HEADER_REUSED: record-number source header is lookup-only and cannot be a write target.");if(o&&!l.has(o))throw new B(`ERR_IMPORT_MISSING_COLUMN: required header "${o}" is missing.`);let u=[],d=[],f=y=>a.rows.filter(m=>m[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,m]of a.columns.entries()){if(p.has(m)||m===o)continue;let h=c.get(m);if(h)u.push({column:m,reason:R(h),nonEmptyCells:f(y)});else if(e.ignoreUnknownColumns)d.push({column:m,reason:"unknown column ignored by explicit policy",nonEmptyCells:f(y)});else throw new B(`ERR_IMPORT_UNKNOWN_COLUMN: unknown CSV header "${m}".`)}for(let y of r){let m=c.get(y);if(!m)throw new Error(`ArgumentError: DML target field ${y} does not exist.`);if(m.inSubtable||m.writable===!1||m.fieldType==="FILE"||m.fieldType==="SUBTABLE")throw new Error(`ArgumentError: DML target field ${y} is not writable (${m.fieldType}).`)}let E=[];return{rows:a.rows.map(y=>{let m=[],h={};for(let A of r){let b=y[l.get(A)];try{h[A]=Qf(b,c.get(A)?.fieldType,{cliKintone:!0})}catch(w){if(!(w instanceof pi))throw w;h[A]=b,m.push({field:A,code:w.code,message:w.message})}}return E.push(m),h}),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 di=(e,t,n)=>{throw new B(`JSON subtable validation failed (parentRow=${e}, field=${t}): ${n}`)};function nE(e,t,n,r,i=r){if(t.encoding&&t.encoding!=="utf8")throw new B("JSON source is UTF-8 only.");let o=_a(t.bytes);if(o.length>r)throw new B(`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 B("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)||di(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 g=l.get(E);if(R.kind==="FIELD"){g instanceof Map&&di(p,E,"object is not accepted for a top-level field."),u.set(E,g);continue}Array.isArray(g)||di(p,E,"subtable value must be an array."),f.add(E);let y=new Set(R.children),m=g.map((h,A)=>{h instanceof Map||di(p,E,`childRow=${A+1} must be an object.`);let b=h;for(let w of b.keys())y.has(w)||di(p,w,`unknown child key in subtable ${E} at childRow=${A+1}.`);if(s++,s>i)throw new B(`source child rows (${s}) exceed limit (${i}).`);return{childRowNumber:A+1,values:b}});d.set(E,m)}return{rowNumber:p,top:u,subtables:d,replacementTables:f}})}}function rE(e,t,n,r,i,o){let a=Oa(t.bytes,{encoding:e.encoding??t.encoding??"utf8",hasHeader:e.hasHeader,columns:e.columns});if(!e.hasHeader||a.columns[0]!=="*")throw new B('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 B(`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 B(`ERR_IMPORT_MISSING_COLUMN: required header "${d.field}" is missing.`);for(let d of c){if(!d.rowIdSourceHeader||!s.has(d.rowIdSourceHeader))throw new B(`ERR_IMPORT_MISSING_COLUMN: row-ID header for ${d.subtableCode} is missing.`);for(let f of d.children)if(!s.has(f))throw new B(`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 B(`ERR_IMPORT_MARKER: invalid marker ${JSON.stringify(E)} at source row ${R}.`);if(E==="*"){if(p.length>=i)throw new B(`source parent rows exceed maxRecords (${i}).`);u={rowNumber:p.length+1,markerRowNumber:R,top:new Map(l.map(g=>[g.field,d[s.get(g.field)]])),subtables:new Map(c.map(g=>[g.subtableCode,[]])),replacementTables:new Set(r),...o?{recordNumberSourceValue:d[s.get(o)]}:{}},p.push(u)}else if(u){for(let g of l){let y=d[s.get(g.field)];if(y!==""&&y!==u.top.get(g.field))throw new B(`ERR_IMPORT_PARENT_VALUE_ON_CONTINUATION: ${g.field} at source row ${R}.`)}if(o){let g=d[s.get(o)];if(g!==""&&g!==u.recordNumberSourceValue)throw new B(`ERR_IMPORT_PARENT_VALUE_ON_CONTINUATION: ${o} at source row ${R}.`)}}else throw new B(`ERR_IMPORT_MARKER: first data row must start a parent (source row ${R}).`);for(let g of c){let y=d[s.get(g.rowIdSourceHeader)],m=new Map(g.children.map(A=>[A,d[s.get(A)]]));if(y===""&&[...m.values()].every(A=>A===""))continue;let h=u.subtables.get(g.subtableCode);h.push({childRowNumber:h.length+1,sourceRowNumber:R,...y?{rowId:y}:{},values:m})}}),p.length===0)throw new B("CSV has no parent rows.");return{records:p}}var jh=new Set(["USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT"]),qh=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 sE(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)iE(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)iE(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=>zh(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 zh(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)||oE(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 g=l.length,y={},m=i.get(d.subtableCode);for(let h of d.children){let A=m.get(h),b=cu(e,a,h,d.subtableCode,E.childRowNumber,E.sourceRowNumber??e.markerRowNumber);E.values.has(h)?pu(E.values.get(h),A,o,y,h,l,b):oE(A,o,y,l,b)}l.length===g?(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 iE(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&&qh.has(t.fieldType))throw new Error(`ArgumentError: IMPORT ${n?`child ${n}.${e}`:`field ${e}`} is not writable (${t.fieldType}).`)}function oE(e,t,n,r,i){let o=pn(e.defaultValue)?"":e.defaultValue;pu(o,e,t,n,e.code,r,i,!pn(e.defaultValue))}function pu(e,t,n,r,i,o,a,s=!1){let l=Jh(e),c=Fe(l,t,n);c.ok?r[i]={value:Xh(l,t)?l:c.value}:o.push({...a,code:c.code,message:s?`\u65E2\u5B9A\u5024: ${c.message}`:c.message})}function Jh(e){return aE(e)?e.lexeme:Array.isArray(e)?e.map(t=>t instanceof Map?t:aE(t)?t.lexeme:t):e}function aE(e){return typeof e=="object"&&e!==null&&e.kind==="number"}function Xh(e,t){return jh.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 fu=["$err_statement","$err_operation","$err_row","$err_field","$err_subtable","$err_subrow","$err_source_row","$err_code","$err_message"];function Eu(e,t,n=1){return e.map(r=>{let i={};for(let o of t)i[o]=r.sourceValues.get(o)==null?"":Qh(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 Qh(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 Ru(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 lE(e,t){return Ru(e,t,"DROP")}function uE(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 cE(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 Zh(e,t){let n=e[t]?.value;return Array.isArray(n)?n:[]}function pE(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 dE(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=Zh(c.record,f),E=new Set(R.map(w=>w.id).filter(w=>!!w)),g=s.subtables.get(f)??[],y=o.subtables.get(f)??[],m=0,h=0,A=0,b=g.map((w,P)=>{let T=y[P]??{};return w.rowId&&E.has(w.rowId)?(m++,{rowId:w.rowId,record:T}):(w.rowId&&((i.get(w.rowId)??[]).some(N=>N.parentId!==l||N.table!==f)&&p.push({operation:"UPDATE",parentRow:o.parentRow,field:w.rowId,subtable:f,subrow:w.childRowNumber,sourceRow:w.sourceRowNumber,code:"ERR_IMPORT_FIELD_OWNERSHIP",message:`rowIdOwnedElsewhere: ${w.rowId}`,sourceValues:w.values}),A++),h++,{record:T})});u.set(f,b),d.push({table:f,existingRows:R.length,inputRows:g.length,updateRows:m,addRows:h,deleteRows:R.length-m,rowIdNotFound:A})}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 gu="#__import_source";function fE(e){return{...e,from:{appId:0,alias:null,cteName:gu}}}function eS(e){return/^[0-9]+$/.test(e)?e.replace(/^0+(?=\d)/,""):null}function yu(e,t){let n=e.map(eS),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 tS="\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",Tn=class extends Error{constructor(){super("SearchAbortedError: kintone \u306E\u691C\u7D22\u304C 10 \u4E07\u4EF6\u3067\u6253\u3061\u5207\u3089\u308C\u305F\u305F\u3081\u3001\u5B8C\u5168\u306A\u5BFE\u8C61\u96C6\u5408\u3092\u78BA\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002"),this.name="SearchAbortedError"}},ge=new WeakMap;function _E(e){return ge.get(e)}var Cn=new WeakMap,Xa=new WeakMap,EE=new WeakMap,nS=1,rS=1;function DE(e,t){if(t)return t;let n=EE.get(e);return n||(n=`client:${nS++}`,EE.set(e,n)),n}function ju(e){return`${e}\0inv:${rS++}`}async function qu(e,t,n={}){let r=Date.now(),i=ju(DE(t,n.cacheContext));try{let o=YT(e,n.enableImport===!0),a=vE(),s=kE(t,a),l={aborted:!1},c=Ju(s,l,!oS(o)||kl(o)),p=await Iu(o,c,n,i);a.elapsedMs=Date.now()-r;let u={...ME(p,l),metrics:a};if(p.type==="SELECT"){let d=ge.get(p);d&&ge.set(u,d)}return u}finally{Ec(i)}}function vE(){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 UE=Symbol("limitMetricsSink");function zu(e,t){let n=e[UE];n&&(n.limitReached=!0,n.limitReachedApps.includes(t)||n.limitReachedApps.push(t))}function kE(e,t){return{[UE]: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 RE=Symbol("searchAbortFailClosed");function Ju(e,t,n){return n&&e[RE]?e:{...e,...n?{[RE]:!0}:{},getRecords:async r=>{let i=await e.getRecords(r);if(i.searchAborted&&(t.aborted=!0,n))throw new Tn;return i}}}function iS(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 oS(e){return e.type==="SELECT"||e.type==="UNION"||e.type==="WITH"}function ME(e,t){if(!t.aborted||e.type!=="SELECT")return e;let n=new Set(e.warnings??[]);return n.add(tS),{...e,warnings:[...n]}}async function gE(e,t,n){let r=await _i(e,t,n);return au(r),r}async function _i(e,t,n){return Jf(e,{select:async r=>{let{resolver:i}=await An(r,t,n);return ye(r.where,i)},dml:r=>jE(r,t,n),prefilterDecomposition:async r=>{if(r.where===null)return null;let{resolver:i}=await An(r,t,n);return su(r,i)},joinServerFunctionPlan:async r=>{await An(r,t,n);let i=await Za(r,t,n),o=Qa(r,i);return o===null?null:(er(o.joinPlan)&&oc.set(r,o),o.joinPlan)}})}async function Iu(e,t,n,r){let i=await _i(e,t,r);e.type!=="EXPLAIN"&&au(i);let o=bu(e);if(o!==null&&!wT(e))throw new Error(`ParseError: variable @${o} is not defined in a batch.`);if(Fn("phase15b",e),no("phase15b",e),Qe(e),e.type!=="EXPLAIN"&&await AS(e,t,r),e.type==="IMPORT")return RR(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 Bu(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 aS(e,t,n,r);case"SELECT":return Qt(Lu(e),t,n,r,void 0,n.captureColumnMeta===!0,n.captureColumnMeta===!0);case"UNION":return aR(e,t,n,r,n.captureColumnMeta===!0,n.captureColumnMeta===!0);case"WITH":return pc(e,t,n,r,void 0,n.captureColumnMeta===!0);case"INSERT":return mT(e,t,n,r);case"INSERT_SELECT":return hc(e,t,n,r);case"UPSERT":return FT(e,t,n,r);case"UPSERT_SELECT":return Ic(e,t,n,r);case"UPDATE":return Bu(e,t,n,r);case"DELETE":return MT(e,t,n,r);case"REORDER":return VT(e,t,n,r);case"SHOW_APPS":return TR(t);case"DESCRIBE":return IR(e,t,r);case"EXPLAIN":return JT(e,t,r,n.maxRecords??1e4,n.cursorMaxActive??2,e.query.type==="UPDATE"&&e.query.applyBlocks?.length?qe(n.dmlMaxRows,"dmlMaxRows",vt):vt,e.query.type==="UPDATE"&&e.query.applyBlocks?.length?qe(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ne):Ne,i);case"CREATE_TEMP_TABLE":throw new Error("ArgumentError: CREATE TEMP TABLE requires a batch (temp tables are batch-scoped).");case"DROP_TEMP_TABLE":throw new Error("ArgumentError: DROP TEMP TABLE requires a batch (temp tables are batch-scoped).");case"SET_VARIABLE":throw new Error("ArgumentError: SET variable requires a batch.");case"DECLARE_VARIABLE":throw new Error("ArgumentError: DECLARE variable requires a batch.");case"ASSERT":return BE(e,t,n,r)}}var Xu=["$id","$err_field","$err_code","$err_message","$err_value","$err_subtable","$err_subrow","$err_subrow_id","$err_count"],Qu=["$id","$err_subtable","$err_field","$err_code","$err_count"];function Zu(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 FE(e=!1){let t=e?Qu:Xu;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:K(n==="$id"||n==="$err_count"?"number":"string")}]))}async function aS(e,t,n,r){if(e.errorTable)throw new Error("ArgumentError: VALIDATE INTO requires a batch.");return xE(e,t,n,r)}async function xE(e,t,n,r){let i=await Q(e.appId,t,r),o=new Map(i.filter(C=>!C.inSubtable).map(C=>[C.code,C])),a=new Set(i.filter(C=>C.inSubtable).map(C=>C.code)),s=Cl(e,i),l=new Set(s.flatMap(C=>Nl(C.field))),c={present:bl.filter(C=>l.has(C)),absent:bl.filter(C=>!l.has(C))},p=e.checkGroups??[],u=jn(p);for(let C of u){if(C.field!=="$id"&&!o.has(C.field)&&!a.has(C.field))throw Ie(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${C.field} \u306F APP${e.appId} \u306B\u5B58\u5728\u3057\u307E\u305B\u3093`);if(C.field!=="$id"&&!o.has(C.field)&&a.has(C.field))throw new Error(`ArgumentError: VALIDATE \u306E CHECK \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${C.field} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let d=new Map([...o].map(([C,x])=>[C,x.fieldType]));d.set("$id","RECORD_NUMBER"),Pn(e,d);let f=Zu(e.where),R=[...new Set(["$id",...s.map(C=>C.subtableCode??C.field.code),...f,...u.map(C=>C.field)])];for(let C of f){if(C!=="$id"&&!o.has(C)&&!a.has(C))throw new Error(`ArgumentError: WHERE field ${C} does not exist in APP${e.appId}.`);if(C!=="$id"&&!o.has(C)&&a.has(C))throw new Error(`ArgumentError: VALIDATE \u306E WHERE \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${C} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let E=s.some(C=>C.field.fieldType==="NUMBER")?await yt(e.appId,t,r):void 0,g=C=>C.field==="$id"?X({fieldType:"__ID__"}):o.get(C.field)?.semantics??(o.has(C.field)?X(o.get(C.field)):void 0),y=ye(e.where,g);if(y.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${hn(y)}).`);let m=new Map([...o].map(([C,x])=>[C,x.fieldType])),h=new Map([...o.values()].flatMap(C=>C.optionOrder?[[C.code,new Set(Object.keys(C.optionOrder))]]:[])),A=e.where===null?null:y.capability==="EXACT_PUSHDOWN"?e.where:$s(e.where,{allowUnqualifiedFields:!0,fieldTypes:m,fieldOptions:h,allowKlike:!1}),b=A===null?"":Y(A),P=(await De(t.getRecords,e.appId,b,R,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"})).map(C=>({id:String(C.$id?.value??""),record:C,flat:Pt(C,null)})).filter(C=>e.where===null||oe(e.where,C.flat,x=>d.get(x.field))),T=[],L=new Map,N=new Map,_=new Set,F=0,D=C=>{if(_.add(C.id),F+=1,e.summary){let v=JSON.stringify([C.id,C.subtable??"",C.field,C.code]),U=N.get(v);U?U.$err_count=String(Number(U.$err_count)+1):N.set(v,{$id:C.id,$err_subtable:C.subtable??"",$err_field:C.field,$err_code:C.code,$err_count:"1"});return}let x=JSON.stringify([C.id,C.subtable??"",C.field,C.code,C.message]),H=L.get(x);H?(H.$err_count=String(Number(H.$err_count)+1),C.subrow!==void 0&&(H.$err_subrow=`${H.$err_subrow},${C.subrow}`,H.$err_subrow_id=`${H.$err_subrow_id},${C.subrowId??""}`)):L.set(x,{$id:C.id,$err_field:C.field,$err_code:C.code,$err_message:C.message,$err_value:C.value,$err_subtable:C.subtable??"",$err_subrow:C.subrow===void 0?"":String(C.subrow),$err_subrow_id:C.subrowId??"",$err_count:"1"})},M=s.filter(C=>!C.subtableCode),S=new Map;for(let C of s){if(!C.subtableCode)continue;let x=S.get(C.subtableCode)??[];x.push(C),S.set(C.subtableCode,x)}for(let C of P){for(let x of M){let H=C.record[x.field.code]?.value,v=Fe(H,x.field,E);v.ok||D({id:C.id,field:x.field.code,code:v.code,message:v.message,value:Yr(H,x.field.fieldType)})}for(let[x,H]of S){let v=C.record[x]?.value;if(Array.isArray(v))for(let U=0;U<v.length;U++){let W=v[U];for(let V of H){let $=W.value?.[V.field.code]?.value,G=Fe($,V.field,E);if(!G.ok){let ae=ta(x,U,W);D({id:C.id,field:V.field.code,code:G.code,message:G.message,value:Yr($,V.field.fieldType),...ae})}}}}for(let x of $o(p,C.flat,H=>d.get(H.field)))D({id:C.id,field:"",code:"ERR_CHECK",message:x.message,value:""})}if(e.summary)T.push(...N.values());else for(let C of L.values()){let x=Number(C.$err_count);C.$err_subtable!==""&&x>=2&&(C.$err_message=`${C.$err_message}\uFF08${x}\u884C: ${C.$err_subrow}\uFF09`),T.push(C)}let k={type:"SELECT",columns:[...e.summary?Qu:Xu],rows:T,rowCount:T.length,validateStats:{errorRecords:_.size,errorCount:F,constraintMetadata:c}};return ge.set(k,FE(e.summary===!0)),k}var je=1e4;function gt(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])||!sS(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 sS(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||!yo(i.semantics,r.semantics))return!1}return!0}var rr=class extends Error{constructor(){super("TimeoutError: batch timeout exceeded.")}};async function GE(e,t,n={}){let r=ec(e,n.enableImport===!0),i=Qs(r);if(r.forEach(f=>no("phase15b",f)),n.allowApplyMutation!==!0&&r.some(f=>Is(f)||f.type==="UPSERT"&&lS(f)))throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let o=Ul(r,n.variables),a=KE(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 ne(`ArgumentError: temp table references in ${f.statementType} are not supported yet.`,f.index)}let l=vE(),c=kE(t,l),p=Date.now(),u=n.timeoutMs!=null?p+n.timeoutMs:null,d=ju(DE(t,n.cacheContext));try{let f=new Map,R=new Map,E=[],g=new Set,y=null;for(let m=0;m<r.length;m++){let h=i.statements[m],A={index:m,type:h.statementType};if(y){E.push({...A,status:"skipped",skippedReason:y}),g.add(m);continue}let b=h.dependsOn.find(w=>g.has(w));if(b!==void 0){let w=i.statements[b].tempTablesCreated[0]??`statement ${b}`;E.push({...A,status:"skipped",skippedReason:`dependency: ${w}`}),g.add(m);continue}if(u!==null&&Date.now()>=u){E.push({...A,status:"skipped",skippedReason:"timeout"}),g.add(m),y="timeout";continue}try{let w=u!==null?u-Date.now():null,P=s.confirm,T=P?{...s,confirm:(D,M,S)=>P(D,M,{statementIndex:m,statementCount:r.length,statementType:h.statementType,targetAppId:h.targetAppId,...S?.importDetail?{importDetail:S.importDetail}:{},...S?.applyDetail?{applyDetail:S.applyDetail}:{},...S?.applyDiagnostic?{applyDiagnostic:S.applyDiagnostic}:{}})}:s,L={aborted:!1},N=Ju(c,L,h.statementType!=="SELECT"&&h.statementType!=="UNION"&&h.statementType!=="WITH"||kl(r[m])),_=iS(N),F=await pS(uS(r[m],h,_.client,T,d,f,R,a),w,_.closeActive);F.result&&(F.result=ME(F.result,L)),E.push({...A,status:"success",...F})}catch(w){E.push({...A,status:"error",error:dS(w),...w instanceof Ni?{result:w.diagnostic}:{}}),g.add(m),w instanceof rr?y="timeout":w instanceof or?y="assertion":h.statementType==="SET_VARIABLE"||h.statementType==="DECLARE_VARIABLE"?y="fail-fast":n.continueOnError||(y="fail-fast")}}return l.elapsedMs=Date.now()-p,{ok:E.every(m=>m.status==="success"),statementCount:r.length,statements:E,analysis:i,metrics:l}}finally{Ec(d)}}function lS(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 uS(e,t,n,r,i,o,a,s){if(e.type==="SET_VARIABLE"){let c=Va(e,a);if(Qe(c),await gE(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 $E(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 ja(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 mn?new Error(`ArgumentError: ${p.message}`):p}else a.set(e.name,yE(c.expr));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=yE(e.default);a.set(e.name,{type:"string",value:p.type==="number"?p.raw??String(p.value):p.value})}return{}}let l=Va(e,a);if(Fn("phase15b",l),no("phase15b",l),Qe(l),await gE(l,n,i),l.type==="VALIDATE"){let c=await xE(l,n,{...r,onLimitReached:"error"},i);return l.errorTable&>(o,l.errorTable,c.columns,c.rows,r.tempTableMaxRows??je,ge.get(c)??FE(l.summary===!0)),{result:c}}if(l.type==="IMPORT")return{result:await RR(l,n,r,i,o)};if("validateOnly"in l&&l.validateOnly===!0){let c=await gc(l,n,{...r,onLimitReached:"error"},i,o,t.index+1);return l.validationErrorTable&>(o,l.validationErrorTable,c.columns,c.errors,r.tempTableMaxRows??je,Cn.get(c)??new Map),{result:c}}if("onErrorSkip"in l&&l.onErrorSkip===!0)return{result:await Gu(l,n,{...r,onLimitReached:"error"},i,o,t.index+1)};if(l.type==="CREATE_TEMP_TABLE"){let c={...r,maxRecords:r.tempTableMaxRows??je,onLimitReached:"error"},p=await cS(l.query,n,c,i,o);return o.set(l.name,{rows:p.rows,columns:p.columns,columnMeta:ge.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;Yu.set(c,o);try{return{result:await Iu(c,n,r,i)}}finally{Yu.delete(c)}}if(l.type==="ASSERT")return await BE(l,n,r,i,o),{};if(t.tempTablesReferenced.length>0){if(l.type==="SELECT"||l.type==="UNION")return{result:await _t(l,n,r,o,i,r.captureColumnMeta===!0)};if(l.type==="WITH")return{result:await pc(l,n,r,i,o)};if(l.type==="INSERT_SELECT")return{result:await hc(l,n,r,i,o)};if(l.type==="UPSERT_SELECT")return{result:await Ic(l,n,r,i,o)};if(l.type==="UPDATE"&&l.from?.cteName!=null)return{result:await Bu(l,n,r,i,o)};throw new Error(`ArgumentError: temp table references in ${e.type} are not supported yet.`)}return{result:await Iu(l,n,r,i)}}async function cS(e,t,n,r,i){return e.type==="WITH"?pc(e,t,n,r,i,!0):_t(e,t,n,i,r,!0)}async function pS(e,t,n){if(t===null)return e;if(t<=0)throw n&&await n(),e.catch(()=>{}),new rr;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 rr)})()},t)})])}catch(a){throw a instanceof rr&&e.catch(()=>{}),a}finally{r!==void 0&&clearTimeout(r)}}function dS(e){let t;if(e instanceof pt)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:fS(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 fS(e){try{return JSON.stringify(e)??String(e)}catch{return String(e)}}function ec(e,t=!1){let n=new Yt(e).tokenize();return new jt(n,{import:t}).parseStatements()}function ES(e,t){try{let n=ec(`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 KE(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)?ES(r.name,t[r.name]):r.default);return n}function yE(e){switch(e.type){case"STRING":return{type:"string",value:e.value};case"NUMBER":return{type:"number",value:e.value,raw:j(e)};case"KINTONE_FUNC":return{type:"string",value:wd(e.name)};case"STRING_FUNC":return{type:"string",value:pe(e,{})};case"ARITH":{let t=ce(e,{});if(!Number.isFinite(t))throw new Error("ArgumentError: SET scalar arithmetic produced a non-finite number.");return{type:"number",value:t,raw:String(t)}}}}function Va(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=RS(i);if(o.type==="SELECT"&&He(o.where,!0)&&(o.where=null),(o.type==="UPDATE"||o.type==="DELETE"||o.type==="REORDER")&&He(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 He(e,t){return e!==null&&typeof e=="object"&&e.type==="BOOLEAN"&&(t===void 0||e.value===t)}function RS(e){if(e.type==="NOT"&&He(e.expr))return{type:"BOOLEAN",value:!e.expr.value};if(e.type==="GROUP"&&He(e.expr))return e.expr;if(e.type==="LOGICAL"){let t=e.left,n=e.right;if(e.op==="AND"){if(He(t,!1)||He(n,!1))return{type:"BOOLEAN",value:!1};if(He(t,!0))return n;if(He(n,!0))return t}else if(e.op==="OR"){if(He(t,!0)||He(n,!0))return{type:"BOOLEAN",value:!0};if(He(t,!1))return n;if(He(n,!1))return t}}return e}function bu(e){if(Array.isArray(e)){for(let t of e){let n=bu(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=bu(n);if(r!==null)return r}}return null}var or=class extends Error{constructor(t){super(`AssertError: ${t}`),this.name="AssertError"}},mn=class extends Error{constructor(t){super(t),this.name="ScalarSubqueryError"}};async function BE(e,t,n,r,i){let o=await Da(e.left,t,n,r,i),a=e.left.type==="NUMBER"||e.left.type==="ARITH"?K("number"):K("string");if(e.op==="BETWEEN"){if(e.low===null||e.high===null)throw new Error("ArgumentError: malformed ASSERT statement.");let l=await Da(e.low,t,n,r,i),c=await Da(e.high,t,n,r,i);if(!un(">=",o,l,a)||!un("<=",o,c,a))throw new or(`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 Da(e.right,t,n,r,i);if(!un(e.op,o,s,a))throw new or(`assertion failed: ${e.text} (actual: ${o}).`);return{type:"ASSERT",condition:e.text}}async function Da(e,t,n,r,i){switch(e.type){case"VARIABLE":throw new Error(`ParseError: unresolved batch variable @${e.name}.`);case"NUMBER":return j(e);case"STRING":return e.value;case"ARITH":return String(Nu(e));case"SCALAR_SUBQUERY":try{return await $E(e.query,t,n,r,i)}catch(o){throw o instanceof mn?new or(o.message):o}}}async function $E(e,t,n,r,i){let{query:o,probed:a}=gS(e),s=await Ai(o,t,n,r,i);if(s.columns.length!==1)throw new mn(`scalar subquery returned ${s.columns.length} columns (expected 1 column).`);if(s.rowCount===0)throw new mn("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 mn(`scalar subquery returned ${l} (expected 1 row).`)}return s.rows[0]?.[s.columns[0]]??""}function gS(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 Nu(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=Nu(e.left),n=Nu(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 Di(e,t,n,r,i=!1){let o=[e.from,...e.joins.map(d=>d.table)],a=i||dt(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 Q(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,g=["=","!=","<>"].includes(R)&&E?.type==="STRING"&&E.value!=="";if(f.type==="BINARY"&&([">","<",">=","<="].includes(R)||g)){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(g=>f.get(g)?.fieldType==="STATUS"))return;let E=await Rc(d,t,n);E&&p.set(d,E)}));let u=(d,f,R)=>{if(f==="$id")return $n(X({fieldType:"__ID__"}),d.appId,"$id");if(R&&d.subtableCode){if(f==="_rid")return K("string");if(f==="_idx"||f==="_pid")return K("number")}let E=s.get(d.appId)?.get(de(d,f));if(!E)return;let g=E.semantics??X(E),y=E.fieldType==="STATUS"&&p.has(d.appId)?{...g,optionOrder:p.get(d.appId)}:g;return $n(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=>be(E)===d.tableAlias);return R?R.cteName!==null?r?.get(R.cteName)?.columnMeta?.get(d.field)?.semantics??K("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??K("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=>Fa(R,d.field)!==void 0))return f.length>1?K("string"):void 0}}var VE=new WeakMap;async function An(e,t,n,r,i=!1){let o=await Di(e,t,n,r,i);if(e.where===null)return{resolver:o,rewrites:[]};let a=Gp(e.where,o);return e.where=a.normalizedWhere,a.rewrites.length>0&&VE.set(e,a.rewrites),{resolver:o,rewrites:a.rewrites}}function yS(e){return e.columns.some(t=>t.type==="WINDOW_COL"&&t.windowKind==="AGGREGATE"&&t.orderBy.length>0&&t.frame?.source==="DEFAULT")}function WE(e){return yS(e)||e.columns.some(t=>t.type==="WINDOW_COL"&&t.windowKind==="VALUE")}function mE(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=xe(o.key.name);return a.field!==i?!1:a.tableAlias===null||a.tableAlias===be(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=xe(o.key.name);return a.field==="$id"||n(a)?.fieldType==="RECORD_NUMBER"})}function AE(e,t){return e!=="DIRECT"?"\u305D\u306E\u8868\u306E\u4E2D\u3067\u4E00\u610F\u306B\u306A\u308B\u5217\uFF08\u5143\u306E\u96C6\u7D04\u306E\u30AD\u30FC\u306A\u3069\uFF09\u3092 ORDER BY \u306B\u542B\u3081\u3066\u304F\u3060\u3055\u3044\u3002\u96C6\u7D04\u7D50\u679C\u306E\u5217\u306F\u4E00\u610F\u3067\u3082\u8A3C\u660E\u3067\u304D\u306A\u3044\u305F\u3081\u3001\u3059\u3067\u306B\u4E00\u610F\u306A\u5834\u5408\u3082\u3053\u306E\u8B66\u544A\u304C\u51FA\u307E\u3059\u3002\u5143\u306E\u96C6\u7D04\u306E\u30AD\u30FC\u3092\u3059\u3079\u3066 ORDER BY \u306B\u542B\u3081\u3066\u3044\u308B\u306A\u3089\u3001\u3053\u306E\u8B66\u544A\u306F\u7121\u8996\u3057\u3066\u69CB\u3044\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 HE(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"||mE(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`+AE(n,"RANGE"));for(let o of e.columns)o.type!=="WINDOW_COL"||o.windowKind!=="VALUE"||mE(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`+AE(n,"VALUE"));return i}function tc(e,t){if(t.length===0)return e;let n={...e,warnings:[...new Set([...e.warnings??[],...t])]},r=ge.get(e);return r&&ge.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=>dt(i.condition))?!0:Object.values(r).some(t)};return e.columns.some(t)}function YE(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(xe(r.field)):r.type==="ARITH_COL"||r.type==="ARITH_AGG_COL"?i=K("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=K("number"):(r.windowKind==="AGGREGATE"||r.windowKind==="VALUE")&&r.arg.type!=="WILDCARD"&&(i=wn(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=wn(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"?K("string"):K("number"):r.type==="STRFUNC_COL"?i=In(r.expr).semantics:(r.type==="LITERAL_COL"||r.type==="SCALAR_SUBQUERY_COL"||r.type==="CASE_COL"||r.type==="SCALAR_VALUE_COL")&&(i=K("string")),i&&n.set(r.alias,i)}return r=>r.tableAlias===null&&n.has(r.field)?n.get(r.field):t(r)}function hn(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 Wa(e){return e.orderBy.length>0||e.columns.some(t=>t.type==="WINDOW_COL"&&t.orderBy.length>0)}async function jE(e,t,n){if(e.subtableCode||e.type==="UPDATE"&&e.from!=null)return{capability:"LOCAL_ONLY",reasons:[{code:"WHERE_EXPRESSION_LOCAL_ONLY"}]};let r=dt(e.where)?await Q(e.appId,t,n):[],i=new Map(r.map(o=>[o.code,o]));return e.where.type==="BOOLEAN"&&e.where.value===!1?ye(null,()=>{}):ye(e.where,o=>{if(o.field==="$id")return X({fieldType:"__ID__"});let a=i.get(o.field);return a?.semantics??(a?X(a):void 0)})}async function ir(e,t,n){if(e.subtableCode||e.type==="UPDATE"&&e.from!=null)return;let r=await jE(e,t,n);if(r.capability!=="EXACT_PUSHDOWN")throw new re(`WHERE predicate cannot be represented by kintone REST (${hn(r)})`)}async function Qt(e,t,n,r,i,o=!1,a=!1,s="DIRECT"){let l;if(await Ii(e,t,r,i),TS(e))return l=bS(e),o&&ge.set(l,await ja(e,l.columns,t,r,i,a)),l;let{resolver:c}=await An(e,t,r,i,WE(e)),p=HE(e,c,s),u=await Si(e,t,r,i);await wR(e,t,n,r,i);let d=KS(e,ye(e.where,c));if(d.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${hn(d)}).`);let f=Be(e),R,E;if(d.capability==="SUPERSET_PREFILTER"){let P=await Di(e,t,r,i),T=su(e,P);T.eligible&&ou(e,T)&&(R=T.plan)}if(R===void 0&&d.capability==="EXACT_PUSHDOWN"&&e.where!==null){let P=null;try{P=Y(e.where)}catch{P=null}E=Co({select:e,selectMode:f,capability:d,context:{allowFullScanExact:!0},serializedWholeWhere:P,relativeFunctionNames:Ae(e.where)})??void 0,E&&(R=E.prefilterPlan)}let g=d.capability==="EXACT_PUSHDOWN"?f:"FULL_SCAN",y=await bi(e,t,r,i),m=Wa(e)?(e.orderMode==="KINTONE_NATIVE"?ei:Zr)({stmt:e,staticMode:g,whereCapability:d.capability,whereReasons:d.reasons,orderSemantics:y.semantics,maxRecords:n.maxRecords??1e4,hasKlike:Se(e.where)}):null,h=await PS(e,m?.kind==="CANONICAL_LOCAL"?"FULL_SCAN":g,t,r),A=rc(e,n,m),w=E!==void 0&&(f==="FULL_SCAN"||m?.kind==="CANONICAL_LOCAL")?Ju(t,{aborted:!1},!0):t;try{g==="SIMPLE"?l=await NS(e,w,A.effectiveOptions,r,m,y):l=await VS(e,w,A.effectiveOptions,r,i,d.capability==="EXACT_PUSHDOWN"&&R===void 0,y,R,u)}catch(P){zE(A,P)}return o&&ge.set(l,await ja(e,l.columns,t,r,i,a)),tc(l,[...p,...h])}function Pu(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 qE(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 Si(e,t,n,r){let i=Z(e);if(!so(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 Q(u.appId,t,n);if(!u.subtableCode){for(let E of d){if(E.inSubtable!==!0||!E.subtableCode)continue;let g=s.get(E.code)??[];g.push({appId:u.appId,owner:E.subtableCode}),s.set(E.code,qE(g))}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=hp(o,e.columns,c);return mS(e,o,p,s),Ar(e,wp(e,p,c)),p}function mS(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(Pu(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 Ti=new WeakMap;async function AS(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 Ii(o,t,n);return}for(let s of Object.values(a))await i(s)};await i(e)}async function hS(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 Q(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=de(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(m=>m.cteName===null&&l(m,f.field)!==null).length,g=i.some(m=>c(m,f.field)),y=be(u);return{canonicalId:`source:${d}:APP${u.appId}:${R}`,directKey:f.tableAlias&&y?`${f.tableAlias}.${f.field}`:f.field,unqualifiedBridgeKey:E===1&&!g?f.field:null,physical:!0}};return u=>{if(u.tableAlias!==null){let g=i.findIndex(h=>be(h)===u.tableAlias);if(g<0)throw new Error(`ArgumentError: field ${u.tableAlias}.${u.field} has an unknown table alias.`);let y=i[g];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 m=l(y,u.field);if(m===null){let h=s(y,de(y,u.field));throw h!==null&&h!==""?new Error(Pu(u.field,[{appId:y.appId,owner:h}])):new Error(`ArgumentError: field ${u.tableAlias}.${u.field} does not exist in APP${y.appId}.`)}return p(y,g,u,m)}let d=i.flatMap((g,y)=>{if(g.cteName!==null)return[];let m=l(g,u.field);return m===null?[]:[{table:g,tableIndex:y,code:m}]}),f=i.filter(g=>c(g,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 g=d[0];return p(g.table,g.tableIndex,u,g.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(g=>{if(g.cteName!==null)return[];let y=s(g,de(g,u.field));return y===null||y===""?[]:[{appId:g.appId,owner:y}]}),E=qE(R);throw E.length>0?new Error(Pu(u.field,E)):new Error(`ArgumentError: field ${u.field} does not exist in a physical APP source.`)}}async function Ii(e,t,n,r){Ti.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 hS(e,t,n,r),c=Pp(e,l,Np);c&&Ti.set(e,c);return}if(!so(e))return;if(i.type==="NONE"){lo(e);return}[e.from,...e.joins.map(l=>l.table)].some(l=>l.cteName!==null&&!r?.has(l.cteName))||await Si(e,t,n,r)}function SS(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.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 rc(e,t,n){let r=e.type==="SELECT"&&(n?.kind==="CANONICAL_REST_TOP_N"||n?.kind==="KORDER_NATIVE"||n?.kind==="KORDER_CURSOR")?kt({...e,orderBy:[]}):kt(e),i=r.size>0&&t.onLimitReached==="truncate";return{reasons:r,effectiveOptions:i?{...t,onLimitReached:"error"}:t,truncateWasDisabled:i}}function zE(e,t){throw e.reasons.size>0&&t instanceof Ue&&!t.completeInputWrapped?new Ue(SS(e.reasons)+(e.truncateWasDisabled?"onLimit=truncate\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002":"")+t.message,!0):t}async function Cu(e,t){try{return await t()}catch(n){zE(e,n)}}function Lt(e){return e?.type==="BOOLEAN"&&e.value===!1}function TS(e){return e.from.appId===0&&e.from.cteName===Je}function Ha(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"?Ha(e.left)||Ha(e.right):e.type==="STRING_FUNC"?ic(e):!1}function IS(e){return e.type==="AGG_GROUP_KEY"?!0:e.type==="VARIABLE"?!1:e.type==="AGG_REF"||e.type==="AGG_ARITH"?!0:Ei(e)}function Ei(e){return e.type==="FIELD"?!0:e.type==="STRING_FUNC"?ic(e):e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"?Ei(e.left)||Ei(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"?Ha(n):n.type==="AGG_REF"||n.type==="AGG_ARITH"?!0:Ei(n))):!1}function ic(e){return e.args.some(t=>IS(t))}function wS(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(Ha(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"STRFUNC_COL":if(ic(t.expr))throw new Error("ArgumentError: field reference is not allowed without FROM.");break;case"SCALAR_VALUE_COL":if(Ei(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 bS(e){if(e.joins.length>0||e.where||Z(e).type!=="NONE"||e.having||e.orderBy.length>0||e.distinct)throw new Error("ArgumentError: JOIN/WHERE/GROUP BY/HAVING/ORDER BY/DISTINCT are not supported without FROM.");wS(e);let t=Xl([{}],e.columns),{rows:n,columns:r}=nr(t,e.columns),i=Sa(n,e.limit,e.offset);return{type:"SELECT",rows:i,columns:r,rowCount:i.length,warnings:[]}}async function NS(e,t,n,r,i,o){let a=i?.kind==="CANONICAL_REST_TOP_N"?ZE(e):e,s=Eo(a),l=i?.kind==="CANONICAL_LOCAL"?an(e,e.from):s.fields,c=await sc(e,t,r),p=uc(e,c),u=e.columns.some(T=>T.type==="CASE_COL")?await Di(e,t,r,void 0,nc(e)):void 0,d=n.maxRecords??1e4,f=new Set,R=n.onLimitReached??"error",E=n.fetchParallel??1,g=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,m=e.orderBy.length===0&&y!==null&&y<=d&&!Se(e.where)?y:void 0,h;if((i?.kind==="KORDER_NATIVE"||i?.kind==="KORDER_CURSOR")&&e.limit===0)h=[];else if(i?.kind==="KORDER_CURSOR"){let T=await If({client:t,app:s.app,fields:s.fields,query:Vl(e),offset:e.offset??0,limit:e.limit});h=T.records,T.cleanupWarning&&f.add(T.cleanupWarning)}else if(g)h=(await t.getRecords({app:s.app,query:s.query,fields:s.fields})).records;else{let T=e.where?Y(e.where):"";h=await De(t.getRecords,s.app,T,l,{parallel:E,maxRecords:d,stopAfter:m,onLimit:R,onTruncate:L=>{f.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${L} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${L} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`),zu(t,e.from.appId)}})}let A=h.map(T=>Pt(T,null));g||(A=zl(A,e.orderBy,o.optionOrders,o.sortKinds,o.semantics,Jl(e.columns,void 0,p.row,u)),A=Sa(A,e.limit,e.offset));let{rows:b,columns:w}=nr(A,e.columns,void 0,p.row,void 0,u),P=await dc(e,b,w,t,r);return{type:"SELECT",rows:b,columns:P,rowCount:b.length,warnings:[...f]}}async function PS(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=Eo(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=an(e,p);a(p.appId,u),p.subtableCode||l(p.appId,u)}}for(let[c,p]of o.entries()){let u=[...p].filter(g=>!Cs(g));if(u.length===0)continue;let d=await Q(c,n,r);if(d.length===0)continue;let f=new Set(d.map(g=>g.code)),R=u.filter(g=>!f.has(g));if(R.length>0)throw new Error(`ArgumentError: unknown field code(s): ${R.join(", ")} (APP${c})`);let E=s.get(c);if(E){let g=d.filter(y=>y.inSubtable===!0&&E.has(y.code));for(let y of g){let m=y.subtableCode??"",h=m?`\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u300C${m}\u300D`:"\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB";i.push(`${y.code} \u306F${h}\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`+(m?`APP${c}$${m} \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 hE(e){return e.cteName??`APP${e.appId}`}function CS(e){return e.alias?[e.alias]:e.cteName!==null?[e.cteName]:[`APP${e.appId}`,`app${e.appId}`]}function OS(e,t){return Cs(t)||e.validCodes.has(t)}function Au(e,t){return e.table.cteName!==null?e.validCodes.has(t):OS(e,t)}function LS(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 _S(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=be(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===Je)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:hE(p),validCodes:new Set(u.columns),authoritative:!0,schemaUnavailable:u.rows.length===0&&u.columns.length===0});return}if(p.cteName===Je)return;let d=await Q(p.appId,t,r);s.set(p,{table:p,label:hE(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 CS(p.table))l.set(u,p);for(let p of e.joins)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&&!Au(d,u.field))throw new Error(`ArgumentError: JOIN key ${u.tableAlias}.${u.field} is not available in the materialized table.`)}let c=vp(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=>!Au(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=>Au(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 Ma(e,t,n,r,i=new Set){if(!i.has(e)){if(i.add(e),e.type==="UNION"){await Ma(e.left,t,n,r,i),await Ma(e.right,t,n,r,i);return}await _S(e,t,n,r);for(let o of LS(e))await Ma(o,t,n,r,i)}}function JE(e){return e.where===null||e.from.subtableCode||e.from.cteName!==null?null:e.joins.length===0?Pr(e.where,{tableAlias:e.from.alias??void 0,allowUnqualifiedFields:!0}):e.from.alias?Pr(e.where,{tableAlias:e.from.alias}):null}function Ri(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"?Ri(e.left)||Ri(e.right):e.type==="GROUP"||e.type==="NOT"?Ri(e.expr):!1}var oc=new WeakMap;function Qa(e,t){if(e.joins.length===0||e.where===null||e.joins.some(f=>f.type!=="INNER"))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=yf(e.where,r),o=mf(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,Zn(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 Za(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,JE(e)),e.joins.length>0&&e.where!==null&&e.joins.every(s=>s.type==="INNER")&&[e.from,...e.joins.map(s=>s.table)].every(s=>s.alias!==null&&s.cteName===null&&!s.subtableCode)){i(e.from.appId,e.where);for(let s of e.joins)i(s.table.appId,e.where)}if(e.where!==null)for(let s of e.joins){if(!s.table.alias||s.table.subtableCode||s.table.cteName!==null)continue;let l=Pr(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([Oe(s,t,n),qS(s,t,n)]),u=DS(l).filter(d=>c.get(d)==="STATUS");if(u.length>0){let d=await ts(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 DS(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 Ot(e,t){if(e!==null)switch(e.type){case"BINARY":(e.op==="IN"||e.op==="NOT_IN")&&e.left.type==="FIELD"&&t.push(e.left),e.left.type==="CASE_FIELD"&&Ya(e.left.expr,t),e.right.type==="CASE_VALUE"&&Ya(e.right.expr,t);return;case"LOGICAL":Ot(e.left,t),Ot(e.right,t);return;case"NOT":case"GROUP":Ot(e.expr,t);return;case"NULL_CHECK":case"EXISTS":case"BOOLEAN":return}}function Ya(e,t){for(let n of e.branches)Ot(n.condition,t)}function vS(e){let t=[];Ot(e.where,t),Ot(e.having,t);for(let n of e.columns)n.type==="CASE_COL"&&Ya(n.expr,t);return t}function be(e){return e.alias??e.cteName}function XE(e,t){return[e.from,...e.joins.map(n=>n.table)].find(n=>be(n)===t)}function ac(e){return[e.from,...e.joins.map(t=>t.table)].filter(t=>t.cteName===null)}async function sc(e,t,n){let r=vS(e);if(r.length===0)return new Map;let i=new Set,o=ac(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=XE(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 Oe(s,t,n)]));return new Map(a)}function xe(e){let t=e.indexOf(".");return t>0?{type:"FIELD",tableAlias:e.slice(0,t),field:e.slice(t+1)}:{type:"FIELD",tableAlias:null,field:e}}function lc(e,t,n){e!=="MIN"&&e!=="MAX"&&e!=="MODE"||t.type==="WILDCARD"||gn(t,n)}function gn(e,t){if(e.type==="FIELD_REF"){t.push(xe(e.field));return}if(e.type==="FIELD"){t.push(e);return}if(e.type==="ARITH"){gn(e.left,t),gn(e.right,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){gn(e.left,t),gn(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"&&gn(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"?ar(n,t):n.type!=="ARRAY"&&gn(n,t)}function ar(e,t){if(e.type==="AGG_REF"){lc(e.func,e.arg,t);return}e.type==="AGG_ARITH"&&(ar(e.left,t),ar(e.right,t)),e.type==="AGG_GROUP_KEY"&&t.push({type:"FIELD",tableAlias:e.tableAlias??null,field:e.field})}function Ou(e,t){for(let n of e.args)if(n.type==="AGG_REF"||n.type==="AGG_ARITH")ar(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;gi(n,t)}}function gi(e,t){if(e.type==="STRING_FUNC"){Ou(e,t);return}if(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP"){gi(e.left,t),gi(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"?Ou(r,t):r.type==="AGG_REF"||r.type==="AGG_ARITH"?ar(r,t):r.type!=="ARRAY"&&r.type!=="FIELD_REF"&&r.type!=="ARITH"&&gi(r,t)}}function US(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;lc(o.func,o.arg,t);return}i.type==="SELECT"||i.type==="SCALAR_SUBQUERY"||Object.values(i).forEach(n)};n(e)}function kS(e){let t=[];for(let n of e)n.type==="AGGREGATE"?lc(n.func,n.arg,t):n.type==="ARITH_AGG_COL"?ar(n.expr,t):n.type==="STRFUNC_COL"?Ou(n.expr,t):n.type==="SCALAR_VALUE_COL"?gi(n.expr,t):n.type==="CASE_COL"&&US(n.expr,t);return t}var MS=new Set(["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT","LINK","DROP_DOWN","RADIO_BUTTON","STATUS","DATE","TIME","DATETIME","CREATED_TIME","UPDATED_TIME"]);function FS(e){return e.sortKind!==void 0?e.sortKind:e.fieldType==="NUMBER"||e.fieldType==="RECORD_NUMBER"?"number":MS.has(e.fieldType)?"string":void 0}async function QE(e,t,n,r){let i=kS(e.columns);if(i.length===0)return;let o=new Set,a=ac(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=XE(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 Q(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(g=>R.get(g)?.fieldType==="STATUS"))return;let E=await Rc(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??X(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 g=p.find(y=>be(y)===f.tableAlias);if(!g)return;if(g.cteName!==null)return r?.get(g.cteName)?.columnMeta?.get(f.field)?.semantics??K("string");R=s.get(g.appId)?.get(de(g,f.field))}else if(e.joins.length===0){if(e.from.cteName!==null)return r?.get(e.from.cteName)?.columnMeta?.get(f.field)?.semantics??K("string");R=s.get(e.from.appId)?.get(de(e.from,f.field))}else{let g=p.flatMap(y=>{if(y.cteName!==null){let h=r?.get(y.cteName);return h?.columns.includes(f.field)?[h.columnMeta?.get(f.field)?.semantics??K("string")]:[]}let m=s.get(y.appId)?.get(de(y,f.field));return m?[u(m,y.appId)]:[]});return g.length!==1?void 0:g[0]}if(!R)return;let E=f.tableAlias!==null?p.find(g=>be(g)===f.tableAlias):e.joins.length===0?e.from:void 0;return u(R,E?.appId??e.from.appId)}}function de(e,t){return e.subtableCode&&t.startsWith("_p.")?t.slice(3):t}function Fa(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??X(e);return{sortKind:FS(e),fieldType:e.fieldType,semantics:t===void 0?n:$n(n,t,e.code)}}function ZE(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 J(e){return{sortKind:e,semantics:K(e)}}function Ye(){return{semantics:K("string","KSQL_UNKNOWN")}}function eR(e="KSQL_ARRAY"){return{semantics:{fieldType:e,compareMode:"unsupported",inSubtable:!1,requiresCollectionOperators:!1}}}function it(e){if(e==="$id")return{sortKind:"number",fieldType:"__ID__",semantics:X({fieldType:"__ID__"})};if(e==="_rid")return J("string");if(e==="_pid"||e==="_idx"||e==="$revision")return J("number")}var xS=new Set(["LENGTH","LENGTH_CHAR","INSTR","ROUND","FLOOR","CEIL","TRUNCATE","YEAR","MONTH","DAY","DATEDIFF","ABS","MOD","POWER","SQRT","DAYOFWEEK","QUARTER","WEEK"]);function In(e){if(e.func==="CAST"){let t=e.args[1];return t?.type==="STRING"&&t.value==="NUMBER"?J("number"):J("string")}return xS.has(e.func)?J("number"):J("string")}function sr(e,t){return e.type==="STRING"?J("string"):e.type==="ARRAY"?eR():e.type==="AGG_REF"?e.func==="MIN"||e.func==="MAX"||e.func==="MODE"?e.arg.type==="WILDCARD"?Ye():wn(e.arg,t):e.func==="GROUP_CONCAT"?J("string"):J("number"):e.type==="AGG_ARITH"||e.type==="NUMBER"||e.type==="ARITH"||e.type==="SCALAR_ARITH"?J("number"):e.type==="STRING_FUNC"?In(e):e.type==="FIELD_REF"?t(xe(e.field))??Ye():e.type==="FIELD"?t(e)??Ye():Ye()}function es(e){if(e.length===0)return Ye();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&&yo(n(r.semantics),n(t.semantics)))?e.every(i=>yo(i.semantics,t.semantics))?t:{...t,semantics:n(t.semantics)}:e.some(r=>r.semantics?.compareMode==="unsupported")?eR("KSQL_MIXED_UNSUPPORTED"):Ye()}function wn(e,t){if(e.type==="FIELD_REF")return t(xe(e.field))??Ye();if(e.type==="FIELD")return t(e)??Ye();if(e.type==="NUMBER"||e.type==="ARITH"||e.type==="SCALAR_ARITH")return J("number");if(e.type==="STRING"||e.type==="CONCAT_OP"||e.type==="VARIABLE")return J("string");if(e.type==="STRING_FUNC")return In(e);let n=e.branches.map(r=>sr(r.result,t));return e.elseResult&&n.push(sr(e.elseResult,t)),es(n)}function tR(e,t){return e.windowKind==="VALUE"?wn(e.arg,t):e.windowKind==="AGGREGATE"?e.aggFunc==="COUNT"||e.aggFunc==="SUM"||e.aggFunc==="AVG"?J("number"):e.arg.type==="WILDCARD"?Ye():wn(e.arg,t):J("number")}function xa(e,t){return{...e??{},displayName:t}}function GS(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 ja(e,t,n,r,i,o=!1){let a=new Map;GS(e)&&await Promise.all(ac(e).map(async E=>{if(a.has(E.appId))return;let g=await Q(E.appId,n,r);a.set(E.appId,new Map(g.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 h=a.get(e.from.appId)?.get(E.field);return h?ve(h,e.from.appId):void 0}let y=s.find(h=>be(h)===E.tableAlias);if(!y)return;if(y.cteName!==null)return i?.get(y.cteName)?.columnMeta?.get(E.field);let m=a.get(y.appId)?.get(de(y,E.field));return m?ve(m,y.appId):it(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(de(e.from,E.field));return y?ve(y,e.from.appId):it(E.field)}let g=s.flatMap(y=>{if(y.cteName!==null){let A=i?.get(y.cteName);return A?.columns.includes(E.field)?[A.columnMeta?.get(E.field)]:[]}let m=a.get(y.appId)?.get(de(y,E.field)),h=m?ve(m,y.appId):it(E.field);return h?[h]:[]});return g.length===1?g[0]:void 0},p=E=>{if(!l)return;let g=s.filter(y=>{if(E.tableAlias!==null&&be(y)!==E.tableAlias)return!1;let m=de(y,E.field);return a.get(y.appId)?.has(m)===!0||it(E.field)!==void 0});return g.length===1?g[0].appId:void 0},u=(E,g)=>{let y=p(g);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 g=xe(E),y=u(c(g),g);d.set(E,xa(y,y?.displayName??E))}return d}if(f)for(let E of t){let g=xe(E),y=u(c(g),g);d.set(E,xa(y,y?.displayName??E))}return e.columns.filter(E=>E.type!=="WILDCARD"&&E.type!=="PARENT_WILDCARD").forEach((E,g)=>{let y=f?"alias"in E&&E.alias?E.alias:void 0:t[g];if(!y)return;let m;if(E.type==="FIELD"){let h=xe(E.field);m=u(c(h),h)}else if(E.type==="AGGREGATE")E.func==="GROUP_CONCAT"?m=J("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"?m=J("number"):(E.func==="MIN"||E.func==="MAX"||E.func==="MODE")&&E.arg.type!=="WILDCARD"&&(m=wn(E.arg,c));else if(E.type==="ARITH_AGG_COL"||E.type==="ARITH_COL")m=J("number");else if(E.type==="GROUPING_COL")m=J("number");else if(E.type==="LITERAL_COL")m=J("string");else if(E.type==="SCALAR_VALUE_COL"){let h=E.expr;h.type==="STRING_FUNC"?m=In(h):h.type==="NUMBER"||h.type==="SCALAR_ARITH"?m=J("number"):h.type==="FIELD"?m=c(h):m=J("string")}else if(E.type==="STRFUNC_COL")m=In(E.expr);else if(E.type==="WINDOW_COL")m=tR(E,c);else if(E.type==="CASE_COL"){let h=E.expr.branches.map(A=>sr(A.result,c));E.expr.elseResult&&h.push(sr(E.expr.elseResult,c)),m=es(h)}else E.type==="SCALAR_SUBQUERY_COL"&&(m=Ye());d.set(y,xa(m,E.aliasDisplay??y))}),d}function nR(e,t){let n=ge.get(e),r=ge.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=es([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=Ye();i.set(o,xa(p,s?.displayName??o))}),i}function uc(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=>be(p)===s.tableAlias);return!c||c.cteName!==null?void 0:Fa(c,s.field)??t.get(c.appId)?.get(de(c,s.field))}if(e.joins.length===0)return e.from.cteName!==null?void 0:Fa(e.from,s.field)??t.get(e.from.appId)?.get(de(e.from,s.field));if(n.some(c=>c.cteName!==null))return;let l=r.flatMap(c=>{let p=Fa(c,s.field)??t.get(c.appId)?.get(de(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 rR=new WeakSet,cc=new WeakMap;function Lu(e){return rR.add(e),e}function KS(e,t){return cc.set(e,t),t}function iR(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 BS(e){return typeof e=="string"&&/^(?:0|[1-9]\d*)$/.test(e)}async function $S(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 Tn;if(!BS(i.totalCount))return null;let o=n.alias??"COUNT(*)",a=nr([{[o]:i.totalCount}],e.columns);return{type:"SELECT",rows:a.rows,columns:a.columns,rowCount:1,warnings:[]}}async function VS(e,t,n,r,i,o=!0,a,s,l){let c=cc.get(e);if(rR.has(e)&&c!==void 0&&iR(e,c)){let G=await $S(e,t);if(G!==null)return G}let p=n.maxRecords??1e4,u=new Set,d=n.fetchParallel??1;await Promise.all([Oi(e.where,t,n,r,i),Oi(e.having,t,n,r,i)]);let[f,R,E]=await Promise.all([Za(e,t,r),sc(e,t,r),QE(e,t,r,i)]),g=uc(e,R),y=await Di(e,t,r,i,dt(e.having)||nc(e)),m=YE(e,y),h=oc.get(e);if(h&&!er(h.joinPlan))throw new Error("InternalError: JOIN server-function fetch binding changed before records API.");let A=h??Qa(e,f)??sn(e,f);Hs(A);let b="joinPlan"in A?A:null,w=b&&er(b.joinPlan)?b:null,P=t,T=A.mainCondition,L=A.joinConditions;if(s&&o)throw new Error("internal error: relative-date prefilter must disable original WHERE pushdown.");let N=s?s.prefilterWhere:w?null:T,_=w?.queriesByAlias.get(e.from.alias)??"",F=await NR(e.columns,t,n,r,i),D=Lt(e.where),M=D?Promise.resolve([]):yi(e,e.from,P,p,d,!0,n.onLimitReached??"error",u,N,w?!1:o,l,_),S=[],O=[];for(let G of e.joins){if(D){S.push({join:G,promise:Promise.resolve([])});continue}let ae=G.table.alias?w?.queriesByAlias.get(G.table.alias)??"":"",Ee=w?null:G.table.alias?L.get(G.table.alias)??null:null;Ee!==null||ae!==""?S.push({join:G,promise:yi(e,G.table,P,p,d,!1,n.onLimitReached??"error",u,Ee,!0,l,ae)}):O.push(G)}let k=a?Promise.resolve(a):bi(e,t,r,i);k.catch(()=>{});let C=await M,x=new Map;x.set(e.from.alias,C);for(let{join:G,promise:ae}of S)x.set(G.table.alias,await ae);await Promise.all(O.map(async G=>{let Ee=await cR(e,G,x,P,p,d,n.onLimitReached??"error",u,r,i,null,l,"")??await yi(e,G.table,P,p,d,!1,n.onLimitReached??"error",u,null,!0,l,"");x.set(G.table.alias,Ee)}));let{optionOrders:H,sortKinds:v,semantics:U}=await k,{rows:W,columns:V}=eu({tables:x,stmt:e,scalarCache:F,optionOrders:H,sortKinds:v,orderSemantics:U,fieldTypeResolver:g.row,fieldSemanticsResolver:y,havingFieldTypeResolver:g.having,havingFieldSemanticsResolver:m,aggregateSortKindResolver:E,appliedKlikes:s?.appliedKlikes??A.appliedKlikes,...s?{residualWhere:s.residualWhere}:w?{residualWhere:w.joinPlan.residualWhere}:{},resolvedGroupingSpec:Ti.get(e),plainGroupByPlan:l}),$=await dc(e,W,V,t,r);return{type:"SELECT",rows:W,columns:$,rowCount:W.length,warnings:[...u]}}function oR(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`)}async function aR(e,t,n,r,i=!1,o=!1){let a=rc(e,n,null);return Cu(a,async()=>{let s=a.effectiveOptions,[l,c]=await Promise.all([e.left.type==="UNION"?aR(e.left,t,s,r,i,o):Qt(Lu(e.left),t,s,r,void 0,i,o,"DERIVED"),Qt(Lu(e.right),t,s,r,void 0,i,o,"DERIVED")]),p=l.columns,u=c.columns;oR(p,u);let d=c.rows.map(y=>{let m={};return p.forEach((h,A)=>{m[h]=y[u[A]??h]??""}),m}),f=[...l.rows,...d],R=e.all?f:sR(f,p),E=[...new Set([...l.warnings??[],...c.warnings??[]])],g={type:"SELECT",rows:R,columns:p,rowCount:R.length,warnings:E};return i&&ge.set(g,nR(l,c)),g})}function sR(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)})}async function pc(e,t,n,r,i,o=!1){if((i==null||i.size===0)&&Kt(e))return Qt(Bt(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.query.type==="SHOW_APPS"?p=await TR(t):c.query.type==="DESCRIBE"?p=await IR(c.query,t,r):c.query.type==="GENERATE_SERIES"?p=lR(c.query):p=await _t(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:ge.get(p),...c.query.type==="GENERATE_SERIES"?{uniqueGeneratedColumn:c.query.columnAlias}:{}})}let l=await _t(e.query,t,n,a,r,o);return tc(l,[...s])}function lR(e){let t=zs(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:X({fieldType:"NUMBER"})}:{sortKind:"string",fieldType:"DATE",semantics:X({fieldType:"DATE"})};return ge.set(n,new Map([[e.columnAlias,r]])),n}async function _t(e,t,n,r,i,o=!1,a=!1){if(a||await Ma(e,t,r,i),e.type==="UNION"){let[c,p]=await Promise.all([_t(e.left,t,n,r,i,o,!0),_t(e.right,t,n,r,i,o,!0)]),u=c.columns,d=p.columns;oR(u,d);let f=p.rows.map(m=>{let h={};return u.forEach((A,b)=>{h[A]=m[d[b]??A]??""}),h}),R=[...c.rows,...f],E=e.all?R:sR(R,u),g=[...new Set([...c.warnings??[],...p.warnings??[]])],y={type:"SELECT",rows:E,columns:u,rowCount:E.length,warnings:g};return o&&ge.set(y,nR(c,p)),y}if(!(e.from.cteName!=null&&e.from.cteName!==Je||e.joins.some(c=>c.table.cteName!=null)))return Qt(e,t,n,i,r,o,!1,"DERIVED");let l=await WS(e,t,n,r,i);return o&&ge.set(l,await ja(e,l.columns,t,i,r)),l}async function WS(e,t,n,r,i){await Ii(e,t,i,r);let o=Ti.get(e),a=await Si(e,t,i,r),s=new Set,l=$=>{if($.alias!==null||$.cteName===null)return $;let G=be($);return s.add(G),{...$,alias:G}};e={...e,from:l(e.from),joins:e.joins.map($=>({...$,table:l($.table)}))};let c=new Set;for(let $ of[e.from,...e.joins.map(G=>G.table)]){let G=be($);if(G!==null){if(c.has(G))throw new Error(`ArgumentError: effective alias ${G} is used by multiple tables.`);c.add(G)}}let p=$=>{let G=r.get($);if(!G)throw new Error(`ArgumentError: materialized source ${$} is not available.`);return G};for(let $ of[e.from,...e.joins.map(G=>G.table)])$.cteName!==null&&p($.cteName);let{resolver:u}=await An(e,t,i,r,WE(e)),d=HE(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([Oi(e.where,t,n,i,r),Oi(e.having,t,n,i,r),wR(e,t,n,i,r)]);let g=ye(e.where,u);if(g.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${hn(g)}).`);let y=await bi(e,t,i,r),m=Wa(e)?(e.orderMode==="KINTONE_NATIVE"?ei:Zr)({stmt:e,staticMode:"FULL_SCAN",whereCapability:g.capability,whereReasons:g.reasons,orderSemantics:y.semantics,maxRecords:f,hasKlike:Se(e.where)}):null,h=rc(e,n,m),A=h.effectiveOptions,[b,w,P]=await Promise.all([Za(e,t,i),sc(e,t,i),QE(e,t,i,r)]),T=uc(e,w),L=await Di(e,t,i,r,dt(e.having)||nc(e)),N=YE(e,L),_=Qa(e,b)??sn(e,b);Hs(_);let F=t,D=await NR(e.columns,t,A,i,r),M=Promise.resolve(y);M.catch(()=>{});let S=new Map,O=new Map;if(e.from.cteName!=null){let $=p(e.from.cteName);S.set(e.from.alias,$.rows.map(SE)),O.set(e.from.alias,$.columns)}else{let $=await Cu(h,()=>yi(e,e.from,F,f,E,!0,A.onLimitReached??"error",R,_.mainCondition,g.capability==="EXACT_PUSHDOWN",a));S.set(e.from.alias,$)}let k=e.joins.map($=>Cu(h,async()=>{if($.table.cteName!=null){let G=p($.table.cteName);S.set($.table.alias,G.rows.map(SE)),O.set($.table.alias,G.columns)}else{let G=$.table.alias?_.joinConditions.get($.table.alias)??null:null,Ee=await cR(e,$,S,F,f,E,A.onLimitReached??"error",R,i,r,G,a)??await yi(e,$.table,F,f,E,!1,A.onLimitReached??"error",R,G,!0,a);S.set($.table.alias,Ee)}}));await Promise.all(k);let{optionOrders:C,sortKinds:x,semantics:H}=await M,v=e.joins.length===0&&e.from.cteName!=null?p(e.from.cteName).columns:void 0,{rows:U,columns:W}=eu({tables:S,stmt:e,scalarCache:D,optionOrders:C,sortKinds:x,orderSemantics:H,fieldTypeResolver:T.row,fieldSemanticsResolver:L,havingFieldTypeResolver:T.having,havingFieldSemanticsResolver:N,aggregateSortKindResolver:P,appliedKlikes:_.appliedKlikes,sourceColumns:v,tableColumns:O,hiddenQualifiedAliases:s,resolvedGroupingSpec:o,plainGroupByPlan:a}),V=await dc(e,U,W,t,i);return tc({type:"SELECT",rows:U,columns:V,rowCount:U.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 Q(e.from.appId,r,i);return bf(o,e.from.subtableCode,()=>ts(e.from.appId,r,i))}function SE(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,{value:n??""}]))}async function yi(e,t,n,r,i,o,a,s,l=null,c=!0,p,u=""){let d=an(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`),zu(n,t.appId),df(e,t,o))throw new Ue(`\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?_p(e,t.appId).query:"",m=[l!==null?Y(l):"",u].filter(w=>w!==""),h=m.length>1?m.map(w=>`(${w})`).join(" and "):m[0]??"",A=y&&h?`(${y}) and (${h})`:y||h;return(await et(n.getRecords,t.appId,A,d,{parallel:i,maxRecords:r,onLimit:a,onTruncate:f})).records}let R=o&&c&&e.joins.length===0&&e.where!==null&&cc.get(e)?.capability==="EXACT_PUSHDOWN"&&!St(e.where)?Y(e.where):"",g=(await et(n.getRecords,t.appId,R,d,{parallel:i,maxRecords:r,onLimit:a,onTruncate:f})).records;return Vf(g,t.subtableCode)}var uR=50;function HS(e){let t=he(e);return t!==null?JSON.stringify(t):e}function _u(e){return JSON.stringify(e)}function bn(e,t){return JSON.stringify(e.map((n,r)=>t[r]?HS(n):n))}function vi(e,t){let n=e.raw.get(_u(t));if(n!==void 0)return n;if(e.numericKey.some(Boolean))return e.normalized.get(bn(t,e.numericKey))}async function Ui(e,t,n,r,i,o){let a=i.maxRecords??1e4,s=i.fetchParallel??1,l=t.map(g=>o.get(g)==="NUMBER"),c={raw:new Map,normalized:new Map,numericKey:l},p=(g,y,m)=>{let h=g.get(y);(h===void 0||m>h)&&g.set(y,m)},u=(g,y)=>{p(c.raw,_u(g),y),l.some(Boolean)&&p(c.normalized,bn(g,l),y)},d=new Set,f=[],R=new Set;for(let g of n){let y=_u(g);R.has(y)||(R.add(y),g.some(m=>m==="")?f.push(g):d.add(g[0]))}let E=["$id",...t];for(let g of ki([...d],uR)){let y=`${t[0]} in (${g.map(wi).join(",")})`,m=await De(r.getRecords,e,y,E,{maxRecords:a,parallel:s});for(let h of m){let A=Number(h.$id?.value);Number.isFinite(A)&&u(t.map(b=>fc(h[b]?.value)),A)}}for(let g of f){let y=t.map((h,A)=>`${h} = ${wi(g[A])}`).join(" and "),m=await De(r.getRecords,e,y,["$id"],{maxRecords:a,parallel:s});m.length!==0&&u(g,YS(m))}return c}function YS(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 fc(e){return typeof e=="string"?e:e==null?"":String(e)}function wi(e){return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function ki(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}var jS=6,Ga=aa*jS;async function cR(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,g,y;if(f===t.table.alias&&R!==t.table.alias)E=R,g=t.on.right.field,y=t.on.left.field;else if(R===t.table.alias&&f!==t.table.alias)E=f,g=t.on.left.field,y=t.on.right.field;else return null;let m=n.get(E);if(!m)return null;let h=[e.from,...e.joins.map(S=>S.table)].find(S=>be(S)===E),A=(await Q(t.table.appId,r,l)).find(S=>S.code===de(t.table,y)),b=A?ve(A,t.table.appId):it(y),w;if(h?.cteName!==null&&h?.cteName!==void 0)w=c?.get(h.cteName)?.columnMeta?.get(g);else if(h){let S=(await Q(h.appId,r,l)).find(O=>O.code===de(h,g));w=S?ve(S,h.appId):it(g)}let P=[],T=!1;for(let S of m){let O=S[g]?.value,k=fc(O);(O==null||k.length===0)&&(T=!0),P.push(k)}let L=xl({fieldType:b?.fieldType,sourceSemantics:w?.semantics,sourceRowCount:m.length,values:P,hasEmptyValue:T,maxInKeys:Ga});if(L.kind==="EMPTY_SOURCE")return[];if(L.kind==="FALLBACK"){if(L.reason==="JOIN_KEY_LIMIT_EXCEEDED"){let S=new Set(P).size;s.add(`JOIN\u30AD\u30FC\u304C ${S} \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 ${Ga} \u4EF6\uFF09\u3002`)}return null}if(L.kind==="RANGE_CANDIDATE")return null;let N=Fl(L,y,wi);if(N.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 ${Ga} \u4EF6\uFF09\u3002`),null;let _=an(e,t.table,u),F=S=>{s.add(`\u53D6\u5F97\u4E0A\u9650\uFF08${S} \u4EF6\uFF09\u306B\u9054\u3057\u305F\u305F\u3081\u3001${S} \u4EF6\u3067\u6253\u3061\u5207\u3063\u3066\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002`),zu(r,t.table.appId)},D=[],M=new Set;for(let S of N){let k=[p!==null?Y(p):"",d].filter(x=>x!=="").reduce((x,H)=>`(${x}) and (${H})`,S),C=await et(r.getRecords,t.table.appId,k,_,{parallel:o,maxRecords:i,onLimit:a,onTruncate:F});for(let x of C.records){let H=`${x.$id?.value??""}:${JSON.stringify(x)}`;M.has(H)||(M.add(H),D.push(x))}}return D}var Du=new Map,vu=new Map,Uu=new Map,ku=new Map,Mu=new Map,Fu=new Map;function Ec(e){Du.delete(e),vu.delete(e),Uu.delete(e),ku.delete(e),Mu.delete(e),Fu.delete(e)}function lr(e,t,n){return e.get(t)?.get(n)}function ur(e,t,n,r){let i=e.get(t);i||(i=new Map,e.set(t,i)),i.set(n,r)}async function Q(e,t,n){let r=lr(ku,n,e);if(r)return r;let i=t.getFields(e);return ur(ku,n,e,i),i}async function yt(e,t,n){let r=lr(Fu,n,e);if(r)return r;let i=t.getNumberPrecision(e);return ur(Fu,n,e,i),i}async function ts(e,t,n){let r=lr(Mu,n,e);if(r)return r;let i=t.getProcessStatuses(e);return ur(Mu,n,e,i),i}async function Rc(e,t,n){let r=await ts(e,t,n);return r.enable&&r.states!==null?new Map(r.states.map(i=>[i.name,i.index])):void 0}async function Oe(e,t,n){let r=lr(Du,n,e);if(r)return r;let i=await Q(e,t,n),o=new Map(i.map(a=>[a.code,a.fieldType]));return ur(Du,n,e,o),o}async function xu(e,t,n){let r=lr(vu,n,e);if(r)return r;let i=await Q(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 ur(vu,n,e,o),o}async function qS(e,t,n){let r=await xu(e,t,n);return new Map([...r.entries()].map(([i,o])=>[i,new Set(o.keys())]))}async function TE(e,t,n){let r=lr(Uu,n,e);if(r)return r;let i=await Q(e,t,n),o=new Map;for(let a of i)a.sortKind&&o.set(a.code,a.sortKind);return ur(Uu,n,e,o),o}function zS(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 JS(e,t,n,r){let i=zS(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 Q(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=>be(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(de(f,u.field));return R?ve(R,f.appId):it(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(de(e.from,u.field));return f?ve(f,e.from.appId):it(u.field)}let d=o.flatMap(f=>{if(f.cteName!==null){let g=r?.get(f.cteName),y=g?.columns.includes(u.field)?g.columnMeta?.get(u.field):void 0;return y?[y]:[]}let R=s.get(f.appId)?.get(de(f,u.field)),E=R?ve(R,f.appId):it(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(xe(u.field));else if(u.type==="ARITH_COL"||u.type==="ARITH_AGG_COL")d=J("number");else if(u.type==="WINDOW_COL")d=tR(u,l);else if(u.type==="GROUPING_COL")d=J("number");else if(u.type==="LITERAL_COL"||u.type==="SCALAR_VALUE_COL")d=J("string");else if(u.type==="STRFUNC_COL")d=In(u.expr);else if(u.type==="SCALAR_SUBQUERY_COL")d=Ye();else if(u.type==="CASE_COL"){let f=u.expr.branches.map(R=>sr(R.result,l));u.expr.elseResult&&f.push(sr(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=wn(u.arg,l)):d=u.func==="GROUP_CONCAT"?J("string"):J("number"));d?.semantics&&c.set(u.alias,d.semantics)}let p=new Map;for(let u of i){let d=c.get(u)??l(xe(u))?.semantics;if(!d){let R=xe(u);R.tableAlias===null&&a.has(R.field)&&p.set(u,X({fieldType:"KSQL_AMBIGUOUS"}));continue}let f=d;if(d.fieldType==="STATUS"&&d.source&&e.orderMode!=="KINTONE_NATIVE"){let R=await ts(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 bi(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([XS(e,t,n),QS(e,t,n),JS(e,t,n,r)]);return{optionOrders:o,sortKinds:a,semantics:s}}async function XS(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 xu(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 xu(a.appId,t,n);for(let[l,c]of s.entries())r.set(`${a.alias}.${l}`,c)}return r}async function QS(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 TE(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 TE(a.appId,t,n);for(let[l,c]of s.entries())r.set(`${a.alias}.${l}`,c)}return r}function pR(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 ZS=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE"]);function eT(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||ZS.has(o.fieldType))throw new Error(`ArgumentError: DML target field ${i} is not writable (${o.fieldType}).`)}}async function at(e,t,n,r){let i=await Q(e,n,r);return eT(e,t,i),i}async function Dt(e,t,n,r,i){let o=new Map(n.map(a=>[a.code,a]));return t.some(a=>o.get(a)?.fieldType==="NUMBER")?yt(e,r,i):void 0}function Nn(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=Fe(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 tT(e,t,n,r,i){let o=await at(e.appId,e.fields,t,r),a=await qr({statement:e,fieldInfos:o,dmlMaxRows:qe(n.dmlMaxRows,"dmlMaxRows",vt),dmlMaxSubtableRows:qe(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ne),statementNumber:i,loadNumberPrecision:()=>yt(e.appId,t,r)});return _T(e,a,o)}async function nT(e,t,n,r,i){let{fieldInfos:o,prepared:a}=await dR(e,t,n,r,i);return vT(e,a,o)}async function dR(e,t,n,r,i){let o=await at(e.appId,e.fields,t,r),a=new Map(o.map(g=>[g.code,g.fieldType])),s=mR(e),l=new Set;for(let g of s){let y=bn(g,e.keyFields.map(m=>a.get(m)==="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 Ui(e.appId,e.keyFields,s,t,n,a),p=s.map(g=>vi(c,g)),u=new Map,d=[...new Set(p.filter(g=>g!==void 0))],f=["$id","$revision",...o.filter(g=>!g.inSubtable&&g.fieldType!=="FILE").map(g=>g.code)];for(let g of ki(d,100)){let y=await t.getRecords({app:e.appId,query:`$id in (${g.join(",")}) limit 500`,fields:[...new Set(f)]});for(let m of y.records){let h=Number(m.$id?.value);Number.isSafeInteger(h)&&h>0&&u.set(h,m)}}let R=p.map((g,y)=>({sourceRowIndex:y,...g===void 0?{}:{targetId:g,snapshot:u.get(g)}})),E=await of({statement:e,matches:R,fieldInfos:o,dmlMaxRows:qe(n.dmlMaxRows,"dmlMaxRows",vt),dmlMaxSubtableRows:qe(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ne),statementNumber:i,loadNumberPrecision:()=>yt(e.appId,t,r)});return{fieldInfos:o,prepared:E}}async function rT(e,t,n,r){if(n.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let i=await at(e.appId,e.fields,t,r),o=await qr({statement:e,fieldInfos:i,dmlMaxRows:qe(n.dmlMaxRows,"dmlMaxRows",vt),dmlMaxSubtableRows:qe(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ne),loadNumberPrecision:()=>yt(e.appId,t,r)}),a=Dl(o);if(n.confirm&&!await n.confirm(o.guards.parentRows,"INSERT",{statementIndex:0,statementCount:1,statementType:"INSERT",targetAppId:e.appId,applyDetail:ns(a),applyDiagnostic:a}))throw new fe("INSERT",o.guards.parentRows);let s=await cf(o,t,a);return{...s,diagnostic:Ve(a,s)}}async function iT(e,t,n,r){if(n.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");let{prepared:i}=await dR(e,t,n,r,1),o=vl(i);if(n.confirm){let s=ns(o);if(!await n.confirm(i.guards.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPSERT",targetAppId:e.appId,applyDetail:s,applyDiagnostic:o}))throw new fe("UPDATE",i.guards.parentRows)}let a=await pf(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:Ve(o,a)}}function oT(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 ns(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=oT(n?va(n):[],r?va(r):[]),a=aT(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=va(n),f=va(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 va(e){return e.targets.filter(t=>t.targetKind==="SUBTABLE").map(t=>{let n=Sn(t,"APPEND"),r=Sn(t,"REMOVE");return{table:t.field,patchRows:(t.changedCount??0)-n-r,appendRows:n,removeRows:r}})}function Sn(e,t){return e.operations.filter(n=>n.kind===t).reduce((n,r)=>n+(r.count??0),0)}function aT(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:Sn(n,"ADD"),removedValues:Sn(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 tT(e,t,n,r,o);if(e.type==="UPSERT"&&(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length))return nT(e,t,n,r,o);if(e.type==="UPDATE"&&e.applyBlocks?.length){let a=await yR(e,t,n,r,o);if(a.type!=="VALIDATION")throw new Error("InternalError: APPLY VALIDATE ONLY returned a mutation result.");return a}return(await yc(e,t,n,r,i,o)).result}var Ni=class extends Error{constructor(n,r){super(`RejectLimitExceededError: ${n}`);this.diagnostic=r;this.name="RejectLimitExceededError"}};async function yc(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(M=>M.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(M=>M.field):e.fields,u=await at(e.appId,p,t,r);e.type==="UPDATE"&&await ir(e,t,r);let d=new Map(u.map(M=>[M.code,M])),f=await Dt(e.appId,p,u,t,r),R=ut(u,c),E=Wf(R),g=(await sT(e,l,t,n,r,i,d,e.type==="UPDATE"?E:void 0)).sort((M,S)=>M.rowNumber-S.rowNumber),y=g.filter(M=>M.mode==="update"),m=e.type==="UPDATE"?cT:e.type.startsWith("UPSERT")?M=>pT(M,t,n.maxRecords??1e4):void 0,h=n.loadUpdateModeSnapshots??m,A=y.length>0&&h!==void 0,b=new Map;if(A){Il(y,p,u);let M=await h({appId:e.appId,candidates:y,fields:E}),S=new Map;for(let O of y){if(O.targetId===void 0)throw new Error(`InternalError: update-mode validation candidate has no targetId (row=${O.rowNumber}).`);let k=M.get(O.targetId);if(!k)throw new Error(`InternalError: update-mode snapshot is missing for record ${O.targetId}.`);let C=Hf(k,O.record??{});S.set(O.rowNumber,C)}f===void 0&&[...S.values()].some(O=>dn(O,R))&&(f=await yt(e.appId,t,r));for(let O of y){let k=S.get(O.rowNumber);if(!k)throw new Error(`InternalError: validation post-image is missing for row ${O.rowNumber}.`);b.set(O.rowNumber,fn(k,R,f,o,O.rowNumber,l))}}let w=wl(g,l,c,p,u,o,f,e.checkGroups??[],a,s,{validateUpdateBuiltIns:!A}),{errors:P,invalidRows:T,invalidRowNumbers:L}=w;if(A){let M=new Map(w.candidateResults.map(S=>[S.rowNumber,S]));P=[],L=new Set;for(let S of g){let O=M.get(S.rowNumber);if(!O)throw new Error(`InternalError: validation detail is missing for row ${S.rowNumber}.`);if(S.mode==="create"){let x=[...O.preErrors,...O.builtInErrors,...O.checkErrors];P.push(...x),x.length>0&&L.add(S.rowNumber);continue}let k=b.get(S.rowNumber);if(!k)throw new Error(`InternalError: prepared post-image validation is missing for row ${S.rowNumber}.`);let C=Yf({rowNumber:S.rowNumber,setFields:p,normalizedPostImage:k.normalizedRecord,preErrors:O.preErrors,postImageErrors:k.errors,checkErrors:O.checkErrors});S.record=C.writeRecord,P.push(...C.errors);for(let x of C.invalidRowNumbers)L.add(x)}T=L.size}let N=[...c,...zn],_={type:"VALIDATION",operation:l,validatedRows:g.length,validRows:g.length-T,invalidRows:T,errorCount:P.length,columns:N,errors:P,...e.validationErrorTable?{errTable:e.validationErrorTable}:e.onErrorSkip&&e.errorTable?{errTable:e.errorTable}:{}},F=new Map;for(let M of c){if(M==="$id"){F.set(M,{sortKind:"number",fieldType:"RECORD_NUMBER",semantics:X({fieldType:"RECORD_NUMBER"})});continue}let S=d.get(M);S&&F.set(M,ve(S,e.appId))}let D=new Set(["$err_statement","$err_row"]);for(let M of zn)F.set(M,J(D.has(M)?"number":"string"));return Cn.set(_,F),{result:_,candidates:g,invalidRowNumbers:L,columnMeta:F}}async function Gu(e,t,n,r,i,o){let a=await yc(e,t,n,r,i,o),s=e.errorTable;if(!s)throw new Error("ArgumentError: ON ERROR SKIP requires INTO #error_table.");gt(i,s,a.result.columns,a.result.errors,n.tempTableMaxRows??je,a.columnMeta);let l=e.rejectLimit??null;if(l!==null&&a.result.invalidRows>l)throw new Ni(`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 fe(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 g=await t.postRecords({app:e.appId,records:c.slice(E,E+100).map(y=>y.record)});R.push(g.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(g=>g.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 sT(e,t,n,r,i,o,a,s){if(e.type==="UPDATE")return uT(e,n,r,i,o,s);let l,c,p,u,d;if(e.type==="INSERT"||e.type==="UPSERT")IE(e,e.fields),d=new Map(e.fields.map(A=>[A,a.get(A)?.fieldType??""])),Pn(e,d),l=e.values.map(A=>A.map((b,w)=>b.type==="CASE_VALUE"?zt(b.expr,{},a.get(e.fields[w])?.fieldType):b));else{let A=await Ac.materialize(e,n,r,i,o,[...a.values()]),b=(e.checkGroups?.length??0)>0;if(A.columns.length<e.fields.length||!b&&A.columns.length!==e.fields.length)throw new Error(`SELECT \u306E\u5217\u6570\uFF08${A.columns.length}\uFF09\u3068 DML \u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u6570\uFF08${e.fields.length}\uFF09\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093`);if(b&&new Set(A.columns).size!==A.columns.length)throw Ie("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");IE(e,A.columns),c=A.rows,p=A.importPresence,u=A.importRowErrors;let w=A.columnMeta;d=new Map(A.columns.map(P=>{let T=w?.get(P),L=T?.fieldType??(T?.semantics?.compareMode==="number"||T?.sortKind==="number"?"NUMBER":"SINGLE_LINE_TEXT");return[P,L]})),Pn(e,d),l=A.rows.map(P=>A.columns.map(T=>P[T]??""))}let f=l.map((A,b)=>({rowNumber:b+1,operation:t,mode:"create",payload:new Map(e.fields.flatMap((w,P)=>p&&!p[b]?.has(w)?[]:[[w,A[P]]])),preErrors:[...u?.[b]??[]],record:{},evaluationRow:c?.[b]??Object.fromEntries(e.fields.map((w,P)=>[w,lt(A[P])])),evaluationFieldTypes:d}));if(e.type!=="UPSERT"&&e.type!=="UPSERT_SELECT")return f;for(let A of e.keyFields)if(!e.fields.includes(A))throw new Error(`ON DUPLICATE \u306E\u30AD\u30FC\u300C${A}\u300D\u304C UPSERT \u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u305B\u3093`);let R=new Map([...a].map(([A,b])=>[A,b.fieldType])),E=f.map(A=>e.keyFields.map(b=>lt(A.payload.get(b)))),g=e.keyFields.map(A=>R.get(A)==="NUMBER"),y=new Map;for(let A of E){let b=bn(A,g);y.set(b,(y.get(b)??0)+1)}let m=Xa.has(e);if(m&&[...y.values()].some(A=>A>1))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");let h=await Ui(e.appId,e.keyFields,E,n,r,R);return f.forEach((A,b)=>{let w=E[b],P=vi(h,w);A.mode=P===void 0?"create":"update",P!==void 0&&(A.targetId=P),e.keyFields.forEach((T,L)=>{w[L]===""&&A.preErrors.push({field:T,code:"ERR_KEY_EMPTY",message:`UPSERT \u30AD\u30FC ${T} \u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093`})}),!m&&(y.get(bn(w,g))??0)>1&&A.preErrors.push({field:e.keyFields[0],code:"ERR_KEY_DUP_SOURCE",message:"UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059"})}),f}function mc(e){return e.checkGroups?jn(e.checkGroups):[]}function IE(e,t){let n=new Set(t);for(let r of mc(e)){if(r.tableAlias!==null)throw Ie(`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 Ie(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${r.field} \u306F\u8A55\u4FA1\u884C\u306B\u5B58\u5728\u3057\u307E\u305B\u3093`)}}var lT=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE","KSQL_ARRAY"]);function Pn(e,t){if(e.checkGroups)for(let n of bd(e.checkGroups)){let r=n.tableAlias?`${n.tableAlias}.${n.field}`:n.field,i=t.get(r)??t.get(n.field);if(lT.has(i??""))throw Ie(`CHECK \u306E\u6BD4\u8F03\u3067\u306F ${i} \u30D5\u30A3\u30FC\u30EB\u30C9 ${r} \u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093`)}}async function uT(e,t,n,r,i,o){if(e.from)return fT(e,e.from,t,n,r,i,o);await bR(e.assignments,t,n,r);let a=await Oe(e.appId,t,r),s=fR(e,a);Pn(e,Ku(a,e.appId));let l,c=new Map,p=new Map;if(Yo(e)){let u=sl(e),d=[...new Set([...u.fields,...s,...o??[]])],f=await et(t.getRecords,u.app,u.query,d,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"});p=Ka(f.records),c=p,l=ul(e,f.records,a).flatMap(R=>R.records)}else{let u=Gr(e);if(s.length>0){let d=[...new Set(["$id",...s,...o??[]])],f=await et(t.getRecords,u.app,u.query,d,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"});p=Ka(f.records),c=p,l=Kr(e,[...c.keys()],a).flatMap(R=>R.records)}else if(o){let d=await et(t.getRecords,u.app,u.query,[...o],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"});p=Ka(d.records),l=Kr(e,[...p.keys()],a).flatMap(f=>f.records)}else{let d=await la(t.getRecords,u.app,u.query,{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1});l=Kr(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:dT(c.get(u.id),e.appId),evaluationFieldTypes:Ku(a,e.appId)}))}function Ka(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 cT(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 pT(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 Ue(`\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 ki(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 fR(e,t){if(e.from)return[];let n=new Set;for(let r of mc(e)){if(r.tableAlias!==null&&r.tableAlias.toLowerCase()!==`app${e.appId}`.toLowerCase())throw Ie(`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 Ie(`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 dT(e,t){if(!e)return{};let n=Pt(e,null);return Object.fromEntries([...Object.entries(n),...Object.entries(n).map(([r,i])=>[`APP${t}.${r}`,i])])}function Ku(e,t){return new Map([...e,...[...e].map(([n,r])=>[`APP${t}.${n}`,r]),["$id","RECORD_NUMBER"],[`APP${t}.$id`,"RECORD_NUMBER"]])}async function fT(e,t,n,r,i,o,a){let s=await xR(e,t,n,i,o);Pn(e,s.evaluationTypes);let l=await ER(e,t,n,r,i,o,a),c=await Oe(e.appId,n,i),p=pl(e,l,c).flatMap(f=>f.records),u=new Map(l.map(f=>[Number(f.target.$id?.value),f])),d=a?Ka(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:EI(u.get(f.id),e.appId,t.alias),evaluationFieldTypes:s.evaluationTypes}))}var ET=uR,RT=new Set(["CHECK_BOX","MULTI_SELECT","USER_SELECT","ORGANIZATION_SELECT","GROUP_SELECT","FILE"]);async function ER(e,t,n,r,i,o,a){let s=await gT(e,t,n,i),l=await xR(e,t,n,i,o),c=[...new Set(e.assignments.filter(b=>b.value.type==="SOURCE_FIELD").map(b=>b.value.type==="SOURCE_FIELD"?b.value.field:"").concat(l.sourceFields))],p=[...new Set([t.joinKeyField,...c])],u=await yT(t,p,c,n,r,i,o),d=new Map,f=new Map;for(let b of u){if(!Object.prototype.hasOwnProperty.call(b,t.joinKeyField))throw new Error(`ArgumentError: UPDATE ... FROM source column ${t.joinKeyField} does not exist.`);let w=wE(b[t.joinKeyField],s,"source");if(d.has(w))throw new Error(`ArgumentError: UPDATE ... FROM source has multiple rows for normalized key ${w}.`);d.set(w,b),f.set(w,String(b[t.joinKeyField]).trim())}if(d.size===0)return[];let R=r.maxRecords??1e4,E=[...new Set([...kT(e),...l.targetFields,...a??[]])],g=t.targetFilter===null?"":Gr({...e,from:null,where:t.targetFilter,checkGroups:void 0}).query,y=[],m=new Set,h=0;for(let b of ki([...f.values()],ET)){let w=`${t.targetJoinField} in (${b.map(wi).join(",")})`,P=g?`(${w}) and (${g})`:w,T=await et(n.getRecords,e.appId,P,E,{maxRecords:R,parallel:r.fetchParallel??1,onLimit:"error"});if(h+=T.records.length,h>R)throw new Ue(`\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 L of T.records){let N=L.$id?.value;if(typeof N!="string"||N==="")throw new Error("ArgumentError: UPDATE ... FROM target record does not contain a valid $id.");m.has(N)||(m.add(N),y.push(L))}}let A=[];for(let b of y){let w=b[t.targetJoinField]?.value,P=wE(w,s,"target");if(P===null)continue;let T=d.get(P);T!==void 0&&A.push({target:b,source:T})}return A}async function gT(e,t,n,r){if(t.targetJoinField==="$id")return"id";let i=(await Q(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 yT(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 Oe(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(RT.has(u??""))throw new Error(`ArgumentError: UPDATE ... FROM does not support source field type ${u} (${p}).`)}return(await et(r.getRecords,e.appId,"",t,{maxRecords:i.maxRecords??1e4,parallel:i.fetchParallel??1,onLimit:"error"})).records.map(p=>Pt(p,null))}function wE(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=he(e);if(r===null)throw new Error(`ArgumentError: UPDATE ... FROM ${n} key must be a finite decimal: ${e}`);return JSON.stringify(r)}async function Mi(e,t,n,r,i){let o=await yc(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 fe(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 mT(e,t,n,r){if(e.applyBlocks?.length)return rT(e,t,n,r);if(e.checkGroups?.length)return Mi(e,t,n,r);if(e.subtableCode)return xT(e,t,n,r);let i=await at(e.appId,e.fields,t,r),o=await Dt(e.appId,e.fields,i,t,r),a=await Oe(e.appId,t,r),s=Ho(e,a);Nn(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 AT(){return{type:"SELECT",distinct:!1,columns:[],from:{appId:0,alias:null,cteName:Je},joins:[],where:null,groupBy:[],having:null,orderMode:"CANONICAL",orderBy:[],limit:null,offset:null}}async function RR(e,t,n,r,i){if(!n.enableImport)throw new Error("UnsupportedError: IMPORT capability is disabled.");let o=Xf(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 U=new Set(e.targets.filter(W=>W.kind==="SUBTABLE").map(W=>W.subtableCode));if(e.replaceSubtables.some(W=>!U.has(W)))throw new Error("ArgumentError: REPLACE SUBTABLES contains a table not declared in INTO.");for(let W of e.targets.filter(V=>V.kind==="SUBTABLE"))if(!W.rowIdSourceHeader||!e.replaceSubtables.includes(W.subtableCode))throw new Error(`ArgumentError: CSV subtable ${W.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 Q(e.appId,t,r),f=u.flatMap(U=>U.kind==="FIELD"?[U.field]:U.children),R=d.some(U=>f.includes(U.code)&&U.fieldType==="NUMBER")?await yt(e.appId,t,r):void 0,E=await Ca(o,new Map),g=e.source.kind==="JSON"?nE(e.source,E,u,n.maxRecords??1e4):rE(e.source,E,u,e.replaceSubtables??[],n.maxRecords??1e4,e.recordNumberSourceHeader),y=e.source.kind==="CSV"?"UPDATE":e.keyFields?"UPSERT":"INSERT",m=sE(g,u,d,R,y);if(e.source.kind==="CSV")return hT(e,g,m,d,t,n,i);du(m,e.rejectLimit);let h=[...new Set(u.flatMap(U=>U.kind==="FIELD"?[U.field]:U.children))],A=Eu(m.errors,h),b=[...h,...fu],w=m.invalidParentRows.size,P={preflight:"ACTUAL_DATA",parents:{total:m.parents.length,valid:m.parents.length-w,invalid:w,mutationCandidates:m.parents.filter(U=>U.valid).length},tables:Object.fromEntries(m.tableCounts),writesKintone:!1},T={type:"VALIDATION",operation:y,validatedRows:m.parents.length,validRows:m.parents.length-w,invalidRows:w,errorCount:A.length,columns:b,errors:A,importDetail:P,...e.validationErrorTable?{errTable:e.validationErrorTable}:{}};if(e.validationErrorTable&&i&>(i,e.validationErrorTable,b,A,n.tempTableMaxRows??je,new Map),e.validateOnly)return T;if(uE(g),m.errors.length>0&&!e.onErrorSkip){let U=m.errors[0];throw new Error(`DmlValidationError: ${U.code} ${U.message} (row=${U.parentRow}, field=${U.field})`)}if(e.onErrorSkip){if(!i||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch and INTO error table.");gt(i,e.errorTable,b,A,n.tempTableMaxRows??je,new Map)}let L=m.parents.filter(U=>U.valid),N=new Map(d.map(U=>[U.code,U.fieldType])),_=L.map(()=>{});if(e.keyFields){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 U=e.keyFields.map(G=>N.get(G)==="NUMBER"),W=new Set,V=L.map(G=>e.keyFields.map(ae=>String(G.top[ae]?.value??"")));for(let G of V){let ae=bn(G,U);if(W.has(ae))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");W.add(ae)}let $=await Ui(e.appId,e.keyFields,V,t,n,N);V.forEach((G,ae)=>{_[ae]=vi($,G)})}let F=u.filter(U=>U.kind==="SUBTABLE").map(U=>U.subtableCode),D=new Map,M=_.filter(U=>U!==void 0);for(let U of ki([...new Set(M)],100)){let W=await t.getRecords({app:e.appId,query:`$id in (${U.join(",")}) limit 500`,fields:["$id","$revision",...F]});for(let V of W.records){let $=Number(V.$id?.value),G=Number(V.$revision?.value);Number.isFinite($)&&D.set($,{id:$,...Number.isFinite(G)?{revision:G}:{},record:V})}}let S=cE(L,_,D),O={kind:"IMPORT_JSON_SUBTABLE",rowIdPolicy:"DROP_AND_RENUMBER_ALL",parentsToWrite:S.length,insertedParents:S.filter(U=>U.mode==="INSERT").length,updatedParents:S.filter(U=>U.mode==="UPDATE").length,hasDeletes:S.some(U=>U.tables.some(W=>W.deleteRows>0)),parents:S.map(U=>({parentRow:U.parentRow,mode:U.mode,...U.targetId===void 0?{}:{targetId:U.targetId},tables:U.tables}))};if(S.length>0){if(!n.confirm)throw new Error("UnsupportedError: JSON IMPORT subtable mutation requires explicit confirmation detail approval.");if(!await n.confirm(S.length,e.keyFields?"UPDATE":"INSERT",{statementIndex:0,statementCount:1,statementType:"IMPORT",targetAppId:e.appId,importDetail:O}))throw new fe(e.keyFields?"UPDATE":"INSERT",S.length)}let k=U=>new Map(Object.entries(U).map(([W,V])=>[W,V.value])),C=U=>lE(k(U.top),new Map([...U.subtables].map(([W,V])=>[W,V.map($=>({values:k($)}))]))),x=S.filter(U=>U.mode==="INSERT"),H=S.filter(U=>U.mode==="UPDATE"),v=[];for(let U=0;U<x.length;U+=100){let W=await t.postRecords({app:e.appId,records:x.slice(U,U+100).map(C)});v.push(W.ids)}for(let U=0;U<H.length;U+=100)await t.putRecords({app:e.appId,records:H.slice(U,U+100).map(W=>({id:W.targetId,...W.revision===void 0?{}:{revision:W.revision},record:C(W)}))});return e.keyFields?{type:"UPSERT",insertedCount:v.flat().length,updatedCount:H.length,affectedRows:S.length,skippedRows:m.invalidParentRows.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:O}:{type:"INSERT",createdIds:v,insertedCount:v.flat().length,affectedRows:S.length,skippedRows:m.invalidParentRows.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:O}}if(e.writeMode==="UPDATE_RECORD_NUMBER")return ST(e,o,t,n,r,i);let a={appId:e.appId,fields:e.fields,select:AT(),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};Xa.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 gc(s,t,{...n,onLimitReached:"error"},r,i,1);return s.validationErrorTable&&i&>(i,s.validationErrorTable,u.columns,u.errors,n.tempTableMaxRows??je,Cn.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",Gu(s,t,n,r,i,1));return c(u)}let p=await(s.type==="UPSERT_SELECT"?Ic(s,t,n,r,i):hc(s,t,n,r,i));return c(p)}async function hT(e,t,n,r,i,o,a){if(!e.recordNumberSourceHeader||!e.replaceSubtables?.length)throw new Error("InternalError: incomplete CSV subtable replacement AST.");pE(t.records);let s=t.records.map(D=>D.recordNumberSourceValue??""),l=yu(s,e.recordNumberSourceHeader),c=[...e.replaceSubtables],p=[...new Set(r.filter(D=>!D.inSubtable&&D.fieldType==="SUBTABLE").map(D=>D.code))],u=await De(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 D of u){let M=Number(D.$id?.value),S=Number(D.$revision?.value);if(Number.isFinite(M)){d.set(M,{id:M,...Number.isFinite(S)?{revision:S}:{},record:D});for(let O of p){let k=D[O]?.value;if(Array.isArray(k)){for(let C of k)if(C.id){let x=f.get(C.id)??[];x.push({parentId:M,table:O}),f.set(C.id,x)}}}}}let R=l.normalized.map(D=>D===null?void 0:Number(D)),E=n.parents.map((D,M)=>{let S=[...D.errors];for(let k of l.errors[M])S.push({operation:"UPDATE",parentRow:D.parentRow,field:k.field,code:k.code,message:k.message,sourceValues:t.records[M].top});let O=R[M];return O!==void 0&&!d.has(O)&&S.push({operation:"UPDATE",parentRow:D.parentRow,field:e.recordNumberSourceHeader,code:"ERR_RECORD_NUMBER_NOT_FOUND",message:`record number ${O} does not exist in APP${e.appId}`,sourceValues:t.records[M].top}),{...D,valid:S.length===0,errors:S}}),g=dE(t.records,E,R,d,f),y=g.flatMap(D=>[...D.errors]),m=new Set(g.filter(D=>!D.valid).map(D=>D.parentRow)),h={...n,parents:E,errors:y,invalidParentRows:m};du(h,e.rejectLimit);let A=g.filter(D=>D.valid),b=g.flatMap(D=>D.tables),w=(D,M)=>b.filter(S=>S.table===D).reduce((S,O)=>S+Number(O[M]),0),P=Object.fromEntries(c.map(D=>[D,{existingRows:w(D,"existingRows"),inputRows:w(D,"inputRows"),updateRows:w(D,"updateRows"),addRows:w(D,"addRows"),deleteRows:w(D,"deleteRows"),rowIdNotFound:w(D,"rowIdNotFound")}])),T={kind:"IMPORT_CSV_SUBTABLE_REPLACE",rowIdPolicy:"PRESERVE_EXISTING",parentsToWrite:A.length,insertedParents:0,updatedParents:A.length,hasDeletes:A.some(D=>D.tables.some(M=>M.deleteRows>0)),totalDeleteRows:A.flatMap(D=>D.tables).reduce((D,M)=>D+M.deleteRows,0),rowIdNotFound:A.flatMap(D=>D.tables).reduce((D,M)=>D+M.rowIdNotFound,0),invalidParents:m.size,parents:A.map(D=>({parentRow:D.parentRow,mode:"UPDATE",targetId:D.targetId,tables:D.tables}))},L=[...new Set(e.targets.flatMap(D=>D.kind==="FIELD"?[D.field]:D.children))],N=Eu(y,L),_=[...L,...fu];if(e.validateOnly){if(e.validationErrorTable&&!a)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return e.validationErrorTable&&a&>(a,e.validationErrorTable,_,N,o.tempTableMaxRows??je,new Map),{type:"VALIDATION",operation:"UPDATE",validatedRows:E.length,validRows:E.length-m.size,invalidRows:m.size,errorCount:N.length,columns:_,errors:N,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},importDetail:{preflight:"ACTUAL_DATA",parents:{total:E.length,valid:A.length,invalid:m.size,mutationCandidates:A.length},tables:P,rowIdPolicy:"PRESERVE_EXISTING",rowIdNotFound:T.rowIdNotFound,writesKintone:!1}}}if(y.length&&!e.onErrorSkip){let D=y[0];throw new Error(`DmlValidationError: ${D.code} ${D.message} (row=${D.parentRow}, field=${D.field})`)}if(e.onErrorSkip){if(!a||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch and INTO error table.");gt(a,e.errorTable,_,N,o.tempTableMaxRows??je,new Map)}if(A.length){if(!o.supportsImportConfirmDetail||!o.confirm)throw new Error("UnsupportedError: CSV subtable replacement requires explicit rendered detail approval.");if(!await o.confirm(A.length,"UPDATE",{statementIndex:0,statementCount:1,statementType:"IMPORT",targetAppId:e.appId,importDetail:T}))throw new fe("UPDATE",A.length)}let F=D=>new Map(Object.entries(D).map(([M,S])=>[M,S.value]));for(let D of A){let M=Ru(F(D.top),new Map([...D.subtables].map(([S,O])=>[S,O.map(k=>({...k.rowId?{rowId:k.rowId}:{},values:F(k.record)}))])),"PRESERVE");await i.putRecords({app:e.appId,records:[{id:D.targetId,...D.revision===void 0?{}:{revision:D.revision},record:M}]})}return{type:"UPDATE",updatedCount:A.length,affectedRows:A.length,skippedRows:m.size,rejectLimit:e.rejectLimit,...e.errorTable?{errTable:e.errorTable}:{},importDetail:T}}async function ST(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 at(e.appId,e.fields,n,i),s=await Dt(e.appId,e.fields,a,n,i),l=await Ca(t,new Map),c=uu(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=yu(p,e.recordNumberSourceHeader),d=new Set,f=[...new Set(u.normalized.filter(T=>T!==null))];for(let T=0;T<f.length;T+=100){let L=f.slice(T,T+100),N=await n.getRecords({app:e.appId,query:`$id in (${L.join(",")}) limit 500`,fields:["$id"]});for(let _ of N.records){let F=_.$id?.value;typeof F=="string"&&F!==""&&d.add(F.replace(/^0+(?=\d)/,""))}}let R=new Map(a.map(T=>[T.code,T])),E=new Map(e.fields.map(T=>[T,R.get(T)?.fieldType??"SINGLE_LINE_TEXT"])),g=c.rows.map((T,L)=>{let N=u.normalized[L],_=[...c.importRowErrors?.[L]??[],...u.errors[L]];return N!==null&&!d.has(N)&&_.push({field:e.recordNumberSourceHeader,code:"ERR_RECORD_NUMBER_NOT_FOUND",message:`record number ${N} does not exist in APP${e.appId}`}),{rowNumber:L+1,operation:"UPDATE",mode:"update",...N!==null&&d.has(N)?{targetId:Number(N)}:{},payload:new Map([[e.recordNumberSourceHeader,p[L]],...e.fields.map(F=>[F,T[F]??""])]),preErrors:_,record:{},evaluationRow:T,evaluationFieldTypes:E}}),y=[e.recordNumberSourceHeader,...e.fields],m=wl(g,"UPDATE",y,e.fields,a,1,s,e.checkGroups??[],!1),h=[...y,...zn],A={type:"VALIDATION",operation:"UPDATE",validatedRows:g.length,validRows:g.length-m.invalidRows,invalidRows:m.invalidRows,errorCount:m.errors.length,columns:h,errors:m.errors,...e.validationErrorTable??e.errorTable?{errTable:e.validationErrorTable??e.errorTable}:{}};if(Object.assign(A,{importAudit:c.importAudit}),e.validateOnly){if(e.validationErrorTable&&!o)throw new Error("ArgumentError: VALIDATE ONLY INTO requires a batch.");return e.validationErrorTable&&o&>(o,e.validationErrorTable,h,m.errors,r.tempTableMaxRows??je,new Map),A}if(!e.onErrorSkip&&m.invalidRows>0){let T=m.errors[0];throw new Error(`DmlValidationError: ${T.$err_code} ${T.$err_message} (row=${T.$err_row}, field=${T.$err_field})`)}if(e.onErrorSkip){if(!o||!e.errorTable)throw new Error("ArgumentError: ON ERROR SKIP requires a batch.");if(gt(o,e.errorTable,h,m.errors,r.tempTableMaxRows??je,new Map),e.rejectLimit!=null&&m.invalidRows>e.rejectLimit)throw new Ni(`rejected rows (${m.invalidRows}) exceed REJECT LIMIT (${e.rejectLimit}).`,A)}let b=g.filter(T=>!m.invalidRowNumbers.has(T.rowNumber));if(r.confirm&&!await r.confirm(b.length,"UPDATE"))throw new fe("UPDATE",b.length);let w=b.map(T=>({id:T.targetId,record:T.record}));for(let T=0;T<w.length;T+=100)await n.putRecords({app:e.appId,records:w.slice(T,T+100)});let P={type:"UPDATE",updatedCount:w.length,...e.onErrorSkip?{affectedRows:w.length,skippedRows:m.invalidRows,rejectLimit:e.rejectLimit??null,errTable:e.errorTable}:{}};return Object.assign(P,{insertedCount:0,importAudit:c.importAudit}),P}async function TT(e,t,n,r,i,o){let a=Xa.get(e);if(!a){let E=i&&i.size>0?await _t(e.select,t,n,i,r,!0):await Qt(e.select,t,n,r,void 0,!0);return{rows:E.rows,columns:E.columns,columnMeta:ge.get(E)}}let s=await Ca(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"?lu(a.source,s,p,l):uu(a.source,s,l,e.fields,o);if(a.audit=u.importAudit,a.source.kind==="JSON"||!a.source.projection)return u;let d=fE(a.source.projection),f=new Map(i??[]);f.set(gu,u);let R=await _t(d,t,{...n,onLimitReached:"error"},f,r,!0);return{rows:R.rows,columns:R.columns,columnMeta:ge.get(R)}}var Ac={materialize:TT};function gR(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 hc(e,t,n,r,i){if(e.checkGroups?.length)return Mi(e,t,n,r,i);let o=await at(e.appId,e.fields,t,r),a=await Dt(e.appId,e.fields,o,t,r),s=await Ac.materialize(e,t,n,r,i,o),{rows:l,columns:c}=s;if(gR(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 fe("INSERT",l.length);let p=await Oe(e.appId,t,r),u=l.map((f,R)=>{let E={};return e.fields.forEach((g,y)=>{if(s.importPresence&&!s.importPresence[R]?.has(g))return;let m=f[c[y]]??"";E[g]={value:pR(m,p.get(g))}}),E});u.forEach(f=>Nn([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 Bu(e,t,n,r,i){if(e.applyBlocks?.length)return yR(e,t,n,r);if(e.checkGroups?.length&&Lt(e.where)){let R=await at(e.appId,e.assignments.map(g=>g.field),t,r);await Dt(e.appId,e.assignments.map(g=>g.field),R,t,r);let E=await Oe(e.appId,t,r);return fR(e,E),Pn(e,Ku(E,e.appId)),await ir(e,t,r),{type:"UPDATE",updatedCount:0}}if(e.checkGroups?.length)return Mi(e,t,n,r,i);if(e.subtableCode)return await ir(e,t,r),GT(e,t,n,r);let o=await at(e.appId,e.assignments.map(R=>R.field),t,r),a=e.assignments.map(R=>R.field),s=await Dt(e.appId,a,o,t,r);if(await ir(e,t,r),Lt(e.where))return{type:"UPDATE",updatedCount:0};if(e.from!=null)return UT(e,e.from,t,n,r,i);let l=n.maxRecords??1e4;await bR(e.assignments,t,n,r);let c=await Oe(e.appId,t,r);if(Yo(e)){let R=sl(e),g=(await et(t.getRecords,R.app,R.query,[...R.fields],{maxRecords:l,parallel:n.fetchParallel??1})).records,y=ul(e,g,c);if(Nn(y.flatMap(m=>m.records.map(h=>h.record)),a,o,s),n.confirm&&!await n.confirm(g.length,"UPDATE"))throw new fe("UPDATE",g.length);for(let m of y)await t.putRecords(m);return{type:"UPDATE",updatedCount:g.length}}let p=Gr(e),d=(await la(t.getRecords,p.app,p.query,{maxRecords:l,parallel:n.fetchParallel??1})).ids,f=Kr(e,d,c);if(Nn(f.flatMap(R=>R.records.map(E=>E.record)),a,o,s),n.confirm&&!await n.confirm(d.length,"UPDATE"))throw new fe("UPDATE",d.length);for(let R of f)await t.putRecords(R);return{type:"UPDATE",updatedCount:d.length}}async function yR(e,t,n,r,i=1){if(!e.validateOnly&&n.allowApplyMutation!==!0)throw new Error("UnsupportedError: APPLY mutation requires allowApplyMutation=true");if(!ht(e.where))return IT(e,t,n,r,i);let o=await Q(e.appId,t,r),a=bt(e,o),s=qo(e,o),l=yl(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}.`);Qo(c.records[0]);let u=$d({statement:e,snapshot:c.records[0],fieldInfos:o,metadata:a}),d=ut(o,e.assignments.map(b=>b.field)),f=dn(u.postImage,d)?await yt(e.appId,t,r):void 0,R=fn(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",vt),g=qe(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ne),y=u.parentRows>E||u.changedSubtableRows>g;if(e.validateOnly){let b=Jr({plans:[u],records:Wr(u).records,validations:[],guards:{revisionRequired:!0,parentRows:u.parentRows,dmlMaxRows:E,subtableRows:u.changedSubtableRows,dmlMaxSubtableRows:g,wouldExceed:y}}),w={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:Pi(b.branches[0]),guards:Ci(b.branches[0]),deletedRows:{total:u.tables.reduce((P,T)=>P+T.deletedRows,0),parentRows:u.tables.some(P=>P.deletedRows>0)?1:0},diagnostic:b};return Cn.set(w,rs(R.columns,o,e.appId)),w}if(u.parentRows>E)throw new Error(`ArgumentError: APPLY parent rows (${u.parentRows}) exceed dmlMaxRows (${E}).`);if(u.changedSubtableRows>g)throw new Error(`ArgumentError: APPLY changed subtable rows (${u.changedSubtableRows}) exceed dmlMaxSubtableRows (${g}).`);let m=Jo(u,R.normalizedRecord),h=Wr(m),A=Jr({plans:[m],records:h.records,validations:[],guards:{revisionRequired:!0,parentRows:u.parentRows,dmlMaxRows:E,subtableRows:u.changedSubtableRows,dmlMaxSubtableRows:g,wouldExceed:y}});if(n.confirm){let b=ns(A,!1);if(!await n.confirm(u.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPDATE",targetAppId:e.appId,applyDetail:b,applyDiagnostic:A}))throw new fe("UPDATE",u.parentRows)}return await t.putRecords(h),{type:"UPDATE",updatedCount:u.parentRows,diagnostic:Ve(A,{successfulChunks:1,successfulParents:u.parentRows})}}async function IT(e,t,n,r,i){let o=qe(n.dmlMaxRows,"dmlMaxRows",vt),a=qe(n.dmlMaxSubtableRows,"dmlMaxSubtableRows",Ne),s=await Q(e.appId,t,r),l=bt(e,s),c;if(qa(e))c=await PT(e,t,n,s,r);else{let f=qo(e,s),R=Gr(e).query,E=o+1;c=await De(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 na({statement:e,snapshots:c,fieldInfos:s,metadata:l,dmlMaxRows:o,dmlMaxSubtableRows:a,statementNumber:i,loadNumberPrecision:()=>yt(e.appId,t,r)});if(e.validateOnly)return DT(e,p,s);ip("phase15b",e);let u=Jr(p);if(n.confirm){let f=ns(u);if(!await n.confirm(p.guards.parentRows,"UPDATE",{statementIndex:0,statementCount:1,statementType:"UPDATE",targetAppId:e.appId,applyDetail:f,applyDiagnostic:u}))throw new fe("UPDATE",p.guards.parentRows)}let d=await uf(p,t,u);return{...d,diagnostic:Ve(u,d)}}function qa(e){return(e.applyBlocks?.length??0)>0&&!ht(e.where)&&(Ft(e.where)||Se(e.where))}function wT(e){let t=e.type==="EXPLAIN"?e.query:e;return t.type==="UPDATE"&&qa(t)&&Se(t.where)}var bT=`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
12
|
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 iT(e){if(e.unappliedKlikes.length>0)throw new Error(`UnsupportedError: ${rT}`)}async function oT(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=Sl(e.where,{fieldTypes:s,fieldOptions:l});iT(c);let p=c.prefilter===null?"":H(c.prefilter),u=new Set(Lo(e,r));for(let R of aT(e.where))u.add(R);let d=await sT(e.appId,e.where,a,t,i);return(await Ce(t.getRecords,e.appId,p,[...u],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"})).map(R=>({snapshot:R,row:St(R,null)})).filter(({row:R})=>ie(e.where,R,d.fieldTypeResolver,c.appliedKlikes,d.fieldSemanticsResolver)).map(({snapshot:R})=>R)}function aT(e){return Du(e)}async function sT(e,t,n,r,i){let s=[...lT(t)].some(p=>n.get(p)?.fieldType==="STATUS")?await ju(e,r,i):void 0;return{fieldTypeResolver:p=>p.field==="$id"?"NUMBER":n.get(p.field)?.fieldType,fieldSemanticsResolver:p=>{if(p.field==="$id")return Kn(Q({fieldType:"__ID__"}),e,"$id");let u=n.get(p.field);if(!u)return;let d=u.semantics??Q(u),f=u.fieldType==="STATUS"&&s?{...d,optionOrder:s}:d;return Kn(f,e,u.code)}}}function lT(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 uT(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]:[...rt(n,e.fields).payloadFields,...Br],a=t.guards.parentRows,s=pl(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:Ti(l),guards:Ii(l),deletedRows:{total:0,parentRows:0},diagnostic:s};return Sn.set(c,Ba(o,n,e.appId)),c}function cT(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]:[...rt(n,e.assignments.map(c=>c.field)).payloadFields,...Br],s=Vr(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:Ti(s.branches[0]),guards:Ii(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 Sn.set(l,Ba(a,n,e.appId)),l}function pT(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,...Br],l=dl(t),c=l.branches.find(R=>R.branch==="insert"),p=l.branches.find(R=>R.branch==="update"),u=Ti(c),d=Ti(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:Ii(c)},update:{apply:d,guards:Ii(p)}},deletedRows:{total:t.update.plans.reduce((R,E)=>R+E.tables.reduce((g,y)=>g+y.deletedRows,0),0),parentRows:t.update.plans.filter(R=>R.tables.some(E=>E.deletedRows>0)).length},diagnostic:l};return Sn.set(f,Ba([...s],n,e.appId)),f}function Ti(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:En(t,"REMOVE")}:{field:t.field,operations:n,changedSubtableRows:0,deletedRows:0,multiValue:{fieldType:t.fieldType??"UNKNOWN",addedValues:En(t,"ADD"),removedValues:En(t,"REMOVE_VALUE"),changedValues:t.changedCount??0,postImages:t.postImages??[]}}})}function Ii(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 Pt=100,Ie=500;function We(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 Ba(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:Q({fieldType:"RECORD_NUMBER"})});continue}let s=r.get(a);if(s){o.set(a,ct(s,n));continue}o.set(a,q(i.has(a)?"number":"string"))}return o}async function dT(e,t,n,r,i,o){let a=await XE(e,t,n,r,i,o),s=await Ne(e.appId,n,i),l=Ws(e,a,s),c=e.assignments.map(d=>d.field),p=await re(e.appId,n,i),u=await Nt(e.appId,c,p,n,i);if(An(l.flatMap(d=>d.records.map(f=>f.record)),c,p,u),r.confirm&&!await r.confirm(a.length,"UPDATE"))throw new ce("UPDATE",a.length);for(let d of l)await n.putRecords(d);return{type:"UPDATE",updatedCount:a.length}}function fT(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 ET(e,t,n,r){if(await er(e,t,r),wt(e.where))return{type:"DELETE",deletedCount:0};if(e.subtableCode)return mT(e,t,n,r);let i=rd(e),a=(await Vo(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 ce("DELETE",a.length);let s=id(e.appId,a);for(let l of s)await t.deleteRecords(l);return{type:"DELETE",deletedCount:a.length}}async function RT(e,t,n,r){if(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length)return MS(e,t,n,r);if(e.checkGroups?.length)return Li(e,t,n,r);let i=await et(e.appId,e.fields,t,r),o=await Nt(e.appId,e.fields,i,t,r),a=[],s=[],l=await Ne(e.appId,t,r),c=eR(e),p=await Oi(e.appId,e.keyFields,c,t,n,l);if(e.values.forEach((d,f)=>{let R={};e.fields.forEach((g,y)=>{let m=d[y];m.type==="CASE_VALUE"?R[g]={value:Vt(m.expr,{},l.get(g))}:R[g]={value:mt(m,l.get(g))}});let E=Ci(p,c[f]);E!==void 0?s.push({id:E,record:R}):a.push(R)}),An([...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 ce("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 eR(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"?W(i):i.type==="CASE_VALUE"?De(i.expr,{}):i.elements.map(o=>o.value).join(",")}))}async function Zu(e,t,n,r){if(t.length===0)return;let i=await Ne(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 gT(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 Ce(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),s=Ka(a),l=new Map;for(let p of e.values){let u=aE(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,g)=>{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:aE(p[g])}}});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=[..._i(d,i),...u];c.push(tR(e.appId,p,Di(d),i,R))}for(let p of c)await t.putRecords(p);return{type:"INSERT",createdIds:[],insertedCount:e.values.length}}async function yT(e,t,n,r){let i=e.subtableCode;if(!Ei(e.where))throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u306F _rid \u6761\u4EF6\u304C\u5FC5\u9808\u3067\u3059");let o=[];It(e.where,o);for(let d of e.assignments)d.value.type==="CASE_VALUE"&&Ca(d.value.expr,o);let a=await Zu(e.appId,o,t,r),s=await Ce(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),c=ec(s,i).filter(d=>ie(e.where,d.flat,a));if(n.confirm&&!await n.confirm(c.length,"UPDATE"))throw new ce("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:Oo(E.value,d.flat,a)}}f.set(d.rowId,R)}let u=Ka(s);for(let[d,f]of p.entries()){let R=u.get(d);if(!R)continue;let g=_i(R,i).map(y=>{let m=y.id??"";if(!m)return y;let A=f.get(m);return A?{id:m,value:A}:{id:m}});await t.putRecords(AT(e.appId,d,Di(R),i,g))}return{type:"UPDATE",updatedCount:c.length}}async function mT(e,t,n,r){let i=e.subtableCode;if(!Ei(e.where))throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB DELETE \u306B\u306F _rid \u6761\u4EF6\u304C\u5FC5\u9808\u3067\u3059");let o=[];It(e.where,o);let a=await Zu(e.appId,o,t,r),s=await Ce(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),c=ec(s,i).filter(d=>ie(e.where,d.flat,a));if(n.confirm&&!await n.confirm(c.length,"DELETE"))throw new ce("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=Ka(s);for(let[d,f]of p.entries()){let R=u.get(d);if(!R)continue;let E=_i(R,i),g=new Set(f),y=E.filter((m,A)=>!g.has(A));await t.putRecords(tR(e.appId,d,Di(R),i,y))}return{type:"DELETE",deletedCount:c.length}}function Ka(e){let t=new Map;for(let n of e){let r=String(n.$id?.value??"");r&&t.set(r,n)}return t}function ec(e,t){let n=[];for(let r of e){let i=String(r.$id?.value??""),o=Di(r),a=_i(r,t);for(let s=0;s<a.length;s++){let l=a[s],c={..._o(l,s),_pid:i};for(let[p,u]of Object.entries(r))p!==t&&(c[`_p.${p}`]=Su(u?.value));n.push({parent:r,parentId:i,parentRevision:o,rowIndex:s,rowId:l.id??"",row:l,flat:c})}}return n}function _i(e,t){let n=e[t]?.value;return Array.isArray(n)?n:[]}function Di(e){let t=Number(e.$revision?.value??0);return Number.isFinite(t)?t:0}function tR(e,t,n,r,i){return{app:e,records:[{id:Number(t),revision:n,record:{[r]:{value:i}}}]}}function AT(e,t,n,r,i){return{app:e,records:[{id:Number(t),revision:n,record:{[r]:{value:i}}}]}}function hT(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 aE(e){return e.type==="STRING"?e.value:e.type==="NUMBER"?W(e):e.type==="CASE_VALUE"?De(e.expr,{}):e.elements.map(t=>t.value).join(",")}function Su(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return String(e);try{return JSON.stringify(e)}catch{return String(e)}}function Ei(e){switch(e.type){case"BINARY":return e.left.type==="FIELD"&&e.left.tableAlias===null&&e.left.field==="_rid";case"LOGICAL":return Ei(e.left)||Ei(e.right);case"NOT":case"GROUP":return Ei(e.expr);default:return!1}}async function ST(e,t,n,r){let i=[];It(e.where,i);let o=await Zu(e.appId,i,t,r),a=await re(e.appId,t,r);if(wt(e.where))return{type:"REORDER",reorderedParentCount:0};let s=new Map(a.map(f=>[f.code,f.semantics??Q(f)])),l=f=>{if(f.field==="_idx"||f.field==="_pid"||f.field==="_rid")return B("number");let R=f.field.startsWith("_p.")?f.field.slice(3):f.field;return s.get(R)??B("string")},c=await Ce(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),p=ec(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&&ie(e.where,f.flat,o,void 0,l)).map(f=>f.parentId));if(n.confirm&&!await n.confirm(u.size,"UPDATE"))throw new ce("UPDATE",u.size);let d=Ka(c);for(let f of u){let R=d.get(f);if(!R)continue;let g=_i(R,e.subtableCode).map((m,A)=>({row:m,i:A,flat:TT(R,e.subtableCode,m,A)}));g.sort((m,A)=>IT(m.flat,A.flat,e.by,l));let y=g.map(m=>m.row.id??"");await t.putRecords(hT(e.appId,f,Di(R),e.subtableCode,y))}return{type:"REORDER",reorderedParentCount:u.size}}function TT(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}`]=Su(a?.value));for(let[o,a]of Object.entries(n.value??{}))i[o]=Su(a?.value);return i}function IT(e,t,n,r){for(let i of n){let o=sE(i.key,e),a=sE(i.key,t),s=i.key.type==="FIELD_NAME"?r(Ue(i.key.name)):i.key.type==="ARITH_KEY"?B("number"):i.key.type==="FUNC_KEY"?gn(i.key.expr).semantics??B("string"):B("number"),l=$t(o,a,s??B("string"));if(l!==0)return i.direction==="ASC"?l:-l}return 0}function sE(e,t){switch(e.type){case"FIELD_NAME":return t[e.name]??"";case"ARITH_KEY":return String(le(e.expr,t));case"FUNC_KEY":return ue(e.expr,t);case"GROUPING_KEY":throw new Error("ArgumentError: GROUPING() is not supported in REORDER BY.")}}async function tc(e,t,n,r,i){if(e.checkGroups?.length)return Li(e,t,n,r,i);let o=await et(e.appId,e.fields,t,r),a=await Nt(e.appId,e.fields,o,t,r),s=await Ju.materialize(e,t,n,r,i,o),{rows:l,columns:c}=s;if(QE(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 Ne(e.appId,t,r),f=l.map((y,m)=>{let A={};return e.fields.forEach((h,S)=>{if(s.importPresence&&!s.importPresence[m]?.has(h))return;let w=y[c[S]]??"";A[h]={value:jE(w,d.get(h))}}),A});f.forEach(y=>An([y],e.fields.filter(m=>m in y),o,a));let R=f.map(y=>e.keyFields.map(m=>String(y[m]?.value??"")));if(Ua.has(e)){let y=e.keyFields.map(A=>d.get(A)==="NUMBER"),m=new Set;for(let A of R){let h=mn(A,y);if(m.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");m.add(h)}}let E=await Oi(e.appId,e.keyFields,R,t,n,d);if(f.forEach((y,m)=>{let A=Ci(E,R[m]);A!==void 0?u.push({id:A,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 ce("UPDATE",y)}let g=[];for(let y=0;y<p.length;y+=100){let m=await t.postRecords({app:e.appId,records:p.slice(y,y+100)});g.push(m.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:g.flat().length,updatedCount:u.length}}var nR=Object.freeze(["\u30A2\u30D7\u30EAID","\u30A2\u30D7\u30EA\u540D","\u8AAC\u660E"]),rR=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 iR(e){let t=await e.getApps(),n=[...nR],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 oR(e,t,n){let r=await re(e.appId,t,n),i=[...rR],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 wT(e,t=!1){try{let n=new Gt(e).tokenize(),r=new Bt(n,{import:t}).parse();return _n("phase15b",r),ze(r),r}catch(n){throw n instanceof be||n instanceof I,n}}async function wi(e,t,n,r,i){let o=[];Ia(e,t,n,r,o,i),await Promise.all(o)}async function aR(e,t,n,r,i){let o=[];for(let a of e.columns)if(a.type==="CASE_COL")for(let s of a.expr.branches)o.push(wi(s.condition,t,n,r,i));await Promise.all(o)}function Ri(e,t,n,r,i){return i!==void 0&&i.size>0?bt(e,t,n,i,r):Yt(e,t,n,r)}function Ia(e,t,n,r,i,o){if(e!==null)switch(e.type){case"BINARY":{let a=e.right;a.type==="SUBQUERY_IN_LIST"&&i.push(Ri(a.query,t,n,r,o).then(s=>{let l=a.column??s.columns[0]??"";a.resolved=new Set(s.rows.map(c=>c[l]??""))})),a.type==="SCALAR_SUBQUERY"&&i.push(Ri(a.query,t,n,r,o).then(s=>{if(s.rowCount===0)throw new Error("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u5024\u3092\u8FD4\u3057\u307E\u305B\u3093\u3067\u3057\u305F");if(s.rowCount>1)throw new Error("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u8907\u6570\u884C\u3092\u8FD4\u3057\u307E\u3057\u305F\uFF081\u884C\u306E\u307F\u8A31\u53EF\uFF09");let l=s.columns[0]??"";a.resolved=s.rows[0]?.[l]??""}));break}case"LOGICAL":Ia(e.left,t,n,r,i,o),Ia(e.right,t,n,r,i,o);break;case"NOT":case"GROUP":Ia(e.expr,t,n,r,i,o);break;case"EXISTS":{let a=e;i.push(Ri(a.query,t,n,r,o).then(s=>{a.resolved=s.rowCount>0}));break}case"BOOLEAN":break}}async function sR(e,t,n,r){for(let i of e){if(i.value.type!=="SCALAR_SUBQUERY")continue;let o=await Yt(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 lR(e,t,n,r,i){let o=new Map,a=[];for(let c=0;c<e.length;c++){let p=e[c];if(p.type!=="SCALAR_SUBQUERY_COL")continue;let u=JSON.stringify(p.query),d=o.get(u);d||(d=Ri(p.query,t,n,r,i).then(f=>{if(f.rowCount===0)throw new Error("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u5024\u3092\u8FD4\u3057\u307E\u305B\u3093\u3067\u3057\u305F");if(f.rowCount>1)throw new Error("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u8907\u6570\u884C\u3092\u8FD4\u3057\u307E\u3057\u305F\uFF081\u884C\u306E\u307F\u8A31\u53EF\uFF09");let R=f.columns[0]??"";return f.rows[0]?.[R]??""}),o.set(u,d)),a.push([c,d])}let s=await Promise.all(a.map(([,c])=>c)),l=new Map;return a.forEach(([c],p)=>l.set(c,s[p])),l}var uR=new WeakMap,Tu=new WeakMap,cR=new WeakMap,pR=new WeakMap;async function dR(e,t,n,r=1e4,i,o){let a=new Set,s=new Set,l=new Set,c={...t,getFields:async S=>(a.add(S),t.getFields(S)),getProcessStatuses:async S=>(s.add(S),t.getProcessStatuses(S)),getNumberPrecision:async S=>(l.add(S),t.getNumberPrecision(S))},p=new Map,u=new Map,d=new Map,f=new Set,R=i??await Ni(e,c,n),E=S=>R.nodes.find(w=>w.source===S||JSON.stringify(w.source)===JSON.stringify(S)),g=new Map(o??[]),y=async S=>{let w=[S.from,...S.joins.map(b=>b.table)];if(w.length>1&&S.columns.some(b=>b.type==="WILDCARD"||b.type==="PARENT_WILDCARD"))throw new Error("ArgumentError: EXPLAIN could not determine the relation output schema for a multi-source wildcard SELECT.");let N=[];for(let b of w){if(b.cteName!==null){if(b.cteName===Ye)continue;let P=g.get(b.cteName);if(!P)throw new Error(`ArgumentError: EXPLAIN could not determine the relation output schema for ${b.cteName}.`);N.push(...P.columns);continue}let _=await re(b.appId,c,n);b.subtableCode?(N.push(..._.filter(P=>P.inSubtable&&(P.subtableCode===b.subtableCode||P.subtableCode===void 0)).map(P=>P.code)),N.push("_pid","_rid","_idx"),N.push(..._.filter(P=>!P.inSubtable).map(P=>`_p.${P.code}`))):(N.push(..._.filter(P=>!P.inSubtable).map(P=>P.code)),N.push(...Xi))}return[...new Set(N)]},m=async S=>{if(S===null||typeof S!="object")throw new Error("ArgumentError: EXPLAIN could not determine the relation output schema.");let w=S;if(w.type==="SELECT"){let N=S,b=await y(N);if(N.columns.length===1&&N.columns[0].type==="WILDCARD")return b;let _=[];for(let P of N.columns)P.type==="WILDCARD"?_.push(...b):P.type==="PARENT_WILDCARD"?_.push(...b.filter(D=>D.startsWith("_p."))):_.push(...Qn([],[P]).columns);return _}if(w.type==="UNION")return m(w.left);if(w.type==="SHOW_APPS")return[...nR];if(w.type==="DESCRIBE")return[...rR];if(w.type==="GENERATE_SERIES")return[S.columnAlias];throw new Error("ArgumentError: EXPLAIN could not determine the relation output schema.")},A=async S=>{if(S===null||typeof S!="object")return;if(Array.isArray(S)){for(let N of S)await A(N);return}let w=S;if(w.type==="WITH"){let N=S;for(let b of N.ctes){await A(b.query);let _=await m(b.query);g.set(b.name,{rows:[],columns:_})}await A(N.query);return}if(w.type==="UNION"){await A(w.left),await A(w.right);return}if(w.type==="SELECT"){let N=S;for(let _ of N.columns)_.type==="SCALAR_SUBQUERY_COL"&&await A(_.query);await A(N.where),await A(N.having),await Ai(N,c,n,g);let b=await yi(N,c,n,g);b&&d.set(N,b);return}for(let N of Object.values(w))await A(N)};await A(e);let h=async S=>{if(S===null||typeof S!="object"||f.has(S))return;if(f.add(S),Array.isArray(S)){await Promise.all(S.map(h));return}let w=S;if(w.type==="SELECT"){let N=S;await Ai(N,c,n);let b=[N.from,...N.joins.map(U=>U.table)].some(U=>U.cteName!==null);if(X(N).type==="PLAIN"&&!b){let U=await yi(N,c,n);U&&d.set(N,U)}let _=[N.from,...N.joins.map(U=>U.table)].filter(U=>U.cteName===null).map(U=>U.appId);(at(N.where)||N.orderBy.length>0||N.columns.some(U=>U.type==="WINDOW_COL"&&U.orderBy.length>0))&&_.forEach(U=>a.add(U));let{resolver:D,rewrites:F}=await dn(N,c,n);F.length>0&&Tu.set(N,F);let L=Se(N.where,D),v=E(N);if(L.capability==="UNSUPPORTED"&&!v)throw new Error(`ArgumentError: WHERE predicate is unsupported (${fn(L)}).`);p.set(N,L);let C=xu.get(N)??ka(N,await Ma(N,c,n));if(C&&uR.set(N,C),N.orderBy.length>0||N.columns.some(U=>U.type==="WINDOW_COL"&&U.orderBy.length>0)){let U=await hi(N,c,n);if(N.orderMode!=="KINTONE_NATIVE")for(let O of U.semantics.values())O.fieldType==="STATUS"&&O.source&&s.add(O.source.appId);if(Na(N)&&!b&&v?.allowed!==!1){let O=L.capability==="EXACT_PUSHDOWN"?Fe(N):"FULL_SCAN";u.set(N,(N.orderMode==="KINTONE_NATIVE"?Jr:Xr)({stmt:N,staticMode:O,whereCapability:L.capability,whereReasons:L.reasons,orderSemantics:U.semantics,maxRecords:r,hasKlike:me(N.where)}))}}}else if(w.type==="VALIDATE"){let N=S;a.add(N.appId);let b=await re(N.appId,c,n),_=new Map(b.filter(k=>!k.inSubtable).map(k=>[k.code,k])),P=new Set(b.filter(k=>k.inSubtable).map(k=>k.code)),D=sl(N,b),F=$n(N.checkGroups??[]),L=Du(N.where);for(let k of F){if(k.field!=="$id"&&!_.has(k.field)&&!P.has(k.field))throw he(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${k.field} \u306F APP${N.appId} \u306B\u5B58\u5728\u3057\u307E\u305B\u3093`);if(k.field!=="$id"&&!_.has(k.field)&&P.has(k.field))throw new Error(`ArgumentError: VALIDATE \u306E CHECK \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${k.field} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}for(let k of L){if(k!=="$id"&&!_.has(k)&&!P.has(k))throw new Error(`ArgumentError: WHERE field ${k} does not exist in APP${N.appId}.`);if(k!=="$id"&&!_.has(k)&&P.has(k))throw new Error(`ArgumentError: VALIDATE \u306E WHERE \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${k} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let v=new Map([..._].map(([k,z])=>[k,z.fieldType]));v.set("$id","RECORD_NUMBER"),hn(N,v);let T=Se(N.where,k=>k.field==="$id"?Q({fieldType:"__ID__"}):_.get(k.field)?.semantics??(_.has(k.field)?Q(_.get(k.field)):void 0));if(T.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${fn(T)}).`);let C=new Map([..._].map(([k,z])=>[k,z.fieldType])),U=new Map([..._.values()].flatMap(k=>k.optionOrder?[[k.code,new Set(Object.keys(k.optionOrder))]]:[])),O=N.where===null?null:T.capability==="EXACT_PUSHDOWN"?N.where:Mn(N.where,{allowUnqualifiedFields:!0,fieldTypes:C,fieldOptions:U,allowKlike:!1}),G=D.some(k=>k.field.fieldType==="NUMBER");G&&(l.add(N.appId),await dt(N.appId,c,n)),cR.set(N,{targetFields:D.map(k=>k.subtableCode?`${k.subtableCode}(${k.field.code})`:k.field.code),fetchFields:[...new Set(["$id",...D.map(k=>k.subtableCode??k.field.code),...L,...F.map(k=>k.field)])],subtables:new Map([...new Set(D.flatMap(k=>k.subtableCode?[k.subtableCode]:[]))].map(k=>[k,D.filter(z=>z.subtableCode===k).length])),capability:T,prefilter:O,numberPrecision:G})}else if(w.type==="UPDATE"||w.type==="DELETE"){if(a.add(S.appId),w.type==="UPDATE"&&S.applyBlocks?.length){let b=S,_=await re(b.appId,c,n);if(At(b,_),_a(b)){let P=_.filter(F=>!F.inSubtable),D=Sl(b.where,{fieldTypes:new Map(P.map(F=>[F.code,F.fieldType])),fieldOptions:new Map(P.flatMap(F=>F.optionOrder?[[F.code,new Set(Object.keys(F.optionOrder))]]:[]))});pR.set(b,D)}}let N=S;(N.type!=="UPDATE"||!_a(N))&&E(N)?.allowed!==!1&&await er(N,c,n)}await Promise.all(Object.values(w).map(h))};if(await h(e),typeof e=="object"&&e!==null&&e.type==="WITH"&&vt(e)){let S=Ut(e),{resolver:w,rewrites:N}=await dn(S,c,n);N.length>0&&Tu.set(S,N);let b=Se(S.where,w),_=E(S);if(b.capability==="UNSUPPORTED"&&!_)throw new Error(`ArgumentError: WHERE predicate is unsupported (${fn(b)}).`);if(p.set(S,b),Na(S)&&_?.allowed!==!1){let P=await hi(S,c,n);u.set(S,(S.orderMode==="KINTONE_NATIVE"?Jr:Xr)({stmt:S,staticMode:b.capability==="EXACT_PUSHDOWN"?Fe(S):"FULL_SCAN",whereCapability:b.capability,whereReasons:b.reasons,orderSemantics:P.semantics,maxRecords:r,hasKlike:me(S.where)}))}}return{capabilities:p,orderPlans:u,plainGroupByPlans:d,fieldApps:a,processStatusApps:s,numberPrecisionApps:l,relativeDatePlan:R}}function Iu(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 bT(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 lE(e){return e==="<>"?"!=":e}function Qe(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(Qe).join(", ")})`;case"FUNC_FIELD":case"ARITH_FIELD":case"CASE_FIELD":case"ARITH_VALUE":case"CASE_VALUE":return Qe(t.expr);case"GROUPING_FIELD":return`GROUPING(${Qe(t.ref)})`;case"GROUPING_REF":return Qe(t.field);case"ARITH":case"SCALAR_ARITH":case"CONCAT_OP":return`(${Qe(t.left)} ${typeof t.op=="string"?t.op:t.type==="CONCAT_OP"?"||":"<op>"} ${Qe(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(Qe).join(", ")})`:"<expr>";case"ARRAY":return Array.isArray(t.elements)?`[${t.elements.map(Qe).join(", ")}]`:"<expr>";case"CASE":case"CASE_WHEN":return"CASE ... END";default:return"<expr>"}}function cn(e){try{let t=e;switch(t.type){case"BINARY":return`${Qe(t.left)} ${bT(t.op)} ${Qe(t.right)}`;case"NULL_CHECK":return`${Qe(t.field)} IS ${t.not===!0?"NOT ":""}NULL`;case"LOGICAL":return`(${cn(t.left)} ${t.op==="AND"||t.op==="OR"?t.op:"<op>"} ${cn(t.right)})`;case"NOT":return`NOT (${cn(t.expr)})`;case"GROUP":return`(${cn(t.expr)})`;case"BOOLEAN":return t.value===!0?"TRUE":t.value===!1?"FALSE":"<expr>";default:return"<expr>"}}catch{return"<expr>"}}function wu(e){if(!e.hasServerOnlyWhereFunction)return[];if(!e.allowed&&e.rejection){let n=ee(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?NT(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=eu(l),p=l.left.type==="FIELD"?l.left.field:"(unknown)";t.push(` ${Zl(c)}: ${c}`,` ${tu(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)":cn(r.residualWhere)}`),r.adoptedServerFunctionOccurrences.some(ee)&&t.push(" relative date client evaluations: 0"),r.adoptedServerFunctionOccurrences.some(s=>!ee(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=eu(s),c=s.left.type==="FIELD"?s.left.field:void 0,p=lE(s.op),u=n.capability?.reasons.find(d=>d.functionName===l&&(c===void 0||d.field===c)&&d.operator===p);t.push(` ${Zl(l)}: ${l}`,` ${tu(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)",` ${uE(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=eu(s),c=s.left.type==="FIELD"?s.left.field:void 0,p=lE(s.op),u=n.capability?.reasons.find(d=>d.functionName===l&&(c===void 0||d.field===c)&&d.operator===p);t.push(` ${Zl(l)}: ${l}`,` ${tu(l)}: kintone server exact prefilter`,` field: ${u?.field??c??"(unknown)"} (${u?.fieldType??"unknown"})`,` operator: ${u?.operator??p}`)}let a=H(o.prefilterWhere);t.push(" where capability: SUPERSET_PREFILTER",` server prefilter: ${a}`,` client residual: ${cn(o.residualWhere)}`,` ${uE(o.exactRelativeLeaves)}: 0`,` kintone query: ${a}`);continue}for(let a of n.functionNames){let s=n.capability?.reasons.find(l=>l.functionName===a);if(!ee(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 NT(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 Zl(e){return ee(e)?"relative date function":"kintone function"}function eu(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 tu(e){return ee(e)?"relative date evaluation":"kintone function evaluation"}function uE(e){return e.every(t=>t.right.type==="KINTONE_FUNC"&&ee(t.right.name))?"relative date client evaluations":"kintone function client evaluations"}var fR=Symbol("ksql.explainFetchPlan");function nc(e){return e[fR]}function ER(e,t){e[fR]=t}async function RR(e,t,n,r="batch-explain",i=1e4,o=2,a=!1,s=100,l=Ie){let c=Nu(r);try{let p=vu(e,a),u=_s(p),d=fl(p,n),f=SE(p,d),R=new Map,E=[],g=[];for(let m=0;m<p.length;m++){let A=p[m],h=A.type==="SET_VARIABLE"?A.expr.type==="SCALAR_SUBQUERY"?{...A,expr:ba(A.expr,R)}:A:ba(A,R);ze(h);let S=await Ni(h,t,c),w=await dR(h,t,c,i,S),N={sources:[]},b=S.hasServerOnlyWhereFunction&&!S.allowed?wu(S):[...wu(S),...gR(PT(h,u.statements[m],w.capabilities,w.orderPlans,s,l,N),o)],_=Iu(w);E.push({index:m,type:u.statements[m].statementType,plan:b.length===0?_:[b[0],..._,...b.slice(1)]}),g.push({index:m,fetch:rc(N.sources),sources:N.sources}),(A.type==="SET_VARIABLE"||A.type==="DECLARE_VARIABLE")&&R.set(A.name,A.type==="DECLARE_VARIABLE"&&A.annotation==="RELATIVE_DATE"?{type:"relative-date",value:f.get(A.name)}:A.type==="SET_VARIABLE"&&A.expr.type==="ARRAY"?{type:"array",elements:A.expr.elements.map(P=>({type:"string",value:P.value}))}:{type:"string",value:`@${A.name}`,placeholder:!0})}let y={statementCount:p.length,statements:E};return ER(y,{statements:g}),y}finally{Yu(c)}}function PT(e,t,n,r,i=100,o=Ie,a={sources:[]}){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",` rows: \u5B9F\u4F53\u5316\u524D\u306E\u305F\u3081\u4E0D\u660E\uFF08\u65E2\u5B9A\u4E0A\u9650 ${Ve} \u884C\u3001tempTableMaxRows \u3067\u5909\u66F4\u53EF\u3001\u8D85\u904E\u306F\u30A8\u30E9\u30FC\uFF09`,...ci(e.query,t,n,r,a,"main").map(s=>` ${s}`)];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 s=Da(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:",...ci(e.expr.query,s,n,r,a).map(l=>` ${l}`)]}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 ci(e.query,t,n,r,a);if(e.type==="ASSERT"){let s=[`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"],l=[e.left,e.right,e.low,e.high].filter(c=>c!==null&&c.type==="SCALAR_SUBQUERY");return l.forEach((c,p)=>{s.push(l.length>1?` subquery[${p+1}]:`:" subquery:");let u=Da(c.query)?t:{...t,tempTablesReferenced:[]};s.push(...ci(c.query,u,n,r,a).map(d=>` ${d}`))}),s}return e.type==="UPDATE"&&(e.applyBlocks?.length??0)>0?$a(e,void 0,n,r,i,o):ci(e,t,n,r,a)}function Da(e){if(Array.isArray(e))return e.some(Da);if(e!==null&&typeof e=="object"){let t=e,n=t.cteName;return typeof n=="string"&&n.startsWith("#")?!0:Object.values(t).some(Da)}return!1}function ci(e,t,n,r,i={sources:[]},o="main"){if(t.tempTablesReferenced.length===0)return $a(e,void 0,n,r,100,Ie,1e4,void 0,!0,i,o);let a=[];e.type==="INSERT_SELECT"?a.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"&&a.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`),a.push(" mode: FULL_SCAN\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u53C2\u7167\uFF09"),a.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 s=t.appIds.filter(l=>e.type!=="INSERT_SELECT"&&e.type!=="UPSERT_SELECT"||l!==e.appId);return s.length>0&&a.push(` app: ${s.map(l=>`APP${l}`).join(", ")}`),a.push(" note: \u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3078\u306E WHERE \u30D7\u30C3\u30B7\u30E5\u30C0\u30A6\u30F3\u306F\u884C\u308F\u308C\u306A\u3044"),a}var bu=new WeakMap;async function CT(e,t,n,r,i,o=100,a=Ie,s){let l=s??await Ni(e.query,t,n),c=await dR(e.query,t,n,r,l,bu.get(e)),p={sources:[]},u=wu(l),d=l.hasServerOnlyWhereFunction&&!l.allowed?[...Iu(c),...u]:[...Iu(c),...u,...gR($a(e.query,void 0,c.capabilities,c.orderPlans,o,a,r,c.plainGroupByPlans,!0,p),i)],f=wa(d,p.sources),R={type:"SELECT",columns:["plan"],rows:f.map(E=>({plan:E})),rowCount:f.length};return ER(R,{statements:[{index:0,fetch:rc(p.sources),sources:p.sources}]}),R}function gR(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 $a(e,t,n,r,i=100,o=Ie,a=1e4,s,l=!0,c,p="main"){let u=c??{sources:[]};if(e.type==="UNION"){let f=vT(e,n,r,s,u);return l?wa(f,u.sources):f}if(e.type==="WITH"){let f=UT(e,n,r,s,u);return l?wa(f,u.sources):f}if(e.type==="INSERT")return FT(e,t,i,o);if(e.type==="INSERT_SELECT")return xT(e,t,n,r,s);if(e.type==="UPSERT")return $T(e,t,i,o);if(e.type==="UPSERT_SELECT")return VT(e,t,n,r,s);if(e.type==="UPDATE")return GT(e,t,n,r,i,o,a);if(e.type==="DELETE")return KT(e,t);if(e.type==="REORDER")return WT(e,t);if(e.type==="VALIDATE")return _T(e,t);if(e.type==="IMPORT"){if(e.writeMode==="UPDATE_RECORD_NUMBER"){let E=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",...E.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 f=e.keyFields?"UPSERT":"INSERT",R=e.targets?.some(E=>E.kind==="SUBTABLE")===!0;return[...t?[t]:[],`IMPORT ${f} 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",...R?[" 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&&R?"requires actual source load at execution; this EXPLAIN is static":"requires load"}`,...R?[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 d=Ze(e,t,n,r,s,!0,!0,u,p);return l?wa(d,u.sources):d}var cE={none:0,count_only:1,exact:2,prefiltered:3,all:4};function rc(e){return e.reduce((t,n)=>cE[t]>=cE[n.fetch]?t:n.fetch,"none")}function wa(e,t){let n=e.filter(r=>!r.startsWith("fetch summary:"));return t.length===0?n:[`fetch summary: ${rc(t).toUpperCase()}`,...n]}function OT(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:OT(o)};return e.sources.push(s),s}function LT(e){return[e.fetch.toUpperCase(),...e.limit===null?[]:[`(limit ${e.limit})`],...e.pending?["(\u672A\u78BA\u5B9A)"]:[]].join(" ")}function ma(e){return` fetch: ${LT(e)}`}function _T(e,t){let n=cR.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)":H(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?_u:Lu).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 DT(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 Ze(e,t,n,r,i,o=!0,a=!0,s={sources:[]},l="main"){let c=n?.get(e)??(n?[...n].find(([S])=>JSON.stringify(S)===JSON.stringify(e))?.[1]:void 0),p=r?.get(e)??(r?[...r].find(([S])=>JSON.stringify(S)===JSON.stringify(e))?.[1]:void 0),u=i?.get(e)??(i?[...i].find(([S])=>JSON.stringify(S)===JSON.stringify(e))?.[1]:void 0),d=o&&c!==void 0&&GE(e,c),f=d?"COUNT_TOTAL_COUNT":p?.kind==="CANONICAL_LOCAL"||c&&c.capability!=="EXACT_PUSHDOWN"?"FULL_SCAN":Fe(e),R=kT(e);c&&c.capability!=="EXACT_PUSHDOWN"&&R.push(...c.reasons.map(S=>S.code));let E=[],g=kd(e,mi.get(e)?.allItems.length);t&&E.push(t),E.push(` mode: ${f}`);for(let S of Tu.get(e)??wE.get(e)??[])E.push(DT(S));g&&(E.push(` grouping source: ${g.source}`),E.push(` grouping sets: ${g.expandedSetCount} (limit: ${g.setLimit})`),E.push(` grouping items: ${g.groupingItemCount} (limit: ${g.itemLimit})`),E.push(` grouping output rows: runtime checked (limit: ${g.outputRowLimit}, before HAVING/DISTINCT/LIMIT)`));let y=X(e);if(y.type==="PLAIN"){let S=y.allItems;if(u)u.items.forEach((w,N)=>{let b=S[N];b?.type==="FIELD_NAME"&&(w.kind==="PHYSICAL"?E.push(` group key ${b.name}: PHYSICAL (source=${w.sourceIndex}, field=${w.fieldCode})`):w.kind==="ALIAS_SAFE"?E.push(` group key ${b.name}: ALIAS_SAFE (column=${w.columnIndex})`):w.kind==="EXPRESSION"&&E.push(` group key ${b.name}: EXPRESSION`))});else if([e.from,...e.joins.map(w=>w.table)].some(w=>w.cteName!==null))for(let w of S)w.type==="FIELD_NAME"&&E.push(` group key ${w.name}: DEFERRED (materialized schema unavailable)`)}for(let S of e.columns){if(S.type!=="WINDOW_COL"||S.windowKind===void 0||S.windowKind==="RANKING")continue;let w=[];S.partitionBy.length>0&&w.push(`PARTITION BY ${S.partitionBy.map(N=>N.tableAlias?`${N.tableAlias}.${N.field}`:N.field).join(", ")}`),S.orderBy.length>0&&w.push(`ORDER BY ${S.orderBy.map(yR).join(", ")}`),S.windowKind==="VALUE"?E.push(` window ${S.alias}: ${S.valueFunc}(offset=${S.offset}) OVER (${w.join(" ")})`):S.windowKind==="AGGREGATE"&&(E.push(` window ${S.alias}: ${S.aggFunc} OVER (${w.join(" ")})`),E.push(S.frame===null?" frame: PARTITION ENTIRE":` frame: ${S.frame.unit} UNBOUNDED PRECEDING AND CURRENT ROW${S.frame.source==="DEFAULT"?" (\u65E2\u5B9A)":""}`))}if(d){let S=e.where===null?"":H(e.where);if(E.push(` app: APP${e.from.appId} (${e.from.appId})`),E.push(` kintone query: ${S}${S?" ":""}limit 1`),a){let w=ya(s,e.from.appId,e.from.alias,l,"COUNT_ONLY",`${S}${S?" ":""}limit 1`);E.push(ma(w))}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}`))):g&&E.push(" order plan: CANONICAL_LOCAL");let m=p&&!p.requiresCompleteInput?{...e,orderBy:[]}:e,A=Ct(m);p?.requiresCompleteInput&&A.add("LOCAL_ORDER");let h=wt(e.where);if(A.size>0&&(!h||g!==null)&&(E.push(" complete input: required (onLimit=truncate disabled)"),E.push(` complete input reason: ${[...A].join(", ")}`),E.push(" onLimit=truncate: disabled")),h)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 S=oo(p?.kind==="CANONICAL_REST_TOP_N"?UE(e):e);E.push(` app: APP${e.from.appId} (${e.from.appId})`);let w=p?.kind==="KORDER_CURSOR"?Tl(e):S.query;if(E.push(` kintone query: ${w||"(\u306A\u3057)"}`),a&&e.from.cteName===null){let N=w?"EXACT":"ALL";E.push(ma(ya(s,e.from.appId,e.from.alias,l,N,w)))}E.push(` fields: ${S.fields.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":S.fields.join(", ")}`)}else{let S=uR.get(e),w=S??xn(e);if(e.joins.length>0)if(S){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)"),S.joinPlan.serverFunctionCandidate&&E.push(` allow form: JOIN_SERVER_FUNCTION_EXACT (${S.joinPlan.serverFunctionCandidate.variant==="WHOLE_WHERE_EXACT"?"whole-WHERE":"leaf"})`),E.push(` client residual: ${S.joinPlan.residualWhere===null?"(none)":cn(S.joinPlan.residualWhere)}`),E.push(` KLIKE applied nodes: ${S.joinPlan.appliedKlikes.size}`),E.push(` KLIKE unapplied nodes: ${S.joinPlan.allKlikes.length-S.joinPlan.appliedKlikes.size}`),S.joinPlan.residualWhere!==null)for(let C of S.joinPlan.rejections)E.push(` join pushdown not applied: ${C.reason}`)}else{let C=e.joins.some(U=>U.type!=="INNER")?"OUTER_JOIN":[e.from,...e.joins.map(U=>U.table)].some(U=>U.cteName!==null||!!U.subtableCode)?"SOURCE_KIND":"PLAN_NOT_APPLICABLE";E.push(" join pushdown plan: not applied"),E.push(` join pushdown not applied: ${C}`)}let N=Qt(e,e.from,u),b=e.from.alias?` AS ${e.from.alias}`:"",_=w.mainCondition,P=_E(e),D=e.joins.length===0&&c?.capability==="EXACT_PUSHDOWN"&&e.where!==null&&!Rt(e.where)?H(e.where):"",F=e.from.alias?S?.queriesByAlias.get(e.from.alias):void 0,L=F||(_!==null?H(_):D||"(\u5168\u4EF6\u53D6\u5F97)");E.push(` app: APP${e.from.appId}${b} (${e.from.appId})`),E.push(` kintone query: ${L}`);let v=S?.joinPlan.items.find(C=>C.targetAlias===e.from.alias),T=S?.joinPlan.serverFunctionConsumptions.find(C=>C.targetAlias===e.from.alias);if(a&&e.from.cteName===null){let C=!S&&P!==null,U=L==="(\u5168\u4EF6\u53D6\u5F97)"?"ALL":C?"PREFILTERED":v?.relation==="exact"||T||D!==""?"EXACT":"PREFILTERED";E.push(ma(ya(s,e.from.appId,e.from.alias,l,U,L,C)))}v||T?(E.push(` pushdown applied: ${F}`),E.push(` relation: ${v?.relation??"exact"}`)):!S&&P!==null&&E.push(` pushdown candidate: ${H(P)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`),E.push(` fields: ${N.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":N.join(", ")}`);for(let C of e.joins){let U=Qt(e,C.table,u),O=C.table.alias?` AS ${C.table.alias}`:"",G=C.type==="INNER"?"JOIN":`${C.type} JOIN`,k=C.table.alias?w.joinConditions.get(C.table.alias)??null:null,z=C.table.alias&&!C.table.subtableCode&&C.table.cteName===null&&e.where?hr(e.where,{tableAlias:C.table.alias}):null,M=C.table.alias?S?.queriesByAlias.get(C.table.alias):void 0,V=M||(k!==null?H(k):"(\u5168\u4EF6\u53D6\u5F97)");E.push(` ${G}: APP${C.table.appId}${O} (${C.table.appId})`),E.push(` kintone query: ${V}`);let Z=S?.joinPlan.items.find(x=>x.targetAlias===C.table.alias),$=S?.joinPlan.serverFunctionConsumptions.find(x=>x.targetAlias===C.table.alias);if(a&&C.table.cteName===null){let x=!S&&z!==null,fe=V==="(\u5168\u4EF6\u53D6\u5F97)"?"ALL":x?"PREFILTERED":Z?.relation==="exact"||$?"EXACT":"PREFILTERED";E.push(ma(ya(s,C.table.appId,C.table.alias,"join",fe,V,x)))}Z||$?(E.push(` pushdown applied: ${M}`),E.push(` relation: ${Z?.relation??"exact"}`)):!S&&z!==null&&E.push(` pushdown candidate: ${H(z)}\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(", ")}`)}}return E.push(...MT(e,n,r,i,s)),E}function vT(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(...Ze(l,`[union:${c+1}]`,t,n,r,!0,!0,i,"union"))}),s}function UT(e,t,n,r,i={sources:[]}){let o=[];for(let a of e.ctes)if(a.query.type==="SELECT")o.push(...Ze(a.query,`[cte: ${a.name}]`,t,n,r,!1,!0,i,"cte")),o.push("");else if(a.query.type==="GENERATE_SERIES"){let s=Cs(a.query),l=s.kind==="DATE"?`${s.step} ${Math.abs(s.step)===1?"day":"days"}`:String(s.step);o.push(`[cte: ${a.name}]`," source: GENERATE_SERIES",` column: ${a.query.columnAlias}`,` series type: ${s.kind}`,` start: ${s.start}`,` stop: ${s.stop}`,` step: ${l}`,` rows: ${s.rowCount}`,` row guard: ${s.rowCount} / ${xt}`," records API: none","")}if((e.query.type==="SELECT"||e.query.type==="UNION")&&o.push(...$a(e.query,"[main]",t,n,100,Ie,1e4,r,!1,i)),vt(e)){o.push("");let a=Ut(e);o.push(...Ze(a,"[effective: inlined CTE]",t,n,r,!1,!0,i,"cte"))}return o}function kT(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.length>0&&t.push("JOIN \u3042\u308A");let n=X(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"),Rt(e.where)&&t.push("WHERE \u53E5\u306B JS \u8A55\u4FA1\u304C\u5FC5\u8981\u306A\u5F0F"),Lt(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 MT(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(...Ze(l.right.query,`[subquery:${a++}]`,t,n,r,!1,!0,i,"subquery"))),l.right.type==="SUBQUERY_IN_LIST"&&(o.push(""),o.push(...Ze(l.right.query,`[subquery:${a++}]`,t,n,r,!1,!0,i,"subquery")));break;case"EXISTS":o.push(""),o.push(...Ze(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(...Ze(l.query,`[subquery:${a++}]`,t,n,r,!1,!0,i,"subquery")));return e.having&&s(e.having),o}function FT(e,t,n=Pt,r=Ie){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,...ic(Ko(e,n,r))]:a}function xT(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(...Ze(e.select,"[source SELECT]",n,r,i,!1,!1)),o}function GT(e,t,n,r,i=100,o=Ie,a=1e4){if(e.applyBlocks?.length)return BT(e,t,i,o,a);let s=Zp(e),l=e.assignments.some(f=>f.value.type==="STRING_FUNC"),c=Co(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?bi(e.from.targetFilter):"(none)"}`)}else u.push(` kintone query: ${bi(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(wt(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=HT(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(` ${jT(f)}`);for(let f of e.assignments)f.value.type==="SCALAR_SUBQUERY"&&(u.push(""),u.push(...Ze(f.value.query,`[subquery: ${f.field}]`,n,r,void 0,!1,!1)));return u}function BT(e,t,n,r,i){let o=Ko(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=pR.get(e),f=d?["parent selection: safe prefilter + JS residual evaluation",`kintone prefilter: ${d.prefilter===null?"(none; empty query)":H(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: ${bi(e.where)}`,`parent cardinality: ${Et(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",...ic(o)]}function KT(e,t){let n=[];return t&&n.push(t),n.push(" [DELETE]"),n.push(` target: APP${e.appId} (${e.appId})`),n.push(` kintone query: ${bi(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(wt(e.where)?" api: metadata validation only (records API access: none)":" api: GET /k/v1/records.json \u2192 DELETE /k/v1/records.json"),n}function $T(e,t,n=Pt,r=Ie){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,...ic(Ko(e,n,r))]:a}function ic(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 VT(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(...Ze(e.select,"[source SELECT]",n,r,i,!1,!1)),o}function WT(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(yR).join(", "),o=[...t?[t]:[]," [REORDER]",` target: APP${e.appId} (${e.appId})`,` table: ${n}`,` scope: ${r}`,` by: ${i}`,wt(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: ${bi(e.where)}`),o}function yR(e){return`${e.key.type==="FIELD_NAME"?e.key.name:"(\u5F0F)"} ${e.direction}`}function bi(e){if(e.type==="BOOLEAN")return e.value?"TRUE":"FALSE (constant)";try{return H(e)}catch{return"(JS \u8A55\u4FA1\u304C\u5FC5\u8981\u306A\u305F\u3081 kintone \u30AF\u30A8\u30EA\u306B\u5909\u63DB\u4E0D\u53EF)"}}function HT(e){let t=new Set;for(let{value:n}of e.assignments)n.type==="ARITH"&&va(n,t),n.type==="STRING_FUNC"&&va(n,t),(n.type==="SCALAR_ARITH"||n.type==="CONCAT_OP")&&gi(n,t);return[...t]}function va(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"&&(va(e.left,t),va(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"&&gi(n,t)}async function mR(e,t,n,r,i){let o=Xu(e),a=await Ne(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 Ne(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 he(`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 he(`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 he(`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 he(`UPDATE FROM \u306E CHECK \u3067\u306F\u30BD\u30FC\u30B9\u5217 ${d.field} \u3092\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044`);if(R)throw he(`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 YT(e,t,n){if(!e)return{};let r=St(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 gi(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"&&gi(n,t);return}(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP")&&(gi(e.left,t),gi(e.right,t))}function jT(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} = ${AR(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 AR(e){return`${pE(e.left)} ${e.op} ${pE(e.right)}`}function pE(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"?W(e):e.type==="ARITH"?`(${AR(e)})`:"..."}var ce=class extends Error{constructor(n,r){super(`${n} \u3092\u30AD\u30E3\u30F3\u30BB\u30EB\u3057\u307E\u3057\u305F\uFF08\u5BFE\u8C61: ${r} \u4EF6\uFF09`);this.operation=n;this.affectedCount=r;this.name="OperationCancelledError"}};var Pe=class extends Error{constructor(t,n,r){super(n),this.name="KsqlEngineError",this.code=t,r!==void 0&&(this.cause=r),Object.setPrototypeOf(this,new.target.prototype)}};function oc(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 He(e){return new Pe("READ_ONLY_VIOLATION",e)}function sr(e,t){return new Pe("PARSE_ERROR",e,t)}function hR(){let e=new Rn;return new Pe("SEARCH_ABORTED",e.message,e)}function vi(e){return e instanceof Error&&e.message.trim()!==""||e!==null&&typeof e=="object"&&typeof e.message=="string"?e.message:String(e)}function zT(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 Tn(e){return e instanceof Pe?e:e instanceof be||e instanceof I?new Pe("PARSE_ERROR",vi(e),e):e instanceof Rn||e?.name==="SearchAbortedError"?new Pe("SEARCH_ABORTED",vi(e),e):e instanceof Le||e?.name==="FetchAllLimitError"?new Pe("FETCH_LIMIT_EXCEEDED",vi(e),e):e instanceof Error&&e.name==="ClientOperationError"&&"cause"in e?new Pe("CLIENT_ERROR",e.message,e.cause):zT(e)?new Pe("CLIENT_ERROR",vi(e),e):new Pe("EXECUTION_ERROR",vi(e),e)}function Va(e,t){let n=Tn(e);if(e instanceof te){let r=t[e.statementIndex];if(r!==void 0)return oc(n,e.statementIndex,r.type)}return n}var qT=2,Wa=5,XT=3e4,JT=10*6e4+3e4,Ha=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??qT;if(!Number.isSafeInteger(r)||r<1||r>Wa)throw new Error(`ArgumentError: cursorMaxActive must be an integer from 1 to ${Wa}.`);this.maxActive=r,this.waitTimeoutMs=n.waitTimeoutMs??XT,this.quarantineMs=n.quarantineMs??JT}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 Zo(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>Wa)throw new Error(`ArgumentError: cursorMaxActive must be an integer from 1 to ${Wa}.`)}};function QT(e){let t=e;return t?.status===404&&t.code==="GAIA_CN01"}async function ZT(e,t=r=>new Promise(i=>setTimeout(i,r)),n=QT){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 eI(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 SR(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 eI(ZT(t.delete,t.sleep,t.isAlreadyReleasedError),t.cleanupTimeoutMs??5e3),n=!0,t.onReleased?.()}catch(l){throw t.onReleaseUnknown?.(),l}}),o)}}function TR(e){return IR(e,nI(e))}function IR(e,t,n=!1,r){let i=[];for(let o of Object.values(e)){let a=rI(o.options),s=iI(o.type,o.format),l={code:o.code,label:o.label,fieldType:o.type,optionOrder:a,sortKind:s,required:o.required,minValue:Ya(o.minValue),maxValue:Ya(o.maxValue),minLength:Ya(o.minLength),maxLength:Ya(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)&&!tI.has(o.type)};l.semantics=Q(l),i.push(l),o.fields&&i.push(...IR(o.fields,t,!0,o.type==="SUBTABLE"?o.code:r))}return i}var tI=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE","SUBTABLE"]);function nI(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 Ya(e){return e==null||e===""?void 0:e}function rI(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 iI(e,t){if(e==="NUMBER"||e==="RECORD_NUMBER")return"number";if(e==="CALC")return t==="NUMBER"||t==="NUMBER_DIGIT"?"number":"string"}function wR(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 oI="Filter aborted because of too many search results";function bR(e){return e?.includes(oI)===!0}var NR="/k/v1/records.json",ja="/k/v1/records/cursor.json",aI=4096,sI=2,ac=e=>kintone.api.url(e,!0);function lI(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(NR,t,!0),i={"X-Requested-With":"XMLHttpRequest"};return new TextEncoder().encode(r).byteLength<=aI?{url:r,init:{method:"GET",credentials:"include",headers:i}}:{url:ac(NR),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 Ui(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
|
|
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=II(e,n);if(!i){n++;continue}t.push(i),n=i.fullEnd}return t}function CR(e){let t=9e8;for(;e.has(t);)t++;return e.add(t),t}function LR(e,t="dev",n){let r=cc(e),i=r.some(g=>g.profile!==null),o=new Map,a=g=>g??t;for(let g of r){if(g.source!=="physical")continue;let y=a(g.profile),m=o.get(g.appId);m||(m=new Set,o.set(g.appId,m)),m.add(y.toLowerCase())}let s=new Set(r.filter(g=>g.source==="physical").map(g=>g.appId)),l=new Map;for(let g of r){if(g.source!=="logical")continue;let y=a(g.profile).toLowerCase(),m=`logical:${g.logicalName}@${y}`;if(l.has(m))continue;if(!n)throw new Error(`ArgumentError: logical app LAPP_${g.logicalName}@${y} requires logicalApps configuration.`);let A=n.resolveLogicalApp(g.logicalName,y);l.set(m,A),s.add(A)}let c=new Map,p=new Map;for(let[g,y]of o.entries()){let m=[...y].sort();if(!(m.length<=1))for(let A of m){let h=CR(s);c.set(`physical:${g}@${A}`,h),p.set(h,{source:"physical",mappedAppId:h,appId:g,profile:A})}}let u=[],d=[],f=0,R=0,E=(g,y,m,A)=>{if(!g&&y===m)return;let h=f;u.push(g),f+=g.length,d.push({normalizedStart:h,normalizedEnd:f,sourceStart:y,sourceEnd:m,...A===void 0?{}:{bindingMappedAppId:A}})};for(let g of r){let y=a(g.profile).toLowerCase(),m;if(g.source==="physical")m={source:"physical",mappedAppId:c.get(`physical:${g.appId}@${y}`)??g.appId,appId:g.appId,profile:y};else{let S=`logical:${g.logicalName}@${y}`,w=c.get(S);w===void 0&&(w=CR(s),c.set(S,w)),m={source:"logical",logicalName:g.logicalName,mappedAppId:w,appId:l.get(S),profile:y}}p.set(m.mappedAppId,m),E(e.slice(R,g.start),R,g.start);let A=e.slice(g.referenceValueEnd,g.appEnd),h=g.source==="physical"?`${e.slice(g.start,g.referenceValueStart)}${m.mappedAppId}${A}`:`APP${m.mappedAppId}${A}`;E(h,g.start,g.fullEnd,m.mappedAppId),R=g.fullEnd}return E(e.slice(R),R,e.length),{normalizedSql:u.join(""),hasProfileSyntax:i,appBindingByMappedApp:p,rewriteSegments:d}}var _R=new Set(["client","logicalApps","maxRecords","fetchParallel","cursorMaxActive"]),DR=new Set([..._R,"onLimitReached"]),wI=new Set([...DR,"variables","tempTableMaxRows"]);function vR(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new TypeError("options must be an object")}function Mi(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new RangeError(`${t} must be a positive safe integer`)}function UR(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 bI(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 kR(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=uc(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`);Mi(r,`logicalApps.${n}`),t[i]=r}return t}function MR(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)}`);if(e.maxRecords!==void 0&&Mi(e.maxRecords,"maxRecords"),e.fetchParallel!==void 0&&Mi(e.fetchParallel,"fetchParallel"),e.cursorMaxActive!==void 0&&(Mi(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.fetchParallel!==void 0?{fetchParallel:e.fetchParallel}:{},...e.cursorMaxActive!==void 0?{cursorMaxActive:e.cursorMaxActive}:{},...e.onLimitReached!==void 0?{onLimitReached:e.onLimitReached}:{}}}function pc(e,t){vR(e);let n=t==="run"?DR:_R;UR(e.client);let r=MR(e,n,t==="run"?"runQuery":"explainQuery"),i=kR(e.logicalApps);return{client:e.client,...i===void 0?{}:{logicalApps:i},executeOptions:r}}function FR(e){vR(e),UR(e.client),e.variables!==void 0&&bI(e.variables),e.tempTableMaxRows!==void 0&&Mi(e.tempTableMaxRows,"tempTableMaxRows");let t=MR(e,wI,"runBatch"),n=kR(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 za(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=>za(i,t,n)):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([i,o])=>[i,za(o,t,n)])):e}function NI(e,t,n){return e.slice(t,n)}function Fi(e,t,n){let r=cc(e),i=r.find(c=>c.profile!==null);if(i!==void 0)throw new Error(`ArgumentError: browser engine library does not support @profile suffixes (${NI(e,i.start,i.fullEnd)}).`);if(!r.some(c=>c.source==="logical"))return{sql:e,client:t,logicalBindings:[]};let o=LR(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 xi(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 Gi(e,t){if(t.length===0)return e;let n=new Map(t.map(r=>[r.mappedAppId,r]));return za(e,n,{logicalAppDisplay:"physical"})}function qa(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 PI(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,String(n)]))}function CI(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 Xa(e,t=e.metrics){let n=dE(e);return{type:"query",rows:e.rows.map(PI),columns:e.columns.map(r=>CI(r,n)),rowCount:e.rowCount,warnings:[...e.warnings??[]],...e.validateStats?{validateStats:e.validateStats}:{},metrics:qa(t)}}function xR(e,t={}){let n=new Gt(e).tokenize(),r=new Bt(n,t).parse();return ze(r),r}function GR(e,t={}){let n=new Gt(e).tokenize(),r=new Bt(n,t).parseStatements();return r.forEach(ze),r}function dc(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 BR(e){if(e instanceof se)return sr(e.message,e);let t=Tn(e);return t.code==="PARSE_ERROR"?t:sr("SQL statement could not be parsed",e)}function OI(e){if(e.trim()==="")throw sr("SQL statement is empty");try{return xR(e,{import:!0})}catch(t){let n=BR(t);throw n.message.includes("\u8907\u6587\u306F\u30D0\u30C3\u30C1\u5B9F\u884C API \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044")?sr("This API accepts one statement; use runBatch for multiple statements",t):n}}function KR(e){if(Hi(e)==="UNKNOWN")throw He("Unclassifiable statement is not allowed");return e}function $R(e){if(e.trim()==="")throw sr("SQL statement is empty");try{return GR(e,{import:!0})}catch(t){throw BR(t)}}function LI(e){let t=KR(e),n=t.type;if(n==="IMPORT")throw He("IMPORT is disabled by default in engine library queries");if(!Pn(t))throw He(`${n} statements are not read-only`);if(dc(t))throw He("APPLY statements are not allowed in engine library queries");if(!Tc(t))throw He(`${n} does not return rows; use runBatch for batch-scoped or non-row-returning read-only statements`)}function VR(e){let t=KR(e),n=t.type==="EXPLAIN"?t.query:t;if(n.type==="IMPORT")throw He("IMPORT is disabled by default in engine library batches");if(!Pn(n))throw He(`${n.type} statements are not read-only`);if(dc(n))throw He("APPLY statements are not allowed in engine library batches");if(Ot(n.type))throw He("DML VALIDATE ONLY statements are not supported by runBatch")}function WR(e){let t=OI(e);return LI(t),t}function HR(e){let t=$R(e);return t.forEach(VR),t}function YR(e){let t=e.trim(),n=$R(t);n.forEach(VR);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 _I(e){let t=e.error,n=t?.cause!==void 0?Tn(t.cause):new Pe("EXECUTION_ERROR",t?.message??`Statement ${e.index} failed`);return oc(n,e.index,e.type)}async function DI(e,t){let n=[],r=[];try{let i=FR(t),o=Fi(e,i.client,i.logicalApps);r=o.logicalBindings,n=HR(o.sql);let a=await ur(o.client,p=>hE(o.sql,lr(p),{...i.executeOptions,captureColumnMeta:!0})),s=a.statements.find(p=>p.status==="error");if(s!==void 0)throw _I(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=Xa(p.result,a.metrics);l.push(n[p.index]?.type==="EXPLAIN"?Gi(d,r):d)}return u});return{type:"batch",batch:!0,statementCount:a.statementCount,statements:c,results:l,warnings:[]}}catch(i){throw xi(Va(i,n),r)}}function jR(e){if(e===null||typeof e!="object"||e.type!=="SELECT")throw new Error("Engine returned a non-SELECT result")}async function vI(e,t){let n=[];try{let r=pc(t,"run"),i=Fi(e,r.client,r.logicalApps);n=i.logicalBindings;let a=WR(i.sql).type==="VALIDATE"?{...r.executeOptions,onLimitReached:"error"}:r.executeOptions,s=await ur(i.client,l=>Pu(i.sql,lr(l),{...a,captureColumnMeta:!0}));return jR(s),Xa(s)}catch(r){throw xi(Tn(r),n)}}async function UI(e,t){let n=[],r=[];try{let i=pc(t,"explain"),o=Fi(e,i.client,i.logicalApps);r=o.logicalBindings;let a=YR(o.sql);if(n=a.statements,a.legacySql!==void 0){let p=await ur(o.client,f=>Pu(a.legacySql,lr(f),i.executeOptions));jR(p);let u=Gi(p.rows.map(f=>String(f.plan??"")),r),d=nc(p)??{statements:[{index:0,fetch:"none",sources:[]}]};return{type:"explain",lines:u,text:u.join(`
|
|
16
|
-
`),plan:d,metrics:
|
|
17
|
-
`),plan:c,metrics:
|
|
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 NT(e){if(e.unappliedKlikes.length>0)throw new Error(`UnsupportedError: ${bT}`)}async function PT(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=$l(e.where,{fieldTypes:s,fieldOptions:l});NT(c);let p=c.prefilter===null?"":Y(c.prefilter),u=new Set(qo(e,r));for(let R of CT(e.where))u.add(R);let d=await OT(e.appId,e.where,a,t,i);return(await De(t.getRecords,e.appId,p,[...u],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1,onLimit:"error"})).map(R=>({snapshot:R,row:Pt(R,null)})).filter(({row:R})=>oe(e.where,R,d.fieldTypeResolver,c.appliedKlikes,d.fieldSemanticsResolver)).map(({snapshot:R})=>R)}function CT(e){return Zu(e)}async function OT(e,t,n,r,i){let s=[...LT(t)].some(p=>n.get(p)?.fieldType==="STATUS")?await Rc(e,r,i):void 0;return{fieldTypeResolver:p=>p.field==="$id"?"NUMBER":n.get(p.field)?.fieldType,fieldSemanticsResolver:p=>{if(p.field==="$id")return $n(X({fieldType:"__ID__"}),e,"$id");let u=n.get(p.field);if(!u)return;let d=u.semantics??X(u),f=u.fieldType==="STATUS"&&s?{...d,optionOrder:s}:d;return $n(f,e,u.code)}}}function LT(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 _T(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]:[...ut(n,e.fields).payloadFields,...jr],a=t.guards.parentRows,s=Dl(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:Pi(l),guards:Ci(l),deletedRows:{total:0,parentRows:0},diagnostic:s};return Cn.set(c,rs(o,n,e.appId)),c}function DT(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]:[...ut(n,e.assignments.map(c=>c.field)).payloadFields,...jr],s=Jr(t),l={type:"VALIDATION",operation:"UPDATE",validatedRows:t.guards.parentRows,validRows:t.guards.parentRows-o,invalidRows:o,errorCount:i.length,columns:a,errors:i,...e.validationErrorTable?{errTable:e.validationErrorTable}:{},apply:Pi(s.branches[0]),guards:Ci(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 Cn.set(l,rs(a,n,e.appId)),l}function vT(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??[...ut(n,e.fields).payloadFields,...jr],l=vl(t),c=l.branches.find(R=>R.branch==="insert"),p=l.branches.find(R=>R.branch==="update"),u=Pi(c),d=Pi(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:Ci(c)},update:{apply:d,guards:Ci(p)}},deletedRows:{total:t.update.plans.reduce((R,E)=>R+E.tables.reduce((g,y)=>g+y.deletedRows,0),0),parentRows:t.update.plans.filter(R=>R.tables.some(E=>E.deletedRows>0)).length},diagnostic:l};return Cn.set(f,rs([...s],n,e.appId)),f}function Pi(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:Sn(t,"REMOVE")}:{field:t.field,operations:n,changedSubtableRows:0,deletedRows:0,multiValue:{fieldType:t.fieldType??"UNKNOWN",addedValues:Sn(t,"ADD"),removedValues:Sn(t,"REMOVE_VALUE"),changedValues:t.changedCount??0,postImages:t.postImages??[]}}})}function Ci(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 vt=100,Ne=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:X({fieldType:"RECORD_NUMBER"})});continue}let s=r.get(a);if(s){o.set(a,ve(s,n));continue}o.set(a,J(i.has(a)?"number":"string"))}return o}async function UT(e,t,n,r,i,o){let a=await ER(e,t,n,r,i,o),s=await Oe(e.appId,n,i),l=pl(e,a,s),c=e.assignments.map(d=>d.field),p=await Q(e.appId,n,i),u=await Dt(e.appId,c,p,n,i);if(Nn(l.flatMap(d=>d.records.map(f=>f.record)),c,p,u),r.confirm&&!await r.confirm(a.length,"UPDATE"))throw new fe("UPDATE",a.length);for(let d of l)await n.putRecords(d);return{type:"UPDATE",updatedCount:a.length}}function kT(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 MT(e,t,n,r){if(await ir(e,t,r),Lt(e.where))return{type:"DELETE",deletedCount:0};if(e.subtableCode)return KT(e,t,n,r);let i=Ud(e),a=(await la(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 fe("DELETE",a.length);let s=kd(e.appId,a);for(let l of s)await t.deleteRecords(l);return{type:"DELETE",deletedCount:a.length}}async function FT(e,t,n,r){if(e.onInsertApplyBlocks?.length||e.onUpdateApplyBlocks?.length)return iT(e,t,n,r);if(e.checkGroups?.length)return Mi(e,t,n,r);let i=await at(e.appId,e.fields,t,r),o=await Dt(e.appId,e.fields,i,t,r),a=[],s=[],l=await Oe(e.appId,t,r),c=mR(e),p=await Ui(e.appId,e.keyFields,c,t,n,l);if(e.values.forEach((d,f)=>{let R={};e.fields.forEach((g,y)=>{let m=d[y];m.type==="CASE_VALUE"?R[g]={value:zt(m.expr,{},l.get(g))}:R[g]={value:wt(m,l.get(g))}});let E=vi(p,c[f]);E!==void 0?s.push({id:E,record:R}):a.push(R)}),Nn([...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 fe("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 mR(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"?j(i):i.type==="CASE_VALUE"?Me(i.expr,{}):i.elements.map(o=>o.value).join(",")}))}async function Sc(e,t,n,r){if(t.length===0)return;let i=await Oe(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 xT(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 De(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),s=is(a),l=new Map;for(let p of e.values){let u=bE(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,g)=>{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:bE(p[g])}}});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=[...Fi(d,i),...u];c.push(AR(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 GT(e,t,n,r){let i=e.subtableCode;if(!mi(e.where))throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB UPDATE \u306B\u306F _rid \u6761\u4EF6\u304C\u5FC5\u9808\u3067\u3059");let o=[];Ot(e.where,o);for(let d of e.assignments)d.value.type==="CASE_VALUE"&&Ya(d.value.expr,o);let a=await Sc(e.appId,o,t,r),s=await De(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),c=Tc(s,i).filter(d=>oe(e.where,d.flat,a));if(n.confirm&&!await n.confirm(c.length,"UPDATE"))throw new fe("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:jo(E.value,d.flat,a)}}f.set(d.rowId,R)}let u=is(s);for(let[d,f]of p.entries()){let R=u.get(d);if(!R)continue;let g=Fi(R,i).map(y=>{let m=y.id??"";if(!m)return y;let h=f.get(m);return h?{id:m,value:h}:{id:m}});await t.putRecords(BT(e.appId,d,xi(R),i,g))}return{type:"UPDATE",updatedCount:c.length}}async function KT(e,t,n,r){let i=e.subtableCode;if(!mi(e.where))throw new Error("\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB DELETE \u306B\u306F _rid \u6761\u4EF6\u304C\u5FC5\u9808\u3067\u3059");let o=[];Ot(e.where,o);let a=await Sc(e.appId,o,t,r),s=await De(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),c=Tc(s,i).filter(d=>oe(e.where,d.flat,a));if(n.confirm&&!await n.confirm(c.length,"DELETE"))throw new fe("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=is(s);for(let[d,f]of p.entries()){let R=u.get(d);if(!R)continue;let E=Fi(R,i),g=new Set(f),y=E.filter((m,h)=>!g.has(h));await t.putRecords(AR(e.appId,d,xi(R),i,y))}return{type:"DELETE",deletedCount:c.length}}function is(e){let t=new Map;for(let n of e){let r=String(n.$id?.value??"");r&&t.set(r,n)}return t}function Tc(e,t){let n=[];for(let r of e){let i=String(r.$id?.value??""),o=xi(r),a=Fi(r,t);for(let s=0;s<a.length;s++){let l=a[s],c={...zo(l,s),_pid:i};for(let[p,u]of Object.entries(r))p!==t&&(c[`_p.${p}`]=$u(u?.value));n.push({parent:r,parentId:i,parentRevision:o,rowIndex:s,rowId:l.id??"",row:l,flat:c})}}return n}function Fi(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 AR(e,t,n,r,i){return{app:e,records:[{id:Number(t),revision:n,record:{[r]:{value:i}}}]}}function BT(e,t,n,r,i){return{app:e,records:[{id:Number(t),revision:n,record:{[r]:{value:i}}}]}}function $T(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 bE(e){return e.type==="STRING"?e.value:e.type==="NUMBER"?j(e):e.type==="CASE_VALUE"?Me(e.expr,{}):e.elements.map(t=>t.value).join(",")}function $u(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 mi(e){switch(e.type){case"BINARY":return e.left.type==="FIELD"&&e.left.tableAlias===null&&e.left.field==="_rid";case"LOGICAL":return mi(e.left)||mi(e.right);case"NOT":case"GROUP":return mi(e.expr);default:return!1}}async function VT(e,t,n,r){let i=[];Ot(e.where,i);let o=await Sc(e.appId,i,t,r),a=await Q(e.appId,t,r);if(Lt(e.where))return{type:"REORDER",reorderedParentCount:0};let s=new Map(a.map(f=>[f.code,f.semantics??X(f)])),l=f=>{if(f.field==="_idx"||f.field==="_pid"||f.field==="_rid")return K("number");let R=f.field.startsWith("_p.")?f.field.slice(3):f.field;return s.get(R)??K("string")},c=await De(t.getRecords,e.appId,"",[],{maxRecords:n.maxRecords??1e4,parallel:n.fetchParallel??1}),p=Tc(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&&oe(e.where,f.flat,o,void 0,l)).map(f=>f.parentId));if(n.confirm&&!await n.confirm(u.size,"UPDATE"))throw new fe("UPDATE",u.size);let d=is(c);for(let f of u){let R=d.get(f);if(!R)continue;let g=Fi(R,e.subtableCode).map((m,h)=>({row:m,i:h,flat:WT(R,e.subtableCode,m,h)}));g.sort((m,h)=>HT(m.flat,h.flat,e.by,l));let y=g.map(m=>m.row.id??"");await t.putRecords($T(e.appId,f,xi(R),e.subtableCode,y))}return{type:"REORDER",reorderedParentCount:u.size}}function WT(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}`]=$u(a?.value));for(let[o,a]of Object.entries(n.value??{}))i[o]=$u(a?.value);return i}function HT(e,t,n,r){for(let i of n){let o=NE(i.key,e),a=NE(i.key,t),s=i.key.type==="FIELD_NAME"?r(xe(i.key.name)):i.key.type==="ARITH_KEY"?K("number"):i.key.type==="FUNC_KEY"?In(i.key.expr).semantics??K("string"):K("number"),l=Ze(o,a,s??K("string"));if(l!==0)return i.direction==="ASC"?l:-l}return 0}function NE(e,t){switch(e.type){case"FIELD_NAME":return t[e.name]??"";case"ARITH_KEY":return String(ce(e.expr,t));case"FUNC_KEY":return pe(e.expr,t);case"GROUPING_KEY":throw new Error("ArgumentError: GROUPING() is not supported in REORDER BY.")}}async function Ic(e,t,n,r,i){if(e.checkGroups?.length)return Mi(e,t,n,r,i);let o=await at(e.appId,e.fields,t,r),a=await Dt(e.appId,e.fields,o,t,r),s=await Ac.materialize(e,t,n,r,i,o),{rows:l,columns:c}=s;if(gR(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 Oe(e.appId,t,r),f=l.map((y,m)=>{let h={};return e.fields.forEach((A,b)=>{if(s.importPresence&&!s.importPresence[m]?.has(A))return;let w=y[c[b]]??"";h[A]={value:pR(w,d.get(A))}}),h});f.forEach(y=>Nn([y],e.fields.filter(m=>m in y),o,a));let R=f.map(y=>e.keyFields.map(m=>String(y[m]?.value??"")));if(Xa.has(e)){let y=e.keyFields.map(h=>d.get(h)==="NUMBER"),m=new Set;for(let h of R){let A=bn(h,y);if(m.has(A))throw new Error("ERR_KEY_DUP_SOURCE: UPSERT \u30BD\u30FC\u30B9\u5185\u3067\u30AD\u30FC\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059");m.add(A)}}let E=await Ui(e.appId,e.keyFields,R,t,n,d);if(f.forEach((y,m)=>{let h=vi(E,R[m]);h!==void 0?u.push({id:h,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 fe("UPDATE",y)}let g=[];for(let y=0;y<p.length;y+=100){let m=await t.postRecords({app:e.appId,records:p.slice(y,y+100)});g.push(m.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:g.flat().length,updatedCount:u.length}}var hR=Object.freeze(["\u30A2\u30D7\u30EAID","\u30A2\u30D7\u30EA\u540D","\u8AAC\u660E"]),SR=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 TR(e){let t=await e.getApps(),n=[...hR],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 IR(e,t,n){let r=await Q(e.appId,t,n),i=[...SR],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 YT(e,t=!1){try{let n=new Yt(e).tokenize(),r=new jt(n,{import:t}).parse();return Fn("phase15b",r),Qe(r),r}catch(n){throw n instanceof Ce||n instanceof I,n}}async function Oi(e,t,n,r,i){let o=[];Ba(e,t,n,r,o,i),await Promise.all(o)}async function wR(e,t,n,r,i){let o=[];for(let a of e.columns)if(a.type==="CASE_COL")for(let s of a.expr.branches)o.push(Oi(s.condition,t,n,r,i));await Promise.all(o)}function Ai(e,t,n,r,i){return i!==void 0&&i.size>0?_t(e,t,n,i,r):Qt(e,t,n,r)}function Ba(e,t,n,r,i,o){if(e!==null)switch(e.type){case"BINARY":{let a=e.right;a.type==="SUBQUERY_IN_LIST"&&i.push(Ai(a.query,t,n,r,o).then(s=>{let l=a.column??s.columns[0]??"";a.resolved=new Set(s.rows.map(c=>c[l]??""))})),a.type==="SCALAR_SUBQUERY"&&i.push(Ai(a.query,t,n,r,o).then(s=>{if(s.rowCount===0)throw new Error("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u5024\u3092\u8FD4\u3057\u307E\u305B\u3093\u3067\u3057\u305F");if(s.rowCount>1)throw new Error("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u8907\u6570\u884C\u3092\u8FD4\u3057\u307E\u3057\u305F\uFF081\u884C\u306E\u307F\u8A31\u53EF\uFF09");let l=s.columns[0]??"";a.resolved=s.rows[0]?.[l]??""}));break}case"LOGICAL":Ba(e.left,t,n,r,i,o),Ba(e.right,t,n,r,i,o);break;case"NOT":case"GROUP":Ba(e.expr,t,n,r,i,o);break;case"EXISTS":{let a=e;i.push(Ai(a.query,t,n,r,o).then(s=>{a.resolved=s.rowCount>0}));break}case"BOOLEAN":break}}async function bR(e,t,n,r){for(let i of e){if(i.value.type!=="SCALAR_SUBQUERY")continue;let o=await Qt(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 NR(e,t,n,r,i){let o=new Map,a=[];for(let c=0;c<e.length;c++){let p=e[c];if(p.type!=="SCALAR_SUBQUERY_COL")continue;let u=JSON.stringify(p.query),d=o.get(u);d||(d=Ai(p.query,t,n,r,i).then(f=>{if(f.rowCount===0)throw new Error("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u5024\u3092\u8FD4\u3057\u307E\u305B\u3093\u3067\u3057\u305F");if(f.rowCount>1)throw new Error("\u30B9\u30AB\u30E9\u30FC\u30B5\u30D6\u30AF\u30A8\u30EA\u304C\u8907\u6570\u884C\u3092\u8FD4\u3057\u307E\u3057\u305F\uFF081\u884C\u306E\u307F\u8A31\u53EF\uFF09");let R=f.columns[0]??"";return f.rows[0]?.[R]??""}),o.set(u,d)),a.push([c,d])}let s=await Promise.all(a.map(([,c])=>c)),l=new Map;return a.forEach(([c],p)=>l.set(c,s[p])),l}var PR=new WeakMap,CR=new WeakMap,OR=new WeakMap,Vu=new WeakMap,LR=new WeakMap,_R=new WeakMap;async function DR(e,t,n,r=1e4,i,o){let a=new Set,s=new Set,l=new Set,c={...t,getFields:async w=>(a.add(w),t.getFields(w)),getProcessStatuses:async w=>(s.add(w),t.getProcessStatuses(w)),getNumberPrecision:async w=>(l.add(w),t.getNumberPrecision(w))},p=new Map,u=new Map,d=new Map,f=new Set,R=i??await _i(e,c,n),E=w=>R.nodes.find(P=>P.source===w||JSON.stringify(P.source)===JSON.stringify(w)),g=new Map(o??[]),y=new Set(o?.keys()??[]),m=async w=>{let P=[w.from,...w.joins.map(L=>L.table)];if(P.length>1&&w.columns.some(L=>L.type==="WILDCARD"||L.type==="PARENT_WILDCARD"))throw new Error("ArgumentError: EXPLAIN could not determine the relation output schema for a multi-source wildcard SELECT.");let T=[];for(let L of P){if(L.cteName!==null){if(L.cteName===Je)continue;let _=g.get(L.cteName);if(!_)throw new Error(`ArgumentError: EXPLAIN could not determine the relation output schema for ${L.cteName}.`);T.push(..._.columns);continue}let N=await Q(L.appId,c,n);L.subtableCode?(T.push(...N.filter(_=>_.inSubtable&&(_.subtableCode===L.subtableCode||_.subtableCode===void 0)).map(_=>_.code)),T.push("_pid","_rid","_idx"),T.push(...N.filter(_=>!_.inSubtable).map(_=>`_p.${_.code}`))):(T.push(...N.filter(_=>!_.inSubtable).map(_=>_.code)),T.push(...io))}return[...new Set(T)]},h=async w=>{if(w===null||typeof w!="object")throw new Error("ArgumentError: EXPLAIN could not determine the relation output schema.");let P=w;if(P.type==="SELECT"){let T=w,L=await m(T);if(T.columns.length===1&&T.columns[0].type==="WILDCARD")return L;let N=[];for(let _ of T.columns)_.type==="WILDCARD"?N.push(...L):_.type==="PARENT_WILDCARD"?N.push(...L.filter(F=>F.startsWith("_p."))):N.push(...nr([],[_]).columns);return N}if(P.type==="UNION")return h(P.left);if(P.type==="SHOW_APPS")return[...hR];if(P.type==="DESCRIBE")return[...SR];if(P.type==="GENERATE_SERIES")return[w.columnAlias];throw new Error("ArgumentError: EXPLAIN could not determine the relation output schema.")},A=async w=>{if(w===null||typeof w!="object")return;if(Array.isArray(w)){for(let T of w)await A(T);return}let P=w;if(P.type==="WITH"){let T=w;for(let L of T.ctes){if(await A(L.query),L.query.type==="GENERATE_SERIES"){let _=lR(L.query);g.set(L.name,{rows:_.rows,columns:_.columns,columnMeta:ge.get(_),uniqueGeneratedColumn:L.query.columnAlias}),y.add(L.name);continue}let N=await h(L.query);g.set(L.name,{rows:[],columns:N})}await A(T.query);return}if(P.type==="UNION"){await A(P.left),await A(P.right);return}if(P.type==="SELECT"){let T=w;for(let N of T.columns)N.type==="SCALAR_SUBQUERY_COL"&&await A(N.query);await A(T.where),await A(T.having),await Ii(T,c,n,g);let L=await Si(T,c,n,g);L&&d.set(T,L);return}for(let T of Object.values(P))await A(T)};await A(e);let b=async w=>{if(w===null||typeof w!="object"||f.has(w))return;if(f.add(w),Array.isArray(w)){await Promise.all(w.map(b));return}let P=w;if(P.type==="SELECT"){let T=w;await Ii(T,c,n);let L=[T.from,...T.joins.map(v=>v.table)].some(v=>v.cteName!==null);if(Z(T).type==="PLAIN"&&!L){let v=await Si(T,c,n);v&&d.set(T,v)}let N=[T.from,...T.joins.map(v=>v.table)].filter(v=>v.cteName===null).map(v=>v.appId);(dt(T.where)||T.orderBy.length>0||T.columns.some(v=>v.type==="WINDOW_COL"&&v.orderBy.length>0))&&N.forEach(v=>a.add(v));let{resolver:F,rewrites:D}=await An(T,c,n);D.length>0&&Vu.set(T,D);let M=ye(T.where,F),S=E(T);if(M.capability==="UNSUPPORTED"&&!S)throw new Error(`ArgumentError: WHERE predicate is unsupported (${hn(M)}).`);p.set(T,M);let O=await Za(T,c,n),C=oc.get(T)??Qa(T,O);C&&PR.set(T,C);let x=C??sn(T,O);CR.set(T,x);let H=new Map;for(let v of T.joins){let U=v.table.alias;if(v.type!=="INNER"||!U||v.table.subtableCode)continue;let W=v.on.left.tableAlias,V=v.on.right.tableAlias;if(!W||!V)continue;let $=W===U&&V!==U?V:V===U&&W!==U?W:void 0,G=W===U?v.on.right.field:v.on.left.field,ae=W===U?v.on.left.field:v.on.right.field;if(!$)continue;let Ee=[T.from,...T.joins.map(_e=>_e.table)].find(_e=>be(_e)===$),Ut=(await Q(v.table.appId,c,n)).find(_e=>_e.code===de(v.table,ae)),Yi=Ut?ve(Ut,v.table.appId):it(ae),ie,en,kc,Mc;if(Ee?.cteName!==null&&Ee?.cteName!==void 0){let _e=g.get(Ee.cteName);ie=_e?.columnMeta?.get(G),y.has(Ee.cteName)&&_e&&(kc=_e.rows.length,en=_e.rows.map(mt=>fc(mt[G])),Mc=en.some(mt=>mt.length===0))}else if(Ee){let _e=(await Q(Ee.appId,c,n)).find(mt=>mt.code===de(Ee,G));ie=_e?ve(_e,Ee.appId):it(G)}let ji=xl({fieldType:Yi?.fieldType,sourceSemantics:ie?.semantics,sourceRowCount:kc,values:en,hasEmptyValue:Mc,maxInKeys:Ga});if(ji.kind==="FALLBACK"&&ji.reason==="JOIN_KEY_VALUES_RUNTIME"&&(C?.joinPlan.items.some(mt=>mt.targetAlias===U)||C?.joinPlan.serverFunctionConsumptions.some(mt=>mt.targetAlias===U)))continue;let Eg=Fl(ji,ae,wi),Fc=x.joinConditions.get(U),Rg=Fc?Y(Fc):void 0,gg=x.joinRelations.get(U);H.set(U,{plan:ji,queries:Eg,additionalQuery:Rg,additionalRelation:gg})}if(H.size>0&&OR.set(T,H),T.orderBy.length>0||T.columns.some(v=>v.type==="WINDOW_COL"&&v.orderBy.length>0)){let v=await bi(T,c,n);if(T.orderMode!=="KINTONE_NATIVE")for(let U of v.semantics.values())U.fieldType==="STATUS"&&U.source&&s.add(U.source.appId);if(Wa(T)&&!L&&S?.allowed!==!1){let U=M.capability==="EXACT_PUSHDOWN"?Be(T):"FULL_SCAN";u.set(T,(T.orderMode==="KINTONE_NATIVE"?ei:Zr)({stmt:T,staticMode:U,whereCapability:M.capability,whereReasons:M.reasons,orderSemantics:v.semantics,maxRecords:r,hasKlike:Se(T.where)}))}}}else if(P.type==="VALIDATE"){let T=w;a.add(T.appId);let L=await Q(T.appId,c,n),N=new Map(L.filter(v=>!v.inSubtable).map(v=>[v.code,v])),_=new Set(L.filter(v=>v.inSubtable).map(v=>v.code)),F=Cl(T,L),D=jn(T.checkGroups??[]),M=Zu(T.where);for(let v of D){if(v.field!=="$id"&&!N.has(v.field)&&!_.has(v.field))throw Ie(`CHECK \u306E\u30D5\u30A3\u30FC\u30EB\u30C9 ${v.field} \u306F APP${T.appId} \u306B\u5B58\u5728\u3057\u307E\u305B\u3093`);if(v.field!=="$id"&&!N.has(v.field)&&_.has(v.field))throw new Error(`ArgumentError: VALIDATE \u306E CHECK \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${v.field} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}for(let v of M){if(v!=="$id"&&!N.has(v)&&!_.has(v))throw new Error(`ArgumentError: WHERE field ${v} does not exist in APP${T.appId}.`);if(v!=="$id"&&!N.has(v)&&_.has(v))throw new Error(`ArgumentError: VALIDATE \u306E WHERE \u3067\u306F\u30B5\u30D6\u30C6\u30FC\u30D6\u30EB\u5B50\u30D5\u30A3\u30FC\u30EB\u30C9 ${v} \u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093\u3002`)}let S=new Map([...N].map(([v,U])=>[v,U.fieldType]));S.set("$id","RECORD_NUMBER"),Pn(T,S);let O=ye(T.where,v=>v.field==="$id"?X({fieldType:"__ID__"}):N.get(v.field)?.semantics??(N.has(v.field)?X(N.get(v.field)):void 0));if(O.capability==="UNSUPPORTED")throw new Error(`ArgumentError: WHERE predicate is unsupported (${hn(O)}).`);let k=new Map([...N].map(([v,U])=>[v,U.fieldType])),C=new Map([...N.values()].flatMap(v=>v.optionOrder?[[v.code,new Set(Object.keys(v.optionOrder))]]:[])),x=T.where===null?null:O.capability==="EXACT_PUSHDOWN"?T.where:$s(T.where,{allowUnqualifiedFields:!0,fieldTypes:k,fieldOptions:C,allowKlike:!1}),H=F.some(v=>v.field.fieldType==="NUMBER");H&&(l.add(T.appId),await yt(T.appId,c,n)),LR.set(T,{targetFields:F.map(v=>v.subtableCode?`${v.subtableCode}(${v.field.code})`:v.field.code),fetchFields:[...new Set(["$id",...F.map(v=>v.subtableCode??v.field.code),...M,...D.map(v=>v.field)])],subtables:new Map([...new Set(F.flatMap(v=>v.subtableCode?[v.subtableCode]:[]))].map(v=>[v,F.filter(U=>U.subtableCode===v).length])),capability:O,prefilter:x,numberPrecision:H})}else if(P.type==="UPDATE"||P.type==="DELETE"){if(a.add(w.appId),P.type==="UPDATE"&&w.applyBlocks?.length){let L=w,N=await Q(L.appId,c,n);if(bt(L,N),qa(L)){let _=N.filter(D=>!D.inSubtable),F=$l(L.where,{fieldTypes:new Map(_.map(D=>[D.code,D.fieldType])),fieldOptions:new Map(_.flatMap(D=>D.optionOrder?[[D.code,new Set(Object.keys(D.optionOrder))]]:[]))});_R.set(L,F)}}let T=w;(T.type!=="UPDATE"||!qa(T))&&E(T)?.allowed!==!1&&await ir(T,c,n)}await Promise.all(Object.values(P).map(b))};if(await b(e),typeof e=="object"&&e!==null&&e.type==="WITH"&&Kt(e)){let w=Bt(e),{resolver:P,rewrites:T}=await An(w,c,n);T.length>0&&Vu.set(w,T);let L=ye(w.where,P),N=E(w);if(L.capability==="UNSUPPORTED"&&!N)throw new Error(`ArgumentError: WHERE predicate is unsupported (${hn(L)}).`);if(p.set(w,L),Wa(w)&&N?.allowed!==!1){let _=await bi(w,c,n);u.set(w,(w.orderMode==="KINTONE_NATIVE"?ei:Zr)({stmt:w,staticMode:L.capability==="EXACT_PUSHDOWN"?Be(w):"FULL_SCAN",whereCapability:L.capability,whereReasons:L.reasons,orderSemantics:_.semantics,maxRecords:r,hasKlike:Se(w.where)}))}}return{capabilities:p,orderPlans:u,plainGroupByPlans:d,fieldApps:a,processStatusApps:s,numberPrecisionApps:l,relativeDatePlan:R}}function Wu(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 jT(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 PE(e){return e==="<>"?"!=":e}function rt(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(rt).join(", ")})`;case"FUNC_FIELD":case"ARITH_FIELD":case"CASE_FIELD":case"ARITH_VALUE":case"CASE_VALUE":return rt(t.expr);case"GROUPING_FIELD":return`GROUPING(${rt(t.ref)})`;case"GROUPING_REF":return rt(t.field);case"ARITH":case"SCALAR_ARITH":case"CONCAT_OP":return`(${rt(t.left)} ${typeof t.op=="string"?t.op:t.type==="CONCAT_OP"?"||":"<op>"} ${rt(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(rt).join(", ")})`:"<expr>";case"ARRAY":return Array.isArray(t.elements)?`[${t.elements.map(rt).join(", ")}]`:"<expr>";case"CASE":case"CASE_WHEN":return"CASE ... END";default:return"<expr>"}}function yn(e){try{let t=e;switch(t.type){case"BINARY":return`${rt(t.left)} ${jT(t.op)} ${rt(t.right)}`;case"NULL_CHECK":return`${rt(t.field)} IS ${t.not===!0?"NOT ":""}NULL`;case"LOGICAL":return`(${yn(t.left)} ${t.op==="AND"||t.op==="OR"?t.op:"<op>"} ${yn(t.right)})`;case"NOT":return`NOT (${yn(t.expr)})`;case"GROUP":return`(${yn(t.expr)})`;case"BOOLEAN":return t.value===!0?"TRUE":t.value===!1?"FALSE":"<expr>";default:return"<expr>"}}catch{return"<expr>"}}function Hu(e){if(!e.hasServerOnlyWhereFunction)return[];if(!e.allowed&&e.rejection){let n=te(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?qT(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=Su(l),p=l.left.type==="FIELD"?l.left.field:"(unknown)";t.push(` ${hu(c)}: ${c}`,` ${Tu(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)":yn(r.residualWhere)}`),r.adoptedServerFunctionOccurrences.some(te)&&t.push(" relative date client evaluations: 0"),r.adoptedServerFunctionOccurrences.some(s=>!te(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=Su(s),c=s.left.type==="FIELD"?s.left.field:void 0,p=PE(s.op),u=n.capability?.reasons.find(d=>d.functionName===l&&(c===void 0||d.field===c)&&d.operator===p);t.push(` ${hu(l)}: ${l}`,` ${Tu(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)",` ${CE(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=Su(s),c=s.left.type==="FIELD"?s.left.field:void 0,p=PE(s.op),u=n.capability?.reasons.find(d=>d.functionName===l&&(c===void 0||d.field===c)&&d.operator===p);t.push(` ${hu(l)}: ${l}`,` ${Tu(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: ${yn(o.residualWhere)}`,` ${CE(o.exactRelativeLeaves)}: 0`,` kintone query: ${a}`);continue}for(let a of n.functionNames){let s=n.capability?.reasons.find(l=>l.functionName===a);if(!te(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 qT(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 hu(e){return te(e)?"relative date function":"kintone function"}function Su(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 Tu(e){return te(e)?"relative date evaluation":"kintone function evaluation"}function CE(e){return e.every(t=>t.right.type==="KINTONE_FUNC"&&te(t.right.name))?"relative date client evaluations":"kintone function client evaluations"}var vR=Symbol("ksql.explainFetchPlan");function wc(e){return e[vR]}function UR(e,t){e[vR]=t}async function kR(e,t,n,r="batch-explain",i=1e4,o=2,a=!1,s=100,l=Ne,c=!0){let p=ju(r);try{let u=ec(e,a),d=Qs(u),f=Ul(u,n),R=KE(u,f),E=new Map,g=[],y=[];for(let h=0;h<u.length;h++){let A=u[h],b=A.type==="SET_VARIABLE"?A.expr.type==="SCALAR_SUBQUERY"?{...A,expr:Va(A.expr,E)}:A:Va(A,E);Qe(b);let w=await _i(b,t,p),P=c?await DR(b,t,p,i,w):{capabilities:new Map,orderPlans:new Map,plainGroupByPlans:new Map,fieldApps:new Set,processStatusApps:new Set,numberPrecisionApps:new Set,relativeDatePlan:w},T={sources:[]},L=w.hasServerOnlyWhereFunction&&!w.allowed?Hu(w):[...Hu(w),...MR(zT(b,d.statements[h],P.capabilities,P.orderPlans,s,l,T),o)],N=Wu(P);g.push({index:h,type:d.statements[h].statementType,plan:L.length===0?N:[L[0],...N,...L.slice(1)]}),y.push({index:h,fetch:bc(T.sources),sources:T.sources}),(A.type==="SET_VARIABLE"||A.type==="DECLARE_VARIABLE")&&E.set(A.name,A.type==="DECLARE_VARIABLE"&&A.annotation==="RELATIVE_DATE"?{type:"relative-date",value:R.get(A.name)}:A.type==="SET_VARIABLE"&&A.expr.type==="ARRAY"?{type:"array",elements:A.expr.elements.map(_=>({type:"string",value:_.value}))}:{type:"string",value:`@${A.name}`,placeholder:!0})}let m={statementCount:u.length,statements:g};return UR(m,{statements:y}),m}finally{Ec(p)}}function zT(e,t,n,r,i=100,o=Ne,a={sources:[]}){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",` rows: \u5B9F\u4F53\u5316\u524D\u306E\u305F\u3081\u4E0D\u660E\uFF08\u65E2\u5B9A\u4E0A\u9650 ${je} \u884C\u3001tempTableMaxRows \u3067\u5909\u66F4\u53EF\u3001\u8D85\u904E\u306F\u30A8\u30E9\u30FC\uFF09`,...fi(e.query,t,n,r,a,"main").map(s=>` ${s}`)];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 s=za(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:",...fi(e.expr.query,s,n,r,a).map(l=>` ${l}`)]}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 fi(e.query,t,n,r,a);if(e.type==="ASSERT"){let s=[`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"],l=[e.left,e.right,e.low,e.high].filter(c=>c!==null&&c.type==="SCALAR_SUBQUERY");return l.forEach((c,p)=>{s.push(l.length>1?` subquery[${p+1}]:`:" subquery:");let u=za(c.query)?t:{...t,tempTablesReferenced:[]};s.push(...fi(c.query,u,n,r,a).map(d=>` ${d}`))}),s}return e.type==="UPDATE"&&(e.applyBlocks?.length??0)>0?os(e,void 0,n,r,i,o):fi(e,t,n,r,a)}function za(e){if(Array.isArray(e))return e.some(za);if(e!==null&&typeof e=="object"){let t=e,n=t.cteName;return typeof n=="string"&&n.startsWith("#")?!0:Object.values(t).some(za)}return!1}function fi(e,t,n,r,i={sources:[]},o="main"){if(t.tempTablesReferenced.length===0)return os(e,void 0,n,r,100,Ne,1e4,void 0,!0,i,o);let a=[];e.type==="INSERT_SELECT"?a.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"&&a.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`),a.push(" mode: FULL_SCAN\uFF08\u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u53C2\u7167\uFF09"),a.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 s=t.appIds.filter(l=>e.type!=="INSERT_SELECT"&&e.type!=="UPSERT_SELECT"||l!==e.appId);return s.length>0&&a.push(` app: ${s.map(l=>`APP${l}`).join(", ")}`),a.push(" note: \u4E00\u6642\u30C6\u30FC\u30D6\u30EB\u3078\u306E WHERE \u30D7\u30C3\u30B7\u30E5\u30C0\u30A6\u30F3\u306F\u884C\u308F\u308C\u306A\u3044"),a}var Yu=new WeakMap;async function JT(e,t,n,r,i,o=100,a=Ne,s){let l=s??await _i(e.query,t,n),c=await DR(e.query,t,n,r,l,Yu.get(e)),p={sources:[]},u=Hu(l),d=l.hasServerOnlyWhereFunction&&!l.allowed?[...Wu(c),...u]:[...Wu(c),...u,...MR(os(e.query,void 0,c.capabilities,c.orderPlans,o,a,r,c.plainGroupByPlans,!0,p),i)],f=$a(d,p.sources),R={type:"SELECT",columns:["plan"],rows:f.map(E=>({plan:E})),rowCount:f.length};return UR(R,{statements:[{index:0,fetch:bc(p.sources),sources:p.sources}]}),R}function MR(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 os(e,t,n,r,i=100,o=Ne,a=1e4,s,l=!0,c,p="main"){let u=c??{sources:[]};if(e.type==="UNION"){let f=tI(e,n,r,s,u);return l?$a(f,u.sources):f}if(e.type==="WITH"){let f=nI(e,n,r,s,u);return l?$a(f,u.sources):f}if(e.type==="INSERT")return oI(e,t,i,o);if(e.type==="INSERT_SELECT")return aI(e,t,n,r,s);if(e.type==="UPSERT")return cI(e,t,i,o);if(e.type==="UPSERT_SELECT")return pI(e,t,n,r,s);if(e.type==="UPDATE")return sI(e,t,n,r,i,o,a);if(e.type==="DELETE")return uI(e,t);if(e.type==="REORDER")return dI(e,t);if(e.type==="VALIDATE")return ZT(e,t);if(e.type==="IMPORT"){if(e.writeMode==="UPDATE_RECORD_NUMBER"){let E=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",...E.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 f=e.keyFields?"UPSERT":"INSERT",R=e.targets?.some(E=>E.kind==="SUBTABLE")===!0;return[...t?[t]:[],`IMPORT ${f} 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",...R?[" 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&&R?"requires actual source load at execution; this EXPLAIN is static":"requires load"}`,...R?[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 d=ot(e,t,n,r,s,!0,!0,u,p);return l?$a(d,u.sources):d}var OE={none:0,count_only:1,exact:2,prefiltered:3,all:4};function bc(e){return e.reduce((t,n)=>OE[t]>=OE[n.fetch]?t:n.fetch,"none")}function $a(e,t){let n=e.filter(r=>!r.startsWith("fetch summary:"));return t.length===0?n:[`fetch summary: ${bc(t).toUpperCase()}`,...n]}function XT(e){let t=/(?:^|\s)limit\s+(\d+)(?:\s|$)/i.exec(e);return t?Number(t[1]):null}function Ua(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:XT(o)};return e.sources.push(s),s}function QT(e){return[e.fetch.toUpperCase(),...e.limit===null?[]:[`(limit ${e.limit})`],...e.pending?["(\u672A\u78BA\u5B9A)"]:[]].join(" ")}function ka(e){return` fetch: ${QT(e)}`}function ZT(e,t){let n=LR.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?Qu:Xu).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 eI(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 ot(e,t,n,r,i,o=!0,a=!0,s={sources:[]},l="main"){let c=n?.get(e)??(n?[...n].find(([b])=>JSON.stringify(b)===JSON.stringify(e))?.[1]:void 0),p=r?.get(e)??(r?[...r].find(([b])=>JSON.stringify(b)===JSON.stringify(e))?.[1]:void 0),u=i?.get(e)??(i?[...i].find(([b])=>JSON.stringify(b)===JSON.stringify(e))?.[1]:void 0),d=o&&c!==void 0&&iR(e,c),f=d?"COUNT_TOTAL_COUNT":p?.kind==="CANONICAL_LOCAL"||c&&c.capability!=="EXACT_PUSHDOWN"?"FULL_SCAN":Be(e),R=rI(e);c&&c.capability!=="EXACT_PUSHDOWN"&&R.push(...c.reasons.map(b=>b.code));let E=[],g=ff(e,Ti.get(e)?.allItems.length);t&&E.push(t),E.push(` mode: ${f}`);for(let b of Vu.get(e)??VE.get(e)??[])E.push(eI(b));g&&(E.push(` grouping source: ${g.source}`),E.push(` grouping sets: ${g.expandedSetCount} (limit: ${g.setLimit})`),E.push(` grouping items: ${g.groupingItemCount} (limit: ${g.itemLimit})`),E.push(` grouping output rows: runtime checked (limit: ${g.outputRowLimit}, before HAVING/DISTINCT/LIMIT)`));let y=Z(e);if(y.type==="PLAIN"){let b=y.allItems;if(u)u.items.forEach((w,P)=>{let T=b[P];T?.type==="FIELD_NAME"&&(w.kind==="PHYSICAL"?E.push(` group key ${T.name}: PHYSICAL (source=${w.sourceIndex}, field=${w.fieldCode})`):w.kind==="ALIAS_SAFE"?E.push(` group key ${T.name}: ALIAS_SAFE (column=${w.columnIndex})`):w.kind==="EXPRESSION"&&E.push(` group key ${T.name}: EXPRESSION`))});else if([e.from,...e.joins.map(w=>w.table)].some(w=>w.cteName!==null))for(let w of b)w.type==="FIELD_NAME"&&E.push(` group key ${w.name}: DEFERRED (materialized schema unavailable)`)}for(let b of e.columns){if(b.type!=="WINDOW_COL"||b.windowKind===void 0||b.windowKind==="RANKING")continue;let w=[];b.partitionBy.length>0&&w.push(`PARTITION BY ${b.partitionBy.map(P=>P.tableAlias?`${P.tableAlias}.${P.field}`:P.field).join(", ")}`),b.orderBy.length>0&&w.push(`ORDER BY ${b.orderBy.map(FR).join(", ")}`),b.windowKind==="VALUE"?E.push(` window ${b.alias}: ${b.valueFunc}(offset=${b.offset}) OVER (${w.join(" ")})`):b.windowKind==="AGGREGATE"&&(E.push(` window ${b.alias}: ${b.aggFunc} OVER (${w.join(" ")})`),E.push(b.frame===null?" frame: PARTITION ENTIRE":` frame: ${b.frame.unit} UNBOUNDED PRECEDING AND CURRENT ROW${b.frame.source==="DEFAULT"?" (\u65E2\u5B9A)":""}`))}if(d){let b=e.where===null?"":Y(e.where);if(E.push(` app: APP${e.from.appId} (${e.from.appId})`),E.push(` kintone query: ${b}${b?" ":""}limit 1`),a){let w=Ua(s,e.from.appId,e.from.alias,l,"COUNT_ONLY",`${b}${b?" ":""}limit 1`);E.push(ka(w))}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}`))):g&&E.push(" order plan: CANONICAL_LOCAL");let m=p&&!p.requiresCompleteInput?{...e,orderBy:[]}:e,h=kt(m);p?.requiresCompleteInput&&h.add("LOCAL_ORDER");let A=Lt(e.where);if(h.size>0&&(!A||g!==null)&&(E.push(" complete input: required (onLimit=truncate disabled)"),E.push(` complete input reason: ${[...h].join(", ")}`),E.push(" onLimit=truncate: disabled")),A)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 b=Eo(p?.kind==="CANONICAL_REST_TOP_N"?ZE(e):e);E.push(` app: APP${e.from.appId} (${e.from.appId})`);let w=p?.kind==="KORDER_CURSOR"?Vl(e):b.query;if(E.push(` kintone query: ${w||"(\u306A\u3057)"}`),a&&e.from.cteName===null){let P=w?"EXACT":"ALL";E.push(ka(Ua(s,e.from.appId,e.from.alias,l,P,w)))}E.push(` fields: ${b.fields.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":b.fields.join(", ")}`)}else{let b=PR.get(e),w=CR.get(e),P=w??sn(e);if(e.joins.length>0)if(b){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)"),b.joinPlan.serverFunctionCandidate&&E.push(` allow form: JOIN_SERVER_FUNCTION_EXACT (${b.joinPlan.serverFunctionCandidate.variant==="WHOLE_WHERE_EXACT"?"whole-WHERE":"leaf"})`),E.push(` client residual: ${b.joinPlan.residualWhere===null?"(none)":yn(b.joinPlan.residualWhere)}`),E.push(` KLIKE applied nodes: ${b.joinPlan.appliedKlikes.size}`),E.push(` KLIKE unapplied nodes: ${b.joinPlan.allKlikes.length-b.joinPlan.appliedKlikes.size}`),b.joinPlan.residualWhere!==null)for(let k of b.joinPlan.rejections)E.push(` join pushdown not applied: ${k.reason}`)}else{let k=e.joins.some(C=>C.type!=="INNER")?"OUTER_JOIN":[e.from,...e.joins.map(C=>C.table)].some(C=>C.cteName!==null||!!C.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: ${k}`)}let T=an(e,e.from,u),L=e.from.alias?` AS ${e.from.alias}`:"",N=P.mainCondition,_=JE(e),F=e.joins.length===0&&c?.capability==="EXACT_PUSHDOWN"&&e.where!==null&&!St(e.where)?Y(e.where):"",D=e.from.alias?b?.queriesByAlias.get(e.from.alias):void 0,M=D||(N!==null?Y(N):F||"(\u5168\u4EF6\u53D6\u5F97)");E.push(` app: APP${e.from.appId}${L} (${e.from.appId})`),E.push(` kintone query: ${M}`);let S=b?.joinPlan.items.find(k=>k.targetAlias===e.from.alias),O=b?.joinPlan.serverFunctionConsumptions.find(k=>k.targetAlias===e.from.alias);if(a&&e.from.cteName===null){let k=!w&&_!==null,C=M==="(\u5168\u4EF6\u53D6\u5F97)"?"ALL":k?"PREFILTERED":S?.relation==="exact"||O||F!==""?"EXACT":"PREFILTERED";E.push(ka(Ua(s,e.from.appId,e.from.alias,l,C,M,k)))}S||O?(E.push(` pushdown applied: ${D}`),E.push(` relation: ${S?.relation??"exact"}`)):w&&N!==null?(E.push(` pushdown applied: ${M}`),E.push(` relation: ${P.mainRelation??"exact"}`)):_!==null&&(!w||Ri(_))&&E.push(` pushdown candidate: ${Y(_)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`),E.push(` fields: ${T.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":T.join(", ")}`);for(let k of e.joins){let C=an(e,k.table,u),x=k.table.alias?` AS ${k.table.alias}`:"",H=k.type==="INNER"?"JOIN":`${k.type} JOIN`,v=k.table.alias?P.joinConditions.get(k.table.alias)??null:null,U=k.table.alias&&!k.table.subtableCode&&k.table.cteName===null&&e.where?Pr(e.where,{tableAlias:k.table.alias}):null,W=k.table.alias?b?.queriesByAlias.get(k.table.alias):void 0,V=k.table.alias?OR.get(e)?.get(k.table.alias):void 0,$=!w&&k.type==="INNER"&&k.table.cteName===null&&!k.table.subtableCode&&[e.from,...e.joins.map(ie=>ie.table)].some(ie=>ie.cteName!==null),G=W||(v!==null?Y(v):V?.additionalQuery?V.additionalQuery:"(\u5168\u4EF6\u53D6\u5F97)"),ae=$||V?.plan.kind==="RANGE_CANDIDATE"||V?.plan.kind==="FALLBACK"&&V.plan.reason==="JOIN_KEY_VALUES_RUNTIME",Ee=V&&V.queries.length>0?V.queries.map(ie=>G!=="(\u5168\u4EF6\u53D6\u5F97)"?`(${ie}) and (${G})`:ie):[ae?"(runtime source keys)":G],Es=Ee.join(" | ");E.push(` ${H}: APP${k.table.appId}${x} (${k.table.appId})`);for(let ie of Ee)E.push(` kintone query: ${ie}`);let Ut=b?.joinPlan.items.find(ie=>ie.targetAlias===k.table.alias),Yi=b?.joinPlan.serverFunctionConsumptions.find(ie=>ie.targetAlias===k.table.alias);if(a&&k.table.cteName===null){let ie=ae||!V&&!w&&U!==null,en=Es==="(\u5168\u4EF6\u53D6\u5F97)"?"ALL":ie?"PREFILTERED":V?.plan.kind==="IN"&&Ut?.relation!=="superset"&&V.additionalRelation!=="superset"||Ut?.relation==="exact"||Yi?"EXACT":"PREFILTERED";E.push(ka(Ua(s,k.table.appId,k.table.alias,"join",en,Es,ie)))}if(V)if(V.plan.kind==="RANGE"){E.push(" join key prefilter: range");for(let ie of Ee)E.push(` pushdown applied: ${ie}`);E.push(" relation: superset")}else if(V.plan.kind==="IN"){let ie=Ut?.relation==="superset"||V.additionalRelation==="superset"?"superset":"exact";E.push(" join key prefilter: in");for(let en of Ee)E.push(` pushdown applied: ${en}`);E.push(` relation: ${ie}`)}else V.plan.kind==="RANGE_CANDIDATE"?(E.push(" join key prefilter: range candidate"),E.push(" relation: superset"),E.push(` join key prefilter reason: ${V.plan.reason}`)):V.plan.kind==="FALLBACK"&&(E.push(V.plan.reason==="JOIN_KEY_VALUES_RUNTIME"?" join key prefilter: runtime candidate":" join key prefilter: not applied"),E.push(` join key prefilter reason: ${V.plan.reason}`));else $?(E.push(" join key prefilter: runtime candidate"),E.push(" join key prefilter reason: JOIN_KEY_VALUES_RUNTIME"),U!==null&&E.push(` pushdown candidate: ${Y(U)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`)):Ut||Yi?(E.push(` pushdown applied: ${W}`),E.push(` relation: ${Ut?.relation??"exact"}`)):w&&v!==null?(E.push(` pushdown applied: ${G}`),E.push(` relation: ${P.joinRelations.get(k.table.alias)??"exact"}`)):U!==null&&(!w||Ri(U))&&E.push(` pushdown candidate: ${Y(U)}\uFF08\u5B9F\u884C\u6642\u306E\u578B\u30FB\u5B9F\u5728\u78BA\u8A8D\u5F85\u3061\uFF09`);E.push(` fields: ${C.length===0?"(\u5168\u30D5\u30A3\u30FC\u30EB\u30C9)":C.join(", ")}`)}}return E.push(...iI(e,n,r,i,s)),E}function tI(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(...ot(l,`[union:${c+1}]`,t,n,r,!0,!0,i,"union"))}),s}function nI(e,t,n,r,i={sources:[]}){let o=[];for(let a of e.ctes)if(a.query.type==="SELECT")o.push(...ot(a.query,`[cte: ${a.name}]`,t,n,r,!1,!0,i,"cte")),o.push("");else if(a.query.type==="GENERATE_SERIES"){let s=zs(a.query),l=s.kind==="DATE"?`${s.step} ${Math.abs(s.step)===1?"day":"days"}`:String(s.step);o.push(`[cte: ${a.name}]`," source: GENERATE_SERIES",` column: ${a.query.columnAlias}`,` series type: ${s.kind}`,` start: ${s.start}`,` stop: ${s.stop}`,` step: ${l}`,` rows: ${s.rowCount}`,` row guard: ${s.rowCount} / ${Ht}`," records API: none","")}if((e.query.type==="SELECT"||e.query.type==="UNION")&&o.push(...os(e.query,"[main]",t,n,100,Ne,1e4,r,!1,i)),Kt(e)){o.push("");let a=Bt(e);o.push(...ot(a,"[effective: inlined CTE]",t,n,r,!1,!0,i,"cte"))}return o}function rI(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.length>0&&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"),St(e.where)&&t.push("WHERE \u53E5\u306B JS \u8A55\u4FA1\u304C\u5FC5\u8981\u306A\u5F0F"),Ft(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 iI(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(...ot(l.right.query,`[subquery:${a++}]`,t,n,r,!1,!0,i,"subquery"))),l.right.type==="SUBQUERY_IN_LIST"&&(o.push(""),o.push(...ot(l.right.query,`[subquery:${a++}]`,t,n,r,!1,!0,i,"subquery")));break;case"EXISTS":o.push(""),o.push(...ot(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(...ot(l.query,`[subquery:${a++}]`,t,n,r,!1,!0,i,"subquery")));return e.having&&s(e.having),o}function oI(e,t,n=vt,r=Ne){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,...Nc(oa(e,n,r))]:a}function aI(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(...ot(e.select,"[source SELECT]",n,r,i,!1,!1)),o}function sI(e,t,n,r,i=100,o=Ne,a=1e4){if(e.applyBlocks?.length)return lI(e,t,i,o,a);let s=Ld(e),l=e.assignments.some(f=>f.value.type==="STRING_FUNC"),c=Yo(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?Li(e.from.targetFilter):"(none)"}`)}else u.push(` kintone query: ${Li(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(Lt(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=fI(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(` ${RI(f)}`);for(let f of e.assignments)f.value.type==="SCALAR_SUBQUERY"&&(u.push(""),u.push(...ot(f.value.query,`[subquery: ${f.field}]`,n,r,void 0,!1,!1)));return u}function lI(e,t,n,r,i){let o=oa(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=_R.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: ${Li(e.where)}`,`parent cardinality: ${ht(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",...Nc(o)]}function uI(e,t){let n=[];return t&&n.push(t),n.push(" [DELETE]"),n.push(` target: APP${e.appId} (${e.appId})`),n.push(` kintone query: ${Li(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(Lt(e.where)?" api: metadata validation only (records API access: none)":" api: GET /k/v1/records.json \u2192 DELETE /k/v1/records.json"),n}function cI(e,t,n=vt,r=Ne){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,...Nc(oa(e,n,r))]:a}function Nc(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 pI(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(...ot(e.select,"[source SELECT]",n,r,i,!1,!1)),o}function dI(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(FR).join(", "),o=[...t?[t]:[]," [REORDER]",` target: APP${e.appId} (${e.appId})`,` table: ${n}`,` scope: ${r}`,` by: ${i}`,Lt(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: ${Li(e.where)}`),o}function FR(e){return`${e.key.type==="FIELD_NAME"?e.key.name:"(\u5F0F)"} ${e.direction}`}function Li(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 fI(e){let t=new Set;for(let{value:n}of e.assignments)n.type==="ARITH"&&Ja(n,t),n.type==="STRING_FUNC"&&Ja(n,t),(n.type==="SCALAR_ARITH"||n.type==="CONCAT_OP")&&hi(n,t);return[...t]}function Ja(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"&&(Ja(e.left,t),Ja(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"&&hi(n,t)}async function xR(e,t,n,r,i){let o=mc(e),a=await Oe(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 Oe(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 Ie(`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 Ie(`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 Ie(`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 Ie(`UPDATE FROM \u306E CHECK \u3067\u306F\u30BD\u30FC\u30B9\u5217 ${d.field} \u3092\u4FEE\u98FE\u3057\u3066\u304F\u3060\u3055\u3044`);if(R)throw Ie(`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 EI(e,t,n){if(!e)return{};let r=Pt(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 hi(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"&&hi(n,t);return}(e.type==="SCALAR_ARITH"||e.type==="CONCAT_OP")&&(hi(e.left,t),hi(e.right,t))}function RI(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} = ${GR(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 GR(e){return`${LE(e.left)} ${e.op} ${LE(e.right)}`}function LE(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"?j(e):e.type==="ARITH"?`(${GR(e)})`:"..."}var fe=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 Le=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 Pc(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 Le("READ_ONLY_VIOLATION",e)}function cr(e,t){return new Le("PARSE_ERROR",e,t)}function KR(){let e=new Tn;return new Le("SEARCH_ABORTED",e.message,e)}function Gi(e){return e instanceof Error&&e.message.trim()!==""||e!==null&&typeof e=="object"&&typeof e.message=="string"?e.message:String(e)}function gI(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 On(e){return e instanceof Le?e:e instanceof Ce||e instanceof I?new Le("PARSE_ERROR",Gi(e),e):e instanceof Tn||e?.name==="SearchAbortedError"?new Le("SEARCH_ABORTED",Gi(e),e):e instanceof Ue||e?.name==="FetchAllLimitError"?new Le("FETCH_LIMIT_EXCEEDED",Gi(e),e):e instanceof Error&&e.name==="ClientOperationError"&&"cause"in e?new Le("CLIENT_ERROR",e.message,e.cause):gI(e)?new Le("CLIENT_ERROR",Gi(e),e):new Le("EXECUTION_ERROR",Gi(e),e)}function as(e,t){let n=On(e);if(e instanceof ne){let r=t[e.statementIndex];if(r!==void 0)return Pc(n,e.statementIndex,r.type)}return n}var yI=2,ss=5,mI=3e4,AI=10*6e4+3e4,ls=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??yI;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??mI,this.quarantineMs=n.quarantineMs??AI}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 ga(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 hI(e){let t=e;return t?.status===404&&t.code==="GAIA_CN01"}async function SI(e,t=r=>new Promise(i=>setTimeout(i,r)),n=hI){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 TI(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 BR(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 TI(SI(t.delete,t.sleep,t.isAlreadyReleasedError),t.cleanupTimeoutMs??5e3),n=!0,t.onReleased?.()}catch(l){throw t.onReleaseUnknown?.(),l}}),o)}}function $R(e){return VR(e,wI(e))}function VR(e,t,n=!1,r){let i=[];for(let o of Object.values(e)){let a=bI(o.options),s=NI(o.type,o.format),l={code:o.code,label:o.label,fieldType:o.type,optionOrder:a,sortKind:s,required:o.required,minValue:us(o.minValue),maxValue:us(o.maxValue),minLength:us(o.minLength),maxLength:us(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)&&!II.has(o.type)};l.semantics=X(l),i.push(l),o.fields&&i.push(...VR(o.fields,t,!0,o.type==="SUBTABLE"?o.code:r))}return i}var II=new Set(["CALC","RECORD_NUMBER","CREATOR","CREATED_TIME","MODIFIER","UPDATED_TIME","STATUS","STATUS_ASSIGNEE","CATEGORY","REFERENCE_TABLE","SUBTABLE"]);function wI(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 us(e){return e==null||e===""?void 0:e}function bI(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 NI(e,t){if(e==="NUMBER"||e==="RECORD_NUMBER")return"number";if(e==="CALC")return t==="NUMBER"||t==="NUMBER_DIGIT"?"number":"string"}function WR(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 PI="Filter aborted because of too many search results";function HR(e){return e?.includes(PI)===!0}var YR="/k/v1/records.json",cs="/k/v1/records/cursor.json",CI=4096,OI=2,Cc=e=>kintone.api.url(e,!0);function LI(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(YR,t,!0),i={"X-Requested-With":"XMLHttpRequest"};return new TextEncoder().encode(r).byteLength<=CI?{url:r,init:{method:"GET",credentials:"include",headers:i}}:{url:Cc(YR),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 Ki(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 _I(e){try{let t=await e.json();if(t!==null&&typeof t=="object"){let r=t;return Ki({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}),Ki(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}),Ki(n)}}function DI(e){let t=e;return t?.code==="GAIA_CN01"&&(t.status===404||t.status===void 0)}async function Ln(e,t,n){try{return await kintone.api(Cc(e),t,n)}catch(r){throw Ki(r)}}function vI(e){if(!Number.isSafeInteger(e)||e<1||e>5)throw new Error("ArgumentError: cursorMaxActive must be an integer from 1 to 5.")}function UI(e={}){let t=e.cursorMaxActive??OI;vI(t);let n=null,r=null,i=new Set;return{async getRecords(a){try{let s=LI(a),l=await fetch(s.url,s.init);if(!l.ok)throw await _I(l);let c=await l.json();return HR(l.headers.get("X-Cybozu-Warning"))?{...c,searchAborted:!0}:c}catch(s){throw Ki(s)}},async openCursor(a){let s=Cc(cs),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 ls(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(()=>Ln(cs,"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 ya(E))}let u=p.id,d=BR(Number(p.totalCount),{get:()=>Ln(cs,"GET",{id:u}),delete:()=>Ln(cs,"DELETE",{id:u}),isAlreadyReleasedError:DI,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 Ln("/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 Ln("/k/v1/app/form/fields.json","GET",{app:a});return $R(s.properties)},async getNumberPrecision(a){let s=await Ln("/k/v1/app/settings.json","GET",{app:a});return zd(s)},async getProcessStatuses(a){let s=await Ln("/k/v1/app/status.json","GET",{app:a,lang:"user"});return{enable:s.enable,states:WR(s.states)}}}}var jR=new Set(["postRecords","putRecords","deleteRecords"]),Bi=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 Zt(e){try{return await e()}catch(t){throw new Bi(t)}}function kI(e){return()=>{throw ze(`${String(e)} is blocked by the readonly client`)}}function pr(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 Zt(()=>t(l));if(c.searchAborted===!0)throw KR();return c},openCursor:async l=>{let c=await Zt(()=>n(l)),p=c.nextPage.bind(c),u=c.close.bind(c);return{totalCount:c.totalCount,nextPage:()=>Zt(()=>p()),close:()=>Zt(()=>u())}},getApps:()=>Zt(()=>r()),getFields:l=>Zt(()=>i(l)),getNumberPrecision:l=>Zt(()=>o(l)),getProcessStatuses:l=>Zt(()=>a(l))});return new Proxy(s,{get(l,c,p){return jR.has(c)?kI(c):Reflect.get(l,c,p)},has(l,c){return jR.has(c)?!1:Reflect.has(l,c)}})}function MI(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 Bi(o.reason)})(),n)}}}async function dr(e,t){let n=MI(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 FI="A-Za-z",xI="\\u3040-\\u30FF\\u3400-\\u9FFF\\uF900-\\uFAFF\\uFF01-\\uFF60",Lc=`${FI}${xI}`,zR=`${Lc}0-9_`,GI=new RegExp(`^[${Lc}]$`,"u"),KI=new RegExp(`^[${zR}]$`,"u"),BI=new RegExp(`^[${Lc}][${zR}]{0,63}$`,"u");function $I(e){return GI.test(e)}function VI(e){return KI.test(e)}function _c(e){let t=e.normalize("NFC").toUpperCase();if(!BI.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 Oc(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 WI(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 HI(e,t){let n=t>0?e[t-1]:"";if(Oc(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,!$I(e[l]??""))return null;for(l++;l<e.length&&VI(e[l]);)l++;s=l;try{o=_c(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&&Oc(e[l]);)l++;if(l===f)return null}let c=l,p=null;if(e[l]==="@"){l++;let f=l;for(;l<e.length&&WI(e[l]);)l++;if(l===f)return null;p=e.slice(f,l)}let u=l<e.length?e[l]:"";if(Oc(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 Dc(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=HI(e,n);if(!i){n++;continue}t.push(i),n=i.fullEnd}return t}function qR(e){let t=9e8;for(;e.has(t);)t++;return e.add(t),t}function JR(e,t="dev",n){let r=Dc(e),i=r.some(g=>g.profile!==null),o=new Map,a=g=>g??t;for(let g of r){if(g.source!=="physical")continue;let y=a(g.profile),m=o.get(g.appId);m||(m=new Set,o.set(g.appId,m)),m.add(y.toLowerCase())}let s=new Set(r.filter(g=>g.source==="physical").map(g=>g.appId)),l=new Map;for(let g of r){if(g.source!=="logical")continue;let y=a(g.profile).toLowerCase(),m=`logical:${g.logicalName}@${y}`;if(l.has(m))continue;if(!n)throw new Error(`ArgumentError: logical app LAPP_${g.logicalName}@${y} requires logicalApps configuration.`);let h=n.resolveLogicalApp(g.logicalName,y);l.set(m,h),s.add(h)}let c=new Map,p=new Map;for(let[g,y]of o.entries()){let m=[...y].sort();if(!(m.length<=1))for(let h of m){let A=qR(s);c.set(`physical:${g}@${h}`,A),p.set(A,{source:"physical",mappedAppId:A,appId:g,profile:h})}}let u=[],d=[],f=0,R=0,E=(g,y,m,h)=>{if(!g&&y===m)return;let A=f;u.push(g),f+=g.length,d.push({normalizedStart:A,normalizedEnd:f,sourceStart:y,sourceEnd:m,...h===void 0?{}:{bindingMappedAppId:h}})};for(let g of r){let y=a(g.profile).toLowerCase(),m;if(g.source==="physical")m={source:"physical",mappedAppId:c.get(`physical:${g.appId}@${y}`)??g.appId,appId:g.appId,profile:y};else{let b=`logical:${g.logicalName}@${y}`,w=c.get(b);w===void 0&&(w=qR(s),c.set(b,w)),m={source:"logical",logicalName:g.logicalName,mappedAppId:w,appId:l.get(b),profile:y}}p.set(m.mappedAppId,m),E(e.slice(R,g.start),R,g.start);let h=e.slice(g.referenceValueEnd,g.appEnd),A=g.source==="physical"?`${e.slice(g.start,g.referenceValueStart)}${m.mappedAppId}${h}`:`APP${m.mappedAppId}${h}`;E(A,g.start,g.fullEnd,m.mappedAppId),R=g.fullEnd}return E(e.slice(R),R,e.length),{normalizedSql:u.join(""),hasProfileSyntax:i,appBindingByMappedApp:p,rewriteSegments:d}}var XR=new Set(["client","logicalApps","maxRecords","fetchParallel","cursorMaxActive"]),QR=new Set([...XR,"onLimitReached"]),YI=new Set([...QR,"variables","tempTableMaxRows"]);function ZR(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new TypeError("options must be an object")}function $i(e,t){if(!Number.isSafeInteger(e)||e<=0)throw new RangeError(`${t} must be a positive safe integer`)}function eg(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 jI(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 tg(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=_c(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`);$i(r,`logicalApps.${n}`),t[i]=r}return t}function ng(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)}`);if(e.maxRecords!==void 0&&$i(e.maxRecords,"maxRecords"),e.fetchParallel!==void 0&&$i(e.fetchParallel,"fetchParallel"),e.cursorMaxActive!==void 0&&($i(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.fetchParallel!==void 0?{fetchParallel:e.fetchParallel}:{},...e.cursorMaxActive!==void 0?{cursorMaxActive:e.cursorMaxActive}:{},...e.onLimitReached!==void 0?{onLimitReached:e.onLimitReached}:{}}}function vc(e,t){ZR(e);let n=t==="run"?QR:XR;eg(e.client);let r=ng(e,n,t==="run"?"runQuery":"explainQuery"),i=tg(e.logicalApps);return{client:e.client,...i===void 0?{}:{logicalApps:i},executeOptions:r}}function rg(e){ZR(e),eg(e.client),e.variables!==void 0&&jI(e.variables),e.tempTableMaxRows!==void 0&&$i(e.tempTableMaxRows,"tempTableMaxRows");let t=ng(e,YI,"runBatch"),n=tg(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 ps(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=>ps(i,t,n)):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([i,o])=>[i,ps(o,t,n)])):e}function qI(e,t,n){return e.slice(t,n)}function Vi(e,t,n){let r=Dc(e),i=r.find(c=>c.profile!==null);if(i!==void 0)throw new Error(`ArgumentError: browser engine library does not support @profile suffixes (${qI(e,i.start,i.fullEnd)}).`);if(!r.some(c=>c.source==="logical"))return{sql:e,client:t,logicalBindings:[]};let o=JR(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 Wi(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 Hi(e,t){if(t.length===0)return e;let n=new Map(t.map(r=>[r.mappedAppId,r]));return ps(e,n,{logicalAppDisplay:"physical"})}function ds(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 zI(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[t,String(n)]))}function JI(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 fs(e,t=e.metrics){let n=_E(e);return{type:"query",rows:e.rows.map(zI),columns:e.columns.map(r=>JI(r,n)),rowCount:e.rowCount,warnings:[...e.warnings??[]],...e.validateStats?{validateStats:e.validateStats}:{},metrics:ds(t)}}function ig(e,t={}){let n=new Yt(e).tokenize(),r=new jt(n,t).parse();return Qe(r),r}function og(e,t={}){let n=new Yt(e).tokenize(),r=new jt(n,t).parseStatements();return r.forEach(Qe),r}function Uc(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 ag(e){if(e instanceof ue)return cr(e.message,e);let t=On(e);return t.code==="PARSE_ERROR"?t:cr("SQL statement could not be parsed",e)}function XI(e){if(e.trim()==="")throw cr("SQL statement is empty");try{return ig(e,{import:!0})}catch(t){let n=ag(t);throw n.message.includes("\u8907\u6587\u306F\u30D0\u30C3\u30C1\u5B9F\u884C API \u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044")?cr("This API accepts one statement; use runBatch for multiple statements",t):n}}function sg(e){if(Zi(e)==="UNKNOWN")throw ze("Unclassifiable statement is not allowed");return e}function lg(e){if(e.trim()==="")throw cr("SQL statement is empty");try{return og(e,{import:!0})}catch(t){throw ag(t)}}function QI(e){let t=sg(e),n=t.type;if(n==="IMPORT")throw ze("IMPORT is disabled by default in engine library queries");if(!vn(t))throw ze(`${n} statements are not read-only`);if(Uc(t))throw ze("APPLY statements are not allowed in engine library queries");if(!jc(t))throw ze(`${n} does not return rows; use runBatch for batch-scoped or non-row-returning read-only statements`)}function ug(e){let t=sg(e),n=t.type==="EXPLAIN"?t.query:t;if(n.type==="IMPORT")throw ze("IMPORT is disabled by default in engine library batches");if(!vn(n))throw ze(`${n.type} statements are not read-only`);if(Uc(n))throw ze("APPLY statements are not allowed in engine library batches");if(Mt(n.type))throw ze("DML VALIDATE ONLY statements are not supported by runBatch")}function cg(e){let t=XI(e);return QI(t),t}function pg(e){let t=lg(e);return t.forEach(ug),t}function dg(e){let t=e.trim(),n=lg(t);n.forEach(ug);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 ZI(e){let t=e.error,n=t?.cause!==void 0?On(t.cause):new Le("EXECUTION_ERROR",t?.message??`Statement ${e.index} failed`);return Pc(n,e.index,e.type)}async function ew(e,t){let n=[],r=[];try{let i=rg(t),o=Vi(e,i.client,i.logicalApps);r=o.logicalBindings,n=pg(o.sql);let a=await dr(o.client,p=>GE(o.sql,pr(p),{...i.executeOptions,captureColumnMeta:!0})),s=a.statements.find(p=>p.status==="error");if(s!==void 0)throw ZI(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=fs(p.result,a.metrics);l.push(n[p.index]?.type==="EXPLAIN"?Hi(d,r):d)}return u});return{type:"batch",batch:!0,statementCount:a.statementCount,statements:c,results:l,warnings:[]}}catch(i){throw Wi(as(i,n),r)}}function fg(e){if(e===null||typeof e!="object"||e.type!=="SELECT")throw new Error("Engine returned a non-SELECT result")}async function tw(e,t){let n=[];try{let r=vc(t,"run"),i=Vi(e,r.client,r.logicalApps);n=i.logicalBindings;let a=cg(i.sql).type==="VALIDATE"?{...r.executeOptions,onLimitReached:"error"}:r.executeOptions,s=await dr(i.client,l=>qu(i.sql,pr(l),{...a,captureColumnMeta:!0}));return fg(s),fs(s)}catch(r){throw Wi(On(r),n)}}async function nw(e,t){let n=[],r=[];try{let i=vc(t,"explain"),o=Vi(e,i.client,i.logicalApps);r=o.logicalBindings;let a=dg(o.sql);if(n=a.statements,a.legacySql!==void 0){let p=await dr(o.client,f=>qu(a.legacySql,pr(f),i.executeOptions));fg(p);let u=Hi(p.rows.map(f=>String(f.plan??"")),r),d=wc(p)??{statements:[{index:0,fetch:"none",sources:[]}]};return{type:"explain",lines:u,text:u.join(`
|
|
16
|
+
`),plan:d,metrics:ds(p.metrics)}}let s=await dr(o.client,p=>kR(o.sql,pr(p),void 0,"batch-explain",i.executeOptions.maxRecords,i.executeOptions.cursorMaxActive)),l=Hi(s.statements.flatMap(p=>[...s.statementCount>1?[`[${p.index+1}] ${p.type}`]:[],...p.plan]),r),c=wc(s)??{statements:s.statements.map(p=>({index:p.index,fetch:"none",sources:[]}))};return{type:"explain",lines:l,text:l.join(`
|
|
17
|
+
`),plan:c,metrics:ds()}}catch(i){throw Wi(as(i,n),r)}}var G_="3.62.0";export{Le as KsqlEngineError,UI as createReadonlyKintoneClient,nw as explainQuery,ew as runBatch,tw as runQuery,G_ as version};
|